Self-Instruct(セルフインストラクト)
LLM自身に指示データを自動生成させるブートストラップ手法。少量のシードタスクから大量の多様な指示・応答ペアを生成し、そのデータで自己改善ファインチューニングを行う。
Self-Instruct とは
Self-Instructは、LLM(大規模言語モデル)自身を使って指示データを自動生成するブートストラップ手法です。2023年にYizhong Wangら(University of Washington / Allen AI)が発表した論文で提案され、少量の人手シードタスクから大量・多様な指示チューニングデータを自動生成する仕組みを確立しました。
背景と問題意識
Instruction Tuning(指示チューニング)の性能はデータ品質と多様性に大きく依存します。しかし人手でのデータ作成には多大なコストがかかり、数万〜数十万規模の指示データ収集は現実的でありませんでした。Self-Instructはこの課題をLLM自身の生成能力で解決します。
アルゴリズムの流れ
ステップ1: シードタスクのプール化
175件の人手作成タスク(多様なカテゴリ)をシードとしてプールに入れます。
ステップ2: 指示生成
プールからランダムに8件のタスクをサンプリングし、LLMへのin-contextプロンプトとして使用。LLMに新しい指示を生成させます。
ステップ3: 入力・出力生成
生成された指示に対し、LLMに入力例と出力例を生成させます(分類タスクはoutput-firstで生成)。
ステップ4: フィルタリング
- ROUGE-L類似度でシードタスクや既存指示との重複を排除(閾値0.7以上は除外)
- LLMが自己判定で不正・無意味な指示を削除
ステップ5: プール追加と繰り返し
品質フィルタを通過した指示をプールに追加し、ステップ2〜4を繰り返す。
実験結果
元論文では、GPT-3(text-davinci-001)をSelf-Instructで生成した52,000件のデータでファインチューニング。SuperNI・USER ORIENTED命令評価でInstructGPT(text-davinci-001)に近い性能を達成し、人手データのみのモデルを上回りました。
後継研究への影響
- Alpaca(Stanford, 2023): text-davinci-003からSelf-Instruction手法で52kデータ生成。LLaMAをファインチューニングしわずか600ドルで実用モデルを作成
- Vicuna: Alpacaをさらに発展させたシェアードチャットログ学習モデル
- Evol-Instruct(WizardLM): 指示の複雑化・多様化にLLMを活用する拡張版
- Orca: GPT-4の思考過程ごと蒸留するスタイルへ発展
主な制限
- シードとなるLLMの品質に上限が制約される(weak teacherの限界)
- 生成データにノイズや偏りが含まれる可能性
- 安全性・有害コンテンツのフィルタリングが別途必要
まとめ
Self-Instructは「LLMをデータ生成エンジンとして使う」という発想を確立した先駆的手法です。オープンソースモデルのInstruction Tuning研究を民主化し、Alpaca以降の膨大な研究の土台となりました。