A Deep Reinforcement Learning Chatbot
-
Upload
takahiro-yoshinaga -
Category
Data & Analytics
-
view
1.114 -
download
0
Transcript of A Deep Reinforcement Learning Chatbot
NN論文を肴に酒を飲む会#4
A Deep Reinforcement Learning Chatbot
arXiv:1709.02349
自己紹介
• 名前• 吉永 尊洸(よしなが たかひろ)
• @tekenuko
• 仕事• データ分析コンサルタント
• マーケティング、製造系、教育研修講師とか
• 自然言語処理は1年くらい前にWord2Vecを使ったくらい
勉強する良い機会だと思ったので申し込んでみた
• 元素粒子論(博士)
• 趣味• リアル脱出ゲーム
今回の論文:MILABOT
• Amazonのソーシャルボットのコンペ出場チームの報告
会話モデル22個
応答の候補を生成
会話の履歴
ASR信頼度
優先応答か
応答を返す
応答の候補の最適化
応答を返す
※ASR(Automatic Speech Recognition system)信頼度:音声認識システムの信頼度
強化学習で応答の候補を選択
百科事典的な論文です
会話モデル22個
応答の候補を生成
会話の履歴
ASR信頼度
優先応答か
応答を返す
応答の候補の最適化
応答を返す
強化学習で応答の候補を選択
※ASR(Automatic Speech Recognition system)信頼度:音声認識システムの信頼度
テンプレート型からseq2seqまで様々な
モデルを活用
複数の強化学習アルゴリズムを試して
応答を最適化
Contents
• Amazon Alexa Prize
• MILABOTの大まかな仕組み
• 実験結果
• まとめ
Amazon Alexa
• クラウドベースの音声認識サービス
Alexa. Let’s chat! ※
音声→テキスト
テキスト→処理
音声
開発者が色々実装可能
※コンペ期間中に会話ができるようになっている
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 優勝者決定
Contents
• Amazon Alexa Prize
• MILABOTの大まかな仕組み
• 実験結果
• まとめ
①入力
会話モデル22個
応答の候補を生成
会話の履歴
ASR信頼度
優先応答か
応答を返す
応答の候補の最適化
応答を返す
※ASR(Automatic Speech Recognition system)信頼度:音声認識システムの信頼度
強化学習で応答の候補を選択
①入力(想定)
What is your name?※
テキスト・会話の履歴
「What is your name」
・音声認識の信頼度閾値以下の場合、言ったことをもう一度言ってもらう設定
※論文の言語処理の前提は英語だと思われるので、英語の会話
②応答の候補を生成
会話モデル22個
応答の候補を生成
会話の履歴
ASR信頼度
優先応答か
応答を返す
応答の候補の最適化
応答を返す
※ASR(Automatic Speech Recognition system)信頼度:音声認識システムの信頼度
強化学習で応答の候補を選択
②応答の候補を生成
• 22種類のモデルのアンサンブル• 用途別:映画/政治/検索/...
• 手法別:テンプレート/LSTM/機械学習
応答モデル例
• テンプレート型• 辞書に登録されたテンプレートに応じて会話(いわゆる人工無脳)
• 代表例• Alicebot
• Artificial Intelligence Markup Language(AIML) テンプレートに応じて会話
• ほぼデフォルトだが、少し調整したり、優先応答を人力でいくつか定義
• 名前を聞かれたら”I am an Alexa Prize Socialbot”と答える、など
• Elizabot(イライザ)
• 初期の対話型bot
• 人称はうまく変換するらしい(質問でI→応答でyouを使う)
• Siriと仲良し
応答モデル例
• テンプレート型• 辞書に登録されたテンプレートに応じて会話(いわゆる人工無脳)
• 他の使用例• Initiatorbot
• 会話を始めたり質問する際に使用(調子はどう?、など)
• Storybot
• テンプレートにある童話について会話する
• Evibot
• 質問への解答に若干特化
• BoWMovies
• 映画の会話に若干特化
• 辞書(or 検索)
応答モデル例
• 検索ベース(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の政治/ニュース
応答モデル例
• 検索ベース(NN or 機械学習)• 検索結果をもとに応答を決定
• 論文での使用例• Bag-of-words Retrieval Models
• ドナルド・トランプのtwiiterを使って応答
• 検索エンジン利用(コンペ時は実装されていない)
• 検索エンジンの結果を利用
• Bi-directonal LSTM
• 学習はMicrosoft Marco Dataset
• BowEscapePlan
• 会話キープしたいけど、他のモデルで良い応答がないときに利用
• 「もう一度お願い」, 「わかりません」
応答モデル例
• 会話生成• GRUQuestionGenerator
• GRUを利用
• データセットはRedditの政治/ニュースの疑問文
• 質問のテンプレートを作成
③応答の候補の最適化
会話モデル22個
応答の候補を生成
会話の履歴
ASR信頼度
優先応答か
応答を返す
応答の候補の最適化
応答を返す
※ASR(Automatic Speech Recognition system)信頼度:音声認識システムの信頼度
強化学習で応答の候補を選択
強化学習
• 与えられた「環境」における価値 or 収益を最大化するように「エージェント」を学習
• エージェント– ゲーム:プレイヤー
– 工場:ロボット
• 環境とアクセス– 直接
– インターフェース越し
• 環境– ゲーム:残りHPや時間などの状況
– ロボット:位置、速度など
行動(応答)
観測・報酬
chatbot 会話の履歴
強化学習
• 記法• 時間(1往復ごとに1ずつ増加)
• 𝑡 = 1,… , 𝑇
• 環境• 状態:会話履歴:ℎ𝑡
• 行動• モデルによる応答(候補K個):𝑎𝑡
1, … , 𝑎𝑡𝐾
• 方策• ある状態のときにある行動する条件付き確率𝜋𝜃 𝑎𝑡
𝑘|ℎ𝑡• 報酬
• 𝑟𝑡• 強化学習のゴール:累積報酬(収益)を最大化する行動を見つける
• 𝑅 = 𝑡=1𝑇 𝛾𝑡𝑟𝑡 , 𝛾 ∈ (0, 1]
強化学習の種類
• 価値反復
• 行動価値関数𝑄𝜃 ℎ𝑡 , 𝑎𝑡𝑘 (収益の期待値)を更新して最適方策を探す
• 方策勾配
• 𝜋𝜃 𝑎𝑡𝑘|ℎ𝑡 を直接更新して最適方策を探す*
• 𝜋𝜃 𝑎𝑡𝑘|ℎ𝑡 =
𝑒𝜆−1𝑓𝜃 ℎ𝑡,𝑎𝑡
𝑘
𝑎𝑡′ 𝑒
𝜆−1𝑓𝜃 ℎ𝑡,𝑎𝑡′ , 𝑘 = 1,… , 𝐾
• 𝑓𝜃 ℎ𝑡, 𝑎𝑡𝑘 :スコア関数(DNN)
最適化後の行動選択
• 𝜋𝜃 ℎ𝑡 = argm𝑎𝑥𝑘
𝑄𝜃 ℎ𝑡 , 𝑎𝑡𝑘 or argm𝑎𝑥
𝑘𝑓𝜃 ℎ𝑡 , 𝑎𝑡
𝑘
*期待収益と呼ばれる関数の最小化問題
価値関数とスコア関数の構造
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・履歴と応答の類似度・応答の種類/ポジネガ・…
・ 𝑓𝜃 ℎ𝑡, 𝑎𝑡𝑘
・ 𝑄𝜃 ℎ𝑡, 𝑎𝑡𝑘
学習データ
• 前VerでAlexaユーザから収集した4340会話データ+5段階評価
• クラウドソーシング(AMT)による応答評価20万個
3会話 候補(汚い言葉は***などで前処理済み)
人手で評価
架空のAMTの画面
学習約14万、検証約2万、テスト約2万スコアは5段階評価:
1:Very Poor, 2:Poor, 3:Acceptable, 4:Good, 5:Excellent
学習データ
• 前VerでAlexaユーザから収集した4340会話データ+5段階評価
• クラウドソーシング(AMT)による応答評価20万個
3会話 候補(汚い言葉は***などで前処理済み)
人手で評価
架空のAMTの画面
学習約14万、検証約2万、テスト約2万スコアは5段階評価:
1:Very Poor, 2:Poor, 3:Acceptable, 4:Good, 5:Excellent
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]
テスト
• ランダムに候補を選択 or 伝統的なbotのみの場合と比べて評価の低い応答の選択が減り、評価の高い応答の選択が増えた
学習データ
• 前VerでAlexaユーザから収集した4340会話データ+5段階評価
• クラウドソーシング(AMT)による応答評価20万個
3会話 候補(汚い言葉は***などで前処理済み)
人手で評価
架空のAMTの画面
学習約14万、検証約2万、テスト約2万スコアは5段階評価:
1:Very Poor, 2:Poor, 3:Acceptable, 4:Good, 5:Excellent
報酬設定
• 方策勾配: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を用いて確率を出力
方策勾配
• 会話データを用いて強化学習• 初期値はSupervised AMTのものを利用
• 前Verのときの会話履歴+応答を評価することでスコアを改善
Input Layer
Hidden Layer
Hidden Layer
AMTClassification
Layer
Score Output Layer
会話の履歴ℎ𝑡
応答の
候補𝑎𝑡𝑘
1458次元
500次元
20次元 5次元 1次元
ReLU SoftmaxLinear Linear
過学習防止のためここだけ学習
価値反復
• 会話データを用いて強化学習• 初期値はSupervised AMTのものを利用
• 前Verのときの会話履歴+応答を評価することでスコアを改善
Input Layer
Hidden Layer
Hidden Layer
AMTClassification
Layer
Score Output Layer
会話の履歴ℎ𝑡
応答の
候補𝑎𝑡𝑘
1458次元
500次元
20次元 5次元 1次元
ReLU SoftmaxLinear Linear
過学習防止のためここだけ学習
事前結果
• Supervised AMTと比較して• Q-learningは大きく性能変わらない
• Off-policy REINFORCEは性能が高い
対話ごとの平均
1:Very Poor, 2:Poor, 3:Acceptable, 4:Good, 5:Excellent
応答モデルの選択頻度
AliceBot以外もそこそこ選択されうる
→多様な応答
Contents
• Amazon Alexa Prize
• MILABOTの大まかな仕組み
• 実験結果
• まとめ
A/Bテスト
• Alexaユーザとの対話で、ランダムに方策を割り当てて実験
• コンペ期間に2回実施• 第一回:2017/07/29~2017/08/06
• 第一回:2017/08/06~2017/08/13
A/Bテスト結果
• 第一回• Q-learningが平均スコアが高かった
• 第二回• 方策勾配の方がQ-learningより結果が良かった
1:Very Poor, 2:Poor, 3:Acceptable, 4:Good, 5:Excellent
Discussion
• 全体では、Q-learningが最も平均スコアが高かった• スコア3.15:平均的にAcceptableより上
• ファイナリストたちとそう変わらないスコア• MILABOTはファイナリストにはならなかったけど
• 第一回と第二回で方策勾配とQ-learningの順序が変わっている• 第二回はコンペの終盤 and 新学期開始
• Alexaユーザは他のchatbotにも触れていることで、見る目が厳しくなった
• 子供と比較して間違いに関して許容度が低い成人ユーザの割合が多い
ユーザの質が変わったことが原因?
Contents
• Amazon Alexa Prize
• MILABOTの大まかな仕組み
• 実験結果
• まとめ
Summary
• MILABOT• Amazon Alexa Prizeのコンペのセミファイナルのチームのchatbot
• MILABOTの特徴• 22の応答生成モデルによる応答候補生成
• 強化学習による応答候補の最適化
• MILABOTの性能• 平均的に”Acceptable”より上の応答をする
• ファイナリストのチームと匹敵
モデルのアンサンブル+強化学習はインタラクティブな対話に対して有効な方法
Backup
Sequence to Sequence
• 可変長の入力に対して可変長の出力を返すNN• encoder(入力)→隠れ層→decoder(出力)
• ユニットはLSTMやGRUが利用される
botでは、前の会話から次の応答が生成されると期待
入力の際は順序を逆にする
VHRED
• Latent variable hierarchical recurrent encoder decoder • 可変長の文章生成モデル
• 潜在変数が存在
• Variational Autoencoderで学習
botでは、現在の会話履歴と会話履歴の類似度によってデータセットから候補の応答を5つ検索、20の応答の
log-likelihoodをVHREDで計算し、最も高いものを返す
※Word embeddingはGloVe
SkipThought
• 教師なし学習で文のベクトル化を行う• 入力:i番目の文(ベクトル化は別途行う)• 出力:i-1番目とi+1番目の文
1. encoderに入力となる文を最後まで入力
2. encoderの学習により獲得した隠れ層の値を入力文のベクトルとして使用
3. decoderに入力文の引数と、生成する文の一つ前の単語を入力(最初の単語の場合はeos 記号を入力)
4. decoderのこの時の隠れ層の値と、出力される単語に対応する語彙ベクトルの内積を求め、この値をその時点での該当単語の出力される確率として扱う
5. 出力文の最後まで 3−4 の操作を繰り返し、単語生成確率の和を求め、この値が最大化されるようにencoderとdecoderのパラメータを学習する
ユニットはGRU
botでは、あらかじめトリガーフレーズを定義しておき、会話履歴の最後が一致したら優先応答を返す
(たぶん)
GRU
• LSTMを簡略化したようなユニット• 忘却ゲートと入力ゲートを「更新ゲート」にまとめる
強化学習の流れ
流れ
1. 応答スコア(応答の良さ)を求める:DNN• 3.では、1.と同じ構造のDNNを使用(初期重みは1.の結果)
2. 報酬モデル• 予測スコアといくつかの特徴量で応答スコアを改善
3. 強化学習• スコア関数
• 実際のラベル or 報酬モデルの出力を報酬として方策勾配
• 行動価値関数• 状態遷移モデルを構築したうえで価値関数の更新を行う
報酬モデル
• 予測スコアや会話に関する特徴用を入力として、スコアを改善
• 𝜙 = argm𝑎𝑥𝜙
𝑑 𝑡 𝑔𝜙 ℎ𝑡𝑑 , 𝑎𝑡
𝑑 − 𝑅𝑑2
• 𝑑:会話のラベル
• 𝑔𝜙 ℎ𝑡𝑑 , 𝑎𝑡
𝑑 :線形回帰モデル
• 特徴量:23個
• 応答スコアモデルの予測値
• 応答が一般的か
• 疑問詞があるか
• …
• データセット:約4340会話
• 学習:3255, テスト:1085
• 𝑅𝑑:Alexaを利用してるユーザが会話終了時につけたスコア
クラウドソーシングでのタグ付けと実世界のユーザのスコアの違いを補正