CS294 Lecture 6-Actor Critic

从 "reward to go" 到 Actor Critic

回顾一下REINFORCE算法
\begin{array}{l} {\text { 1. sample }\left\{\tau^{i}\right\} \text { from } \pi_{\theta}\left(a_{t} | s_{t}\right) \text { (run the policy) }} \\ {\text { 2. } \nabla_{\theta} J(\theta) \approx \sum_{i}\left(\sum_{t=1}^{T} \nabla_{\theta} \log \pi_{\theta}\left(a_{i, t} | s_{i, t}\right)\left(\sum_{t^{\prime}=t}^{T} r\left(s_{i, t'}, a_{i, t'}\right)\right)\right)} \\ {\text { 3. } \theta \leftarrow \theta+\alpha \nabla_{\theta} J(\theta)} \end{array}
其中reward to go 为

但这个reward to go有什么缺点呢?实际上这个reward to go只是估计了单个轨迹从开始的累积奖励,并不是一个期望的概念,因此方差较大。

drawing

那么应该如何改进以降低方差呢?实际上我们希望理想的reward to go是

如果我们知道,那么策略梯度便是:

在上一节我们还讲到了应该添加一个baseline,以评估当前轨迹的累积奖励就平均而言有多好,因此添加了baseline的策略梯度是:
\nabla_{\theta} J(\theta) \approx \frac{1}{N} \sum_{i=1}^{N} \sum_{t=1}^{T} \nabla_{\theta} \log \pi_{\theta}\left(a_{i, t} | s_{i, t}\right)\left(Q\left(s_{i, t}, a_{i, t}\right)-b\right) \quad; \text{true reward to go + baseline}
那么这个baseline如何决定呢?因为我们使用的是,那么理所应当减去的也应该是 。因此,最终Actor Critic的策略梯度为:

接下来我们要做的便是如何得到?

Estimate advantage

为了得到 advantage,我们可以直接拟合 ,但是通常不这么做,因为如果我们 具有下面的关系:
\begin{aligned} Q^{\pi}\left(s_{t}, a_{t}\right)&=r\left(s_{t}, a_{t}\right)+\mathbb{E}_{s_{t+1} \sim p\left(s_{t+1} | s_{t}, a_{t}\right)}\left[V^{\pi}\left(s_{t+1}\right)\right] \\ &\approx r\left(\mathbf{s}_{t}, \mathbf{a}_{t}\right)+V^{\pi}\left(\mathbf{s}_{t+1}\right) \quad; \text{unbiased, a little variance}\\ \end{aligned}

于是,advantage 可以通过这种方式近似求出:

这样 只是 的函数,而 是 的函数,所以如果拟合 ,参数更少,更容易拟合,也更方便。

所以基于上面的分析,我们的思路是这样的:我们有一个神经网络,输入是 , 输出是 ,下面就是如何训练这样一个神经网络。


Policy evaluation

进行policy evaluation 有两种方式,一种是Monte Carlo,另一种是temporal difference。

Monte Carlo Evaluation

接下来就是如何拟合,这个步骤称之为 Policy evaluation,因为这个网络做的是给定一个s,输出,我们不考虑 Policy Improvement步骤。下面是 的定义:

如果我们拟合得到了 ,那么根据RL目标函数的定义 ,我们也顺便得到了目标函数的表达式,岂不美哉?

那么如何获得训练目标数据呢?可以有下面两种方式:
\begin{aligned} V^{\pi}\left(s_{t}\right) &\approx \sum_{t^{\prime}=t}^{T} r\left(s_{t^{\prime}}, a_{t^{\prime}}\right) \quad; \text{single sample} \\ V^{\pi}\left(\mathbf{s}_{t}\right) &\approx \frac{1}{N} \sum_{i=1}^{N} \sum_{l^{\prime}=t}^{T} r\left(\mathbf{s}_{t^{\prime}}, \mathbf{a}_{t^{\prime}}\right) \quad; \text{multiple samples, requires us to reset the simulator} \end{aligned}
第二种方式明显更好一点,其方差更小,但是其要求环境能够重置到特定的状态来进行采样。

于是我们的训练数据和损失函数就可以表达为:
\text{training data: }\Big\{ \Big(\mathbf{s}_{i, t}, \underbrace{\sum_{t^{\prime}=t}^{T} r\left(\mathbf{s}_{i, t^{\prime}}, \mathbf{a}_{i, t^{\prime}}\right)}_{y_{i,t}}\Big)\Big\} \\ \text{supervised regression: } \mathcal{L}(\phi)=\frac{1}{2} \sum_{i}\left\|\hat{V}_{\phi}^{\pi}\left(\mathbf{s}_{i}\right)-y_{i}\right\|^{2}

Temporal Difference

下面对我们的真实标签 进行近似:
\begin{aligned} y_{i, t}&=\sum_{t^{\prime}=t}^{T} \mathbb{E}_{\pi_{\theta}}\left[r\left(\mathbf{s}_{t^{\prime}}, \mathbf{a}_{t^{\prime}}\right) | \mathbf{s}_{i, t}\right] \\ &\approx r\left(\mathbf{s}_{i, t}, \mathbf{a}_{i, t}\right)+\sum_{t^{\prime}=t+1}^{T} \mathbb{E}_{\pi_{\theta}}\left[r\left(\mathbf{s}_{t^{\prime}}, \mathbf{a}_{t^{\prime}}\right) | \mathbf{s}_{i, t+1}\right] \\ &= r\left(\mathbf{s}_{i, t}, \mathbf{a}_{i, t}\right)+V^{\pi}\left(\mathbf{s}_{i, t+1}\right) \\ &\approx r\left(\mathbf{s}_{i, t}, \mathbf{a}_{i, t}\right)+\hat{V}_{\Phi}^{\pi}\left(\mathbf{s}_{i, t+1}\right) \end{aligned}

所以,进行了上面的两层近似,我们还可以使用 作为真实标签的近似,因此我们的训练数据如下:

这种方式也叫做 bootstrapped estimate。

总结一下,最终的 Batch Actor-Critic algorithm 如下:

  1. (MC or Bootstrap)
  2. {\text {evaluate } \hat{A}^{\pi}\left(\mathbf{s}_{i}, \mathbf{a}_{i}\right)=r\left(\mathbf{s}_{i}, \mathbf{a}_{i}\right)+\hat{V}_{\phi}^{\pi}\left(\mathbf{s}_{i}^{\prime}\right)-\hat{V}_{\phi}^{\pi}\left(\mathbf{s}_{i}\right)}

discont factors

如果 T 是无穷大,那 就会变得无穷大,一种方法就是引入折扣因子 ,那么

注意到 ,而当我们加上 之后,,因此可以认为添加了一个以概率 进入的死亡状态 ,进入死亡状态就没有奖励了。因此可以认为 没有改变MDP框架,只是改变了环境的转移概率 。

drawing

  1. option 1:
    \nabla_{\theta} J(\theta) \approx \frac{1}{N} \sum_{i=1}^{N} \sum_{t=1}^{T} \nabla_{\theta} \log \pi_{\theta}\left(\mathbf{a}_{i, t} | \mathbf{s}_{i, t}\right)\left(\sum_{t^{\prime}=t}^{T} \gamma^{t^{\prime}-t} r\left(\mathbf{s}_{i, t^{\prime}}, \mathbf{a}_{i, t^{\prime}}\right)\right) \quad; \text{reward to go 加上gamma最自然的方式}

  2. option 2:

\begin{aligned} \nabla_{\theta} J(\theta) &\approx \frac{1}{N} \sum_{i=1}^{N}\sum_{t=1}^{T} \nabla_{\theta} \log \pi_{\theta}\left(\mathbf{a}_{i, t} | \mathbf{s}_{i, t}\right)\left(\sum_{t'=t}^{T} \gamma^{t'-1} r\left(\mathbf{s}_{i, t'}, \mathbf{a}_{i, t'}\right)\right) \quad; \text{reward to go 加上 gamma 的另一种方式} \\ &=\frac{1}{N} \sum_{i=1}^{N} \sum_{t=1}^{T} \gamma^{t-1} \nabla_{\theta} \log \pi_{\theta}\left(\mathbf{a}_{i, t} | \mathbf{s}_{i, t}\right)\left(\sum_{t^{\prime}=t}^{T} \gamma^{t^{\prime}-t} r\left(\mathbf{s}_{i, t^{\prime}}, \mathbf{a}_{i, t^{\prime}}\right)\right) \\ \end{aligned}

option1 只对后面的奖励进行了折扣,option2不仅对奖励进行折扣,对梯度也进行了折扣。option1是我们在实际中使用的,option2的直觉含义是说:如果你遇到了死亡状态,那么后面的steps就不重要了。

discount factor 实际上也是一种降低方差的方式。

Actor-critic Algorithm design

  1. (MC or Bootstrap)
  2. {\text {evaluate } \hat{A}^{\pi}\left(\mathbf{s}_{i}, \mathbf{a}_{i}\right)=r\left(\mathbf{s}_{i}, \mathbf{a}_{i}\right)+\gamma \hat{V}_{\phi}^{\pi}\left(\mathbf{s}_{i}^{\prime}\right)-\hat{V}_{\phi}^{\pi}\left(\mathbf{s}_{i}\right)}

  1. .

但是这里的online actor-critic在实际中使用还有一些问题。方差大

Architecture design

实现actor-critic的网络架构有两种:

  • 分别使用两个网络,容易训练一点,不需要调很多参数,但是比较慢。

  • 使用共享的网络,这样如果输入的state是图像的话,可以共享某些特征信息。但是训练起来比较困难,因为共享网络存在两种梯度,分别对应于不同的单元。所以想让网络的更新稳定一些,需要在调参上多下功夫,例如网络参数的初始化以及学习率的设置上。

Lower the variance of online actor-critic algorithm

  1. .

online actor-critic 的一个缺点就是在对 做更新的时候使用的是单个样本,因此方差较大。所以一种改善的方法就是构造更大的batch。有两种方式:

  • 左图中表示同时有4个并行的进程同时采样,每次得到batch size=4个,然后分别计算4个梯度并相加,用来更新,注意这种同步采样,同步更新参数。
  • 右图表示有3个异步的进程,每次计算完梯度,送到一个central parameter server,然后central parameter server累积一定timesteps的梯度,然后再更新参数,接着把新参数送给每一个进程。

Conclusion on estimating advantage

现在总结一下,我们讨论了actor-critic,并将其与policy gradient相比较:

  • actor-critic
    • \nabla_{\theta} J(\theta) \approx \frac{1}{N} \sum_{i=1}^{N} \sum_{t=1}^{T} \nabla_{\theta} \log \pi_{\theta}\left(\mathbf{a}_{i, t} | \mathbf{s}_{i, t}\right) \underbrace{\left(r\left(\mathbf{s}_{i, t}, \mathbf{a}_{i, t}\right)+\gamma \hat{V}_{\phi}^{\pi}\left(\mathbf{s}_{i, t+1}\right)-\hat{V}_{\phi}^{\pi}\left(\mathbf{s}_{i, t}\right)\right)}_{\hat{A}_C}
    • low variance
    • biased (if the critic is not perfect)
  • policy gradient
    • \nabla_{\boldsymbol{\theta}} J(\boldsymbol{\theta}) \approx \frac{1}{N} \sum_{i=1}^{N} \sum_{t=1}^{T} \nabla_{\boldsymbol{\theta}} \log \pi_{\theta}\left(\mathbf{a}_{i, t} | \mathbf{s}_{i, t}\right)\left(\left(\sum_{t^{\prime}=t}^{T} \gamma^{t^{\prime}-t} r\left(\mathbf{s}_{i, t^{\prime}}, \mathbf{a}_{i, t^{\prime}}\right)\right)-b\right)
    • high variacne
    • no bias

state-dependent baseline

简单的actor-critic方差小,但实际上是biased,而policy gradient虽然没有bias,但是具有较大的方差。所以思考可不可以把这两种方式结合起来,提出一种一种既没有bias,方差也较小的版本呢?下面就是一种符合上述要求的版本:

\nabla_{\theta} J(\theta) \approx \frac{1}{N} \sum_{i=1}^{N} \sum_{t=1}^{T} \nabla_{\theta} \log \pi_{\theta}\left(\mathbf{a}_{i, t} | \mathbf{s}_{i, t}\right) \underbrace{\left(\left(\sum_{t'=t}^{T} \gamma^{t^{\prime}-t} r\left(\mathbf{s}_{i, t^{\prime}}, \mathbf{a}_{i, t^{\prime}}\right)\right)-\hat{V}_{\phi}^{\pi}\left(\mathbf{s}_{i, t}\right)\right)}_{\hat{A}_{MC}}

下面说明为什么上面的版本在累积奖励中减去一个state-dependent baseline是无偏差的。

首先注意到:

令 是一个依赖于的baseline,因为期望条件依赖于,因此我们有:
\mathbb{E}_{a_{t}\left|s_{t}\right.}\left[b\left(s_{t}\right) \nabla_{\theta} \log \pi\left(a_{t} | s_{t}\right)\right]=b\left(s_{t}\right) \mathbb{E}_{a_{t} | s_{t}}\left[\nabla_{\theta} \log \pi\left(a_{t} | s_{t}\right)\right]=0
因此,我们可以从累积奖励中减去一个依赖于状态的baseline不会改变策略梯度的期望。

n-step returns & GAE

现在总结几种构造估计 advantage 的方式:

  • \hat{A}_{\mathrm{C}}^{\pi}\left(\mathbf{s}_{t}, \mathbf{a}_{t}\right)=r\left(\mathbf{s}_{t}, \mathbf{a}_{t}\right)+\gamma \hat{V}_{\phi}^{\pi}\left(\mathbf{s}_{t+1}\right)-\hat{V}_{\phi}^{\pi}\left(\mathbf{s}_{t}\right)

    • higher bias if value is wrong(it always is)
    • low variance
    • no bias
    • high variance
  • \hat{A}_{\mathrm{MC}}^{\pi}\left(\mathbf{s}_{t}, \mathbf{a}_{t}\right)=\sum_{t^{\prime}=t}^{\infty} \gamma^{t^{\prime}-t} r\left(\mathbf{s}_{t^{\prime}}, \mathbf{a}_{t^{\prime}}\right)-\hat{V}_{\phi}^{\pi}\left(\mathbf{s}_{t}\right)

    • no bias
    • medium variance
    • 与 的结合
  • \hat{A}_{\mathrm{n}}^{\pi}\left(\mathbf{s}_{t}, \mathbf{a}_{t}\right)=\sum_{t^{\prime}=t}^{t+n} \gamma^{t^{\prime}-t} r\left(\mathbf{s}_{t^{\prime}}, \mathbf{a}_{t^{\prime}}\right)+\gamma ^n\hat{V}^\pi_\phi(s_{t+n})-\hat{V}_{\phi}^{\pi}\left(\mathbf{s}_{t}\right)

    • low bias
    • low variance
    • drawing
    • low bias
    • low variance

Generalized advantage estimation

\begin{array}{ll}{\hat{A}_{t}^{(1)} :=\delta_{t}^{V}} & {=-V\left(s_{t}\right)+r_{t}+\gamma V\left(s_{t+1}\right)} \\ {\hat{A}_{t}^{(2)} :=\delta_{t}^{V}+\gamma \delta_{t+1}^{V}} & {=-V\left(s_{t}\right)+r_{t}+\gamma r_{t+1}+\gamma^{2} V\left(s_{t+2}\right)} \\ {\hat{A}_{t}^{(3)} :=\delta_{t}^{V}+\gamma \delta_{t+1}^{V}+\gamma^{2} \delta_{t+2}^{V}} & {=-V\left(s_{t}\right)+r_{t}+\gamma r_{t+1}+\gamma^{2} r_{t+2}+\gamma^{3} V\left(s_{t+3}\right)}\\ \hat{A}_{t}^{(k)} :=\sum_{l=0}^{k-1} \gamma^{l} \delta_{t+l}^{V}&=-V\left(s_{t}\right)+r_{t}+\gamma r_{t+1}+\cdots+\gamma^{k-1} r_{t+k-1}+\gamma^{k} V\left(s_{t+k}\right) \\ &\vdots \\ \hat{A}_{t}^{(\infty)}=\sum_{l=0}^{\infty} \gamma^{l} \delta_{t+l}^{V}&=-V\left(s_{t}\right)+\sum_{l=0}^{\infty} \gamma^{l} r_{t+l} \end{array}

从 到 bias 越来越小,但是variance越来越大。现在给每一个 加上一个权重 ,就得到
\begin{aligned} \hat{A}_{t}^{\operatorname{GAE}(\gamma, \lambda)} & :=(1-\lambda)\left(\hat{A}_{t}^{(1)}+\lambda \hat{A}_{t}^{(2)}+\lambda^{2} \hat{A}_{t}^{(3)}+\ldots\right) \\ &=(1-\lambda)\left(\delta_{t}^{V}+\lambda\left(\delta_{t}^{V}+\gamma \delta_{t+1}^{V}\right)+\lambda^{2}\left(\delta_{t}^{V}+\gamma \delta_{t+1}^{V}+\gamma^{2} \delta_{t+2}^{V}\right)+\ldots\right) \\ &=(1-\lambda)\left(\delta_{t}^{V}\left(1+\lambda+\lambda^{2}+\ldots\right)+\gamma \delta_{t+1}^{V}\left(\lambda+\lambda^{2}+\lambda^{3}+\ldots\right)\right. +\gamma^{2} \delta_{t+2}^{V}\left(\lambda^{2}+\lambda^{4}+\lambda^{4}+\ldots\right)+\ldots ) \\ &=(1-\lambda)\left(\delta_{t}^{V}\left(\frac{1}{1-\lambda}\right)+\gamma \delta_{t+1}^{V}\left(\frac{\lambda}{1-\lambda}\right)+\gamma^{2} \delta_{t+2}^{V}\left(\frac{\lambda^{2}}{1-\lambda}\right)+\ldots\right) \\ &=\sum_{l=0}^{\infty}(\gamma \lambda)^{l} \delta_{t+l}^{V} \end{aligned}

你可能感兴趣的:(CS294 Lecture 6-Actor Critic)