ActiveQA:強化学習を用いてQAシステムを教師無し学習で改良する試み

  • 2018.10.13
  • AI
NO IMAGE

1.ActiveQA:強化学習を用いてQAシステムを教師無しで改良する試みまとめ

・ActiveQAはより良い回答を引き出すための質問方法を強化学習で学習するシステム
・ActiveQAは教師無し学習だが教師有り学習をしたQAシステムより高いパフォーマンスを示した
・ActiveQAはオープンソース化されたがまだまだ改良の余地がある事をGoogleも認めている

2.ActiveQAとは?

以下、ai.googleblog.comより「Open Sourcing Active Question Reformulation with Reinforcement Learning」の意訳です。

自然言語の理解は、現在進行中のGoogleのAI研究の中でも重視されている課題です。それは、機械翻訳アプリケーション、構文解析やセマンティック解析など、様々な研究に繋がります。会話型のテクノロジではユーザの質問に直接答える能力がますます重要になっています。Googleの研究対象の中でも特に活発な研究分野の1つは質問に対して回答するQA能力です。QAは人間の対話の土台となります。

プログラムのソースコードを公開する事は研究結果を世界中の人が再現し、検証可能にするために非常に重要な要素です。そのため、GoogleはActiveQA(Active Question Answering)のTensorFlowパッケージオープンソースとしてリリースしました。ActiveQAは、質問応答のために人工知能エージェントを強化学習で訓練する研究プロジェクトです。 ICLR 2018の論文「Ask the Right Questions: Active Question Reformulation with Reinforcement Learning」で初めて発表されたActivQAは、QAシステムがより良い回答を提供できるようにするため、自然言語を使用してQAシステムと繰り返し対話します。

Active Question Answering
従来の伝統的なQAシステムでは、正解があらかじめ判明しているデータ(ラベル付き学習データ)を用いて、教師付き学習を行っていました。これは効果的ですが、学習データになかった質問など想定外の質問に対して人間のように柔軟に対処する能力はありませんし、質問の意図を理解して質問を読み替える事、複数の問い合わせに回答する事、質問をとりまとめて回答する能力などが欠けていました。

ActiveQAは、人間が「正しい質問をする」能力を持つ事に注目して開発された、QAシステムに繰り返し質問をするエージェントです。エージェントは、QAシステムが可能な限り最良の答えを見つける事ができるように、元の質問を何回も異なった言い回しに変えて質問をします。私達はこの方法を「Active」と呼んでいますが、それはエージェントがQAシステムと動的なやりとりを複数回行い、最終的に回答の質を向上させることを目的としているためです。

たとえば、「テスラはいつ生まれたのですか?」という質問を考えてみましょう。エージェントは、「テスラの誕生日はいつですか」と「テスラが生まれた年はいつですか?」という2つの異なる観点から質問を再定式化し、QAシステムから両方の質問に対する回答を取得します。このすべての情報から「1856年7月10日」を選択して回答します。

注)ニコラ・テスラ、交流電源を発明した人

ActiveQAシステムの特徴は、良い回答につながる質問を学ぶことです。 しかし、元の質問とよりよい質問を同時に利用できるようなトレーニングデータはすぐには入手できないため、ActiveQAは機械学習のアプローチの一種である強化学習を使用して、エージェントを学習させます。

学習は、ActiveQAエージェントがQAシステムと対話するときに行われます。エージェントにより改良された質問は、対応する答えがどれほど優れているかいう点で評価され、これが報酬となります。回答が優れている場合、学習アルゴリズムはモデルのパラメータを調整して、同様な答えにつながる言い換えが再生成される可能性が高くなります。

私たちの論文では、より良い質問をすることによって、ActiveQAを利用したQAシステムを従来のQAシステムよりも優れたものにすることが可能であることを示しています。これは重要な結果です。何故なら、従来のQAシステムはすでに同じタスクを教師付き学習で訓練しているからです。

私たちの研究のもう一つの魅力的な発見は、ActiveQAエージェントは既にかなり洗練された学習結果をしめしていますが、まだ改良の余地がある事です。今回の学習時に使用したポリシーには、単語の重要度を測定する手法として既に良く知られているTf-idfや語尾のステミング(三単現のSなどを無視して同じ単語と見なすようにする事)などを利用しいます。

貴方自身のActiveQA Systemを構築する
TensorFlow ActiveQAパッケージは、3つの主要コンポーネントで構成され、ActiveQAエージェントのトレーニングと実行に必要なすべてのコードを含んでいます。

1)事前学習済のsequence to sequenceモデル
入力として質問を取り込み、その言い換えを返します。この作業は機械翻訳、つまり英語から英語の翻訳に似ています。実際、最初のモデルは一般的な言い換えに使用できます。この実装のために、TensorFlowニューラルマシン翻訳チュートリアルのコードをカスタマイズして使用しました。 私達はポリシー勾配法を使用した強化学習によるトレーニングをサポートするようにコードを修正しました。

2)回答選択モデル
回答セレクタは、畳み込みニューラルネットワークを使用し、オリジナルの質問、改良された質問、および回答にスコアを割り当てます。 セレクタには、公に利用可能なword embeddings、GloVeを事前に訓練したものを使用しています。

3)QAシステム
この目的のために、我々は、Seoとその共同研究者達が2017年に提唱した一般的な質問応答システムであるBiDAFを使用します。

また、訓練を受けたすべてのモデルのチェックポイントへのポインタも提供します。

Googleの使命は、世界の情報を整理して普遍的なアクセス可能かつ有用なものにすることであり、ActiveQAはその使命を実現する重要なステップだと考えています。私たちは、この研究が、よりよくわかりやすい回答をするシステムを設計するのに役立ち、自然言語を使用して世界と対話できるシステムを世界の人々が開発する際に役立つことを願っています。

謝辞
この研究とリリースの貢献者には、Alham Fikri Aji、Christian Buck、Jannis Bulian、Massimiliano Ciaramita、Wojciech Gajewski、Andrea Gesmundo、Alexey Gronskiy、Neil Houlsby、Yannic Kilcher、Wei Wangが含まれます。

3.ActiveQA:強化学習を用いてQAシステムを教師無しで改良する試み関連リンク

1)ai.googleblog.com
Open Sourcing Active Question Reformulation with Reinforcement Learning

2)ai.google
Ask the Right Questions: Active Question Reformulation with Reinforcement Learning