福永三合一網(wǎng)站設(shè)計(jì)新聞軟文推廣案例
前言
如果你對這篇文章可感興趣,可以點(diǎn)擊「【訪客必讀 - 指引頁】一文囊括主頁內(nèi)所有高質(zhì)量博客」,查看完整博客分類與對應(yīng)鏈接。
當(dāng)前的大型語言模型訓(xùn)練大致可以分為如下三個(gè)階段:
- Pre-train:根據(jù)大量可獲得的文本資料,采用自監(jiān)督學(xué)習(xí)-預(yù)測 next token 的方式,訓(xùn)練得到預(yù)訓(xùn)練模型;
- Instruction Fine-tuning:根據(jù)大量任務(wù)上的指令標(biāo)記數(shù)據(jù),采用監(jiān)督學(xué)習(xí)的方式微調(diào)模型,使得模型可以理解人類指令;
- RLHF:基于人類的反饋,采用強(qiáng)化學(xué)習(xí)的方式,使模型可以產(chǎn)出符合人類偏好的回答。
GPT Pre-train 系列歷史
- GPT-1 (2018):模型參數(shù)量為 117M,使用了大約 7000 本書的數(shù)據(jù)量;
- GPT-2 (2019):模型參數(shù)量為 1542M(擴(kuò)大了十倍),使用了大約 40GB 的資料;
- GPT-3 (2020):模型參數(shù)量為 175B(再次擴(kuò)大一百倍),使用了大約 580GB 的資料,包含 300B 的 token,類似于哈利波特全集的 30 萬遍。
- 下圖來自 GPT-3 論文,可以看到隨模型參數(shù)量擴(kuò)大,模型性能逐步提高,但仍然沒有發(fā)生質(zhì)變,模型的使用體驗(yàn)也與當(dāng)前的 GPT-4 等其它模型相差甚遠(yuǎn)。
- GPT-1、2、3 系列均采用自監(jiān)督學(xué)習(xí) (Self-Supervised Learning) 訓(xùn)練得到,即使用 predict next token 的方式,將句子中的下一個(gè) token 作為 label 進(jìn)行訓(xùn)練,無需人工標(biāo)注數(shù)據(jù)。
Instruction Fine-tuning
通過自監(jiān)督學(xué)習(xí)出來的模型,雖然已展現(xiàn)了一定程度的語言理解能力,但其性能依然有較大的提升空間。
因此在后續(xù)的 GPT 系列中,自監(jiān)督學(xué)習(xí)只是模型訓(xùn)練的第一階段。該階段作為預(yù)訓(xùn)練 (Pre-train),無需人工標(biāo)注,有大量的可訓(xùn)練數(shù)據(jù),其訓(xùn)練得到的模型,將作為后續(xù)訓(xùn)練階段的初始參數(shù)。
下述例子來自于開源指令微調(diào)數(shù)據(jù)集,要求模型輸出的內(nèi)容盡可能與 Target 一致:
Input: 對聯(lián),要求對仗工整:上聯(lián):桃李爭春齊獻(xiàn)媚
Output:下聯(lián):鵬鵠比翼各稱雄Input:說話時(shí)面帶慣常的微笑。翻譯成英文:
Output:His face with the usual smile.
在指令微調(diào)的過程中,可以發(fā)現(xiàn)大模型表現(xiàn)出的一些「舉一反三」的能力,即在多種語言上做預(yù)訓(xùn)練后,只要在某一個(gè)語言的某一個(gè)任務(wù)上做微調(diào),就可以自動(dòng)學(xué)會(huì)其他語言上同樣的任務(wù)。如下圖所示, 在 104 種語言上做 Pre-train,English QA 上做 Fine-tune,在 Chinese QA 上做 Testing,也可以取得 78.8% 的 F1 score。
先前 Fine-tuning 的思路通常是給定一個(gè)大型預(yù)訓(xùn)練模型,然后在各下游任務(wù)的數(shù)據(jù)集上各自訓(xùn)練,打造一堆專才,且微調(diào)的數(shù)據(jù)集規(guī)模通常不大。
不同于上述打造專才的思路,Instruct GPT 在大范圍的任務(wù)集上進(jìn)行了 Fine-tuning,并且在僅依賴 1.3B 模型參數(shù)量和上萬條標(biāo)注數(shù)據(jù)的情況下打敗了擁有 175B 參數(shù)量的 GPT-3.
Self-Instruct
Instruction Fine-tuning 效果非常顯著,其所需的訓(xùn)練數(shù)據(jù)通常無需太多,但要求是高質(zhì)量的標(biāo)注數(shù)據(jù)。由于標(biāo)注數(shù)據(jù)有一定的獲取門檻,因此有人提出對 ChatGPT 進(jìn)行逆向工程,即 Self-Instruct,生成大量標(biāo)注數(shù)據(jù)。
具體流程如下:
- 先讓 ChatGPT 想大量的任務(wù)(例如撰寫郵件、修改文章、撰寫報(bào)告摘要等);
- 再讓 ChatGPT 根據(jù)任務(wù)產(chǎn)生大量可能的輸入;
- 最后讓 ChatGPT 根據(jù)產(chǎn)生的大量輸入,輸出具體的答案,組成一組標(biāo)注數(shù)據(jù)。
Reinforcement Learning from Human Feedback (RLHF)
RLHF 即根據(jù)人類的反饋(例如判斷某兩個(gè)回答哪個(gè)更好),采用強(qiáng)化學(xué)習(xí)的方式,進(jìn)一步提升模型的性能。
在先前的兩個(gè)訓(xùn)練階段,模型不斷地在判斷 next token 的輸出是否正確,缺乏對整個(gè)文本內(nèi)容全面的考量。在第三階段,RLHF 通過人類反饋的 response 間的優(yōu)劣關(guān)系,站在更全局性的視角,進(jìn)一步地對模型進(jìn)行優(yōu)化。換句話說,前兩個(gè)階段更加關(guān)注 response 輸出的過程,而 RLHF 這個(gè)階段則更關(guān)注最終的結(jié)果,即整個(gè) response 的質(zhì)量。
在 RLHF 的過程中,首先需要訓(xùn)練一個(gè) Reward Model,其輸入為一個(gè) response,輸出為這個(gè) response 的得分,可以根據(jù)人類給出的兩個(gè) response 之間的排序,訓(xùn)練這個(gè)獎(jiǎng)勵(lì)模型。
得到 Reward Model 后,最直接的用法是:讓 LLM 對于特定的輸入,輸出多個(gè)回答,再根據(jù) Reward Model 選擇得分最高的回答。
進(jìn)一步地,也可以使用 Reward Model 繼續(xù)微調(diào) LLM,即對于所有的輸入,讓 LLM 輸出的得分低的 response 出現(xiàn)的概率更低,讓 LLM 輸出的得分高的 response 出現(xiàn)的概率更高。
Proximal Policy Optimization (PPO)
PPO 就是一種在 Reward Model 基礎(chǔ)上,進(jìn)一步優(yōu)化模型參數(shù)的強(qiáng)化學(xué)習(xí)優(yōu)化方法。
在強(qiáng)化學(xué)習(xí)流程中, t t t 時(shí)刻環(huán)境的狀態(tài)為 s t s_t st?,采取動(dòng)作 a t a_t at? 后,得到獎(jiǎng)勵(lì) r t r_t rt?,環(huán)境變成 s t + 1 s_{t+1} st+1?。整個(gè)學(xué)習(xí)過程的目的是找到一個(gè)最佳策略,使得其能夠根據(jù)環(huán)境狀態(tài)選擇最佳的動(dòng)作。
上述的 r t r_t rt? 僅為即時(shí)收益,為在決策過程中考慮未來多步的收益,強(qiáng)化學(xué)習(xí)中引入了狀態(tài)價(jià)值函數(shù) V t V_t Vt?,其表示從當(dāng)前狀態(tài)開始,未來所有時(shí)刻所能累積的收益,通常表達(dá)為:
V t = r t + γ ? V t + 1 , V_t=r_{t}+\gamma \cdot V_{t+1}, Vt?=rt?+γ?Vt+1?,
其中 γ \gamma γ 作為折扣因子,使決策在短期獎(jiǎng)勵(lì)和長期收益間取得平衡,并且確保無限時(shí)間下累計(jì)的獎(jiǎng)勵(lì)和使有限的,避免累積獎(jiǎng)勵(lì)發(fā)散。
在 LLM 語境下,模型會(huì)在 t t t 時(shí)刻根據(jù)上文,產(chǎn)出一個(gè) token o t o_t ot?(對應(yīng)動(dòng)作 a t a_t at?),對應(yīng)即時(shí)獎(jiǎng)勵(lì) r t r_{t} rt? 和未來總收益 V t V_{t} Vt?;由于 r t r_{t} rt? 和 V t V_{t} Vt? 都無法直接獲取,整個(gè) RLHF-PPO 階段一共包含四個(gè)主要模型,分別是:
- Actor Model:輸出每個(gè)時(shí)刻的 token,即我們想要繼續(xù)優(yōu)化的 LLM(通常采用指令微調(diào)后的模型初始化);
- Critic Model:根據(jù) s t s_t st? 估計(jì)時(shí)刻 t t t 的總收益 V t V_{t} Vt?;
- Reward Model:即前文根據(jù)人類反饋數(shù)據(jù)訓(xùn)練得到的獎(jiǎng)勵(lì)模型;
- Reference Model:參考模型,避免語言模型在 RLHF 階段訓(xùn)歪(同樣通常采用指令微調(diào)后的模型初始化)。
不難發(fā)現(xiàn) Reward Model 和 Reference Model 在 PPO 階段都是參數(shù)凍結(jié)的,因此主要關(guān)鍵在于如何訓(xùn)練 Actor Model 和 Critic Model。
在介紹具體 loss 函數(shù)前,我們首先探究一下如何表示 r t r_{t} rt??由于前文訓(xùn)練得到的 Reward Model 僅能根據(jù)最終的 response 輸出最終的獎(jiǎng)勵(lì) r φ ( q , o ≤ T ) r_\varphi(q,o_{\leq T}) rφ?(q,o≤T?)(假設(shè)輸入為 q q q,輸出共 T T T 個(gè) token),中間過程的獎(jiǎng)勵(lì) r t r_{t} rt? 無法通過 Reward Model 直接得到,因此在 deepspeed-chat 的 RLHF 實(shí)踐中,采用 Actor Model 和 Reference Model 輸出的差異(可以理解為動(dòng)作分布的差異)來表示中間過程的獎(jiǎng)勵(lì)( β \beta β 為超參數(shù)):
r t = { ? β ? ( log ? P ( o t ∣ q , o < t ) P r e f ( o t ∣ q , o < t ) ) , t ≠ T r φ ( q , o ≤ T ) ? β ? ( log ? P ( o t ∣ q , o < t ) P r e f ( o t ∣ q , o < t ) ) , t = T r_{t}=\left\{\begin{array}{l} -\beta *\left(\log \frac{P\left(o_t \mid q,o_{<t}\right)}{P_{r e f}\left(o_t \mid q,o_{<t}\right)}\right), \quad t \neq T \\ r_\varphi(q,o_{\leq T})-\beta *\left(\log \frac{P\left(o_t \mid q,o_{<t}\right)}{P_{r e f}\left(o_t \mid q,o_{<t}\right)}\right), \quad t=T \end{array}\right. rt?=? ? ???β?(logPref?(ot?∣q,o<t?)P(ot?∣q,o<t?)?),t=Trφ?(q,o≤T?)?β?(logPref?(ot?∣q,o<t?)P(ot?∣q,o<t?)?),t=T?
即 P ( o t ∣ q , o < t ) P(o_t\mid q,o_{<t}) P(ot?∣q,o<t?) 越大(和參考模型的輸出越相似),即時(shí)獎(jiǎng)勵(lì) r t r_{t} rt? 越大。需要注意的是,上述僅是 r t r_{t} rt? 的某一種設(shè)計(jì)。在 PPO 中,我們希望最大化如下目標(biāo)( π θ \pi_{\theta} πθ? 為具體的策略,代表 Actor 模型參數(shù); τ \tau τ 代表一條軌跡,對應(yīng)一個(gè) response):
J ( θ ) = E τ ~ π θ [ R ( τ ) ] = ∑ τ R ( τ ) P ( τ ∣ π θ ) . \mathcal{J}\left(\theta\right)=E_{\tau \sim \pi_\theta}[R(\tau)]=\sum_\tau R(\tau) P\left(\tau \mid \pi_\theta\right). J(θ)=Eτ~πθ??[R(τ)]=τ∑?R(τ)P(τ∣πθ?).
其相應(yīng)梯度如下:
? J ( θ ) = ∑ τ R ( τ ) ? P ( τ ∣ π θ ) = ∑ τ R ( τ ) P ( τ ∣ π θ ) ? P ( τ ∣ π θ ) P ( τ ∣ π θ ) = ∑ τ R ( τ ) P ( τ ∣ π θ ) ? log ? ( P ( τ ∣ π θ ) ) = E τ ~ π θ [ R ( τ ) ? log ? ( P ( τ ∣ π θ ) ) ] \begin{aligned} \nabla \mathcal{J}\left(\theta\right) & =\sum_\tau R(\tau) \nabla P\left(\tau \mid \pi_\theta\right) \\ & =\sum_\tau R(\tau) P\left(\tau \mid \pi_\theta\right) \frac{\nabla P\left(\tau \mid \pi_\theta\right)}{P\left(\tau \mid \pi_\theta\right)} \\ & =\sum_\tau R(\tau) P\left(\tau \mid \pi_\theta\right) \nabla \log \left(P\left(\tau \mid \pi_\theta\right)\right) \\ & =E_{\tau \sim \pi_\theta}\left[R(\tau) \nabla \log \left(P\left(\tau \mid \pi_\theta\right)\right)\right] \end{aligned} ?J(θ)?=τ∑?R(τ)?P(τ∣πθ?)=τ∑?R(τ)P(τ∣πθ?)P(τ∣πθ?)?P(τ∣πθ?)?=τ∑?R(τ)P(τ∣πθ?)?log(P(τ∣πθ?))=Eτ~πθ??[R(τ)?log(P(τ∣πθ?))]?
假設(shè)每條軌跡共有 T T T 個(gè)節(jié)點(diǎn),則 P ( τ ∣ π θ ) = ρ 0 ( s 0 ) ∏ t = 1 T P ( s t + 1 ∣ s t , a t ) π θ ( a t ∣ s t ) P\left(\tau \mid \pi_\theta\right)=\rho_0\left(s_0\right) \prod_{t=1}^{T} P\left(s_{t+1} \mid s_t, a_t\right) \pi_\theta\left(a_t \mid s_t\right) P(τ∣πθ?)=ρ0?(s0?)∏t=1T?P(st+1?∣st?,at?)πθ?(at?∣st?),代入 ? J ( θ ) \nabla \mathcal{J}\left(\theta\right) ?J(θ) 得到:
? J ( θ ) = E τ ~ π θ [ R ( τ ) ? log ? ( P ( τ ∣ π θ ) ) ] = E τ ~ π θ [ R ( τ ) ∑ t = 1 T ? log ? π θ ( a t ∣ s t ) ] \begin{aligned} \nabla \mathcal{J}\left(\theta\right) & =E_{\tau \sim \pi_\theta}\left[R(\tau) \nabla \log \left(P\left(\tau \mid \pi_\theta\right)\right)\right] \\ & =E_{\tau \sim \pi_\theta}\left[R(\tau) \sum_{t=1}^{T} \nabla \log \pi_\theta\left(a_t \mid s_t\right)\right] \end{aligned} ?J(θ)?=Eτ~πθ??[R(τ)?log(P(τ∣πθ?))]=Eτ~πθ??[R(τ)t=1∑T??logπθ?(at?∣st?)]?
將 R ( τ ) R(\tau) R(τ) 拆分到每一步中,可以得到:
? J ( θ ) = E τ ~ π θ [ ∑ t = 1 T Ψ t ? log ? π θ ( a t ∣ s t ) ] \begin{aligned} \nabla \mathcal{J}\left(\theta\right) & =E_{\tau \sim \pi_\theta}\left[\sum_{t=1}^{T} \Psi_t \nabla \log \pi_\theta\left(a_t \mid s_t\right)\right] \end{aligned} ?J(θ)?=Eτ~πθ??[t=1∑T?Ψt??logπθ?(at?∣st?)]?
此處的 Ψ t \Psi_t Ψt? 代表了當(dāng)前的價(jià)值度量,其最好能同時(shí)表示「單步即時(shí)獎(jiǎng)勵(lì)」和「未來軌跡的整體收益」,在 PPO 中采用廣義優(yōu)勢估計(jì) (GAE) 中的優(yōu)勢函數(shù) A t A_t At? 表示,其定義為:
A t = ∑ l = 0 ∞ ( γ λ ) l δ t + l , A_t=\sum_{l=0}^{\infty}(\gamma \lambda)^l \delta_{t+l}, At?=l=0∑∞?(γλ)lδt+l?,
其中 λ ∈ [ 0 , 1 ] \lambda\in [0,1] λ∈[0,1], δ t \delta_t δt? 為 TD error,其代表采取行動(dòng) a t a_t at? 后實(shí)際價(jià)值與預(yù)估價(jià)值之間的差距,即 δ t = r t + γ ? V t + 1 ? V t \delta_t=r_t+\gamma\cdot V_{t+1}-V_t δt?=rt?+γ?Vt+1??Vt?,即此處的 A t A_t At? 表示未來多步 TD error 的加權(quán)和,其可以表示為如下遞歸形式:
A t = δ t + γ λ A t + 1 . A_t=\delta_t+\gamma\lambda A_{t+1}. At?=δt?+γλAt+1?.
由于軌跡結(jié)束時(shí) A T = 0 A_T=0 AT?=0,因此 A t A_t At? 可在軌跡確定后,從后往前遞歸求解。由此我們可以得到下述大模型語境下,PPO 對應(yīng)優(yōu)化目標(biāo)的梯度:
? J P P O ( θ ) = E [ q ~ P ( Q ) , o ~ π θ ( O ∣ q ) ] ∑ t = 1 ∣ o ∣ A t ? log ? π θ ( o t ∣ q , o < t ) . \nabla \mathcal{J}_{P P O}(\theta)=\mathbb{E}\left[q \sim P(Q), o \sim \pi_{\theta}(O \mid q)\right] \sum_{t=1}^{|o|}A_t \nabla \log \pi_\theta\left(o_t \mid q, o_{<t}\right) . ?JPPO?(θ)=E[q~P(Q),o~πθ?(O∣q)]t=1∑∣o∣?At??logπθ?(ot?∣q,o<t?).
在實(shí)際優(yōu)化過程中,為提高樣本利用率, π θ \pi_{\theta} πθ? 采樣得到的軌跡 o o o 會(huì)被重復(fù)使用來優(yōu)化 π θ \pi_\theta πθ?,即采樣軌跡 o o o 的 π θ o l d \pi_{\theta_{old}} πθold?? 和要優(yōu)化的 π θ \pi_{\theta} πθ? 不一樣(off-policy),因此可以采用 Importance Sampling 的方式修正上述梯度:
? J P P O ( θ ) = E [ q ~ P ( Q ) , o ~ π θ o l d ( O ∣ q ) ] ∑ t = 1 ∣ o ∣ π θ ( o t ∣ q , o < t ) π θ o l d ( o t ∣ q , o < t ) A t ? log ? π θ ( o t ∣ q , o < t ) . \nabla \mathcal{J}_{P P O}(\theta)=\mathbb{E}\left[q \sim P(Q), o \sim \pi_{\theta_{old}}(O \mid q)\right] \sum_{t=1}^{|o|} \frac{\pi_\theta\left(o_t \mid q, o_{<t}\right)}{\pi_{\theta_{o l d}}(o_t \mid q, o_{<t})} A_t \nabla \log \pi_\theta\left(o_t \mid q, o_{<t}\right) . ?JPPO?(θ)=E[q~P(Q),o~πθold??(O∣q)]t=1∑∣o∣?πθold??(ot?∣q,o<t?)πθ?(ot?∣q,o<t?)?At??logπθ?(ot?∣q,o<t?).
由于 ? log ? f ( θ ) = ? f ( θ ) f ( θ ) \nabla \log f(\theta)=\frac{\nabla f(\theta)}{f(\theta)} ?logf(θ)=f(θ)?f(θ)?,上述梯度對應(yīng)的優(yōu)化目標(biāo)如下:
J P P O ( θ ) = E [ q ~ P ( Q ) , o ~ π θ o l d ( O ∣ q ) ] ∑ t = 1 ∣ o ∣ π θ ( o t ∣ q , o < t ) π θ o l d ( o t ∣ q , o < t ) A t . \mathcal{J}_{P P O}(\theta)=\mathbb{E}\left[q \sim P(Q), o \sim \pi_{\theta_{old}}(O \mid q)\right] \sum_{t=1}^{|o|} \frac{\pi_\theta\left(o_t \mid q, o_{<t}\right)}{\pi_{\theta_{o l d}}(o_t \mid q, o_{<t})} A_t. JPPO?(θ)=E[q~P(Q),o~πθold??(O∣q)]t=1∑∣o∣?πθold??(ot?∣q,o<t?)πθ?(ot?∣q,o<t?)?At?.
為了使整體訓(xùn)練更穩(wěn)定,最終的優(yōu)化目標(biāo)會(huì)對 π θ ( o t ∣ q , o < t ) π θ o l d ( o t ∣ q , o < t ) \frac{\pi_\theta\left(o_t \mid q, o_{<t}\right)}{\pi_{\theta_{o l d}}(o_t \mid q, o_{<t})} πθold??(ot?∣q,o<t?)πθ?(ot?∣q,o<t?)? 進(jìn)行裁剪,避免該值過大或者過小;并且由于不同軌跡可能長度差異很大,優(yōu)化目標(biāo)會(huì)對軌跡長度進(jìn)行歸一化;最終 PPO 所要最大化的目標(biāo)如下所示:
J P P O ( θ ) = E [ q ~ P ( Q ) , o ~ π θ o l d ( O ∣ q ) ] 1 ∣ o ∣ ∑ t = 1 ∣ o ∣ min ? [ π θ ( o t ∣ q , o < t ) π θ o l d ( o t ∣ q , o < t ) A t , clip ? ( π θ ( o t ∣ q , o < t ) π θ o l d ( o t ∣ q , o < t ) , 1 ? ε , 1 + ε ) A t ] . \mathcal{J}_{P P O}(\theta)=\mathbb{E}\left[q \sim P(Q), o \sim \pi_{\theta_{o l d}}(O \mid q)\right] \frac{1}{|o|} \sum_{t=1}^{|o|} \min \left[\frac{\pi_\theta\left(o_t \mid q, o_{<t}\right)}{\pi_{\theta_{o l d}}\left(o_t \mid q, o_{<t}\right)} A_t, \operatorname{clip}\left(\frac{\pi_\theta\left(o_t \mid q, o_{<t}\right)}{\pi_{\theta_{o l d}}\left(o_t \mid q, o_{<t}\right)}, 1-\varepsilon, 1+\varepsilon\right) A_t\right]. JPPO?(θ)=E[q~P(Q),o~πθold??(O∣q)]∣o∣1?t=1∑∣o∣?min[πθold??(ot?∣q,o<t?)πθ?(ot?∣q,o<t?)?At?,clip(πθold??(ot?∣q,o<t?)πθ?(ot?∣q,o<t?)?,1?ε,1+ε)At?].
相對應(yīng)地,Critic 模型的優(yōu)化目標(biāo)可以理解為最小化優(yōu)勢 A t A_t At?,即讓 V t V_t Vt? 對局面的評估更加精準(zhǔn),具體目標(biāo)可寫作如下形式:
arg ? min ? V ? E t [ max ? [ ( V t ? ( A t + V t o l d ) ) 2 , ( V t c l i p ? ( A t + V t o l d ) ) 2 ] ] , \arg \min _{V_\phi} \mathbb{E}_t\left[\max\left[(V_t-(A_t+V_t^{old}))^2,(V_t^{clip}-(A_t+V_t^{old}))^2\right]\right], argV??min?Et?[max[(Vt??(At?+Vtold?))2,(Vtclip??(At?+Vtold?))2]],
其中 V t c l i p = clip ( V t , V t o l d ? ? , V t o l d + ? ) V_t^{clip}=\text{clip}(V_t,V_t^{old}-\epsilon,V_t^{old}+\epsilon) Vtclip?=clip(Vt?,Vtold???,Vtold?+?).
Direct Preference Optimization (DPO)
在上述 RLHF-PPO 的訓(xùn)練中,存在「顯存占用大」、「超參多」以及「模型訓(xùn)練不穩(wěn)定」等一系列問題,為簡化整體訓(xùn)練過程,DPO 應(yīng)運(yùn)而生,其對 PPO 的改進(jìn)主要為如下兩點(diǎn)(如下圖所示):
- 不再訓(xùn)練 Reward Model,而是直接基于人類反饋的數(shù)據(jù),一步到位訓(xùn)練最終的模型;
- 簡化原始訓(xùn)練目標(biāo),不再使用強(qiáng)化學(xué)習(xí)的方法,而是通過類似于監(jiān)督微調(diào)的方式進(jìn)行訓(xùn)練。
首先,RLHF 階段整體目標(biāo)如下( π θ , π ref , r ? \pi_{\theta},\pi_{\text{ref}},r_{\phi} πθ?,πref?,r?? 分別對應(yīng)上述的 Actor、參考模型以及 Reward Model):
- 最大化獎(jiǎng)勵(lì)的同時(shí),避免訓(xùn)練后得到的 π θ \pi_{\theta} πθ? 與參考模型 π ref \pi_{\text{ref}} πref? 差異過大.
max ? π θ E x ~ D , y ~ π θ ( y ∣ x ) [ r ? ( x , y ) ] ? β D K L [ π θ ( y ∣ x ) ∥ π r e f ( y ∣ x ) ] . \max _{\pi_\theta} \mathbb{E}_{x \sim \mathcal{D}, y \sim \pi_\theta(y \mid x)}\left[r_\phi(x, y)\right]-\beta \mathbb{D}_{\mathrm{KL}}\left[\pi_\theta(y \mid x) \| \pi_{\mathrm{ref}}(y \mid x)\right]. πθ?max?Ex~D,y~πθ?(y∣x)?[r??(x,y)]?βDKL?[πθ?(y∣x)∥πref?(y∣x)].
為了繞過 Reward Model,上述式子可以進(jìn)行如下推導(dǎo):
max ? π E x ~ D , y ~ π ( y ∣ x ) [ r ( x , y ) ] ? β D K L [ π ( y ∣ x ) ∥ π r e f ( y ∣ x ) ] = max ? π E x ~ D E y ~ π ( y ∣ x ) [ r ( x , y ) ? β log ? π ( y ∣ x ) π r e f ( y ∣ x ) ] = min ? π E x ~ D E y ~ π ( y ∣ x ) [ log ? π ( y ∣ x ) π r e f ( y ∣ x ) ? 1 β r ( x , y ) ] = min ? π E x ~ D E y ~ π ( y ∣ x ) [ log ? π ( y ∣ x ) 1 Z ( x ) π r e f ( y ∣ x ) exp ? ( 1 β r ( x , y ) ) ? log ? Z ( x ) ] . \begin{aligned} & \ \ \ \ \max _\pi \mathbb{E}_{x \sim \mathcal{D}, y \sim \pi(y \mid x)} {[r(x, y)]-\beta \mathbb{D}_{\mathrm{KL}}\left[\pi(y \mid x) \| \pi_{\mathrm{ref}}(y \mid x)\right] } \\ & =\max _\pi \mathbb{E}_{x \sim \mathcal{D}} \mathbb{E}_{y \sim \pi(y \mid x)}\left[r(x, y)-\beta \log \frac{\pi(y \mid x)}{\pi_{\mathrm{ref}}(y \mid x)}\right] \\ & =\min _\pi \mathbb{E}_{x \sim \mathcal{D}} \mathbb{E}_{y \sim \pi(y \mid x)}\left[\log \frac{\pi(y \mid x)}{\pi_{\mathrm{ref}}(y \mid x)}-\frac{1}{\beta} r(x, y)\right] \\ & =\min _\pi \mathbb{E}_{x \sim \mathcal{D}} \mathbb{E}_{y \sim \pi(y \mid x)}\left[\log \frac{\pi(y\mid x)}{\frac{1}{Z(x)} \pi_{\mathrm{ref}}(y \mid x) \exp \left(\frac{1}{\beta} r(x, y)\right)}-\log Z(x)\right]. \end{aligned} ?????πmax?Ex~D,y~π(y∣x)?[r(x,y)]?βDKL?[π(y∣x)∥πref?(y∣x)]=πmax?Ex~D?Ey~π(y∣x)?[r(x,y)?βlogπref?(y∣x)π(y∣x)?]=πmin?Ex~D?Ey~π(y∣x)?[logπref?(y∣x)π(y∣x)??β1?r(x,y)]=πmin?Ex~D?Ey~π(y∣x)? ?logZ(x)1?πref?(y∣x)exp(β1?r(x,y))π(y∣x)??logZ(x) ?.?
令 Z ( x ) = ∑ y π r e f ( y ∣ x ) exp ? ( 1 β r ( x , y ) ) Z(x)=\sum_y \pi_{\mathrm{ref}}(y \mid x) \exp \left(\frac{1}{\beta} r(x, y)\right) Z(x)=∑y?πref?(y∣x)exp(β1?r(x,y)),可以將上述式子中 log ? \log log 項(xiàng)分母部分轉(zhuǎn)化為一個(gè)概率分布,整體優(yōu)化目標(biāo)可以視作最小化 π ( y ∣ x ) \pi(y\mid x) π(y∣x) 和 1 Z ( x ) π r e f ( y ∣ x ) exp ? ( 1 β r ( x , y ) ) \frac{1}{Z(x)} \pi_{\mathrm{ref}}(y \mid x) \exp \left(\frac{1}{\beta} r(x, y)\right) Z(x)1?πref?(y∣x)exp(β1?r(x,y)) 之間的 KL 散度。由于 Z ( x ) Z(x) Z(x) 與 π \pi π 無關(guān),因此上述式子的最優(yōu)解 π ? \pi^* π? 可以表示為:
π ? ( y ∣ x ) = 1 Z ( x ) π ref? ( y ∣ x ) exp ? ( 1 β r ( x , y ) ) . \pi^*(y \mid x)=\frac{1}{Z(x)} \pi_{\text {ref }}(y \mid x) \exp \left(\frac{1}{\beta} r(x, y)\right). π?(y∣x)=Z(x)1?πref??(y∣x)exp(β1?r(x,y)).
相對應(yīng)地,獎(jiǎng)勵(lì)模型 r r r 也可以表示為如下形式:
r ? ( x , y ) = β log ? π ? ( y ∣ x ) π r e f ( y ∣ x ) + β log ? Z ( x ) . r^*(x, y)=\beta \log \frac{\pi^*(y \mid x)}{\pi_{\mathrm{ref}}(y \mid x)}+\beta \log Z(x). r?(x,y)=βlogπref?(y∣x)π?(y∣x)?+βlogZ(x).
接下來,只要我們在獎(jiǎng)勵(lì)模型的訓(xùn)練目標(biāo)中代入上式,即可實(shí)現(xiàn)直接對最終策略 π ? \pi^* π? 的優(yōu)化。在獎(jiǎng)勵(lì)模型的訓(xùn)練中,通常有如下 2 種偏好排序方法:
- 只對兩個(gè)回答進(jìn)行排序,即對于 prompt x x x,回答 y 1 y_1 y1? 優(yōu)于 y 2 y_2 y2?,對應(yīng)的優(yōu)化目標(biāo)采用 Bradley-Terry 模型進(jìn)行建模;
- 對 K K K 個(gè)回答進(jìn)行排序,即對于 prompt x x x,排序順序?yàn)? y 1 > y 2 > . . . > y K y_1>y_2>...>y_K y1?>y2?>...>yK?,對應(yīng)的優(yōu)化目標(biāo)采用 Plackett-Luce 模型進(jìn)行建模。
DPO Objective Under the Bradley-Terry Model
在 BT 模型下,回答 y 1 y_1 y1? 優(yōu)于 y 2 y_2 y2? 的概率建模如下:
p ? ( y 1 ? y 2 ∣ x ) = exp ? ( r ? ( x , y 1 ) ) exp ? ( r ? ( x , y 1 ) ) + exp ? ( r ? ( x , y 2 ) ) . p^*\left(y_1 \succ y_2 \mid x\right)=\frac{\exp \left(r^*\left(x, y_1\right)\right)}{\exp \left(r^*\left(x, y_1\right)\right)+\exp \left(r^*\left(x, y_2\right)\right)}. p?(y1??y2?∣x)=exp(r?(x,y1?))+exp(r?(x,y2?))exp(r?(x,y1?))?.
代入 π ? \pi^* π?,可以將上述式子進(jìn)行如下轉(zhuǎn)換:
p ? ( y 1 ? y 2 ∣ x ) = exp ? ( β log ? π ? ( y 1 ∣ x ) π ref? ( y 1 ∣ x ) + β log ? Z ( x ) ) exp ? ( β log ? π ? ( y 1 ∣ x ) π ref? ( y 1 ∣ x ) + β log ? Z ( x ) ) + exp ? ( β log ? π ? ( y 2 ∣ x ) π ref? ( y 2 ∣ x ) + β log ? Z ( x ) ) = 1 1 + exp ? ( β log ? π ? ( y 2 ∣ x ) π ref? ( y 2 ∣ x ) ? β log ? π ? ( y 1 ∣ x ) π ref? ( y 1 ∣ x ) ) = σ ( β log ? π ? ( y 1 ∣ x ) π ref? ( y 1 ∣ x ) ? β log ? π ? ( y 2 ∣ x ) π ref? ( y 2 ∣ x ) ) . \begin{aligned} p^*\left(y_1 \succ y_2 \mid x\right) & =\frac{\exp \left(\beta \log \frac{\pi^*\left(y_1 \mid x\right)}{\pi_{\text {ref }}\left(y_1 \mid x\right)}+\beta \log Z(x)\right)}{\exp \left(\beta \log \frac{\pi^*\left(y_1 \mid x\right)}{\pi_{\text {ref }}\left(y_1 \mid x\right)}+\beta \log Z(x)\right)+\exp \left(\beta \log \frac{\pi^*\left(y_2 \mid x\right)}{\pi_{\text {ref }}\left(y_2 \mid x\right)}+\beta \log Z(x)\right)} \\ & =\frac{1}{1+\exp \left(\beta \log \frac{\pi^*\left(y_2 \mid x\right)}{\pi_{\text {ref }}\left(y_2 \mid x\right)}-\beta \log \frac{\pi^*\left(y_1 \mid x\right)}{\pi_{\text {ref }}\left(y_1 \mid x\right)}\right)} \\ & =\sigma\left(\beta \log \frac{\pi^*\left(y_1 \mid x\right)}{\pi_{\text {ref }}\left(y_1 \mid x\right)}-\beta \log \frac{\pi^*\left(y_2 \mid x\right)}{\pi_{\text {ref }}\left(y_2 \mid x\right)}\right) . \end{aligned} p?(y1??y2?∣x)?=exp(βlogπref??(y1?∣x)π?(y1?∣x)?+βlogZ(x))+exp(βlogπref??(y2?∣x)π?(y2?∣x)?+βlogZ(x))exp(βlogπref??(y1?∣x)π?(y1?∣x)?+βlogZ(x))?=1+exp(βlogπref??(y2?∣x)π?(y2?∣x)??βlogπref??(y1?∣x)π?(y1?∣x)?)1?=σ(βlogπref??(y1?∣x)π?(y1?∣x)??βlogπref??(y2?∣x)π?(y2?∣x)?).?
由于我們希望 y w y_w yw? (更符合人類偏好的回答) 的概率盡可能大于 y l y_l yl? (未被選中的回答),因此整體優(yōu)化目標(biāo)可以寫作如下形式:
L D P O ( π θ ; π r e f ) = ? E ( x , y w , y l ) ~ D [ log ? p ( y w ? y l ∣ x ) ] = ? E ( x , y w , y l ) ~ D [ log ? σ ( β log ? π θ ( y w ∣ x ) π r e f ( y w ∣ x ) ? β log ? π θ ( y l ∣ x ) π r e f ( y l ∣ x ) ) ] . \begin{aligned} \mathcal{L}_{\mathrm{DPO}}\left(\pi_\theta ; \pi_{\mathrm{ref}}\right)&= -\mathbb{E}_{\left(x, y_w, y_l\right) \sim \mathcal{D}}[\log p(y_w \succ y_l \mid x)]\\ &=- \mathbb{E}_{\left(x, y_w, y_l\right) \sim \mathcal{D}}\left[\log \sigma\left(\beta \log \frac{\pi_\theta\left(y_w \mid x\right)}{\pi_{\mathrm{ref}}\left(y_w \mid x\right)}-\beta \log \frac{\pi_\theta\left(y_l \mid x\right)}{\pi_{\mathrm{ref}}\left(y_l \mid x\right)}\right)\right]. \end{aligned} LDPO?(πθ?;πref?)?=?E(x,yw?,yl?)~D?[logp(yw??yl?∣x)]=?E(x,yw?,yl?)~D?[logσ(βlogπref?(yw?∣x)πθ?(yw?∣x)??βlogπref?(yl?∣x)πθ?(yl?∣x)?)].?
上述優(yōu)化目標(biāo)中不包含 Reward Model,由此可以繞過訓(xùn)練 Reward Model 的環(huán)節(jié),直接用成對的偏好數(shù)據(jù),采用類似 SFT 的方式訓(xùn)練對齊模型。
DPO Objective Under the Plackett-Luce Model
類似地,在 PL 模型下,偏好排序 τ \tau τ( y 1 > y 2 > . . . > y K y_1>y_2>...>y_K y1?>y2?>...>yK?)的概率建模如下:
p ? ( τ ∣ y 1 , … , y K , x ) = ∏ k = 1 K exp ? ( r ? ( x , y τ ( k ) ) ) ∑ j = k K exp ? ( r ? ( x , y τ ( j ) ) ) . p^*\left(\tau \mid y_1, \ldots, y_K, x\right)=\prod_{k=1}^K \frac{\exp \left(r^*\left(x, y_{\tau(k)}\right)\right)}{\sum_{j=k}^K \exp \left(r^*\left(x, y_{\tau(j)}\right)\right)}. p?(τ∣y1?,…,yK?,x)=k=1∏K?∑j=kK?exp(r?(x,yτ(j)?))exp(r?(x,yτ(k)?))?.
代入 π ? \pi^* π?,可以得到如下優(yōu)化目標(biāo)(由于 Z ( x ) Z(x) Z(x) 與 π θ \pi_{\theta} πθ? 無關(guān),因此下式中省去了 Z ( x ) Z(x) Z(x)):
L D P O ( π θ ; π r e f ) = ? E τ , y 1 , … , y K , x ~ D [ log ? p ( τ ∣ y 1 , … , y K , x ) ] = ? E τ , y 1 , … , y K , x ~ D [ log ? ∏ k = 1 K exp ? ( β log ? π θ ( y τ ( k ) ∣ x ) π r e f ( y τ ( k ) ∣ x ) ) ∑ j = k K exp ? ( β log ? π θ ( y τ ( j ) ∣ x ) π r e f ( y τ ( j ) ∣ x ) ) ] . \begin{aligned} \mathcal{L}_{\mathrm{DPO}}\left(\pi_\theta ; \pi_{\mathrm{ref}}\right)&= -\mathbb{E}_{\tau, y_1, \ldots, y_K, x \sim \mathcal{D}}[\log p(\tau \mid y_1, \ldots, y_K, x)]\\ &=-\mathbb{E}_{\tau, y_1, \ldots, y_K, x \sim \mathcal{D}}\left[\log \prod_{k=1}^K \frac{\exp \left(\beta \log \frac{\pi_\theta\left(y_{\tau(k)} \mid x\right)}{\pi_{\mathrm{ref}}\left(y_{\tau(k)} \mid x\right)}\right)}{\sum_{j=k}^K \exp \left(\beta \log \frac{\pi_\theta\left(y_{\tau(j)} \mid x\right)}{\pi_{\mathrm{ref}}\left(y_{\tau(j)} \mid x\right)}\right)}\right]. \end{aligned} LDPO?(πθ?;πref?)?=?Eτ,y1?,…,yK?,x~D?[logp(τ∣y1?,…,yK?,x)]=?Eτ,y1?,…,yK?,x~D? ?logk=1∏K?∑j=kK?exp(βlogπref?(yτ(j)?∣x)πθ?(yτ(j)?∣x)?)exp(βlogπref?(yτ(k)?∣x)πθ?(yτ(k)?∣x)?)? ?.?
Group Relative Policy Optimization (GRPO)
GRPO 是在 PPO 上的進(jìn)一步變化,其省略了 PPO 過程中對 Critic Model (Value Model) 的建模,并且不再對中間過程的 reward 進(jìn)行建模,而是直接優(yōu)化整個(gè)回答的 reward,其 Policy Model 最大化的目標(biāo)函數(shù)如下:
J G R P O ( θ ) = E [ q ~ P ( Q ) , { o i } i = 1 G ~ π θ o l d ( O ∣ q ) ] 1 G ∑ i = 1 G 1 ∣ o i ∣ ∑ t = 1 ∣ o i ∣ { min ? [ π θ ( o i , t ∣ q , o i , < t ) π θ o l d ( o i , t ∣ q , o i , < t ) A ^ i , t , clip ? ( π θ ( o i , t ∣ q , o i , < t ) π θ o l d ( o i , t ∣ q , o i , < t ) , 1 ? ε , 1 + ε ) A ^ i , t ] ? β D K L [ π θ ∣ ∣ π r e f ] } . \begin{aligned} \mathcal{J}_{G R P O}(\theta) & =\mathbb{E}\left[q \sim P(Q),\left\{o_i\right\}_{i=1}^G \sim \pi_{\theta_{o l d}}(O \mid q)\right] \\ & \frac{1}{G} \sum_{i=1}^G \frac{1}{\left|o_i\right|} \sum_{t=1}^{\left|o_i\right|}\left\{\min \left[\frac{\pi_\theta\left(o_{i, t} \mid q, o_{i,<t}\right)}{\pi_{\theta_{o l d}}\left(o_{i, t} \mid q, o_{i,<t}\right)} \hat{A}_{i, t}, \operatorname{clip}\left(\frac{\pi_\theta\left(o_{i, t} \mid q, o_{i,<t}\right)}{\pi_{\theta_{o l d}}\left(o_{i, t} \mid q, o_{i,<t}\right)}, 1-\varepsilon, 1+\varepsilon\right) \hat{A}_{i, t}\right]-\beta \mathbb{D}_{K L}\left[\pi_\theta| | \pi_{r e f}\right]\right\}. \end{aligned} JGRPO?(θ)?=E[q~P(Q),{oi?}i=1G?~πθold??(O∣q)]G1?i=1∑G?∣oi?∣1?t=1∑∣oi?∣?{min[πθold??(oi,t?∣q,oi,<t?)πθ?(oi,t?∣q,oi,<t?)?A^i,t?,clip(πθold??(oi,t?∣q,oi,<t?)πθ?(oi,t?∣q,oi,<t?)?,1?ε,1+ε)A^i,t?]?βDKL?[πθ?∣∣πref?]}.?
不同于 PPO 的優(yōu)化目標(biāo),GRPO 一次性采樣一組輸出 { o i } i = 1 G \{o_i\}_{i=1}^G {oi?}i=1G?,其對應(yīng)的整體 reward 為 r = { r i } i = 1 G \boldsymbol{r}=\{r_i\}_{i=1}^G r={ri?}i=1G?(由 Reward Model 得到),隨后 A ^ i , t \hat{A}_{i,t} A^i,t? 被定義為 o i o_i oi? 所對應(yīng)的標(biāo)準(zhǔn)化后的 reward,即:
A ^ i , t = r ^ i = r i ? mean ( r ) std ( r ) . \hat{A}_{i,t}=\hat{r}_i=\frac{r_i-\text{mean}(\boldsymbol{r})}{\text{std}(\boldsymbol{r})}. A^i,t?=r^i?=std(r)ri??mean(r)?.
在復(fù)雜數(shù)學(xué)任務(wù)場景下,每個(gè) reasoning step 也有其對應(yīng)的 reward,即:
R = { { r 1 index? ( 1 ) , ? , r 1 index ? ( K 1 ) } , ? , { r G index ? ( 1 ) , ? , r G index ? ( K G ) } } , \mathbf{R}=\left\{\left\{r_1^{\text {index }(1)}, \cdots, r_1^{\operatorname{index}\left(K_1\right)}\right\}, \cdots,\left\{r_G^{\operatorname{index}(1)}, \cdots, r_G^{\operatorname{index}\left(K_G\right)}\right\}\right\}, R={{r1index?(1)?,?,r1index(K1?)?},?,{rGindex(1)?,?,rGindex(KG?)?}},
其中 index ( j ) \text{index}(j) index(j) 為第 j j j 步推理結(jié)束時(shí)的 token index,此時(shí)的 A ^ i , t \hat{A}_{i,t} A^i,t? 可以進(jìn)行如下定義:
A ^ i , t = ∑ index? ( j ) ≥ t r ^ i index? ( j ) , r ^ i index? ( j ) = r i index? ( j ) ? mean ? ( R ) std ? ( R ) . \hat{A}_{i, t}=\sum_{\text {index }(j) \geq t} \hat{r}_i^{\text {index }(j)}, \hat{r}_i^{\text {index }(j)}=\frac{r_i^{\text {index }(j)}-\operatorname{mean}(\mathbf{R})}{\operatorname{std}(\mathbf{R})}. A^i,t?=index?(j)≥t∑?r^iindex?(j)?,r^iindex?(j)?=std(R)riindex?(j)??mean(R)?.
另外由于上述 reward 定義中不再包含與 π r e f \pi_{ref} πref? 的 KL 散度約束,因此直接將 D K L [ π θ ∣ ∣ π r e f ] \mathbb{D}_{K L}\left[\pi_\theta| | \pi_{r e f}\right] DKL?[πθ?∣∣πref?] 顯式建模在了 J G R P O ( θ ) \mathcal{J}_{G R P O}(\theta) JGRPO?(θ) 之中,其具體式子如下:
D K L [ π θ ∣ ∣ π r e f ] = π r e f ( o i , t ∣ q , o i , < t ) π θ ( o i , t ∣ q , o i , < t ) ? log ? π r e f ( o i , t ∣ q , o i , < t ) π θ ( o i , t ∣ q , o i , < t ) ? 1 , \mathbb{D}_{K L}\left[\pi_\theta| | \pi_{r e f}\right]=\frac{\pi_{r e f}\left(o_{i, t} \mid q, o_{i,<t}\right)}{\pi_\theta\left(o_{i, t} \mid q, o_{i,<t}\right)}-\log \frac{\pi_{r e f}\left(o_{i, t} \mid q, o_{i,<t}\right)}{\pi_\theta\left(o_{i, t} \mid q, o_{i,<t}\right)}-1, DKL?[πθ?∣∣πref?]=πθ?(oi,t?∣q,oi,<t?)πref?(oi,t?∣q,oi,<t?)??logπθ?(oi,t?∣q,oi,<t?)πref?(oi,t?∣q,oi,<t?)??1,
上述式子為對 D K L [ π θ ∣ ∣ π r e f ] \mathbb{D}_{K L}\left[\pi_\theta| | \pi_{r e f}\right] DKL?[πθ?∣∣πref?] 的無偏估計(jì),即期望相同。整體優(yōu)化算法的偽代碼如下所示:
GRPO 與 PPO 的方法對比圖如下,可以看到 GRPO 中不再需要訓(xùn)練 Value Model:
Other Discussion
除了 RLHF,也可以使用 RLAIF,即讓 LLM 自己來判斷哪個(gè)回答更好,根據(jù) LLM 判斷的結(jié)果再來微調(diào)具體的模型,判斷回答好的 LLM 既可以使用類似 GPT-4 等已有模型,甚至也可以使用正在訓(xùn)練的這個(gè)模型。
此外,RLHF 仍然面臨一個(gè)困難,即 “好” 這件事并沒有一個(gè)固定的標(biāo)準(zhǔn),例如對于一個(gè)不太安全的問題,一個(gè)回答更考慮 Safety,而另一個(gè)回答與問題關(guān)系更密切,此時(shí)應(yīng)該選擇哪一個(gè)答案呢?另外,許多回答,即使人類來判斷,也難以辨別哪個(gè)更好,此時(shí) RLHF 又該如何繼續(xù)提升呢?
參考資料
- Hung-yi Lee: 生成式 AI 導(dǎo)論 2024 - 第 6 講
- Hung-yi Lee: 生成式 AI 導(dǎo)論 2024 - 第 7 講
- Hung-yi Lee: 生成式 AI 導(dǎo)論 2024 - 第 8 講
- arXiv20 GPT3 - Language Models are Few-Shot Learners
- arXiv22 Instruct GPT - Training language models to follow instructions with human feedback
- arXiv22 Self-Instruct: Aligning Language Models with Self-Generated Instructions
- arXiv23 DPO: Direct Preference Optimization: Your Language Model is Secretly a Reward Model
- arXiv24 Self-Rewarding Language Models
- arXiv24 GRPO: DeepSeekMath - Pushing the Limits of Mathematical Reasoning in Open Language Models
- 知乎 - PPO 原理與源碼解讀 / RL-PPO理論知識(shí) / DPO 數(shù)學(xué)原理 / 如何理解 PPO 和 GRPO