[論文読み]Leveraging Passage Retrieval with Generative Models for Open Domain Question Answering整理

タイトルを直訳すると「オープンドメイン質問応答における、生成モデルを用いたパッセージ検索の活用」です。

> [Izacard, Gautier, and Edouard Grave. "Leveraging passage retrieval with generative models for open domain question answering." arXiv preprint arXiv:2007.01282 (2020).](https://arxiv.org/abs/2007.01282)

# どんな論文か
簡単にまとめると、
- オープンドメインの質問応答生成において、外部の知識源から関連するテキストを検索し、生成モデル内で統合するFusion-in-Decoderの提案
- 検索される文章数に応じて性能がスケールし、最大100の文章を検索しても性能が向上
- TriviaQAとNaturalQuestionsベンチマークでSOTAを達成

# 背景
膨大なデータを用いて学習させた大規模言語モデルから事実に基づいた情報を抽出できることがいくつかの研究で示されています。しかし、これには数十億のパラメータを持つモデルが必要となるため、応答や訓練にコストがかかります。

提案手法では、Wikipediaのような外部の知識源にアクセスし、生成モデルを活用する手法が、オープンドメインの質問応答においてどの程度効果があるかを調査します。

# 提案手法
サポートパッセージの取得方法として、BM25とDPRの2つの方法を検討しています。
> [Okapi BM25は、情報検索における順位付けの手法である。検索エンジンがクエリとの関連性に応じて、文書を順位付けするのに用いられる。](https://ja.wikipedia.org/wiki/Okapi_BM25)

DPRでは、パッセージと質問はそれぞれBERTに入力され、二つの内積を計算することでランク付けします。
これには、Faissライブラリを使用しており、近似近傍探索により質問に関連したパッセージが求められます。


パッセージ取得後の処理では、取得した各パッセージとそのタイトル、質問を連結し、それぞれ独立にエンコーダに入力されます。この時、各パッセージの質問、タイトル、テキストの前に特別なトークンquestion:、title:、context:を追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2405498/9f76bb7f-49e5-1f97-2372-6780542fc5c9.png)

最後に、デコーダに埋め込み表現を結合したものを入力し回答を生成します。デコーダ内で収集した証拠の統合を行っているため、**Fusion-in-Decoder**と呼ぶことにしています。

# 実験とデータセット
HuggingFace Transformersライブラリで利用できる事前学習済みのT5モデルを利用します。モデルサイズはbaseとlargeの2種類用意し、それぞれ220Mと770Mのパラメータを持っています。

以下のデータセットを用いて、オープンドメインQAに対するFusion-in-Decoderの評価を行います。
- NaturalQuestions
実際にあったユーザからの質問が含まれており、質問に対する答えが含まれているかどうかわからないWikipediaの記事全体を読んで回答を作成する必要があります（[いくつかの例](https://ai.google.com/research/NaturalQuestions/visualization)）。
実験では、5つ以上のトークンを持つ回答を削除したデータを使用しています。
- TriviaQA
トリビアに関する質問と回答が含まれたデータセット。フィルタリングされていないバージョンを使用しています（[論文](https://arxiv.org/abs/1705.03551)）。
- SQuAD v1.1
アノテータは、Wikipediaから抽出されたスパンが回答となるような質問を作成しています（[いくつかの例](https://datarepository.wolframcloud.com/resources/SQuAD-v1.1)）。

パッセージの元データとして、NQおよびTriviaQAについては2018年12月20日のWikipediaダンプを、SQuADについては2016年12月21日のWikipediaダンプを使用します。Chen et al.（2017）やKarpukhin et al.（2020）と同じ前処理を適用し、重複しない100単語のパッセージを生成します。

この際、NaturalQuestions及びTriviaQAのパッセージはDPRを使用して取得し、SQuADはBM25を使用して取得します。

生成された回答は、Rajpurkar et al.（2016）によって導入されたexact match metric (EM)をもとに評価され、正規化（小文字化、句読点、空白削除等）後の回答が一致する場合、正しい（= 1）とされます。




# 実験結果
提案手法と既存手法の比較結果は以下の通りです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2405498/4f4d2e37-8e45-d464-39e1-6e1f0a144879.png)
シンプルな方法でありながら他と大きく差をつけていることがわかります。

# パッセージの数に対するスケーリング
収集したパッセージの数でどの程度性能が変わるかを示した図が以下になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2405498/ca7608d2-d0b3-9de5-7fa0-3076be9be02e.png)
パッセージ数が10から100に増やすことで、TriviaQAでは6％の向上、NaturalQuestionsでは3.5％の向上につながることがわかります。一方で、既存のほとんどの抽出モデル（サポート文書を検索し、これら文章から回答を抽出する手法）の性能は、パッセージ数が10から20でピークに達することから、提案手法が複数のパッセージから情報を組み和わせることに優れていると言えます。

# 訓練時のパッセージ数の影響
ひとつ前の実験では、モデルは同じ数のパッセージでトレーニングおよび評価されました。計算コストを削減するには、より少ないパッセージでモデルを訓練できることが好ましいです。以下にパッセージ数を変えたときのパフォーマンスを示します（テストはいずれの場合も100パッセージ）。

また、先の実験のモデルを1000ステップで100のパッセージを使用してファインチューニングした結果も示します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2405498/7a706759-b7b8-b2b8-a575-b33a8f74b053.png)

ファインチューニングにより、少ない計算リソースで精度を維持できることが読み取れます。

# まとめ
本論文では、Fusion-in-Decoderという検索したパッセージをDecoder内で統合させる手法が提案されていました。シンプルな手法ながら既存手法を上回るパフォーマンスを出しており、興味深い論文だと思いました。
# 参考文献
- [Izacard, Gautier, and Edouard Grave. "Leveraging passage retrieval with generative models for open domain question answering." arXiv preprint arXiv:2007.01282 (2020).](https://arxiv.org/abs/2007.01282)
- [Wikipedia Okapi BM25](https://ja.wikipedia.org/wiki/Okapi_BM25)
- [Google AI NaturalQuestions Visualization](https://ai.google.com/research/NaturalQuestions/visualization)
- [Joshi, Mandar, et al. "Triviaqa: A large scale distantly supervised challenge dataset for reading comprehension." arXiv preprint arXiv:1705.03551 (2017).](https://arxiv.org/abs/1705.03551)
- [WOLFRAM DATA REPOSITORY
Immediate Computable Access to Curated Contributed Data SQuAD v1.1](https://datarepository.wolframcloud.com/resources/SQuAD-v1.1)