DPOとは?RLHFを単純化して選好学習を直接最適化する仕組みと使い道

DPOは、報酬モデル学習とPPOを使わずに、好ましい応答と好ましくない応答の比較データからLLMを直接学習させる手法です。RLHFとの違い、数式の考え方、実験結果、実務での応用ポイントを日本語で整理します。

参考文献

Direct Preference Optimization: Your Language Model is Secretly a Reward Model

Rafael Rafailov, Archit Sharma, Eric Mitchell, Stefano Ermon, Christopher D. Manning, Chelsea Finn

論文を見る

今回の論文

今回取り上げるのは、Rafael Rafailov、Archit Sharma、Eric Mitchell、Stefano Ermon、Christopher D. Manning、Chelsea Finn による 2023 年の論文「Direct Preference Optimization: Your Language Model is Secretly a Reward Model」です。公開元は arXiv で、その後 NeurIPS 2023 でも発表されています。研究分野は、LLM の選好学習、RLHF、アライメント学習です。URL は https://arxiv.org/abs/2305.18290 です。

この論文を選んだ理由は、いま実務でも広く使われている DPO の原点であり、なぜ「RLHF は重いが、選好データの価値は高い」という状況に対して別解が生まれたのかがよくわかるからです。個人開発でも企業プロダクトでも、手元のモデルをより使いやすい応答に寄せたい場面は多く、そのとき報酬モデルと PPO を必須にしない発想はかなり応用範囲が広いです。

どんな技術か

DPO は、好ましい応答と好ましくない応答のペアを使って、言語モデルを直接チューニングする技術です。従来の RLHF では、まず人間の選好データから報酬モデルを学習し、その報酬を最大化するように PPO などの強化学習でモデルを更新していました。DPO はその 2 段構えをやめて、比較データからそのままモデルを更新します。

ポイントは、選好学習を「どちらの応答が好まれるかを当てる分類問題」に変形したことです。これにより、学習時にサンプリングを回し続ける RL ループや、別個の報酬モデルを安定して訓練する工程が不要になります。言い換えると、DPO は RLHF の目的を捨てたのではなく、同じ目的をより扱いやすい形に書き換えた手法です。

課題

この技術が解決しようとしている課題は、LLM の振る舞いを人間の好みに合わせて調整したいのに、従来の RLHF パイプラインが重くて不安定だったことです。

難しいのは、言語モデルの出力品質を「正解ラベル」だけでは表しにくい点です。要約、対話、コード補助、エージェント応答のようなタスクでは、明確な 1 つの正解よりも、「A より B のほうが役に立つ」「この返答は冗長すぎる」といった相対比較のほうが集めやすいです。そのため、選好データ自体は集めやすい一方で、それを安定した学習に落とし込むことが難題でした。

既存の方法では、比較データからまず報酬モデルを作り、その報酬を最大化するように PPO で言語モデルを更新します。ただしこの流れには限界があります。報酬モデルがずれると最適化先そのものがずれますし、PPO はハイパーパラメータの調整、KL 制御、学習不安定性、サンプリングコストなどの実装負荷が大きいです。特に中小規模のチームでは、「理論的には有効でも、運用できる形に落ちにくい」という問題になりがちです。

なぜこの課題を解く必要があるかというと、実際の AI システムでは「事実を知っている」だけでは不十分だからです。回答を簡潔にしたい、安全寄りにしたい、文体を整えたい、社内ルールに沿わせたい、といった調整はプロダクト品質に直結します。ここを軽く回せないと、モデル改善サイクルが遅くなります。DPO は、その改善サイクルを速くするための学習手法だと捉えるとわかりやすいです。

用語解説

RLHF
Reinforcement Learning from Human Feedback の略で、人間の評価を使ってモデルの出力傾向を調整する枠組みです。DPO は RLHF の問題設定を引き継ぎつつ、報酬モデル学習と強化学習ループを省く点が重要です。
選好データ
同じ入力に対して 2 つ以上の応答候補を見せ、「どちらが良いか」を比較したデータです。この論文では、絶対スコアではなく相対比較を使うことで、実務で集めやすいフィードバックをそのまま学習に使っています。
参照モデル
DPO で基準点として使う元のモデルです。新しいモデルは、この参照モデルからあまり離れすぎないようにしながら、好ましい応答の確率を上げます。RLHF の KL 制約を、より扱いやすい形で持ち込むために重要です。
Bradley-Terry モデル
2 つの候補を比べたとき、どちらが選ばれるかをスコア差で表す確率モデルです。DPO の数式はこの考え方に乗っており、「選ばれた応答のほうが高い報酬を持つはず」という仮定を学習に落とし込みます。
KL 制約
新しいモデルが元のモデルからどれだけ離れてよいかを制御する考え方です。DPO は好ましい応答だけを無制限に押し上げるのではなく、元モデルからの逸脱を抑える前提で設計されているため、モード崩壊や不自然な最適化を起こしにくくしています。

技術の仕組み

DPO のコアは、「報酬関数を先に学習してから最適化する」のではなく、「最適化後の方策がどんな形になるか」を先に式で使ってしまう点です。そこから、報酬モデルを明示的に持たなくても選好学習できる形に落としています。

基本アイデア

通常の RLHF では、まず選好データから報酬モデルを学びます。その後、「報酬が高く、かつ元モデルから離れすぎない」方策を PPO で探します。DPO はここで、KL 制約付きの報酬最大化問題の最適方策が、報酬と参照モデルの指数形で書けることを使います。

この式を逆向きに見ると、ある方策が与えられたとき、その方策は暗黙的にある報酬関数を表していると解釈できます。論文のタイトルにある「Your Language Model is Secretly a Reward Model」はこの意味です。つまり、モデル自身の確率の付き方を使えば、別の報酬モデルを明示的に持たなくてもよい、という発想です。

学習目標は「選ばれた応答の比率を上げる」こと

DPO では、同じプロンプトに対して好ましい応答 y_w と好ましくない応答 y_l を用意します。そして、新しいモデルがこの 2 つに与える対数確率の差を、参照モデルの対数確率差と比較します。

直感的には、新しいモデルが参照モデルよりも「好ましい応答を相対的に高く評価する」ほど損失が下がります。ただし、単に y_w の確率を上げて y_l の確率を下げるだけではありません。参照モデルとの差分を見るため、元モデルの知識や流暢さを土台に残しやすいです。

この目的関数は最終的にシグモイド付きの二値分類損失になります。実装感としては、強化学習というより「ペアワイズ比較を使った教師あり学習」に近いです。ここが DPO の強さで、学習パイプラインを大きく簡素化できます。

報酬モデルを消しても、RLHF の意図は残る

DPO は「報酬モデルを使わない」ので、雑に見ると RLHF とは別物に見えます。ただし本質は、KL 制約付きの報酬最大化問題を別のパラメータ化で解いているだけです。論文では、Bradley-Terry モデルの下で人間の選好確率を、報酬差ではなく方策差の関数として書き直しています。

この書き換えの重要な点は、最適方策に現れる正規化項が選好比較では打ち消し合うことです。だから、扱いにくい分配関数を直接計算しなくて済みます。数式的にはかなりきれいですが、実務的には「報酬モデルを独立に安定学習させる必要がなくなった」と理解すれば十分です。

参照モデルがブレーキ役になる

DPO にはハイパーパラメータ beta があり、どれだけ強く好みへ寄せるかを制御します。beta を大きくすると好ましい応答と好ましくない応答の差を強く押し広げますが、そのぶん元モデルから離れやすくなります。

参照モデルの存在はかなり重要です。もし参照モデルなしで好ましい応答だけを押し上げると、データの偏りを過剰に覚えたり、出力多様性を失ったりしやすくなります。DPO は「元モデルの確率分布をベースに、そこから必要な方向へだけ傾ける」という学習になっているため、実装は単純でもかなり実用的です。

データの扱い方

DPO に必要なのは、基本的には (prompt, chosen, rejected) の 3 つ組です。つまり、ある入力に対してどちらの応答が望ましいかがわかればよく、絶対スコアや細かな報酬設計は必須ではありません。

この性質は実務で大きな利点になります。たとえば社内アシスタントなら、「2 つの応答候補のどちらが社内向けに適切か」を比較評価して集めればよいです。長文の rubric を点数化するより、ペア比較のほうが annotator にも負担が少ないことが多いです。

推論時は普通のモデルとして使える

DPO は学習手法なので、推論時に特別なアルゴリズムを要求しません。学習後のモデルは通常のデコードで使えます。つまり、学習コストを上げすぎずに、出力の好みだけを変えたいときに向いています。

この点は、RAG、エージェント、社内チャット、要約 SaaS など、既存の生成基盤に後から導入しやすい理由でもあります。推論パイプラインを大きく変えずに、応答傾向だけを改善できるからです。

実験と結果

論文では、DPO が本当に RLHF の代替になるかを 3 つの設定で検証しています。制御しやすい感情制御生成、実務に近い要約、対話です。単に損失が下がるかではなく、選好に沿った出力がどれだけ出るかを見ています。

何を検証したのか

検証の主眼は 3 つあります。1 つ目は、DPO が KL 制約付き報酬最大化をどれだけ効率よく達成できるかです。2 つ目は、要約や対話のような実データでも PPO ベース RLHF と同等以上に働くかです。3 つ目は、別分布の入力に対してもある程度一般化するかです。

使ったデータセットと評価設定

制御実験では IMDb レビューの続きを生成し、正の感情へ寄せる設定を使っています。ここでは事前学習済み感情分類器を真の報酬として使えるので、報酬と KL のトレードオフを比較しやすいです。

要約では Reddit TL;DR とその人手選好データを使い、GPT-4 による勝率評価で比較しています。対話では Anthropic HH データセットを使い、1 ターン対話でどの応答が好ましいかを見ています。論文では要約用の SFT モデルに GPT-J 系を使い、対話では Pythia-2.8B を基礎モデルとして使っています。

感情制御では reward-KL frontier が PPO を上回った

感情制御の実験では、DPO は reward と KL のフロンティアで PPO を一貫して上回りました。論文では、DPO と PPO は同じ目的を最適化しているはずなのに、DPO のほうが高い報酬を保ちながら KL を低く抑えられたと報告しています。さらに、真の報酬関数を使える PPO-GT よりも良いフロンティアを示した点が目立ちます。

これは、DPO が単に「簡単な代用品」ではないことを示しています。最適化の安定性まで含めると、理論的に同じ目的でも実装しやすい形へ書き換える価値が大きい、という結果です。

要約では PPO の 57% を上回る約 61% の勝率

TL;DR 要約では、DPO は温度 0.0 の設定で参照要約に対して約 61% の勝率を出し、PPO の最良設定である約 57% を上回りました。しかも論文では、DPO はサンプリング温度の変化に対して PPO より頑健だったとされています。PPO は高温度側で性能がベースモデル近くまで落ちる一方、DPO は崩れにくい傾向を見せました。

さらに、DPO の出力は PPO の出力に対する人手比較でも 58% の割合で好まれています。つまり、GPT-4 判定だけでなく、人間の見方でも DPO が優位だったということです。

対話では実用的な手法で唯一、選好ラベルを上回った

Anthropic HH の 1 ターン対話では、DPO は Best-of-128 に近いかそれ以上の性能を示しつつ、計算効率の面でははるかに軽いと報告されています。論文中では、DPO は「実用的な計算量の方法として唯一、テストセットの chosen completion を上回った」と説明されています。

ここで重要なのは、Best-of-N のような方法は推論時に大量サンプリングが必要で、本番運用では重いことです。DPO は学習段階で好みをモデル内部に織り込むので、推論時のコスト増を抑えやすいです。

別分布への一般化でも DPO が優位

Reddit TL;DR で学習した要約モデルを CNN/DailyMail に当てた一般化実験では、DPO の GPT-4 勝率は温度 0.0 で 0.36、温度 0.25 で 0.31 でした。PPO はそれぞれ 0.26 と 0.23 です。つまり、学習分布が変わっても DPO の優位性は残りました。

この結果から言えるのは、DPO が単に訓練データ上のペアを丸暗記しているのではなく、ある程度は「どの応答が望ましいか」の傾向をモデル化できていることです。もちろん大規模な分布外一般化を断定できるほどではありませんが、実務での再利用性を考えるうえでは前向きな結果です。

何に使える?

DPO は、モデルの知識量を増やすためというより、出力の傾向を実務向けに整えるために使いやすい技術です。特に「ある用途に合わせて、好ましい答え方へ寄せたい」場面で強いです。

社内向けアシスタントの応答調整

社内規程、FAQ、ナレッジ検索と組み合わせたアシスタントでは、単に正しいだけでなく、簡潔さ、根拠の示し方、断定しすぎない表現が重要です。DPO なら、同じ質問に対して「より業務向きな返答」を chosen として集めれば、その癖を学習させやすいです。

RAG 単体だと知識注入はできますが、答え方の質感までは制御しにくいことがあります。そこに DPO を重ねると、検索で根拠を取りつつ、出力スタイルを運用向けに寄せやすくなります。

要約や文章生成 SaaS の品質改善

要約プロダクトでは、正確性に加えて、冗長さの少なさ、結論先出し、読みやすさが重要です。これらは絶対スコア化しにくい一方で、2 つの候補を見比べれば評価しやすいです。DPO はまさにそうした比較データと相性が良いです。

たとえば営業日報要約、会議メモ要約、ニュース要約などで、ユーザーが好む文体を比較データとして回収できれば、小さなプロダクトでも出力品質を継続改善しやすくなります。

エージェントの最終応答最適化

AI エージェントでは、ツール選択や計画立案だけでなく、最後にユーザーへ返す説明の質が満足度を左右します。ツール呼び出し自体はプロンプトやルールで制御しつつ、最終回答だけ DPO で改善する設計は十分ありえます。

特に「長すぎる報告を避けたい」「失敗時は次アクションを明示したい」「社内オペレーションに沿った返答順にしたい」といった選好は、比較ラベルで集めやすいので DPO 向きです。

オープンモデルの軽量アラインメント

個人開発や小規模チームでは、フル RLHF を回すのはかなり重いです。一方で DPO は、SFT 済みモデルと比較データがあれば始めやすく、学習実装も比較的シンプルです。既存のオープンモデルに少量のドメイン選好データを載せる用途で特に使いやすいです。

開発や事業へのヒント

この論文から得られる大きなヒントは、プロダクト改善に必要なのは「もっと大きいモデル」ではなく、「どの出力を良しとするかを学習できる仕組み」のことが多いという点です。

小さなチームほど比較データを資産にしやすい

大規模な教師データを新規作成するのは重いですが、2 つの候補を比べる評価なら社内でも回しやすいです。レビュー画面を作って chosen / rejected を蓄積し、DPO で回すだけでも、独自の応答品質を作りやすくなります。

これは事業上も重要です。モデルそのものがコモディティ化しても、「自社の業務で好まれる出力傾向」をデータとして持てれば差別化になります。DPO はその差別化を比較的低コストで学習へ変換できる方法です。

RAG やワークフローの後段改善に効く

多くの AI プロダクトでは、精度課題のすべてが検索や基盤モデルにあるわけではありません。実際には、回答の構成、断り方、粒度、次アクションの出し方など、出力整形の課題が多いです。DPO はその層に効きます。

もし既存サービスで「答えは合っているのに使いづらい」という声があるなら、Retriever を変える前に、回答候補の比較データを集めて DPO を試す価値があります。

明示的な報酬設計が難しい領域で強い

コードレビュー支援、顧客応対支援、社内ヘルプデスクなどでは、何点なら合格かを数値化しにくいです。一方で「A より B が良い」は判断しやすいです。DPO はその現場感に合っています。

特に、プロダクトチームや CS チームが日常的にレビューしている返答ログがあるなら、それを比較形式へ再編成するだけで学習データ化できる可能性があります。

今後見るべき方向性

DPO 自体はかなり有力ですが、後続研究では IPO、ORPO、SimPO など、より安定性やデータ効率を狙った派生手法も出ています。したがって、DPO は終着点というより、「選好最適化を RL から分類へ寄せる流れ」の出発点として押さえるとよいです。

実務では、SFT の質、比較データの粒度、参照モデルの選び方、beta の設定が結果を大きく左右します。アルゴリズム名だけでなく、運用上どの比較を集めるかまで設計することが重要です。

限界

DPO の限界としてまずあるのは、比較データの質に強く依存することです。chosen と rejected の差が曖昧だったり、評価者ごとの基準がぶれていたりすると、モデルもその揺れを学習してしまいます。

また、DPO は 2 応答比較を基本にしているため、多段の相互作用や長期的な成果を直接最適化するのは得意ではありません。エージェントのツール使用のように、途中行動の良し悪しが最終結果へ効く設定では、DPO 単体では評価信号が粗い場合があります。

実装は PPO より軽いとはいえ、参照モデルを使うぶんメモリ消費は増えますし、長い応答を多数比較する学習では計算コストも無視できません。さらに、chosen 側の表現に偏りがあると、モデルが不自然に冗長または画一的になる可能性もあります。

論文の評価も、最大 6B 級モデルと比較的限定的なタスク設定が中心です。その後の大規模モデル時代でも DPO は広く使われていますが、どの設定でも PPO 系や他の選好最適化法より必ず優れるとは限りません。特に、安全性、多目的最適化、長期エージェント評価のような複雑な領域では、追加の工夫が必要です。

よくある質問

Q. DPO は RLHF を完全に置き換えますか?

A. 完全に置き換えるとは言い切れません。DPO は多くの選好学習タスクで強力ですが、長期的な行動最適化や複雑な報酬設計が必要な場面では、別の手法や追加設計が必要です。ただし、要約、対話、スタイル制御のような用途では、まず試す価値が高いです。

Q. DPO と SFT の違いは何ですか?

A. SFT は「この出力を正解として真似る」学習です。DPO は「この 2 つなら、どちらを好むか」を学習します。そのため、絶対的な正解文を大量に作れない場面でも使いやすく、冗長さや丁寧さのような相対評価を反映しやすいです。

Q. DPO は RAG システムにも使えますか?

A. 使えます。RAG は知識を取りに行く仕組みで、DPO は最終的な答え方を調整する仕組みです。たとえば、引用を必ず含める、結論を先に言う、不明点は保留するといった方針を比較データで学習させる用途が考えられます。

Q. 比較データはどれくらい必要ですか?

A. タスクによりますが、まずは数千から数万件の高品質な比較データで十分に改善が見えることがあります。重要なのは量だけではなく、どういう差を学ばせたいかが一貫していることです。曖昧なラベルを大量に集めるより、基準が揃った少量データのほうが効くことがあります。

Q. 小規模チームでも導入できますか?

A. できます。PPO ベース RLHF よりはかなり現実的です。既存の SFT モデル、比較データ、一般的な学習基盤があれば始めやすく、推論時の追加コストもありません。まずは特定ユースケースに絞って、小さく比較データを作る進め方が現実的です。

今日の学び

この論文は、LLM を人間の好みに合わせて調整したいのに、従来の RLHF が重くて不安定だったという課題を扱いました。これに対して DPO は、報酬モデルと PPO を明示的に回さず、好ましい応答と好ましくない応答の比較データから方策を直接最適化する形で解こうとしました。

ここから得られるヒントは、AI プロダクトの品質改善では「何を知っているか」だけでなく、「どう答えるか」を学習できることが重要だということです。比較データを資産化できれば、小さなチームでも独自の応答品質を作りやすくなります。

関連記事