獎(jiǎng)勵(lì)模型BNRM:穩(wěn)定RLHF獎(jiǎng)勵(lì)建模的新思路)
做RLHF做到第三個(gè)月的時(shí)候我徹底對(duì)“獎(jiǎng)勵(lì)模型”這四個(gè)字失去了安全感。當(dāng)時(shí)用的標(biāo)準(zhǔn)獎(jiǎng)勵(lì)模型在驗(yàn)證集上的偏好分類(lèi)準(zhǔn)確率已經(jīng)刷到了很不錯(cuò)的水平可一旦接到策略?xún)?yōu)化里模型就開(kāi)始瘋狂輸出那種“看起來(lái)很有道理、讀起來(lái)全是空話”的內(nèi)容——就是大家常說(shuō)的reward hacking。后來(lái)我把獎(jiǎng)勵(lì)模型的輸出分布打出來(lái)看了一眼發(fā)現(xiàn)評(píng)分尺度在一輪訓(xùn)練里能上下漂移好幾個(gè)點(diǎn)而且它對(duì)給出的分?jǐn)?shù)完全沒(méi)有置信度可言。這也是我后來(lái)轉(zhuǎn)向貝葉斯非負(fù)獎(jiǎng)勵(lì)模型BNRM的直接原因。BNRM這個(gè)方向很有意思它其實(shí)是對(duì)獎(jiǎng)勵(lì)模型做了兩件事第一把獎(jiǎng)勵(lì)輸出約束成非負(fù)值第二給獎(jiǎng)勵(lì)參數(shù)引入貝葉斯后驗(yàn)分布讓模型在打分的同時(shí)告訴你怎么“不確定”。這兩件事單拎出來(lái)都不算新但合在一起正好打在標(biāo)準(zhǔn)獎(jiǎng)勵(lì)模型的幾個(gè)要害上。這篇文章我打算把BNRM的設(shè)計(jì)動(dòng)機(jī)、數(shù)學(xué)推導(dǎo)、訓(xùn)練流程和踩坑經(jīng)驗(yàn)完整過(guò)一遍適合已經(jīng)被RLHF折磨過(guò)、想給獎(jiǎng)勵(lì)模型換一種更穩(wěn)做法的朋友參考也適合剛?cè)雽?duì)齊方向、想把獎(jiǎng)勵(lì)建模理解透的初學(xué)者。1. 標(biāo)準(zhǔn)獎(jiǎng)勵(lì)模型為什么不夠用1.1 RLHF流程中的獎(jiǎng)勵(lì)模型先對(duì)齊一下語(yǔ)境。RLHF到現(xiàn)在已經(jīng)演出了很多變體但主流仍然可以拆成三步先用人工或規(guī)則數(shù)據(jù)做有監(jiān)督微調(diào)SFT然后訓(xùn)練一個(gè)獎(jiǎng)勵(lì)模型Reward Model, RM最后用強(qiáng)化學(xué)習(xí)PPO這類(lèi)算法去優(yōu)化策略。獎(jiǎng)勵(lì)模型在這條流水線里承擔(dān)的是“人類(lèi)偏好的代理”這個(gè)角色——它需要在偏好數(shù)據(jù)上學(xué)會(huì)什么樣輸出更符合期望然后在策略?xún)?yōu)化階段給每一條生成結(jié)果打分。標(biāo)準(zhǔn)做法是Bradley-Terry模型。給定同一個(gè)提示x下的兩個(gè)回答y_a和y_b人工標(biāo)注告訴我們y_a比y_b好那獎(jiǎng)勵(lì)模型就要讓r(x,y_a)盡量大于r(x,y_b)。用公式寫(xiě)就是P(y_a y_b) σ(r(x,y_a) - r(x,y_b))其中σ是sigmoid。訓(xùn)練的時(shí)候最大化偏好對(duì)上的對(duì)數(shù)似然等價(jià)于讓兩個(gè)回答的獎(jiǎng)勵(lì)差值盡量拉開(kāi)。這個(gè)思路簡(jiǎn)潔、穩(wěn)定也被證明非常有效但它把“人類(lèi)偏好可以建模成一個(gè)標(biāo)量分?jǐn)?shù)”這個(gè)假設(shè)貫徹得很徹底問(wèn)題恰恰也出在這。1.2 標(biāo)準(zhǔn)獎(jiǎng)勵(lì)模型的三個(gè)“內(nèi)傷”我實(shí)際跑過(guò)的標(biāo)準(zhǔn)RM幾乎沒(méi)有不踩下面三個(gè)坑的。第一點(diǎn)估計(jì)給不了置信度。訓(xùn)練收斂之后模型只輸出一個(gè)固定分?jǐn)?shù)它不會(huì)告訴你這個(gè)分?jǐn)?shù)是“很有把握”還是“猜的”。但在真實(shí)偏好數(shù)據(jù)里很多pair本身就是模糊的、甚至是標(biāo)注員隨機(jī)翻牌的。標(biāo)準(zhǔn)RM面對(duì)這種樣本時(shí)只能強(qiáng)行給一個(gè)分?jǐn)?shù)分?jǐn)?shù)背后的不確定性完全丟失。到了PPO階段策略會(huì)去追高分哪怕這個(gè)高分只是模型瞎猜出來(lái)的策略也會(huì)把它當(dāng)成真實(shí)信號(hào)去學(xué)習(xí)。第二輸出尺度不受約束漂移嚴(yán)重。標(biāo)準(zhǔn)RM最后一層是線性層輸出可以落在任意實(shí)數(shù)區(qū)間。同一個(gè)RM訓(xùn)練1個(gè)epoch和訓(xùn)練2個(gè)epoch分?jǐn)?shù)分布可能完全不同。那PPO里的reward clip閾值、KL系數(shù)就都要跟著調(diào)。我試過(guò)最夸張的一次模型在300步內(nèi)平均獎(jiǎng)勵(lì)從0.8漲到2.4策略其實(shí)沒(méi)有變好只是RM自己在漂移。第三對(duì)獎(jiǎng)勵(lì)語(yǔ)義沒(méi)有約束。標(biāo)準(zhǔn)RM既可以給正分也可以給負(fù)分但“負(fù)分”在某些場(chǎng)景下很難解釋。比如推薦場(chǎng)景里用戶(hù)沒(méi)點(diǎn)擊只是“不感興趣”并不等于“反感”安全對(duì)齊里我們經(jīng)常希望模型對(duì)違規(guī)請(qǐng)求給一個(gè)“拒絕”動(dòng)作但這個(gè)動(dòng)作可能沒(méi)有明確的負(fù)向程度。將獎(jiǎng)勵(lì)約束為非負(fù)相當(dāng)于給打分一個(gè)語(yǔ)義下界0分意味著“沒(méi)提供任何正向價(jià)值”所有分?jǐn)?shù)都朝“有用、安全、符合偏好”的方向度量。這在實(shí)踐里能減少很多獎(jiǎng)勵(lì)解釋上的麻煩。1.3 BNRM想解決的到底是什么BNRM的設(shè)計(jì)目標(biāo)是把上面三個(gè)問(wèn)題一次性做進(jìn)模型架構(gòu)里而不是靠后處理去修。非負(fù)約束負(fù)責(zé)解決語(yǔ)義和尺度漂移的一部分問(wèn)題貝葉斯化負(fù)責(zé)解決不確定性和魯棒性的問(wèn)題。二者結(jié)合帶來(lái)的直接好處是在PPO階段我們可以根據(jù)后驗(yàn)分布對(duì)每個(gè)獎(jiǎng)勵(lì)信號(hào)做“減不確定性懲罰”或“采樣”處理讓策略在低置信度區(qū)域不再盲目追高從根本上緩解reward hacking。理解這一層很重要因?yàn)锽NRM不是一個(gè)“更準(zhǔn)的打分器”它是一套更完整的獎(jiǎng)勵(lì)建模方案。它犧牲了一部分訓(xùn)練便利性換來(lái)了對(duì)獎(jiǎng)勵(lì)不確定性的顯式建模和更強(qiáng)的安全邊界。后面所有數(shù)學(xué)和代碼都圍繞這個(gè)核心思想展開(kāi)。2. BNRM的核心設(shè)計(jì)思路與數(shù)學(xué)骨架2.1 非負(fù)是約束更是語(yǔ)義BNRM最常見(jiàn)的參數(shù)化方式是把獎(jiǎng)勵(lì)模型最后一層的輸出接一個(gè)softplus激活r(x,y) softplus(f_θ(x,y)) ln(1 exp(f_θ(x,y)))softplus形狀像一個(gè)平滑的ReLU輸出永遠(yuǎn)大于0而且沒(méi)有尖角梯度可以正?;貍鳌S行?shí)現(xiàn)會(huì)用softplus(x)再乘一個(gè)縮放因子保證獎(jiǎng)勵(lì)上限不至于過(guò)小。其實(shí)用平方輸出或者exp輸出也能保證非負(fù)但softplus在邏輯回歸式的訓(xùn)練里數(shù)值穩(wěn)定性更好——它的導(dǎo)數(shù)有自然的上界不會(huì)像exp那樣指數(shù)爆炸。為什么非負(fù)這么重要從數(shù)學(xué)上看非負(fù)約束改變了獎(jiǎng)勵(lì)空間的拓?fù)浣Y(jié)構(gòu)。標(biāo)準(zhǔn)RM的獎(jiǎng)勵(lì)空間是R整個(gè)實(shí)數(shù)域兩個(gè)樣本的分?jǐn)?shù)差可以無(wú)限大模型訓(xùn)練時(shí)天然的傾向就是把正負(fù)樣本使勁拉開(kāi)而B(niǎo)NRM的獎(jiǎng)勵(lì)空間是R0是一個(gè)硬性下界這限制了過(guò)大的獎(jiǎng)勵(lì)差值模型必須用更“經(jīng)濟(jì)”的方式去表達(dá)偏好。尤其在樣本噪聲大的時(shí)候標(biāo)準(zhǔn)RM會(huì)把噪聲當(dāng)成信號(hào)去拉分BNRM因?yàn)橄陆绲拇嬖谔烊粚?duì)異常偏好沒(méi)那么敏感。從PPO實(shí)操來(lái)看非負(fù)獎(jiǎng)勵(lì)還有另一個(gè)隱性好處KL懲罰項(xiàng)和獎(jiǎng)勵(lì)項(xiàng)在做權(quán)衡時(shí)reward clip邊界可以設(shè)置得更有物理意義。比如把獎(jiǎng)勵(lì)clip在[0, 5]區(qū)間0就對(duì)應(yīng)“無(wú)價(jià)值”5對(duì)應(yīng)“優(yōu)秀”設(shè)置參數(shù)時(shí)心理有個(gè)譜。標(biāo)準(zhǔn)RM的負(fù)分區(qū)間到底怎么處理很多時(shí)候真的只能靠猜。2.2 貝葉斯化獎(jiǎng)勵(lì)的不確定性表達(dá)非負(fù)約束解決的是語(yǔ)義和尺度問(wèn)題貝葉斯化解決的則是置信度問(wèn)題。標(biāo)準(zhǔn)RM把參數(shù)θ當(dāng)成一個(gè)固定值訓(xùn)練一次得到點(diǎn)估計(jì)。BNRM換了一個(gè)思路參數(shù)θ是一個(gè)隨機(jī)變量我們對(duì)它先驗(yàn)p(θ)有一個(gè)判斷看到數(shù)據(jù)D之后更新的后驗(yàn)分布p(θ|D)才真正用于預(yù)測(cè)。用貝葉斯公式寫(xiě)清楚就是p(θ|D) ∝ p(D|θ) · p(θ)數(shù)據(jù)似然p(D|θ)和標(biāo)準(zhǔn)RM一樣來(lái)自Bradley-Terry偏好模型。而預(yù)測(cè)獎(jiǎng)勵(lì)時(shí)不再用一個(gè)固定參數(shù)前向計(jì)算而是對(duì)后驗(yàn)做積分p(r|x,y,D) ∫ p(r|x,y,θ) · p(θ|D) dθ這個(gè)積分在神經(jīng)網(wǎng)絡(luò)里沒(méi)法精確算所以實(shí)際會(huì)用兩種近似一是變分推斷用一個(gè)簡(jiǎn)單的分布去近似后驗(yàn)二是MCMC采樣用HMC或NUTS從真實(shí)后驗(yàn)里采樣。后面實(shí)操環(huán)節(jié)我會(huì)展開(kāi)說(shuō)這兩種選擇的取舍。核心是要理解BNRM的最終輸出不是一個(gè)標(biāo)量而是一個(gè)獎(jiǎng)勵(lì)分布。這個(gè)分布的均值就是點(diǎn)估計(jì)方差就是不確定性。舉個(gè)具體例子。某段生成內(nèi)容在訓(xùn)練集里出現(xiàn)了100次偏好都是一邊倒的那么后驗(yàn)分布會(huì)很尖方差很小另一段內(nèi)容只出現(xiàn)過(guò)兩次而且標(biāo)注員之間還有分歧后驗(yàn)分布就會(huì)很胖方差很大。這個(gè)方差信息在標(biāo)準(zhǔn)RM里完全看不到但它在PPO里太重要了——策略在不確定的區(qū)域應(yīng)該謹(jǐn)慎而不是冒險(xiǎn)。2.3 BNRM與標(biāo)準(zhǔn)BT模型的數(shù)學(xué)關(guān)系看公式會(huì)發(fā)現(xiàn)BNRM其實(shí)沒(méi)有拋棄Bradley-Terry而是把它做了三層擴(kuò)展。第一層獎(jiǎng)勵(lì)函數(shù)r(x,y)被參數(shù)化為非負(fù)函數(shù)而標(biāo)準(zhǔn)RM沒(méi)有這個(gè)約束。第二層模型訓(xùn)練目標(biāo)從“最大化一個(gè)固定的log-likelihood”變成“最大化后驗(yàn)分布的證據(jù)下界ELBO”。第三層推理時(shí)從“前向一次得到分?jǐn)?shù)”變成“采樣多個(gè)參數(shù)前向多次得到分?jǐn)?shù)分布”。標(biāo)準(zhǔn)RM可以看成BNRM的一個(gè)退化特例如果我們把先驗(yàn)分布設(shè)成方差無(wú)窮大即懲罰項(xiàng)消失參數(shù)約束也取消同時(shí)后驗(yàn)推斷只用最大后驗(yàn)MAP點(diǎn)估計(jì)BNRM就完整退化成標(biāo)準(zhǔn)的Bradley-Terry獎(jiǎng)勵(lì)模型。這個(gè)退化關(guān)系很重要它說(shuō)明我們做的一切改動(dòng)都是兼容性擴(kuò)展而不是另起爐灶。在工程實(shí)現(xiàn)上先用標(biāo)準(zhǔn)RM的權(quán)重做BNRM初始化幾乎可以無(wú)縫銜接。3. 從數(shù)學(xué)到訓(xùn)練BNRM落地全過(guò)程3.1 先驗(yàn)設(shè)計(jì)把先驗(yàn)知識(shí)“寫(xiě)”進(jìn)模型BNRM里先驗(yàn)不是擺設(shè)它決定了不確定性估計(jì)的質(zhì)量。我嘗試過(guò)的先驗(yàn)大致分三類(lèi)。第一類(lèi)是球面高斯先驗(yàn)也是推薦拿來(lái)當(dāng)默認(rèn)的p(θ) N(0, σ02 · I)σ0取0.1到1.0之間。這個(gè)先驗(yàn)唯一的作用是防止參數(shù)飛太遠(yuǎn)相當(dāng)于一個(gè)可調(diào)節(jié)的正則化強(qiáng)度。好處是簡(jiǎn)單穩(wěn)定幾乎不需要調(diào)參。第二類(lèi)是分層先驗(yàn)給參數(shù)分組設(shè)置不同的先驗(yàn)方差例如把embedding層和分類(lèi)頭的先驗(yàn)尺度分開(kāi)。它能表達(dá)“embedding比分類(lèi)頭更可壓縮”這類(lèi)知識(shí)但實(shí)現(xiàn)復(fù)雜度高收益往往不明顯。第三類(lèi)是稀疏先驗(yàn)類(lèi)似Lasso的思路鼓勵(lì)獎(jiǎng)勵(lì)模型只依賴(lài)少數(shù)關(guān)鍵特征。這個(gè)在特征維度很高時(shí)才推薦嘗試否則容易引入額外偏差。實(shí)操建議是第一版先做球面高斯先驗(yàn)把σ0調(diào)到在驗(yàn)證集準(zhǔn)確率不下降的前提下盡量大。這個(gè)值的意義很直觀——先驗(yàn)方差越大數(shù)據(jù)對(duì)后驗(yàn)的塑造能力越強(qiáng)先驗(yàn)方差越小后驗(yàn)越保守不確定性估計(jì)越大。如果你發(fā)現(xiàn)BNRM的不確定性整體偏高策略?xún)?yōu)化得畏畏縮縮第一反應(yīng)不應(yīng)該是改學(xué)習(xí)率而是把先驗(yàn)方差調(diào)大。3.2 后驗(yàn)推斷變分還是MCMC后驗(yàn)推斷是BNRM工程實(shí)現(xiàn)里最重要的一個(gè)岔路口兩種主流路線各有個(gè)的適用場(chǎng)景。變分推斷VI的思路是選一個(gè)簡(jiǎn)單的變分分布族比如對(duì)角高斯q_ψ(θ) N(μ, diag(σ_ψ2))然后優(yōu)化ELBOL(ψ) E_{θ~q_ψ}[log p(D|θ)] - KL(q_ψ(θ) || p(θ))第一項(xiàng)讓模型擬合偏好數(shù)據(jù)第二項(xiàng)讓變分分布別偏離先驗(yàn)太遠(yuǎn)。優(yōu)化這個(gè)目標(biāo)用重新參數(shù)化技巧就能搞和訓(xùn)練普通網(wǎng)絡(luò)幾乎一樣。對(duì)于LLM規(guī)模的獎(jiǎng)勵(lì)模型我用下來(lái)感覺(jué)變分推斷幾乎是唯一現(xiàn)實(shí)的選擇——推理速度和標(biāo)準(zhǔn)RM一樣不確定性通過(guò)多次前向采樣獲得代價(jià)是后驗(yàn)可能被對(duì)角高斯限制住相關(guān)性參數(shù)學(xué)不出來(lái)。MCMC路線里HMC/NUTS在小模型上能采出高質(zhì)量后驗(yàn)樣本但放到現(xiàn)代規(guī)模的大語(yǔ)言模型上采樣成本勸退。NUTS需要計(jì)算Hessian或至少高階梯度信息一次采樣幾十步顯存和時(shí)間都撐不住。我的看法是科研驗(yàn)證階段用MCMC做“黃金標(biāo)尺”對(duì)比VI的近似質(zhì)量工程落地階段直接上VI沒(méi)必要糾結(jié)。3.3 后驗(yàn)獎(jiǎng)勵(lì)如何接到策略?xún)?yōu)化里拿到獎(jiǎng)勵(lì)分布之后怎么用是關(guān)鍵。我試過(guò)三種方式分別對(duì)應(yīng)不同的優(yōu)化心態(tài)。第一種是后驗(yàn)均值不確定性懲罰也是推薦做安全對(duì)齊時(shí)優(yōu)先嘗試的r_ppo(x,y) μ_r(x,y) - λ · σ_r(x,y)其中μ_r和σ_r分別是從后驗(yàn)采樣計(jì)算出的獎(jiǎng)勵(lì)均值和標(biāo)準(zhǔn)差λ是一個(gè)正的超參數(shù)。這背后的想法是悲觀主義當(dāng)一個(gè)樣本的獎(jiǎng)勵(lì)不確定時(shí)我們向下修正它的分?jǐn)?shù)策略就不會(huì)去過(guò)度追逐這些模糊的高分區(qū)域。和標(biāo)準(zhǔn)RM相比這個(gè)方案等于給獎(jiǎng)勵(lì)信號(hào)加了一道“護(hù)欄”rewards less likely to be gamed。第二種是Thompson采樣也叫后驗(yàn)采樣式。每個(gè)PPO batch隨機(jī)從后驗(yàn)分布里采一個(gè)獎(jiǎng)勵(lì)函數(shù)參數(shù)用它給整個(gè)batch打分。這樣策略在訓(xùn)練中會(huì)自然傾向于在“大多數(shù)后驗(yàn)樣本都給高分”的區(qū)域前進(jìn)而偶爾的隨機(jī)性也變相起到了探索作用。這種方式實(shí)現(xiàn)最簡(jiǎn)單但方差會(huì)比上一種大。第三種是樂(lè)觀探索版把r_ppo設(shè)成μ_r λ·σ_r。它鼓勵(lì)策略去試那些不確定性高的區(qū)域適合探索型任務(wù)。除非你的任務(wù)真的是鼓勵(lì)探索否則我一般不建議用——在安全對(duì)齊場(chǎng)景里樂(lè)觀探索等于主動(dòng)去撞模糊地帶出問(wèn)題概率偏高。3.4 關(guān)鍵訓(xùn)練偽代碼與超參數(shù)下面給一段核心邏輯的偽代碼展示BNRM訓(xùn)練和PPO接入的完整鏈路??蚣軣o(wú)關(guān)看邏輯就行。# BNRM 訓(xùn)練階段 # 模型: f_theta backbone head # 非負(fù)層: reward softplus(f_theta(x)) def bnrm_train_step(batch_x, batch_y_a, batch_y_b, pref, prior_scale0.5): # 變分參數(shù): mu, log_var eps gaussian_sample(mu.shape) theta_sample mu exp(0.5 * log_var) * eps r_a softplus(f_theta(x, y_a, theta_sample)) r_b softplus(f_theta(x, y_b, theta_sample)) r_diff r_a - r_b log_p -softplus(-r_diff) # 等價(jià)于 log sigmoid(r_diff) nll -mean(log_p) kl gaussian_kl(mu, log_var, prior_scale) loss nll kl / batch_size update(mu, log_var, loss) return loss.item() # 得到獎(jiǎng)勵(lì)分布 def predict_reward_distribution(x, y, n_samples16): rewards [] for _ in range(n_samples): theta_sample posterior_sample() rewards.append(softplus(f_theta(x, y, theta_sample))) rewards stack(rewards) # [n_samples, batch] return mean(rewards, dim0), std(rewards, dim0) # PPO 階段 def ppo_batch_inference(x, responses, lambd0.5, modepessimistic): mu, sigma predict_reward_distribution(x, responses) if mode pessimistic: r mu - lambd * sigma elif mode thompson: idx random_index() r posterior_samples[idx] elif mode optimistic: r mu lambd * sigma return r有幾個(gè)超參數(shù)值得單獨(dú)說(shuō)。KL項(xiàng)前面的系數(shù)官方常規(guī)做法是讓KL項(xiàng)在總loss里占比在0.1到1之間太小后驗(yàn)會(huì)坍縮到點(diǎn)估計(jì)太大模型會(huì)欠擬合偏好數(shù)據(jù)。變分采樣數(shù)n_samples訓(xùn)練時(shí)可以取1推理時(shí)建議至少8到16。λ的取值我沒(méi)有一個(gè)普適默認(rèn)方案和獎(jiǎng)勵(lì)數(shù)值范圍強(qiáng)相關(guān)通常從0開(kāi)始逐步往上試0先確認(rèn)基線的reward hacking程度再以0.25的幅度遞增。4. 實(shí)驗(yàn)配置與效果評(píng)估細(xì)節(jié)4.1 數(shù)據(jù)準(zhǔn)備與預(yù)處理習(xí)慣BNRM對(duì)數(shù)據(jù)質(zhì)量的要求比標(biāo)準(zhǔn)RM更高原因是不確定性建模會(huì)把“數(shù)據(jù)覆蓋不足”這件事暴露出來(lái)。偏好數(shù)據(jù)構(gòu)造上我一直用的思路是這樣的。提示詞覆蓋要廣確保不同難度、不同話題的prompt都有足夠的數(shù)量。如果提示詞分布偏斜BNRM會(huì)在高頻區(qū)域?qū)W得“胸有成竹”低頻區(qū)域?qū)W得“滿腹狐疑”這個(gè)特征本身是準(zhǔn)確的但如果你在策略?xún)?yōu)化時(shí)用了統(tǒng)一的不確定性閾值就得留意低頻區(qū)域會(huì)不會(huì)普遍被低估。標(biāo)注一致性處理也容易踩坑。同一對(duì)樣本請(qǐng)三個(gè)標(biāo)注員標(biāo)結(jié)果2比1這算偏好還是算噪聲我建議把這個(gè)信息編碼進(jìn)訓(xùn)練目標(biāo)而不是簡(jiǎn)單地把多數(shù)派當(dāng)成硬標(biāo)簽。具體做法是給每個(gè)pair一個(gè)置信度權(quán)重完全一致標(biāo)注的樣本權(quán)重1.0有分歧的樣本權(quán)重0.5讓BNRM在分歧樣本上不要過(guò)度自信。這個(gè)改動(dòng)雖然樸素但實(shí)測(cè)能明顯改善后驗(yàn)校準(zhǔn)質(zhì)量。4.2 超參設(shè)置參考表下面這份參數(shù)表是我在7B級(jí)基座模型上跑出的相對(duì)穩(wěn)定配置不同規(guī)模模型可以在此基礎(chǔ)上縮放。參數(shù)參考值說(shuō)明先驗(yàn)尺度 σ00.3 ~ 1.0先驗(yàn)方差決定不確定性估計(jì)的保守程度變分分布對(duì)角高斯簡(jiǎn)單穩(wěn)定支持重參數(shù)化訓(xùn)練KL系數(shù)0.1 ~ 1.0按總loss比例調(diào)節(jié)過(guò)小會(huì)后驗(yàn)坍縮訓(xùn)練采樣數(shù)1訓(xùn)練階段減少計(jì)算量推理采樣數(shù)8 ~ 16計(jì)算獎(jiǎng)勵(lì)均值與標(biāo)準(zhǔn)差悲觀系數(shù) λ0 ~ 1.0從0開(kāi)始遞增觀察reward hacking程度偏好溫度 T0.1 ~ 1.0縮放r_diff溫度越低偏好區(qū)分越尖銳學(xué)習(xí)率1e-5 ~ 5e-5與標(biāo)準(zhǔn)RM一致即可這里特別提一下溫度T。標(biāo)準(zhǔn)RM公式里sigmoid的輸入是r_a - r_b有時(shí)訓(xùn)練會(huì)發(fā)現(xiàn)模型過(guò)于自信logits差動(dòng)輒10以上這時(shí)候在差值上除一個(gè)溫度T可以壓住尖銳度。BNRM是由高斯后驗(yàn)采樣的r_diff天然帶有不確定性抖動(dòng)溫度的作用相對(duì)被削弱了一些但仍建議保留一個(gè)可調(diào)的溫度參數(shù)觀察后驗(yàn)不確定度與校準(zhǔn)誤差的關(guān)系。4.3 怎么評(píng)估BNRM真的變好了評(píng)估BNRM不能只看偏好分類(lèi)準(zhǔn)確率。準(zhǔn)確率能證明它“判別力不差”但證明不了不確定性估計(jì)是否有效。我自己常用的評(píng)估角度有五項(xiàng)。獎(jiǎng)勵(lì)分布校準(zhǔn)度是核心指標(biāo)。把預(yù)測(cè)樣本按不確定性分桶方差最小的桶、中間桶、方差最大的桶檢查桶內(nèi)預(yù)測(cè)獎(jiǎng)勵(lì)均值和實(shí)際偏好標(biāo)簽一致的比例。如果低不確定性的桶內(nèi)準(zhǔn)確率高于高不確定性的桶說(shuō)明方差確實(shí)攜帶了有效信息。這個(gè)做法和分類(lèi)器校準(zhǔn)里的ECE異曲同工。PPO穩(wěn)定性指標(biāo)也要看同樣優(yōu)化步數(shù)下使用BNRM后KL和reward的比值曲線是否能更穩(wěn)定收斂。前面提到的reward改寫(xiě)率也很有說(shuō)服力統(tǒng)計(jì)PPO訓(xùn)練中超出clip邊界的reward占比和reward尺度漂移方向BNRM應(yīng)該明顯更穩(wěn)。生成質(zhì)量和安全指標(biāo)不能省最終要回到策略輸出的自動(dòng)評(píng)估和人工抽評(píng)上。計(jì)算效率也要記錄VI只比標(biāo)準(zhǔn)RM多了一倍推理時(shí)間如果優(yōu)化的好差值可以壓在30%以?xún)?nèi)。5. 常見(jiàn)問(wèn)題與排查實(shí)錄5.1 非負(fù)激活導(dǎo)致的梯度飽和softplus在輸入向負(fù)數(shù)方向拉得很大時(shí)輸出趨近于0梯度趨近于0。訓(xùn)練初期如果模型權(quán)重初始化不合適f_θ(x,y)普遍都是很大負(fù)數(shù)softplus輸出基本為0r_a和r_b都是0r_diff永遠(yuǎn)約等于0loss不下降。排查時(shí)我習(xí)慣先打印獎(jiǎng)勵(lì)分布。如果你發(fā)現(xiàn)大量樣本的獎(jiǎng)勵(lì)都?jí)涸?.01以下說(shuō)明softplus飽和了。解決方案有三個(gè)第一重新初始化最后一層讓輸出大致落在[-3, 3]區(qū)間softplus會(huì)平滑過(guò)渡第二先讓模型用MSE目標(biāo)在SFT輸出上學(xué)一個(gè)粗糙的打分回歸作為冷啟動(dòng)第三給softplus加一個(gè)偏移量r(x,y) softplus(f_θ(x,y)) epsilonepsilon取1e-4到0.01保證獎(jiǎng)勵(lì)永遠(yuǎn)不會(huì)完全歸零也就不會(huì)出現(xiàn)全零梯度。這個(gè)偏移量很小不影響語(yǔ)義但能救訓(xùn)練一命。5.2 后驗(yàn)坍縮與不確定性失真變分推斷最經(jīng)典的問(wèn)題就是后驗(yàn)坍縮q_ψ(θ)的方差被優(yōu)化到接近0模型重新退化成點(diǎn)估計(jì)。表現(xiàn)是預(yù)測(cè)獎(jiǎng)勵(lì)分布極度尖銳所有樣本的不確定性幾乎一樣方差失去了指示意義。原因通常是KL項(xiàng)權(quán)重太低或者數(shù)據(jù)量太大、模型容量和KL項(xiàng)之間失衡。調(diào)整方向我剛才說(shuō)過(guò)先把KL系數(shù)往上抬觀察后驗(yàn)方差是否恢復(fù)到有區(qū)分度的狀態(tài)。另一個(gè)我試過(guò)有效的做法是對(duì)變分分布做“預(yù)熱”訓(xùn)練前500步只優(yōu)化均值μ凍結(jié)log_var讓模型先在偏好數(shù)據(jù)上找到一個(gè)好的參數(shù)區(qū)域再放開(kāi)方差優(yōu)化。這能避免訓(xùn)練初期高loss區(qū)域里模型圖省事直接把方差壓到0來(lái)擬合偏好的壞結(jié)果。如果還坍縮可以考慮用低秩高斯或塊對(duì)角高斯來(lái)替代對(duì)角高斯讓相關(guān)性信息有表達(dá)空間。5.3 獎(jiǎng)勵(lì)尺度漂移與KL預(yù)算失衡即使加了非負(fù)約束獎(jiǎng)勵(lì)尺度漂移也只能緩解不能根治。softplus輸出理論上界是無(wú)限的模型如果非常確信某樣本優(yōu)秀可以給一個(gè)很大的正分。這會(huì)間接推高策略的獎(jiǎng)勵(lì)預(yù)期導(dǎo)致KL預(yù)算失控。我踩過(guò)的坑是BNRM的reward均值調(diào)到很高的階段策略模型仍然開(kāi)始輸出重復(fù)率極高的低質(zhì)量?jī)?nèi)容說(shuō)明模型還是沒(méi)有逃脫“追高分”的陷阱。解決尺度漂移參考兩個(gè)做法。第一在PPO階段對(duì)獎(jiǎng)勵(lì)做標(biāo)準(zhǔn)化把mean和std約束到預(yù)先設(shè)定的區(qū)間這能直接阻止尺度漂移帶來(lái)的波動(dòng)。第二給BNRM的最終輸出加一個(gè)顯式上界比如用sigmoid乘以固定上限R_max上限設(shè)在4到5。這樣獎(jiǎng)勵(lì)被嚴(yán)格約束在[0, R_max]區(qū)間。代價(jià)是模型表達(dá)極端偏好時(shí)會(huì)損失一些精度換來(lái)的是整個(gè)訓(xùn)練過(guò)程的穩(wěn)定權(quán)衡下來(lái)通常值得。5.4 聯(lián)合訓(xùn)練時(shí)的顯存與時(shí)間問(wèn)題BNRM的時(shí)間開(kāi)銷(xiāo)主要來(lái)自后驗(yàn)采樣。預(yù)測(cè)階段如果每個(gè)樣本采樣16次相當(dāng)于做了16次前向這個(gè)成本在PPO訓(xùn)練中會(huì)被放大因?yàn)槊總€(gè)batch都需要為全部經(jīng)驗(yàn)計(jì)算獎(jiǎng)勵(lì)分布。我現(xiàn)在的做法是分兩步走。PPO外推階段每一條經(jīng)驗(yàn)樣本只獎(jiǎng)勵(lì)采樣一次。因?yàn)椴呗援?dāng)前批次的經(jīng)驗(yàn)和上一步的經(jīng)驗(yàn)在分布上相差不大獎(jiǎng)勵(lì)不確定性可以復(fù)用舊統(tǒng)計(jì)量。然后在PPO更新階段挑選一部分成功候選或高不確定性樣本做16次重采樣再用更精確的均值和方差去更新策略。這個(gè)“嘗鮮版本”策略能省掉接近60%的獎(jiǎng)勵(lì)計(jì)算開(kāi)銷(xiāo)同時(shí)保留不確定性估計(jì)的核心價(jià)值。顯存上變分參數(shù)比標(biāo)準(zhǔn)模型多保存一份均值和方差整體增量在5%以?xún)?nèi)基本可忽略。唯一要注意的是保存檢查點(diǎn)時(shí)要把mu、log_var、優(yōu)化器狀態(tài)一起保存否則恢復(fù)訓(xùn)練后就無(wú)法繼續(xù)變分更新了。6. 我的一線實(shí)操體會(huì)貝葉斯非負(fù)獎(jiǎng)勵(lì)模型在我自己的實(shí)踐里最驚艷的不是偏好準(zhǔn)確率提升而是訓(xùn)練穩(wěn)定性的變化。用標(biāo)準(zhǔn)RM時(shí)PPO階段的reward曲線像心電圖換到BNRM后即使不調(diào)λ那條曲線也平滑了很多。這背后的原因我現(xiàn)在理解得更透徹了——策略?xún)?yōu)化不需要一個(gè)“聰明但偶爾發(fā)瘋”的評(píng)判員它需要的是一個(gè)“判斷穩(wěn)定、敢于說(shuō)不知道”的評(píng)判員。不確定性懲罰本質(zhì)上是在阻止策略利用獎(jiǎng)勵(lì)模型的知識(shí)盲區(qū)。最后再分享一個(gè)小技巧。BNRM版本的獎(jiǎng)勵(lì)模型在打過(guò)幾次PPO之后不要把后驗(yàn)參數(shù)扔了。它積累的不確定性信息可以反哺偏好數(shù)據(jù)挑選把方差最高的那批樣本抽出來(lái)重新標(biāo)注或做一致性檢查對(duì)標(biāo)噪聲數(shù)據(jù)的清洗效率非常高。這個(gè)用法當(dāng)初是純屬誤打誤撞后來(lái)成了我每次都用的一招。獎(jiǎng)勵(lì)建模這個(gè)方向與其糾結(jié)怎么加更多約束不如先讓模型學(xué)會(huì)承認(rèn)自己不知道什么。BNRM在這條路上的探索值得一試。