監督微調(SFT)基本上是現在訓練大模型時必走的路。不管你要讓模型干什么,先用 SFT 讓它學會基本的指令跟隨和對話能力,然后再通過 PPO 或者 GRPO 這些強化學習方法進一步調優。
但 SFT 有個老毛病:容易過擬合。模型會死記硬背訓練數據,泛化能力變差。更要命的是,經過 SFT 訓練的模型在后續的強化學習階段往往探索能力不足,這就是所謂的"熵坍塌"現象 - 模型變得過于確定,生成的內容單調乏味。
這篇論文提出了 Proximal Supervised Fine-Tuning (PSFT),本質上是把 PPO 的思路引入到 SFT 中。這個想法挺巧妙的:既然 PPO 能夠穩定策略更新,那為什么不用類似的機制來穩定監督學習的參數更新呢?
![]()
SFT 到底在做什么
先說說傳統的監督微調怎么回事。SFT 就是拿一堆(提示,回答)這樣的數據對,讓模型學會從提示生成對應的回答。
![]()
最小化模型預測的 token 分布和真實 token 之間的交叉熵損失。但問題在于,如果訓練數據和預訓練數據的分布差異比較大,每一步的參數更新可能都很激進,導致模型忘記之前學到的通用能力。
![]()
![]()
PPO vs. GRPO
這種激進更新還會引發熵坍塌。簡單說就是模型在選擇下一個 token 時變得過于自信,幾乎沒有不確定性。這樣一來,模型生成的內容就會變得非常可預測,缺乏多樣性。更糟的是這種低熵狀態會讓模型在后續的強化學習訓練中失去探索新策略的能力。
從強化學習的角度看語言建模
要理解 PSFT,得先把語言生成過程理解成一個馬爾可夫決策過程(MDP)。這聽起來很抽象,但其實挺直觀的:
![]()
在語言生成的 MDP 中,狀態空間包含智能體可能處于的所有可能狀態,動作空間包含智能體可以采取的所有可能動作或移動,轉移概率 P(s'|s, a) 表示當智能體采取動作 a 時,從狀態 s 移動到 s' 的可能性。
具體到語言模型:狀態 s(t) 就是當前的上下文(輸入 query 加上已經生成的所有 token),動作 a(t) 就是要生成的下一個 token,轉移概率是確定性的(等于1),因為選定 token 后新狀態就確定了。
大語言模型的輸出分布 π(θ) 就是我們的策略。對于輸入 x,模型生成輸出 y 的聯合概率是:
![]()
給定查詢 'x' 生成輸出 'y' 的聯合概率是在每個時間步 't' 給定其前置上下文 (y(
SFT 的損失函數就是標準的交叉熵:
![]()
每個提示-完成對 (x, y) 的 SFT 損失
這里 y(t) 是時間步 t 的生成令牌,n 是生成令牌的總數,y(
對整個訓練集,SFT 損失可以寫成:
![]()
訓練期間使用梯度下降最小化的 SFT 損失
這里 s(t) 是時間步 t 的上下文,a*(t) 表示正確的下一個令牌。
SFT 其實是策略梯度的特例
強化學習里有三大類算法:基于價值的方法(比如 Q-learning)、策略梯度方法(比如 REINFORCE)、還有混合方法(比如 Actor-Critic)。
策略梯度方法的目標函數是:
![]()
強化學習訓練期間使用梯度上升最大化的策略梯度目標
這里 s(t), a(t) 是從當前策略采樣的狀態-動作對,log π(θ)(a(t)|s(t)) 是策略采取動作的對數概率,?(t) 是優勢函數,告訴我們這個動作比平均水平好多少。
![]()
優勢函數是在特定狀態下采取動作的 Q 函數與給定狀態的價值函數之間的差值。
如果 ?(t) > 0,說明這個動作比預期好,訓練會增加它的概率。
仔細看看,SFT 其實就是策略梯度的簡化版本:
![]()
SFT 損失 vs. 策略梯度目標
區別在于:SFT 不是從策略采樣軌跡,而是從固定數據集采樣;SFT 把優勢函數固定為 1,也就是假設數據集里的動作都是"好的"。
從 REINFORCE 到 PPO
傳統的策略梯度方法比如 REINFORCE 有個問題:如果某一步更新太大,新策略可能偏離舊策略太遠,導致訓練不穩定。
TRPO(信任區域策略優化)通過引入 KL 散度約束來解決這個問題:
![]()
TRPO 的代理目標(保守策略迭代)目標,在強化學習訓練期間使用梯度上升最大化,其中 r(t)(θ) 是重要性采樣比率。
這里用重要性采樣來修正新舊策略之間的差異,同時用 KL 散度約束來限制更新幅度:
![]()
在 TRPO 中,代理目標在使用新策略 π(θ) 和舊策略 π(θ)(old) 之間的 KL 散度對策略更新大小的約束下最大化。
但 TRPO 計算量太大,不太實用。PPO 就簡單多了,直接在目標函數里加個 clipping:
![]()
PPO 中最大化的裁剪代理目標,其中 r(t)(θ) 是重要性采樣比率,? 通常是一個小值(例如,0.2)。在 TRPO 和 PPO 中,優勢 ?(t) 的近似值使用廣義優勢估計(GAE)計算。
![]()
近端策略優化
PPO 通過裁剪重要性采樣比率來防止策略更新過大,既簡單又有效。
PSFT:給 SFT 加上 PPO 的穩定性
既然知道了 SFT 是策略梯度的特例,那我們能不能給它也加上 PPO 的穩定性機制?答案就是 PSFT。
PSFT 的目標函數是:
![]()
近似監督微調(PSFT)目標
展開重要性采樣比率:
![]()
展開的近似監督微調(PSFT)目標
這個設計很巧妙:通過比較新舊策略的概率比值并進行裁剪,PSFT 能夠防止模型參數更新過于激進。這樣既能學習新任務,又能保持原有的通用能力,同時避免熵坍塌。
實驗效果怎么樣
研究者在 Qwen2.5-7B-Instruct 和 Llama3.1-8B-Instruct 上做了實驗,主要看數學推理能力的提升。
首先是熵的變化。PSFT 能夠維持更平滑的熵曲線,避免了傳統 SFT 中的熵坍塌現象:
![]()
顯示兩個大語言模型在訓練期間熵的圖。SFT-KL是一種應用 KL 懲罰以保持微調模型更接近預訓練模型分布的方法。PSFT (warm-up)是一種在切換到 PSFT 之前開始短暫的初始 SFT 階段的方法,用于訓練穩定性。
在域內數學任務上,PSFT 的表現至少和標準 SFT 持平,在某些情況下還更好:
![]()
顯示域內性能訓練動態的圖
![]()
域內性能的結果,其中對于 AIME 和 AMC 基準,結果是 avg@32。對于其余的,結果是 avg@8。
更重要的是域外性能。PSFT 訓練的模型在非數學任務上也表現很好,說明它確實提高了泛化能力:
![]()
顯示域外性能訓練動態的圖
![]()
域外性能的結果。對于 GPQA、ARC-C、TruthfulQA 和 IFEval,結果是 avg@8。對于其余的,結果是 pass@1。
在后續的強化學習訓練中,PSFT 訓練的模型保持了更高的熵,說明探索能力得到了保留:
![]()
顯示強化學習實驗中域內性能訓練動態的圖
![]()
強化學習實驗中域內性能的結果
![]()
強化學習實驗中域外性能的結果
PSFT 的優勢不只體現在數學推理上,在模型對齊方面也有幫助。用 DPO 進行對齊訓練時,PSFT 預訓練的模型表現更穩定:
![]()
顯示 SFT/PSFT 后跟 DPO 的對齊訓練期間熵演變的圖
在各種對齊基準上,PSFT 都比傳統 SFT 表現更好:
![]()
在不同對齊基準上對 Qwen3–4B-Base 進行 DPO 訓練的結果。PSFT(prolong)是 PSFT 的擴展版本,繼續訓練更多步驟。
總結
PSFT 本質上是把強化學習中穩定策略更新的思想引入到監督學習中。通過借鑒 PPO 的裁剪機制,PSFT 能夠:
- 防止模型參數更新過于激進
- 保持模型的通用能力和探索性
- 避免熵坍塌現象
- 為后續的強化學習訓練打下更好的基礎
這個工作挺有意思的,它展示了監督學習和強化學習之間深層的聯系。更重要的是,它提供了一個簡單有效的方法來改善現有的訓練流程。如果你正在做大模型的訓練工作,PSFT 絕對值得試試。
https://avoid.overfit.cn/post/e933ddbf941a4530b7bf09782c70bbea
作者:Dr. Ashish Bamania
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.