A Day in the Life

日本語 BERT RetroMAE モデルの公開と、後続検索タスクでの評価

検索タスクにおいて、クエリと文書の意味的な類似性を捉えるニューラルネットワークを用いた検索は重要な技術である。しかし、従来のBERTなどの言語モデルは、主にトークンレベルのタスクで事前学習されており、文レベルの表現力が十分に発達していないという課題があった。この課題を解決するため、検索に特化した事前学習の新しい手法として RetroMAE: Pre-Training Retrieval-oriented Language Models Via Masked Auto-Encoder が提案されている。

本記事では、RetroMAEを用いて日本語BERTを事前学習したモデルを作成・公開し、後続の検索タスク(JMTEB)で評価を行っている。

model_name Avg. jagovfaqs
22k
jaqket mrtydi nlp_journal
abs_intro
nlp_journal
title_abs
nlp_journal
title_intro
bert-base-japanese-v3 0.7266 0.6532 0.6236 0.4521 0.8774 0.9732 0.7803
bert-base-japanese-v3
retromae

0.7352 0.6631 0.6632 0.4526 0.8893 0.9722 0.7708
ruri-pt-base
retromae

0.7397 0.6678 0.6691 0.4667 0.8931 0.9605 0.7812

結果として、ほぼ全てのスコアにおいて性能向上が確認されており、RetroMAEの有益性が確認された。また学習方法も、教師なしでテキストのみを与えれば良いという手軽さも実用性が高いであろう。

RetroMAE について

RetroMAEの特徴は、Masked Auto-Encoderの手法を採用しながら、以下の3つの設計を取り入れた点である。

  1. 入力文に対して異なるマスクを適用する新しいワークフロー
  2. エンコーダーとデコーダーで非対称な構造を採用
  3. エンコーダーとデコーダーで異なるマスク率を使用

これらの工夫により、文書の意味をより深く理解し、効果的な検索を可能にする表現学習を実現している。実際の評価においても、BEIRやMS MARCOなどのベンチマークで優れた性能を示している。また高性能のマルチリンガル密ベクトルモデルの BAAI/bge-m3RetroMAE を用いた事前学習を行なっているという実績もある。

なお、RetroMAE はさらなる進化的な手法である RetroMAE v2: Duplex Masked Auto-Encoder For Pre-Training Retrieval-Oriented Language Models (DupMAE) も提案されているが、本内容では RetroMAE を扱っている。

異なるマスクを適用するワークフロー

RetroMAE では、入力文に対して2つの異なるマスクを適用する。1つ目のマスクを適用した入力からエンコーダーが文埋め込みを生成し、2つ目のマスクを適用した入力とその文埋め込みを組み合わせてデコーダーが元の文を復元する。

RetroMAE のエンコーダ・デコーダ

エンコーダーとデコーダーで非対称な構造

RetroMAEは、エンコーダーとデコーダーで意図的に非対称な構造を採用している。エンコーダーには入力文の意味を十分に捉えるため、BERTのトランスフォーマー(12層)を使用する。一方、デコーダーは極めてシンプルな1層のトランスフォーマーのみを採用している。このシンプルなデコーダー構造により、文の復元タスクがより困難になり、結果としてエンコーダーがより質の高い文埋め込みを生成可能に学習される。

さらに、1層のデコーダーには Enhanced decoding という特殊な仕組みが導入されている。これは、文埋め込みと位置埋め込みを組み合わせたクエリと、文埋め込み・トークン埋め込み・位置埋め込みを組み合わせたコンテキストの2つを用意し、位置に応じた attention mask を適用する方式である。この仕組みにより、すべての入力トークンをデコーダの復元対象として使用でき、かつ各トークンが独自のコンテキストから復元されるようになる。これにより、限られたデコーダー層数でも効率的な学習が可能となっている。

エンコーダーとデコーダーで異なるマスク率を使用

エンコーダーには適度なマスク率(15〜30%)を適用し、入力文の大部分の情報を保持できるようにしている。一方、デコーダーには積極的なマスク率(50〜70%)を適用する。この高いマスク率により、デコーダーは入力のみでは十分な復元が難しくなり、エンコーダーが生成した文埋め込みに大きく依存せざるを得なくなる。結果として、エンコーダーはより深い意味理解を強制される仕組みとなっている。

RetroMAE 日本語モデルの事前学習

元論文では、英語のwikipedia, BookCorpus, MS Marcoをデータセットとして学習させている。そのため、日本語データセットとしては類似タスクを含む、以下のデータセットを用いた。

wikipedia, jawiki-books はパラグラフのみ(タイトルは含まず)、MQAは query と doc を連結した文章、JSNLIは空白を削除した文章を用いている。

また、ゼロの重みから学習を行うのではなく、RetroMAEを学習させるためのモデルとして tohoku-nlp/bert-base-japanese-v3cl-nagoya/ruri-pt-baseを用いた。ruri-pt-base は bert-base-japanese-v3 を元に、対照学習を行なった事前学習モデルであり、その過程で MLM のデコーダ層が失われるため、デコーダ層の重みとしてbert-base-japanese-v3からコピーを行ったモデルを利用した。

学習用スクリプトはOSS(MITライセンス)で公開されている、retromae_pretrain を用いた。学習パラメータはエンコーダのマスク率を 30%、デコーダのマスク率を50%としている。その他 Trainer のハイパーパラメータは以下である。

  "learning_rate": 1e-4,
  "num_train_epochs": 2,
  "per_device_train_batch_size": 16,
  "gradient_accumulation_steps": 32,
  "warmup_ratio": 0.05,
  "lr_scheduler_type": "cosine",
  "bf16": true,
  "dataloader_drop_last": true,
  "dataloader_num_workers": 12

これらを用いて、データセットの (A) のみと (A) + (B) を使って RetroMAE 事前学習モデルを作成した。

後続検索タスクでの評価

後続検索タスクとして、日本語SPLADEモデルを mmacro データセットのみで学習させて評価を行った。パラメータは japanese-splade-base-v1-mmarco-only の model のエポック数を12から10に削減し、model_name を今回評価するものに差し替えたものである。

また、評価には JMTEBスパースベクトルを評価できるように変更したfork版を用い、検索タスク(retrieval)で行った。

評価結果スコアは以下である。

model_name Avg. jagovfaqs
22k
jaqket mrtydi nlp_journal
abs_intro
nlp_journal
title_abs
nlp_journal
title_intro
bert-base-japanese-v3 0.7266 0.6532 0.6236 0.4521 0.8774 0.9732 0.7803
bert-base-japanese-v3
retromae(A)
0.7361 0.6655 0.6621 0.4557 0.888 0.9604 0.7848
ruri-pt-base
retromae(A)
0.737 0.6657 0.6541 0.4608 0.8823 0.9768 0.7821
bert-base-japanese-v3
retromae(A+B)
0.7352 0.6631 0.6632 0.4526 0.8893 0.9722 0.7708
ruri-pt-base
retromae(A+B)
0.7397 0.6678 0.6691 0.4667 0.8931 0.9605 0.7812

ほぼ全ての評価において、RetroMAE で学習させていないモデルよりも、RetroMAEで学習させたモデルの方がスコアが高いことが計測された。最も評価が良かった ruri-pt-base retromae(A+B) においては、bert-base-japanese-v3 よりも約2%ほど性能が向上した。

また学習データセットも (A) のみよりも、基本的に(A) + (B) 両方のデータセットを学習させた方がスコアが高かった。これは、さらにデータセットを追加したり、特定ドメインのテキストを学習させることで、性能向上に寄与しそうな結果である。

なお、(A+B)のデータセットで学習させた RetroMAE モデルを、HuggingFace で公開している。

おわりに

本記事では、検索タスクに特化した事前学習手法であるRetroMAEを日本語BERTモデルに適用し、その効果を検証した。後続タスクのSPLADEモデルでの評価の結果、RetroMAEで学習させたモデルは、ベースラインとなるbert-base-japanese-v3と比較して、ほぼすべての検索タスクで性能向上が確認された。特に、対照学習済みのruri-pt-baseをベースに、Wikipedia、書籍、質問応答データなど複数のデータセットで学習させたモデルでは、平均約2%の性能向上が達成された。

また、RetroMAEの利点として、教師なしでテキストデータのみを用いて学習できる手軽さも注目に値する。これは、特定ドメインや業務向けにモデルをカスタマイズする際にも有用であり、実用性が高いと言える。今後は、さらなる学習データの追加や、特定ドメインのテキストを用いた追加学習による性能向上の可能性も期待できる。

なお作成したRetroMAEモデルはHuggingFace上で公開しており利用可能となっている。本記事が、日本語の検索タスクの性能向上に貢献できれば幸いである。

記事の一覧 >

関連するかもエントリー

SPLADE モデルの作り方・日本語SPLADEテクニカルレポート
近年、大規模言語モデル(LLM)の台頭により、情報検索の重要性が増している。特に、Retrieval-Augmented Generation(RAG)などの応用分野では、効率的で高精度な検索システムが求められている。ニューラルネットワークを用いた検索モデルの分野では、密ベクトル...
近年、大規模言語モデル(LLM)の台頭により、情報検索の重要性が増している。特に、Retrieval-Augmented Generatio...
日本語 Reranker 作成のテクニカルレポート
本記事は、日本語の reranker (CrossEncoder) モデルを作成における技術レポートである。reranker とは何か、といった内容は別記事 日本語最高性能のRerankerをリリース / そもそも Reranker とは? を参照のこと。なお今回作ったモデル一覧...
本記事は、日本語の reranker (CrossEncoder) モデルを作成における技術レポートである。reranker とは何か、とい...
高性能な日本語SPLADE(スパース検索)モデルを公開しました
文章検索用途で高性能なSPLADE(スパースベクトル)モデルの日本語版を作成し、公開しました。大量の文章からの検索タスク(retrieval)や、質問に関連する文章を並べ替えるリランキングタスクで、最近の高性能密ベクトルモデルである multilingual-e5-large、r...
文章検索用途で高性能なSPLADE(スパースベクトル)モデルの日本語版を作成し、公開しました。大量の文章からの検索タスク(retrieval...