Home / 机器人学习 / SAC:把动作随机性写进控制目标

025|SAC:把动作随机性写进控制目标

系列首页 · 上一篇 · 下一篇

原论文:Soft Actor-Critic: Off-Policy Maximum Entropy Deep Reinforcement Learning with a Stochastic Actor,Tuomas Haarnoja 等,2018。论文。

先接住前作的问题

DDPG通过确定性Actor追逐当前高价值动作,容易过早集中到估计有误的选择。SAC把保留多种好动作写入长期目标,而不只在采集时加噪声;这改变价值定义与策略改进,是另一条离策略控制路线。

五个前置概念

五个前置概念:熵衡量分布的不确定性;软 Bellman 评价把未来熵纳入价值;重参数化把随机采样写成可微变换;经验回放复用过去交互;目标网络用缓慢变化的网络提供训练标签。

一、问题设定:怎样让动作随机性参与长期决策

机器人学习中,一条关节动作看起来回报最高,可能只是价值网络暂时高估了它。若策略迅速变成确定性输出,之后的数据又围绕这个动作产生,错误就可能自我强化。SAC 让策略同时追求任务回报和动作分布的熵:在相近的好选择之间保留随机性,而不是立即收缩到单一动作。

DDPG 的执行动作可以加噪声,但它优化的核心策略仍然指向单一动作。噪声只是收集数据的工具,不一定成为价值函数愿意长期保留的行为多样性。SAC 则改变优化目标:

J(π)=∑tE[r(st,at)+αH(π(⋅∣st))].J(\pi)=\sum_t\mathbb E[r(s_t,a_t)+\alpha\mathcal H(\pi(\cdot|s_t))].

H\mathcal H 是条件动作分布的熵,α\alpha 是温度。温度大,策略更重视保留选择;温度小,策略更接近只追逐任务奖励。原文后续推导把温度吸收到奖励缩放中,因此很多公式没有显式写出 α\alpha。

设定是单智能体、无模型、在线收集与离策略更新、连续状态动作。基准包括 Hopper、Walker2d、HalfCheetah、Ant 以及两个不同实现的 Humanoid。状态主要是仿真本体状态,动作是连续控制输入;各环境自己的运动、存活和控制成本构成奖励。终止规则及完整奖励系数应随环境版本核对,不能用今天同名环境默认值替代原实验。

SAC 的目标不是专门解决稀疏抓取奖励、视觉遮挡或安全探索。它首先解决“如何更可靠地训练连续策略”。这使其成为机器人学习的重要基础算法,但使用它仍要定义任务、观测、动作接口和复位流程。

二、同时构造软价值目标与随机策略更新

它把经验回放、随机 Actor、软价值函数和双 Q 结合起来。机器人领域看重的不只是能否跑起来,更是一次采样能否反复利用,以及换个随机种子是否仍能学会。

1. 熵必须进入未来价值

标准 Q 值只计算未来奖励;软 Q 还通过后续状态价值考虑未来的动作选择空间:

Vπ(s)=Ea∼π[Qπ(s,a)−αlog⁡π(a∣s)],V^\pi(s)=\mathbb E_{a\sim\pi} [Q^\pi(s,a)-\alpha\log\pi(a|s)],

Qπ(s,a)=r(s,a)+γEs′Vπ(s′).Q^\pi(s,a)=r(s,a)+\gamma\mathbb E_{s'}V^\pi(s').

因为 H(π)=E[−log⁡π]\mathcal H(\pi)=\mathbb E[-\log\pi],第二项就是熵贡献。这意味着通往未来仍有多个可行选择的状态,也可能获得较高软价值。它不是简单在当前动作上加一个随机扰动。

2. Actor 学习近似一个偏好好动作的分布

理想软改进得到的动作分布与 exp⁡(Q(s,a)/α)\exp(Q(s,a)/\alpha) 成正比。高价值动作更常出现,低价值动作仍可能出现但概率更低。连续空间中归一化积分难算,SAC用可计算密度的参数化策略逼近这个分布。Lilian Weng的软策略改进推导提示先展开归一化项:固定QQ与状态ss时,αDKL(π∥eQ/α/Z)=Eπ[αlog⁡π−Q]+αlog⁡Z\alpha D_{\mathrm{KL}}(\pi\Vert e^{Q/\alpha}/Z)=\mathbb E_\pi[\alpha\log\pi-Q]+\alpha\log Z。最后一项不依赖待优化Actor,才可从损失中省去;不是认为连续动作的ZZ等于一。于是得到:

Lπ=Es∼D,ϵ[αlog⁡πϕ(a∣s)−min⁡iQθi(s,a)],a=fϕ(ϵ;s).L_\pi=\mathbb E_{s\sim D,\epsilon} [\alpha\log\pi_\phi(a|s)-\min_i Q_{\theta_i}(s,a)], \quad a=f_\phi(\epsilon;s).

DD 为经验池,ϵ\epsilon 是固定分布的随机噪声。重参数化让动作对网络参数可微,梯度可穿过 Q 网络传回 Actor。关键是状态来自旧经验,但用于 Actor 更新的动作由当前策略重新采样;不是对回放池里的旧动作做行为克隆。

3. 原始版本有独立 V 网络

本文采用原始论文的 2018 年修订版本:两套 Q、一个 V、V 的目标网络和随机策略。不能把后来常见的“没有 V 网络、自动温度调整”的实现当成这篇算法原样。

将 Qmin⁡=min⁡(Q1,Q2)Q_{\min}=\min(Q_1,Q_2),主要目标可概括为:

LV=12E[(Vψ(s)−stopgrad⁡(Qmin⁡(s,a)−αlog⁡π(a∣s)))2],L_V=\tfrac12\mathbb E[(V_\psi(s)- \operatorname{stopgrad}(Q_{\min}(s,a)-\alpha\log\pi(a|s)))^2],

LQi=12E[(Qθi(s,a)−(r+γ(1−d)Vψˉ(s′)))2].L_{Q_i}=\tfrac12\mathbb E[ (Q_{\theta_i}(s,a)-(r+\gamma(1-d)V_{\bar\psi}(s')))^2].

dd 表示真正的任务终止。将有限采样截断混为终止会改变学习目标,部署复现时必须检查。V 把当前策略的软价值压缩成状态函数;双 Q 的较小值减轻高估;目标 V 缓慢变化,使 TD 拟合不必追赶过快移动的标签。

4. 有界动作还需要修正密度

策略通常先采样高斯变量 uu,再令 a=tanh⁡(u)a=\tanh(u)。这能满足动作范围,却改变了概率密度:

log⁡π(a∣s)=log⁡p(u∣s)−∑jlog⁡(1−tanh⁡2(uj)).\log\pi(a|s)=\log p(u|s) -\sum_j\log(1-\tanh^2(u_j)).

遗漏雅可比修正,就会算错熵与 Actor 损失。概率密度可以大于一,连续分布的微分熵也可以为负,所以不能拿离散事件概率的直觉检查每一个对数值。

动作单位会改变微分熵。若物理动作 a=cua=cu,则 H(a)=H(u)+dlog⁡∣c∣H(a)=H(u)+d\log|c|,其中 uu 是标准坐标动作、c≠0c\ne0 是统一标量缩放、dd 是动作维度,HH 表示微分熵。固定维度、固定缩放时这可表现为与策略无关的常数,但改动作范围、终止规则或目标熵口径时,温度含义就不能直接沿用。tanh修正与从标准动作映射到物理单位的修正是两层不同变量变换。原文附录C

一个能算清楚的例子

自构例子,未运行:某状态只有两个离散动作,其软改进 Q 值为 3 和 2。温度为 1 时,第一个动作概率为 e3/(e3+e2)≈0.731e^3/(e^3+e^2)\approx0.731;温度为 0.1 时约为 0.99995。高温保留次优选择,低温几乎只选最大值。这只是解释温度的离散教学例子,实际 SAC 在连续动作中用参数化分布近似。 奖励整体放大10倍而保持温度不变,在这个例子里有相同效果;所以还必须披露原文按环境设置的reward scale。

三、按同一软目标更新价值与有界随机策略

熵必须进入未来价值,而不只加在Actor末端。实现还要把采样动作的tanh变换和密度修正对应起来,并区分原始独立V网络版本与后来的实现。

初始化随机策略、Q1、Q2、V、目标 V 与经验池
重复:
    从当前策略采样有界动作,与环境交互并保存转移
    从经验池抽取一批状态、旧动作、奖励和下一状态
    用目标 V 构造两个 Q 的 TD 标签,更新 Q1 和 Q2
    在这些状态用当前策略重新采样动作
    使用 tanh 修正后的 log 概率,更新软状态价值 V
    最小化 alpha * log概率 - min(Q1,Q2),更新策略
    缓慢移动目标 V 参数
评估:
    按论文评估规则使用策略均值动作
    记录环境回报,不把熵奖励混进成绩

四、分开跨种子表现与奖励尺度影响

作者声称 SAC 同时改善样本效率和稳定性。原文图1、图2 支持的是六个连续控制仿真基准上的比较,尤其是较难的人形任务;这篇原始论文没有展示真实机器人训练。不要把之后 SAC 的真机应用直接记到本篇实验名下。

原图怎么读: 图3,原论文图注与图像。三个子图分别检验评估动作选择、奖励尺度和目标网络平滑系数。奖励尺度改变熵与任务回报的相对权重,不能把它仅当成绘图单位变化。

Soft Actor-Critic: Off-Policy Maximum Entropy Deep Reinforcement Learning with a Stochastic Actor,图3:三个子图分别检验评估动作选择、奖励尺度和目标网络平滑系数。奖励尺度改变熵与任务回报的相对权重,不能把它仅当成绘图单位变化。
实验图原图摘引:Tuomas Haarnoja 等,2018,HTML S5.F3,图3。原图面板重新排版,数据未改。核对原文。原版权保留。

这里采用带独立V网络的原始SAC;奖励尺度与熵的讨论不能直接替换为后续自动温度版本的实现。

维度 原文设置与判读
任务 六个连续控制基准,两个 Humanoid 分别有 17 与 21 维动作
基线 DDPG、PPO、SQL、TD3,附录另有 Trust-PCL 与算法变体
数据 每种算法在线收集自己的仿真交互;SAC 经验池容量一百万
更新 主 SAC 每次交互后一次梯度更新,批量 256,隐藏层为两层各 256
其他参数 学习率 3×10−43\times10^{-4},折扣 0.99,目标平滑系数 0.005
重复 五个随机种子,每 1000 环境步进行一次评估回合
曲线阴影 五次运行的最小值到最大值,不是标准误或置信区间
指标 环境累计奖励;学习横轴是环境步数,不是秒数
奖励尺度 前四任务为 5,Gym Humanoid 为 20,rllab Humanoid 为 10

以上预算与参数来自第 5 节及附录 D。各任务总训练步数需从图轴逐项读取,本文不把所有环境写成同一个预算;具体硬件与等算力调参预算没有逐项确认。

公平性还有一个细节:SAC 评估用均值动作,SQL 保留其随机采样方式,DDPG 和 PPO 的探索噪声关闭。图上比较的是这些评估协议下的环境回报,不是所有方法都以相同随机性执行。基线 SQL 还加入了双 Q,因此不是机械照抄更早论文的最简版本。

结果:稳定并不意味着不需要调参

证据位置 观察与含义 结论边界
图1 难任务上 SAC 学得更快、最终回报较高,简单任务与基线接近 支持所测环境的样本效率,不能推出所有控制任务占优
图2 rllab Humanoid 上确定性变体种子间波动更大 支持随机策略与熵方案的稳定性价值,不是单一模块的纯数学因果证明
图3(a) 使用均值动作评估常得到更高环境回报 训练目标与报告指标不同,随机性在训练有用不等于评估越随机越好
图3(b)(c) 奖励尺度太小或太大都可能变差,目标更新过快也不稳 反驳“完全免调参”,支持适当温度与目标平滑
定理 1、附录 B 精确软策略迭代在规定条件下得到策略类内最优 不能直接给神经网络、连续动作、有限 SGD 更新提供全局收敛保证

Soft Actor-Critic: Off-Policy Maximum Entropy Deep Reinforcement Learning with a Stochastic Actor,图1:读图对应本段的“难任务上 SAC 学得更快、最终回报较高,简单任务与基线接近”;支持所测环境的样本效率,不能推出所有控制任务占优。
原图摘引:Tuomas Haarnoja 等,2018,HTML S4.F1,图1。原面板按源顺序重新排版,数据未改。核对原文。读图对应本段的“难任务上 SAC 学得更快、最终回报较高,简单任务与基线接近”;支持所测环境的样本效率,不能推出所有控制任务占优。
Soft Actor-Critic: Off-Policy Maximum Entropy Deep Reinforcement Learning with a Stochastic Actor,图2:读图对应本段的“rllab Humanoid 上确定性变体种子间波动更大”;支持随机策略与熵方案的稳定性价值,不是单一模块的纯数学因果证明。
原图摘引:Tuomas Haarnoja 等,2018,HTML S5.F2,图2。核对原文。读图对应本段的“rllab Humanoid 上确定性变体种子间波动更大”;支持随机策略与熵方案的稳定性价值,不是单一模块的纯数学因果证明。

这里不从曲线像素猜测精确终值。明确的数值证据主要是五种子协议、网络与训练参数、动作维数和奖励尺度。判断效果大小时,应使用原始图和可复现评估数据,而不是把视觉上大约一倍的曲线写成精确百分比。

图2 的确定性消融也不是“只关掉一个随机数生成器”:它与随机版本在价值构造和探索方式上有相关改变。作者将结果解释为随机性与熵带来稳定性是合理的经验结论,若要精确区分每个因素,还需设计更细的对照。

五、概率密度和有界动作需要一致处理

理论边界值得认真记住:原证明使用有限动作及精确评价改进等条件;工程算法使用神经网络和不完全更新。理论为设计提供理由,实验为近似实现提供证据,两者不能互相替代。

本文的机器人视角分析是:熵鼓励探索,却不自动区分安全与危险动作。若奖励无法表达碰撞、夹持力或设备损耗,最大熵只会在当前目标下寻找策略。视觉编码、接触约束、稀疏奖励和自动复位仍需单独处理。原论文也没有离线数据分布约束,因此“能用回放”不等于“能安全地只用任意固定数据训练”。

追问:比较不同动作单位时,能否直接沿用同一熵系数?

参考答案:连续动作的概率密度随坐标变换而变,熵数值也与所用单位有关;实现中的动作缩放、tanh变换和密度修正必须一致。应先统一物理动作范围与归一化约定,再比较熵系数及奖励尺度。相同数字的系数不必对应相同探索强度,尤其不能漏掉变换后密度却把差异归因于算法。

六、沿机制关系继续读

与TD3是平行actor-critic方法:双Q只是共享的稳健估计组件,最大熵目标是SAC另一个明确选择;SERL将离策略学习与奖励、复位、控制系统组合,不能把真机效率只归于SAC公式。

七、自测三题与参考答案

问题1:为什么不能只在 Actor 损失里加熵,而让 Critic 完全沿用普通回报?

答案:那样优化的是另一种局部正则化方案。SAC 的软价值还要考虑未来状态允许的策略熵,否则 Actor 当前选择如何影响后续多样性不会进入评价。其推导要求评价与改进使用一致目标。

问题2:SAC 使用旧状态,为什么 Actor 更新时仍重新采样动作?

答案:旧状态提供训练位置,Actor 需要判断当前策略在那里将做什么。若直接用回放动作计算策略梯度,就可能变成提高过去行为似然的更新。重新采样使损失里的价值与熵对应当前策略。

问题3:奖励全部乘以十,最优策略一定不变吗?

答案:普通纯回报目标在正比例缩放下通常保留排序;固定熵系数的 SAC 不一样,因为奖励与熵的比例变了。乘十相当于降低相对温度,策略更确定,所以既可能改善利用,也可能过早收缩。原文图3 的奖励尺度实验正是在检验这个问题。