Soft Actor Critic 系列

Soft Actor Critic 系列

前言

Soft Actor Critic 一共有3篇论文。单纯从方法上来看三篇论文是递进关系。

  1. 第一篇:《Reinforcement Learning with Deep Energy-Based Policies》

    这一篇是后面两篇论文的理论基础,推导了基于能量模型(加入熵函数)的强化学习基本公式,并且给出了一个叫做 Soft Q Learning的算法。但是策略网络需要使用SVGD方法优化,十分复杂。

  2. 第二篇:《Soft Actor-Critic: Off-Policy Maximum Entropy Deep Reinforcement Learning with a Stochastic Actor》

    这篇论文在第一篇的基础上,找到了优化策略网络的新方法(重参数化技巧)。然后给出了新的网络结构。同时作者开始吸收DDPG和TD3的优势。

  3. 第三篇:《Soft Actor-Critic Algorithms and Applications》

    这篇论文在第二篇的基础上彻底吸收了DDPG和TD3的优势,简化了网络结构,提出了动态修改超参数 \(\alpha\) 的方法,是最终版本的SAC。

一、基本问题

强化学习可以用来优化确定性策略和随机策略。

但是目前大多数主流算法(DDPG、TD3、PPO等等)最终都是优化了一个确定性策略

随机性策略更加倾向于探索,目前确定性策略提高探索程度的方法有

  1. 添加噪声(DDPG, TD3)
  2. 高熵随机策略初始化(A3C)

为什么需要随机性策略?

  1. 在多模态环境下,有多个目标需要进行探索,这时确定性策略失效。
  2. 面对不确定动态的鲁棒性,模仿学习,以及改进模型收敛性和提高计算性能。

二、基于熵的强化学习

1. 基本目标

在传统强化学习中,优化目标为寻找策略最大化奖励,也就是:

\[\pi^{*}_{std} = \mathop{arg \space max} \limits_{\pi} \sum_t E_{(a_t, s_t) \sim\rho(\pi) }[r(s_t, a_t)] \tag{1} \]

这个公式描述了最优的策略是一条轨迹,轨迹的选取动作的变化服从一个分布 \(\rho(\pi)\)。最优的策略可以这条轨迹获得最大的奖励。

在加入了熵的强化学习中,优化目标修改为:

\[\pi^*_{MaxEnt} = \mathop{arg \space max} \limits_{\pi} \sum_t E_{(a_t, s_t) \sim\rho(\pi) }[r(s_t, a_t) + \alpha H(\pi(\cdot|s_t))] \tag{2} \]

公式2在公式1的基础上加入了熵 \(H(\pi(\cdot|s_t))\),其中熵的定义为

\[H(\pi(\cdot|s_t)) = E(-log(\pi(\cdot|s_t))) \]

公式(2)表示在最大化奖励的同时经可能的使得熵变大,也就是鼓励探索的同时最大化奖励。公式(2)中的超参数 \(\alpha\) 平衡了探索和最大化奖励

2. 基于熵的值迭代

强化学习学习的本质就是寻找一种策略,而这个策略满足一定的分布。基于熵的强化学习也是如此。在以前的工作中,我们通常使用离散的多项分布或者高斯分布来表示某一个状态可以输出策略的分布。但是最接近真实情况的分布应该是基于能量的分布模型。用数学公式描述就是:

\[\pi(s_t,a_t) \propto exp(-\varepsilon(s_t,a_t)) \]

\(\varepsilon\) 也叫做能量函数,在这里取\(\varepsilon = -\frac{1}{\alpha}Q_{soft}(s_t, a_t)\)。也就是说,每一个动作被选取的概率和该动作对应的Q值成正相关。并且,使用该能量函数还有以下的性质:

如果定义某个动作的最优动作价值为:

\[Q_{soft}^* = r_t + E_{s_{t+1}, ... \sim \rho(\pi)}\left[\sum_{l=1}^{\infty}\gamma^l(r_{t+1} + \alpha H(\pi^*_{MaxEnt}(\cdot | s_{t+1})))\right] \tag{3} \]

那么最优状态价值为:

\[V_{soft}^*(s_t) = \alpha \log \int_A exp(\frac{1}{\alpha}Q^*_{soft}(s_t,a')) da' \tag{4} \]

结合公式(3)和公式(4)可以得到最优的策略为:

\[\pi^*_{MaxEnt}(s_t|a_t) = exp(\frac{1}{\alpha}Q^*_{soft}(s_t,a_t) - V^*_{soft}(s_t)) \tag{5} \]

除了以上性质,最重要的是,Q和V的定义同样满足贝尔曼方程。也就是

\[Q^*_{soft}(s_t,a_t) = r_t + \gamma E_{s_{t+1} \sim p_{\pi}}\left[ V^*_{soft}(s_{t+1}) \right] \tag{6} \]

可以证明通过不断对 Q 和 V 的迭代可以使得 Q 和 V 收敛到最优。迭代的过程为:

\[Q_{soft}(s_t,a_t) \leftarrow r_t + \gamma E_{s_{t+1} \sim p_{\pi}}\left[ V_{soft}(s_{t+1}) \right] \\ \space \\ V_{soft}(s_t) \leftarrow \alpha \log \int_A exp(\frac{1}{\alpha}Q_{soft}(s_t,a')) da' \]

3. Soft Q Learning

将最大熵策略应用到Q-Learning 框架就是 Soft Q Learning 算法。但是实际上,Soft Q Learning 更像AC而不是Q Learning。

在Soft Q Learning 中有4个网络(Critic, Target Critic, Policy, Target Policy。这里Policy也可以理解为Actor,但是综合来看,还是Policy更合适,应为这个网络输出的是策略)

  • Critic 优化目标

    其中 Critic 的优化目标为 TD Error,但是是在最大熵框架下的TD Error,也就是

    \[J_Q(\theta) = E_{s_t \sim q_{s_t},a_t\sim q_{a_t}}\left[ \frac{1}{2}\left(\hat{Q}_{soft}^{\bar{\theta}}(s_t,a_t) - Q_{soft}^{\theta}(s_t, a_t)\right)^2 \right] \tag{7} \]

    其中,使用公式(6) 可以得到

    \[\hat{Q}_{soft}^{\bar{\theta}}(s_t,a_t) = r_t + \gamma E_{s_{t+1} \sim p_{\pi}}\left[ V^{\bar{\theta}}_{soft}(s_{t+1}) \right] \tag{8} \]

    在公式(8)中,\(V^{\bar{\theta}}_{soft}(s_{t+1})\) 可以由公式(4)计算得到。但是实际上,公式(4)假设了我们使用能量模型进行采样。但是这个操作比较的困难,所以我们还是会使用其他的分布对动作进行采样,所以这里就需要使用重要性采样进行修正,也就是将公式(4)修改为:

    \[V^{\bar{\theta}}_{soft}(s_{t+1}) = \alpha log E_{q_{a'}}\left[ \dfrac{exp(\dfrac{1}{\alpha}Q^{\bar{\theta}}_{soft}(s_t,a'))}{q_{a'}(a')}\right] \tag{9} \]

  • Policy优化目标

    Policy 输出的一个动作。用公式表示就是:

    \[a_t = f^{\phi}(\xi;s_t) \]

    但是最终Policy的优化目标为最优策略的分布,也就是公式(5)。这两个分布之间的距离使用KL散度来衡量,也就是:

    \[J_{\pi}(\phi;s_t) = D_{KL}\left( \pi^{\phi}(\cdot|s_t) \Bigg|\Bigg| exp(\dfrac{1}{\alpha}\left(Q^{\theta}_{soft}(s_t, \cdot) - V_{soft}^{\theta})\right)\right) \tag{10} \]

    但是实际上,在Soft Q Learning论文中,作者提到,已经有相关的工作指出这个公式的下降的最优梯度为:

    \[\Delta f^{\phi}(\cdot|;s_t) = E_{a_t\sim\pi^{\phi}} \left[\kappa(a_t,f^{\phi}(\cdot|s_t))\nabla_{a'}Q^{\theta}_{soft}(s_t,a')\Big|_{a'=a_t} + \alpha\nabla_{a'}\kappa(a',f^{\phi}(\cdot;s_t))\Big|_{a'=a_t}\right] \tag{11} \]

    同时,论文中指出,公式(11) 严格来说并不是公式(10)的梯度。但是公式(10)的梯度和公式(11)成正相关。也就是:

    \[\dfrac{\partial J_{\pi}(\phi;s_t)}{\partial \phi} \propto E\left[ \Delta f^{\phi}(\xi;s_t)\dfrac{\partial f^{\phi}(\xi;s_t)}{\partial\phi} \right] \]

4. Soft Actor Critic Version 1

SAC中设置了5个网络,2个V网络,一个策略网络,两个Q网络。

其中V网络,分为 V 和 Target V,输出状态价值。

策略网络输出一个策略。

Q网络输出动作价值,取两个网络中的最小值作为实际的Q值(Clipped Double Q Learning)

其中V网络优化目标为 Q 网络计算的V值和V网络输出的V值:

\[J_{V}(\psi)=\mathbb{E}_{\mathbf{s}_{t}\sim D}\;\left[{\textstyle{\dfrac{1}{2}}}\left(V_{\psi}(\mathbf{s}_{t})-\mathbb{E}_{\mathbf{a}_{t}\sim\pi_{\phi}}\left[Q_{\theta}(\mathbf{s}_{t},\mathbf{a}_{t})-\alpha\log\pi_{\phi}(\mathbf{a}_{t}|\mathbf{s}_{t})\right]\right)^{2}\right] \tag{12} \]

Q 网络的优化目标为TD Error

\[J_{Q}(\theta)=\mathbb{E}_{({\bf s}_{t},{\bf a}_{t})\sim D}\left[{\frac{1}{2}}\left(Q_{\theta}({\bf s}_{t},{\bf a}_{t})-\hat{Q}({\bf s}_{t},{\bf a}_{t})\right)^{2}\right] \tag{13} \]

其中

\[\hat{Q}\big(\mathrm{s}_{t},a_{t}\big)\equiv r\big(\mathrm{s}_{t},a_{t}\big)+\gamma\,\mathbb{E}_{\mathrm{s}_{t+1}\sim p}\,\big[V_{\bar{\psi}}\big(\mathrm{s}_{t+1}\big)\big] \tag{14} \]

策略的优化目标为使得策略的输出经可能的贴进Q值对应的分布:

\[J_{\pi}(\phi) = \mathbb{E}_{s_t \sim D}\left[ D_{KL}\left(\pi_{\phi}(\cdot|s_t)\Bigg|\Bigg|\dfrac{exp(Q_{\theta}(s_t, \cdot))}{Z_{\theta}(s_t)}\right)\right] \tag{15} \]

注意,这里的符号 D 表示用经验池中采样的数据。也就是这里不是使用策略网络输出的策略的分布进行优化。而只是单纯的某一个动作对应的概率。也正因如此,这个公式无法直接进行优化,因为某个动作对应了采样这个操作,而采样是没有办法求导的。

传统的AC框架使用了策略梯度接近策略采样无法求导的问题。即:

\[J_\pi(\phi) = log(\pi_{\phi}(s_t|a_t))Q(s_t,a_t) \]

但是Soft Actor Critic论文中,作者认为使用策略梯度公式还是会引入较高的方差(TD3中给出了证明)。所以作者在这里引入了重参数化技巧(只有连续动作空间才需要)。

重参数化技巧将输出动作和采样动作分离。具体来说,作者使得策略网络输出一个高斯分布的参 \(\mu\)\(\sigma\)。然后采样一个值 \(\xi \in N(0, 1)\)。然后使得:

\[a_t = f(\mu, \sigma, \xi ) = tanh(\mu + \sigma \xi) \tag{16} \]

这样 \(a_t\) 就是 \(\alpha\)\(\sigma\) 的函数,可以进行求导,而将随机性转化到了参数 \(\xi\)

将重参数化技巧带入策略优化公式,就得到

\[J_{\pi}(\phi)=\mathbb{E}_{\mathbb{s}_{t}\sim D,\epsilon_{t}\sim N}\left[\alpha\log\pi_{\phi}(f_{\phi}(\xi_{t};\mathbf{s}_{t})\vert\mathbf{s}_{t})-Q_{\theta}(\mathbf{s}_{t},f_{\phi}(\xi_{t};\mathbf{s}_{t}))\right] \tag{17} \]

5. Soft Actor Critic Version 2

在第一个版本的Soft Actor Critic中,模型对于超参数 \(\alpha\) 的选择还是比较敏感。

在第二个版本的 Soft Actor Critic 中,作者提出了动态更新 \(\alpha\) 的方法。这里直接给出公式:

\[\alpha_t^{*} = \mathop{arg \space min} \limits_{a_t} \mathbb{E}_{a_t \sim \pi_t^*}\left[ -\alpha_t \log \pi^*_t(a_t | s_t; a_t) - \alpha_t \bar{H}\right] \tag{18} \]

在Soft Actor Critic 的第二个版本中,作者设置了6个网络。

  1. 两个Q网络,以及两个Target Q
  2. 一个策略网络
  3. 一个更新超参数 \(\alpha\) 的网络

其中,两个Q网络和两个 Target Q 都取其中的最小值作为实际网络输出的 Q 和 Target Q。

其中 Q 网络优化的目标依旧是公式(13)。只是把 V 的计算使用定义转移到了 Target Q 计算。

策略网络的优化目标依旧是公式(17)。超参数网络的优化目标是公式(18)。

用一张图来表示。注意这张图没有画出重参数化技巧和更新超参数的网络。

img

posted @ 2024-12-13 16:52  nagimegesa  阅读(402)  评论(0)    收藏  举报