当前位置: 首页 > article >正文

腿足机器人之十四-强化学习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=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
               +----------------+
               | 温度调节机制    |
               | (α动态平衡)    |
               +----------------+

算法对比:

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

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

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

请添加图片描述


http://www.kler.cn/a/569100.html

相关文章:

  • 突破Ajax跨域困境,解锁前端通信新姿势
  • CMake高级特性:构建复杂项目的核心技巧
  • mysqldump 参数详解
  • 公寓管理租房小程序毕业系统设计
  • P10265 [GESP样题 七级] 迷宫统计
  • React低代码项目:Redux 状态管理
  • 数据结构——排序4
  • 深入理解Java网络编程:从基础到高级应用
  • C语言面试常见问题
  • 云计算第二周学习问题总结
  • 从0学习Spark
  • 开启AI短剧新纪元!SkyReels-V1/A1双剑合璧!昆仑万维开源首个面向AI短剧的视频生成模型
  • 安当全栈式MySQL安全解决方案:透明加密、动态凭据与勒索防护一体化实践
  • 基于Linux系统的物联网智能终端
  • 《C++运算符重载深度解析:从加法、流操作到仿函数与类型转换》
  • 江协科技/江科大-51单片机入门教程——P[1-3] 单片机及开发板介绍
  • 【容器化】低版本docker拉取ubuntn 22.04镜像启动容器执行apt update提示 NO_PUBKEY 871920D1991BC93C
  • 国产AI新秀:DeepSeek的前生今世
  • 如何调试Linux内核?
  • VS Code Python调试执行代码时出现“ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接”的问题解决