Untitled

生成日:

Untitled

Language Models are Universal Embedders

論文の面白いところ

この論文の焦点は、埋め込みモデルを個別用途ごとに作るのではなく、一つの言語モデルから広く使える表現を取り出す点にある。従来の強い埋め込み器は BERT 型のエンコーダを用いることが多いが、自然言語とコードを同時に扱う公開モデルは限られる。著者らは、BLOOM のような多言語デコーダ専用モデルに目を向ける。生成用のモデルを、文やコードの意味を表すベクトルの生成器として使うわけである。方法は複雑な指示プロンプトに頼らず、入力の先頭と末尾に特殊トークンを足し、末尾トークンの隠れ状態を埋め込みとして用いる。さらに、英語など単一言語の対照学習が他言語の埋め込み空間も整えるかを、比較的丁寧に切り分けている。実用上は、十分なペアデータがない言語にも検索や類似度判定を広げられる可能性を示す点が有用である。ただし、最良の英語専用埋め込み器に勝つことを主目的にはしていない。

問題設定

埋め込みは、文書検索、意味的類似度、分類、コード検索などで使われる基本部品である。大規模言語モデルを使うシステムでも、外部知識や記憶を検索するために埋め込みが必要になる。用途が増えるほど、英語用、中国語用、コード用、検索用、分類用と別々のモデルを持つ管理は煩雑になる。そこで論文は、一つのモデルが複数の言語と複数のタスクをまたいで使えるかを問う。対象には、英語、中国語、アラビア語、インドネシア語の自然言語と、Java などのプログラミング言語が含まれる。タスクは、問い合わせと文書を結びつける非対称タスクと、二つの文やコードの類似性を見る対称タスクに分けられる。特に難しいのは、微調整データがない言語、または事前学習に含まれていない言語である。論文は、単一言語で微調整したモデルを多言語・多タスクの評価にかけ、この問いを実験的に扱っている。

提案手法

基盤モデルには主に BLOOM 系列を用いる。入力列の前後に、問い合わせか文書かを表す特殊トークンを加え、モデルの出力のうち末尾トークン [EOS] の状態を埋め込みベクトルとする。学習には InfoNCE 型の対照損失を用い、正例ペアの類似度を上げ、負例との類似度を下げる。検索向けの非対称データには MS MARCO と mMARCO、自然言語の対称データには SNLI と MNLI の翻訳版を使う。コード側では、CodeSearchNet を非対称データ、BigCloneBench を対称データとして用いる。微調整では破滅的忘却を避けるため、全パラメータ更新ではなく LoRA を採用する。評価は、訓練言語と評価言語をずらし、訓練タスクと評価タスクもずらして行う。これにより、単に同じ分布に強いだけなのか、言語やタスクを越えた表現を得ているのかを見分ける構成になっている。

結果

BLOOM-1b1 の主実験では、非対称データと対称データを合わせて学習した設定が、全体平均で最も安定した。非対称データだけで学習したモデルは、検索には強いが、類似度判定や分類に偏りが残る。対称データだけで学習したモデルは、検索系の性能が大きく落ちる。両方を混ぜると、検索性能は少し下がる場合があるものの、全体としてはタスク汎化が改善する。多言語性については、自然言語のあいだでは、ある言語で微調整したモデルが他言語にも比較的よく移る。Java では例外的な挙動があり、著者らは CodeSearchNet や BigCloneBench の性質が影響した可能性を挙げている。モデルサイズを 1.1B から 3B、7.1B に大きくすると、多くの評価で性能が上がる。MTEB 英語部分では最上位の専用エンコーダには届かないが、デコーダ専用モデルとしては競争力のある値を示す。CodeSearchNet では、提案設定の BLOOM モデルが CodeBERT や GraphCodeBERT を上回る平均値を示した。未事前学習言語に対しては限界もあるが、モデルを大きくすると BUCC のドイツ語・英語、ロシア語・英語の対応探索でも改善が見られた。

具体例