概要
こんにちは、SB Intuitions株式会社インターンの塚越です。
先日、日本語・英語合わせて約4.4T tokensを学習した日本語ModernBERTというモデルを構築・公開しました。
公開したモデルがどんなモデル、どんな性能なのかについては日本語ModernBERTの開発: 開発と評価編 (1/3)をご覧ください。
本記事では、日本語ModernBERTの開発において実施した性能向上のための取り組みや、小規模言語モデル(Small Language Model: SLM)との性能比較、分析結果についてお話しします。
性能向上のための取り組みと分析
我々が開発した日本語ModernBERTは、オリジナルのModernBERTから実験設定を変更している箇所があります。
- 事前学習 (日英3.50T tokens)
- 日英2言語を扱うこともあり、オリジナルのModernBERTの2倍程度の規模を学習
- マスク率は30%でオリジナルと同様
- 系列長拡張: Phase 1 (高品質日英400B tokens)
- 日本語・英語における高品質データに絞って学習
- 系列長拡張: Phase 2 (高品質日本語150B tokens * 3 epoch = 450B tokens)
- 日本語の高品質データのみで仕上げの学習
- マスク率を15% (オリジナルは30%) に設定
- epoch数を3に設定 (オリジナルは1)
まず、130Mモデルを対象に、性能を観察しながら複数の実験条件を検討しました。
評価データセットは前回の記事と同じく、以下の12種類を用いました。
- 知識ベースのタスク: JCommonsenseQA(JComQA)、RCQA
- 日本語の統語的評価タスク: JCoLA
- 自然言語推論(NLI)タスク: JNLI、JSICK、JSNLI、京大 RTE(KU RTE)
- 意味的テキスト類似性(STS)タスク: JSTS
- 各種分類タスク: Livedoor ニュースコーパス(Livedoor)、LLM-jp Toxicity(Toxicity)、MARC-ja、WRIME v2(WRIME)
性能改善の目標としては、「baseサイズのモデル(今回の場合はModernBERT-Ja-130M)で、既存largeサイズモデルと同等の性能を達成する」を掲げ、複数の工夫を加えました。 以下でそれらについて記載します。
「系列長拡張: Phase 2」におけるマスク率
マスク率とは、マスク穴埋めタスクによる事前学習において、入力系列のうちのどの程度の割合でトークンを"穴"にするかを制御する値です。 オリジナルのBERTでは、マスク率は15%に設定されていましたが、近年、このマスク率の値を15%より増大させることで、学習効率が改善するという報告がされています [Wettig+ 2023]。
マスク穴埋めタスクでは、入力系列中の"穴"になっている箇所のみを予測対象とするため、マスク率が小さいと"穴"の数が少なくなります。 そのため、マスク率が小さい場合、モデルが穴埋めしなければいけないトークンの数が少なくなり、結果として、モデルの学習が遅くなるというのがこの論文の主張です。 これに対し、マスク率をオリジナルの15%より大きな30%や40%に設定することで、学習効率が改善すると報告されています。
しかし、マスク率が30%の場合、入力系列長が100であれば、そのうちの30個程度のトークンが <mask>
に置き換えられていることになります。
系列長が1000の場合は300個、系列長が8000の場合は2400個のトークンが <mask>
に置き換えられることになります。
<mask>
トークンは自然文を扱っている場合には現れない特殊トークンですが、学習中にこのような特殊トークンが大量に現れるにも関わらず、推論時には現れないという状況は、モデルの訓練時と推論時の設定が変化することになってしまい、性能への悪影響が懸念されます。
実際に、この「訓練時の入力分布」と「テスト時の入力分布」のミスマッチを、マスク率のスケジューリング(高→低)によって改善する研究も存在します [Ankner+ 2024]。
そこで、モデル開発のフェーズにおいて最も推論時に近いフェーズである、「系列長拡張: Phase 2」において、マスク率を変化させることでベンチマークでの性能がどのように変化するかを観察しました。 今回はマスク率のスケジューリングなど多少モデルの開発工程が複雑になる工夫は用いず、シンプルにマスク率を変化させることで、モデル訓練時とテスト時のギャップの解消を狙いました。
実験設定としては、「系列長拡張: Phase 1」まで終了した状態の130Mモデルを対象に、150B tokensの高品質日本語コーパスを用いて、「系列長拡張: Phase 2」を実施します。 この時、「系列長拡張: Phase 2」におけるマスク率を、オリジナルのBERTと同じ15%に設定した場合と、オリジナルのModernBERTと同様の30%に設定した場合の2通りを比較しました。
結果は以下の表のとおりです。
マスク率 | 平均 | JComQA (acc) | RCQA (acc) | JCoLA (acc) | JNLI (acc) | JSICK (acc) | JSNLI (acc) | 京大RTE (acc) | JSTS (Spearman) | Livedoor (acc) | LLMjp Toxicity (acc) | MARC‑ja (acc) | WRIME (acc) |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
30% | 88.54 | 89.58 | 85.28 | 82.31 | 92.39 | 86.32 | 93.62 | 64.44 | 89.09 | 97.45 | 92.02 | 96.47 | 93.52 |
15% | 88.70 | 90.21 | 85.45 | 83.58 | 91.54 | 86.06 | 93.46 | 64.44 | 89.09 | 97.26 | 91.46 | 96.36 | 93.64 |
結果から、平均性能については、マスク率を15%と小さくした方が性能が高いことがわかりました。 特に、日本語の統語的評価タスクであるJCoLAの性能が1.2ポイント程度改善しました。 他のタスクで性能の低下が見られたものもありましたが、極端に低下したわけではなかったため、これ以降 「系列長拡張: Phase 2」の訓練はマスク率を15%に設定して行うこととしました。
「系列長拡張: Phase 2」における訓練トークン数
上記工夫を加えた時点での130Mモデルと、一部の既存公開モデルの性能を比較しました。
モデル | パラメータ数 | 平均 | JComQA (acc) | RCQA (acc) | JCoLA (acc) | JNLI (acc) | JSICK (acc) | JSNLI (acc) | 京大RTE (acc) | JSTS (Spearman) | Livedoor (acc) | LLMjp Toxicity (acc) | MARC‑ja (acc) | WRIME (acc) |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
130Mモデル (マスク率15%, 1エポック) | 130M | 88.70 | 90.21 | 85.45 | 83.58 | 91.54 | 86.06 | 93.46 | 64.44 | 89.09 | 97.26 | 91.46 | 96.36 | 93.64 |
東北大BERT-large v2 | 311M | 88.36 | 86.93 | 84.81 | 82.89 | 92.05 | 85.33 | 93.32 | 64.60 | 89.11 | 97.64 | 94.38 | 96.46 | 92.77 |
日本語LUKE-large | 414M | 88.94 | 88.01 | 84.84 | 84.34 | 92.37 | 86.14 | 94.32 | 64.68 | 89.30 | 97.53 | 93.71 | 96.49 | 95.59 |
表から、我々のモデルはJComQAなど知識系タスクでは高い性能を達成しているものの、JCoLAやJNLIといった「日本語の理解力」を問うタスクにおいては既存モデルよりも性能が低く、性能改善の余地があることがわかります。
先述のマスク率に関する実験から、日本語に関する能力を改善するには、高品質日本語データでの仕上げの学習を行う「系列長拡張: Phase 2」に手を入れるのが筋が良さそうです。 そこで、単純にエポック数を増やすことで、「系列長拡張: Phase 2」の訓練トークン数を増やす工夫を試すことにしました。
これは、モデル訓練中の訓練・開発セット損失を測定したところ、どのモデルサイズ・フェーズにおいても、基本的には性能が改善し続ける様子が見られていたため、訓練量を増やせば増やすほど改善してくれるのではという期待が持てたためです。
参考までに、以下は「事前学習」フェーズにおける、開発セット損失の推移を示します。
それでは、以下に、「系列長拡張: Phase 2」における訓練エポック数を変化させた時の性能を示します。
エポック数 | パラメータ数 | 平均 | JComQA (acc) | RCQA (acc) | JCoLA (acc) | JNLI (acc) | JSICK (acc) | JSNLI (acc) | 京大RTE (acc) | JSTS (Spearman) | Livedoor (acc) | LLMjp Toxicity (acc) | MARC‑ja (acc) | WRIME (acc) |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1エポック | 132M | 88.70 | 90.21 | 85.45 | 83.58 | 91.54 | 86.06 | 93.46 | 64.44 | 89.09 | 97.26 | 91.46 | 96.36 | 93.64 |
3エポック | 132M | 88.95 | 91.01 | 85.28 | 84.18 | 92.03 | 86.61 | 94.01 | 65.56 | 89.20 | 97.42 | 91.57 | 96.48 | 93.99 |
東北大BERT-large v2 | 311M | 88.36 | 86.93 | 84.81 | 82.89 | 92.05 | 85.33 | 93.32 | 64.60 | 89.11 | 97.64 | 94.38 | 96.46 | 92.77 |
日本語LUKE-large | 414M | 88.94 | 88.01 | 84.84 | 84.34 | 92.37 | 86.14 | 94.32 | 64.68 | 89.30 | 97.53 | 93.71 | 96.49 | 95.59 |
表から、全体的に性能が向上している様子が確認できます。 特に、JCoLAの性能がさらに向上(+0.6ポイント)し、JNLIをはじめとする言語理解タスクの性能も軒並み改善しており、高品質な日本語を重点的に学習することの重要性が確認できました。
訓練フェーズごとの性能の変遷
次に、各モデルサイズについて、フェーズごとに性能がどのように変化したかを以下の図に示します。 図には開発中の1.4Bモデルも含めています。 なお、詳細な結果は折りたたみに記載してあります。
フェーズごとの性能の表
|モデル|フェーズ|平均|JComQA (acc)|RCQA (acc)|JCoLA (acc)|JNLI (acc)|JSICK (acc)|JSNLI (acc)|京大RTE (acc)|JSTS (Spearman)|Livedoor (acc)|LLMjp Toxicity (acc)|MARC‑ja (acc)|WRIME (acc)| |:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:| |30M|事前学習|84.34|76.35|81.49|77.48|85.03|82.71|91.00|60.65|83.81|96.20|91.57|95.44|90.33| ||系列長拡張: Phase 1|84.07|77.07|81.43|75.98|85.27|82.93|91.00|60.56|83.76|96.53|88.99|95.42|89.95| ||系列長拡張: Phase 2|85.67|80.95|82.35|78.85|88.69|84.39|91.79|61.13|85.94|97.20|89.33|95.87|91.61| | | | | | | | | | | | | | | | | |70M|事前学習|85.02|80.21|82.39|75.95|87.30|82.52|91.99|60.48|85.51|97.20|88.76|95.96|91.95| ||系列長拡張: Phase 1|85.30|81.27|82.82|76.92|87.03|83.68|92.35|60.81|85.06|96.93|89.55|95.90|91.33| ||系列長拡張: Phase 2|86.77|85.65|83.51|80.26|90.33|85.01|92.73|60.08|87.59|96.34|91.01|96.13|92.59| | | | | | | | | | | | | | | | | |100M|事前学習|87.25|86.83|84.53|78.69|91.09|85.69|93.41|60.56|88.01|97.75|91.69|96.29|92.42| ||系列長拡張: Phase 1|87.50|87.38|84.59|80.10|90.90|85.80|93.61|60.97|88.46|97.80|91.35|96.32|92.70| ||系列長拡張: Phase 2|88.95|91.01|85.28|84.18|92.03|86.61|94.01|65.56|89.20|97.42|91.57|96.48|93.99| | | | | | | | | | | | | | | | | |300M|事前学習|88.32|90.88|85.40|80.83|92.40|86.85|94.31|60.48|89.48|97.42|91.01|96.37|94.77| ||系列長拡張: Phase 1|88.36|90.97|85.54|80.20|92.30|85.84|94.08|62.34|89.68|97.23|91.69|96.38|94.13| ||系列長拡張: Phase 2|89.83|93.53|86.18|84.81|92.93|86.87|94.48|68.79|90.53|96.99|91.24|96.39|95.23| | | | | | | | | | | | | | | | | |1.4B|事前学習|90.31|95.41|86.04|84.19|93.02|86.71|95.05|69.68|90.17|97.91|94.27|96.32|95.00| ||系列長拡張: Phase 1|90.38|95.19|86.23|84.54|92.79|87.14|94.91|70.97|90.27|97.64|93.71|96.20|94.98| ||系列長拡張: Phase 2|91.36|96.46|86.38|86.32|93.10|87.62|95.31|76.21|90.69|97.42|94.38|96.43|95.95|
表から、基本的にはフェーズを重ねるごとに性能が向上していますが、「事前学習」→「系列長拡張: Phase 1」ではあまり性能が改善していない様子も確認できます。 「「系列長拡張: Phase 1」」は日英高品質データセットで系列長を伸ばした上で訓練を行うフェーズですが、日本語性能の改善には日本語を中心に学習することがやはり重要なようです。
小規模LMとの性能比較
近年、多くの日本語小規模言語モデルが公開されています。 我々SB Intuitions株式会社も、Sarashina 2.2という0.5B, 1B, 3Bと小規模な言語モデルを公開しています。 これらの小規模言語モデルは、基本的には文生成用途での利用が想定されていますが、適切にモデルを微調整することで、分類タスクに適応させることも可能です。
具体的には、学習可能な層を追加し、分類タスクであれば分類確率を出力するようにモデルを訓練し、回帰タスクであれば直接スコアを実数値で出力するようにモデルを訓練します。 この時、学習可能な追加の層に入力する、文章全体を表現するベクトルとして、文章末尾の特殊記号に対応する位置のベクトル表現を用います。 これは、ほとんどの小規模言語モデル内部の注意機構がleft-to-rightな動作を想定しているため、文章全体を考慮できるのが系列末尾のみだからです。
エンコーダ型のモデルは、分類・回帰タスクにおいて文の双方向の文脈を考慮することができるため、左から右にしか文脈を考慮できない言語モデルと異なり、言語理解が得意な傾向にあると言われています。
一方で、モデルサイズを同じにした場合に、SLMとエンコーダ型モデルの性能がそこまで変わらないのであれば、エンコーダ型モデルをわざわざ開発せずとも、SLMの構築だけしてそれを転用すればOKということになりそうです。 そこで、このような性能の違いが実際に観察されるのかどうか、そして違いがあるとすればその乖離はどの程度かを実際に評価しました。
比較実験
既存の小規模LMを分類モデルに転用したとき、どの程度の性能が出るかを網羅的に評価し、今回開発した日本語ModernBERTとの性能比較を行いました。 実験には、以下のモデルを用いました:
- sbintuitions/sarashina2.1-1b
- pfnet/plamo-2-1b
- Qwen/Qwen2-1.5B-Instruct
- LLM-jp-3シリーズ
- llm-jp/llm-jp-3-150m
- llm-jp/llm-jp-3-150m-instruct2
- llm-jp/llm-jp-3-150m-instruct3
- llm-jp/llm-jp-3-440m
- llm-jp/llm-jp-3-440m-instruct2
- llm-jp/llm-jp-3-440m-instruct3
- llm-jp/llm-jp-3-980m
- llm-jp/llm-jp-3-980m-instruct2
- llm-jp/llm-jp-3-980m-instruct3
- llm-jp/llm-jp-3-1.8b
- llm-jp/llm-jp-3-1.8b-instruct2
- llm-jp/llm-jp-3-1.8b-instruct3
- Sarashina 2.2シリーズ
評価方法は今までの実験と同様で、系列長や学習率・エポック数の探索範囲・調整の手続きも同じです。
注意点ですが、今回は一切文生成をしていません。 行なっていることはSLMを分類モデルとしてfine-tuningすることのみであり、ラベルの生成やプロンプトチューニングなどは全く行っていません。
fine-tuningされたSLMは、文を入力として、分類タスクであればラベルの確率分布を出力し、回帰タスクであれば実数のスコアを直接出力します。 その点で、あらゆる評価においてテキスト生成を行う昨今のLLMの評価とは事情が異なりますが、エンコーダ型モデルの評価方法に合わせているためとご理解ください。
実験の結果を以下の図に示します。 横軸がパラメータ数を、縦軸が12タスクの平均性能を表します。横軸は対数軸です。 なお、実験結果の量が多いため、個別のタスクの性能を含む完全な実験結果の表を折りたたみに記載しています。
SLMとの性能比較
モデル | パラメータ数 | 平均 | JComQA (acc) | RCQA (acc) | JCoLA (acc) | JNLI (acc) | JSICK (acc) | JSNLI (acc) | 京大RTE (acc) | JSTS (Spearman) | Livedoor (acc) | LLMjp Toxicity (acc) | MARC-ja (acc) | WRIME (acc) |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ModernBERT-Ja-30M | 37M | 85.67 | 80.95 | 82.35 | 78.85 | 88.69 | 84.39 | 91.79 | 61.13 | 85.94 | 97.20 | 89.33 | 95.87 | 91.61 |
ModernBERT-Ja-70M | 70M | 86.77 | 85.65 | 83.51 | 80.26 | 90.33 | 85.01 | 92.73 | 60.08 | 87.59 | 96.34 | 91.01 | 96.13 | 92.59 |
ModernBERT-Ja-130M | 132M | 88.95 | 91.01 | 85.28 | 84.18 | 92.03 | 86.61 | 94.01 | 65.56 | 89.20 | 97.42 | 91.57 | 96.48 | 93.99 |
ModernBERT-Ja-310M | 315M | 89.83 | 93.53 | 86.18 | 84.81 | 92.93 | 86.87 | 94.48 | 68.79 | 90.53 | 96.99 | 91.24 | 96.39 | 95.23 |
ModernBERT-Ja-1.4B | 1.44B | 91.36 | 96.46 | 86.38 | 86.32 | 93.10 | 87.62 | 95.31 | 76.21 | 90.69 | 97.42 | 94.38 | 96.43 | 95.95 |
sbintuitions/sarashina2.1-1b | 1.22B | 89.03 | 92.06 | 84.53 | 81.23 | 90.70 | 85.47 | 94.12 | 68.79 | 89.11 | 97.77 | 93.82 | 96.42 | 94.39 |
pfnet/plamo-2-1b | 1.29B | 87.37 | 87.86 | 83.59 | 80.08 | 91.03 | 84.31 | 93.61 | 60.48 | 88.41 | 97.37 | 92.47 | 96.19 | 93.09 |
Qwen/Qwen2-1.5B-Instruct | 1.54B | 87.68 | 86.34 | 84.67 | 79.18 | 91.27 | 85.53 | 94.32 | 66.13 | 89.01 | 96.85 | 90.79 | 96.21 | 91.81 |
llm-jp/llm-jp-3-150m | 101M | 84.81 | 75.62 | 81.84 | 77.89 | 86.84 | 83.28 | 91.54 | 60.73 | 84.41 | 96.61 | 91.57 | 96.03 | 91.38 |
llm-jp/llm-jp-3-150m-instruct2 | 101M | 84.57 | 75.05 | 81.60 | 77.62 | 86.90 | 83.50 | 91.54 | 60.32 | 84.52 | 96.50 | 90.34 | 96.00 | 90.97 |
llm-jp/llm-jp-3-150m-instruct3 | 101M | 84.66 | 75.26 | 81.82 | 77.58 | 86.94 | 83.40 | 91.59 | 60.65 | 84.74 | 96.93 | 90.56 | 95.96 | 90.49 |
llm-jp/llm-jp-3-440m | 345M | 86.97 | 85.09 | 83.43 | 80.11 | 89.02 | 84.17 | 93.03 | 61.13 | 87.57 | 97.39 | 93.03 | 96.27 | 93.42 |
llm-jp/llm-jp-3-440m-instruct2 | 345M | 86.92 | 85.04 | 83.09 | 80.17 | 89.29 | 84.09 | 92.97 | 61.69 | 87.30 | 97.50 | 92.70 | 96.26 | 92.94 |
llm-jp/llm-jp-3-440m-instruct3 | 345M | 86.67 | 85.29 | 82.98 | 80.06 | 89.53 | 83.79 | 93.01 | 60.08 | 87.31 | 97.15 | 91.57 | 96.24 | 92.99 |
llm-jp/llm-jp-3-980m | 837M | 88.33 | 89.74 | 84.27 | 81.41 | 91.18 | 85.12 | 93.80 | 64.60 | 88.95 | 97.58 | 92.58 | 96.42 | 94.28 |
llm-jp/llm-jp-3-980m-instruct2 | 837M | 88.26 | 90.01 | 84.28 | 81.17 | 91.34 | 85.04 | 93.83 | 64.35 | 88.96 | 97.42 | 92.36 | 96.36 | 94.05 |
llm-jp/llm-jp-3-980m-instruct3 | 837M | 88.41 | 89.81 | 84.31 | 80.81 | 91.39 | 84.85 | 93.90 | 66.45 | 88.98 | 97.67 | 91.91 | 96.36 | 94.43 |
llm-jp/llm-jp-3-1.8b | 1.66B | 89.11 | 92.71 | 84.46 | 82.88 | 91.96 | 86.21 | 94.46 | 66.85 | 89.40 | 98.02 | 91.01 | 96.48 | 94.83 |
llm-jp/llm-jp-3-1.8b-instruct2 | 1.66B | 89.51 | 92.23 | 84.54 | 82.63 | 91.65 | 86.25 | 94.27 | 70.89 | 89.50 | 97.56 | 93.37 | 96.51 | 94.73 |
llm-jp/llm-jp-3-1.8b-instruct3 | 1.66B | 89.41 | 92.28 | 84.25 | 82.77 | 91.76 | 85.51 | 94.37 | 70.81 | 89.26 | 97.26 | 93.26 | 96.53 | 94.92 |
sbintuitions/sarashina2.2-0.5b | 793M | 88.38 | 90.22 | 84.69 | 81.02 | 90.90 | 85.54 | 93.72 | 65.08 | 88.68 | 97.37 | 93.03 | 96.34 | 93.97 |
sbintuitions/sarashina2.2-0.5b-instruct-v0.1 | 793M | 88.33 | 90.17 | 84.44 | 80.09 | 91.11 | 85.21 | 93.76 | 66.21 | 88.70 | 97.37 | 92.25 | 96.42 | 94.26 |
sbintuitions/sarashina2.2-1b | 1.41B | 88.77 | 91.64 | 84.44 | 81.15 | 90.99 | 85.21 | 94.14 | 67.26 | 88.96 | 97.72 | 93.37 | 96.44 | 93.94 |
sbintuitions/sarashina2.2-1b-instruct-v0.1 | 1.41B | 89.08 | 92.19 | 84.76 | 81.46 | 90.99 | 85.48 | 94.22 | 69.11 | 89.05 | 97.53 | 93.60 | 96.33 | 94.19 |
sbintuitions/sarashina2.2-3b | 3.36B | 90.28 | 95.12 | 85.21 | 83.67 | 92.84 | 85.27 | 94.88 | 72.26 | 89.79 | 97.91 | 95.06 | 96.39 | 94.98 |
sbintuitions/sarashina2.2-3b-instruct-v0.1 | 3.36B | 90.83 | 95.59 | 85.81 | 84.06 | 92.76 | 86.17 | 94.93 | 78.06 | 89.93 | 97.45 | 93.48 | 96.31 | 95.38 |
パラメータ数のカラムに記載の値は、入力トークン埋め込みと各層のパラメータ数の総数です。
まず、日本語ModernBERTのモデルサイズごとに結果を比較します。
- 30Mモデル (平均性能: 85.67)
- llm-jp/llm-jp-3-150mなど150M程度のSLMを上回る性能を示しました
- 一方でllm-jp/llm-jp-3-440mなど400M程度のモデルの性能には及びませんでした
- 5倍程度のパラメータ数のSLMと同等性能であると言えそうです
- 70Mモデル (平均性能: 86.77)
- llm-jp/llm-jp-3-440mなど400M程度のモデルと同等の性能を示しました
- 5倍程度のパラメータ数のSLMと同等性能であると言えそうです
- 130Mモデル (平均性能: 88.95)
- llm-jp/llm-jp-3-980mやsbintuitions/sarashina2.2-1bなど1B程度のモデルと同等以上の性能を示しました
- 一方でllm-jp/llm-jp-3-1.8bなど1.5B以上のモデルには及びませんでした
- 6~8倍程度のパラメータ数のSLMと同等性能であると言えそうです
- 310Mモデル (平均性能: 89.83)
- llm-jp/llm-jp-3-1.8bなど2B以下のすべてのモデルの性能を上回りました
- 6倍程度のパラメータ数のSLMと同等性能であると言えそうです
- 1.4Bモデル (平均性能: 91.36)
- sbintuitions/sarashina2.2-3bを含むすべてのモデルの性能を上回りました
以上から、モデルサイズを加味して性能を比較することで、おおまかに「あるサイズの日本語ModernBERTは5〜7倍のパラメータサイズのSLMと同等以上の性能を持つ」ということが言えます。
モデルパラメータの数は、そのまま推論時の効率に影響します。 モデルパラメータ数が小さいほうが推論は高速に実行でき、それはランニングコストを下げることにつながるため、同じ性能を達成するためのモデルサイズは小さい方が実用上有用です。 今後分類モデルをシステムに組み込むことがあれば、SLMではなく日本語ModernBERTを用いて構築することで、パラメータ効率から単純に計算して、最大で5倍程度のコスト削減や高速化が見込めます。
SLMを双方向化した上での実験
最後に、通常は文章を左から右にしか読めないSLMを改造し、エンコーダ型モデルと同様に双方向の文脈を考慮できるようにしたモデルについての性能評価を行いました。
近年、デコーダ型の言語モデルを改造し、文生成が不要なタスクについて、双方向の文脈を考慮可能にすることで性能向上を図る手法が複数提案されています:
- BehnamGhader et al., LLM2Vec: Large Language Models Are Secretly Powerful Text Encoders. COLM 2024
- Lee et al., NV-Embed: Improved Techniques for Training LLMs as Generalist Embedding Models. ICLR 2025 (spotlight)
また、日本語でも、テキスト埋め込みモデル(文章をベクトルに変換するモデル)を中心にこのテクニックが利用される事例が増えてきています:
このテクニックは、デコーダ型言語モデルに存在する「左から右にしか文章を読めない」という弱点をカバーするため、モデル内部の注意機構を双方向の文脈を考慮できるようにします。
テキスト埋め込みで利用されることが多いテクニックですが、アイデアは一般のタスクに適用可能です。 そこで、SLMを分類タスク用にfine-tuningする際に、SLMを「双方向化 (bidirectionalize)」してからfine-tuningをすることで、双方向の文脈を考慮することができるようになり、言語理解性能が向上するのではないかと考え、これを試しました。 特に、この工夫により文脈を双方向に読めるかどうかを日本語ModernBERTと揃えることができるようになるため、言語理解系タスクにおける日本語ModernBERTのパラメータ効率に関する傾向が変化するかを観察しました。
実験には上述したSLMのうち、Llamaアーキテクチャを用いている一部のモデルを用い、その他の設定は同一としました。 双方向化したモデルについて、もともとは左から右にしか文章を読めなかったために、最終層の文末トークンに対応する埋め込み表現を分類層への入力としていましたが、双方向化されたモデルは文頭トークンでも双方向の文脈を考慮できていると考えられます。 そこで、分類層への入力表現として文頭・文末のそれぞれの設定で実験を行いました。 このような「何を分類層に入力する埋め込み表現とするかの設定」をプーリング手法と呼びます。
実際に双方向化をする場合、分類層への入力表現を文頭・文末にした場合に、モデルの埋め込み表現がどのように計算されるかを表現したのが以下の図です。 図の下から上に入力が処理されています。
この図において、図上部の紫色の丸が分類層への入力表現にあたります。 図左端の片方向/文末プーリングの場合は、入力文全体を考慮できているのが文末トークンのみであり、入力文の途中(例えば左から2番目のトークン)は文全体を考慮できていないことがわかります。 一方で、双方向の場合は、文頭/文末プーリングのどちらを用いた場合でも、入力文全体を考慮した表現を出力できており、入力文のどの位置のトークンも文全体を考慮できていることがわかります。 双方向化は、時系列中の過去のトークンが未来のトークンを考慮できるようにモデルを改造するため、文生成タスクなどには利用できませんが、文生成を行わないタスクであれば、入力文の文脈をフルに考慮した上で推論ができるので性能面で有利だと思われます。
では、このように双方向化したSLMを、実際に分類モデル用にfine-tuningした場合の実験結果を以下の図に示します。 参考までに双方向化を施していないモデルの性能も記載しています。 なお、先ほどと同様実験結果の量が多いため、個別のタスクの性能を含む完全な実験結果の表を折りたたみに記載しています。
双方向化した場合の実験結果
分類層への入力にどの位置の埋め込み表現を使っているかは「プーリング」というカラムに記載されています。
モデル | 双方向 | プーリング | 平均 | JComQA (acc) | RCQA (acc) | JCoLA (acc) | JNLI (acc) | JSICK (acc) | JSNLI (acc) | 京大RTE (acc) | JSTS (Spearman) | Livedoor (acc) | LLMjp Toxicity (acc) | MARC-ja (acc) | WRIME (acc) |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ModernBERT-Ja-30M | ✅ | 文頭 | 85.67 | 80.95 | 82.35 | 78.85 | 88.69 | 84.39 | 91.79 | 61.13 | 85.94 | 97.20 | 89.33 | 95.87 | 91.61 |
ModernBERT-Ja-70M | ✅ | 文頭 | 86.77 | 85.65 | 83.51 | 80.26 | 90.33 | 85.01 | 92.73 | 60.08 | 87.59 | 96.34 | 91.01 | 96.13 | 92.59 |
ModernBERT-Ja-130M | ✅ | 文頭 | 88.95 | 91.01 | 85.28 | 84.18 | 92.03 | 86.61 | 94.01 | 65.56 | 89.20 | 97.42 | 91.57 | 96.48 | 93.99 |
ModernBERT-Ja-310M | ✅ | 文頭 | 89.83 | 93.53 | 86.18 | 84.81 | 92.93 | 86.87 | 94.48 | 68.79 | 90.53 | 96.99 | 91.24 | 96.39 | 95.23 |
ModernBERT-Ja-1.4B | ✅ | 文頭 | 91.36 | 96.46 | 86.38 | 86.32 | 93.10 | 87.62 | 95.31 | 76.21 | 90.69 | 97.42 | 94.38 | 96.43 | 95.95 |
sbintuitions/sarashina2.2-0.5b-instruct-v0.1 | 文末 | 88.33 | 90.17 | 84.44 | 80.09 | 91.11 | 85.21 | 93.76 | 66.21 | 88.70 | 97.37 | 92.25 | 96.42 | 94.26 | |
✅ | 文頭 | 87.14 | 89.22 | 83.45 | 78.06 | 89.25 | 84.16 | 94.17 | 60.40 | 87.25 | 96.64 | 93.15 | 96.31 | 93.61 | |
✅ | 文末 | 87.39 | 89.29 | 83.37 | 78.13 | 89.06 | 84.49 | 94.17 | 62.58 | 87.28 | 96.69 | 93.26 | 96.35 | 94.04 | |
sbintuitions/sarashina2.2-1b-instruct-v0.1 | 文末 | 89.08 | 92.19 | 84.76 | 81.46 | 90.99 | 85.48 | 94.22 | 69.11 | 89.05 | 97.53 | 93.60 | 96.33 | 94.19 | |
✅ | 文頭 | 87.70 | 92.46 | 84.19 | 77.98 | 90.48 | 84.44 | 94.55 | 60.89 | 88.18 | 96.72 | 92.02 | 96.32 | 94.21 | |
✅ | 文末 | 87.79 | 92.96 | 84.66 | 76.87 | 91.06 | 84.35 | 94.71 | 61.77 | 88.39 | 96.85 | 91.91 | 96.38 | 93.62 | |
sbintuitions/sarashina2.2-3b-instruct-v0.1 | 文末 | 90.83 | 95.59 | 85.81 | 84.06 | 92.76 | 86.17 | 94.93 | 78.06 | 89.93 | 97.45 | 93.48 | 96.31 | 95.38 | |
✅ | 文頭 | 89.70 | 95.23 | 85.24 | 81.35 | 91.82 | 85.56 | 95.47 | 68.23 | 90.03 | 96.91 | 95.06 | 96.32 | 95.22 | |
✅ | 文末 | 90.28 | 95.51 | 85.35 | 82.28 | 92.38 | 85.83 | 95.32 | 72.34 | 90.23 | 97.31 | 94.83 | 96.32 | 95.59 | |
llm-jp/llm-jp-3-150m-instruct3 | 文末 | 84.66 | 75.26 | 81.82 | 77.58 | 86.94 | 83.40 | 91.59 | 60.65 | 84.74 | 96.93 | 90.56 | 95.96 | 90.49 | |
✅ | 文頭 | 83.01 | 70.28 | 80.64 | 75.65 | 81.02 | 82.28 | 91.13 | 60.40 | 82.39 | 95.33 | 91.91 | 95.51 | 89.58 | |
✅ | 文末 | 83.04 | 70.01 | 79.93 | 75.67 | 82.09 | 82.96 | 91.24 | 59.60 | 82.42 | 94.57 | 92.58 | 95.42 | 90.03 | |
llm-jp/llm-jp-3-440m-instruct3 | 文末 | 86.67 | 85.29 | 82.98 | 80.06 | 89.53 | 83.79 | 93.01 | 60.08 | 87.31 | 97.15 | 91.57 | 96.24 | 92.99 | |
✅ | 文頭 | 85.29 | 82.27 | 81.36 | 76.06 | 86.86 | 82.99 | 92.82 | 60.48 | 85.63 | 95.50 | 91.80 | 96.21 | 91.52 | |
✅ | 文末 | 85.63 | 83.34 | 81.67 | 76.49 | 87.63 | 83.10 | 92.89 | 60.48 | 85.84 | 95.79 | 92.25 | 96.17 | 91.89 | |
llm-jp/llm-jp-3-980m-instruct3 | 文末 | 88.41 | 89.81 | 84.31 | 80.81 | 91.39 | 84.85 | 93.90 | 66.45 | 88.98 | 97.67 | 91.91 | 96.36 | 94.43 | |
✅ | 文頭 | 86.03 | 88.97 | 81.80 | 76.31 | 85.84 | 82.92 | 93.73 | 61.13 | 84.39 | 95.77 | 91.12 | 96.36 | 93.97 | |
✅ | 文末 | 86.12 | 90.06 | 80.92 | 76.95 | 87.30 | 83.10 | 93.76 | 60.40 | 85.39 | 95.33 | 90.11 | 96.29 | 93.83 | |
llm-jp/llm-jp-3-1.8b-instruct3 | 文末 | 89.41 | 92.28 | 84.25 | 82.77 | 91.76 | 85.51 | 94.37 | 70.81 | 89.26 | 97.26 | 93.26 | 96.53 | 94.92 | |
✅ | 文頭 | 87.40 | 92.14 | 84.29 | 78.78 | 90.32 | 84.83 | 94.15 | 60.32 | 87.54 | 95.33 | 90.56 | 96.36 | 94.23 | |
✅ | 文末 | 87.58 | 92.35 | 83.84 | 77.83 | 89.84 | 84.53 | 94.53 | 61.45 | 88.39 | 95.82 | 91.35 | 96.49 | 94.52 |
図から、どのSLMも、片方向(赤色)の方が性能が高く、双方向化を施す(緑色/黄色)ことでむしろ性能が低下してしまっていることが確認できます。 プーリングの違いで確認すると、その差は小さいですが、一貫して「文頭」より「文末」の方が性能が高いこともわかります。 全体として、双方向化したモデルは、双方向の文脈をうまく扱えていない可能性が示唆されました。
LLMの双方向化を提案したLLM2Vecは、双方向にした上でモデルを適応させるための追加訓練を行っています。 デコーダ型言語モデルを事後的に双方向化する場合には、そのような特別な工夫が必要なのかもしれません。 少なくとも、SLMを単に双方向にして適用するだけでは性能は改善しないことがわかりました。 そして、エンコーダ型モデルとして構築されたモデルが、SLMに工夫を加えてモデル構築をした場合でも分類等のタスクにおいて高いコストパフォーマンスを示し、依然として高効率なシステムを構築するためには有用であることがわかりました。
おわりに
本記事では、日本語ModernBERTの構築にあたって取り入れた工夫や、小規模言語モデル(SLM)との性能比較結果について紹介しました。 特に、「系列長拡張: Phase 2」にてマスク率を低下させたこと・エポック数を増大させたことが性能向上につながった点は、高品質な日本語を如何にモデルに学習させるかという点で、LLM開発と相似性があり面白いと感じました。
近年、エンコーダ型のモデルの開発はSLMをはじめとするデコーダ型のモデルと比べるとそこまで活発ではありません。 しかし本ブログの実験結果から、実用上はデコーダ型の言語モデル一辺倒になるよりも、適切にエンコーダ型のモデルを組み合わせることが重要であることが示唆されました。 LLM全盛期においても、大規模なwebサービスや非対話型インターフェースなど、システムのレイテンシやスケーラビリティが重要な場面では、依然としてエンコーダ型の基盤モデルが最有力な選択肢であるということは、変わらないのではないでしょうか。
本記事で取り上げた日本語ModernBERTの各モデルは、商用利用も可能なMITライセンスで公開しております。 ぜひ商用システム開発や研究開発、OSSモデルの学習などに利用していただければ幸いです。 また、トークナイザを変更した場合の性能評価についてのテックブログも公開予定です。こちらもぜひ楽しみにお待ちください。