SAC 论文阅读

423 阅读3分钟

0 论文信息

1 对于 SAC 的逐步解析

  传统的强化学习可以简单认为其是最大化奖励的预期总和 : tE(st,at)ρπ[r(st,at)]\sum_t \mathbb{E}_{\left(\mathbf{s}_t, \mathbf{a}_t\right) \sim \rho_\pi}\left[r\left(\mathbf{s}_t, \mathbf{a}_t\right)\right],如同之前在《DBC 论文阅读补充》中所写,作者补充了熵来让让强化学习取得更好的效果 (采用拉格朗日乘子法) :

J(π)=t=0TE(st,at)ρπ[r(st,at)+αH(π(st))]\begin{align} J(\pi)=\sum_{t=0}^T \mathbb{E}_{\left(\mathbf{s}_t, \mathbf{a}_t\right) \sim \rho_\pi}\left[r\left(\mathbf{s}_t, \mathbf{a}_t\right)+\alpha \mathcal{H}\left(\pi\left(\cdot \mid \mathbf{s}_t\right)\right)\right] \end{align}

  α\alpha 即拉格朗日参数也被称为温度参数,一般会选一个较为合适的后续进行整体优化。接下来就是看如何在此基础上推出 Soft Actor-Critic (SAC) 的算法。


Bellman 方程回顾 在之前的《从马尔可夫决策到 DQN 算法族(上)》中,我们提到过 Bellman 方程,其表述如下 :

  在马尔可夫奖励过程中,一个状态的期望回报 (即从这个状态出发的未来累积奖励的期望) 被称为这个状态的价值 (value)。所有状态的价值就组成了价值函数 (value function),价值函数的输入为某个状态,输出为这个状态的价值。我们将价值函数写成 V(s)=E[GtSt=s]V(s)=\mathbb{E}\left[G_t \mid S_t=s\right],展开为 :

V(s)=E[GtSt=s]=E[Rt+γRt+1+γ2Rt+2+St=s]=E[Rt+γ(Rt+1+γRt+2+)St=s]=E[Rt+γGt+1St=s]=E[Rt+γV(St+1)St=s]\begin{aligned} V(s) & =\mathbb{E}\left[G_t \mid S_t=s\right] \\ & =\mathbb{E}\left[R_t+\gamma R_{t+1}+\gamma^2 R_{t+2}+\ldots \mid S_t=s\right] \\ & =\mathbb{E}\left[R_t+\gamma\left(R_{t+1}+\gamma R_{t+2}+\ldots\right) \mid S_t=s\right] \\ & =\mathbb{E}\left[R_t+\gamma G_{t+1} \mid S_t=s\right] \\ & =\mathbb{E}\left[R_t+\gamma V\left(S_{t+1}\right) \mid S_t=s\right] \end{aligned}

  在上式的最后一个等号中,一方面,即时奖励的期望正是奖励函数的输出,即 E[RtSt=s]=r(s)\mathbb{E}\left[R_t \mid S_t=s\right]=r(s);另一方面,等式中剩余部分 E[γV(St+1)St=s]\mathbb{E}\left[\gamma V\left(S_{t+1}\right) \mid S_t=s\right] 可以根据从状态 ss 出发的转移概率得到,即可以得到

V(s)=r(s)+γsSp(ss)V(s)\begin{align} V(s)=r(s)+\gamma \sum_{s^{\prime} \in S} p\left(s^{\prime} \mid s\right) V\left(s^{\prime}\right) \end{align}

  式 (2) 即被称为 Bellman 方程。


  在软策略迭代的策略评估步骤中,作者希望根据公式 (1) 中的最大熵目标计算策略 π\pi 的值。对于固定策略,soft-Q value\text{soft-}Q \text{ value} 可以使用迭代计算,从任意函数 Q:S×ARQ: \mathcal{S} \times \mathcal{A} \rightarrow \mathbb{R} 开始,反复应用修正的 Bellman 备份算子 Tπ\mathcal{T}^{\pi} :

TπQ(st,at)r(st,at)+γEst+1p[V(st+1)]\begin{align} \mathcal{T}^\pi Q\left(\mathbf{s}_t, \mathbf{a}_t\right) \triangleq r\left(\mathbf{s}_t, \mathbf{a}_t\right)+\gamma \mathbb{E}_{\mathbf{s}_{t+1} \sim p}\left[V\left(\mathbf{s}_{t+1}\right)\right] \end{align}

其中 :

V(st)=Eatπ[Q(st,at)logπ(atst)]\begin{align} V\left(\mathbf{s}_t\right)=\mathbb{E}_{\mathbf{a}_t \sim \pi}\left[Q\left(\mathbf{s}_t, \mathbf{a}_t\right)-\log \pi\left(\mathbf{a}_t \mid \mathbf{s}_t\right)\right] \end{align}

  其中 V(st)V\left(\mathbf{s}_t\right) 是软状态值函数。通过重复应用 Tπ\mathcal{T}^{\pi},可以得到任意策略 π\pi 的软值函数,有如下引力 :

引理 1 (软策略评估) 考虑方程 (3) 中的软 Bellman 备份算子 Tπ\mathcal{T}^{\pi}A<|\mathcal{A}|<\infty 的映射 Q0:S×ARQ^0: \mathcal{S} \times \mathcal{A} \rightarrow \mathbb{R},定义 Qk+1=TπQkQ^{k+1}=\mathcal{T}^\pi Q^k。当 kk \rightarrow \infty 时,序列 QkQ^k 收敛于 π\pisoft-Q value\text{soft-}Q \text{ value}

  在策略改进步骤中,向新 QQ 函数的指数方向更新策略。这种特定的更新选择可以保证在其软价值方面产生改进的策略。由于在实践中更喜欢易于处理的策略,因此将额外地将策略限制为一些策略集 Π\Pi,这些策略可以对应于一些实例,参数化的分布族,高斯分布。为了考虑 πΠ\pi\in\Pi 的约束,将改进的策略投影到期望的策略集合中。虽然原则上可以选择任何投影,在此直接使用 KL 散度定义的信息投影。换句话说,在策略改进步骤中,对于每个状态,根据更新策略 :

πnew =argminπΠDKL(π(st)exp(Qπold (st,))Zπold (st))\begin{align} \pi_{\text {new }}=\arg \min _{\pi^{\prime} \in \Pi} \mathrm{D}_{\mathrm{KL}}\left(\pi^{\prime}\left(\cdot \mid \mathbf{s}_t\right) \| \frac{\exp \left(Q^{\pi_{\text {old }}}\left(\mathbf{s}_t, \cdot\right)\right)}{Z^{\pi_{\text {old }}}\left(\mathbf{s}_t\right)}\right) \end{align}

  根据 KL 散度的思想,即希望策略 π(st)\pi^{\prime}\left(\cdot \mid \mathbf{s}_t\right) 的分布更接近 exp(Qπold (st,))Zπold (st)\frac{\exp \left(Q^{\pi_{\text {old }}}\left(\mathbf{s}_t, \cdot\right)\right)}{Z^{\pi_{\text {old }}}\left(\mathbf{s}_t\right)} 的分布。其中配分函数 Zπold(st)Z^{\pi_{\mathrm{old}}}\left(\mathrm{s}_t\right) 将分布归一化,虽然它通常是难以处理的,但它对新策略的梯度没有贡献,因此可以忽略。对于这个投影,可以证明,相对于方程 (1) 中的目标,新的投影策略比旧策略具有更高的值。在引理 2 中将这个结果形式化 :

引理 2 (软策略的改善) 设 πoldΠ\pi_{\mathrm{old}} \in \Pi,设 πold\pi_{\mathrm{old}} 为式 (5) 定义的最小化问题的优化器。则对于所有 (st,at)S×A\left(\mathbf{s}_t, \mathbf{a}_t\right) \in \mathcal{S} \times \mathcal{A}A<|\mathcal{A}|<\infty,都有 Qπnew (st,at)Qπold (st,at)Q^{\pi_{\text {new }}}\left(\mathbf{s}_t, \mathbf{a}_t\right) \geq Q^{\pi_{\text {old }}}\left(\mathbf{s}_t, \mathbf{a}_t\right)

  完整的软策略迭代算法在软策略评估和软策略改进步骤之间交替,可证明在 Π\Pi 的策略中收敛到最优最大熵策略 (定理 1)。尽管该算法可以证明找到了最优解,但目前只能在表格情况下以其精确形式执行它。因此,作者接下来将近似连续域的算法,需要依靠函数逼近器来表示 QQ 值,并运行这两个步骤,直到收敛至边际效应。该近似产生了一种新的实用算法,称为 soft Actor-Critic (SAC)。

定理 1 (软策略迭代) 从任意 πΠ\pi\in\Pi 重复应用软策略评估和软策略改进收敛于策略 π\pi^*,使得对于所有 πΠ\pi\in\Pi(st,at)S×A\left(\mathbf{s}_t, \mathbf{a}_t\right) \in \mathcal{S} \times \mathcal{A},假设 A<|\mathcal{A}|<\inftyQπ(st,at)Qπ(st,at)Q^{\pi^*}\left(\mathbf{s}_t, \mathbf{a}_t\right) \geq Q^{\pi}\left(\mathbf{s}_t, \mathbf{a}_t\right)

  如上所述,大型连续域要求推导出软策略迭代的实用近似 (因为实际情况多是连续的)。为此,作者将对 QQ 函数和策略使用函数逼近器,而不是运行评估和改进收敛,而是在使用随机梯度下降优化两个网络之间交替。作者考虑一个参数化状态值函数 Vψ(st)V_\psi\left(\mathbf{s}_t\right)softQ\text{soft}-Q 函数 Qθ(st,at)Q_\theta\left(\mathbf{s}_t, \mathbf{a}_t\right) 和一个易于处理的策略 πϕ(atst)\pi_\phi\left(\mathbf{a}_t \mid \mathbf{s}_t\right)。这些网络的参数是 ψ,θ,ϕ\psi,\theta,\phi。例如,价值函数可以建模为表征神经网络,策略被建模为具有神经网络给出的均值和协方差的高斯分布。接下来,对于这些参数向量的更新规则进行推导。

  状态值函数近似于软值。原则上不需要为状态值构建一个单独的函数逼近器,因为它与根据公式 (4) 的 QQ 函数和策略有关。这个量可以从当前策略的单个动作样本中估计,而不引入偏差,但在实践中,包括软值的单独函数逼近器可以稳定训练,便于与其他网络同时训练。训练软值函数以最小化平方残差

JV(ψ)=EstD[12(Vψ(st)Eatπϕ[Qθ(st,at)logπϕ(atst)])2]\begin{align} J_V(\psi)=\mathbb{E}_{\mathbf{s}_t \sim \mathcal{D}}\left[\frac{1}{2}\left(V_\psi\left(\mathbf{s}_t\right)-\mathbb{E}_{\mathbf{a}_t \sim \pi_\phi}\left[Q_\theta\left(\mathbf{s}_t, \mathbf{a}_t\right)-\log \pi_\phi\left(\mathbf{a}_t \mid \mathbf{s}_t\right)\right]\right)^2\right] \end{align}

其中 D\mathcal{D} 是先前采样状态和动作的分布,或重放缓冲区。公式 (6) 的梯度可以用无偏估计量估计

^ψJV(ψ)=ψVψ(st)(Vψ(st)Qθ(st,at)+logπϕ(atst))\begin{align} \hat{\nabla}_\psi J_V(\psi)=\nabla_\psi V_\psi\left(\mathbf{s}_t\right)\left(V_\psi\left(\mathbf{s}_t\right)-Q_\theta\left(\mathbf{s}_t, \mathbf{a}_t\right)+\log \pi_\phi\left(\mathbf{a}_t \mid \mathbf{s}_t\right)\right) \end{align}

其中动作根据当前策略进行采样,而不是重放缓冲区。可以训练软 QQ 函数参数以最小化软 Bellman 残差

JQ(θ)=E(st,at)D[12(Qθ(st,at)Q^(st,at))2]\begin{align} J_Q(\theta)=\mathbb{E}_{\left(\mathbf{s}_t, \mathbf{a}_t\right) \sim \mathcal{D}}\left[\frac{1}{2}\left(Q_\theta\left(\mathbf{s}_t, \mathbf{a}_t\right)-\hat{Q}\left(\mathbf{s}_t, \mathbf{a}_t\right)\right)^2\right] \end{align}

其中

Q^(st,at)=r(st,at)+γEst+1p[Vψˉ(st+1)]\begin{align} \hat{Q}\left(\mathbf{s}_t, \mathbf{a}_t\right)=r\left(\mathbf{s}_t, \mathbf{a}_t\right)+\gamma \mathbb{E}_{\mathbf{s}_{t+1} \sim p}\left[V_{\bar{\psi}}\left(\mathbf{s}_{t+1}\right)\right] \end{align}

可以再次用随机梯度进行优化

^θJQ(θ)=θQθ(at,st)(Qθ(st,at)r(st,at)γVψˉ(st+1))\begin{align} \hat{\nabla}_\theta J_Q(\theta)=\nabla_\theta Q_\theta\left(\mathbf{a}_t, \mathbf{s}_t\right)\left(Q_\theta\left(\mathbf{s}_t, \mathbf{a}_t\right)-r\left(\mathbf{s}_t, \mathbf{a}_t\right)-\gamma V_{\bar{\psi}}\left(\mathbf{s}_{t+1}\right)\right) \end{align}

  该更新利用了目标值网络 VψˉV_{\bar{\psi}},其 ψˉ\bar{\psi} 可以是值网络权重的指数移动平均值。或者可以更新目标权重以定期匹配当前值函数权重。最后,可以通过直接最小化公式 (5) 中预期的 KL 散度来学习策略参数

Jπ(ϕ)=EstD[DKL(πϕ(st)exp(Qθ(st,))Zθ(st))]\begin{align} J_\pi(\phi)=\mathbb{E}_{\mathbf{s}_t \sim \mathcal{D}}\left[\mathrm{D}_{\mathrm{KL}}\left(\pi_\phi\left(\cdot \mid \mathbf{s}_t\right) \| \frac{\exp \left(Q_\theta\left(\mathbf{s}_t, \cdot\right)\right)}{Z_\theta\left(\mathbf{s}_t\right)}\right)\right] \end{align}

  有几个选项可以最小化 JπJ_{\pi}。策略梯度方法的典型解决方案是使用似然比梯度估计器,它不需要通过策略和目标密度网络反向传播梯度。然而在例子中,目标密度是 QQ 函数,它由神经网络表示,可以区分,因此应用重新参数化技巧很方便,从而导致方差估计器较低。为此,使用神经网络变换重新参数化策略

at=fϕ(ϵt;st)\begin{align} \mathbf{a}_t=f_\phi\left(\epsilon_t ; \mathbf{s}_t\right) \end{align}

其中 ϵt\epsilon_t 是一个输入噪声向量,从一些固定分布中采样,例如球形高斯分布。我们现在可以将公式 (11) 中的目标重写为

Jπ(ϕ)=EstD,ϵtN[logπϕ(fϕ(ϵt;st)st)Qθ(st,fϕ(ϵt;st))]\begin{align} J_\pi(\phi)=\mathbb{E}_{\mathbf{s}_t \sim \mathcal{D}, \epsilon_t \sim \mathcal{N}}\left[\log \pi_\phi\left(f_\phi\left(\epsilon_t ; \mathbf{s}_t\right) \mid \mathbf{s}_t\right)-Q_\theta\left(\mathbf{s}_t, f_\phi\left(\epsilon_t ; \mathbf{s}_t\right)\right)\right] \end{align}

其中 πϕ\pi_{\phi} 是根据 fϕf_{\phi} 隐式定义的,注意到分区函数独立于 ϕ\phi,因此可以省略。同时对于公式 (13) 借助以下估计

^ϕJπ(ϕ)=ϕlogπϕ(atst)+(atlogπϕ(atst)atQ(st,at))ϕfϕ(ϵt;st)\begin{align} \hat{\nabla}_\phi J_\pi(\phi)=\nabla_\phi \log \pi_\phi\left(\mathbf{a}_t \mid \mathbf{s}_t\right)+\left(\nabla_{\mathbf{a}_t} \log \pi_\phi\left(\mathbf{a}_t \mid \mathbf{s}_t\right)-\nabla_{\mathbf{a}_t} Q\left(\mathbf{s}_t, \mathbf{a}_t\right)\right) \nabla_\phi f_\phi\left(\epsilon_t ; \mathbf{s}_t\right) \end{align}

其中 at\mathbf{a}_tfϕ(ϵt;st)f_\phi\left(\epsilon_t ; \mathbf{s}_t\right) 上进行评估。这种无偏梯度估计器将 DDPG 风格策略梯度扩展到任何易于处理的随机策略。


Algorithm 1 Soft Actor-Critic

  • Initialize parameter vectors ψ,ψˉ,θ,ϕ\psi, \bar{\psi}, \theta, \phi.
  • for each iteration do
    • for each environment step do
      • atπϕ(atst)\mathbf{a}_t \sim \pi_\phi\left(\mathbf{a}_t \mid \mathbf{s}_t\right)
      • st+1p(st+1st,at)\mathbf{s}_{t+1} \sim p\left(\mathbf{s}_{t+1} \mid \mathbf{s}_t, \mathbf{a}_t\right)
      • DD{(st,at,r(st,at),st+1)}\mathcal{D} \leftarrow \mathcal{D} \cup\left\{\left(\mathbf{s}_t, \mathbf{a}_t, r\left(\mathbf{s}_t, \mathbf{a}_t\right), \mathbf{s}_{t+1}\right)\right\}
    • end for
    • for each gradient step do
      • ψψλV^ψJV(ψ)\psi \leftarrow \psi-\lambda_V \hat{\nabla}_\psi J_V(\psi)
      • θiθiλQ^θiJQ(θi)\theta_i \leftarrow \theta_i-\lambda_Q \hat{\nabla}_{\theta_i} J_Q\left(\theta_i\right) for i{1,2}i \in\{1,2\}
      • ϕϕλπ^ϕJπ(ϕ)\phi \leftarrow \phi-\lambda_\pi \hat{\nabla}_\phi J_\pi(\phi)
      • ψˉτψ+(1τ)ψˉ\bar{\psi} \leftarrow \tau \psi+(1-\tau) \bar{\psi}
    • end for
  • end for

2 感想

  感觉即使想法并不难理解,还是使用了很多的小技巧,整体的推导看下来并没有一种直观的理解,后续我会继续努力理解的。之后会把后续的理解进行更新。

参考资料 (References)