強化学習アルゴリズムの整理:PPOからGRPO、そしてDAPOへ

M L N L Pコミュニティは、国内外で知られている機械学習と自然言語処理のコミュニティであり、国内外のN L P修士・博士課程の学生、大学教員、企業研究者などが対象です。

コミュニティのビジョンは、国内外の自然言語処理、機械学習の学術界、産業界、そして多くの愛好家、特に初心者学生の交流と進歩を促進することです。

出典 | 知乎

強化学習は報酬最大化の仮説に基づいており、すべてのアルゴリズムは最大の期待報酬を得ることに基づいています。

まず、2つの概念を明確にします。

On-Policy: トレーニングデータは、トレーニングが必要なポリシー自体が環境とのインタラクションによって生成し、自身が生成したデータを使用してトレーニングを行います(リアルタイムのインタラクションが必要と理解できます)

Off-Policy: トレーニングデータは事前に収集されており(人間または他のポリシーによって生成)、ポリシーはこれらのデータから直接学習します。

P P O、G R P O、D A P OはすべてO n - P o l i c yポリシーです。これらのO n - P o l i c yポリシーは、一般的にトレーニングパイプラインを構成する4つの主要なコンポーネントから構成されています。

- Actor: アクションを生成するポリシー

- Critic: アクションまたは状態の価値を評価するネットワーク

- Reward Model:状態遷移に対して即時の報酬を与えるモデルまたは関数

- Reference Model: 参照ポリシー。これは、トレーニング中にポリシーネットワークが継続的に更新された後、元のポリシーから離れすぎるのを防ぐためです。(学習が迷走するのを防ぐ)

P P Oから始め、強化学習のトレーニングの考え方を整理する

Policy gradient optimization

報酬仮説に基づいて、我々は期待報酬を最大化できるポリシーを得ることを望んでいます。この目標は次のように書くことができます。
[式 1]
そして報酬は軌跡上の各アクションの即時報酬から来るので、この目標は次のように書くことができます。
[式 2]
ここでの は一連のアクションと状態の軌跡、つまりs a s aを代表します。
そして
[式 3]
ここでの状態遷移は現在の状態と選択されたアクションによって決定されます。つまり:
[式 4]
すると、一つの軌跡全体の確率分布は次のように書くことができます。
[式 5]
policy gradientの方法では、勾配上昇によって軌跡から得られた報酬を最大化することを望んでいます。つまり、我々の目標関数を最大化することです。勾配上昇の更新式は次のように書くことができます。
[式 6]
では問題です。目標関数の勾配をどう計算するのか。この目標関数は一回のイテレーションにおける軌跡上の全ての点に関係しており、直接計算したり推定したりするのは非常に困難です。しかも環境とポリシーによって共同で決定される状態遷移項もあります。これほど多くの項が混ざっていると解けないように見えます。しかし、数学者は天才とでも言いましょうか、それは一連の簡単な変換によってポリシーにのみ関連する項に変換できます。まず、この目標関数の勾配について簡単な導出を行います。
[式 7]
すると、上記の目標関数の勾配は、軌跡遷移と報酬関数に対する積分に変換されました。l o g関数の導関数変換テクニックを用いると、上記の式は次のように変換できます。
[式 8]
はパスを表すので、ここでのこの積分は期待値として書き直すことができます。
[式 9]
我々は を知っているので、この方程式のl o gを取り、 について偏微分すると、次を得ることができます。
[式 10]
この変換は非常に巧妙です。もしl o gを取らないと、ここでの連続する状態遷移を処理しなければなりません。そしてそれはしばしば環境に関係する不定項です。

すると、目標関数の導関数は次のように変わります。
[式 11]
これでポリシーと報酬にのみ関連する式が得られました。これを計算することはできますが、全ての軌跡をサンプリングして勾配を計算することは明らかに不可能です。多くのシナリオでは軌跡が無限であるか、全ての軌跡を列挙するのに必要な計算量が大きすぎるため、推定するしかありません。そしてサンプリング推定を行うためには、有名なモンテカルロアルゴリズムを導入する必要があります。モンテカルロアルゴリズムは、局所的なサンプリングによって全体を推定する方法です。では、軌跡の一部をサンプリングして、次を得ることができます。
[式 12]
すると、この は期待値、つまりポリシー勾配の推定値として使用できます。

Reinforce アルゴリズム

上記のポリシー勾配最適化の導出に基づいて、古典的なReinforceアルゴリズムを紹介できます。このアルゴリズムは簡単な勾配ポリシー最適化の応用です。

では、最適化が必要なポリシーネットワーク があります。それは現在の状態 に基づいて、現在採用すべきアクションを指示するためのアクション確率分布 を出力します。

ポリシーネットワークがあれば、環境内でアクション軌跡 を収集し始めることができます。これらのアクション軌跡はポリシー更新の勾配(上記のモンテカルロ法)を計算するために使用されます。

十分な数の軌跡を収集したら、このモンテカルロ推定法を使用してポリシー勾配を計算します。
[式 13]
そして勾配に基づいてポリシーを更新します。
[式 14]
サンプリングを繰り返して勾配を計算し、ネットワークが収束するまで更新します。

これが古典的なReinforceアルゴリズムです。

このアルゴリズムを評価してみましょう。

これはModel-freeアルゴリズムです。なぜなら、環境によって決定される状態遷移プロセスではなく、ポリシーネットワーク自体の出力のサンプリングのみに関与するからです。

しかし、サンプリング推定が必要なため、モンテカルロ法はポリシー勾配の不偏推定ですが、サンプルが少なすぎると得られる分散が非常に大きくなる可能性があり、これはトレーニングの安定性にとって不利です。実際、これはポリシー勾配最適化方法の固有の欠陥でもあります。学習する行動が十分に複雑である(サンプリングされる軌跡が長すぎる)か、ポリシーネットワークが大きすぎる場合、必要なサンプリングと計算量は非常に大きくなり、そうでなければ勾配推定の分散が非常に大きくなります。

では、分散を減らす方法はありますか?ありますよ、兄弟、あります。

Focus only on the future

これまで紹介した勾配ポリシー最適化アルゴリズムを振り返ってみましょう。各ステップの推定値は、軌跡の開始から終了までのすべての報酬を乗算しています。本当に必要でしょうか?10ステップ目で次の意思決定をするとき、過去9ステップの報酬をまだ考慮に入れるべきでしょうか?何?あなたは必要ないと言いましたね、私も必要ないと言います。因果の観点から見ると、以前の報酬は全く必要ありません!では、ポリシー勾配の数学的表現を書き換えて、次のように変更できます。
[式 15]
このように各軌跡点の勾配を計算すると、過去の報酬がフィルタリングされ、ある程度分散が減少します。ここでの は一般的にrewards-to-go、または状態-アクション価値(DQNアルゴリズムのQ値に対応)と呼ばれます。

報酬ベースラインの導入

ベースラインを導入すると、分散を効果的に減らすことができます(たとえば、データがベースラインの周りで変動する場合、全てのデータからこのベースラインを差し引くと、データ全体の分散が効果的に減少します。大まかに想像すればわかるでしょう)。
[式 16]
ここでのbは導入されたベースラインであり、これはしばしば価値モデルを使用して現在の状態の価値を評価するために使用されます。つまり
[式 17]

優位関数 (Advantage function)

rewards-to-goと報酬ベースラインを導入した後、 この項は優位関数と呼ばれ、その意味は、現在の状態であるアクションを選択した価値が、この状態の平均価値と比較してどれだけ良いか悪いかを示します。通常、前者の項はQ-functionと呼ばれ、後者の項はvalue-estimateです。では、この項は次のように定義できます。
[式 18]
すると現在のポリシー勾配推定は次のように書き直すことができます。
[式 19]
rewards-to-goから優位関数まで、これまでの全ては分散を減らすための作業です。次にPPOアルゴリズムを紹介します。

Generalized Advantage estimation(GAE)

価値関数について、我々は
[式 20]
とすると、優位関数は次のように書くことができます。
[式 21]
同様に、もう一歩反復すると、次を得ることができます。
[式 22]
繰り返し反復すると、次を得ることができます。
[式 23]
各ステップのT D誤差を と定義します。観察しやすくするために、もう1項
[式 24]
と書き直すことができます。それを複数ステップ推定優位関数の式に代入すると、次が得られます。
[式 25]
上記はすべて、サンプリングによって優位関数を推定するための実行可能な公式です。

では、G A Eは複数ステップ推定優位関数の合計です。
[式 26]
ここでの合計では、各項に減衰因子
[式 27]
を加えています。

これを展開すると、次が得られます。
[式 28]
Kステップを収集する場合、等比数列の和の公式により、次が得られます。
[式 29]
のとき、上記の式は実際に
[式 30]
となります。すると
[式 31]
をG A Eとすると、次が得られます。
[式 32]
この式は再帰的な形式でも書くことができます。つまり:
[式 33]
上記のすべての導出過程において、
[式 34]
があります。

この減衰因子について境界値を用いて簡単な分析を行うことができます。
のとき 、つまりGAEに貢献するのは1ステップ分割推定のみであり、 のとき 、軌跡全体のサンプリングがGAEに貢献します。したがって、分散-バイアス間のトレードオフ問題をバランスさせるためにこれを使用できます。 が大きい場合、GAEは軌跡サンプリングの履歴情報をより多く利用するため、バイアスを減らすことができますが、分散が増加する可能性があります。一方、 が小さい場合、GAEは軌跡サンプリングの履歴情報を少なく利用し、短期的なTD推定をより重視するため、分散を減らすことができますが、バイアスが増加する可能性があります。これがGAEの導出過程です。

Proximal Policy Optimization

次に有名なPPOアルゴリズムです。PPOは2つのモデルを訓練する必要があります。一つはポリシーネットワーク、もう一つは価値ネットワークです(標準的なActor-critic構造)。

その目的関数から分析しましょう。まずポリシーネットワークについてです。
[式 35]
ここでの は前述のGAEであり、ここにclip項があり、ポリシーの更新が大きくなりすぎるのを防ぐためです。

価値モデルについて:
[式 36]
これは非常に単純な二乗損失です。

そして、探索を奨励するためのいわゆるエントロピー損失もあります。
[式 37]

したがって、全体の損失は次のようになります。
[式 38]
もちろん、ここでの損失は完全に自分で設計できますが、一般的にはここでのclip原則に従います。なぜなら、PPOの核心はモデルの訓練パラメータの更新が大きくなりすぎないようにすることであり、そうでなければ訓練するほど偏ってしまうからです。ここには参照モデルとのKLダイバージェンス項もあり、モデルが遠くに偏らないように維持するためです。つまり、目的関数に を追加します。
[式 39]

例を挙げる

数式が多すぎて見たくない?それなら例から始めて、強化学習のプロセスを整理してみましょう。

例えば、PPOを使って大規模言語モデルを訓練する場合:

トレーニングプロセス中、ポリシーには2つの状態があります。一つはサンプリング軌跡を生成するための で、それはトークン予測の生成プロセス中にパラメータを一定に保ちます。もう一つは で、これは勾配更新に使用されます。そして各ラウンドのサンプリングが終了し勾配が更新された後、
[式 40]

ステップごとに言うと、次のようになります。

- プロンプトを準備し、それに投入します。

- プロンプトに基づいて応答を生成します。各応答には複数のトークンが含まれており、我々の訓練はこれらのトークン生成のプロセスに作用します。

- 生成プロセス中に、生成された各トークンについて、以下を記録します。(この文脈では、モデルが現在のトークンを生成する前のコンテキストです)、 (この文脈では、モデルが生成したトークンと、その生成確率のログです)、および対応する 。この部分は優位値を計算するために使用されます。

一般的に、強化学習でLLMを訓練する場合、モデルが生成した全体的な応答に対して報酬モデルまたは報酬関数を使用して報酬を与え、その報酬を各トークンにコピーまたは均等に分配し、それを使用して優位値を計算します。

そして、PPOの目的関数に基づいて勾配を計算します。バッチデータの勾配の計算が完了したら、それを使用してネットワークを更新し、収束するまで続けます。

ここでDPOについて少し触れます。

DPO(Direct Preference Optimization)

PPOの目的関数から出発して、
[式 41]
この最大化目標は最小化目標に書き換えることができます。
[式 42]
この目標はさらに次のように書くことができます。
[式 43]
最終的に
[式 44]
を得ます。では分母については、それを確率分布として構成することができます。
[式 45]
ここで
[式 46]

すると、上記の目的関数は次のように書くことができます。
[式 47]
つまり
[式 48]
は と無関係なので、勾配計算には使用されません。したがって、直接無視できます。
[式 49]
つまり
[式 50]
我々はKLダイバージェンスは常に非負であり、2つの分布が完全に同じである場合にのみ最小値0に達することを知っています。つまり、PPOの最適化目標は、モデルの出力分布 が と同じになるように等価にすることができます。

そして 、報酬モデルのパラメータが一定であれば、それが我々が必要とする最適解です。

つまり、最適な報酬モデルを訓練すると、実際には最適なポリシーネットワークが得られるということです。つまり、報酬モデルの訓練とポリシーネットワークの訓練は実際には等価です。これは我々に何を教えてくれるかというと、以前のように最初に報酬モデルを訓練し、その後報酬モデルを使用してポリシーモデルを訓練するというパラダイムでは、実際には事前に明示的に報酬モデルを訓練する必要はなく、ポリシーモデルを直接報酬モデルの訓練プロセスに代入して訓練を行うことで、最終的に必要な整合モデルを得ることができるということです。これら2つの方法は数学的には完全に等価です。したがって、DPOはオンライン強化学習を回避し、ポリシーネットワークを直接報酬モデルの代わりに使用して訓練を行うことで、同じ目標を達成します。

上記の最適解変換から次を得ることができます。
[式 51]
すると、次があります。
[式 52]
ここでは報酬モデルはポリシーモデルによって完全に置き換えることができます。

では、一般的にどのように報酬モデルを訓練するかを見てみましょう。一般的に、報酬モデルを訓練する方法は2つあります。最初の方法は、LLMの2つの応答を収集し、選好ペアを構成し、報酬モデルが正のサンプルにより高いスコアを、負のサンプルにより低いスコアを与えるように訓練することです。そのデータ構成形式は: 。
[式 53]

2番目の方法は、複数の回答 を収集し、複数の回答は人間によってラベル付けされ、それらの選好度を評価するために使用され、その後、その選好度に従って報酬モデルを訓練してこれらの回答にスコアを付けます。もちろん、実際には複数の回答もペアに分解することができ、それを最初の方法に変えることができます。o p e n a iがg p tを訓練する際には、ペアに分解する方法を採用しています。

ペアによるマッチングのモードはBTモデル(Bradley-Terry)と呼ばれます。

B Tモデルによって定義されるペアリング訓練目標は: です。ここで はyのスコアと理解できます。
[式 54]

では、それを我々の報酬モデルの目的関数に代入すると、次が得られます。
[式 55]
ここでのDは収集された選好データセットです。以前DPOを導出したとき、我々は次を持っていました。
[式 56]
では、それを報酬モデルの目的関数に代入すると、次が得られます。
[式 57]

これで報酬モデルの訓練を直接ポリシーモデルの訓練に変更することに成功し、報酬モデルを訓練するプロセスを回避しました。したがって、その後のオンライン強化学習プロセスも必要ありません。これが所謂の直接選好訓練です。

実際には、DPOがこれほど多くの回り道をしているにもかかわらず、実際の実行は非常にシンプルで、ほとんどSFTです。上記の公式導出は、DPOの訓練目標が数学的にPPOの強化学習訓練目標と等価であることを説明するためであり、それによってPPOができることはDPOもできるはずであることを示しています。

(ここでいくつかの平易なインサイトを提供します。DPOはまずPPO訓練の最適状態におけるポリシーネットワークと報酬ネットワークの関係を示しました。つまり、この関係が満たされれば、PPOの強化学習のこのステップは訓練する必要がありません。では、我々はこの関係が満たされていると仮定します。しかし、我々にはまだ一つの問題が残っています。それは報酬モデルがどこから来るのか?それは報酬モデルの訓練プロセスを経て得られます。そして、この関係が満たされる場合、我々は報酬モデルを明示的に訓練する必要はなく、ポリシーネットワークを直接報酬モデルの訓練プロセスに代入すれば良いのです。このプロセスにおいて、報酬モデルの目標はポリシーネットワークを通じて実現されます。つまり、報酬モデルを訓練するプロセスは、この関係が近似的に成立するようにし、それによって真の強化学習訓練はもはや必要ありません。)

GRPO

图片

GRPOの目的関数は次のとおりです。

图片

実際には、主な変更点はGAE Advantage推定をグループ間相対優位推定に変更したことです。

图片

このように変更することで、価値モデルが不要になり、トレーニングコストを削減できます。

GRPOのトレーニング擬似コードは次のとおりです。

图片

DAPO

DAPOの目的関数は次のとおりです。

图片

これはByteDanceが新たに発表したGRPO最適化に基づくアルゴリズムであり、主に以下の4つの最適化を行いました。

图片

最初のclip higherの意味は、clipの2つの境界にそれぞれ異なる を設定して制御することです。それぞれ を指します。ここで は比較的大きな値に設定されています。出発点は探索を奨励することです。確率が小さいトークン予測と確率が大きいトークン予測では、clipの影響が異なるためです。たとえば、 が0.01と0.9の場合、 であるとすると、更新された 最大許容確率は0.012と1.08になります。すると実際には低確率のトークンは長い間選択されにくくなります。したがって、上限に大きな を与えることで探索を奨励します。一方、下限 は小さな値を維持します。そうでなければ、多くのトークンが更新されて確率選択が0になってしまう可能性があります。

2つ目は動的サンプリングで、トレーニング上のエンジニアリング的なテクニックに近いです。これはトレーニング中に、モデルが多くの質問にうまく答えられる可能性があることを意味します。そうすると、同じバッチ内の多くの質問に対して、モデルは一連の回答をサンプリングし、例えば1のような最高の報酬を得る可能性があります。そうなると、各回答のグループ間優位は0になり、そのようなデータはモデルのトレーニングに有効な勾配を提供できません。したがって、トレーニング目標には、この項が追加されています。

图片

これは、入力されたサンプルをこの条件を満たすまで継続的にサンプリングし、そのバッチのデータだけをトレーニングに使用することを意味します。

3つ目は、いわゆるトークンレベルの損失計算です。GRPOでは、まず各回答の長さに基づいて平均を取り、その後G個の回答について平均を取ります。つまり:

图片

各回答の長さが異なるため、実際には複数の回答の各トークンの損失を異なる因子で割ることになり、長い回答が損失に貢献する割合が減少します。long-COTのトレーニングプロセスでは、効果的な長い回答を学習したいので、長い回答にもより大きな損失を与えることを望みます。DAPOは、GRPOのこの損失計算方法をサンプルレベル損失と呼びます。そして、DAPOはこのパラダイムを次のように変更しました。

图片

これは、すべてのトークンの損失に同じ平均因子を適用することを意味します。これにより、長い回答全体により大きな損失が与えられます。

最後の点は、以前のモデル訓練では、生成された回答が長すぎて限定値を超えると、直接切り捨てられていたということです。そして、これらの切り捨てられた回答には、懲罰的な報酬が与えられていました。このような懲罰的な信号は訓練ノイズを導入する可能性があり、なぜなら回答が非常に長くても論理的に非常に正しい回答である場合があるからです。その場合、モデルはその回答が良いのか悪いのか分からなくなります。DAPOはここで、長さに関連する線形報酬を導入しました。

图片

上記の4つの最適化テクニックに加えて、DAPOはKLダイバージェンス制約も削除しました。理由は、「However, during training the long-CoT reasoning model, the model distribution can diverge significantly from the initial model, thus this restriction is not necessary. Therefore, we will exclude the KL term from our proposed algorithm. 」(しかし、long-CoT推論モデルのトレーニング中、モデルの分布は初期モデルから大きく乖離する可能性があるため、この制約は不要です。したがって、提案するアルゴリズムからKL項を除外します。)つまり、long-COTトレーニングプロセスでは、モデルは元々元の状態から大きく逸脱することが期待されているため、モデルの更新を制約するために使用されるKLダイバージェンスを省いたということです。

DAPOのトレーニングフロー擬似コードは次のとおりです。

图片

主な参考資料

https://huggingface.co/blog/NormalUhr/rlhf-pipeline#navigating-the-rlhf-landscape-from-policy-gradients-to-ppo-gae-and-dpo-for-llm-alignment
https://doi.org/10.48550/arXiv.2503.14476

技術交流グループ招待状

图片

△長押ししてアシスタントを追加

Q RコードをスキャンしてアシスタントのW e C h a tを追加

以下の情報を備考に記入してください:氏名-学校/会社名-研究方向

(例:山田太郎-東京大学-対話システム)

で、自然言語処理/Pytorchなどの技術交流グループへの参加を申請できます。

私たちについて

MLNLPコミュニティ は、国内外の機械学習と自然言語処理の研究者が共同で設立した非営利の学術コミュニティであり、現在では国内外で有名な機械学習と自然言語処理のコミュニティに発展しています。機械学習、自然言語処理の学術界、産業界、そして多くの愛好家の間の進歩を促進することを目指しています。

コミュニティは、関連する実務家の専門能力開発、雇用、研究などの面で開かれた交流プラットフォームを提供できます。皆様の関心と参加を歓迎します。

图片

メインタグ:強化学習

サブタグ:アルゴリズム大規模言語モデルDPOPPO


前の記事:2025年、アマゾンCEO:生き残るためには、スタートアップのように自己進化せよ

次の記事:「経験の時代」は自己学習AIエージェントをウェブ全体に解き放つ — 準備方法はこちら

短いURLをシェア