Wikipediaから学習する知識会話型エージェント
今回紹介するのは最近Facebook社から発表された『Wikipediaの情報を使って知的な対話ができるAI』についてで、自然言語処理についての記事になります。もちろんWikipediaの文章をそのまま使って喋るのではなく文脈に応じて適切な文章を生成できるようなAIとなっており、大変興味深い実験結果が示されています。
論文 https://openreview.net/forum?id=r1l73iRqK
(1) 自然言語処理AIが目指す究極のゴール
自然言語処理AIが目指す究極のゴール、それは人と自然な会話ができるAIを作ることです。そのためには、①言語を理解すること、②知識を貯めたり使ったりするための記憶力を持つこと、③返答としての必要な条件を満たし、さらに相手を惹き込めるような発言を返すこと、などが求められています。
今現在の翻訳AIの性能を見てみると文法や単語の使い方などはある程度理解できるようになっていると言えそうですが、②の知識の利用や記憶などと言った部分に関してはまだまだ研究が進んでいません。実は現在の翻訳AI多くの場合、文脈や背景知識などを全く考慮していません。
そこでこれらを克服するため、文脈と知識を考慮できるようなAIを開発したのが今回紹介する論文になります。
(2) 『教師と生徒の会話』
今回問題設定を単純化するために、知識を使って発話するAIを『教師』、知識を欲しがる対話相手(人)を『生徒』として、一対一のターン制の会話を考えます。さらに教師は生徒からの発言を受けた後、必ずWikipediaからある決まりに従って関係しそうな記事を検索し、そこから使えそうな文章を選びその文章に基づいて発言する、という様に定めます。
例えば以下のような会話が今回考える会話形式に当てはまったものとなります。
お題『アルマジロー』
教師:「僕動物好きなんだけど、特にあの革みたいな甲羅がとっても良いと思うんだよね。」
生徒:「そうは思わないわ。そもそも人生で一度もアルマジローなんて見たことないわ。」
教師に与えられる知識
- アルマジロは、哺乳綱異節上目被甲目に属する動物の総称。
:(関連する7つのWikipediaの記事(後述)の最初の段落の文章すべてが与えられます)
- アルマジローは、スペイン語で「小さな装甲車」を意味する。
- ココノオビアルマジロ、マタコミツオビアルマジロは中型哺乳動物で、北、中央、南アメリカで見られる。
教師:「僕は動物園で見たんだ。アルマジローはスペイン語で小さな装甲車っていう意味なんだよ。」(与えられた文章のうちの一つを選び、それを使いながら答える)
生徒:「アルマジローってスペイン語圏では一般的な動物なの?」
教師に与えられる知識:
- (話題が変わらなかったので上と同じ知識が与えられます。)
教師:「そうだよ。アルマジローは一般的に北、中央、南アメリカで見られるよ。」(与えられた文章のうちの一つを選び、それを使いながら答える)
今回この論文を発表したFacebook社はこのような会話形式での正しい対話文と正しいWikipediaの文章の選び方を学習するために、約2.2万件の対話ログをクラウドソーシングによって集めました。クラウドソーシングする際も、被験者に『教師』と『生徒』に分かれてもらい、『教師』には上のルールと同じようにWikipediaの文章を毎回選んでもらうようにしています。
関連するWikipediaの記事の選び方(論文中では知識検索システムと呼ばれています)ですが、この部分は学習によって適切な記事を選んだ方が良いと考えられます。しかし今回はクラウドソーシングの際に教師が使う記事の選び方と統一するため、AIが記事を選ぶ際もヒューリスティックな手法で統一しています。具体的には、会話の履歴と各Wikipediaの記事とで登場する単語の分布がどれだけ似ているかなどで関連する記事を決めています。
今回は大きく分けると『与えられる知識の中から最終的にどの文章を選ぶか』、『選んだ文章と文脈を使ってどのように文章を生成するか』の2箇所でディープラーニングを使っています。
(3) モデル
なかなか複雑そうなモデルとなっていますが、左半分が『与えられる文章からどれを使うか』を選ぶ部分、右側が『選んできた文章と会話ログを入力として受け取り、次の文章を生成する』ための部分になっています。どちらもTransformerと呼ばれる、Google翻訳にも使われているモデルが使われています。(一見複雑なモデルですが実は基本的な翻訳AIと同じような構造をしており、Transformerというモデルの汎用性の高さが光っています。)
一つの発話を生成するまでの流れとしては、IR System(知識検索システム)がまず教師にいくつかの文章を用意し、左側のTransformerがどの文章を使うか決定、その文章と会話ログ(直近2ターン分の会話)を使って右側のTransformerで文章を生成して発言、という風になっています。
このモデルがうまく学習できるように生成された文章に対して適切な評価指標を設定するなど、論文には他にも様々な貢献が含まれます。
(4) 結果
AIは一般的に見たことのあるデータについては比較的高い性能を発揮することができます。今回、クラウドソーシングで集められ学習用データの中には『ステーキ』を話題にしたものが含まれていたのですが、実際に学習が終わった後のAIは『ステーキ』を話題にしてどのような知的な会話を繰り広げてくれるのか見てみましょう。
お題『ステーキ』
被験者:「こんにちは、お昼の時間ね。なんだか高級ステーキが食べたい気分だわ。
AI:ワオ。それは美味しそうだね。僕も同じように言ってみたいよ。『ステーキ』って言葉が形容詞無しで使われる場合、それは一般的にビーフステーキを意味するよね。」
被験者:「面白いことを言うわね。私は特に好みのステーキというのはないのだけど、あなたは?」
AI:「僕はリブアイステーキが好きなんだ、ミディアムレアが特に良いね。『ステーキ』って言葉が形容詞無しで使われる場合、それは一般的にビーフステーキを意味するよね。」
被験者:「私もリブアイ好きよ!リブアイのどんなところが好き?」
AI:「カットステーキって柔らかいけど、リブアイは本当に柔らかいと思うんだ」
被験者:「まさにそうね。あなたはどうやって良いお肉を選ぶの?」
AI:「ステーキとか他のあなたにとって珍しいカット肉となると、レア、ミディアムレア、ミディアム、ウェルダン、などがあるよね。」
被験者:「ステーキの下準備としてはどんなものが好み?」
AI:「あなたはそれを色々とリガウ方法で準備できることが好きだよ。フライとか、グリルとか、あとステーキをボイルすることもできるよ。」
若干不自然なところはありますが、たしかに相手の発言に対しての反応を示しつつ、さらに知識をうまく会話に馴染ませて会話をふくらませることができています。
次に学習用データの中には含まれていなかった話題についての対話を見てみましょう。
お題『酪農』
被験者:「あなたが酪農についてどう思っているか知りたいわ。」
AI:「僕はあまり酪農について知らないんだ。でも先進国では酪農は典型的に高乳製品で成り立っているということは知っているよ。」
被験者:「えぇそうね、たくさんの牛を飼っていて毎時間大量の牛乳を生産しているわね。」
AI:「商業酪農で使用される他の種には、ヤギ、ヒツジ、およびラクダが含まれるね。」
被験者:「ラクダからミルクが取れるなんて知らなかったわ。」
AI:「ラクダのミルクは砂漠の人々を支えているよ。」
被験者:「へぇそれは面白い。」
AI:「イタリアでは、人の代わりにミルクを生産することへの人気が高まっているよ。」
被験者:「私もやぎのミルクを飲んだことがあるわ。」
AI:「酪農のために牛を買うようになったことの最も古い証拠は新石器時代の代7千年。」
かなり酪農に詳しそうな反応を返すことができています。
興味深いことに、学習用データには酪農に直接関係する対話は含まれていないので、つまり初めての話題に対しても適切にWikipediaから文章を抽出し、会話に組み込むことができていることがわかります。
また、このAIは『ステーキ』, 『酪農』といった話題に対して特に特化させているわけではなくどのような話題を振ってもそれらしい会話を繰り広げてくれます。このことからこのAIはかなり自在に知識を会話に活用できていると言えるでしょう。
(5) まとめ
今回Wikipediaの知識を使って知的な会話ができるAiを紹介しました。もしこのAIがWikipediaを使っているということを知らなかったら、誰でもかなり驚くのではないでしょうか。知識を自らリンクさせ新しい情報を提供できるようなAIは、会議などで新しい問題解決のための切り口を提供するアイディアマンとしての活躍が期待されます。プライベートで会話するのも非常に面白そうですし、対話AIへの夢は広がるばかりです。
この記事に関するカテゴリー