論文メモ: Beyond Human Data: Scaling Self-Training for Problem-Solving with Language Models
私は最近、LLMによるSynthetic data(合成データ)生成を試しています。手法について色々調べているので論文等忘れないようにこの場にメモを残していきたいと思います。
基本的に、『Synthetic dataをどう作るか』によったメモとなるので、その論文中の結果等は書かなかったりすると思います。
また、内容には私、GPT、Claudeの見解を含みます。
1. 今回の論文
今回は以下の論文を読みました。Google DeepMindによる論文です。
まとめるとこんな感じの内容でした。
Math/Codingタスクに特化するための自己改善手法 ReSTEM
2,000-7,500 recordsの正解ありデータをタスクとして使用
学習させるモデル自身の回答を使って学習。イテレーション毎に性能が上がるので生成される学習データの品質も上がる。
懸念:過学習する
LLMによるSynthetic dataの利用は大きく分けて「蒸留」と「自己改善」があり、今回は自己改善手法です。
2. データ
数学タスクにはMathベンチマークの、コーディングタスクにはAPPSベンチマークのTrainデータを利用。
データセットとしては数学やコーディングのような明確に正解/不正解を判別できるタスクしか使えない。
APPSはテストコードを持つ。
3. 手法
基本的に以下のような流れを繰り返します。
Generate: LLMによる回答方法の生成
Improve: 生成したデータで自己学習
学習始めのモデルはPreTrainモデル。Improveは通常のSFT。
1イテレーションが終わったら学習したモデルを使って1. Generateをまた実施します。
学習に使うデータの生成の詳細は上記の通りです。Mathを例にすると、下記の手順で生成・絞り込みした最大75,000 recordsのデータをSFTに使用します。
Mathの7,500 recordsに対し、各問64つずつ回答方法を生成(7,500x32=240,000 records生成 )
正解を出せているデータにのみ絞り込む。このとき、各問の回答方法は最大10種までに絞り込む。(最大7,500x10=75,000 records)
最初は簡単な問題のみ正解できるので簡単な問題の回答から学習していき、イテレーションを重ねる毎に解ける問題の難易度・回答の品質が向上していくことを期待しています。
4. 懸念
過学習が報告されている。
イテレーション毎に、各ベンチマーク(Math, APPS)のTrainデータの正答率は上昇するものの、Testデータの正答率はそこまで上がらない。
データ数の少ないAPPSの方がより顕著に過学習している。学習に使うにはもっと多くのデータが必要かもしれない。(ただしCodingタスクのテストコードをそこまで多く用意するのは難しそう。)
5. まとめ
使いやすい点:
✅ GPT-4のような高性能なモデルを利用しなくて良い。
✅ 用意するデータは1,000-10,000くらいでよく比較的少ない。
使いにくい点:
✅ 数学やCodingのような明確な答えを持つタスクにしか利用できない。
✅ 特にCodingの場合、APPSのようなテストコードありのデータである必要がある。学習データを用意しづらい。
✅ 過学習が報告されている。