LLM Frontline
開発・エージェント

RLHFとDPOとは|LLMを「人が好む答え方」に寄せる事後学習の仕組みと、選好データで失敗しやすい点

ミナト・開発・API担当
・ 約15分で読めます
RLHFとDPOとは|LLMを「人が好む答え方」に寄せる事後学習の仕組みと、選好データで失敗しやすい点

チャットで使うLLMが「質問に答える」振る舞いをするのは、大量の文章で事前学習したあとに、人が好む答え方へ寄せる事後学習を重ねているからです。その代表がRLHF(Reinforcement Learning from Human Feedback、人間のフィードバックによる強化学習)と、その手順を簡略化したDPO(Direct Preference Optimization、直接選好最適化)です。

効果の大きさを示す数字として、2022年のInstructGPT論文があります。人による評価で、RLHFを施した13億パラメータのInstructGPTの出力が、100倍以上大きい1,750億パラメータのGPT-3の出力より好まれました。一方で、業務でこの手法を自分で回そうとすると、選好データの作り方や評価の仕方で失敗しやすく、API経由で学習できる場所も減っています。OpenAIの公式ドキュメントは2026年11月6日時点で、ファインチューニングの基盤を縮小しており新規ユーザーは利用できないと明記しています。この記事では、仕組みを原論文と公式ドキュメントで確かめたうえで、使いどころと注意点を整理します。

事後学習の中での位置づけ

LLMの学習は、大きく次の順で進みます。

  1. 事前学習: 大量の文章で次のトークンを予測し、言語と知識の土台を作る
  2. SFT(教師ありファインチューニング): 質問と模範回答の組で、指示に従う形を教える
  3. 選好の最適化: 同じ質問への複数の回答のうち、どちらが良いかの判断を使って、人が好む答え方へ寄せる

RLHFとDPOは3番目の手法です。SFTは「正解を1つ見せる」学習ですが、答え方の良し悪しは1つの正解で示しにくいことがあります。丁寧すぎず雑すぎない文体、断るべき依頼の断り方、根拠の示し方などです。こうした「AとBならAが良い」という比較の情報を学習に使うのが、選好の最適化です。

あわせて読みたい

ファインチューニングとRAGの使い分け|LLMをカスタマイズする2つの道の選び方

RLHFの3段階

人間の比較判断から報酬を学ぶという考え方は、2017年のChristianoらの論文「Deep reinforcement learning from human preferences」に遡ります。これを言語モデルの指示追従に大きな規模で適用したのが、2022年3月に公開されたInstructGPT論文です。論文の要旨は、手順を次の3段階で説明しています。

  1. 1

    お手本でSFTする

    ラベラー(評価者)が書いたプロンプトとOpenAI APIに送られたプロンプトに対して、ラベラーが望ましい回答を書き、そのデータでGPT-3を教師ありで微調整します。
  2. 2

    順位付けから報酬モデルを学習する

    同じプロンプトに対するモデルの複数の出力をラベラーが順位付けし、その比較データから「人が好む度合い」を点数で返す報酬モデルを学習します。
  3. 3

    強化学習で報酬を最大化する

    報酬モデルの点数が高くなるように、強化学習(PPO)でモデルを更新します。元のモデルから離れすぎないよう、ずれに罰則を付けながら進めます。

論文によると、こうして得たInstructGPTは、13億パラメータでも人の評価では1,750億パラメータのGPT-3より好まれ、真実性が上がり有害な出力が減りました。公開されたNLPのデータセットでの性能低下も小さかったとされています。

実務上の難しさは2段階目と3段階目にあります。報酬モデルという別のモデルを学習・保持し、強化学習の間はモデルから回答を生成し続ける必要があり、計算量と設定項目が多くなります。DPO論文も要旨で、RLHFを「複雑で、しばしば不安定な手順」と書いています。

DPOは報酬モデルを作らない

2023年5月に公開されたDPO論文は、RLHFが解いている最適化問題を式の上で変形し、報酬モデルを明示的に作らずに、選好データから直接モデルを学習できることを示しました。要旨の言葉では「単純な分類の損失だけで、標準的なRLHFの問題を解ける」方法です。

学習に使うのは、1つのプロンプトに対する「好ましい回答(chosen)」と「好ましくない回答(rejected)」の対です。損失は、学習中のモデルと参照モデル(学習前のモデルのコピー)の確率の比を使って、好ましい回答と好ましくない回答の差が広がるように設計されています。学習中にモデルから新しい回答を生成する必要がないため、通常のファインチューニングに近い手間で回せます。

観点RLHF(PPO)DPO
必要なモデル学習するモデル、参照モデル、報酬モデル(実装によっては価値関数も)学習するモデル、参照モデル
学習中の生成必要(モデルの出力を報酬モデルで採点する)不要(手元の対データだけを使う)
学習データ比較データ(報酬モデル用)と、強化学習用のプロンプト好ましい回答と好ましくない回答の対
主な調整値報酬・KL罰則・PPOの各種設定beta、学習率

メモ

DPO論文が「PPOベースのRLHFを上回った」としているのは、生成文の感情の制御で、要約と1ターンの対話では同等以上とされています。どのタスクでもDPOがRLHFより良いという主張ではありません。

betaは「元のモデルからどれだけ離れてよいか」

DPOの主な調整値がbetaです。Hugging FaceのTRL(DPOTrainer)のドキュメントは、betaを「参照モデルからのずれを制御する値で、大きいほどずれが小さくなる」と説明し、既定値を0.1としています。OpenAIのAPIでも同じ向きで、0から2の範囲で指定し、大きいほど元の振る舞いを保つ保守的な設定になり、既定はプラットフォーム側が値を決めるautoです。

TRLの既定の学習率は1e-6で、通常のTrainerの既定(5e-5)よりかなり小さく設定されています。LoRAでアダプターだけを学習する場合は、1e-5程度の高めの学習率を使うのが一般的だとドキュメントに書かれています。

あわせて読みたい

LoRA(低ランク適応)とは|重みを凍結して差分だけ学ぶ仕組みと、全パラメータの微調整に届かない場面

関連手法: AIの判断を使う、参照モデルを使わない

選好の最適化には、フィードバックの出どころや損失の形が異なる関連手法が多くあります。業務で名前を見かけることが多いものを3つ挙げます。DPOより前に出たものも含みます。

  • Constitutional AI(RLAIF): 2022年12月のAnthropicの論文。有害な出力を見分ける人間のラベルを使わず、原則のリストに基づいてAIが2つの出力を比較し、そのAIの選好で強化学習を行います(RL from AI Feedback)。人のラベルを大きく減らせる一方、比較するAI側の偏りがそのまま学習に入ります
  • IPO: DPOの損失に使われるロジット変換が過学習を招きうるとして、選好を直接最適化する形に変えた手法です。TRLでは損失の種類として選べます
  • SimPO: 系列の平均対数確率を報酬として使い、参照モデルを不要にした手法です。論文では、AlpacaEval 2で最大6.4ポイント、Arena-HardでDPOを最大7.5ポイント上回ったと報告されています。TRLのドキュメントは、元の損失にある長さの偏りに、トークン数で正規化して対処した手法だと説明しています

SimPOの数値は論文著者による報告で、比較の条件(ベースモデル、データ、評価ベンチマーク)は論文に記載されています。自社タスクでの優劣を示すものではありません。

選好データの形式

データは「プロンプト、好ましい回答、好ましくない回答」の3つ組が基本です。TRLではprompt・chosen・rejectedの3列を使い、ロールと本文からなる会話形式も受け付けます。会話形式で渡すと、チャットテンプレートは自動で適用されます。ツール呼び出しを含む会話や、画像を含むデータにも対応しています。

{"prompt": [{"role": "user", "content": "返品の受付期間を教えてください"}],
 "chosen": [{"role": "assistant", "content": "購入日から30日以内です。手続きは注文履歴の画面から行えます。"}],
 "rejected": [{"role": "assistant", "content": "返品についてはさまざまな条件がありますので、詳しくは規約をご確認ください。"}]}

OpenAIのAPIでは、各行をinput(messagesとtools)、preferred_output、non_preferred_outputの3項目で書きます。OpenAIの形式は1ターンの会話だけに対応し、好ましい回答と好ましくない回答は会話の最後のアシスタントのメッセージである必要があります。また、好ましい回答の一部でまずSFTを行い、そのモデルにDPOを掛ける手順を推奨しています。

あわせて読みたい

LLMで合成データ(synthetic data)を作る|評価セットと学習データを、実データが無いところから立ち上げる

選好の最適化で失敗しやすい点

好ましくない回答を下げることで学習が進む

TRLのドキュメントは、DPOの学習が実際には「好ましい回答の確率を上げるより、好ましくない回答の確率を下げる形で進むことが多い」と書いています(原文は「typically achieved by suppressing the likelihood of dispreferred completions rather than by increasing the likelihood of preferred ones」)。DPOの損失は参照モデルに対する相対的な差だけを見るため、差が広がっても好ましい回答の確率が上がるとは限りません。学習中に記録される指標のうち、rewards/margins(好ましい回答と好ましくない回答の差)やrewards/accuracies(好ましい回答の点数が高い割合)が上がっていても、好ましい回答そのものの確率(logps/chosen)が下がっていることがあります。学習の指標が良くても、出力の品質は別に確かめる必要があります。

長い回答が選ばれやすい

人もAIも、比較すると長く詳しい回答を好ましいと判断しやすい傾向があります。選好データにその偏りが入ると、学習後のモデルは必要以上に長く答えるようになりえます。SimPOやTRLのsigmoid_normのように長さで正規化する損失はこの偏りへの対策の1つですが、根本の対策は、データを作る段階で「長さではなく内容で選ぶ」基準を決めておくことです。

評価者がAIの場合は、その偏りも学習される

選好の対をLLMに判定させて作る方法(RLAIFやLLM-as-a-Judge)は、人手を大きく減らせます。ただし、判定するモデルが持つ偏り(長い回答や自分に似た文体を好む、提示順に影響される、など)は、そのまま学習に入ります。一部を人が確認し、判定の一致率を測ってから量産するのが安全です。

あわせて読みたい

LLM-as-a-Judge(LLMによる評価)とは|出力の良し悪しをLLMに採点させる仕組みとバイアスへの備え

知識を足す用途には向かない

選好の最適化が変えるのは主に答え方です。社内規程や商品情報のような知識を覚えさせる目的には向かず、その場合はRAGで参照させる方が更新もしやすくなります。プロンプトの指示や数件の例で目的の答え方になるなら、学習自体が要りません。

どこで学習を回すか

API経由で選好の最適化を回せる場所は減っています。OpenAIの公式ドキュメント(2026年11月6日時点)は次のように書いています。

  • ファインチューニングの基盤を縮小しており、新規ユーザーは利用できない
  • 対象となる既存顧客が学習ジョブを作れるのは2027年1月6日まで(ベースモデルがそれより先に停止する場合を除く)
  • DPOの対象として載っているgpt-4.1-nano-2025-04-14とそのファインチューニング済みモデルは2026年10月23日に停止済み。gpt-4.1-2025-04-14とgpt-4.1-mini-2025-04-14、それらのファインチューニング済みモデルは2027年1月14日に停止
  • ファインチューニング済みモデルは、ベースモデルが停止するまで推論に使える
  • 学習が終わったモデルは13の安全カテゴリで評価され、いずれかのカテゴリで不合格の例が閾値を超えるとデプロイできない

OpenAIで選好の最適化を使っている場合は、2027年1月14日以降の置き換え先を先に決めておく必要があります。自前で回す場合は、TRLのDPOTrainerのようなオープンソースのライブラリと、オープンウェイトのモデルの組み合わせが現実的な選択肢になります。TRLは参照モデルを省略すると学習前のモデルを自動で参照モデルとして使い、precompute_ref_log_probsで参照モデルの確率を事前計算すれば学習中のメモリを減らせます。

注意

オープンウェイトのモデルを追加学習して業務に使う場合は、元のモデルのライセンスが派生モデルの配布や商用利用をどう扱っているかを先に確認してください。ライセンスの条件はモデルごとに異なります。

よくある質問

RLHFとDPOの一番の違いは何ですか
RLHFは、比較データから報酬モデルを学習し、その点数を強化学習で最大化する2段構えです。DPOは報酬モデルを明示的に作らず、好ましい回答と好ましくない回答の対から分類問題に近い損失で直接学習します。DPOは学習中にモデルから回答を生成しないため、手順が単純で計算量も小さくなります。
SFTとDPOはどちらを先にやるべきですか
一般的にはSFTが先です。OpenAIの公式ドキュメントも、好ましい回答の一部でまずSFTを行い、そのモデルにDPOを掛ける手順を推奨しています。SFTで指示に従う形を作ってから、答え方の好みをDPOで寄せる順番です。
betaはどう決めればよいですか
betaは学習前のモデルからどれだけ離れてよいかを決める値で、大きいほど元の振る舞いに近いままになります。Hugging Face TRLの既定は0.1、OpenAIのAPIは0から2の範囲で既定はautoです。まず既定値で学習し、評価セットで出力の品質と元の能力の低下を見ながら調整してください。
選好データは何件くらい必要ですか
本記事で参照した公式ドキュメントには、件数の目安は書かれていません。件数よりも、好ましい回答と好ましくない回答の差が判断基準どおりになっているか、長さなどの偏りが入っていないかの方が結果を左右します。少量で学習と評価を回し、効果を確かめてから増やすのが安全です。
OpenAIのAPIで今からDPOを始められますか
2026年11月6日時点の公式ドキュメントでは、ファインチューニングの基盤は縮小中で新規ユーザーは利用できません。既存の対象顧客も学習ジョブを作れるのは2027年1月6日までです。新しく始めるなら、オープンソースのライブラリとオープンウェイトのモデルで自前で回すことを検討してください。

選好の最適化を始める前に確認すること

  • プロンプトの指示や数件の例では目的の答え方にならないことを確かめた
  • 目的が知識の追加ではなく答え方の調整であることを確かめた
  • 好ましい回答を選ぶ基準を文章にし、長さではなく内容で選ぶと決めた
  • AIに判定させる場合は、一部を人が確認して一致率を測った
  • 学習の指標とは別に、評価セットで品質と元の能力の低下を測る手順を用意した
  • APIで学習している場合は、ベースモデルの停止日と置き換え先を確認した
  • 元のモデルのライセンスが派生モデルの利用を認めているか確認した

まとめ

RLHFとDPOは、どちらも「AとBならAが良い」という比較の情報でLLMの答え方を寄せる手法です。RLHFは報酬モデルと強化学習で、DPOは対データからの直接の学習で、同じ目的に向かいます。手順はDPOで大きく単純になりましたが、結果を左右するのは手法の選択よりも選好データの質と、学習の指標に頼らない評価です。まずは学習しなくても済まないかを確かめ、必要なら少量のデータで学習と評価を一巡させるところから始めてください。

出典・参考

この記事をシェア

関連する記事

開発・エージェント

LoRA(低ランク適応)とは|重みを凍結して差分だけ学ぶ仕組みと、全パラメータの微調整に届かない場面

LLMの追加学習で定番のLoRAを、原論文(2021年)・QLoRA(2023年)・比較研究(2024年、2025年)の数値から整理します。学習するパラメータが減る理由、効く層と学習率、継続事前学習で全パラメータの微調整に負ける場面、アダプター運用とライセンスの注意点までをまとめます。

開発・エージェント

ファインチューニングとRAGの使い分け|LLMをカスタマイズする2つの道の選び方

LLMを自社用途に寄せる方法には、プロンプト、RAG、ファインチューニングの階層があります。RAGとファインチューニングはそれぞれ何を得意とし、どこで選ぶべきか。知識の更新性、出力の安定性、コストとトラフィックの観点から使い分けの原則を整理し、実務で有効なハイブリッド構成と落とし穴まで、公式ドキュメントを確認しながら冷静にまとめます。

開発・エージェント

LLM-as-a-Judge(LLMによる評価)とは|出力の良し悪しをLLMに採点させる仕組みとバイアスへの備え

LLM-as-a-Judgeは、LLMの出力の良し悪しを別のLLMに採点・比較させる評価手法です。単一採点と対比較の方式、人手評価をスケールさせる使いどころ、位置・冗長性・自己選好といったバイアスと、順序入れ替えやルーブリックなどの実務的な対策を冷静に整理します。