Wu+'22 - Sentence-aware Contrastive Learning for Open-Domain Passage Retrieval (ACL)

#OpenQA #DCSR

1. どんなもの?

f:id:catshun:20220312120020p:plain

  • DPR など一般的なデュアルエンコーダでは、文書 CLS と質問 CLS によるマッチングを行うため、文書内に複数文が存在するような一対多の場合は、質問に対する適切な文書を取得することが難しい(各文の内容が異なる場合は Contrastive Conflicts が生じる)
  • 本研究では、二種類の Contrastive Conflicts を問題視:
    • Transitivity of Similarity:文書内に存在する意味的に異なる複数の文に対して、DPR ではこれらの表現間の類似性を考慮せずにグローバルな文書表現として同様の最適化を行ってしまう(SQuAD データで DPR の性能が低い要因の一つ。SQuAD では、一つの文書に対して 2.66 の質問が作成される)
    • Multiple References in Large Batch Size:一般的にバッチサイズを大きくすると検索性能が向上することが知られている(例:Qu+'21 - cross-batch negative sampling)。これらの負例サンプリングでは、(ミニバッチ内など)他の質問に対する正例文書を負例文書とみなすため、負例文書の対象に質問に関連する正例文書が含まれてしまう可能性がある
  • 本研究ではこれらの問題に対処するため文書を文レベルの表現として考慮し、同一文書内における多様な文表現の生成を行う

2. 先行研究と比べてどこがすごい?

  • デュアルエンコーダで課題とされてきた質問と文書間の一対多関係から生じる Contrastive Conflict に対して、文レベルの詳細な意味表現を獲得することでこの問題に対処
  • 一文ずつエンコードする必要はなく文書全体を入力とするため、文の数に比例することなく latency の増加を抑えることができる
  • また文書内の負例サンプリング(in-passage negative sampling)手法を提案。同一文書内の正例文に対して、近隣の文をサンプリングすることでハード負例を作成

3. 技術や手法のキモはどこ?

Training

f:id:catshun:20220312154520p:plain

  • 文ごとに特殊トーク[SENT] を挿入した系列を入力とする:

    • [CLS] [SENT] s1 [SENT] s2 ... [SEP]
    • 各文の埋め込み表現は [SENT] のベクトル表現を用いる
  • 最適化のための正例・負例文(not 文書)は以下のように作成する

    • 正例文:質問の解答を含む文
    • 負例文:
      • easy negatives:in-batch negatives
      • hard negatives:質問に対する BM25 スコアに基づいて作成された負例文書セットからランダムに一つの負例文書(= 複数の負例文)をサンプル
      • in-passage negatives:正例文書のうち正解を含まない文からランダムに一つ選択(全ての文に正解が含まれる場合は、BM25 の負例セットから一つ選択)

  • 🤔 最適化の際の挙動がいまいちよく分かっていない

    We refine the original contrastive learning framework by creating sentence-aware positive and negative samples. (3.2)

    • 図を見ても文単位でサンプルしているっぽい(自分の理解では以下のようにサンプル)
      • 正例文書からは、正例文を一つ、負例文を一つサンプル?
      • BM25 で作成された一つのハード負例文書からは、負例文を一つサンプル?
      • in-batch negatives からは、各文書に対して負例文を一つずつサンプル?

Retrieval

f:id:catshun:20220312155315p:plain

  • 文単位で FAISS に登録して、質問に対するオフライン検索を行う(入力は文書、各 [SENT] の埋め込み表現を登録)
  • 一つの文書は複数の文を持つため、上位 100×k 文を検索(k は文書に含まれる文数の平均)

  • 検索対象は文書(not 文)なので、以下の Score Normalization を行い、文スコアから文書スコアを導出する

    • 検索文(100×k)に対して softmax 関数で正規化
    • 文書  \mathcal{P} に含まれる文(おそらく 100×k に含まれる文を対象)が  s_1, \cdots, s_n であるとき、文書  \mathcal{P} が質問に対する関連スコア(解答が含まれる確率)は、以下のように計算される:
      • f:id:catshun:20220312161727p:plain
    • 本実験の設定では最終的に上位 100 件の文書を取得する

4. どうやって有効だと検証した?

TBA

5. 議論はある?

  • 一つの文書から質問が生成される SQuAD(下図)に対して、Wikipedia のタイトルが正解となるような問題設定(一つの記事自体を正解対象とする場合)では、問題意識にズレが生じる。とはいえ、Contrastive Conflicts について有効な手段であると考えられる。 f:id:catshun:20220312145335p:plain

6. 次に読むべき論文は?

  • Akkalyoncu Yilmaz+'19 - Cross-Domain Modeling of Sentence-Level Evidence for Document Retrieval (EMNLP) ACL Anthology

    • 文レベルの表現を使用するが、リランキングに焦点(本研究では検索自体に焦点)
  • Khattab+'20 - ColBERT: Efficient and Effective Passage Search via Contextualized Late Interaction over BERT (SIGIR) [arXiv][GitHub]

    • MaxSim(トークン単位の類似度における Maxpooling + Summation)による late interaction を用いることで、詳細な類似度を考慮
  • Lee+'21 - Learning Dense Representations of Phrases at Scale (ACL) [ACL Anthology][GitHub]