Dense Passage Retrieval for Open-Domain Question Answering (2020)
December 30, 2023あたえられた文書集合から事実についての質問に答えるオープンドメイン質問応答は、もとの集合から質問に関連する少数の文書集合を選び、選ばれた集合から解答を特定する二段階の手順に分けられる (Chen et al., 2017)。 Dense Passage Retrieval for Open-Domain Question Answeringは、最初の文書候補を限定する手順に、従来より使われているBM25のような疎なベクトルを出力するモデルにかわって、BERTが出力する密で次元数の少ないベクトルを応用する。
訓練方法は距離学習であり、質問と解答のベクトルの内積が大きく、解答以外の文章と質問の内積が小さくになるように、BERTの重みを更新する。 負例を集めるために、無作為に選ばれた文章、BM25が最も高い文章、別の正例の文章を負例の文章に利用し比較したところ、BM25の高い文章と別の正例の文章を負例にするときに最もよい結果になった。
文章内のある区間がオープンドメイン質問応答の解答になる。 文章は、各文章の長さが等しくなるように文書集合から抽出されたトークン列であり、その数を\(M\)とすると、文章集合\(\mathcal{C}\)を\(\{p_1, p_2, \dots, p_M\}\)と表せる。 文章\(p_i\)を、トークン列\(w_1^{(i)}, w_2^{(i)},\dots, w_{|p_i|}^{(i)}\)と表せる。 このとき、質問応答は、質問\(q\)に対応する区間\(s_s^{(i)}, w_{s+1}^{(i)},\dots ,w_{e}^{(i)}\)を抽出することに等しい。
質問\(q\)と文章\(p\)のベクトルの生成には、それぞれ別のBERT\(E_Q, E_P\)を利用し、距離\(\text{sim}(q, p)\)を計算する。 $$ \text{sim}(q, p) = E_Q(q)^{\top} E_P(p) $$ 内積のほかユークリッド距離などの尺度も実験で評価されたが、結果に大きな差異はなかった。 結果として最も単純な内積が採用された。 推論時は、FAISSで高速に類似度の近似解を求める。
学習データのサンプルは、1つの質問、1つの解答、複数の負例からなる。 サンプル数を\(m\), 質問を\(q\), 正例を\(p_i^{+}\), 負例を\(p^-_{i, j}\)とすると、学習データ\(\mathcal{D}\)は $$ \mathcal{D}=\{\langle q_i, p^+_i,p^-_{i,1},\dots,p^-_{i, n}\rangle\}^m_{i=1} $$ であり、損失は $$ L(q_i,p^+_i,p^-_{i,1}\dots,p^-_{i,n})=-\log\frac{e^{\text{sim}(q_i,p^+_i)}}{e^{\text{sim}(q_i,p^+_i)}+\sum^n_{j=1}e^{\text{sim}(q_i,p^-_{i,j})}} $$ になる。
雑記
偽陰性のある学習データある場合に、BM25の高い文章で負例を生成するとかえって悪い結果になりそう。