A Deep Reinforcement Learning Chatbot

45
NN 論文を肴に酒を飲む会#4 A Deep Reinforcement Learning Chatbot arXiv:1709.02349

Transcript of A Deep Reinforcement Learning Chatbot

Page 1: A Deep Reinforcement Learning Chatbot

NN論文を肴に酒を飲む会#4

A Deep Reinforcement Learning Chatbot

arXiv:1709.02349

Page 2: A Deep Reinforcement Learning Chatbot

自己紹介

• 名前• 吉永 尊洸(よしなが たかひろ)

• @tekenuko

• 仕事• データ分析コンサルタント

• マーケティング、製造系、教育研修講師とか

• 自然言語処理は1年くらい前にWord2Vecを使ったくらい

勉強する良い機会だと思ったので申し込んでみた

• 元素粒子論(博士)

• 趣味• リアル脱出ゲーム

Page 3: A Deep Reinforcement Learning Chatbot

今回の論文:MILABOT

• Amazonのソーシャルボットのコンペ出場チームの報告

会話モデル22個

応答の候補を生成

会話の履歴

ASR信頼度

優先応答か

応答を返す

応答の候補の最適化

応答を返す

※ASR(Automatic Speech Recognition system)信頼度:音声認識システムの信頼度

強化学習で応答の候補を選択

Page 4: A Deep Reinforcement Learning Chatbot

百科事典的な論文です

会話モデル22個

応答の候補を生成

会話の履歴

ASR信頼度

優先応答か

応答を返す

応答の候補の最適化

応答を返す

強化学習で応答の候補を選択

※ASR(Automatic Speech Recognition system)信頼度:音声認識システムの信頼度

テンプレート型からseq2seqまで様々な

モデルを活用

複数の強化学習アルゴリズムを試して

応答を最適化

Page 5: A Deep Reinforcement Learning Chatbot

Contents

• Amazon Alexa Prize

• MILABOTの大まかな仕組み

• 実験結果

• まとめ

Page 6: A Deep Reinforcement Learning Chatbot

Amazon Alexa

• クラウドベースの音声認識サービス

Alexa. Let’s chat! ※

音声→テキスト

テキスト→処理

音声

開発者が色々実装可能

※コンペ期間中に会話ができるようになっている

Page 7: A Deep Reinforcement Learning Chatbot

Amazon Alexa Prize

• ソーシャルボットの開発コンペ• 対象:大学の研究者チーム• 賞金:トータル250万$

• 優勝:50万$(20分間わかりやすく人間と対話できたら+100万$)• 優勝チームのボットはAlexaに実装されるかも

• スポンサードチーム(約10チーム):開発予算として10万$支給

• 審査方法• 一般的なトピック(政治/スポーツ/芸能など)に関しての対話の性能を競う

• 要は雑談できるか

• スケジュール• 2016.09 コンペ開始 20か国100チーム以上• 2017.04 Amazon Echoで実験 12チーム(支援)+6チーム(自腹)• 2017.08 ファイナリスト決定 3チーム• 2017.11 優勝者決定

Page 8: A Deep Reinforcement Learning Chatbot

Contents

• Amazon Alexa Prize

• MILABOTの大まかな仕組み

• 実験結果

• まとめ

Page 9: A Deep Reinforcement Learning Chatbot

①入力

会話モデル22個

応答の候補を生成

会話の履歴

ASR信頼度

優先応答か

応答を返す

応答の候補の最適化

応答を返す

※ASR(Automatic Speech Recognition system)信頼度:音声認識システムの信頼度

強化学習で応答の候補を選択

Page 10: A Deep Reinforcement Learning Chatbot

①入力(想定)

What is your name?※

テキスト・会話の履歴

「What is your name」

・音声認識の信頼度閾値以下の場合、言ったことをもう一度言ってもらう設定

※論文の言語処理の前提は英語だと思われるので、英語の会話

Page 11: A Deep Reinforcement Learning Chatbot

②応答の候補を生成

会話モデル22個

応答の候補を生成

会話の履歴

ASR信頼度

優先応答か

応答を返す

応答の候補の最適化

応答を返す

※ASR(Automatic Speech Recognition system)信頼度:音声認識システムの信頼度

強化学習で応答の候補を選択

Page 12: A Deep Reinforcement Learning Chatbot

②応答の候補を生成

• 22種類のモデルのアンサンブル• 用途別:映画/政治/検索/...

• 手法別:テンプレート/LSTM/機械学習

Page 13: A Deep Reinforcement Learning Chatbot

応答モデル例

• テンプレート型• 辞書に登録されたテンプレートに応じて会話(いわゆる人工無脳)

• 代表例• Alicebot

• Artificial Intelligence Markup Language(AIML) テンプレートに応じて会話

• ほぼデフォルトだが、少し調整したり、優先応答を人力でいくつか定義

• 名前を聞かれたら”I am an Alexa Prize Socialbot”と答える、など

• Elizabot(イライザ)

• 初期の対話型bot

• 人称はうまく変換するらしい(質問でI→応答でyouを使う)

• Siriと仲良し

Page 14: A Deep Reinforcement Learning Chatbot

応答モデル例

• テンプレート型• 辞書に登録されたテンプレートに応じて会話(いわゆる人工無脳)

• 他の使用例• Initiatorbot

• 会話を始めたり質問する際に使用(調子はどう?、など)

• Storybot

• テンプレートにある童話について会話する

• Evibot

• 質問への解答に若干特化

• BoWMovies

• 映画の会話に若干特化

• 辞書(or 検索)

Page 15: A Deep Reinforcement Learning Chatbot

応答モデル例

• 検索ベース(NN or 機械学習)• 検索結果をもとに応答を決定

• 論文での使用例• VHRED models [Serban et al. 2017]

• Latent variable hierarchical recurrent encoder decoder

• データセットはRedditのジャンルごといろいろ

• 政治/ニュース/スポーツ/映画 and サブタイトル/ワシントンポスト

• SkipThought Vector Models [Kiros et al. 2015]

• SkipThought

• 辞書はBookCorpus dataset

• Dual Encoder Models [Lowe et al. 2015]

• Dual Encoder

• データセットはRedditの政治/ニュース

Page 16: A Deep Reinforcement Learning Chatbot

応答モデル例

• 検索ベース(NN or 機械学習)• 検索結果をもとに応答を決定

• 論文での使用例• Bag-of-words Retrieval Models

• ドナルド・トランプのtwiiterを使って応答

• 検索エンジン利用(コンペ時は実装されていない)

• 検索エンジンの結果を利用

• Bi-directonal LSTM

• 学習はMicrosoft Marco Dataset

• BowEscapePlan

• 会話キープしたいけど、他のモデルで良い応答がないときに利用

• 「もう一度お願い」, 「わかりません」

Page 17: A Deep Reinforcement Learning Chatbot

応答モデル例

• 会話生成• GRUQuestionGenerator

• GRUを利用

• データセットはRedditの政治/ニュースの疑問文

• 質問のテンプレートを作成

Page 18: A Deep Reinforcement Learning Chatbot

③応答の候補の最適化

会話モデル22個

応答の候補を生成

会話の履歴

ASR信頼度

優先応答か

応答を返す

応答の候補の最適化

応答を返す

※ASR(Automatic Speech Recognition system)信頼度:音声認識システムの信頼度

強化学習で応答の候補を選択

Page 19: A Deep Reinforcement Learning Chatbot

強化学習

• 与えられた「環境」における価値 or 収益を最大化するように「エージェント」を学習

• エージェント– ゲーム:プレイヤー

– 工場:ロボット

• 環境とアクセス– 直接

– インターフェース越し

• 環境– ゲーム:残りHPや時間などの状況

– ロボット:位置、速度など

行動(応答)

観測・報酬

chatbot 会話の履歴

Page 20: A Deep Reinforcement Learning Chatbot

強化学習

• 記法• 時間(1往復ごとに1ずつ増加)

• 𝑡 = 1,… , 𝑇

• 環境• 状態:会話履歴:ℎ𝑡

• 行動• モデルによる応答(候補K個):𝑎𝑡

1, … , 𝑎𝑡𝐾

• 方策• ある状態のときにある行動する条件付き確率𝜋𝜃 𝑎𝑡

𝑘|ℎ𝑡• 報酬

• 𝑟𝑡• 強化学習のゴール:累積報酬(収益)を最大化する行動を見つける

• 𝑅 = 𝑡=1𝑇 𝛾𝑡𝑟𝑡 , 𝛾 ∈ (0, 1]

Page 21: A Deep Reinforcement Learning Chatbot

強化学習の種類

• 価値反復

• 行動価値関数𝑄𝜃 ℎ𝑡 , 𝑎𝑡𝑘 (収益の期待値)を更新して最適方策を探す

• 方策勾配

• 𝜋𝜃 𝑎𝑡𝑘|ℎ𝑡 を直接更新して最適方策を探す*

• 𝜋𝜃 𝑎𝑡𝑘|ℎ𝑡 =

𝑒𝜆−1𝑓𝜃 ℎ𝑡,𝑎𝑡

𝑘

𝑎𝑡′ 𝑒

𝜆−1𝑓𝜃 ℎ𝑡,𝑎𝑡′ , 𝑘 = 1,… , 𝐾

• 𝑓𝜃 ℎ𝑡, 𝑎𝑡𝑘 :スコア関数(DNN)

最適化後の行動選択

• 𝜋𝜃 ℎ𝑡 = argm𝑎𝑥𝑘

𝑄𝜃 ℎ𝑡 , 𝑎𝑡𝑘 or argm𝑎𝑥

𝑘𝑓𝜃 ℎ𝑡 , 𝑎𝑡

𝑘

*期待収益と呼ばれる関数の最小化問題

Page 22: A Deep Reinforcement Learning Chatbot

価値関数とスコア関数の構造

Input Layer

Hidden Layer

Hidden Layer

AMTClassification

Layer

Score Output Layer

会話の履歴ℎ𝑡

応答の

候補𝑎𝑡𝑘

1458次元

500次元

20次元 5次元 1次元

ReLU SoftmaxLinear Linear

特徴量例:・応答のWord embedding(W2V)の平均・会話の履歴のラストX会話のWord embedding・履歴と応答の類似度・応答の種類/ポジネガ・…

・ 𝑓𝜃 ℎ𝑡, 𝑎𝑡𝑘

・ 𝑄𝜃 ℎ𝑡, 𝑎𝑡𝑘

Page 23: A Deep Reinforcement Learning Chatbot

学習データ

• 前VerでAlexaユーザから収集した4340会話データ+5段階評価

• クラウドソーシング(AMT)による応答評価20万個

3会話 候補(汚い言葉は***などで前処理済み)

人手で評価

架空のAMTの画面

学習約14万、検証約2万、テスト約2万スコアは5段階評価:

1:Very Poor, 2:Poor, 3:Acceptable, 4:Good, 5:Excellent

Page 24: A Deep Reinforcement Learning Chatbot

学習データ

• 前VerでAlexaユーザから収集した4340会話データ+5段階評価

• クラウドソーシング(AMT)による応答評価20万個

3会話 候補(汚い言葉は***などで前処理済み)

人手で評価

架空のAMTの画面

学習約14万、検証約2万、テスト約2万スコアは5段階評価:

1:Very Poor, 2:Poor, 3:Acceptable, 4:Good, 5:Excellent

Page 25: A Deep Reinforcement Learning Chatbot

Supervised AMT

• クラウドソーシングによるデータから教師あり学習

• 各応答に対してスコア𝑓𝜃 ℎ𝑡 , 𝑎𝑡𝑘 が予測可能になる

Input Layer

Hidden Layer

Hidden Layer

AMTClassification

Layer

Score Output Layer

会話の履歴ℎ𝑡

応答の

候補𝑎𝑡𝑘

1458次元

500次元

20次元 5次元 1次元

ReLU SoftmaxLinear Linear

目的変数重み固定

[1, 2, 3, 4, 5]

Page 26: A Deep Reinforcement Learning Chatbot

テスト

• ランダムに候補を選択 or 伝統的なbotのみの場合と比べて評価の低い応答の選択が減り、評価の高い応答の選択が増えた

Page 27: A Deep Reinforcement Learning Chatbot

学習データ

• 前VerでAlexaユーザから収集した4340会話データ+5段階評価

• クラウドソーシング(AMT)による応答評価20万個

3会話 候補(汚い言葉は***などで前処理済み)

人手で評価

架空のAMTの画面

学習約14万、検証約2万、テスト約2万スコアは5段階評価:

1:Very Poor, 2:Poor, 3:Acceptable, 4:Good, 5:Excellent

Page 28: A Deep Reinforcement Learning Chatbot

報酬設定

• 方策勾配:2パターン• Off-policy REINFORCE:会話終了時の評価𝑅𝑑を利用

• Off-policy REINFORCE Learned Reward:報酬関数 𝑔𝜙 ℎ𝑡𝑑 , 𝑎𝑡

𝑑 を利用*

• 価値反復• Supervised AMTや方策勾配の結果をもとに環境モデルを生成(省略)

𝑟𝑡 =

0𝑅𝑑

𝑇𝑑or 𝑔𝜙 ℎ𝑡

𝑑 , 𝑎𝑡𝑑

(次時点でのユーザの反応にネガティブな言葉がある場合)

(それ以外)

*別途、回帰モデルを構築:Supervised Learned Reward

𝑟𝑡 = 𝑃𝜃 𝑦|ℎ𝑡 , 𝑎𝑦𝑇[−2.0, −1.0, 0.0, 1.0, 2.0]

Supervised AMTのNNを用いて確率を出力

Page 29: A Deep Reinforcement Learning Chatbot

方策勾配

• 会話データを用いて強化学習• 初期値はSupervised AMTのものを利用

• 前Verのときの会話履歴+応答を評価することでスコアを改善

Input Layer

Hidden Layer

Hidden Layer

AMTClassification

Layer

Score Output Layer

会話の履歴ℎ𝑡

応答の

候補𝑎𝑡𝑘

1458次元

500次元

20次元 5次元 1次元

ReLU SoftmaxLinear Linear

過学習防止のためここだけ学習

Page 30: A Deep Reinforcement Learning Chatbot

価値反復

• 会話データを用いて強化学習• 初期値はSupervised AMTのものを利用

• 前Verのときの会話履歴+応答を評価することでスコアを改善

Input Layer

Hidden Layer

Hidden Layer

AMTClassification

Layer

Score Output Layer

会話の履歴ℎ𝑡

応答の

候補𝑎𝑡𝑘

1458次元

500次元

20次元 5次元 1次元

ReLU SoftmaxLinear Linear

過学習防止のためここだけ学習

Page 31: A Deep Reinforcement Learning Chatbot

事前結果

• Supervised AMTと比較して• Q-learningは大きく性能変わらない

• Off-policy REINFORCEは性能が高い

対話ごとの平均

1:Very Poor, 2:Poor, 3:Acceptable, 4:Good, 5:Excellent

Page 32: A Deep Reinforcement Learning Chatbot

応答モデルの選択頻度

AliceBot以外もそこそこ選択されうる

→多様な応答

Page 33: A Deep Reinforcement Learning Chatbot

Contents

• Amazon Alexa Prize

• MILABOTの大まかな仕組み

• 実験結果

• まとめ

Page 34: A Deep Reinforcement Learning Chatbot

A/Bテスト

• Alexaユーザとの対話で、ランダムに方策を割り当てて実験

• コンペ期間に2回実施• 第一回:2017/07/29~2017/08/06

• 第一回:2017/08/06~2017/08/13

Page 35: A Deep Reinforcement Learning Chatbot

A/Bテスト結果

• 第一回• Q-learningが平均スコアが高かった

• 第二回• 方策勾配の方がQ-learningより結果が良かった

1:Very Poor, 2:Poor, 3:Acceptable, 4:Good, 5:Excellent

Page 36: A Deep Reinforcement Learning Chatbot

Discussion

• 全体では、Q-learningが最も平均スコアが高かった• スコア3.15:平均的にAcceptableより上

• ファイナリストたちとそう変わらないスコア• MILABOTはファイナリストにはならなかったけど

• 第一回と第二回で方策勾配とQ-learningの順序が変わっている• 第二回はコンペの終盤 and 新学期開始

• Alexaユーザは他のchatbotにも触れていることで、見る目が厳しくなった

• 子供と比較して間違いに関して許容度が低い成人ユーザの割合が多い

ユーザの質が変わったことが原因?

Page 37: A Deep Reinforcement Learning Chatbot

Contents

• Amazon Alexa Prize

• MILABOTの大まかな仕組み

• 実験結果

• まとめ

Page 38: A Deep Reinforcement Learning Chatbot

Summary

• MILABOT• Amazon Alexa Prizeのコンペのセミファイナルのチームのchatbot

• MILABOTの特徴• 22の応答生成モデルによる応答候補生成

• 強化学習による応答候補の最適化

• MILABOTの性能• 平均的に”Acceptable”より上の応答をする

• ファイナリストのチームと匹敵

モデルのアンサンブル+強化学習はインタラクティブな対話に対して有効な方法

Page 39: A Deep Reinforcement Learning Chatbot

Backup

Page 40: A Deep Reinforcement Learning Chatbot

Sequence to Sequence

• 可変長の入力に対して可変長の出力を返すNN• encoder(入力)→隠れ層→decoder(出力)

• ユニットはLSTMやGRUが利用される

botでは、前の会話から次の応答が生成されると期待

入力の際は順序を逆にする

Page 41: A Deep Reinforcement Learning Chatbot

VHRED

• Latent variable hierarchical recurrent encoder decoder • 可変長の文章生成モデル

• 潜在変数が存在

• Variational Autoencoderで学習

botでは、現在の会話履歴と会話履歴の類似度によってデータセットから候補の応答を5つ検索、20の応答の

log-likelihoodをVHREDで計算し、最も高いものを返す

※Word embeddingはGloVe

Page 42: A Deep Reinforcement Learning Chatbot

SkipThought

• 教師なし学習で文のベクトル化を行う• 入力:i番目の文(ベクトル化は別途行う)• 出力:i-1番目とi+1番目の文

1. encoderに入力となる文を最後まで入力

2. encoderの学習により獲得した隠れ層の値を入力文のベクトルとして使用

3. decoderに入力文の引数と、生成する文の一つ前の単語を入力(最初の単語の場合はeos 記号を入力)

4. decoderのこの時の隠れ層の値と、出力される単語に対応する語彙ベクトルの内積を求め、この値をその時点での該当単語の出力される確率として扱う

5. 出力文の最後まで 3−4 の操作を繰り返し、単語生成確率の和を求め、この値が最大化されるようにencoderとdecoderのパラメータを学習する

ユニットはGRU

botでは、あらかじめトリガーフレーズを定義しておき、会話履歴の最後が一致したら優先応答を返す

(たぶん)

Page 43: A Deep Reinforcement Learning Chatbot

GRU

• LSTMを簡略化したようなユニット• 忘却ゲートと入力ゲートを「更新ゲート」にまとめる

Page 44: A Deep Reinforcement Learning Chatbot

強化学習の流れ

流れ

1. 応答スコア(応答の良さ)を求める:DNN• 3.では、1.と同じ構造のDNNを使用(初期重みは1.の結果)

2. 報酬モデル• 予測スコアといくつかの特徴量で応答スコアを改善

3. 強化学習• スコア関数

• 実際のラベル or 報酬モデルの出力を報酬として方策勾配

• 行動価値関数• 状態遷移モデルを構築したうえで価値関数の更新を行う

Page 45: A Deep Reinforcement Learning Chatbot

報酬モデル

• 予測スコアや会話に関する特徴用を入力として、スコアを改善

• 𝜙 = argm𝑎𝑥𝜙

𝑑 𝑡 𝑔𝜙 ℎ𝑡𝑑 , 𝑎𝑡

𝑑 − 𝑅𝑑2

• 𝑑:会話のラベル

• 𝑔𝜙 ℎ𝑡𝑑 , 𝑎𝑡

𝑑 :線形回帰モデル

• 特徴量:23個

• 応答スコアモデルの予測値

• 応答が一般的か

• 疑問詞があるか

• …

• データセット:約4340会話

• 学習:3255, テスト:1085

• 𝑅𝑑:Alexaを利用してるユーザが会話終了時につけたスコア

クラウドソーシングでのタグ付けと実世界のユーザのスコアの違いを補正