深度强化学习中的Soft Actor-Critic (SAC) 算法原理与实现细节
字数 2437 2025-10-29 23:21:20

深度强化学习中的Soft Actor-Critic (SAC) 算法原理与实现细节

题目描述
Soft Actor-Critic (SAC) 是一种基于最大熵强化学习的离线策略算法,结合了Actor-Critic框架与熵正则化。其核心目标是让智能体在最大化累积期望回报的同时,最大化策略的熵,从而鼓励探索并提升鲁棒性。题目要求详细解释SAC的动机、理论框架、损失函数设计以及训练过程。

解题过程

  1. 最大熵强化学习基础

    • 传统强化学习目标:最大化累积回报 \(\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\) 是温度参数,平衡回报与熵的权重。
    • 熵的意义:熵越大,策略随机性越强,智能体会更均匀地探索动作空间,避免过早收敛到局部最优。
  2. 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}\):通过软更新(指数移动平均)稳定训练。
  3. 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支持离线学习。
  1. 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}$ 均可(实践中常取最小值)。
  1. 温度参数 \(\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. 训练流程
    • 步骤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网络、目标网络和重参数化技巧共同保障了训练的稳定性与效率,使其成为连续控制任务中的主流算法。

深度强化学习中的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网络、目标网络和重参数化技巧共同保障了训练的稳定性与效率,使其成为连续控制任务中的主流算法。