FineWeb-Eduを参考にした日本語文書の品質評価モデルを学習する
要約
- 英語の大規模データセットFineWebから教育的に有用な文書を抽出したFineWeb-Eduで使われた分類器を日本語で再現した
- Mixtral-8x7B-v0.1を用いて0〜5のスコアで文書の教育的品質をアノテーション
- アノテーション結果を学習データとして、pkshatech/GLuCoSE-base-jaベースの分類モデルを作成
目的
先日公開されたFineWebでは、LLMを用いたアノテーションにより教育的に有用な文書を抽出する手法が提案されました。
今回は、この手法で使われた分類器を日本語で再現することを目標にしていきます。
実施内容
アノテーション
モデル
英語版ではLlama-3-70B-Instructモデルを使用していましたが、この使い方をする上でLlamaライセンスのモデルを使用するのに抵抗がありました。
そこで、今回はTheBloke/Mixtral-8x7B-v0.1-GGUFのQ3_Kをアノテーションのモデルに使用しています。
プロンプト
当初は本家のプロンプトをそのまま試したのですが、何件かの採点理由を見てみると「教育的」の観点がアメリカの文化に寄っているように感じました。
プロンプトを日本語に書き換えればある程度日本文化基準に考えてくれそうですが、それだと出力が日本語になってしまい、トークナイザーの関係から生成が遅くなってしまいます。
そのため、プロンプトを英語にしたまま、採点基準の最後に日本を基準にすることを明示することで対処しています。
推論
評価対象のデータセットには、OSCAR-2301の日本語サブセットにSwallowコーパスを参考に実装したフィルタリングを適用したものを使用しています。
16,913個の文書に対してアノテーションを行い、それらを学習データ、検証データ、テストデータに分割しています。
スコア | レコード数 |
---|---|
0 | 590 |
1 | 6706 |
2 | 7091 |
3 | 2214 |
4 | 295 |
5 | 17 |
分類器の学習
モデル
- 本家で使われたSnowflake/snowflake-arctic-embed-mのパラメータ数(109M)に近い
- オープンなライセンスで公開されている
という理由から、pkshatech/GLuCoSE-base-jaをベースのモデルにしました。
学習
本家に比べてデータが少ないことが原因なのか、ハイパーパラメータをそのまま流用するとすぐに過学習してしまったため、学習率とバッチサイズを調整しました。
また、学習自体は450steps以降でlossが上昇し始めたため、途中で学習を打ち切っています。
結果
今回学習したモデルはこちらになります。
学習したモデルのテストデータ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