熵坍缩与缓解策略
令x表示prompt,y表示response,策略πθ针对tokent输出的概率分布为ptpt1pt∣V∣πθ⋅∣xytsoftmaxTzt1∣V∣表示整个词表的大小,zt∈RV是logitsT∈R是解码温度。那么tokent的熵为Ht−j1∑∣V∣ptjlogptj2。
一、策略熵与熵坍缩
1. 熵定义
令 x x x表示prompt, y y y表示response,策略 π θ \pi_\theta πθ针对token t t t输出的概率分布为
p t = ( p t , 1 , … , p t , ∣ V ∣ ) = π θ ( ⋅ ∣ x , y < t ) = softmax ( z t T ) (1) p_t=(p_{t,1},\dots,p_{t,|V|})=\pi_{\theta}(\cdot|x,y_{<t})=\text{softmax}(\frac{z_t}{T}) \tag{1}\\ pt=(pt,1,…,pt,∣V∣)=πθ(⋅∣x,y<t)=softmax(Tzt)(1)
∣ V ∣ |V| ∣V∣表示整个词表的大小, z t ∈ R V z_t\in\mathbb{R}^V zt∈RV是logits, T ∈ R T\in\mathbb{R} T∈R是解码温度。
那么token t t t的熵为
H t = − ∑ j = 1 ∣ V ∣ p t , j log p t , j (2) H_t=-\sum_{j=1}^{|V|} p_{t,j}\log p_{t,j} \tag{2}\\ Ht=−j=1∑∣V∣pt,jlogpt,j(2)
2. 熵坍缩与模型性能
在RL训练的初期,模型的熵会急剧下降。随着熵的下降,准确率会迎来一个快速增长期。但是,随着熵的迅速耗尽会导致模型过度自信,探索能力随之减弱。[1]通过实证研究,建立了策略熵 H H H与下游任务性能 R R R之间的定量关系
R = − a ⋅ exp ( H ) + b (3) R=-a\cdot\exp(H)+b \tag{3}\\ R=−a⋅exp(H)+b(3)
其中 a a a和 b b b是拟合系数,反映了特定模型和训练数据的内在特性。
显然,在更长时间范围内将熵维持在一个合理范围内是持续提升模型能力的关键。[2]通过稳定熵实现更长时间的RL训练后,发现模型能够突破原有能力的边界,持续改善效果。
3. token熵与forking token
[3]通过分析发现大多数token的熵非常低,仅有少量token的较高。而且,token的功能与熵高度相关:
- 高熵token主要承担"逻辑连接器"和"假设引入者",例如
wait、however等。 - 低熵token则是"结构补全者"的角色,负责在已经确定好的推理步骤中填充细节。
因此,[3]将这些高熵token定义为forking token。
二、GRPO
GRPO在PPO的基础上通过组内标准化实现优势的计算。具体来说,给定一个prompt x x x,采样 G G G个response { y i } i = 1 G \{y_i\}_{i=1}^G {yi}i=1G。那么优势的计算为
A i , t = r i − mean ( { r i } i = 1 G ) std ( { r i } i = 1 G ) (4) A_{i,t}=\frac{r_i-\text{mean}(\{r_i\}_{i=1}^G)}{\text{std}(\{r_i\}_{i=1}^G)} \tag{4} \\ Ai,t=std({ri}i=1G)ri−mean({ri}i=1G)(4)
其中 r i r_i ri是响应 y i y_i yi的奖励值。
GRPO的目标函数为
J GRPO = E x ∼ p , { y i } i = 1 G ∼ π old ( ⋅ ∣ x ) [ 1 G ∑ i = 1 G 1 ∣ y i ∣ ∑ t = 1 ∣ y i ∣ min ( r i , t ( θ ) A i , t , clip ( r i , t ( θ ) , 1 − ε , 1 + ε ) A i , t ) ] (5) J_{\text{GRPO}}=\mathbb{E}_{x\sim p,\{y_i\}_{i=1}^G\sim\pi_{\text{old}}(\cdot|x)}\left[ \frac{1}{G}\sum_{i=1}^G\frac{1}{|y_i|}\sum_{t=1}^{|y_i|}\min\left(r_{i,t}(\theta)A_{i,t},\text{clip}(r_{i,t}(\theta),1-\varepsilon,1+\varepsilon)A_{i,t}\right) \right] \tag{5}\\ JGRPO=Ex∼p,{yi}i=1G∼πold(⋅∣x)
G1i=1∑G∣yi∣1t=1∑∣yi∣min(ri,t(θ)Ai,t,clip(ri,t(θ),1−ε,1+ε)Ai,t)
(5)
其中 r i , t ( θ ) = π θ ( a i , t ∣ s i , t ) π θ old ( a i , t ∣ s i , t ) r_{i,t}(\theta)=\frac{\pi_{\theta}(a_{i,t}|s_{i,t})}{\pi_{\theta_{\text{old}}}(a_{i,t}|s_{i,t})} ri,t(θ)=πθold(ai,t∣si,t)πθ(ai,t∣si,t)是重要性采样。
三、直接针对forking token的优化
解耦 clip \text{clip} clip上下限。[4]认为 clip \text{clip} clip操作对高概率token(低熵)和低概率token(高熵)是不平等的。举例来说,假设 ε = 0.2 \varepsilon=0.2 ε=0.2,若某个token的 π θ old = 0.9 \pi_{\theta_{\text{old}}}=0.9 πθold=0.9,那么 clip \text{clip} clip操作导致 π θ \pi_{\theta} πθ的上限为 0.9 × 1.2 = 1.08 0.9\times1.2=1.08 0.9×1.2=1.08,绝对增量为 1.08 − 0.9 = 0.18 1.08-0.9=0.18 1.08−0.9=0.18。若某个token的概率为 π θ old = 0.01 \pi_{\theta_{\text{old}}}=0.01 πθold=0.01, π θ \pi_{\theta} πθ的上限为 0.01 × 1.2 = 0.012 0.01\times 1.2=0.012 0.01×1.2=0.012,绝对增量为 0.002 0.002 0.002。因此, clip \text{clip} clip操作会限制低概率token(高熵)的更新幅度。因此,[4]提出将裁剪的上下限由 ε \varepsilon ε解耦为 ε l o w \varepsilon_{low} εlow和 ε h i g h \varepsilon_{high} εhigh,适当提高 ε h i g h \varepsilon_{high} εhigh从而让高熵token获得更大幅度的更新。
J DAPO = E x ∼ p , { y i } i = 1 G ∼ π old ( ⋅ ∣ x ) [ 1 G ∑ i = 1 G 1 ∣ y i ∣ ∑ t = 1 ∣ y i ∣ min ( r i , t ( θ ) A i , t , r ^ i , t ( θ ) A i , t ) ] (6) J_{\text{DAPO}}=\mathbb{E}_{x\sim p,\{y_i\}_{i=1}^G\sim\pi_{\text{old}}(\cdot|x)}\left[ \frac{1}{G}\sum_{i=1}^G\frac{1}{|y_i|}\sum_{t=1}^{|y_i|}\min\left(r_{i,t}(\theta)A_{i,t},\hat{r}_{i,t}(\theta)A_{i,t}\right) \right] \tag{6} \\ JDAPO=Ex∼p,{yi}i=1G∼πold(⋅∣x)
G1i=1∑G∣yi∣1t=1∑∣yi∣min(ri,t(θ)Ai,t,r^i,t(θ)Ai,t)
(6)
其中 r ^ i , t ( θ ) = clip ( r i , t ( θ ) , 1 − ε l o w , 1 + ε h i g h ) \hat{r}_{i,t}(\theta)=\text{clip}(r_{i,t}(\theta),1-\varepsilon_{low},1+\varepsilon_{high}) r^i,t(θ)=clip(ri,t(θ),1−εlow,1+εhigh)。
将优势从裁剪中解耦。[5]在[4]的基础上进一步认为,应该将优势从裁剪中解耦出来。因为,若触发了裁剪就导致梯度为0。重要性采样应该看做是优势的一个权重。因此,目标函数进一步修改为
J CISPO = E x ∼ p , { y i } i = 1 G ∼ π old ( ⋅ ∣ x ) [ 1 G ∑ i = 1 G 1 ∣ y i ∣ ∑ t = 1 ∣ y i ∣ sg ( r ^ i , t ( θ ) ) A i , t log π ( a i , t ∣ s i , t ) ] (7) J_{\text{CISPO}}=\mathbb{E}_{x\sim p,\{y_i\}_{i=1}^G\sim\pi_{\text{old}}(\cdot|x)}\left[ \frac{1}{G}\sum_{i=1}^G\frac{1}{|y_i|}\sum_{t=1}^{|y_i|}\text{sg}(\hat{r}_{i,t}(\theta))A_{i,t}\log\pi(a_{i,t}|s_{i,t}) \right] \tag{7} \\ JCISPO=Ex∼p,{yi}i=1G∼πold(⋅∣x)
G1i=1∑G∣yi∣1t=1∑∣yi∣sg(r^i,t(θ))Ai,tlogπ(ai,t∣si,t)
(7)
其中 sg \text{sg} sg 是 stop_gradient 操作。
直接增加forking token的优势。[6]更加直接,既然高熵token更重要,那么直接提高其优势。
ψ ( H i , t ) = min ( α ⋅ H i , t detach , ∣ A i , t ∣ k ) A ^ i , t = A i , t + ψ ( H i , t ) \begin{align} \psi(H_{i,t})&=\min\Big(\alpha\cdot H_{i,t}^{\text{detach}},\frac{|A_{i,t}|}{k}\Big) \tag{8} \\ \hat{A}_{i,t}&=A_{i,t}+\psi(H_{i,t}) \tag{9}\\ \end{align} \\ ψ(Hi,t)A^i,t=min(α⋅Hi,tdetach,k∣Ai,t∣)=Ai,t+ψ(Hi,t)(8)(9)
ψ ( H i , t ) \psi(H_{i,t}) ψ(Hi,t)作为优势的附近下,其保证不超过原始优势值的 k k k分之一。
四、正负样本的影响
[7]分析了正、负样本对熵坍缩的影响,在实验中发现进仅使用负样本也能实现很好的效果。因此,在正负样本奖励分别为+1和-1的情况下,[7]进一步分析了REINOFRCE下loss关于logits的梯度。
− ∂ L t ∂ z t , v = { r ⋅ ( 1 − π v ) v = y t − r ⋅ π v v ≠ y t (10) -\frac{\partial L_t}{\partial z_{t,v}}=\begin{cases} r\cdot(1-\pi_{v})&v=y_t \\ -r\cdot\pi_{v} &v\neq y_t \end{cases} \tag{10} \\ −∂zt,v∂Lt={r⋅(1−πv)−r⋅πvv=ytv=yt(10)
其中 z t , v z_{t,v} zt,v是logits向量 z t z_t zt中token v v v分量的值。
证明:
单时间步 t t t时的梯度为 ∇ L t = − r ∇ log π θ ( y t ) \nabla L_{t}=-r\nabla\log\pi_{\theta}(y_t) ∇Lt=−r∇logπθ(yt)。将 log π θ ( y t ) \log \pi_{\theta}(y_t) logπθ(yt)展开,
log π θ ( y t ) = log ( exp ( z t , y t ) ∑ v ′ ∈ V exp ( z t , v ′ ) ) = z t , y t − log ( ∑ v ′ ∈ V exp ( z t , v ′ ) ) \log\pi_{\theta}(y_t)=\log\left(\frac{\exp(z_{t,{y_t}})}{\sum_{v'\in V}\exp(z_{t,{v'}})}\right)=z_{t,{y_t}}-\log\left(\sum_{v'\in V}\exp(z_{t,{v'}})\right) \\ logπθ(yt)=log(∑v′∈Vexp(zt,v′)exp(zt,yt))=zt,yt−log(v′∈V∑exp(zt,v′))
分两种情况讨论: 情况一: v = y t v=y_t v=yt,即针对被采样token的logit求导。
∂ ( log π θ ( y t ) ) ∂ z t , y t = ∂ z t , y t ∂ z t , y t − ∂ ∂ z t , y t log ( ∑ v ′ ∈ V exp ( z t , v ′ ) ) = 1 − 1 ∑ v ′ exp ( z t , v ′ ) ⋅ exp ( z t , y t ) = 1 − π y t \begin{align} \frac{\partial(\log\pi_{\theta}(y_t))}{\partial z_{t,{y_t}}}&=\frac{\partial z_{t,{y_t}}}{\partial z_{t,{y_t}}}-\frac{\partial}{\partial z_{t,{y_t}}}\log\left(\sum_{v'\in V}\exp(z_{t,{v'}})\right) \\ &=1-\frac{1}{\sum_{v'}\exp(z_{t,{v'}})}\cdot\exp(z_{t,{y_t}}) \\ &=1-\pi_{y_t} \end{align} \\ ∂zt,yt∂(logπθ(yt))=∂zt,yt∂zt,yt−∂zt,yt∂log(v′∈V∑exp(zt,v′))=1−∑v′exp(zt,v′)1⋅exp(zt,yt)=1−πyt
情况二: v ≠ y t v\neq y_t v=yt,即对未采样token的logit求导
∂ ( log π θ ( y t ) ) ∂ z t , v = ∂ z t , y t ∂ z t , v − ∂ ∂ z t , v log ( ∑ v ′ ∈ V exp ( z t , v ′ ) ) = 0 − 1 ∑ v ′ exp ( z t , v ′ ) ⋅ exp ( z t , v ) = − π v \begin{align} \frac{\partial(\log\pi_{\theta}(y_t))}{\partial z_{t,{v}}}&=\frac{\partial z_{t,{y_t}}}{\partial z_{t,{v}}}-\frac{\partial}{\partial z_{t,{v}}}\log\left(\sum_{v'\in V}\exp(z_{t,{v'}})\right) \\ &=0-\frac{1}{\sum_{v'}\exp(z_{t,{v'}})}\cdot\exp(z_{t,{v}}) \\ &=-\pi_{v} \end{align} \\ ∂zt,v∂(logπθ(yt))=∂zt,v∂zt,yt−∂zt,v∂log(v′∈V∑exp(zt,v′))=0−∑v′exp(zt,v′)1⋅exp(zt,v)=−πv
综上,
∂ L t ∂ z t , v = { − r ⋅ ( 1 − π y t ) v = y t r ⋅ π v v ≠ y t \frac{\partial L_t}{\partial z_{t,v}}=\begin{cases} -r\cdot(1-\pi_{y_t})&v=y_t \\ r\cdot\pi_v &v\neq y_t \end{cases} \\ ∂zt,v∂Lt={−r⋅(1−πyt)r⋅πvv=ytv=yt
当 r = 1 r=1 r=1时。对于采样到的token y t y_t yt,梯度会以幅度 ( 1 − π y t ) (1-\pi_{y_t}) (1−πyt)增加logit z t , y t z_{t,{y_t}} zt,yt。当模型对 y t y_t yt不高时,会以更大的幅度更新。对于没采样到的token,梯度会以幅度 π v \pi_v πv来降低logit z t , v z_{t,v} zt,v。从forking token的视角来看[3],若正样本中包含了forking token,则该token的熵会加速下降,也就是那些起连接作用的token快速被确定。
当 r = − 1 r=-1 r=−1时。对于采样的token y t y_t yt,梯度会以幅度 ( 1 − π y t ) (1-\pi_{y_t}) (1−πyt)降低logit z t , y t z_{t,{y_t}} zt,yt。同时,对于其他token会按照自身概率来重新分配释放的概率质量。
总的来说,正样本中采样的token会成比例剥夺其余token的概率质量,而负样本中采样的token会将被剥夺的概率质量成比例的分配给其余token。因此,负样本天然有利于增大熵。
基于上面的分析,[7]提出降低训练中正样本信号的强度来维持熵。
思考:纯负样本训练能够取得好的效果,应该是由于不断强化基础模型的原始分布,相当于近期大量基于内部反馈的方法?[8]
五、熵的变化
相比于前面的方法,[1]从关注熵转变为关注熵的变化。将熵看作是logits的函数,即 H t ( z t ) H_t(z_t) Ht(zt)。那么在足够小更新步长的情况下,熵的变化为
H t ( z t k + 1 ) − H t ( z t k ) ≈ − Cov y t ∼ π ( ⋅ ∣ z t k ) ( log π ( y t ∣ z t k ) , Δ z t , y t k ) (11) H_t(z_t^{k+1}) - H_t(z_t^k)\approx-\text{Cov}_{y_t\sim\pi(\cdot|z_t^k)}\Big(\log\pi(y_t|z_t^k),\Delta z_{t,y_t}^k\Big) \tag{11}\\ Ht(ztk+1)−Ht(ztk)≈−Covyt∼π(⋅∣ztk)(logπ(yt∣ztk),Δzt,ytk)(11)
其中 z t k z_t^{k} ztk和 z t k + 1 z_t^{k+1} ztk+1分别表示两个连续步骤下的logits向量, Δ z t , y t k = z t , y t k + 1 − z t , y t k \Delta z_{t,y_t}^k=z_{t,y_t}^{k+1}-z_{t,y_t}^{k} Δzt,ytk=zt,ytk+1−zt,ytk则是两个连续步骤下 y t y_t yt的logits变化。
公式(11)的结论是熵的变化与对数概率和logits变化的协方差呈现负相关。具体来说,当高概率token的logits增加或者低概率token的logits减少,则熵减;否则熵增。更直观的讲,锐化当前模型的分布会导致熵减。
证明:
熵定义表示为
H t ( z t ) = − E y t ∼ π ( ⋅ ∣ z t ) [ log π ( y t ∣ z t ] ) H_t(z_t)=-\mathbb{E}_{y_t\sim\pi(\cdot|z_t)}[\log \pi(y_t|z_t]) \\ Ht(zt)=−Eyt∼π(⋅∣zt)[logπ(yt∣zt])
第 k k k步的logits为 z t k z_t^{k} ztk,经过训练后得到 k + 1 k+1 k+1步的logits为 z t k + 1 z_t^{k+1} ztk+1。由于实际训练中,学习率通常比较低,可以考虑通过泰勒展开来估计点 z t k z_t^k ztk和 z t k + 1 z_t^{k+1} ztk+1之间熵的变化。具体来说,函数 H t ( z t ) H_t(z_t) Ht(zt)在点 z t k z_t^k ztk进行一阶泰勒展开
H t ( z t ) ≈ H t ( z t k ) + ⟨ ∇ z t H t ( z t k ) , z t − z t k ⟩ H_t(z_t)\approx H_t(z_t^k)+\langle \nabla_{z_t}H_t(z_t^k),z_t - z_t^k \rangle \\ Ht(zt)≈Ht(ztk)+⟨∇ztHt(ztk),zt−ztk⟩
然后将 z t k + 1 z_t^{k+1} ztk+1代入,有
H t ( z t k + 1 ) − H t ( z t k ) ≈ ⟨ ∇ z t H t ( z t k ) , z t k + 1 − z t k ⟩ H_t(z_t^{k+1}) - H_t(z_t^k)\approx\langle \nabla_{z_t}H_t(z_t^k),z_t^{k+1} - z_t^k \rangle \\ Ht(ztk+1)−Ht(ztk)≈⟨∇ztHt(ztk),ztk+1−ztk⟩
先来求 ∇ z t H t ( z t k ) \nabla_{z_t}H_t(z_t^k) ∇ztHt(ztk),
∇ z t k H t ( z t k ) = ∇ z t k ( − E y t ∼ π ( ⋅ ∣ z t k ) [ log π ( y t ∣ z t k ] ) = − ∑ y t [ ∇ z t k π ( y t ∣ z t k ) log π ( y t ∣ z t k ) + π ( y t ∣ z t k ) ∇ z t k log π ( y t ∣ z t k ) ] = − ∑ y t [ π ( y t ∣ z t k ) ∇ z t k log π ( y t ∣ z t k ) ⋅ log π ( y t ∣ z t k ) + π ( y t ∣ z t k ) ∇ z t k log π ( y t ∣ z t k ) ] = − E y t ∼ π ( ⋅ ∣ z t k ) [ ∇ z t k log π ( y t ∣ z t k ) ⋅ log π ( y t ∣ z t k ) + ∇ z t k log π ( y t ∣ z t k ) ] = − E y t ∼ π ( ⋅ ∣ z t k ) [ ∇ z t k log π ( y t ∣ z t k ) ⋅ log π ( y t ∣ z t k ) ] \begin{align} \nabla_{z_t^k}H_t(z_t^k) &= \nabla_{z_t^k}(-\mathbb{E}_{y_t\sim\pi(\cdot|z_t^k)}[\log \pi(y_t|z_t^k]) \\ &=-\sum_{y_t}\Big[\nabla_{z_t^k}\pi(y_t|z_t^k)\log\pi(y_t|z_t^k)+\pi(y_t|z_t^k)\nabla_{z_t^k}\log\pi(y_t|z_t^k)\Big] \\ &=-\sum_{y_t}\Big[\pi({y_t|z_t^k)}\nabla_{z_t^k}\log\pi(y_t|z_t^k)\cdot \log\pi(y_t|z_t^k)+\pi(y_t|z_t^k)\nabla_{z_t^k}\log\pi(y_t|z_t^k)\Big]\\ &=-\mathbb{E}_{y_t\sim\pi(\cdot|z_t^k)}\Big[\nabla_{z_t^k}\log\pi(y_t|z_t^k)\cdot \log\pi(y_t|z_t^k) + \nabla_{z_t^k}\log\pi(y_t|z_t^k)\Big] \\ &=-\mathbb{E}_{y_t\sim\pi(\cdot|z_t^k)}\Big[\nabla_{z_t^k}\log\pi(y_t|z_t^k)\cdot \log\pi(y_t|z_t^k)\Big] \end{align} \\ ∇ztkHt(ztk)=∇ztk(−Eyt∼π(⋅∣ztk)[logπ(yt∣ztk])=−yt∑[∇ztkπ(yt∣ztk)logπ(yt∣ztk)+π(yt∣ztk)∇ztklogπ(yt∣ztk)]=−yt∑[π(yt∣ztk)∇ztklogπ(yt∣ztk)⋅logπ(yt∣ztk)+π(yt∣ztk)∇ztklogπ(yt∣ztk)]=−Eyt∼π(⋅∣ztk)[∇ztklogπ(yt∣ztk)⋅logπ(yt∣ztk)+∇ztklogπ(yt∣ztk)]=−Eyt∼π(⋅∣ztk)[∇ztklogπ(yt∣ztk)⋅logπ(yt∣ztk)]
然后进一步求解 ⟨ ∇ z t k H t ( z t k ) , z t k + 1 − z t k ⟩ \langle \nabla_{z_t^k}H_t(z_t^k),z_t^{k+1} - z_t^k \rangle ⟨∇ztkHt(ztk),ztk+1−ztk⟩。为了符号简洁,令 Δ z t k = z t k + 1 − z t k \Delta z_t^k=z_t^{k+1}-z_t^k Δztk=ztk+1−ztk。
⟨ ∇ z t k H t ( z t k ) , Δ z t k ⟩ = − ⟨ E y t ∼ π ( ⋅ ∣ z t k ) [ ∇ z t k log π ( y t ∣ z t k ) ⋅ log π ( y t ∣ z t k ) ] , Δ z t k ⟩ = − E y t ∼ π ( ⋅ ∣ z t k ) [ log π ( y t ∣ z t k ) ⟨ ∇ z t k log π ( y t ∣ z t k ) , Δ z t k ⟩ ] = − E y t ∼ π ( ⋅ ∣ z t k ) [ log π ( y t ∣ z t k ) ∑ j = 1 ∣ V ∣ ∂ log π ( y t ∣ z t k ) ∂ z t , j k Δ z t , j k ] \begin{align} \langle \nabla_{z_t^k}H_t(z_t^k),\Delta z_t^k \rangle &= -\langle\mathbb{E}_{y_t\sim\pi(\cdot|z_t^k)}\Big[\nabla_{z_t^k}\log\pi(y_t|z_t^k)\cdot \log\pi(y_t|z_t^k)\Big],\Delta z_t^k\rangle \\ &=-\mathbb{E}_{y_t\sim\pi(\cdot|z_t^k)}\Big[\log\pi(y_t|z_t^k)\langle \nabla_{z_t^k}\log\pi(y_t|z_t^k),\Delta z_t^k \rangle\Big] \\ &=-\mathbb{E}_{y_t\sim\pi(\cdot|z_t^k)}\Big[\log\pi(y_t|z_t^k)\sum_{j=1}^{|V|}\frac{\partial\log\pi(y_t|z_t^k)}{\partial z_{t,j}^k}\Delta z_{t,j}^k\Big] \end{align} \\ ⟨∇ztkHt(ztk),Δztk⟩=−⟨Eyt∼π(⋅∣ztk)[∇ztklogπ(yt∣ztk)⋅logπ(yt∣ztk)],Δztk⟩=−Eyt∼π(⋅∣ztk)[logπ(yt∣ztk)⟨∇ztklogπ(yt∣ztk),Δztk⟩]=−Eyt∼π(⋅∣ztk)[logπ(yt∣ztk)j=1∑∣V∣∂zt,jk∂logπ(yt∣ztk)Δzt,jk]
基于 softmax \text{softmax} softmax的导数,有
∑ j = 1 ∣ V ∣ ∂ log π ( y t ∣ z t k ) ∂ z t , j k Δ z t , j k = ∑ j = 1 ∣ V ∣ 1 { y t = v j } Δ z t , j k − π ( v j ∣ z t k ) Δ z t , j k = Δ z t , y t k − E v ∼ π ( ⋅ ∣ z t k ) [ Δ z t , v k ] \begin{align} \sum_{j=1}^{|V|}\frac{\partial\log\pi(y_t|z_t^k)}{\partial z_{t,j}^k}\Delta z_{t,j}^k&=\sum_{j=1}^{|V|}\textbf{1}\{y_t=v_j\}\Delta z_{t,j}^k-\pi(v_j|z_t^k)\Delta z_{t,j}^k\\ &=\Delta z_{t,y_t}^k-\mathbb{E}_{v\sim\pi(\cdot|z_t^k)}[\Delta z_{t,v}^k] \end{align} \\ j=1∑∣V∣∂zt,jk∂logπ(yt∣ztk)Δzt,jk=j=1∑∣V∣1{yt=vj}Δzt,jk−π(vj∣ztk)Δzt,jk=Δzt,ytk−Ev∼π(⋅∣ztk)[Δzt,vk]
因此,
⟨ ∇ z t k H t ( z t k ) , Δ z t k ⟩ = − E y t ∼ π ( ⋅ ∣ z t k ) [ log π ( y t ∣ z t k ) ⋅ ( Δ z t , y t k − E v ∼ π ( ⋅ ∣ z t k ) [ Δ z t , v k ] ) \langle \nabla_{z_t^k}H_t(z_t^k),\Delta z_t^k \rangle=-\mathbb{E}_{y_t\sim\pi(\cdot|z_t^k)}\Big[\log\pi(y_t|z_t^k)\cdot\Big(\Delta z_{t,y_t}^k-\mathbb{E}_{v\sim\pi(\cdot|z_t^k)}[\Delta z_{t,v}^k]\Big) \\ ⟨∇ztkHt(ztk),Δztk⟩=−Eyt∼π(⋅∣ztk)[logπ(yt∣ztk)⋅(Δzt,ytk−Ev∼π(⋅∣ztk)[Δzt,vk])
令随机变量 X = log π ( y t ∣ z t k ) X=\log\pi(y_t|z_t^k) X=logπ(yt∣ztk), Y = Δ z t , y t k Y=\Delta z_{t,y_t}^k Y=Δzt,ytk。那么,上式就是这两个随机变量的负协方差,即
H t ( z t k + 1 ) − H t ( z t k ) ≈ − Cov y t ∼ π ( ⋅ ∣ z t k ) ( log π ( y t ∣ z t k ) , Δ z t , y t k ) H_t(z_t^{k+1}) - H_t(z_t^k)\approx-\text{Cov}_{y_t\sim\pi(\cdot|z_t^k)}\Big(\log\pi(y_t|z_t^k),\Delta z_{t,y_t}^k\Big) \\ Ht(ztk+1)−Ht(ztk)≈−Covyt∼π(⋅∣ztk)(logπ(yt∣ztk),Δzt,ytk)
[1]进一步给出了在自然策略梯度下,熵变化与优势的关系为
H t ( z t k + 1 ) − H t ( z t k ) ≈ − η ⋅ Cov y t ∼ π ( ⋅ ∣ z t k ) ( log π ( y t ∣ z t k ) , A k ( y t , z t k ) ) (12) H_t(z_t^{k+1}) - H_t(z_t^k)\approx-\eta\cdot \text{Cov}_{y_t\sim\pi(\cdot|z_t^k)}\Big(\log\pi(y_t|z_t^k),A^k(y_t,z_t^k)\Big) \tag{12}\\ Ht(ztk+1)−Ht(ztk)≈−η⋅Covyt∼π(⋅∣ztk)(logπ(yt∣ztk),Ak(yt,ztk))(12)
其中 η \eta η是学习率, A k ( y t , z t k ) A^k(y_t,z_t^k) Ak(yt,ztk)是当前状态下 y t y_t yt的优势。在0-1二元奖励下的GRPO,正样本的优势为正,负样本的优势为负。那么正样本的高概率token或者负样本的低概率token会导致熵减。
基于公式(12),[1]认为应该限制高协方差的token更新幅度,提出了Clip-Cov和KL-Cov。Clip-Cov主要是识别出的高协方差token梯度置零。KL-Cov则是在识别出的高协方差token施加一个kl约束,使其不太偏离原始策略太远。
六、统一视角
[1] [3] [4] [5] [6]本质上都聚焦到高熵的forking token熵。[4] [5] [6]通过修正GRPO中对高熵(低概率)token的偏见,来缓解熵的快速下降。[1]则通过限制低熵(高概率)的更新幅度来缓解熵的快速下降。因此,这些方法理论上可以结合使用,增加高熵token更新幅度的同时,降低低熵token的更新幅度。[7]不再聚焦到token-level的熵,而是认为应该增加负样本的相对权重。结合[1]的观点来看,由于模型rollout出来的负样本概率也不会太低,那么优化这个相对高概率的负样本,也会缓解熵减。
参考文献
[1]. The Entropy Mechanism of Reinforcement Learning for Reasoning Language Models
[2]. ProRL: Prolonged Reinforcement Learning Expands Reasoning Boundaries in Large Language Models
[4]. DAPO: An Open-Source LLM Reinforcement Learning System at Scale
[5]. MiniMax-M1: Scaling Test-Time Compute Efficiently with Lightning Attention
[6]. Reasoning with Exploration: An Entropy Perspective
[7]. The Surprising Effectiveness of Negative Reinforcement in LLM Reasoning
[8]. No Free Lunch: Rethinking Internal Feedback for LLM Reasoning
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)