Reward Modeling
報酬モデリングは、選好の比較をもとに、人間の評価に沿ってAIの出力を採点するネットワークを学習させます。Bradley-Terry損失、種類、リスクを解説します。
報酬モデリングとは、人が評価するようにAIシステムの出力を採点する報酬モデルと呼ばれるニューラルネットワークを学習する手法です。標準的な強化学習では、ゲームのスコアなどの報酬が環境から与えられます。しかし、多くの目標にはそのようなスコアがありません。役に立つ回答、構図の優れた画像、カップを丁寧に手渡すロボットは評価しやすい一方、コードで定義するのは困難です。報酬モデルは、人間のフィードバック、通常は2つの出力の比較からその判断を学習し、新しい出力を人よりはるかに速く、一貫して自動採点します。報酬モデルは人間のフィードバックによる強化学習(RLHF)を可能にするコンポーネントであり、候補回答の再ランキング、学習データのフィルタリング、モデル評価にも使われます。
報酬モデルの学習方法#
学習データは比較で構成されます。人はモデルが生成した2つ以上の回答をプロンプトとともに見て、より良い回答を選びます。OpenAIのInstructGPT研究では、ラベラーがプロンプトごとに4~9件の回答を順位付けし、その順位付けから作られるすべてのペアが学習用の比較データになりました。絶対評価ではなく順位付けを使うのは、回答の評価が10点満点で6点か7点かについての合意よりも、2つの回答のどちらが優れているかについての合意のほうがはるかに得やすいためです。
報酬モデルには通常、事前学習済みの大規模言語モデル(LLM)が使われ、多くの場合、アラインメント対象のモデルを使用します。その出力層を線形ヘッドに置き換え、最終的な埋め込みを1つの数値に変換します。学習にはペアワイズ比較のBradley-Terryモデルを使用します。このモデルでは、人が回答Aを回答Bより好む確率は、両者の報酬の差に対するsigmoid関数で表されます。損失は、人が実際に選んだ回答の確率の負の対数です。このPyTorchの例では、シミュレーションで作成した2,000件の比較データを使って線形報酬ヘッドを学習します。
import torch
import torch.nn.functional as F
torch.manual_seed(0)
# 2,000 preference pairs: embeddings of two responses to the same prompt
# Simulated raters prefer the response with higher hidden quality, with some noise
hidden_quality = torch.randn(64)
a, b = torch.randn(2000, 64), torch.randn(2000, 64)
a_wins = (a @ hidden_quality + torch.randn(2000) * 2 > b @ hidden_quality).unsqueeze(1)
chosen, rejected = torch.where(a_wins, a, b), torch.where(a_wins, b, a)
# Reward model: a linear head mapping a response embedding to one scalar score
reward_model = torch.nn.Linear(64, 1)
optimizer = torch.optim.Adam(reward_model.parameters(), lr=0.01)
train, test = slice(0, 1500), slice(1500, 2000)
for step in range(300):
# Bradley-Terry loss: maximize the probability that the chosen response scores higher
margin = reward_model(chosen[train]) - reward_model(rejected[train])
loss = -F.logsigmoid(margin).mean()
optimizer.zero_grad()
loss.backward()
optimizer.step()
accuracy = (reward_model(chosen[test]) > reward_model(rejected[test])).float().mean()
print(f"Held-out pairs ranked like the raters: {accuracy:.1%}")94.8%が出力されます。ノイズのあるシミュレーション評価者は、ノイズのない品質順位と、ホールドアウトされたペアの約5%で矛盾します。そのため、報酬モデルは絶対評価を一度も見ていないにもかかわらず、ラベルで許される範囲で嗜好を学習しています。実際の報酬モデルも、ホールドアウトされた比較データに対するペアワイズ精度で比較されます。たとえば、RewardBenchベンチマークが使われます。損失に含まれるのは報酬の差だけなので、スコアの尺度は任意です。そのため、パイプラインではRLの前にスコアを正規化することがよくあります。
報酬モデルの種類#
- 結果報酬モデル:完全な回答またはエピソードを採点する、RLHFで標準的な方式です。
- プロセス報酬モデル:解答の中間ステップを個別に採点します。OpenAIのPRM800Kデータセットには、数学の解答に対するステップ単位の人手ラベルが80万件含まれています。
- 生成型報酬モデル:LLMが判定役として批評や判定を記述します。これにより、1つのモデルでさまざまなタスクを採点し、そのスコアの理由を説明できます。
- 暗黙的報酬モデル:直接選好最適化(DPO)は、選好ペアを使ってポリシーを直接学習します。ポリシーと参照モデルの対数確率比が報酬として機能します。
- 画像報酬モデル:ImageRewardは、生成画像に対する専門家の比較13万7,000件で学習されており、プロンプトに忠実で魅力的な結果が得られるよう、テキストから画像を生成するモデルのファインチューニングに使われます。
ロボット学習でも、ビジョンモデルを使って同じ考え方を適用します。画像分類器は、カップが直立して置かれた状態や倒された状態など、試行の成功・失敗を人がラベル付けしたカメラフレームで学習します。この分類器が出力する成功確率は、学習ポリシーの報酬として機能します。この役割には、こうしたフレームを分類タスクで学習させたUltralytics YOLO26モデルを使えます。試行中の各フレームをミリ秒単位で採点します。
報酬モデルの精度を維持する#
報酬モデルの精度が保たれるのは、学習データに似た出力に限られます。ポリシーの性能が向上すると、報酬モデルが一度も見たことのない回答が生成されます。そのため、MetaのLlama 2チームは最新モデルの出力に対する新しい比較データを収集し、RLの新しいラウンドごとに報酬モデルを再学習しました。
学習済み報酬を過度に最適化すると、報酬ハッキングにつながります。OpenAIの報酬モデルの過剰最適化に関する研究では、人間の評価者の代わりに大規模な「ゴールド」報酬モデルを使用しました。その結果、ポリシーを小規模な代理報酬モデルに対して最適化すると、ゴールドスコアは最初に上昇してから低下する一方、代理スコアは上昇し続けることが分かりました。この影響は、代理モデルの規模が大きくなるにつれて滑らかに小さくなりました。報酬モデルは、長い回答や同意的な回答を好むなど、評価者のバイアスも学習し、RLによって冗長さや迎合が増幅されます。元のモデルに対するKLペナルティ、報酬モデルのアンサンブル、新しい比較データを用いた定期的な再学習により、こうした悪影響を抑えられます。
報酬モデリングと関連用語の比較#
- RLHF:教師ありファインチューニング、人間の比較データによる報酬モデリング、RL最適化を含む一連のパイプラインです。報酬モデリングはその第2段階です。
- 報酬関数:目標到達時に+1を与えるなど、人が手作業で記述する報酬です。報酬モデルは、関数を明示的に記述できない場合にデータから学習します。
- 検証可能な報酬:ユニットテストや数学の参照結果など、既知の解答とプログラムで照合します。学習済みモデルより悪用されにくい一方、答えを検証できる場合にしか使えません。
- 逆強化学習:タスクの専門家による実演から報酬関数を推定します。一方、RLHFの報酬モデリングでは、システム自身の出力に対する人々の比較から学習します。










