优势函数与A2C算法

目录

1.优势函数

2.A2C、A3C与SAC经典优化算法

2.1 A2C算法

2.2 A3C算法

2.3 SAC算法

3.GAE算法流程


      在基础Actor-Critic算法训练过程中,策略梯度估计往往存在方差过高、动作优劣区分模糊的缺陷,训练过程容易震荡、收敛稳定性差。研究者通过引入优势函数(Advantage Function) 对 AC算法进行优化,衍生出A2C、A3C、SAC、PPO等一系列经典强化学习算法;而广义优势估计(GAE)进一步优化了优势值的估算方式,通过超参数γ、λ平衡偏差与方差,大幅提升策略训练的收敛速度与稳定性。本章将从优势函数原理出发,依次讲解A2C系列算法、GAE的推导逻辑、实现方式以及超参数的调优策略。

1.优势函数

      基础AC算法直接使用动作价值Q(s,a)加权策略梯度,所有动作的Q值往往整体偏大或偏小,梯度更新方向单一,估计方差极高。A2C的核心优化思路是引入基线消除梯度估计的固有偏差,基线一般选取状态价值函数V(s),代表当前状态s下,遵循策略π所能获得的平均预期回报,相当于为当前所有动作设定了一个性能参考基准。基于基线可以定义优势函数,用来表征:在状态s下执行动作a,相对该状态平均回报水平的优劣程度,公式定义:

将原始策略梯度中的Q值替换为优势值,即可得到A2C的策略梯度公式:

选择V(s)作为基线主要有两点原因:

1.V(s)物理意义清晰:代表当前状态下全部可选动作的期望回报,是天然的“平均性能参考线”;

2.可独立训练拟合:我们可以搭建单独的Critic价值网络拟合V(s),能够跟随策略迭代实时更新基线,动态适配策略变化,持续优化梯度估计效果。

       未使用基线时,本例中三个动作对应的策略梯度全部为正数,参数只能单向更新,所有动作的执行概率都会被拉高,无法区分动作好坏; 引入优势函数后:

优势值正负可以精准区分动作相对优劣,让策略参数朝着不同方向差异化更新,解决了原始 AC 算法无法筛选优质动作的痛点。

2.A2C、A3C与SAC经典优化算法

2.1 A2C算法

      优势演员-评论家算法(A2C)是基础AC结合优势函数的同步式改进版本。理论上计算优势需要同时拟合Q(s,a)与V(s)两个价值网络,会提升训练开销;在工程实现中,可以利用时序差分(TD)方式近似拟合动作价值:

将近似式代入优势函数定义,优势值可以直接通过单个状态价值网络计算:

式中右侧即为TD误差δt,因此 A2C 最终的策略梯度可以简化为TD误差加权的动作偏好梯度:

仅需训练1个Actor策略网络+1个Critic价值网络即可完成训练,大幅降低了算法落地难度。

2.2 A3C算法

       异步优势演员-评论家(A3C)由DeepMind在2016年提出,是A2C的异步并行拓展方案。 算法启动多个独立智能体,每个智能体在独立环境中交互采样、单独计算梯度,异步将梯度上传至全局网络更新参数。并行采样打破了单条轨迹样本之间的时序相关性,减少经验数据冗余,既提升了采样效率,又进一步增强了策略训练的稳定性。

2.3 SAC算法

      柔性演员-评论家(SAC)属于基于最大熵框架的异策略强化学习算法,在原始最大化累积奖励的目标基础上,额外加入策略熵最大化约束:

1.鼓励策略保持随机性,智能体会主动对环境进行充分探索,避免策略过早收敛到局部最优;

2.依托经验回放池复用历史采样轨迹,样本利用率远高于 A2C/A3C 这类同策略算法;

3.凭借鲁棒性强、适配复杂连续控制任务的优势,SAC 成为机器人控制、游戏仿真等领域的主流强化学习算法。

3.GAE算法流程

       广义优势估计(GAE)是对优势函数的高阶优化方案,也是PPO等主流算法的核心组件。GAE借鉴TD(λ)多步时序差分的思想,通过折扣系数γ、衰减系数λ对未来多步TD误差加权求和,在偏差与方差之间实现柔性平衡。

GAE优势值的累加形式公式:

GAE迭代流程如下:

给定一条长度为T的交互轨迹,终止状态sT​的价值V(sT​)=0,从最后一个时间步反向遍历计算:

1.正向遍历整条轨迹,逐时间步计算每一步的TD误差δ0​,δ1​,…,δT−1​;

2.从最后一步t=T−1向前递归,依次求解每个时刻的GAE优势值;

3.将全部时刻的优势值保存,用于后续策略网络梯度更新。

GAE代码如下:

import numpy as np

def compute_gae(rewards, values, gamma=0.99, lambda_=0.95):
    """
    计算GAE广义优势
    :param rewards: 轨迹奖励列表,形状[T,]
    :param values: 各时刻状态价值,形状[T+1,](包含终止状态价值)
    :param gamma: 奖励折扣因子
    :param lambda_: GAE衰减系数
    :return: 各时间步优势估计值,形状[T,]
    """
    T = len(rewards)
    advantages = np.zeros(T)
    gae = 0.0
    # 逆向遍历时间步
    for t in reversed(range(T)):
        delta_t = rewards[t] + gamma * values[t+1] - values[t]
        gae = delta_t + gamma * lambda_ * gae
        advantages[t] = gae
    return advantages

GAE的两个核心超参数、取值通常落在[0.9,1]区间,二者作用各不相同:

1.奖励折扣因子γ

权衡远近奖励:γ越趋近于1,算法越重视远期回报,适合需要长期决策的任务;

γ趋近于0仅关注即时奖励,适合瞬时反馈类任务;

间接平衡偏差方差:γ越大,多步未来奖励参与价值估计,模型偏差更低,但时序采样噪声会被累积,梯度方差上升;小γ仅利用单步奖励,估计偏差更高,但方差更小。

2.GAE衰减系数λ

λ直接控制多步 TD 误差的权重衰减程度,是平衡偏差方差的核心参数:

λ=0:GAE退化为单步TD优势估计,仅使用当前步TD误差,方差最小,但对长期回报拟合偏差最大;

λ=1:等价于蒙特卡洛优势估计,使用整条轨迹的累积回报拟合优势,偏差最小,但轨迹随机噪声会全部引入,方差最高。

在实际工程调参中,我们可以通过调整λ,在蒙特卡洛低偏差高方差、单步TD高偏差低方差两种极端方案之间平滑过渡,让优势估计的精度与训练稳定性达到最优平衡点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fpga和matlab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值