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 则改变优化目标:
是条件动作分布的熵, 是温度。温度大,策略更重视保留选择;温度小,策略更接近只追逐任务奖励。原文后续推导把温度吸收到奖励缩放中,因此很多公式没有显式写出 。
设定是单智能体、无模型、在线收集与离策略更新、连续状态动作。基准包括 Hopper、Walker2d、HalfCheetah、Ant 以及两个不同实现的 Humanoid。状态主要是仿真本体状态,动作是连续控制输入;各环境自己的运动、存活和控制成本构成奖励。终止规则及完整奖励系数应随环境版本核对,不能用今天同名环境默认值替代原实验。
SAC 的目标不是专门解决稀疏抓取奖励、视觉遮挡或安全探索。它首先解决“如何更可靠地训练连续策略”。这使其成为机器人学习的重要基础算法,但使用它仍要定义任务、观测、动作接口和复位流程。
二、同时构造软价值目标与随机策略更新
它把经验回放、随机 Actor、软价值函数和双 Q 结合起来。机器人领域看重的不只是能否跑起来,更是一次采样能否反复利用,以及换个随机种子是否仍能学会。
1. 熵必须进入未来价值
标准 Q 值只计算未来奖励;软 Q 还通过后续状态价值考虑未来的动作选择空间:
因为 ,第二项就是熵贡献。这意味着通往未来仍有多个可行选择的状态,也可能获得较高软价值。它不是简单在当前动作上加一个随机扰动。
2. Actor 学习近似一个偏好好动作的分布
理想软改进得到的动作分布与 成正比。高价值动作更常出现,低价值动作仍可能出现但概率更低。连续空间中归一化积分难算,SAC用可计算密度的参数化策略逼近这个分布。Lilian Weng的软策略改进推导提示先展开归一化项:固定与状态时,。最后一项不依赖待优化Actor,才可从损失中省去;不是认为连续动作的等于一。于是得到:
为经验池, 是固定分布的随机噪声。重参数化让动作对网络参数可微,梯度可穿过 Q 网络传回 Actor。关键是状态来自旧经验,但用于 Actor 更新的动作由当前策略重新采样;不是对回放池里的旧动作做行为克隆。
3. 原始版本有独立 V 网络
本文采用原始论文的 2018 年修订版本:两套 Q、一个 V、V 的目标网络和随机策略。不能把后来常见的“没有 V 网络、自动温度调整”的实现当成这篇算法原样。
将 ,主要目标可概括为:
表示真正的任务终止。将有限采样截断混为终止会改变学习目标,部署复现时必须检查。V 把当前策略的软价值压缩成状态函数;双 Q 的较小值减轻高估;目标 V 缓慢变化,使 TD 拟合不必追赶过快移动的标签。
4. 有界动作还需要修正密度
策略通常先采样高斯变量 ,再令 。这能满足动作范围,却改变了概率密度:
遗漏雅可比修正,就会算错熵与 Actor 损失。概率密度可以大于一,连续分布的微分熵也可以为负,所以不能拿离散事件概率的直觉检查每一个对数值。
动作单位会改变微分熵。若物理动作 ,则 ,其中 是标准坐标动作、 是统一标量缩放、 是动作维度, 表示微分熵。固定维度、固定缩放时这可表现为与策略无关的常数,但改动作范围、终止规则或目标熵口径时,温度含义就不能直接沿用。tanh修正与从标准动作映射到物理单位的修正是两层不同变量变换。原文附录C
一个能算清楚的例子
自构例子,未运行:某状态只有两个离散动作,其软改进 Q 值为 3 和 2。温度为 1 时,第一个动作概率为 ;温度为 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,原论文图注与图像。三个子图分别检验评估动作选择、奖励尺度和目标网络平滑系数。奖励尺度改变熵与任务回报的相对权重,不能把它仅当成绘图单位变化。

这里采用带独立V网络的原始SAC;奖励尺度与熵的讨论不能直接替换为后续自动温度版本的实现。
| 维度 | 原文设置与判读 |
|---|---|
| 任务 | 六个连续控制基准,两个 Humanoid 分别有 17 与 21 维动作 |
| 基线 | DDPG、PPO、SQL、TD3,附录另有 Trust-PCL 与算法变体 |
| 数据 | 每种算法在线收集自己的仿真交互;SAC 经验池容量一百万 |
| 更新 | 主 SAC 每次交互后一次梯度更新,批量 256,隐藏层为两层各 256 |
| 其他参数 | 学习率 ,折扣 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 更新提供全局收敛保证 |


这里不从曲线像素猜测精确终值。明确的数值证据主要是五种子协议、网络与训练参数、动作维数和奖励尺度。判断效果大小时,应使用原始图和可复现评估数据,而不是把视觉上大约一倍的曲线写成精确百分比。
图2 的确定性消融也不是“只关掉一个随机数生成器”:它与随机版本在价值构造和探索方式上有相关改变。作者将结果解释为随机性与熵带来稳定性是合理的经验结论,若要精确区分每个因素,还需设计更细的对照。
五、概率密度和有界动作需要一致处理
理论边界值得认真记住:原证明使用有限动作及精确评价改进等条件;工程算法使用神经网络和不完全更新。理论为设计提供理由,实验为近似实现提供证据,两者不能互相替代。
本文的机器人视角分析是:熵鼓励探索,却不自动区分安全与危险动作。若奖励无法表达碰撞、夹持力或设备损耗,最大熵只会在当前目标下寻找策略。视觉编码、接触约束、稀疏奖励和自动复位仍需单独处理。原论文也没有离线数据分布约束,因此“能用回放”不等于“能安全地只用任意固定数据训练”。
追问:比较不同动作单位时,能否直接沿用同一熵系数?
参考答案:连续动作的概率密度随坐标变换而变,熵数值也与所用单位有关;实现中的动作缩放、tanh变换和密度修正必须一致。应先统一物理动作范围与归一化约定,再比较熵系数及奖励尺度。相同数字的系数不必对应相同探索强度,尤其不能漏掉变换后密度却把差异归因于算法。
六、沿机制关系继续读
与TD3是平行actor-critic方法:双Q只是共享的稳健估计组件,最大熵目标是SAC另一个明确选择;SERL将离策略学习与奖励、复位、控制系统组合,不能把真机效率只归于SAC公式。
七、自测三题与参考答案
问题1:为什么不能只在 Actor 损失里加熵,而让 Critic 完全沿用普通回报?
答案:那样优化的是另一种局部正则化方案。SAC 的软价值还要考虑未来状态允许的策略熵,否则 Actor 当前选择如何影响后续多样性不会进入评价。其推导要求评价与改进使用一致目标。
问题2:SAC 使用旧状态,为什么 Actor 更新时仍重新采样动作?
答案:旧状态提供训练位置,Actor 需要判断当前策略在那里将做什么。若直接用回放动作计算策略梯度,就可能变成提高过去行为似然的更新。重新采样使损失里的价值与熵对应当前策略。
问题3:奖励全部乘以十,最优策略一定不变吗?
答案:普通纯回报目标在正比例缩放下通常保留排序;固定熵系数的 SAC 不一样,因为奖励与熵的比例变了。乘十相当于降低相对温度,策略更确定,所以既可能改善利用,也可能过早收缩。原文图3 的奖励尺度实验正是在检验这个问题。