Self-Instruct(セルフインストラクト)
LLM自身を使って指示データを自動生成するフレームワーク。Wang et al. 2022年提案。少数のシードタスクからLLMが新たな指示・入力・出力を生成し、品質フィルタリング後に自分自身のファインチューニングに使う。
Self-Instruct とは
Self-InstructはYizhong Wang、Yeganeh Kordi、Swaroop Mishra、Alisa Liuらが2022年12月に発表した手法で、LLM自身が自分のファインチューニング用データを生成するフレームワーク。人手によるデータアノテーションの高コスト・低スケーラビリティという問題を解決した。
仕組み
ステップ1: シードタスクプール
175件の人手作成指示タスク(質問回答・文章生成・分類等)をシードとして用意する。このシードプールが生成の「スタイルガイド」になる。
ステップ2: 新指示の生成
シードプールからランダムに8件をサンプルしてin-context learningのデモとし、LLMに「新しい指示を生成してください」とプロンプト。LLMが多様な新タスク指示を出力する。
ステップ3: 入力/出力生成
各指示について「入力ファースト」(指示→入力→出力)または「出力ファースト」(指示→出力、入力不要タスク)の2形式でLLMに完成させる。
ステップ4: フィルタリング
- ROUGE-L類似度(>0.7で除外)による重複排除
- 低品質出力(空・短文・非文)の除去
- キーワードフィルタ(「申し訳ありません」等のLLM拒否文排除)
ステップ5: プールへの追加
フィルタを通過したデータを新たにシードプールに追加し、次ラウンドで使う。この反復で指数的にデータが拡大。
実験結果(原論文)
| 比較 | SUPER-NaturalInstructions スコア |
|---|---|
| GPT-3(few-shot) | 39.9% |
| GPT-3(Self-Instruct FT) | 52.6% |
| InstructGPT(human-labeled FT) | 54.7% |
Self-Instructで微調整したGPT-3はInstructGPT(人手データ使用)にほぼ迫るスコアを達成した。
後継手法・影響
| 手法 | 概要 | Self-Instructとの関係 |
|---|---|---|
| Alpaca | GPT-3.5-Turbo + Self-Instruct → 52K指示データ | 直接の応用 |
| WizardLM | Evol-Instruct(段階的難度UP) | Self-Instruct拡張 |
| OSS-Instruct | オープンソースコードからの指示生成 | 同コンセプト別ドメイン |
| Magpie | LLMから直接Q&Aを引き出す | 方向性を逆転 |
限界と課題
- 教師モデル依存: GPT-3/GPT-4の出力品質に上限が制約される
- 偏り増幅: 教師LLMのバイアスが学習データに転写される
- 幻覚伝播: 誤情報を含む合成データがチューニングで固定される
よくある質問
Q1: Self-InstructとRLHFの違いは? A: Self-Instructは合成データを作りSFT(教師あり微調整)するのみ。RLHFは人間のフィードバックによる報酬モデルを使う強化学習。両者を組み合わせることも多い。
Q2: 何件のデータが生成されるか? A: 原論文では約52,000件(GPT-3使用)を生成。Alpacaも同規模。大量生成は可能だが質のフィルタリングが重要。
Q3: 2025年時点での利用価値は? A: 高い。GPT-4やClaude 3.5を教師に使えば高品質合成データを安価に大量生成でき、オープンモデルの高速ファインチューニングに活用されている。