以前的学习笔记-PPO强化学习中的广义优势估计(GAE)

因为组里的服务器g了,故把以前的笔记搬上来

引言

在强化学习领域,Proximal Policy Optimization (PPO) 算法以其稳定性、高效性和易于实现的特点,成为了解决复杂控制问题的主流方法。PPO 属于策略梯度方法,通过优化策略网络来指导智能体的决策过程。为了有效地训练策略网络,优势估计(Advantage Estimation)成为了一个关键环节。广义优势估计(Generalized Advantage Estimation, GAE)是用于提升 PPO 性能的优势估计技术,它通过平衡偏差和方差(实际上就是单步 TD 残差和蒙特卡洛方法的一个中间权衡),从而更准确地评估策略的优劣。在LLM领域,GAE用于计算优势函数,从而更准确地评估生成文本,即当前LLM的Actor的优劣,是基线。

在这里插入图片描述

一、理论推导过程

1. 策略梯度定理与优势函数基础

PPO 的核心在于通过策略梯度定理优化策略参数 ,使得智能体能够可靠地达到最优解。策略梯度定理描述了如何通过策略的梯度来更新策略参数,从而最大化期望回报。其梯度形式可以表示为(参考的是这里):

∇ θ J ( θ ) = E τ ∼ π θ [ ∑ t = 0 T ∇ θ log ⁡ π θ ( a t ∣ s t ) ⋅ A π ( s t , a t ) ] \nabla_\theta J(\theta) = \mathbb{E}_{\tau \sim \pi_\theta} \left[ \sum_{t=0}^T \nabla_\theta \log \pi_\theta(a_t|s_t) \cdot A^\pi(s_t,a_t) \right] θJ(θ)=Eτπθ[t=0Tθlogπθ(atst)Aπ(st,at)]

这里, π θ ( a t ∣ s t ) \pi_\theta(a_t|s_t) πθ(atst) 表示在状态 s t s_t st 下采取动作 a t a_t at 的策略, A π ( s t , a t ) A^\pi(s_t, a_t) Aπ(st,at) 是优势函数,用于衡量在状态 s t s_t st 采取动作 a t a_t at 相对于平均水平的优势。为了减少策略梯度的方差,引入了优势函数的概念。优势函数定义为:

A π ( s , a ) = Q π ( s , a ) − V π ( s ) A^\pi(s,a) = Q^\pi(s,a) - V^\pi(s) Aπ(s,a)=Qπ(s,a)Vπ(s)

其中 表示在状态a下采取动作a的累积回报, 表示状态 的价值函数。优势函数相当于记录了在状态 s 时采取行为 a 会比停留在状态 s多出的价值。从这里大家就能看出来,对于V的估计准确非常重要,它是衡量模型做出当前行为(在当前状态生成当前答案)的基准。

2. TD误差与偏差-方差权衡

时序差分误差(Temporal Difference Error, TD Error)是强化学习中一个重要的概念,用于衡量预测值与实际观测值之间的差距。TD 误差定义为:
δ t = r t + γ V π ( s t + 1 ) − V π ( s t ) \delta_t = r_t + \gamma V^\pi(s_{t+1}) - V^\pi(s_t) δt=rt+γVπ(st+1)Vπ(st)
其中 r t r_t rt 是在状态 s t s_t st 采取动作 a t a_t at 后获得的奖励, γ \gamma γ 是折扣因子,用于调节未来奖励的衰减速率。 V π ( s t + 1 ) V^\pi(s_{t+1}) Vπ(st+1) 是下一个状态的价值函数, V π ( s t ) V^\pi(s_t) Vπ(st) 是当前状态的价值函数。TD 误差可以看作是对优势函数的一个估计。

传统的优势函数估计方法包括蒙特卡洛(Monte Carlo, MC)方法和单步TD误差方法。蒙特卡洛方法通过完整的episode数据来计算回报,具有无偏性但方差较高。单步TD误差方法虽然方差较低,但由于只考虑了一步的奖励,因此偏差较大。为了平衡偏差和方差,广义优势估计(GAE)被提出,它通过指数加权多步TD误差来综合考虑不同时间步的奖励。GAE的计算公式如下:
A t GAE = ∑ l = 0 ∞ ( γ λ ) l δ t + l A_t^{\text{GAE}} = \sum_{l=0}^{\infty} (\gamma \lambda)^l \delta_{t+l} AtGAE=l=0(γλ)lδt+l

其中 λ ∈ [ 0 , 1 ] \lambda \in [0,1] λ[0,1] 是 GAE 参数,用于控制偏差-方差的权衡。当 λ = 0 \lambda = 0 λ=0 时,GAE 退化为单步 TD 误差,具有高偏差和低方差;当 λ = 1 \lambda = 1 λ=1 时,GAE 等价于蒙特卡洛估计,具有低偏差和高方差。

3. GAE的递推形式

为了高效计算 GAE,实际实现中通常采用递归公式简化计算。

A ^ t = δ t + γ λ A ^ t + 1 \hat{A}_t = \delta_t + \gamma \lambda \hat{A}_{t+1} A^t=δt+γλA^t+1

这个公式表示当前时刻的优势估计 A ^ t \hat{A}_t A^t 等于当前时刻的 TD 误差 δ t \delta_t δt 加上经过折扣和加权处理的下一时刻的优势估计 A ^ t + 1 \hat{A}_{t+1} A^t+1。通过这种递推方式,可以避免直接计算无限步的累积和,从而大大降低计算复杂度。在 RLHF 场景中,GAE可以有效指导策略(语言模型)在给定提示后,提升那些在期望意义上“优于平均”奖励的下一个 token 选取概率。

参数γ与λ的作用

  • γ(折扣因子):折扣因子 γ \gamma γ 用于调节未来奖励的衰减速率,影响智能体对长期回报的重视程度。通常, γ \gamma γ 的取值范围为 [0, 1],越接近 1 表示智能体越重视长期回报,越接近 0 表示智能体越重视短期回报。
  • λ(GAE参数):GAE 参数 λ \lambda λ 控制 TD 误差的加权方式,影响偏差与方差的权衡。当 λ \lambda λ 接近 1 时,GAE 更多地依赖长步 TD 误差,从而降低偏差,但会增加方差;当 λ \lambda λ 接近 0 时,GAE 更多地依赖短步 TD 误差,从而降低方差,但会增加偏差。

GAE实现流程

在 PPO 中,GAE 的实现流程可以概括为:

  1. 数据收集:通过与环境交互,收集轨迹数据,包括状态、动作、奖励等。
  2. 值函数估计:使用 Critic 网络预测状态值 V ( s ) V(s) V(s)
  3. TD误差计算:根据公式计算每个时间步的 TD 误差 δ t \delta_t δt
  4. 优势估计:使用递推公式计算 GAE 优势估计 A ^ t \hat{A}_t A^t
  5. 策略更新:使用 PPO 的 Clipped Surrogate Objective 更新策略网络。

最后,PPO 通过 Clipped Surrogate Objective 来更新策略网络,以避免策略更新过大,从而保证训练的稳定性:

L CLIP = E t [ min ⁡ ( π θ ( a t ∣ s t ) π old ( a t ∣ s t ) A ^ t , clip ( π θ ( a t ∣ s t ) π old ( a t ∣ s t ) , 1 − ϵ , 1 + ϵ ) A ^ t ) ] L_{\text{CLIP}} = \mathbb{E}_t \left[ \min\left( \frac{\pi_\theta(a_t|s_t)}{\pi_{\text{old}}(a_t|s_t)} \hat{A}_t, \text{clip}\left(\frac{\pi_\theta(a_t|s_t)}{\pi_{\text{old}}(a_t|s_t)}, 1-\epsilon, 1+\epsilon\right) \hat{A}_t \right) \right] LCLIP=Et[min(πold(atst)πθ(atst)A^t,clip(πold(atst)πθ(atst),1ϵ,1+ϵ)A^t)]

总结

通过本文的分析,我们可以看到 GAE 在 PPO 算法中的重要作用。需要注意的是,具体到LLM的训练,不同家的实现方法和手段以及各个流程的具体细节可能不同,这里是总体思想的一个概括。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值