-
Notifications
You must be signed in to change notification settings - Fork 19
A Deep Reinforcement Learning Chatbot
- Amazon Alexa Prize competition で MILABOT を deep reinforcement learning で開発した。
- よくある small talk topi に対応していて人と会話できる
- bot は
- natural language generation model と retrieval model を組み合わせてつくられている
- template-based model, bag-of-words model, seq2seq, latent variable などなど。
- crowd source と実際のユーザーとのやりとりで、複数のモデルから適切な response を選ぶように reinforcement learning で train した。
略
- rule base は限界があるのでほぼ全て Statistical machine learning にした。
- 全てのコンポーネントが独立して大量データを使って ML で training された
- dialogue manager
- モデルたちから reponse 候補をもらう
- priority response があったら即返す (what's your name?)
- なかったら selection policy で選ぶ
- 22 個のレスポンスモデルを内包している
- retrieval-based
- generation
- knowledge base
- template base
- AIML テンプレートに記述されたレスポンス(会話履歴)からレスポンスを出す
- www.alicebot.org
- priority response ではない
- トレーニング
- string match base template bot
- Rogerian psychotherapis システムをまねしたもの
- 会話を始める starter として使う - 40個のopen questions を用意
- 例: What did you do today?
- interesting fact で会話を始めることも
- 過去2ターンですでに起動しているかも確認
- ユーザーが say/tell というとトリガーされる
- 唯一の会話形ではないボット
- www.evi.com
- Amazon の Q/A web service
- direct question に関しては priority response となる
- evibot に投げる。失敗したら NLTK named entity processor を使ってサブクエリがあるか調べる
- template-based
- movie bot: あらすじ。公開年などのデータ持ってる
- string matching で映画タイトルなどをユーザーのクエリの中で探す
- matching に word embeddingも使ってる
- いくつかの VHRED model がある。VHRED は seq2seq with Gaussian latent variables (論文あり)
- レスポンス生成の方法
- K個のレスポンス候補が、「現時点の会話ヒストリ」と「dataset にある会話ヒストリ」の cosine similarity で得られる。(bag-of-words TF-IDF Glove word embeddingsを使う)
- その 20(K?)個のレスポンスの log-likelifood を VHRED で計算して一番高いやつを return する
- 4つの VHRD モデルが有る。reddit から scrape してる
- BookCorpus でトレーニングしたSkipThought Vector model
- amazon prize の rule で宗教や政治のトピックに関して意見を言ってはいけないというものがあった
- それに対応するもの
- DualEncoderRedditPolitics and DualEncoderRedditNews
- ENC_Q と ENC_R の2つのEncoder で dialogue history と学習して response を返す。
- candidate response の score は bilinear mapping of the dialogue history embedding and the candidate response embedding.
- top K results が TFIDF と Glove word embeddings cosine similarity
- TF-IDF Glove word embeddings と word2vec embeddings に基づいたモデル
- highest cosine similarity で retrieve する
- topic-independnet, generic pre-defined response を返すモデル
- I don't know, could you repeat that? など。
- logisc regression を classifier として使っている
- user の最後の発話をクエリとして web search 使って 10個の search の snippets をゲットする
- user の最後の発話と snippet をつなげて 0-1 のスコア(どれだけ適切か)を MLP で作る
- GRUQuestion-Generator という Generative RNN Language モデル使ってる
- dialogue history に応じて follow up questions を生成できる
-
response candidates が生成されたあとはdialogue manager が selection policy を使う
-
ユーザーの満足度 immediate と long term のトレードオフが必要
-
RL でやる。dialogue manager は agent。step t=1, 2, ..., T 。 dialogue history h_t を受け取る
-
K このアクションから1つ選ばないといけない at1, ..., atK の中から。
-
action を選んだあとに 報酬 rt を受け取り。 next state ht+1 を受け取る
-
dialogue history と candidate response を入力して 1548 features を計算してそれを scoring model への input とする
-
input features は word embeddings, dialogue acts, part-of-speech tags, unigram word overlap, bigram word overlap and model-specific features
-
scoring model は 5 layer NN
-
layer 1: 1458 features を input とするレイヤ
-
layer 2: 500 hidden units. layer 1 を linear transformation.
-
layer 3: 20 hidden units. layer 2 を linear transformation.
-
layer 4: 5 outputs units as 確率. layer3 の softmax
- 後述に Amazon Mecahnical Turk labels に一致
-
layer 5: final layer
h_t の a_t_k に対して score を返す f_theta。
- response モデルが生成するものはたとえ h_t (status)が同じでも、違う response が変わる。ので普通の RL と違う。
- agent の policy は2つの異なる方法で parameterize された
- 1つめ: 式2 で定義される action-value function。h_t に対して a_t_k action をとったときの return の期待値
- crowdsourced な label で supervised learningした action value function を estimate。
- Crowdsourcing
- dialogue と 4 つの candidate response を人に見せた
- それぞれの candidate がどれだけ適切かを 1-5で flag してもらった
- 上記のラベルと x でトレーニングした
- h_t (dialogue history)
- a_t (action taken)
- score を regression model で学習させる (1-5のスコア)
- R_d dialogue d に対して Alexa userが返したスコア。上記のスコアのラベルデータ。