深度强化学习中的Soft Actor-Critic (SAC) 算法原理与实现细节
题目描述
Soft Actor-Critic (SAC) 是一种基于最大熵强化学习的离线策略算法,结合了Actor-Critic框架与熵正则化。其核心目标是让智能体在最大化累积期望回报的同时,最大化策略的熵,从而鼓励探索并提升鲁棒性。题目要求详细解释SAC的动机、理论框架、损失函数设计以及训练过程。
解题过程
-
最大熵强化学习基础
- 传统强化学习目标:最大化累积回报 \(\sum_t \mathbb{E}[r(s_t, a_t)]\)。
- SAC引入熵正则化:目标变为 \(\sum_t \mathbb{E}[r(s_t, a_t) + \alpha \mathcal{H}(\pi(\cdot|s_t))]\),其中 \(\mathcal{H}(\pi) = -\mathbb{E}[\log \pi(a|s)]\) 是策略的熵,\(\alpha\) 是温度参数,平衡回报与熵的权重。
- 熵的意义:熵越大,策略随机性越强,智能体会更均匀地探索动作空间,避免过早收敛到局部最优。
-
SAC的算法组件
SAC包含以下神经网络:- Actor网络(策略函数) \(\pi_\phi(a|s)\):输入状态 \(s\),输出动作分布(通常用高斯分布参数化)。
- 两个Critic网络(Q函数) \(Q_{\theta_1}(s,a), Q_{\theta_2}(s,a)\):输入状态 \(s\) 和动作 \(a\),输出Q值估计。使用双Q网络可减少过高估计偏差。
- 目标Q网络 \(\hat{Q}_{\hat{\theta}_1}, \hat{Q}_{\hat{\theta}_2}\):通过软更新(指数移动平均)稳定训练。
-
Critic网络的损失函数
- 目标Q值计算:
\[ y = r + \gamma \left( \min_{i=1,2} \hat{Q}_{\hat{\theta}_i}(s', \tilde{a}') - \alpha \log \pi_\phi(\tilde{a}'|s') \right), \quad \tilde{a}' \sim \pi_\phi(\cdot|s') \]
其中 $s'$ 是下一状态,$\tilde{a}'$ 是从当前策略采样的动作,$\min$ 操作取两个目标Q值的最小值以抑制偏差。
- 损失函数:对每个 \(Q_{\theta_i}\),最小化均方误差:
\[ L(\theta_i) = \mathbb{E}_{(s,a,r,s') \sim \mathcal{D}} \left[ (Q_{\theta_i}(s,a) - y)^2 \right] \]
$\mathcal{D}$ 是经验回放池,SAC支持离线学习。
- Actor网络的损失函数
- 目标:优化策略以最大化期望Q值加熵:
\[ L(\phi) = \mathbb{E}_{s \sim \mathcal{D}} \left[ \mathbb{E}_{a \sim \pi_\phi(\cdot|s)} \left( \alpha \log \pi_\phi(a|s) - \min_{i=1,2} Q_{\theta_i}(s,a) \right) \right] \]
- 梯度计算:由于动作 \(a\) 依赖 \(\phi\),需使用重参数化技巧(Reparameterization Trick)。设 \(a = f_\phi(s, \epsilon)\),其中 \(\epsilon\) 是高斯噪声,则梯度可写为:
\[ \nabla_\phi L(\phi) = \mathbb{E}_{s \sim \mathcal{D}, \epsilon \sim \mathcal{N}} \left[ \nabla_a \left( \alpha \log \pi_\phi(a|s) - Q_{\theta}(s,a) \right) \nabla_\phi f_\phi(s, \epsilon) \right] \]
这里 $Q_{\theta}$ 取 $Q_{\theta_1}$ 或 $Q_{\theta_2}$ 均可(实践中常取最小值)。
- 温度参数 \(\alpha\) 的自适应调整
- 熵的大小影响探索程度,SAC通常自动调整 \(\alpha\) 以维持目标熵 \(\mathcal{H}_0\)(如 \(\mathcal{H}_0 = -\text{动作维度}\))。
- 损失函数:
\[ L(\alpha) = \mathbb{E}_{s \sim \mathcal{D}} \left[ -\alpha \left( \log \pi_\phi(a|s) + \mathcal{H}_0 \right) \right] \]
通过梯度下降更新 $\alpha$,使策略熵接近 $\mathcal{H}_0$。
- 训练流程
- 步骤1:从回放池采样批次数据 \((s, a, r, s')\)。
- 步骤2:更新两个Critic网络(最小化Q损失)。
- 步骤3:更新Actor网络(最大化熵正则化Q值)。
- 步骤4:软更新目标网络参数:\(\hat{\theta}_i \leftarrow \tau \theta_i + (1-\tau) \hat{\theta}_i\)(\(\tau \ll 1\))。
- 步骤5:更新温度参数 \(\alpha\)(如果启用自适应调整)。
关键点总结
SAC通过熵最大化平衡探索与利用,其双Q网络、目标网络和重参数化技巧共同保障了训练的稳定性与效率,使其成为连续控制任务中的主流算法。