🐙

入力テキストと文書の関連度に基づく指示追従検索

に公開

入力テキストと文書の関連度に基づく指示追従検索

こんにちは!愛媛大学大学院 修士1年の杉山誠治です。この度は、株式会社レトリバの夏季インターンシップに参加し、指示追従検索に関する研究に取り組みました。本記事では、インターンシップで取り組んだ研究内容について報告します。

はじめに

情報検索では、ユーザが検索時に入力した語句(クエリ)と文書をコンピュータが比較できる数値列(ベクトル)に変換し、ベクトル間の類似度に基づいてクエリに最も近い文書を検索します。

例えば、図1のように「池袋 グルメ」というクエリが与えられた場合、「東京 池袋のマップ」という文書よりも「東京 池袋おすすめグルメ」のベクトルが近ければ、類似度が高いとみなされ、クエリに対する上位の検索結果として選択されます。

図1:クエリと文書による検索
図1:クエリと文書による検索

近年、クエリだけでなくユーザの嗜好や意図を反映した具体的な補足・リクエスト(指示文)に基づいて検索する指示追従検索に関する研究が注目を集めています。従来の検索では、目的の文書が検索できるまでクエリを繰り返し、変更しながら検索する必要があります[1]。しかしながら、指示追従検索では、指示文を付与することでユーザの目的に沿った柔軟な検索を可能とします。例えば、図2のように指示追従検索において「池袋 グルメ」というクエリが与えられた時、指示文Aに対しては文書Aが最も関連しており、指示文Bに対しては文書Bが最も関連していると言えます。

図2:指示文に基づいて検索する指示追従検索
図2:指示文に基づいて検索する指示追従検索

指示追従検索では、同じクエリに対しても、指示文によって関連する文書は異なるというのが特徴です。今回は、「クエリ・指示文・クエリ+指示文」と文書の関連度を考慮した新しい訓練手法について検証します。

指示追従検索モデルの訓練

指示追従検索では、図2に示すようにクエリが同じでも指示文によって「やや非関連」な文書があり、入力テキストと文書の詳細な関係性を捉える必要があります。

従来の指示追従検索モデルの訓練には、クエリ+指示文と文書間の関係性のみに焦点を当てた対照学習が用いられてきました。しかし、入力テキストと文書の関係性を見ると、クエリや指示文のみでも文書と関連していると言えます。入力テキストと文書のより詳細な関係性を捉えるためには、クエリと文書、指示文と文書のそれぞれの関係性も考慮する必要があります。そこで、今回は、入力テキスト(クエリ・指示文・クエリ+指示文)と文書の関連度に着目し、指示追従検索の性能改善に取り組みます。

対照学習

指示追従検索における対照学習[2,3]は、図3のように表現でき、クエリ+指示文のベクトルに対して、関連する文書(正例文書)のベクトルを近づけ、指示文を考慮すると関連しない文書(負例文書)のベクトルを遠ざける学習手法のことを指します。

この対照学習において使用される正例文書と負例文書は以下のように定義されます。

  • 正例文書(p+):クエリ+指示文に関連している文書
  • 負例文書(p-):クエリだけを考慮すると関連しているが、指示文を考慮すると関連しない文書

図3:指示追従検索モデルの訓練
図3:指示追従検索モデルの訓練

これらの定義の基、まず、クエリ+指示文(x)と文書(p)からコサイン類似度(sim(x,p))を計測し、図4のように類似度行列を作成します。次に、類似度行列のうち正例文書の対角成分を正解ラベルとして、Cross-Entropy損失にしたがって訓練します。この訓練によって、関連する文書のベクトルを近づけ、関連しない文書のベクトルを遠ざけています。

図4:クエリ+指示文と文書の類似度行列
図4:クエリ+指示文と文書の類似度行列

重み付き対照学習:手法1

指示追従検索は、指示文を考慮した検索であるため、クエリのみを与える場合よりもクエリ+指示文を与えた方が文書との関連性を高くする必要があります。文書に対して「クエリ<指示文<クエリ+指示文」という入力テキストの関連度に基づいた重み付き対照学習の手法について検証します。

重み付き対照学習(手法1)では、正例文書に対して「クエリ・指示文・クエリ+指示文」の3つを正解ラベルとします。また、図5のように正例文書と入力テキストの関連度を重みとし、損失に掛け合わせます。

図5: 入力テキストと正例文書の関連度を基にした重み
図5: 入力テキストと正例文書の関連度を基にした重み

今回、正例文書と入力テキストの重みは、教師ありSimCSE で計算した正例文書と入力テキストのコサイン類似度に基づいています。入力テキストは、クエリ・指示文・クエリ+指示文の3種類とし、各正例文書に対して

sim(p^+,クエリ), sim(p^+,指示文), sim(p^+,クエリ+指示文)

を計算します。

「クエリ<指示文<クエリ+指示文」の順番でコサイン類似度が強くなるようにするために、

sim(p^+,指示文)+0.1, sim(p^+,クエリ+指示文)+0.2

のように任意の値を付与し、補正しています。最終的には、各正例文書ごとに入力テキストの類似度を正規化することで重みを算出します。この重み付き対照学習によって、指示追従検索モデルがある正例文書に対して入力テキストごとの関連度を考慮することを目的としています。

重み付き対照学習:手法2

通常の対照学習では、クエリ+指示文と正例文書を対象として訓練していました。しかし、クエリや指示文の単体だけでも正例文書に関連しています。入力テキストと文書間のより詳細な関係性を捉えられるために、通常の対照学習を基にした重み付き対照学習の手法について検証します。重み付き対照学習における重みは、手法1と同様に教師ありSimCSEを用いて、各入力テキストと文書のコサイン類似度を計算し、各入力テキストごとに正規化することで算出します。

図6:「クエリ・指示文・クエリ+指示文」と正例文書を対象とした重み付き対照学習
図6:「クエリ・指示文・クエリ+指示文」と正例文書を対象とした重み付き対照学習

この重み付き対照学習は、「クエリ・指示文・クエリ+指示文」のいずれも正例文書に関連しているという考えを基にした訓練です。

マージンロス

指示追従検索では、指示文によって関連する文書は異なっており、特に、正例文書と負例文書の扱いが重要になってきます。そこで、クエリ+指示文に対して正例文書のコサイン類似度と負例文書のコサイン類似度の違いを基にしたマージンロスの手法について検証します。マージンロスは、正例文書との類似度とマージンが付与された負例文書との類似度の差が損失として訓練されます。今回は、クエリ+指示文と負例文書の類似度が高い程マージンの値を大きくし、負例文書と正例文書の類似度の差が大きくなるように以下の式で定義します。

L = max\{0, m(x, p^-) + sim(x, p^-)-sim(x,p^+)\}
m(x,p^-) = \alpha *\tau(x, p^-)+\beta

マージンの値におけるτは、教師ありSimCSEを用いて計測したクエリ+指示文と負例文書のコサイン類似度としています。また、実験では、α=0.4, β=0.1としています。

実験

今回の実験では、meta-llama/Llama-3.2-1B-Instructを用いました。指示追従検索モデルの訓練には、MSMARCOを基にクエリ、指示文、正例文書、負例文書を作成したInF-IRデータセットを使用し、評価用データセットには、Robust2004、Core2017、News2021の3つのデータセットから構成されるFollowIR[4]ベンチマークを使用しました。評価指標には、検索性能を測るために使用されるnDCG@5と指示文の有無によって文書の順位がどの程度変化するのかを測定するp-MRR[4]で評価しました。

実験結果

Core17 Core17 News21 News21 Robust04 Robust04
nDCG@5 p-MRR nDCG@5 p-MRR nDCG@5 p-MRR
対照学習 0.519 3.784 0.473 0.876 0.582 -1.210
重み付き対照学習(手法1) 0.454 -0.139 0.453 0.560 0.514 -4.369
重み付き対照学習(手法2) 0.496 4.086 0.484 1.502 0.579 -2.344
マージンロス 0.096 0.293 0.236 7.854 0.191 -0.467
対照学習+マージンロス 0.514 3.303 0.480 1.369 0.584 -0.482
重み付き対照学習(手法2)+マージンロス 0.504 3.630 0.474 1.117 0.571 -0.244

重み付き対照学習(手法2)と対照学習が、両評価指標において安定して高い性能を示しています。Core17およびNews21において、重み付き対照学習(手法2)は通常の対照学習と比較し、指示追従検索性能を測るp-MRRの値が改善しています。

一方、重み付き対照学習(手法1)は、p-MRRの性能を著しく下げる結果となり、マージンロスは、News21におけるp-MRRのみ高い性能を示しているものの安定した性能を示さないという結果になりました。このことから、nDCG@5とp-MRRの両方の性能を比較しながら見る必要があります。

また、対照学習および重み付き対照学習(手法2)にマージンロスを組み合わせた場合、通常の対照学習のみマージンロスを加えた方が性能が改善しています。

追加検証

指示追従検索タスクだけでなく、従来の検索タスクの違いを見るために、類似度推定タスクでも性能評価をしました。重み付き対照学習(手法2)では、通常の対照学習の性能よりも一貫して高い性能を示しています。また、平均性能において重み付き対照学習(手法1)は、通常の対照学習よりも高い性能を示しました。このことから、類似度推定タスクの性能が上がったとしても、指示追従検索タスクの性能は上がるとは限らないと言えます。

STS12 STS13 STS14 STS15 STS16 Avg.
対照学習 65.52 75.89 71.41 80.44 79.13 74.48
重み付き対照学習(手法1) 69.98 79.00 69.90 80.39 78.05 75.46
重み付き対照学習(手法2) 67.85 79.46 72.83 81.99 79.55 76.34
マージンロス 44.36 63.91 49.76 69.04 67.71 58.95

おわりに

今回は、指示追従検索モデルに関する研究として、指示追従検索モデルの性能改善に向けて取り組みました。クエリと文書の類似度を基にした従来の検索タスクとは異なり、指示追従検索タスクにおいては、期待している結果が出ず、タスク自体の難しさを感じました。指示追従検索は、新しい検索方法として今後研究が進められていくと思うので、その動向についても注目していきたいと思います!

本取り組みで使用した実装はこちらのリポジトリにまとめているので、ご興味がある方はこちらもご確認いただければと思います!

インターンシップでは、メンターである勝又さんをはじめ西鳥羽さん、木村さんにサポートしていただき、感謝の気持ちでいっぱいです。困ったことがあればいつも丁寧に教えてくださり、急な相談事に関してもすぐに対応していただきました。レトリバでインターンシップをすることができ、本当に良かったです!ありがとうございました!

参考文献

Discussion