腿足机器人之十四-强化学习SAC算法
腿足机器人之十四-强化学习SAC算法
- 核心原理
- 关键结构
- 输入输出规范(以 Humanoid-v5 为例)
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=0∑TE(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=0∑T:从时间步0到终止时刻T的总和。
在实际机器人训练中,PPO适合在仿真环境中大量的进行,这是因为仿真环境可以产生大量的数据,而这正好满足了On-Policy 所需的大量交互数据,但是SAC的Off-Policy 特性复用旧数据,这意味着在真实世界中收集的数据可以服用,这提高了学习复杂动态的能力(如适应不同地面摩擦力),二者的结合是常用的方法。
无模型(Model-Free)指的是不依赖对环境动态(状态转移 P ( s ′ ∣ s , a ) P(s' | s,a) P(s′∣s,a)或奖励函数 R ( s , a ) R(s,a) R(s,a))的显示建模,而是直接通过试错(与环境交互的样本数据)来优化策略和值函数。基于模型的方法(如MPC、Dyna-Q)需要先学习或已经环境模型,再基于模型进行规划或者策略优化。
在腿足机器人上,无模型体现在无需动力学知识,即不需要预先知道机器人的关节力矩、地面摩擦力等物理参数,而是通过不断尝试动作(如摆动腿部),观察结果(如是否摔倒、移动速度)来学习策略。
关键结构
- SAC价值函数包含三个网络:
- Q网络(Critic): Q θ ( s , a ) Q_{\theta}(s,a) Qθ(s,a),估计状态-动作价值。
- 策略网络(Actor): π ϕ ( a , s ) \pi_{\phi}(a,s) πϕ(a,s),生成动作分布
- 温度自动调节网络(optional): α \alpha α
- 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π(a′∣s′):策略网络生成动作
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π(a′∣s′)](3)- 角标 a ′ ∼ π a' \sim \pi a′∼π表示策略网络生成下一个动作。
- α log π ( a ∣ s ) \alpha \log \pi(a|s) αlogπ(a∣s):策略熵的负值(鼓励探索)
- 策略网络更新
通过最小化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π(ϕ)=Es∼D[Ea∼πϕ[αlogπϕ(a∣s)−Qθ(s,a)]]
- π ϕ ( a ∣ s ) \pi_{\phi}(a|s) πϕ(a∣s):策略网络生成动作 a a a的概率
- α log π ϕ ( a ∣ s ) \alpha \log \pi_{\phi}(a|s) αlogπϕ(a∣s):策略熵的加权项,最大化其的意义在于鼓励策略在状态 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(α)=Es∼D[−α(logπ(a∣s)+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 为例)
- 环境参数
参数类型 | 维度 | 数值范围 |
---|---|---|
观测空间 (obs) | 376 维向量 | [-∞, +∞] |
动作空间 (act) | 17 维连续向量 | [-1, 1] |
- 网络配置对应表
网络类型 | 输入维度 | 输出维度 | 激活函数 |
---|---|---|---|
Q 网络 | 376 + 17 = 393 | 1 | ReLU |
策略网络 | 376 | 17(μ) + 17(σ) | Tanh(动作后处理) |
温度网络 | 376(可选) | 1 | Exp |