制御可能な文章生成RAG - DPR

はじめに

前回まではRAGについて調査し、 学習に必要なデータを準備した。
今回はRAG学習に必要なDPRの学習を行う。

DPR

Dense Passage Retrieval1 (DPR)はある質問に回答するために必要な知識文(passage)を
文章群から推定するためのモデルである。
質問文を入力として、知識群の各文章に対してその文に対する関連度を出力する。

ネットワークは質問文を入力するBERTと知識文を入力するBERTの2つのBERTからなり、
それらの出力のドット積を文章間の関連度として、最適化を行っている。

DPRの学習

DPRはtransformers2にも実装されているが学習機能がないため、
実装はFacebookが公開している元論文の実装を用いた。
https://github.com/facebookresearch/DPR

学習対象は前回作成した都道府県質問文章とした。
47都道府県のうち5県をランダムに選び、その県が関係する質問・回答文は評価データとした。
(静岡県, 京都府, 島根県, 徳島県, 長崎県を評価データとした。)

日本語事前学習モデルとして以下のモデルを利用した。
https://github.com/cl-tohoku/bert-japanese

学習結果

Q1に対する関連度

質問文 静岡県の人口は380万人くらいですか? 京都府の人口は1165万人くらいですか? 島根県の人口は624万人くらいですか?
関連度 1位 2015年の静岡県の人口は370万人です。 2015年の京都府の人口は261万人です。 2015年の島根県の人口は69万人です。
関連度 2位 2010年の静岡県の人口は376万人です。 2015年の東京都の人口は1351万人です。 2015年の鹿児島県の人口は164万人です。
関連度 3位 2005年の静岡県の人口は379万人です。 2005年の京都府の人口は264万人です。 2005年の島根県の人口は74万人です。
関連度 4位 2000年の静岡県の人口は376万人です。 2010年の京都府の人口は263万人です。 2015年の徳島県の人口は75万人です。
関連度 5位 2015年の福岡県の人口は510万人です。 2015年の埼玉県の人口は726万人です。 2015年の福島県の人口は191万人です。

前回のQ1は各都道府県の2015年時点での人口がどのくらいかという質問であった。
上表Q1の質問文に対して関連度1位の文章は2015年度時点でのその都道府県の人口であるため、
Q1に関しては質問文と知識文の関連が正しく学習できていると思われる。

Q2に対する関連度

質問文 静岡県の面積は10746km2くらいですか? 京都府の面積は38518km2くらいですか? 島根県の面積は55263km2くらいですか?
関連度 1位 静岡県の面積は7700km2である。 京都府の面積は4600km2である。 島根県の面積は6700km2である。
関連度 2位 福岡県の面積は4900km2である。 東京都の面積は2100km2である。 広島県の面積は8400km2である。
関連度 3位 長野県の面積は13500km2である。 大阪府の面積は1900km2である。 徳島県の面積は4100km2である。
関連度 4位 2015年の静岡県の人口は370万人です。 2015年の京都府の人口は261万人です。 福島県の面積は13700km2である。
関連度 5位 長崎県の面積は4100km2である。 大分県の面積は6300km2である。 長崎県の面積は4100km2である。

Q2は都道府県の面積に関する質問であり、関連度1位はその都道府県の面積、
それ以下は適当な都道府県の面積となっている。  

Q3に対する関連度

質問文 茨城県京都府ではどちらが大きいですか? 千葉県と島根県ではどちらが大きいですか? 東京都と静岡県ではどちらが大きいですか?
関連度 1位 茨城県の面積は6000km2である。 千葉県の面積は5100km2である。 東京都の面積は2100km2である。
関連度 2位 京都府の面積は4600km2である。 島根県の面積は6700km2である。 京都府の面積は4600km2である。
関連度 3位 宮城県の面積は7200km2である。 三重県の面積は5700km2である。 静岡県の面積は7700km2である。
関連度 4位 2015年の茨城県の人口は291万人です。 栃木県の面積は6400km2である。 大阪府の面積は1900km2である。
関連度 5位 東京都の面積は2100km2である。 熊本県の面積は7400km2である。 愛媛県の面積は5600km2である。

Q3は2つの都道府県を比べてどちらが大きいかを尋ねる質問である。
関連する2つの都道府県の面積に対する知識が最上位にくるのが理想である。
上表左、中央はそのとおりとなっているが、一番右の東京都と静岡県の比較だけは
静岡県の面積を表す知識文章の関連度が3位となっており、 理想からはずれた結果となっている。
(BERTのtokenizer的に東京都と京都府が関連しやすいため?)

Q4に対する関連度

質問文 1935年から1990年で京都府の人口は変わっていますか? 1920年から1965年で島根県の人口は変わっていますか? 2005年から2010年で徳島県の人口は変わっていますか?
関連度 1位 1935年の京都府の人口は170万人です。 1920年島根県の人口は71万人です。 2010年の徳島県の人口は78万人です。
関連度 2位 1935年の東京都の人口は636万人です。 1920年広島県の人口は154万人です。 2005年の徳島県の人口は80万人です。
関連度 3位 1995年の京都府の人口は262万人です。 1920年の鹿児島県の人口は141万人です。 2015年の徳島県の人口は75万人です。
関連度 4位 1940年の京都府の人口は172万人です。 1920年徳島県の人口は67万人です。 2000年の徳島県の人口は82万人です。
関連度 5位 1930年の京都府の人口は155万人です。 1920年福島県の人口は136万人です。 2010年の福島県の人口は202万人です。

Q4はある都道府県の2つの年の人口の増減を答える質問であり、
その都道府県の対応する年の人口が関連する文章である。
結果は関連度1位の文章に関しては正しく予想できているが、
関連度2位の予測は少し間違っている。

Q3と同様に複数の知識が関連する文章に対する関連度の予測はやや難易度が高いと思われる。

まとめ

今回は都道府県統計情報文章に対するDPRの学習と評価を行った。
単純な文章に関しては関連度の予測が正しくできていたが、 関連する文章が増えると
難易度が上昇することが分かった。

今後はこのモデルを利用してRAGの学習を行いたい。

参考文献