RLHFとは?人間の評価でLLMの応答を整える仕組み
人間フィードバックに基づく強化学習
先に結論。会社でLLMの答えを「うちの口調で」「こういう答えはしないで」と整えたいとき、RLHFを自分で回すことはまずない。それでも仕組みは知っておいて損はない。この記事を読めば、RLHFが何を何段階でやっているかが分かり、SFT・DPO・RLHFのどれが自分の案件に合うかを選べる。
ひとことで
RLHF(Reinforcement Learning from Human Feedback)は、人が「AよりBのほうがいい」と選んだ記録でモデルを押していく方法だ。OpenAIのInstructGPT論文(2022)で広まり、ChatGPTもこのやり方で整えられた。
その論文では、評価者が175BのGPT-3より1.3BのInstructGPTの答えを好んだ。パラメータが100分の1のモデルが勝ったわけだ。大きさより「人が望む方向に整えたか」が効いたということになる。
3つの段階
1. SFT(教師ありファインチューニング): 人が書いた模範解答でまず学習させる。ここまででも指示はそこそこ聞く。
2. 報酬モデル: 同じ質問にモデルが答えを複数出し、人が順位を付ける。この順位から「答えに点数を付けるモデル」を別に学習する。
3. PPO: モデルが答える → 報酬モデルが点数を付ける → 点数が上がる方向に重みを直す。これを繰り返す。元のモデルから離れすぎないように、KLペナルティ(2つの確率分布がどれだけ違うかを測る値)も一緒にかける。
図の点線の2マスがRLHFだけの持ち分だ。PPOを回している間は、学習中のモデル・元のコピー・報酬モデル・価値モデル(PPOが使う批評役)の4つをメモリに載せておく必要がある。「RLHFは重い」と言われるのはここだ。
報酬モデルは何を覚えるのか
損失はシンプルで、選んだ答えの点数が捨てた答えより高いほど小さくなる。
loss = -log σ(r(選んだ答え) - r(捨てた答え))
この記事を書き直しながらRubyで数行計算してみた。学習の最初のステップの損失は必ず0.693(= log 2)になる。まだ2つの点数が同じで、σ(0) = 0.5 だからだ。なのでログが0.69あたりから始まって下がっていけば正常で、そこから動かなければ学習できていない。
点数だけ上げる抜け道(報酬ハッキング)
PPOが追いかけるのは報酬モデルの点数で、人の本当の基準ではない。報酬モデルが「長くて丁寧な答え」に甘い癖を持っていると、モデルは中身ではなく長さを伸ばす。これを報酬ハッキングと呼ぶ。KLペナルティはこれを遅らせるだけで、止めてはくれない。
SFT・DPO・RLHF・Constitutional AI
方法 必要なもの いつ
SFT 模範解答 口調・形式を合わせる。たいていここで終わる
DPO 選んだ答え / 捨てた答えのペア いいね・よくないねの記録が溜まったとき
RLHF (PPO) ペア + 報酬モデル + GPUの余裕 報酬モデルを使い回したいとき。モデル会社の規模
Constitutional AI 原則リスト + AI評価者 人の評価をAIに置き換えたいとき
Constitutional AIはAnthropicが2022年に出した方法で、人の代わりにAIが原則リストを見て答えを選ぶ(RLAIFとも呼ばれる)。そのペアがRLHFやDPOに流れるのは同じだ。
自分なら社内チャットボットくらいならまずSFTにする。プロンプトとRAGでも直らない「こう答えないで」が残ったらDPO。PPOまで行くのは、GPUと評価する人に余裕があるチームの話だ。DPOはDPOの記事で別に回してみた。
自社サービスの答えを「こんな感じに」揃えたいけれど、SFTかDPOかで迷っているならnegabaroに相談してもらって構わない。今あるデータでどこまでできるかから一緒に見られる。
キーコンセプト
第1段階SFT: 人が書いた模範解答でまず指示に従うことを覚える
第2段階報酬モデル: 同じ質問への複数の答えを人が順位付けし、その順位で点数を付けるモデルを学習
報酬モデルの損失は最初0.693(log 2)から始まり、下がっていけば正常
第3段階PPO: 答えを生成 → 報酬モデルが採点 → 点数が上がる方向に重みを直す、を繰り返す
KLペナルティで元のモデルから離れすぎないように縛る(報酬ハッキングを遅らせるだけで止めはしない)
PPO中はモデル4つ(学習中・元のコピー・報酬・価値)をメモリに置く
メリット
- ✓ 数値にしにくい「良い答え」を人の選択から学べる
- ✓ InstructGPT 1.3Bの答えがGPT-3 175Bより好まれた(原論文)
- ✓ 報酬モデルを残しておけば答えの選別・評価に使い回せる
デメリット
- ✗ 人による評価コストが大きい
- ✗ 報酬ハッキング — 点数だけ上げる答え(例: 長くするだけ)を覚える
- ✗ PPOはモデル4つを抱えて回るのでGPUを食い、不安定
- ✗ 評価者の偏りがそのままモデルに入る