Policy Gradient with Baseline

本文详细解析策略梯度中的Baseline概念,介绍了其在降低方差和加速收敛中的作用,展示了添加Baseline后的策略梯度和蒙特卡洛近似,并讨论了常见Baseline的选择及其影响。关键在于理解为何引入基线,以及如何选择合适的b以提高训练效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

策略梯度的推导:

策略梯度中的Baseline:

策略梯度中常用Baseline方法来降低方差,可以使得收敛更快。Baseline可以是一个函数b,该函数是什么都可以,但就是不能依赖于动作A。

下面是Baseline的一个重要等式推导,灰色部分是用链式法则展开,

添加Baseline后的策略梯度:

引入b既然等于0为什么要引入呢?原因是神经网络中的策略梯度并不是按照这个公式计算,而是这个公式的蒙特卡洛近似,如果选取的b合适,那么就会使得蒙特卡洛的方差变小,使得收敛的更快。

添加Baseline后的蒙特卡洛近似:

### 策略梯度算法伪代码 策略梯度方法属于直接参数化策略的方法之一,在这类方法中,目标是直接学习一个从状态映射到行动概率分布的函数。下面展示的是REINFORCE算法的一个简单版本,这是一种基本的策略梯度方法。 ```python Initialize policy parameters θ randomly Repeat (for each episode): Initialize state s_0 at the start of an episode For t = 0,1,... until termination: Choose action a_t according to π_θ(·|s_t) Take action a_t and observe reward r_{t+1} and next state s_{t+1} Store data tuple (s_t,a_t,r_{t+1},s_{t+1}) Compute returns G_t from time step t onward for all steps in this episode Update policy parameters using gradient ascent with respect to expected return ∇_θ J(θ) ≈ 1/T * Σ_t=0^T-1 ∇_θ log π_θ(a_t | s_t) * G_t ``` 上述伪代码描述了一个回合更新的过程,其中每个回合结束后才进行一次参数更新操作[^2]。对于更高效的实现方式,则可以采用逐时间步更新的方式,这通常被称为actor-critic架构的一部分;在这种情况下,除了维护一个用于评估当前行为好坏的价值估计器外,还会有一个单独的学习过程来调整实际采取的行为模式。 为了提高样本效率以及减少方差,实践中经常引入基线(baseline),比如使用状态价值作为基准减去回报中的波动部分,从而只保留相对于平均表现更好的动作所带来的额外收益贡献给梯度计算。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值