AI・機械学習
上級

Self-Instruct(自己指示生成)(セルフインストラクト)

LLM自身に多様な指示(Instruction)と応答のペアを自動生成させ、それをInstruction Tuningの訓練データとして再帰的に活用する手法。Wang et al.(2023)が提案し、175件のシードタスクからGPT-3で52K件の指示データを生成してAlpacaの訓練に成功した。

0 回閲覧
0 いいね

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., 2023175 seed → 52K生成Alpaca (Stanford)
Evol-InstructXu et al., 2023段階的に指示を複雑化WizardLM
Self-AlignmentLi et al., 2023原則に基づく自己修正Dromedary
Unnatural InstructionsHonovich et al., 2023生成→言い換え→フィルタ64K件のデータセット
OrcaMukherjee et al., 2023思考過程(CoT)を含む生成Orca 1/2
MagpieXu 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,0004.5/5.00.82
Self-Instruct (GPT-3)$5003.8/5.00.75
Self-Instruct (GPT-4)$3,0004.3/5.00.80
Evol-Instruct (GPT-4)$4,5004.4/5.00.85
Magpie (Llama-3-70B)$0 (ローカル)3.5/5.00.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 利用時のライセンス制約に注意が必要
  • オープンソースモデルでのローカル生成が自由度の面で推奨される