Skip to content

学習パイプライン(事前学習/SFT/RLHF/DPO)

ここまでの章で組んだ Transformer は骨格にすぎず、重みは乱数のままだった。実物はこの骨格を 3 段階で育てる。膨大なテキストで次の語を予測する事前学習が知識と言語を作り、指示と応答の例で微調整する SFT がアシスタントの形を教え、人間の選好から学ぶ RLHF や DPO が答え方の質を仕上げる。この章はコードを書かず、各段階の損失関数と、規模の配分を決めるスケーリング則までを追う。

この章で読むもの

mini-GPT の生成が意味をなさなかったのは、重みが乱数だからだ。では実物の重みはどう決まるのか。答えは 1 回の学習ではなく、目的の違う 3 つの段階の積み重ねになっている。この章は実装せず(理由は最後に書く)、各段階が何を最適化しているかを損失関数のレベルで追う。以降の系譜の章で「このモデルは後段の学習が違う」という言い方を多用するので、その語彙を先に揃えるのが目的だ。

1. 事前学習     数兆トークンの生テキストで「次の語」を予測
   (数ヶ月)     → 知識と言語を獲得。ただし「続きを書く」ことしかしない

2. SFT          「指示 → 良い応答」の例 数万〜数百万件で微調整
   (数日)       → 指示に従う形を覚える

3. 選好学習      応答ペアの「どちらが良いか」から学ぶ(RLHF / DPO)
   (数日〜)     → 役に立つ・無害・正直の方向へ答え方を寄せる
3 段階の学習パイプライン。事前学習が容量の大半を使って知識と言語を獲得し、SFT が対話の形を教え、選好学習(RLHF/DPO)が答え方の質を人間の好みに寄せる

先に押さえることが3つある。

  1. 事前学習がほぼすべての知識を作る: 計算量の 9 割以上はここ。後段は知識を足すのではなく、引き出し方を変える
  2. SFT は模倣、選好学習は比較: 良い例を真似るだけでは「どちらがより良いか」の情報が入らない。この差が第 3 段階の存在理由
  3. 規模の配分には法則がある: パラメータとデータをどう配分すべきかはスケーリング則として測定されている

① 事前学習: 次の語の予測がすべての土台

損失は mini-GPT の出力にそのまま繋がる。各位置で次のトークンの確率分布を出し、正解トークンの対数確率を最大化する:

L_pretrain = −Σ_t log P(x_t | x_1 … x_{t−1})

これだけだ。ラベルは要らず、ウェブテキスト・書籍・コードがそのまま教材になる。Transformer全体像 で見たとおり全位置が同時に教師信号になるので、1 兆トークンのコーパスは 1 兆個の予測問題になる。「次の語を当てる」を極限まで押し込むと、文法、事実、推論の型までがパラメータに折り畳まれていく。

スケーリング則: 賢さは配分の問題

事前学習には設計上の大問題がある。計算予算 C が決まっているとき、パラメータ数 N とデータ量 D にどう配るか。2020 年の Kaplan らの測定(スケーリング則)は「損失は N、D、C のべき乗則で滑らかに下がる」ことを示し、当時は N を大きくする方に予算が振られた。GPT-3(175B)はこの読みの産物だ。

2022 年の Chinchilla 論文が配分を修正する。同じ予算なら N と D をほぼ等分に伸ばすのが最適で、目安はパラメータ 1 個あたり約 20 トークン。GPT-3 世代のモデルは軒並み「大きすぎて学習不足」だった。70B の Chinchilla が 280B の Gopher を上回った実測がこの主張の裏付けで、以後のモデルはデータ側を大きく増やす方向に転じた。Llama 3 の 8B が 15 兆トークン(目安の 90 倍以上)で学習されているのは、学習時の最適を超えても、推論コストの安い小さいモデルを賢くする方が運用で得だからだ。最適配分は「何を最適化するか」で変わる。

② SFT: 形を教える

事前学習だけのモデル(base モデル)に「フランスの首都は?」と入力すると、答えるとは限らない。「という問題がテストに出た」と続きを書くかもしれない。テキストの続きとしてはどちらも自然で、モデルは「質問には答えるものだ」という規範をどこからも学んでいない。

SFT(supervised fine-tuning)は「指示 → 良い応答」のペアを人間が書き、その応答部分だけで同じ next-token 損失を回す。数式は事前学習と同一で、変わるのはデータの質と、何を正解と見なすかだけだ。数万〜数百万件の例で、モデルは「指示されたら応答する」という形を覚える。これが base モデルと instruct モデルの分かれ目になる。

③ RLHF: 比較から学ぶ

SFT には構造的な限界がある。人間が書いた良い応答を模倣するだけなので、「2 つの応答のどちらがより良いか」という比較の情報が入らない。長すぎる丁寧さと簡潔さのどちらを好むか、断るべき依頼への断り方はどちらが感じ良いか。こうした質の勾配は、正解例 1 本では表現しにくい。

RLHF(reinforcement learning from human feedback)は比較そのものをデータにする。手順は 2 段になっている:

報酬モデルの学習:
  同じプロンプトへの応答ペア (y_win, y_lose) を人間が選好
  L_RM = −log σ( r(x, y_win) − r(x, y_lose) )     ← 勝った方のスコアを上げる

方策の最適化(PPO):
  maximize  E[ r(x, y) ] − β·KL( π ∥ π_SFT )      ← 報酬を稼ぎつつ SFT から離れすぎない

第 2 式の KL 項が要点だ。報酬モデルは人間の好みの不完全な近似なので、無制約に報酬を最大化すると、報酬モデルの穴を突く出力(意味のない定型句の繰り返しなど)に退化する。報酬ハッキングと呼ばれるこの現象を、「SFT モデルから離れすぎるな」という正則化で抑える。ChatGPT を作った InstructGPT 論文(2022)がこの構成を確立し、"helpful, harmless, honest" へ寄せる後段学習が業界標準になった。

④ DPO: 強化学習を消す

RLHF は効くが重い。報酬モデルと方策モデルを別々に持ち、PPO のループは不安定でハイパーパラメータに敏感だ。2023 年の DPO(direct preference optimization)は、RLHF の最適解が選好データから閉形式で書けることを示し、強化学習のループを 1 本の損失に畳み込んだ:

L_DPO = −log σ( β·[ log π(y_win)/π_ref(y_win) − log π(y_lose)/π_ref(y_lose) ] )

読み方は「参照モデル(SFT)と比べて、勝った応答の確率を上げ、負けた応答の確率を下げる」で、報酬モデルも PPO も要らない。通常の教師あり学習と同じ安定性で選好が学べるため、オープンモデルの後段学習は DPO とその変種(IPO、KTO、ORPO)が主流になった。フロンティア各社は PPO 系と DPO 系を課題ごとに使い分けていると見られている。

動かす

下のデモは 2 つの見方を用意した。「段階と応答」は同じ入力に対する応答が base → SFT → RLHF 後でどう変わるかの典型パターンを追う。「Chinchilla配分」は計算予算を動かしたとき、最適なパラメータ数とデータ量の配分がどう変わるかを、GPT-3 と Chinchilla の実際の選択と比べながら確かめられる。

デモ学習パイプラインbase(事前学習のみ)
段階と応答Chinchilla配分事実質問不適切な依頼
入力フランスの首都は?
base(事前学習のみ)SFT 後RLHF/DPO 後
応答

という問題がテストに出た。次の問いにも答えなさい。(1) イタリアの首都は? (2) ...

base モデルは「続きを書く」ことしかしない。質問文の続きとして自然なテキストを生成しており、答える規範をどこからも学んでいない

1 / 3

応答例は各段階の典型的な挙動を要約した教材用のもの。知識は事前学習で入り、 SFT が形を、選好学習が質と安全性を与える。配分側は C = 6·N·D と D = 20N の Chinchilla 最適則で、実際のモデルがどこまで意図的に外しているかも並べた。

設計の観点

  • 知識と形の分離: 知識は事前学習、形と好みは後段。後段のデータ量は事前学習の 1 万分の 1 以下なのに挙動を支配する。少量データが効くのは、既にあるものの引き出し方を変えているだけだから
  • なぜ SFT で止めないか: 模倣には「どちらがより良いか」の情報が無い。比較データは人間にとって作りやすい(良い応答を書くより 2 択を選ぶ方が速くて安定する)という運用上の利点も大きい
  • KL ペナルティの意味: 報酬モデルは好みの近似にすぎない。近似を最適化しすぎると本物から乖離する、という Goodhart の法則への実装上の答え
  • RLHF と DPO の使い分け: DPO は安定・安価だがオフラインの選好に縛られる。PPO 系は探索(自分の出力への評価)ができ、推論モデルの RL へ地続きになる
  • 評価の難しさ: 後段学習の良し悪しは損失では測れない。人間評価、LLM-as-a-judge、ベンチマークの組み合わせで測る。ここが各社の秘伝のタレになっている

メリット・デメリットと実例

手法必要データ安定性実例
SFT のみ指示応答ペア初期の Alpaca、小規模なオープン微調整
RLHF(PPO)選好ペア + 報酬モデル低(調整が重い)InstructGPT、ChatGPT、GPT-4
DPO 系選好ペアのみZephyr、Llama 3 の一部、多くのオープンモデル
RLAIF / Constitutional AIAI が生成する選好Claude(系譜の章で扱う)

裏どり:

  • InstructGPT(2022): SFT + 報酬モデル + PPO の 3 点セットを確立した論文。1.3B の InstructGPT が 175B の素の GPT-3 より人間評価で好まれた、という結果が後段学習の重要性を示した
  • Chinchilla(2022): 予算等分・20 トークン/パラメータの最適則。以後のモデルのデータ量が桁で増えた転換点
  • DPO(2023): RLHF の閉形式化。スタンフォードの論文で、オープンモデルの後段学習を一変させた
  • Llama 3(2024): SFT + 拒否サンプリング + DPO の反復という公開レシピ。フロンティア級の後段学習の実例として技術レポートが読める

この章で実装しなかった理由

この教科書は from-scratch 実装を軸にしてきたが、この章は解説に留めた。DPO の損失関数単体なら数十行で書けるが、意味のある動作を見せるには学習済みの確率を出すモデルが要る。未学習の mini-GPT では「選好で確率が動く」ことを示しても乱数が動くだけで、恒等式の検証にならない。学習パイプラインを自分で書くなら、小さなコーパスでの事前学習(nanoGPT 相当)を先に作ってからが本番になる。そこは今後の拡張候補として残してある。

参考資料