Deep Learning for Chatbots, Part 1 – Introduction at WildML

2016/4/6 論文ではなくブログ記事。
http://www.wildml.com/2016/04/deep-learning-for-chatbots-part-1-introduction/

ChatBotすなわち会話エージェントの現状について非常によくまとまっている。ほとんど全訳になった。

MicrosoftやFacebook (M), Apple (Siri), Google, WeChat, and Slackなど多くの会社が、NLPと深層学習を使って人間と見分けがつかない会話ができるボットを作る夢を見ている。しかし、現状はそこまでいっていない。

モデルの分類

検索ベースか生成モデルか

検索ベースのモデル(Retrieval-based models: 比較的簡単)

既存の応答会話DBを使って返答を生成する。単にルールベースのマッチングを行うものもあれば、機械学習の分類アルゴリズムを使うものもある。このシステムでは新しい分を作ることはなく、有限の、定義済みの返答を返すのみである。

生成モデル (Generative models: 比較的困難)

決め打ちの返答に頼らずスクラッチから新しい応答を生成する。通常は機械翻訳技術を利用するが、言語を変換するのではなく、入力を出力(応答)に「翻訳」することになる。

どちらもよしあしがある。検索ベースモデルでは文法間違いは起こらないが、元々応答が存在しない入力を扱えない。生成モデルはより賢いが、学習が困難で、文法間違いをよく冒す。
深層学習はどちらにも適用できるが、研究としては生成モデルの方向に向かっている。Sequence to Sequenceアプローチに期待している研究者は多いが、まだ初期段階であり、現在は商用システムは検索ベースの手法を多く採用している。

長い会話か短い会話か

会話が長ければ長いほど自動化は難しくなる。

Short-Text Conversations (容易)

入力一つに対し一つの回答を生成することを目指しているので簡単である。例えば質問を一つ投げかけると回答が一つ帰って来るようなものである。

Long Conversations (困難)

なんども会話ターンが回ってきて、これまでの会話内容を覚えておかなければならない。カスタマーサポート会話は通常は長い会話に複数の質問が含められている。

Open DomainかClosed Domainか

Open Domain (困難)

ユーザーがいかなるときも会話できるもの。目的や意図が決まっているとは限らない会話。TwitterやRedditでの会話は通常Open Domainであり、どの方向にも進み得る。無限の話題と、ある程度の世界に関する知識が必要なことが、この問題を難しくしている。

Closed domain (容易)

システムは非常に限定された目的を達成しようとするので、あり得る入出力の範囲が限られている。技術的なカスタマーサポートや買い物支援などはClosed Domainな問題である。これらのシステムは政治について話すことはなく、特別なタスクをできるだけ効率的にこなそうとする。ユーザーは様々なことを聞くかもしれないが、それらに対応する必要もないし、ユーザーも期待していない。

共通の課題

明確な課題と明確でない課題がある。ほとんどは活発な研究領域である。

文脈を考慮すること

言語的な文脈と物理的な文脈の両方を考慮する必要がある。過去の発話内容は言語的な文脈に属する。よく使われるのは会話をベクトルにまとめることだが、会話が長くなると難しくなる。Building End-To-End Dialogue Systems Using Generative Hierarchical Neural Network ModelsAttention with Intention for a Neural Network Conversation Modelはこのアプローチをとっている。日時や場所、ユーザーに関する知識は物理的な文脈である。

一貫したパーソナリティ

理想的には、同じ意味の質問を投げかけられたらシステムは同じ答えを返さなければならない。例えば、「何歳ですか?」と「年齢はいくつですか?」は同じ回答を返さなければならない。これは簡単な問題に見えるが、固定化した知識や「パーソナリティ」をモデルに入れ込むのはいまだ研究領域である。多くのシステムは言語的にありそうな返答を返すように学習がなされるが、意味的に一貫した答えを返すようには学習させられていない。通常は様々に異なったユーザーのデータを使って学習する。A Persona-Based Neural Conversation Modelは明示的にパーソナリティをモデリングしようとしている最初の一歩である。
例)

モデルの性能評価

会話エージェントの理想的な性能評価の方法は、タスクを実行できたかどうかを調べることである。例えば、会話を入力として、カスタマーサポート問題が解決できたか、等である。しかし、これには人間が評価する必要があり難しい。Open Domainモデルを扱っているときなどは、決まった目的がないこともある。
BLEUは機械翻訳によく使われる指標だが、テキストのマッチングを基本としており、全く違う単語やフレーズが含まれる返答の評価には使えない。How NOT To Evaluate Your Dialogue System: An Empirical Study of Unsupervised Evaluation Metrics for Dialogue Response Generationでは、現在よく使われている指標は人間の評価と相関があるものはないと主張している。

意図と多様性

生成的システムでよくある問題は、「それは素晴らしい!」とか「それは知りません」といった、多くの入力に対して適用可能な応答が生成されやすいということである。GoogleのSmart Replyは当初「I love you」という回答はほとんどすべての場合に返していた。
これはどのようなデータで、どのような目的やアルゴリズムに基づいて学習を行うかによる。いくつもの目的関数を用いることで、人工的に多様性を増やそうとしている人もいる
人間は入力に適合していて、勝つ意図を伝えるような応答を返している。生成的なシステム(そしてとりわけOpen Domainなシステム)では特別な意図を考慮せず学習しているため、この種の多様性を持ち合わせていない。

実際どれくらい動作するのか?

まず、検索ベースのOpen Domainなシステムは扱うべきケースが膨大なので不可能である。
生成的でOpen domainなシステムはほとんど汎用人工知能であり、現状ほとんど実現していない(多くの研究はこの路線を目指している)

残された領域(生成的・検索ベースの手法が両方適用可能な、限られた領域を対象にしたもの)では、文が長く文脈の重要性が高いほど、問題が難しくなる。
BaiduのチーフであるAndres Ngは最近のインタビューでこのように述べている。

ほとんどの深層学習の価値は、データを大量に集められる狭い領域でのみ発揮されている。例えば、意味のある会話を生成するなどということは今はできない。デモはできるし、ひとつだけ会話を取り出して、あたかも意味のある会話ができたかのように見せることはできるけど、実際に試してみるとすぐに話が脱線してしまう。

多くの会社は会話を人に任せ、データが集まれば将来自動化できると言っているが、これは領域が非常に狭く限られていればの話である。例えばUberで自動車を呼ぶ会話、などである。少しでも領域が広くなると、(例えばセールスのためのemailなど)では、すぐに現在の技術では対処できなくなる。しかし、全自動ではなくて人間の応対を助けるのであれば役に立てることもでき、はるかに現実的である。

商用システムにおける文法的間違いは非常に経済的ダメージがあり、すぐにユーザーを逃がしてしまう。そのために、ほとんどの商用システムでは文法間違いがなく、攻撃的な返答を返すことがない検索ベースのシステムを採用している。もし会社が巨大なデータを何とか手にできたら生成的モデルも不可能ではないが、MicrosoftのTayがやったような方法で話題の脱線を防ぐ仕組みも必要だろう。

参考文献