ニューラルネットワークを使用した対話システム (2)〜機械読解質問応答システム〜
本記事は、「Neural Approaches to Conversational AI*1」を元に、ニューラルネットワークを使用した対話システムについて解説する記事の二回目です。
前回の記事では、対話システムの概要とKnowledge Base質問応答システムについて説明しました。
今回は、二つ目の質問応答システムである、機械読解質問応答システムについて説明します。
機械読解を利用した質問応答システムは、Watsonに代表されるような、大量の文書をもとにユーザーの質問に対して応答を返すシステムのことを指します。
まず、機械読解とは何か、それをどのようにニューラルネットにより実現するかについて説明します。
続いて、機械読解を組み込んだ質問応答システムをどのように実現するかについて、システムの例も見ながら説明していきます。
目次
機械読解をニューラルネットで実現する
機械読解とは何か
機械読解とは、パッセージ と質問文 から応答 を返すようなタスクを指します。
パッセージ は、SQuAD*2のように一つの文書で構成されることが一般的です。一方で、MS MARCO*3のように複数の文書から構成されることもあります。
質問文 や応答 はこちらも一般的には一つずつですが、質問と応答の繰り返しを扱い、対話のコンテキストを考慮した応答を行うことに注目したデータセットもあります。
応答の形式としては、パッセージ内に含まれる文や単語を選択することにより応答を返すものが一般的です。
CNN/Daily Mail*4のように選択肢があらかじめ指定されている場合や、パッセージ内の特定の範囲を選択肢する場合があります。
システムの応答をより自然に、より実用的にするために、応答の形式には様々な例外が提案されています。例えば、下記のような応答を行うシステムがあります。
- Yes/Noといった質問文への肯定や否定を返すもの
- 与えられているパッセージだけでは答えが返せないというNo Answerという形式を返すもの
- 回答が含まれていそうな文書を並べかえるもの
- 自然な対話になるように応答文を生成することを求めるもの
これらの機械読解システムは、ニューラルネットの登場により飛躍的な発展を遂げました。
BERT*5に代表される文理解モデルにより、パッセージと質問文のマッチングで応答可能なデータセットでは、精度が大幅に向上したのです。
その性能は驚愕に値するもので、SQuADデータセットにおいて完全一致および部分一致のいずれでも、人間の成績を大きく上回るものでした。
機械読解をニューラルネットで実現する方法
以降では、ニューラルネットワークを用いて、どのように機械読解を実現しているかを、下記二つの観点から説明します。
- パッセージおよび質問文を、どのようにしてニューラルネットが扱いやすい形式に変換しているか
- 変換したパッセージおよび質問文を、どのようにマッチングして応答を選択しているか
ニューラルネットで自然言語を扱う場合、一般的に文字や単語を、埋め込み表現と呼ばれるベクトルの形式に変換したものを使用します。
BiDAF*6と呼ばれる機械読解のベースラインモデルでは、単語単位のCharacter Embeddingと、文字単位のWord Embeddingの両方を使用しています。
ベクトルに変換した文字列および単語列を結合し、ネットワークの入力とします。
次に、上記で作成した埋め込み表現をニューラルネットモデルに入力して、文章全体のコンテキストも加味したベクトル表現に変換します。
一般的にこのフェーズでは双方向RNN(Bidirectional RNN)がよく使用されます。BERTのようにTransformerライクなself-attentionを含む層を利用することもあります。
ここまででの流れで、パッセージおよび質問文をニューラルネットで扱いやすいベクトル表現に変換していくことができました。
続いて、このベクトル表現を用いて応答を選択していきます。
ここで非常に重要になるのが、attentionと呼ばれる、コンテキストの重要度を決定する機構です。
attentionは、seq2seqモデルでにおいて、入力文の各語の影響度合いを、出力文として生成される単語のポジションによって変更するために誕生したものです。
機械読解モデルでは、質問文に含まれる単語をもとに、パッセージに含まれる単語の重要度を計算したり、逆にパッセージに含まれる単語をもとに質問文に含まれる単語の重要度を計算したりするために使用されます。
また、Transformerのようなself-attentionを利用する層では、パッセージならパッセージ自身の、質問文なら質問文自身の、文全体のコンテキストを考慮して文に含まれる各単語の重要度を計算します。
このattentionの仕組みによって、パッセージと質問文をニューラルネットが自動的にマッチングしているものと考えられます。
最後に、attentionを考慮したあとのコンテキストベクトルを使用して出力を選択します。
単語選択式の回答の場合は、上記のコンテキストベクトルをもとに別のニュールネットに通して、それぞれの選択肢の尤度を計算します。
範囲選択式の回答の場合は、開始位置と終了位置、それぞれの尤度を上記のコンテキストベクトルをもとに計算します。
解答を選択するためのニューラルネットワークとしても、一般的に双方向RNNがよく使用されます。他には、線形モデルやTransofrmerのエンコーダー層を使用するケースもあります。
様々な機械読解モデル
ここまで、機械読解の一般的なモデルについて説明してきました。
ここからは、上記で紹介した一般的な構成では対応が難しい問題に対する、様々なモデル構成についてみていきたいと思います。
まず最初に紹介するのは、DrQA*7です。
DrQAは、Wikipediaの全ドキュメントを対象に、ユーザーからの質問に応答するために設計されたモデルです。
WikipediaベースのデータセットであるSQuADと、追加のデータセットを使用したマルチタスクラーニングで、最大36.5%の精度で完全一致の応答を返すことを実現しました。
DrQAは、Document RetrieverとDocument Readerの二つのコンポーネントからなります。
Document Retrieverでは、大量のWikipediaドキュメントから、5つの候補ドキュメントを抽出します。
このコンポーネントにはニューラルネットは使用されておらず、質問文と似通ったバイグラム構造を持つドキュメントを抽出します。
Document Readerでは、抽出されたドキュメントをパラグラフ単位で質問文とマッチングします。
パラグラフベクトルは、Word Embeddingや種々の特徴量を結合して構成されます。
質問文ベクトルは、Word Embeddingを一層のRNNに通し、その出力をself-attentionでならしたものを使用します。
上記のように作成したパラグラフベクトルと質問文ベクトルから、パラグラフ単位で開始位置と終了位置の尤度を計算します。
最後に、最も尤度の高い開始位置と終了位置の組み合わせを答えとして出力するという仕組みです。
ReasonNet*8およびReasonNet++*9のように、パッセージと質問文を複数回マッチングするモデルもあります。人間が文章を読むときのように、重要そうな部分を繰り返し読解し答えを生成することを試みているモデルです。
これらのモデルは、Memory Networks*10を拡張したもので、Memoryに保存されたパッセージと、マッチングに重要そうな質問文のコンテキストを繰り返し更新しながらマッチングします。
ReasonNetとReasonNet++は、さらにターミネーションフラグを内部に持ちます。このターミネーションフラグがTrueになる、もしくは規定された最大回数に達するまでマッチングを行います。
動的な回数マッチングすることにより、問題に合わせたマッチングを実現することを試みているのです。
パッセージと質問文のベクトル化は、前述した埋め込み表現、双方向RNN(もしくはTransformer)、attention機構を使用して生成します。
その後、パッセージベクトルをメモリーに、質問文ベクトルを答えを探索する(Reasoningを行う)RNNの初期状態に設定し、終了されるまでRNNの状態を更新しながらマッチングを行います。
ターミネーションフラグを持つ場合、学習は通常のSGDでは無理であるため、強化学習の枠組みを利用してニューラルネットでのモデリングを行っています。
応答は、最終ステップのマッチング結果を利用して、開始位置と終了位置の尤度を計算することにより生成します。
一方、SAN*11やR.M-Reader*12のように、マルチステップのマッチングを行いつつ、各ステップで計算した尤度を総合して最終的な出力を行うモデルもあります。
機械読解質問応答システム
機械読解質問応答システムの問題設定
機械読解を利用した質問応答システムは、まだまだ新しい分野です。2018年ごろから続々と専用のデータセットが提案され、今盛り上がりを見せだしている分野でもあります。
複数のデータセットがあり、それぞれ細かい部分では異なりますが、共通する問題設定は下記のようになります。
- 質問者は、パッセージを見ずに、周辺情報のみを与えられて質問を行う
- 回答者は、パッセージを見ながら、抽出もしくは極力語彙を変えない形で応答を行う
- 質問者は、以前の質問の情報を必要とする質問を行う
- 上記を数ターン繰り返し、一つの対話データとする
対話というほど自然で流暢なやり取りではありませんが、数ターン前までの履歴を考慮して応答ができるかを問うています。
具体的には、直前の質問文や回答文への参照が含まれているような文が質問文に含まれることになります。
その他の機械読解データセットと比較して、タスクとしての難しさは主にこの参照解析にあると考えられています。
以前の質問および回答のどの部分を参照しているのかを把握する必要があり、単純なパターンマッチだけでは解けない問題が現れるためです。
一方で、データセットの分析結果は必ずしもこの仮説に沿わない結果となっています。
質問に応答するために参照解析が必要かどうかに関係なく回答精度はあまり変わらないという結果や、参照解析とは別の要因で回答精度が変化するという結果が示されています。
機械読解質問応答システムの例
CoQA*13は、パッセージからの範囲抽出だけでなく、それを要約した形式で応答を行うことを要求するデータセットです。
質問文や応答文が、それぞれ平均5.5単語および2.7単語とSQuAD並に短いのも特徴の一つです。
CoQAの論文の中では、上記で紹介したDrQAによる回答範囲選択と、Pointer-Generator Network*14を利用した回答文の要約を組み合わせた手法を、最も性能の良かったモデルとして提示しています。
最も性能の良かったモデルでもF1が65.1%と、人間の88.8%という性能を大きく下回ることが示されています。
CoQAは、登場して約一年ほど経過した2019年5月現在、性能が大幅に向上しました。LeaderBoard上では、人間に匹敵する性能のモデルが登場しています。
BERTの登場が大きく影響しており、その他の範囲選択型、抽出型の機械読解タスクでも同様の現象が発生しています。
QuAC*15は、範囲選択型の応答と、応答の意図をダイアログアクトとして指定した、二種類の応答を返すことを要求するデータセットです。
ダイアログアクトは、範囲選択だけでは意図が取りづらい応答を、質問者が理解するために付与しているものです。
このデータセットでは、ダイアログアクトとして、答えの自信度を示すフラグ、Yes/No、No Answerを示すフラグの3種類のフラグを組み合わせたものを応答します。
またQuACは、パッセージの長さが396.8単語、応答の長さが平均14.6単語と、SQuADに比べて3倍以上長めであることも特徴です。
QuACの論文では、コンテキストを考慮するように改造したBiDAF++を最も性能が良かったモデルとして提示しています。
人間のF1値が80.8%だったところ、モデルの性能は60.6%ほどでだいぶ開きがあります。
ダイアログアクトのうち、Yes/NoフラグのF1は、人間の性能と近く86.1%の性能を示しました。一方、答えの自信度を示すフラグのF1は61.6%程度でした。
QuACは、CoQAと同じ時期に登場したデータセットですが、LeaderBoard上は、BERTを応用したモデルでも、まだまだ人間の性能には及ばない状態です。論文内で提示された性能をまあまあ改善する程度に留まっているのです。
QuAC論文の分析では、以前の質問と現在の質問の応答の選択範囲が離れていればいるほど、応答選択のF1が最低40%ほどにも下がることが示されています。
また、答えが含まれる文章が分かっている場合のF1は72.4%と大幅に向上することも示されています。
このことから、QuACに含まれるパッセージが他のデータセットより非常に長く、マッチングする文を適切に選択できていないことにより、識別精度がなかなか向上しないのではないかと考えられます。
まとめ
本記事では、機械読解というタスク、そして機械読解を利用した質問応答システムについて説明してきました。
機械読解というタスク自体は、昨年のBERTの登場以降、特定の文章に対するシンプルな質問に対して、範囲指定型の応答を行う問題では、非常に高精度で回答を生成できることが示されています。
一方で、質問応答システム用の機械読解は、昨年ようやくデータセットが出てき始めたという状態です。 それゆえ、機械読解を単純にマルチターンに拡張したような問題形式であっても、人間の精度に到達できていないようなケースも存在します。
さらに、複数の文書を参照したり、応答を生成する必要がある問題は、まだまだ人間の精度に達していないというのが現状です。
上記を考慮すると、実用レベルの機械読解型の質問応答システムを構築することは、まだまだ先の話になりそうです。
しかし、根拠となる文書と、質問・回答のペアさえあればシステムが構築できるという利点は、今まで人間のオペレーターが応答してきた回答が大量にあるような環境にとっては、喉から手が出るほどほしいシステムであることは間違いないでしょう。
機械読解は研究領域でも非常に注目を集めており、昨年だけで10数個の新たなデータセットが提案されています。
対話システムだけでなく、マルチモーダルな意図理解、高度なNLIが必要なタスクなど、人間でも少し難しいタスクを、ニューラルネットでも行えるのではないかという期待が高まっています。
設定を物語形式で与えることにより、雑談に回答するような対話システムも構築できるかもしれません。
機械読解を利用した質問応答システムが、いたるところで利用される日まで、さほど時間がかからないのではと期待できます。
*1:[1809.08267] Neural Approaches to Conversational AI
*2:SQuAD: 100,000+ Questions for Machine Comprehension of Text
*3:MS MARCO: A Human Generated MAchine Reading COmprehension Dataset
*4:Teaching Machines to Read and Comprehend
*5:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
*6:Bidirectional attention flow for machine comprehension
*7:Reading Wikipedia to Answer Open-Domain Questions
*8:ReasoNet: Learning to Stop Reading in Machine Comprehension
*9:An empirical analysis of multiple-turn reasoning strategies in reading comprehension tasks
*11:Stochastic answer networks for machine reading comprehension
*12:Reinforced Mnemonic Reader for Machine Reading Comprehension
*13:CoQA: A conversational question answering challenge
*14:Get to the point: Summarization with pointer generator networks