🧰

FineWeb-Eduを参考にした日本語文書の品質評価モデルを学習する

2024/06/11に公開

要約

  • 英語の大規模データセットFineWebから教育的に有用な文書を抽出したFineWeb-Eduで使われた分類器を日本語で再現した
  • Mixtral-8x7B-v0.1を用いて0〜5のスコアで文書の教育的品質をアノテーション
  • アノテーション結果を学習データとして、pkshatech/GLuCoSE-base-jaベースの分類モデルを作成

https://huggingface.co/Kendamarron/fineweb-edu-classifier-ja

目的

先日公開されたFineWebでは、LLMを用いたアノテーションにより教育的に有用な文書を抽出する手法が提案されました。
今回は、この手法で使われた分類器を日本語で再現することを目標にしていきます。

実施内容

アノテーション

モデル

英語版ではLlama-3-70B-Instructモデルを使用していましたが、この使い方をする上でLlamaライセンスのモデルを使用するのに抵抗がありました。
そこで、今回はTheBloke/Mixtral-8x7B-v0.1-GGUFのQ3_Kをアノテーションのモデルに使用しています。

プロンプト

当初は本家のプロンプトをそのまま試したのですが、何件かの採点理由を見てみると「教育的」の観点がアメリカの文化に寄っているように感じました。
プロンプトを日本語に書き換えればある程度日本文化基準に考えてくれそうですが、それだと出力が日本語になってしまい、トークナイザーの関係から生成が遅くなってしまいます。
そのため、プロンプトを英語にしたまま、採点基準の最後に日本を基準にすることを明示することで対処しています。
https://github.com/kkendama/fineweb-edu-classifier-ja/blob/main/generate_score.py#L15-L30

推論

評価対象のデータセットには、OSCAR-2301の日本語サブセットにSwallowコーパスを参考に実装したフィルタリングを適用したものを使用しています。
16,913個の文書に対してアノテーションを行い、それらを学習データ、検証データ、テストデータに分割しています。

スコア レコード数
0 590
1 6706
2 7091
3 2214
4 295
5 17

分類器の学習

モデル

oshizoさんのEmbeddingモデルの評価を参考に、

という理由から、pkshatech/GLuCoSE-base-jaをベースのモデルにしました。

学習

本家に比べてデータが少ないことが原因なのか、ハイパーパラメータをそのまま流用するとすぐに過学習してしまったため、学習率とバッチサイズを調整しました。
https://github.com/kkendama/fineweb-edu-classifier-ja/blob/main/train.py#L54-L71

また、学習自体は450steps以降でlossが上昇し始めたため、途中で学習を打ち切っています。

結果

今回学習したモデルはこちらになります。
https://huggingface.co/Kendamarron/fineweb-edu-classifier-ja

学習したモデルのテストデータ1,692件に対するConfusion MatrixとClassification Reportは以下のようになっています。

予測0 予測1 予測2 予測3 予測4 予測5
正解0 0 53 6 0 0 0
正解1 1 415 251 4 0 0
正解2 0 180 471 58 0 0
正解3 0 16 142 64 0 0
正解4 0 1 14 14 0 0
正解5 0 0 1 1 0 0
Classification Report:
              precision    recall  f1-score   support

           0       0.00      0.00      0.00        59
           1       0.62      0.62      0.62       671
           2       0.53      0.66      0.59       709
           3       0.45      0.29      0.35       222
           4       0.00      0.00      0.00        29
           5       0.00      0.00      0.00         2

    accuracy                           0.56      1692
   macro avg       0.27      0.26      0.26      1692
weighted avg       0.53      0.56      0.54      1692

スコアが0,4,5のデータが少なかったこともあり、0,4,5が予測されづらくなってしまってしまいました。

しかし、全体として見ると、真値と予測の相関係数は0.5182と正の相関があったので、傾向自体は掴めていそうです。

まとめ

今回はFineWeb-Eduの分類器を日本語データで検証しました。
本家の450,000件のアノテーションと比べると約1/30規模のデータしか用意できなかったこともあり、完璧な再現とまではいきませんでしたが、ある程度の判定ができるモデルを作れたのではないでしょうか。
実質的には3クラス分類のモデルになってしまっているため、スコア1以下のデータを除去するのが限界かなという感じですが、このモデルを使って作成したデータセットで事前学習を回してみようと思います。

TODO

  • 今回のモデルでフィルタリングしたデータセットで小規模モデルの事前学習
  • 学習データを増やす

Discussion