Self-Instruct(自己指示生成)(セルフインストラクト)
LLM自身に多様な指示(Instruction)と応答のペアを自動生成させ、それをInstruction Tuningの訓練データとして再帰的に活用する手法。Wang et al.(2023)が提案し、175件のシードタスクからGPT-3で52K件の指示データを生成してAlpacaの訓練に成功した。
Self-Instruct(自己指示生成)とは
Self-Instruct は、大規模言語モデル(LLM)自身の生成能力を活用して Instruction Tuning 用の訓練データを自動的に作成する手法である。Wang et al.(2023)が論文「Self-Instruct: Aligning Language Models with Self-Generated Instructions」で提案し、少数のシードタスク(175件)から GPT-3(text-davinci-003)を使って 52,000件以上の多様な指示-応答ペアを生成することに成功した。
従来の Instruction Tuning では、人手で大量の指示-応答ペアを作成する必要があり、InstructGPT の訓練には数万件の人手アノテーションと推定 $100万以上のコストがかかっていた。Self-Instruct はこのボトルネックを解消し、高品質な指示データの民主化を実現した画期的な手法である。
処理フロー
Self-Instruct の生成パイプラインは以下の 4 段階で構成される。
Step 1: シードタスクの準備
人手で作成した 175件のシードタスクを用意する。各タスクは以下の形式を持つ。
Task: 与えられた文の感情を分析してください
Input: 「今日の天気は最高で気分が良い」
Output: ポジティブ
シードタスクは多様なカテゴリ(分類・生成・変換・QA・推論等)をカバーするよう設計する。
Step 2: 新規指示の生成
LLM にシードタスクからランダムに 8件をサンプリングして提示し、新たなタスク指示の生成を依頼する。
Step 3: 入出力ペアの生成
生成された指示に対して、LLM に入力例と出力例のペアを生成させる。分類タスクの場合はOutput-First(まず出力ラベルを決めてから入力を生成)、生成タスクの場合はInput-First(まず入力を決めてから出力を生成)のアプローチを使い分ける。
Step 4: フィルタリングと品質管理
生成されたデータから以下の条件に該当するものを除外する。
| フィルタ | 除外条件 | 目的 |
|---|---|---|
| ROUGE-L 類似度 | 既存タスクと ROUGE-L > 0.7 | 重複排除 |
| 長さフィルタ | 指示が 5語未満 or 500語超 | 極端なデータの排除 |
| キーワードフィルタ | 「image」「picture」「graph」等を含む | 実行不能タスクの排除 |
| 同一性フィルタ | Input と Output が同一 | 無意味なデータの排除 |
主要な派生手法・改良版
| 手法 | 提案者 | 改良点 | 代表的な成果物 |
|---|---|---|---|
| Self-Instruct (原版) | Wang et al., 2023 | 175 seed → 52K生成 | Alpaca (Stanford) |
| Evol-Instruct | Xu et al., 2023 | 段階的に指示を複雑化 | WizardLM |
| Self-Alignment | Li et al., 2023 | 原則に基づく自己修正 | Dromedary |
| Unnatural Instructions | Honovich et al., 2023 | 生成→言い換え→フィルタ | 64K件のデータセット |
| Orca | Mukherjee et al., 2023 | 思考過程(CoT)を含む生成 | Orca 1/2 |
| Magpie | Xu et al., 2024 | 入力テンプレートからの自己生成 | Magpie-Air |
Alpaca プロジェクトの詳細
Self-Instruct の実用化で最も有名なのが Stanford の Alpaca プロジェクトである。
- ベースモデル: LLaMA 7B
- 生成モデル: GPT-3(text-davinci-003)
- シードタスク: 175件(Self-Instruct 論文と同じ)
- 生成データ: 52,002件の指示-入力-出力トリプル
- 生成コスト: OpenAI API で約 $500(2023年3月時点)
- 訓練コスト: A100 80GB × 4台で約3時間
- 性能: GPT-3(text-davinci-003)の約 80% の性能を達成
52K件のデータで7Bモデルを微調整するだけで、1750億パラメータの GPT-3 に迫る性能を実現したことが大きな衝撃を与え、オープンソース LLM の発展を加速させた。
品質向上のテクニック
- 多段階複雑化(Evol-Instruct): 生成した指示を「より具体的に」「制約を追加」「推論ステップを増やす」等の進化プロンプトで段階的に複雑化
- Self-Consistency フィルタ: 同一指示に対して複数の応答を生成し、一貫性の低いデータを除外
- Topic Diversity Boost: トピック分類器で生成データの主題分布を監視し、不足トピックを重点的に生成
- Difficulty Stratification: 生成データを難易度別に層化し、Easy:Medium:Hard = 3:5:2 の比率でブレンド
コスト比較
| 手法 | 52K件生成コスト | 品質(GPT-4評価) | 多様性スコア |
|---|---|---|---|
| 人手アノテーション | $50,000-200,000 | 4.5/5.0 | 0.82 |
| Self-Instruct (GPT-3) | $500 | 3.8/5.0 | 0.75 |
| Self-Instruct (GPT-4) | $3,000 | 4.3/5.0 | 0.80 |
| Evol-Instruct (GPT-4) | $4,500 | 4.4/5.0 | 0.85 |
| Magpie (Llama-3-70B) | $0 (ローカル) | 3.5/5.0 | 0.72 |
よくある質問(FAQ)
Q1: Self-Instruct で生成したデータの品質は人手データと比べてどうですか? A: GPT-4 で生成した Self-Instruct データは人手データの約 90-95% の品質に達する。ただし、高度な推論・数学・コーディングタスクでは人手データとの差が大きく、これらのドメインでは人手データの補完が推奨される。
Q2: シードタスクの数はどの程度必要ですか? A: 原論文の 175件が標準的。実験では 50件でもそれなりの品質が得られるが、タスク多様性の確保のため最低 100件を推奨。500件以上にしても収穫逓減が報告されている。
Q3: Self-Instruct のデータでファインチューニングしたモデルに著作権の問題はありますか? A: GPT-4/Claude 等の商用 API で生成したデータの利用は各プロバイダの利用規約に従う。OpenAI は 2023年3月に利用規約を改定し、API 出力を競合モデルの訓練に使用することを禁止した。オープンソースモデル(Llama 3等)でのローカル生成ならこの制約を回避できる。
Q4: Evol-Instruct と Self-Instruct の違いは? A: Self-Instruct はシードから新規指示を「水平展開」するのに対し、Evol-Instruct は既存の指示を「垂直進化」(複雑化)させる。Evol-Instruct は特に難易度の高いタスクへの対応力を向上させ、WizardLM-70B は HumanEval コーディングベンチマークで ChatGPT を上回った。
まとめ
- Self-Instruct は少数のシードから大量の Instruction Tuning データを自動生成する画期的手法
- Alpaca プロジェクトで 7B モデルが GPT-3 の 80% 性能を $500 で実現
- Evol-Instruct・Orca・Magpie 等の派生手法が品質・多様性をさらに向上
- 商用 API 利用時のライセンス制約に注意が必要
- オープンソースモデルでのローカル生成が自由度の面で推奨される