软演员-评论家 (SAC) 是一种采用演员-评论家架构的离策略算法,特别适合连续控制问题。由Google Brain和加州大学伯克利分校的研究团队同期开发,SAC 采纳了最大熵强化学习 (reinforcement learning)的原理。该框架修改了标准强化学习目标,旨在最大化预期累积奖励以及策略的熵,以促进代理更好地进行环境交互并增强其稳定性。
最大熵目标
在标准强化学习 (reinforcement learning)中,目标通常是找到一个策略 π,使其最大化折扣奖励的预期总和:
J(π)=∑t=0TE(st,at)∼ρπ[γtr(st,at)]
其中 ρπ 是由策略 π 产生的状态-动作边际分布。
SAC 在此目标中引入了一个熵项。策略旨在最大化奖励,同时尽可能随机地行动:
JSAC(π)=∑t=0TE(st,at)∼ρπ[γt(r(st,at)+αH(π(⋅∣st)))]
这里,H(π(⋅∣st))=Ea∼π(⋅∣st)[−logπ(a∣st)] 是策略 π 在状态 st 的熵。温度参数 (parameter) α 控制着熵项与奖励的相对重要性。较高的 α 促进更多的环境交互 (更高的熵),而较低的 α 则优先考虑奖励最大化。这种熵最大化鼓励代理更广泛地进行环境交互,并避免过早收敛到次优的确定性策略。与DDPG等方法相比,这也使得算法对超参数 (hyperparameter)的敏感度降低。
SAC 架构组成
SAC 使用了多个神经网络 (neural network),在理念上类似于TD3,但因最大熵目标和随机策略的使用而有所修改:
- 随机策略网络(演员)πϕ(a∣s): 与DDPG或TD3使用确定性演员进行主要策略评估不同,SAC 使用随机演员。对于连续动作空间,该网络通常输出高斯分布的均值和标准差(或通过Tanh函数压缩的高斯分布来限制动作)。在训练和执行过程中,动作都从该分布中采样。参数 (parameter) ϕ 经过优化以最大化SAC目标。
- Q函数网络(评论家)Qθ1(s,a)、Qθ2(s,a): SAC 使用两个独立的Q网络,由 θ1 和 θ2 参数化,以减少Q值估计中的正偏差。这种“裁剪双Q”技巧借鉴自TD3。两个评论家都经过训练以逼近软Q值,软Q值包含了未来动作的熵奖励。
- 目标Q网络 Qθtarg,1(s,a)、Qθtarg,2(s,a): 每个Q网络都维护有对应的目标网络。这些目标使用Polyak平均(在线网络参数和当前目标参数的加权平均)缓慢更新,为Q函数更新提供了稳定的目标。
θtarg←τθ+(1−τ)θtarg
其中 τ 是一个小的常数(例如0.005)。
在SAC的早期版本中,使用了一个单独的状态值网络 Vψ(s),但为了简化,较新的实现通常从Q函数和策略中隐式地推导出值。
网络训练
SAC 采用离策略操作,从存储在回放缓冲区 D 中的转换 (s,a,r,s′,d) 中学习。在每个训练步骤中,从 D 中采样一个迷你批次来更新网络。
评论家(Q函数)更新
Q网络经过训练以最小化软贝尔曼残差。转换 (s,a,r,s′) 的目标值 y 使用目标Q网络计算,并包含熵项:
y(r,s′)=r+γ(1−d)(mini=1,2Qθtarg,i(s′,a′)−αlogπϕ(a′∣s′)),处 a′∼πϕ(⋅∣s′)
请注意,a′ 是从给定下一状态 s′ 的当前策略 πϕ 中采样的一个新动作。使用两个目标Q值的最小值(裁剪双Q)。(1−d) 项处理终止状态,如果 d(完成)为真,则下一状态的值为零。
每个Q网络的损失函数 (loss function)是均方贝尔曼误差(MSBE):
LQ(θi)=E(s,a,r,s′,d)∼D[(Qθi(s,a)−y(r,s′))2]
此损失通过梯度下降 (gradient descent)最小化。
演员(策略)更新
策略网络 πϕ 经过更新以最大化预期的软Q值加上策略熵。一个常见的最小化目标函数是:
Lπ(ϕ)=Es∼D,a∼πϕ(⋅∣s)[αlogπϕ(a∣s)−mini=1,2Qθi(s,a)]
这里,动作 a 是从回放缓冲区中的状态 s 对应的当前策略 πϕ 中采样的。期望通过迷你批次近似计算。如果处理连续动作(例如,采样 ϵ∼N(0,I) 并计算 a=tanh(μϕ(s)+σϕ(s)⊙ϵ)),梯度计算需要重参数 (parameter)化技巧。最小化此损失鼓励策略选择那些能够带来高Q值(由两个评论家中的最小值估计)并且具有高熵(低对数概率)的动作。
温度参数 (α) 更新(可选但建议)
温度 α 对性能影响很大。它平衡了奖励和熵目标。手动设置需要仔细调整。SAC 的一个主要优点是它能够自动调整 α。这是通过提出另一个优化问题来实现的,其中目标是维持目标熵水平 H0。这个目标通常是启发式设定的,例如,设为动作空间的负维度:H0=−∣A∣。
α 的损失函数(必须是非负的,所以通常优化 logα)是:
L(α)=Eat∼πt(⋅∣st)[−αlogπt(at∣st)−αH0]
通过梯度下降最小化此损失会调整 α,使得如果策略的当前熵低于目标 H0,则 α 减小(使奖励更重要),如果熵更高,则 α 增大(使熵更重要)。
算法概览
- 初始化策略网络 πϕ、Q网络 Qθ1,Qθ2、目标网络 Qθtarg,1,Qθtarg,2 (θtarg←θ) 和回放缓冲区 D。初始化 α(如果自动调整)。
- 对于每个环境步:
a. 采样动作 at∼πϕ(⋅∣st)。
b. 执行动作 at,观测奖励 rt 和下一状态 st+1。
c. 将转换 (st,at,rt,st+1,dt) 存储到 D 中。
- 对于每个梯度步(通常每个环境步有多个梯度步):
a. 从 D 中采样一个迷你批次 B={(s,a,r,s′,d)}。
b. 使用目标网络、策略采样 a′∼πϕ(⋅∣s′) 和当前 α 计算Q目标 y。
c. 通过最小化 LQ(θi) 更新Q函数 θ1,θ2。
d. 通过最小化 Lπ(ϕ) 更新策略 ϕ。这需要从策略中采样 a∼πϕ(⋅∣s)。
e. 如果自动调整 α,则通过最小化 L(α) 更新 α。
f. 更新目标网络:θtarg,i←τθi+(1−τ)θtarg,i。
一个图示,表明软演员-评论家各组成部分之间的交互。数据从环境流向回放缓冲区。来自缓冲区的迷你批次用于更新策略(演员)、Q函数(评论家),以及可选的温度参数 (parameter) α。目标网络为评论家更新提供稳定值,并通过Polyak平均缓慢更新。
SAC的优点
- 样本效率: 作为一种离策略算法,SAC 可以有效地从回放缓冲区复用数据,与PPO或A2C等在线策略方法相比,这通常会带来更好的样本效率,尤其是在复杂、高维度的连续控制任务中。
- 稳定性: 裁剪双Q学习、目标网络的使用,特别是熵最大化框架,有助于实现比DDPG等算法更稳定的学习。自动温度调整通过调整环境交互/利用平衡进一步提高了稳定性。
- 环境交互: 熵项明确鼓励代理进行环境交互。这种内置的环境交互机制可能非常有效,尤其是在奖励稀疏或动态复杂的任务中,朴素的环境交互策略可能失效。
- 性能: SAC 在广泛的连续控制基准测试中展现出先进的性能,例如在MuJoCo或PyBullet中发现的那些。
通过结合Q学习(离策略更新、回放缓冲区)、策略梯度(演员更新)和最大熵框架中的思想,SAC 在演员-评论家系列中提供了一种强大且通常高效的方法,以应对有挑战性的强化学习 (reinforcement learning)问题。它对平衡奖励最大化与策略熵的侧重,使其在开发稳定高效的强化学习代理方面取得了重要的进展。