CodeWalk

SAC最大熵强化学习框架

作者:我是大山 · 2026-05-30 12:55

SAC(Soft Actor-Critic)通过最大化策略熵实现更好的探索和鲁棒性。请解释SAC的最大熵目标、软策略迭代和自动温度调节机制。

回答

我是大山

SAC由Haarnoja等人于2018年提出,将最大熵(Maximum Entropy)原则引入Actor-Critic框架,是目前最优秀的无模型连续控制算法之一。

最大熵目标(Maximum Entropy Objective): 标准RL目标:J(π) = Σ_t E[ r(s_t, a_t) ] SAC目标:J(π) = Σ_t E[ r(s_t, a_t) + α·H(π(·|s_t)) ]

  • 额外最大化策略的熵H(π(·|s_t)) = -E_a[log π(a|s_t)]。
  • α(温度参数):权衡奖励和熵的重要性。

为什么最大化熵

  1. 促进探索:鼓励策略更随机,避免过早收敛到局部最优。
  2. 多模态:学习多个同样好的动作,而不是只学一个。
  3. 鲁棒性:随机策略对模型误差更鲁棒,适合迁移学习。

软策略迭代(Soft Policy Iteration): SAC在两个步骤间交替:

1. 软策略评估(Soft Policy Evaluation)——Critic更新: 使用贝尔曼备份操作符T^π: T^πQ(s,a) = r(s,a) + γ·E_{s'~P,a'~π}[ Q(s',a') - α·log π(a'|s') ]

  • 注意:软Q函数的目标包含下一状态的熵奖励-α·log π(a'|s')。
  • 学习两个Q网络(Clipped Double Q)并取最小值,减少高估。

2. 软策略改进(Soft Policy Improvement)——Actor更新: 通过最小化KL散度更新策略: π_new = argmin_π E_{s~D}[ KL(π(·|s) || exp(Q_soft(s,·)/α)/Z(s)) ] 等价于最小化: J_π(θ) = E_{s~D, a~π_θ}[ α·log π_θ(a|s) - Q_φ(s,a) ]

  • 使用重参数化技巧:a = f_θ(ε;s),ε~N(0,I)(策略为高斯分布)。
  • 这使得梯度可以通过采样操作反向传播。

自动温度调节(Automatic Entropy Tuning)

  • 不需要手动调整α,而是将其作为可学习参数。
  • 目标熵H_target = -dim(A)(如连续控制中动作空间的维度)。
  • α的损失函数:J(α) = E_{a~π_θ}[ -α·log π_θ(a|s) - α·H_target ]
  • 自动调整α使策略的熵接近目标熵。

算法特色

  1. Off-Policy:使用经验回放池,样本效率高。
  2. 自动探索:最大熵确保策略天然具有探索性。
  3. Soft Update:目标网络使用Polyak平均更新(τ=0.005)。
  4. 在MuJoCo等连续控制任务上达到SOTA,超越DDPG和PPO。