腿足机器人之十四-强化学习SAC算法

腿足机器人之十四-强化学习SAC算法


Soft Actor-Critic(SAC)是一种基于属于 Actor-Critic 框架的算法,属于最大熵的强化学习算法,最大熵的特点就是不仅考虑奖励最大化(上一篇博客PPO算法的目标),还要让策略的熵最大化,这样可以让策略更具探索能力且更鲁棒。

熵的概念源于信息论,原本表示的是编码信息所需要的比特数,信息量越少(确定性高),需要的用来编码信息的比特数也越少,这里熵衡量的是策略的随机性,熵越大策略越随机,这样有助于探索。SAC 的目标函数是期望奖励加上熵的项。

SAC算法的基础论文是:Tuomas Haarnohta et al. “Soft Actor-Critic: Off-Policy Maximum Entropy Deep Reinforcement Learning with a Stochastic Actor” (ICML 2018)

改进版本是:Automating Entropy Adjustment with Dual Optimization (ICLR 2019)

核心原理

SAC 是一种基于最大熵(Maximum Entropy)的无模型(Model-Free)离线(Off-Policy)强化学习算法,其核心思想是在优化策略时同时最大化期望回报和策略的熵(Entropy)。其目标函数为:

J ( π ) = ∑ t = 0 T E ( s t , a t ) ∼ ρ π [ r ( s t , a t ) + α H ( π ( ⋅ ∣ s t ) ) ] ( 1 ) J(\pi) = \sum \limits_{t=0}^T\mathbb E_{(s_t,a_t)\sim \rho_{\pi}}[r(s_t,a_t) + \alpha \mathcal H(\pi(\cdot|s_t))] (1) J(π)=t=0TE(st,at)ρπ[r(st,at)+αH(π(st))](1)
其中:

  • α \alpha α:温度系数(Temperature),平衡回报与熵的权重(通常自动调节),如若机器人频繁跌倒(探索不足),算法会自动增大,迫使策略更随机,上一篇博客的PPO算法无需复杂的超参数调优,Clipping 机制有效防止策略更新崩溃,适合工程部署,因而PPO算法被广泛用于无模型场景。
  • H ( π ( ⋅ ∣ s t ) ) \mathcal H(\pi(\cdot | s_t)) H(π(st)):策略在当前状态 s t s_t st的动作分布的熵(衡量动作分布的随机性)。如鼓励机器人尝试不同的步态(如大步 / 小步、左右脚交替模式)
  • s s s表状态空间, a a a表示动作空间, π \pi π表示策略,相关意义不清晰请见上一篇博客腿足机器人之十三-强化学习PPO算法
  • r ( s t , a t ) r(s_t,a_t) r(st,at):环境在状态 s t s_t st时执行动作 a t a_t at的及时奖励,属于同PPO一样常规回报,如机器人向前移动的速度、保持直立的姿态奖励。
  • E ( s t , a t ) ∼ ρ π \mathbb E_{(s_t,a_t)\sim \rho_{\pi}} E(st,at)ρπ:对状态 s t s_t st和动作 a t a_t at按策略 π \pi π生成的分布求期望。
  • ∑ t = 0 T \sum \limits_{t=0}^T t=0T:从时间步0到终止时刻T的总和。

在实际机器人训练中,PPO适合在仿真环境中大量的进行,这是因为仿真环境可以产生大量的数据,而这正好满足了On-Policy 所需的大量交互数据,但是SAC的Off-Policy 特性复用旧数据,这意味着在真实世界中收集的数据可以服用,这提高了学习复杂动态的能力(如适应不同地面摩擦力),二者的结合是常用的方法。

无模型(Model-Free)指的是不依赖对环境动态(状态转移 P ( s ′ ∣ s , a ) P(s' | s,a) P(ss,a)或奖励函数 R ( s , a ) R(s,a) R(s,a))的显示建模,而是直接通过试错(与环境交互的样本数据)来优化策略和值函数。基于模型的方法(如MPC、Dyna-Q)需要先学习或已经环境模型,再基于模型进行规划或者策略优化。

在腿足机器人上,无模型体现在无需动力学知识,即不需要预先知道机器人的关节力矩、地面摩擦力等物理参数,而是通过不断尝试动作(如摆动腿部),观察结果(如是否摔倒、移动速度)来学习策略。

关键结构

  1. SAC价值函数包含三个网络:
  • Q网络(Critic): Q θ ( s , a ) Q_{\theta}(s,a) Qθ(s,a),估计状态-动作价值。
  • 策略网络(Actor): π ϕ ( a , s ) \pi_{\phi}(a,s) πϕ(a,s),生成动作分布
  • 温度自动调节网络(optional): α \alpha α
  1. Soft Q函数更新
    通过最小化TD误差更新Q网络:
    L Q ( θ ) = E ( s , a , r , s ′ ) ∼ D [ ( Q θ ‾ ( s , a ) − ( r + γ E s ′ [ V θ ‾ ( s ′ ) ] ) ) 2 ] ( 2 ) \mathcal L_Q(\theta) = \mathbb E_{(s,a,r,s') \sim \mathcal D}\Big [ (Q_{\overline \theta}(s,a)-(r + \gamma \mathbb E_{s'}[V_{\overline \theta}(s')]))^2 \Big ] (2) LQ(θ)=E(s,a,r,s)D[(Qθ(s,a)(r+γEs[Vθ(s)]))2](2)
  • γ \gamma γ(0.99):折扣因子,降低未来奖励的权重。
  • Q θ ‾ ( s , a ) Q_{\overline \theta}(s,a) Qθ(s,a):目标Q网络(延迟更新防止震荡)评估状态 - 动作价值,即预测若执行该动作,后续能获得的累积奖励。
  • log ⁡ π ( a ′ ∣ s ′ ) \log \pi(a'|s') logπ(as):策略网络生成动作 a ′ a' a的对数概率
    其中目标价值 V θ ‾ ( s ′ ) V_{\overline \theta}(s') Vθ(s)为:
    V ( s ′ ) = E a ′ ∼ π [ Q θ ‾ ( s ′ , a ′ ) − α log ⁡ π ( a ′ ∣ s ′ ) ] ( 3 ) V(s')=\mathbb E_{a' \sim \pi}[Q_{\overline \theta}(s',a') - \alpha \log \pi(a' | s')] (3) V(s)=Eaπ[Qθ(s,a)αlogπ(as)](3)
    • 角标 a ′ ∼ π a' \sim \pi aπ表示策略网络生成下一个动作。
    • α log ⁡ π ( a ∣ s ) \alpha \log \pi(a|s) αlogπ(as):策略熵的负值(鼓励探索)
  1. 策略网络更新
    通过最小化KL散度优化策略:
    L π ( ϕ ) = E s ∼ D [ E a ∼ π ϕ [ α log ⁡ π ϕ ( a ∣ s ) − Q θ ( s , a ) ] ] \mathcal L_{\pi}(\phi) = \mathbb E_{s \sim \mathcal D} \Big [ \mathbb E_{a \sim \pi_{\phi}}[\alpha \log \pi_{\phi}(a|s)-Q_{\theta}(s,a)] \Big ] Lπ(ϕ)=EsD[Eaπϕ[αlogπϕ(as)Qθ(s,a)]]
  • π ϕ ( a ∣ s ) \pi_{\phi}(a|s) πϕ(as):策略网络生成动作 a a a的概率
  • α log ⁡ π ϕ ( a ∣ s ) \alpha \log \pi_{\phi}(a|s) αlogπϕ(as):策略熵的加权项,最大化其的意义在于鼓励策略在状态 s s s时保持动作多样性,如即使当前左腿前迈能获得高奖励,也保留一定概率尝试右腿动作。
  • − Q θ ( s , a ) -Q_{\theta}(s,a) Qθ(s,a):Critic网络对当前动作的负面评价,最小化该项的意义是推动策略选择Critic评估的高价值动作。

温度自动调节
当使用自动温度调整时:
L ( α ) = E s ∼ D [ − α ( log ⁡ π ( a ∣ s ) + H t a r g e t ) ] \mathcal L_(\alpha) = \mathbb E_{s \sim \mathcal D} \Big [ -\alpha(\log \pi(a|s) + \mathcal H_{target}) \Big ] L(α)=EsD[α(logπ(as)+Htarget)]
其中 H t a r g e t = − dim ⁡ ( A ) \mathcal H_{target} = -\dim(\mathcal A) Htarget=dim(A)(动作空间维度)

  +----------------+     +----------------+
  |  观测空间(s)    |     |  动作空间(a)    |
  +-------+--------+     +-------+--------+
          |                       |
          v                       v
  +----------------+     +----------------+
  |  策略网络       |     |  Q网络         |
  |  (μ, σ)        |     |  (Q值预测)     |
  +-------+--------+     +-------+--------+
          |                       |
          +-----------+-----------+
                      |
                      v
               +----------------+
               | 温度调节机制    |
               | (α动态平衡)    |
               +----------------+

算法对比:

特性 SAC PPO
样本效率 高(Off-Policy,可复用历史数据) 低(On-Policy,依赖当前策略的数据)
探索能力 通过熵最大化显示自动调节 依赖策略初始噪声(如高斯噪声)
稳定性性 依赖熵正则化和双 Q 网络抑制估计偏差 使用 Clipping 限制更新幅度,避免剧烈波动
超参数敏感性 低(自动调温)

输入输出规范(以 Humanoid-v5 为例)

  1. 环境参数
参数类型 维度 数值范围
观测空间 (obs) 376 维向量 [-∞, +∞]
动作空间 (act) 17 维连续向量 [-1, 1]
  1. 网络配置对应表
网络类型 输入维度 输出维度 激活函数
Q 网络 376 + 17 = 393 1 ReLU
策略网络 376 17(μ) + 17(σ) Tanh(动作后处理)
温度网络 376(可选) 1 Exp

请添加图片描述