從 PPO、DPO 到 GRPO:大語言模型策略優化算法解析
背景與簡介
大語言模型(LLM)的訓練通常分為預訓練和后訓練兩個階段。預訓練階段,模型在海量文本上學習下一詞預測的能力;后訓練階段,我們希望進一步對齊模型輸出與人類偏好,使模型給出的答案更符合人類期待。這常通過人類反饋強化學習(RLHF)來實現。RLHF的典型流程是:先讓人類對模型的不同回答進行比較,得到偏好數據,然后訓練一個獎勵模型來評估回答質量,最后用強化學習方法微調語言模型的策略,使其生成被獎勵模型高評分的回答。這一過程中誕生了多種策略優化算法,最知名的是OpenAI提出的近端策略優化(PPO)。PPO在InstructGPT等工作中成功將RLHF應用于GPT-3模型微調,大幅提升了問答的有用性和無害性。
然而,RLHF的傳統實現(如PPO)涉及訓練多個模型(策略、價值、獎勵、參考)和反復采樣,流程復雜、資源開銷大。為簡化這一過程,斯坦福研究者于2023年提出了直接偏好優化(DPO),通過巧妙的損失函數直接用偏好數據微調模型,避免了顯式的強化學習循環。同時,DeepSeek團隊在2024年前后提出了組相對策略優化(GRPO)(Generalized Reward Policy Optimization),這是對PPO的一種改進,通過組內比較優勢來優化策略,去除了價值網絡,使大型模型的RLHF訓練更加高效穩定。
本文將對這三種算法——PPO、DPO和GRPO——的原理和應用進行深入解析,并重點圍繞在大型語言模型上提升問答質量這一場景展開討論。我們將介紹每種算法的基本思想和數學公式(用通俗語言逐步解釋),比較它們在訓練流程、優化目標、穩定性和樣本效率上的異同,并總結各自優缺點及適用場景。
PPO:近端策略優化
基本原理與RLHF背景: PPO(Proximal Policy Optimization)是2017年提出的一種策略梯度算法,旨在改進早期強化學習方法不穩定、難調優的問題。它通過限制每次策略更新的幅度,保證訓練穩定,被稱為“近端”優化即小步伐地調整策略。在LLM對齊任務中,OpenAI在InstructGPT中成功應用了PPO:用人類偏好數據訓練獎勵模型,然后以該獎勵為指導,用PPO微調GPT-3,使其生成人類更喜歡的回答(例如更有幫助、無害)。這種方法也用于ChatGPT的訓練,被證明可以顯著提高模型回答質量和對話能力。
RLHF訓練流程(PPO范式): 在RLHF中使用PPO訓練LLM,可以概括為以下步驟:
-
生成樣本(Rollout): 讓當前的策略模型(LLM)針對一批提示(問題)生成回答,即一系列動作序列。在語言模型場景下,一次完整回答可以看作一個episode,生成的每個token視為一個行動。需要保存這些動作的對數概率以供后續計算。
-
計算獎勵: 對于每個生成的完整回答,由獎勵模型進行評分,提供一個標量獎勵信號,衡量回答的好壞。通常只有在回答結束時才能得到最終的獎勵分數,表示整個回答的質量(例如是否有用、正確)。另外實踐中常加入一個與參考模型輸出的比較獎勵(如KL罰項)來約束回答不要偏離初始模型太遠。
-
估計優勢(Advantage): 計算每個時間步(token)的優勢值,用于衡量在當前策略下該動作比“平均”期望好多少。PPO一般借助 價值函數(Critic) 來估計狀態的價值,從而計算優勢。常用 廣義優勢估計(GAE) 來平衡高方差的蒙特卡洛估計和高偏差的時間差分估計。簡單來說,GAE根據獎勵信號和價值網絡預測,綜合考慮多個步驟的回報,計算出每個token的優勢 A t A_t At?,提高評估穩定性。
-
更新策略(PPO優化步驟): 基于采樣得到的策略 π θ \pi_\theta πθ?和舊策略 π old \pi_{\text{old}} πold?,定義概率比率 r ( θ ) = π θ ( a t ∣ s t ) π old ( a t ∣ s t ) r(\theta)=\frac{\pi_\theta(a_t|s_t)}{\pi_{\text{old}}(a_t|s_t)} r(θ)=πold?(at?∣st?)πθ?(at?∣st?)?。PPO的核心目標是最大化以下期望目標(取負號即得到損失函數):
L PPO ( θ ) = E [ min ? { r ( θ ) ? A , clip ( r ( θ ) , 1 ? ? , 1 + ? ) ? A } ] L_{\text{PPO}}(\theta) \;=\; \mathbb{E}\Big[\min\{r(\theta)\cdot A,\; \text{clip}(r(\theta),\,1-\epsilon,\,1+\epsilon)\cdot A\}\Big] \, LPPO?(θ)=E[min{r(θ)?A,clip(r(θ),1??,1+?)?A}]
其中 ? \epsilon ?是超參數(如0.1或0.2),用于限制策略概率比的變化幅度。上述剪裁代理目標通過 min ? \min min操作保證 r ( θ ) r(\theta) r(θ)超出區間 [ 1 ? ? , 1 + ? ] [1-\epsilon,1+\epsilon] [1??,1+?]時,按照邊界值計算目標,從而懲罰策略一次更新過大,提升訓練穩定性。此外,完整的PPO目標中還包含: (a) KL散度正則項,度量新舊策略分布差異,若偏離過大則施加懲罰;(b) 熵獎勵項,鼓勵策略保持一定隨機性,增加生成回答的多樣性以避免過早收斂。這些項共同確保模型在追求高獎勵的同時,不會過度偏離原有分布而崩潰,并維持一定探索性。結合以上,各項組合形成PPO的總損失函數。訓練時對損失求梯度,更新策略網絡參數 θ \theta θ。 -
更新價值網絡: 訓練 價值函數(Critic) 去擬合新策略下的狀態價值,以便下次迭代計算更準確的優勢。價值網絡的更新通常通過最小化TD誤差或優勢的均方誤差來完成。
通過反復采樣和更新,上述循環不斷進行若干輪,使LLM策略逐步提升回答質量并滿足人類偏好。
數學公式解讀: 上面第4步提到的PPO策略優化目標是其核心。直觀解釋如下:
- 鼓勵高獎勵: 項 r ( θ ) ? A r(\theta)\cdot A r(θ)?A會在優勢 A A A為正(說明該動作優于基準)且 r > 1 r>1 r>1(新策略提高了該動作概率)時增大目標值,相當于鼓勵提高優質動作的概率;反之對于 A A A為負的情況, r < 1 r<1 r<1才能提高目標(意味著降低不良動作概率)。這確保模型傾向于產生獎勵高的文本。
- 限制策略改變幅度: 使用 min ? \min min和 clip \text{clip} clip實現“剪切”效果,即當 r ( θ ) r(\theta) r(θ)偏離1超過 ? \epsilon ?時,用 1 ± ? 1\pm\epsilon 1±?替代。這樣防止每次更新把策略推得離原策略太遠,保證訓練的平穩收斂。
- KL散度懲罰: 在實際實現中,會計算新舊策略間的平均KL散度 K L ( π θ old ∣ ∣ π θ ) \mathrm{KL}(\pi_{\theta_{\text{old}}}||\pi_\theta) KL(πθold??∣∣πθ?),并將其乘以系數 β \beta β加入損失。如果新舊分布差異過大,損失增大,從而約束策略不要劇烈變化。這與上述剪裁效果類似,進一步增強穩定性。
- 熵獎勵: 額外加入 H ( π θ ) H(\pi_\theta) H(πθ?)的熵項(或等價的負熵作為損失),鼓勵策略保持適度隨機。這樣可防止模型輸出過于墨守成規,避免陷入局部最優。在實現中一般給予一個 λ \lambda λ系數來平衡熵項。
PPO的完整損失函數可表示為: L PPO = ? L PPO ( θ ) + β K L ( π θ old ∣ ∣ π θ ) ? λ H ( π θ ) \mathcal{L}_{\text{PPO}} = -L_{\text{PPO}}(\theta) + \beta\mathrm{KL}(\pi_{\theta_{\text{old}}}||\pi_\theta) - \lambda H(\pi_\theta) LPPO?=?LPPO?(θ)+βKL(πθold??∣∣πθ?)?λH(πθ?)(負號是因為我們最大化 L L L等價于最小化損失)。這一公式融合了以上各點,實現了在保持舊策略“近端”的前提下提升新策略回報的目標。
優缺點總結: PPO在RLHF中取得了巨大成功,其優點在于:1)相比早期方法(如TRPO),算法簡單易實現,且不需要復雜的二次優化;2)通過剪裁和KL約束,訓練穩定且效果較好,大幅減少了策略發散的風險;3)經過InstructGPT等驗證,PPO非常有效地提升了LLM回答的質量和對齊度,是ChatGPT等產品背后的關鍵技術。然而,PPO的缺點也不容忽視:首先,RLHF的PPO管線十分復雜,涉及四個模型(策略/Actor、價值網/Critic、獎勵模型、參考模型),其中Actor和Critic需要訓練,Reward和Reference需要維護,大模型場景下占用巨量內存。這對計算資源要求極高。其次,PPO有不少超參數(例如 ? \epsilon ?、 β \beta β、 λ \lambda λ等)需要精心調校,不同任務需要調整,調參成本大。再次,策略需要不斷采樣交互(生成新回答讓獎勵模型打分),訓練過程漫長且對樣本效率要求高——往往需要生成大量樣本才能取得良好效果。最后,盡管PPO穩定性相對較好,但在大模型上仍有可能出現獎勵作弊、梯度爆炸等不穩定現象,需要通過技巧(如設定KL懲罰系數上限、分階段訓練等)來緩解。
適用場景: 考慮到PPO的開銷和效果,一般在有充足算力和數據的情況下使用PPO來對齊大模型。例如,在需要構建像ChatGPT這樣高質量的對話模型時,PPO是經典選擇。它適用于各種通用任務的偏好優化,包括開放問答、對話、摘要等,只要有訓練好的獎勵模型引導。PPO特別適合于需要在線探索的情況:當我們希望模型不僅模仿訓練數據,而且通過與獎勵模型交互自主發現更優答案時,PPO的強化學習機制可以不斷產生新回答并優化它們的得分。這在訓練數據有限但可以通過人類或獎勵模型反復評價新輸出時很有價值。簡而言之,如果項目規模較大、能夠承受復雜的RLHF流程,并追求極致的模型性能,那么PPO仍是一個可靠的選擇。
DPO:直接偏好優化
基本原理與背景: 直接偏好優化(Direct Preference Optimization)是2023年斯坦福提出的新方法,號稱“RLHF不用RL”。DPO的核心思想是:直接利用人類偏好數據微調策略,跳過獎勵模型擬合和強化學習采樣環節。換句話說,不再通過“獎勵模型評估 -> 策略梯度更新”這種間接方式,而是直接告訴模型哪種回答更好,讓模型調高優質回答的概率、降低劣質回答的概率。這種直接優化通過一個精心設計的損失函數實現,本質上是一個二分類交叉熵損失,判斷“給定提示下,回答A是否優于回答B”。由于采用了對數幾率(logit)比較的方法,DPO能夠隱式地重現RLHF中的“最大化獎勵+KL約束”目標,但形式上不需要顯式獎勵模型和復雜的RL算法。研究表明,DPO優化得到的策略實際上對應于某個隱含的獎勵函數的最優策略,與傳統RLHF解相同,但訓練過程大大簡化。DPO可以被視為一種單階段偏好對齊方法:只用一遍偏好數據直接微調模型,無需像PPO那樣循環采樣、訓練多模型,大幅降低算力要求。
在LLM問答場景中,DPO的應用非常直接:我們收集了一批用戶問題和模型回答對,每對里有人類標注出哪個回答更優。DPO用這些比較結果來調教模型,使其下次面對類似問題時,更傾向于輸出人類偏好的回答。這對提升問答質量很有效,因為它直接根據用戶偏好來“拉升”好回答、抑制差回答,相當于沿著人類偏好的方向調整模型行為。
訓練流程: DPO的訓練和普通的有監督微調有幾分相似,但更巧妙地利用了參考模型的信息。其大致流程:首先,準備好偏好數據,例如 ( P r o m p t , R e s p o n s e A , R e s p o n s e B , l a b e l ) (Prompt, Response_A, Response_B, label) (Prompt,ResponseA?,ResponseB?,label),其中label表明在該提示下人類更喜歡 A A A還是 B B B。一般這些數據來源于人類比較模型輸出的結果。在訓練時,我們維護一個參考模型(通常取原始SFT微調模型的拷貝并凍結參數),用來提供一個基準行為供比較。對每個偏好樣本,將 A A A和 B B B分別送入當前模型和參考模型,得到它們各自對這兩個回答的logits或對數概率。然后利用這些對數概率構造損失:
- 計算對數幾率差: Δ = ( log ? π θ ( A ) ? log ? π θ ( B ) ) ? ( log ? π ref ( A ) ? log ? π ref ( B ) ) \displaystyle \Delta = \Big(\log \pi_\theta(A) - \log \pi_\theta(B)\Big)-\Big(\log \pi_{\text{ref}}(A) - \log \pi_{\text{ref}}(B)\Big) Δ=(logπθ?(A)?logπθ?(B))?(logπref?(A)?logπref?(B))。這里 π θ \pi_\theta πθ?是當前模型策略, π ref \pi_{\text{ref}} πref?是參考模型策略。這個對數差值直觀上衡量了“當前模型相對于參考模型,對A優于B的信念”。如果當前模型相對參考模型更偏好A, Δ \Delta Δ為正,反之為負。參考模型的引入相當于一個隱式baseline,確保模型別一味把 A A A概率提到100%、 B B B降到0%,而是相對于參考模型適度調整,以防訓練漂移失控。
- 將對數差映射為偏好概率:通過sigmoid函數 σ ( x ) \sigma(x) σ(x)(即Logistic回歸),計算 P θ ( A ? B ) = 1 1 + exp ? ( ? β , Δ ) \displaystyle P_{\theta}(A \succ B) = \frac{1}{1+\exp(-\beta,\Delta)} Pθ?(A?B)=1+exp(?β,Δ)1?。這里 β \beta β是超參數,類似于RLHF中的“溫度”或獎勵放大系數,控制著KL約束力度。此公式實際上來自Bradley-Terry模型,對應于“模型判定A優于B的概率”。
- 定義偏好分類損失:對于標簽“人類偏好A”的樣本,我們希望 P θ ( A ? B ) P_{\theta}(A \succ B) Pθ?(A?B)盡可能接近1;偏好B則希望接近0。因此可采用二元交叉熵損失:若 y = 1 y=1 y=1表示偏好A,則損失 , ? log ? P θ ( A ? B ) ,-\log P_{\theta}(A \succ B) ,?logPθ?(A?B);若 y = 0 y=0 y=0偏好B,則損失 , ? log ? ( 1 ? P θ ( A ? B ) ) ,-\log (1 - P_{\theta}(A \succ B)) ,?log(1?Pθ?(A?B))。合并寫作: L DPO = ? log ? σ ( y ? β , Δ ) \displaystyle \mathcal{L}_{\text{DPO}} = -\log \sigma( y \cdot \beta,\Delta ) LDPO?=?logσ(y?β,Δ),其中 y = 1 y=1 y=1表示 A ? B A\succ B A?B, y = ? 1 y=-1 y=?1表示 B ? A B\succ A B?A。為簡潔起見,常直接實現為上文sigmoid形式,例如當 A A A為優答案時損失 ? log ? σ ( β , Δ ) -\log\sigma(\beta,\Delta) ?logσ(β,Δ)。通過最小化此損失,模型會提高 Δ \Delta Δ為正的概率(偏好A)并降低 Δ \Delta Δ為負的概率,從而直接優化策略使其滿足人類偏好。值得注意的是,這個損失中參考模型的對數比起到了KL懲罰的作用:若當前模型試圖過分偏離參考模型去極端偏好A或B, Δ \Delta Δ會拉大, σ \sigma σ飽和后梯度變小,相當于自動減緩了過大的更新步伐。這與PPO中顯式KL項異曲同工,但這里隱式地融入在損失里。
簡而言之,DPO的更新規則就是:“把當前模型在偏好樣本上判定正確的概率盡可能提高”。模型會調整自身參數,讓偏好樣本中人類喜歡的回答logits升高,不喜歡的降低,同時保持與參考模型行為的接近。這一步驟對每個偏好對進行一次梯度下降即可,無需像PPO那樣反復采樣多輪。由于沒有環境交互,整個過程就像在做一個二分類任務:模型輸入是兩個回答,輸出哪一個更好。
直觀示例: 假設提示是一個問題,模型給出回答A和B,人類更喜歡A。DPO會增大學習使得模型對回答A計算出的“得分”高于對B的“得分”。下次模型再回答類似問題時,產生類似A的概率就會更大,類似B的概率更小。通過成千上萬這樣的對比數據,模型逐漸偏向于輸出人類偏好的內容。整個過程中不需要顯式訓練獎勵模型,也不需要價值網絡或額外采樣,訓練流程大大簡化。
優缺點總結: DPO的優點非常突出:首先,它算法簡單、實現容易,只需搭建一個偏好比較的交叉熵損失即可,無需實現復雜的RL訓練環路。這使得調試和復現都更加輕松。其次,DPO在計算效率和穩定性上遠勝PPO:不需要訓練價值網絡和反復采樣,計算開銷小很多;又由于本質是有監督學習,收斂過程相對平滑,很少出現RL那種訓練發散的問題。論文和后續實驗表明,在一些任務上DPO可以達到媲美甚至優于PPO的效果,例如在文本摘要、單輪對話等偏好對齊任務上,DPO Fine-tuning后的模型質量與PPO-RLHF相當或更好。第三,DPO不需要維護顯式獎勵模型在線評估,這不僅節省了訓練一個大模型的成本,也避免了獎勵模型可能帶來的偏差影響——DPO直接用人類偏好“真值”來優化。對于資源有限的團隊,DPO提供了一條用偏好數據對齊模型的捷徑。
當然,DPO也有局限和缺點:其一,DPO對偏好數據質量和覆蓋面高度依賴。因為它完全是從離線的人類偏好對出發,模型只能學到這些對比中提供的信息。如果某些重要場景沒有涵蓋在偏好數據里,模型就難以在那些情況下正確對齊。相比之下,PPO可以通過與獎勵模型反復交互,探索一些偏好數據未顯式提供的空間。其二,DPO對損失中的 超參數 β \beta β 較敏感。 β \beta β控制了KL約束的強弱:太小則模型可能偏離參考模型過多導致輸出質量下降,太大則更新步長太保守學不到明顯偏好。不同數據集下理想的 β \beta β可能不同,如何選擇需要調試(有工作提出動態調整 β \beta β來增強魯棒性)。其三,DPO 仍需要一個初始參考模型(通常是SFT模型)。如果直接用預訓練基模型作為參考,未經過SFT可能輸出質量很一般,DPO的效果可能不如先SFT再DPO那么好。因此一般DPO是作為SFT后的進一步對齊步驟,而非完全取代SFT。最后,DPO無法主動探索新策略:它不能產生新回答然后獲得反饋再提升,只能利用給定的人類偏好對。這意味著如果我們想持續改進LLM,對新分布的問題做進一步對齊,可能需要人工不斷標注新偏好數據,再用DPO迭代訓練(可以稱為“在線DPO”)。但這一步需要人為參與,不如PPO那樣可以自動循環。
適用場景: DPO非常適合在偏好數據充足且希望快速對齊模型的情況下使用。如果已經有大量現成的人類反饋比較數據(比如收集了許多用戶對話中對回復優劣的評價),那么直接用DPO來微調模型會非常高效。在計算資源有限或時間緊張的項目中,DPO可以用更小的代價完成模型對齊,避免復雜的RL訓練。例如,許多開源社區在微調小型對話模型(如基于LLaMA等)時,選擇了DPO替代PPO,以在單張GPU上完成RLHF級別的對齊訓練。DPO也適用于一些靜態偏好目標的任務:如讓模型輸出更有禮貌、語氣更積極等,這些偏好可以通過人類標注對很直接地學習到。這種場景下DPO簡單調整模型輸出傾向即可達到目的,無需復雜探索。總的來說,當不具備大型RLHF基礎設施,或者傾向于更可控、更穩定的訓練過程時,DPO是不二之選。舉例來說,如果想讓一個問答模型更符合特定人群的喜好,可以先收集該人群對一些問答的偏好判斷,然后用DPO來對模型進行定向微調。
GRPO:組相對策略優化
基本原理與背景: 組相對策略優化(GRPO)是由DeepSeek等開源項目引入的一種PPO改進算法,全稱也有人稱為廣義回報策略優化(Generalized Reward Policy Optimization)。不同資料對GRPO名字的解讀略有差異,但其核心思想在于:在每個提示下生成一組回答,相互比較評估,從而更新策略。GRPO可以看作是PPO的“簡化版親戚”——保留了PPO策略更新的核心思想,但移除了單獨的價值函數網絡。這意味著訓練中不需要Critic來估計價值,而是直接用同組其他樣本的平均獎勵作為基線,來計算每個樣本的優勢(Advantage)。這種方法本質上是一種策略梯度+對比基線的形式:類似于經典REINFORCE算法使用增量獎勵的平均值作為Baseline的思想,即所謂“留一法”(Leave-One-Out)的優勢估計。GRPO將該思想與PPO的剪裁更新等技巧結合起來,在不犧牲性能的情況下減少了一半的模型開銷(無需訓練價值網絡,節省約50%內存計算)。這對大參數量LLM的RL訓練非常有幫助,因為訓練一個和策略同規模的Critic常常代價高昂。
訓練流程: GRPO的訓練過程與PPO類似,但每個prompt要生成多條回復作為一個“組”。具體步驟:
-
組內采樣: 針對每個提示,當前LLM策略生成 K K K個不同的回答 a 1 , … , a K {a_1,\dots,a_K} a1?,…,aK?,組成一個回答組。這里 K K K可以是比如4、8甚至更多。生成多個回答可以通過給定提示多次采樣實現(通常采用解碼隨機性,如溫度采樣,以獲得多樣化的候選)。
-
獎勵評分: 用獎勵模型或預定的獎勵函數對這組內每個回答 a i a_i ai?計算一個獎勵 r i r_i ri?。例如在問答對齊中,獎勵模型會給每個回答打分衡量優劣。在一些場景也可以直接有可計算的任務獎勵,比如數學題解答是否正確編譯通過,這種情況下可直接得到每個輸出的評分。
-
計算組內優勢(GRAE): 相比PPO用價值網絡預測基線,GRPO選擇組內平均獎勵作為基準。具體來說,對該prompt計算平均獎勵 r ˉ = 1 K ∑ i = 1 K r i \bar r = \frac{1}{K}\sum_{i=1}^K r_i rˉ=K1?∑i=1K?ri?。然后對每個回答計算優勢 A i = r i ? r ˉ A_i = r_i - \bar r Ai?=ri??rˉ。通常為了數值穩定,還會做一個標準差歸一化: A ~ i = r i ? r ˉ σ r + ? \tilde A_i = \frac{r_i - \bar r}{\sigma_r + \epsilon} A~i?=σr?+?ri??rˉ?,其中 σ r \sigma_r σr?是組內獎勵的標準差。這種歸一化確保不同prompt之間優勢量綱可比,并削減異常大或小reward的影響。得到的 A i A_i Ai?體現了回答 i i i相對該prompt平均水平是好還是差:高于均值則 A i > 0 A_i>0 Ai?>0,低于均值則 A i < 0 A_i<0 Ai?<0。這一步相當于把組內回答互相做了比較排序,優勢為正者就是相對更優的回答,優勢負則較差。
-
策略更新: 有了每個樣本的優勢,就可以類似PPO那樣構造損失并梯度更新策略參數了。GRPO使用的目標函數和PPO形式接近,但在實現上對每個prompt的組一起計算損失然后取平均。偽代碼如下:
L GRPO = 1 K ∑ i = 1 K [ ? min ? { r i ( θ ) ? A i , clip ( r i ( θ ) , 1 ? ? , 1 + ? ) ? A i } + β ? K L i ] L_{\text{GRPO}} = \frac{1}{K}\sum_{i=1}^K \Big[ -\min\{r_i(\theta)\cdot A_i,\; \text{clip}(r_i(\theta),1-\epsilon,1+\epsilon)\cdot A_i\} \;+\; \beta\cdot \mathrm{KL}_i \Big] \, LGRPO?=K1?i=1∑K?[?min{ri?(θ)?Ai?,clip(ri?(θ),1??,1+?)?Ai?}+β?KLi?]
其中 r i ( θ ) = π θ ( a i ) π old ( a i ) r_i(\theta)=\frac{\pi_\theta(a_i)}{\pi_{\text{old}}(a_i)} ri?(θ)=πold?(ai?)πθ?(ai?)?是第 i i i個回答的新舊策略概率比, K L ? i = log ? π ? old ( a i ) ? log ? π θ ( a i ) \mathrm{KL}*i = \log\pi*{\text{old}}(a_i) - \log\pi_\theta(a_i) KL?i=logπ?old(ai?)?logπθ?(ai?)是對第 i i i個樣本的新舊策略KL散度(這一項取正比于 ? log ? r i ( θ ) -\log r_i(\theta) ?logri?(θ))。可以看出,GRPO的損失就是對組內每個樣本計算一個類似PPO的剪裁策略梯度項,再加一個KL懲罰項,然后對組求平均。直觀解釋:對于同一prompt內的多個回答,模型會提升那些獎勵高(優勢為正)回答的概率,降低獎勵低(優勢為負)回答的概率,而且依然有限制地小幅調整,避免策略劇烈變化。因為在同組內進行了對比,這其實等價于告訴模型“在這個問題上,你那些相對差的回答要少給一些,那些相對好的回答風格要多給一些”。這跟人類直接比較多種回答然后告訴模型哪個好是類似的。 -
重復迭代: 類似PPO,我們不斷循環采樣新的組、計算獎勵、更新策略。因為沒有價值網絡,每次更新后不需要單獨訓練Critic,直接進入下個采樣階段。這減少了一半訓練步驟。
與PPO異同: 從上述流程可以看出,GRPO和PPO在策略更新公式上十分相近,都采用了剪裁的策略梯度目標+KL正則。不同的是優勢 A A A的獲取方式:PPO用一個學習的價值函數 V ( s ) V(s) V(s)來估計長期回報基線,而GRPO直接用同一批數據內部的平均回報作為基線。這種“組內對比”方法帶來的直接好處是減少了方差:同一個prompt下的回答共享了很多上下文,比較它們的獎勵能夠較準確地評估哪個更好,從而減少了不相關因素引入的噪聲。這也解釋了為什么DeepSeek等推薦在復雜推理任務中使用GRPO——在那些任務里,訓練一個準確的價值網絡非常困難,不如直接通過多樣解答的相對質量進行優化更穩健。需要注意的是,如果組內所有回答的好壞差不多(獎勵差異小),歸一化后優勢接近0,模型參數更新的力度也會變小。因此GRPO在極端情形下(組內全對或全錯)會面臨優勢信號偏弱的情況。有研究對此提出了改進,如Dr.GRPO去除了標準差歸一化,以避免對低方差組別的“懲罰”,提升梯度信號。但一般而言,合理選擇組大小 K K K(如8或16)可以降低出現全優或全劣組的概率,使大部分prompt組都有區分度,從而保持有效學習。實踐中,GRPO通常會使用比PPO更多的采樣數量來獲取穩定的比較信號——例如每個prompt采樣十幾個回答,這樣每個批次提供了豐富的信息。這雖然單步計算量提高,但因為沒有Critic訓練,加上可以高度并行生成多個回答,總體效率并不遜色。
優缺點總結: GRPO的優點可以概括為:1)無價值網絡,內存和計算成本減半,對于百億參數級別LLM的RL調優非常關鍵。這降低了硬件門檻,使得一些沒有海量TPU/GPU的團隊也能嘗試RLHF訓練大模型。2)訓練更穩定:少了價值函數這個潛在不穩定因素,也就避免了價值網絡發散導致策略更新錯誤的問題。實際經驗中,GRPO的訓練曲線往往比同時訓練Actor-Critic更平滑。而且組內比較本身提供了一種自然的歸一化,優勢基本在 [ ? 1 , 1 ] [-1,1] [?1,1]范圍(歸一化后),梯度尺度更可控,不容易梯度爆炸。3)樣本利用率高:在每個prompt上,一次可以從多個回答中學習信號,而不僅僅一個。這有點類似將原本不同prompt的樣本“組裝”起來進行對比學習,一定程度上提高了每個prompt的反饋信息量。尤其在復雜推理任務中,人們發現GRPO對提升模型推理能力很有效,因為它讓模型在一次訓練中就看到了多種解題思路,并傾向選擇其中更正確的方向。DeepSeek在數學、代碼等需要推理的任務上完全跳過了SFT,直接用RL(GRPO變體)訓練模型取得了很好的效果,就是證明。4)實現相對簡單:雖然概念新穎,但GRPO主要改動在優勢計算部分,其余與PPO類似。很多開源RLHF庫已經支持GRPO,工程上切換代價不高。
GRPO的缺點與局限也需要考慮:首先,每輪需要更多采樣。因為每個prompt得生成多條回答才能比較,假如以前PPO每批采樣N個prompt各1個回答,現在GRPO可能要采樣N個prompt各K個回答,總數放大K倍。這對樣本效率提出了更高要求(雖然可以并行采樣,但總體算力消耗會上升)。其次,組內比較有局限:獎勵的定義若有噪聲或者偏差,同組所有回答都會受影響。例如獎勵模型如果對某些內容系統性偏高或偏低打分,組內比較可能抵消這種系統偏差(因為全組都會高或低,優勢差異反而小),從而削弱該偏差信號的糾正力度。換言之,GRPO注重相對排名,不追求絕對評分,可能在某些指標的絕對優化上不如PPO顯著。第三,對于長序列獎勵分配問題,GRPO采取的是將最終獎勵平均分配給整個序列每個token(每個token共享同一優勢)。這樣雖然簡單,但無法細粒度地區分序列中不同決策的貢獻(PPO+價值網絡可以為每個token估計不同優勢)。在主要關注最終結果正確性的場景(如問答是否正確)這不是問題,但如果還關心中間過程質量,GRPO需要配合其他技術(比如過程監督)才能覆蓋。最后,GRPO和PPO一樣,需要一個靠譜的獎勵信號來源。如果任務沒有可自動計算的獎勵,就需要一個獎勵模型來給每個輸出打分,否則無法組成訓練信號。所以嚴格來說,GRPO并沒有擺脫對獎勵模型/函數的需求(除非有實時人類打分或規則可計算reward的環境)。一些宣傳提到“GRPO無需訓練獎勵模型”是指在特定場景下,可以直接利用任務本身的反饋(如編譯是否通過)代替訓練一個額外模型。在一般對話對齊中,獎勵模型仍是需要預先訓練好的,只不過GRPO避免了再訓練一個Critic。
適用場景: GRPO非常適合在以下情況下使用:1)超大模型RL微調:當模型參數巨多,訓練兩個模型(Actor+Critic)內存吃不消時,GRPO的單模型更新優勢凸顯。例如在百億/千億模型對齊上,GRPO可以省掉價值網絡使顯存占用近乎減半。2)復雜推理類任務:如數學問答、代碼生成、復雜推理題等。因為這類任務上訓練價值模型很難,而讓模型一次產生多個解再比較往往更直觀有效。DeepSeek的工作就顯示,在數學題和編碼場景,用純RL(相當于GRPO思路)可以提升模型的推理正確率。一些學術報告也指出,GRPO有利于長鏈推理能力的養成,因為可以針對推理過程設計獎勵并在組內對比優化。3)缺乏SFT數據,直接RL:若初始模型已不錯,但缺高質量監督數據做SFT,可以考慮跳過SFT,直接用RLHF訓練模型。此時GRPO因為沒有價值網絡冷啟動問題,可能更穩妥地改進模型。這正是DeepSeek R1-Zero模型的思路:基座模型直接通過RL訓練獲得優秀性能。4)有限反饋、需要高效利用:當我們每個問題只收集到少量人類反饋時,不妨讓模型基于這些反饋多樣化輸出,再通過相互對比來放大反饋信號。GRPO正好擅長把組內相對信息提煉出來。在實戰中,如果你有一個問答系統,用戶對每個答案給出好/中/差評分,你可以讓模型針對每個問題產生若干答案,評分模型對它們打分,然后用GRPO訓練——這樣每個用戶問題的反饋被充分利用,而不是只學“這一次回答好/不好”這種單一點信息。
綜上,GRPO在特定場景下提供了一個比PPO更輕量卻有效的替代方案。如果你的LLM需要在人類反饋下優化,但苦于算力不足或者價值網絡難訓,GRPO值得一試。在需要模型穩定且相對比較明確的任務中(如排行榜對戰、對話回答優選等),GRPO能發揮其組內比較的獨特優勢。
三種算法的對比與聯系
我們已經分別介紹了PPO、DPO和GRPO的原理。接下來從訓練流程、優化目標、穩定性、樣本效率等方面,將三者作一個橫向對比,加深對它們關系的理解。
- 訓練流程與復雜度: PPO屬于兩階段(甚至多階段)訓練:要先通過偏好數據訓練獎勵模型,再進行強化學習微調策略模型,同時還要訓練價值網絡輔助,加上一個用于限制KL的參考模型,總共涉及四個模型之多。訓練過程中,PPO需要不斷在環境(模型生成)中采樣新數據并進行多次迭代,這使流程較長、實現復雜。而DPO是單階段的方法:直接對策略模型做有監督微調,只需已有的人類偏好數據,不需要在訓練中間反復交互采樣。DPO不訓練額外網絡,除了一個參考模型提供對比之外,沒有別的依賴。其整體流程更接近標準的模型微調。GRPO的流程和PPO一樣需要在線采樣和基于獎勵模型的反饋,因此屬于RL訓練范式,但GRPO減少了價值網絡,只需維護策略模型、獎勵模型和參考模型(參考模型在實現中常與策略舊參數等效)。相比PPO,GRPO少了Critic訓練這一路徑,算法更簡單同步。總體來說,PPO流程最復雜,DPO最簡單,GRPO居中偏近PPO但有所簡化。
- 優化目標與算法本質: 表面看三者差別很大:PPO是策略梯度RL,DPO是直接偏好分類,GRPO是組內對比的RL。但聯系在于它們追求的其實是相同或相似的目標——讓模型產生更高質量、更符合人類偏好的回答,同時約束不要遠離原有語言能力。PPO的目標可理解為“最大化獎勵模型評分并保持與參考模型的KL懲罰不超過一定范圍”。DPO看似完全不同,但理論證明它等價于優化一個帶KL正則的獎勵最大化問題,只不過通過對偏好數據的封閉解形式直接實現了。DPO的損失從Bradley-Terry偏好模型推導而來,本質也是在提高偏好概率,這和強化學習中提高預期獎勵如出一轍,只是DPO把問題轉換成了分類損失來解。GRPO與PPO更是血緣相近:可以認為GRPO就是在PPO的優化目標上做了一般化(generalized)的修改,用真實回報對比取代理論價值估計。它的損失仍是剪輯的策略梯度形式,還有KL項。因此三者在數學目標上都有緊密聯系:DPO和PPO都包含KL正則項(DPO中隱式包含),GRPO和PPO都屬于策略梯度法(DPO則不是顯式的策略梯度但達成了同樣效果)。可以說,DPO解決的是“如何不經RL就實現RLHF同樣的偏好優化目標”,而GRPO則解決的是“如何在RLHF中去掉價值網絡實現更高效的策略優化”。三種方法殊途同歸:都在不同程度上利用人類偏好信息來調整LLM輸出分布,使其更符合人類期望。
- 訓練穩定性: 在大模型對齊任務中,訓練穩定性至關重要,因為不穩定會導致輸出質量突然惡化甚至模型崩潰。從這點看,DPO最為穩定。因為它完全是一種監督學習形式,沒有復雜的探索-exploitation權衡,不存在環境非平穩或梯度噪聲大的問題。實踐中DPO訓練過程平穩且容易收斂。PPO雖然比更早的RL算法穩定,但在三者中相對穩定性最差:需要仔細設置KL懲罰系數以避免模型發生“模式崩潰”或“獎勵投機”;有時PPO訓練后期模型可能為了討好獎勵模型而產生一些奇怪的過擬合回答,需通過調小學習率、降低獎勵權重等控制。GRPO的穩定性居中偏高:沒有價值網絡后,它少了價值估計誤差的來源,訓練曲線通常比PPO順滑。DeepSeek作者提到GRPO在ZeroSearch等場景有“更高的訓練穩定性”。組內基準方法降低了單個樣本高噪聲reward對梯度的影響,使更新更平穩。不過,GRPO仍然是RL過程,所以過大的learning rate或欠擬合的獎勵模型也可能使訓練不穩定。但總的來說,同等設置下GRPO比PPO更穩一些。因此,如果把穩定性作為重要考量:DPO > GRPO > PPO。
- 樣本效率: 這方面需要分別考慮人類標注數據的使用效率和模型交互采樣的效率。DPO在利用人類標注偏好數據上是高效的:它直接用所有偏好對來訓練,充分榨取了每個標注的信息量,每個樣本對都貢獻明確的梯度方向。如果有 m m m個人類比較對,DPO基本就能利用 m m m條監督信號。PPO對人類偏好數據的利用是間接的,因為偏好數據只用于訓練獎勵模型,一旦獎勵模型固定,PPO就不直接看人類數據而是通過與自己對話(采樣)和獎勵模型交互來獲取新樣本。這個過程中模型會產生很多回答,其中只有少部分可能接近人工偏好數據分布,大部分是在探索。雖然這種探索有助于發現新策略,但從純監督信號角度看,PPO沒有直接復用所有人工標注(只用了它來訓練RM)。但PPO通過反復采樣可以產生遠多于標注數量的訓練樣本,比如有 m m m條偏好數據訓練RM后,PPO可以生成 > > m >>m >>m條自己的回答用于訓練策略,這等于將模型自生成的數據也加入訓練。因此在無額外人工成本情況下,PPO能使用更多“樣本”(只是這些樣本的質量取決于獎勵模型泛化)。GRPO也需要訓練前有獎勵模型,同樣先用人類數據訓練RM,然后在循環中使用RM來大批量打分模型生成的回答。不同的是GRPO為了比較,會一口氣生成多條回答,所以單位prompt產生的樣本量更多。這讓GRPO每次迭代獲取的反饋信息豐富,但也意味著總體采樣數激增。如果以模型調用次數衡量樣本效率,DPO最省,只需跑偏好數據過模型若干輪;PPO次之,每步要采樣一些回答給RM打分;GRPO最多,每步對同一提示采樣多個回答再打分。所以每輪訓練的計算量:DPO < PPO < GRPO。但是,如果考慮達到同樣效果所需的總訓練輪數,情況又不同:DPO往往一個epoch甚至更少就能對齊(因為直接吃了人工數據);PPO可能需要許多epoch的交互才逼近收斂;GRPO由于每輪獲取信息量大,可能在更少的迭代中達到目標質量。因此總體來說,在有限人工數據場景下,DPO是最高效利用人工標注的,而PPO/GRPO則通過引入自動采樣擴展了訓練數據量。在計算資源一定的情況下,如果人工數據很少,DPO先跑可以快速提升,然后PPO/GRPO再進一步微調可能更合適。如果人工數據較多且質量高,DPO可能一次性就把主要偏好學好,不需要長時間RL。樣本效率還可以理解為“每獲得1分獎勵提升需要多少模型調用”:DPO通常很低,因為監督信號直接高效;PPO和GRPO高一些,但GRPO因為同時對比多個樣本,或許在收斂速度上能快于PPO一些。
- 典型應用與適用性: 三種算法各有其強項的應用領域:PPO是通用型選手,幾乎所有需要RLHF的場景都適用,尤其在對話系統、復雜交互任務中表現成熟,因為它允許模型通過試錯發現最優策略。ChatGPT的對話質量、代碼解釋等能力很大程度來自PPO階段的打磨。DPO更像快速對齊的利器,適合離線偏好優化:比如給定一批用戶反饋,想快速提升模型回答滿意度,可以用DPO增量訓練。而在要求訓練過程簡單可控、避免RL潛在風險的情況下(如一些企業內對齊敏感領域),DPO因不用采樣外部數據,行為更可預測,風險更小。GRPO的獨特價值在于高難度推理任務和資源受限的大模型訓練。DeepSeek等用了GRPO在數學、代碼、多輪推理等任務上取得了SOTA水平;微軟等也在一些模型中使用GRPO來提升訓練穩定性和效率。當你需要在保證穩定的前提下逼近PPO效果,GRPO是值得考慮的替代方案。另外,如果訓練管線已經有PPO,實現GRPO改動極小,可以作為PPO的改進升級來試驗。
下面的表格總結了PPO、DPO、GRPO三種方法的核心區別:
算法 & 優化方式 | 額外模型需求 | 策略更新穩定性 | 樣本使用效率 | 典型適用場景及優勢 |
---|---|---|---|---|
PPO(近端策略優化) | 需要訓練獎勵模型;需要價值網絡(Critic)輔助;參考模型提供KL約束。 | 穩定性較好但依賴超參調節(剪裁+KL提升穩定);訓練中仍可能出現發散需監控。 | 需反復在線采樣,樣本量大;能通過探索產生新數據;人工偏好數據間接利用。 | 通用型RLHF算法,ChatGPT等采用;適合高資源場景,能不斷探索改進策略;在復雜對話、開放問答等驗證效果佳。 |
DPO(直接偏好優化) | 不需要單獨獎勵模型在線評估(直接用偏好對訓練策略);不需要價值網絡;需一個凍結參考模型提供對比。 | 非常穩定,等同監督學習訓練;無環境噪聲干擾,無額外發散源。 | 離線高效利用人工偏好數據;無需額外采樣,訓練迭代少,收斂快;但不能自動獲取新信息。 | 偏好對齊快速微調利器;適合靜態任務和資源有限場景;如小模型對齊、用戶反饋快速融入等;實現簡單、可控性強。 |
GRPO(組相對策略優化) | 需要訓練獎勵模型或可計算的任務反饋;不需要價值網絡(無Critic,降低開銷)。 | 穩定性高于PPO(無Critic不穩定因素);組內優勢歸一化抑制噪聲;仍需設置KL系數,但整體平穩。 | 每提示采多樣本,單輪計算量較大;總體樣本需求與PPO同量級甚至更多;但組內信息豐富,收斂步數可能減少。 | 大模型RLHF優化的輕量替代;在復雜推理題、代碼等任務效果好;適合價值難學場景,用真實回報比較;在算力/顯存緊張時可避免雙模型訓練。 |
結語
綜上所述,PPO、DPO和GRPO作為大語言模型偏好優化的三種主要方法,各有其設計初衷和適用范圍。在以問答質量提升為代表的LLM對齊任務中,PPO以穩定有效但開銷大著稱,已在工業級應用中驗證了威力;DPO以簡捷高效取勝,為研究者提供了無需強化學習也能對齊模型的新范式;GRPO則折中了兩者,致力于提高RLHF的效率與穩定性,在近期的大模型訓練實踐中嶄露頭角。對于初學者,可以將PPO看作“循序漸進調整策略”的老師,DPO是“直接指出對錯的導師”,GRPO則是“組織一組答案互相比優”的評委。三者雖思路不同,但目標一致:讓AI模型更好地理解并滿足人類偏好。
在實際應用中,選擇何種方法應權衡具體需求和資源:如果追求極致性能且資源充沛,PPO依然是不少旗艦對齊項目的首選;如果偏好數據豐富且想快速見效,DPO能在短時間內顯著改善回答質量;如果模型超大或任務艱深、希望在穩定性和效果間取得平衡,GRPO值得一試。在未來,這些算法或將結合彼此的優點,出現新的改進方案(例如結合DPO思想的Step-DPO,或者GRPO的變種如DAPO、Dr.GRPO等),持續推動大模型對齊技術的發展。
總而言之,無論采用哪種優化策略,人類反饋的引入已經成為提升LLM問答質量的關鍵途徑。通過合理運用PPO、DPO、GRPO,我們可以更好地指導模型生成符合人類期望的答案,使AI助手變得更加可靠、有用。而對于強化學習基礎薄弱的讀者,希望本報告用通俗的解釋和完整的對比,幫助您深入理解這三種算法在LLM偏好優化中的角色和作用,為今后實踐中做出恰當的技術選擇提供參考。