文章目录

  • 一、前言
  • 二、策略梯度回顾
  • 三、深度Q网络回顾
  • 四、优势演员-评论员算法
  • 五、异步优势演员-评论员算法
  • 六、路径衍生策略梯度
  • 七、与生成对抗网络的联系
  • 八、关键词总结
  • 九、习题
  • 十、面试题

一、前言

  • 演员-评论员算法是一种结合策略梯度和时序差分学习的强化学习方法
  • 演员是指策略函数 π θ ( a ∣ s ) \pi_\theta(a \mid s) πθ​(a∣s) ,即学习一个策略以得到尽可能高的回报。
  • 评论员是指价值函数 V π ( s ) V_\pi(s) Vπ​(s) ,对当前策略的值函数进行估计,即评估演员的好坏。
  • 借助于价值函数,演员-评论员算法可以进行单步参数更新,不需要等到回合结束才进行更新。
  • 在演员-评论员算法里面,最知名的算法就是异步优势演员-评论员算法。如果我们去掉异步,则为优势演员-评论员 (advantage actor-critic,A2C) 算法。如果我们加了异步,变成异步优势演员-评论员算法。

二、策略梯度回顾

我们复习一下策略梯度,在更新策略参数 θ \theta θ 的时候,我们可以通过
∇ R ˉ θ ≈ 1 N ∑ n − 1 N ∑ t − 1 T n ( ∑ t ′ − t T n γ t ′ − t r t ′ n − b ) ∇ log ⁡ p θ ( a t n ∣ s t n ) \nabla \bar{R}_\theta \approx \frac{1}{N} \sum_{n-1}^N \sum_{t-1}^{T_n}\left(\sum_{t^{\prime}-t}^{T_n} \gamma^{t^{\prime}-t} r_{t^{\prime}}^n-b\right) \nabla \log p_\theta\left(a_t^n \mid s_t^n\right) ∇Rˉθ​≈N1​n−1∑N​t−1∑Tn​​(t′−t∑Tn​​γt′−trt′n​−b)∇logpθ​(atn​∣stn​)
来计算梯度。上式表示我们首先通过智能体与环境的交互。

  • 可以计算出在某一个状态 s s s 采取某一个动作 a a a 的概率 p θ ( a t ∣ s t ) p_\theta\left(a_t \mid s_t\right) pθ​(at​∣st​) 。
  • 接下来,我们计算在某一个状态 s s s 采取某一个动作 a a a 之后直到游戏结束的累积奖励。
  • ∑ t ′ − t T n γ t ′ − t r t ′ n \sum_{t^{\prime}-t}^{T_n} \gamma^{t^{\prime}-t} r_{t^{\prime}}^n ∑t′−tTn​​γt′−trt′n​ 表示我们把从时间 t t t 到时间 T T T 的奖励相加,并且在前面乘一个折扣因子,通常将折扣因子 设置为 0.9 0.9 0.9 或 0.99 0.99 0.99 等数值
  • 与此同时也会减去一个基线值 b b b ,减去值 b b b 的目的是希望括号里面这一项是有正有负的。如果括号里面这一项是正的,我们就要增大在这个状态采取这个动作的概率; 如果括号里面是负的,我们就要减小在这个状态采取这个动作的概率。

我们使用 G G G 表示累积奖励, G G G 是非常不稳定的。因为交互的过程本身具有随机性,所以在某一个状态 s s s 采 取某一个动作 a a a 时计算得到的累积奖励,每次结果都是不同的,因此 G G G 是一个随机变量。对于同样的状态 s s s 和同样的动作 a , G a , G a,G 可能有一个固定的分布。但由于我们采取采样的方式,因此我们在某一个状态 s s s 采取 某一个动作 a a a 一直到游戏结束,统计一共得到了多少的奖励,我们就把它当作 G G G 。

如下图所示,如果我们把 G G G 想成一个随机变量,实际上是在对 G G G 做采样,用这些采样的结果去更新参数。但实际上在某一个状态 s s s 采取某一个动作 a a a ,接下来会发生什么事,其本身是有随机性的。虽然说有一个固定的分布,但其方差可能会非常大。智能体在同一个状态采取同一个动作时,最后得到的结果可能会是很不一样的。当然,假设我们在每次更新参数之前,都可以采样足够多次,那当然就没有以上的问题了。但 我们每次做策略梯度,每次更新参数之前都要做一些采样时,采样的次数是不可能太多的,我们只能够做非常少量的采样。如果我们正好采样到差的结果,比如采样到 G = 100 G=100 G=100 、采样到 G = − 10 G=-10 G=−10 ,显然结果会是很差的。

三、深度Q网络回顾

Q:我们能不能让整个训练过程变得稳定,能不能直接估测随机变量 G G G 的期望值?
A: 我们直接用一个网络去估测在状态 s s s 采取动作 a a a 时 G G G 的期望值。如果这样是可行的,那么在随后的训 练中我们就用期望值代替采样的值,这样就会让训练变得更加稳定。

Q:怎么使用期望值代替采样的值呢?
A: 这里就需要引入基于价值的 (value-based) 的方法。基于价值的方法就是 深度 Q \mathrm{Q} Q 网络。深度 Q \mathrm{Q} Q 网络有两 种函数,有两种评论员。如下图所示,第一种评论员是 V π ( s ) V_\pi(s) Vπ​(s) 。即假设演员的策略是 π \pi π ,使用 π \pi π 与环境交 互,当智能体看到状态 s s s 时,接下来㽧积奖励的期望值是多少。第二种评论员是 Q π ( s , a ) Q_\pi(s, a) Qπ​(s,a) 。 Q π ( s , a ) Q_\pi(s, a) Qπ​(s,a) 把 s s s 与 a a a 当作输入,它表示在状态 s s s 采取动作 a a a ,接下来用策略 π \pi π 与环境交互,累积奖励的期望值是多少。 V π V_\pi Vπ​ 接收输入 s s s ,输出一个标量。 Q π Q_\pi Qπ​ 接收输入 s s s ,它会给每一个 a a a 都分配一个 Q \mathrm{Q} Q 值。


四、优势演员-评论员算法

如下图所示,随机变量 G G G 的期望值正好就是 Q 值,即
E [ G t n ] = Q π θ ( s t n , a t n ) \mathbb{E}\left[G_t^n\right]=Q_{\pi_\theta}\left(s_t^n, a_t^n\right) E[Gtn​]=Qπθ​​(stn​,atn​)
此也为 Q \mathrm{Q} Q 函数的定义。 Q \mathrm{Q} Q 函数的定义就是在某一个状态 s s s ,采取某一个动作 a a a ,假设策略是 π \pi π 的情况下所能 得到的累积奖励的期望值,即 G G G 的期望值。累积奖励的期望值就是 G G G 的期望值。所以假设用 E [ G t n ] \mathbb{E}\left[G_t^n\right] E[Gtn​] 来代 表 ∑ t ′ − t T n γ t ′ − t r t ′ η \sum_{t^{\prime}-t}^{T_n} \gamma^{t^{\prime}-t} r_{t^{\prime}}^\eta ∑t′−tTn​​γt′−trt′η​ 这一项,把Q函数套在这里就结束了,我们就可以把演员与评论员这两个方法结合起来

有不同的方法表示基线,一个常见的方法是用价值函数 V π θ ( s t n ) V_{\pi \theta}\left(s_t^n\right) Vπθ​(stn​) 来表示基线。价值函数的定义为,假设策略是 π \pi π ,其在某个状态 s s s 一直与环境交互直到游戏结束,期望奖励有多大。 V π θ ( s t n ) V_{\pi_\theta}\left(s_t^n\right) Vπθ​​(stn​) 没有涉及动作, Q π θ ( s t n , a t n ) Q_{\pi \theta}\left(s_t^n, a_t^n\right) Qπθ​(stn​,atn​) 涉及动作。 V π θ ( s t n ) V_{\pi_\theta}\left(s_t^n\right) Vπθ​​(stn​) 是 Q π θ ( s t n , a t n ) Q_{\pi \theta}\left(s_t^n, a_t^n\right) Qπθ​(stn​,atn​) 的期望值, Q π θ ( s t n , a t n ) − V π θ ( s t n ) Q_{\pi \theta}\left(s_t^n, a_t^n\right)-V_{\pi_\theta}\left(s_t^n\right) Qπθ​(stn​,atn​)−Vπθ​​(stn​) 会有正有负,所 以 ∑ t ′ − t T n γ t ′ − t r t ′ n − b \sum_{t^{\prime}-t}^{T_n} \gamma^{t^{\prime}-t} r_{t^{\prime}}^n-b ∑t′−tTn​​γt′−trt′n​−b 这一项就会有正有负。所以我们就把策略梯度里面 ∑ t ′ − t T n γ t ′ − t r t ′ n − b \sum_{t^{\prime}-t}^{T_n} \gamma^{t^{\prime}-t} r_{t^{\prime}}^n-b ∑t′−tTn​​γt′−trt′n​−b 这一项换成了优势函数 A θ ( s t n , a t n ) A^\theta\left(s_t^n, a_t^n\right) Aθ(stn​,atn​) ,即 Q π θ ( s t n , a t n ) − V π θ ( s t n ) Q_{\pi \theta}\left(s_t^n, a_t^n\right)-V_{\pi_\theta}\left(s_t^n\right) Qπθ​(stn​,atn​)−Vπθ​​(stn​) 。因此该算法称为优势演员-评论员算法。

如果我们这么实现,有一个缺点,即我们需要估计两个网络 : Q Q Q 网络和 V \mathrm{V} V 网络,估计不准的风险就变成原来的两倍。所以我们何不只估计一个网络呢? 事实上,在演员-评论员算法中,我们可以只估计网络 V \mathrm{V} V ,并利用 V V V 的值来表示 Q Q Q 的值, Q π ( s t n , a t n ) Q_\pi\left(s_t^n, a_t^n\right) Qπ​(stn​,atn​) 可以写成 r t n + V π ( s t + 1 n ) r_t^n+V_\pi\left(s_{t+1}^n\right) rtn​+Vπ​(st+1n​) 的期望值,即
Q π ( s t n , a t n ) = E [ r t n + V π ( s t + 1 n ) ] Q_\pi\left(s_t^n, a_t^n\right)=\mathbb{E}\left[r_t^n+V_\pi\left(s_{t+1}^n\right)\right] Qπ​(stn​,atn​)=E[rtn​+Vπ​(st+1n​)]
在状态 s s s 采取动作 a a a ,我们会得到奖励 r r r ,进入状态 s t + 1 s_{t+1} st+1​ 。但是我们会得到什么样的奖励 r r r ,进入什么样的 状态 s t + 1 s_{t+1} st+1​ ,这件事本身是有随机性的。所以要把 r t n + V π ( s t + 1 n ) r_t^n+V_\pi\left(s_{t+1}^n\right) rtn​+Vπ​(st+1n​) 取期望值才会等于Q函数的值。但我们现在把取期望值去掉,即
Q π ( s t n , a t n ) = r t n + V π ( s t + 1 n ) Q_\pi\left(s_t^n, a_t^n\right)=r_t^n+V_\pi\left(s_{t+1}^n\right) Qπ​(stn​,atn​)=rtn​+Vπ​(st+1n​)
我们就可以把Q函数的值用 r t n + V π ( s t + 1 n ) r_t^n+V_\pi\left(s_{t+1}^n\right) rtn​+Vπ​(st+1n​) 取代,可得
r t n + V π ( s t + 1 n ) − V π ( s t n ) r_t^n+V_\pi\left(s_{t+1}^n\right)-V_\pi\left(s_t^n\right) rtn​+Vπ​(st+1n​)−Vπ​(stn​)
把取期望值去掉的好处就是我们不需要估计 Q Q Q 了,只需要估计 V V V 。但与此同时我们会引入一个随机的参数 r r r 。 r r r 是有随机性的,它是一个随机变量,但是 r r r 相较于累积奖励 G G G 是一个较小的值,因为它是某一个步骤得到的奖励,而 G G G 是所有末来会得到的奖励的总和, G G G 的方差比较大。 r r r 虽然也有一些方差,但它的方差 比 G G G 的要小。所以把原来方差比较大的 G G G 换成方差比较小的 r r r 也是合理的。

Q \mathrm{Q} Q :为什么我们可以直接把取期望值去掉?
A: 原始的异步优势演员-评论员算法的论文尝试了各种方法,最后发现这个方法最好。当然有人可能会有疑问,说不定估计 Q Q Q 和 V V V 也可以估计得很好,但实际做实验的时候,最后结果就是这个方法最好,所以后来大家都使用了这个方法。
优势演员-评论员算法的流程如下图所示,我们有一个 π \pi π ,有个初始的演员与环境交互,先收集资料。在策略梯度方法里收集资料以后,就来更新策略。但是在演员-评论员算法里面,我们不是直接使用那些资料来 更新策略。我们先用这些资料去估计价值函数,可以用时序差分方法或蒙特卡洛方法来估计价值函数。接下来,我们再基于价值函数,使用下式更新 π \pi π 。
∇ R ˉ θ ≈ 1 N ∑ n − 1 N ∑ t − 1 T n ( r t n + V π ( s t + 1 n ) − V π ( s t n ) ) ∇ log ⁡ p θ ( a t n ∣ s t n ) \nabla \bar{R}_\theta \approx \frac{1}{N} \sum_{n-1}^N \sum_{t-1}^{T_n}\left(r_t^n+V_\pi\left(s_{t+1}^n\right)-V_\pi\left(s_t^n\right)\right) \nabla \log p_\theta\left(a_t^n \mid s_t^n\right) ∇Rˉθ​≈N1​n−1∑N​t−1∑Tn​​(rtn​+Vπ​(st+1n​)−Vπ​(stn​))∇logpθ​(atn​∣stn​)
有了新的 π \pi π 以后,再与环境交互,收集新的资料,去估计价值函数。再用新的价值函数更新策略,更新演员。整个优势演员-评论员算法就是这么运作的。


实现优势演员-评论员算法的时候,有两个一定会用到的技巧。

  • 第一个技巧是,我们需要估计两个网络: V V V 网络和策略的网络(也就是演员)。评论员网络 V π ( s ) V_\pi(s) Vπ​(s) 接收一个状态,输出一个标量。演员的策略 π ( s ) \pi(s) π(s) 接 收一个状态,如果动作是离散的,输出就是一个动作的分布。如果动作是连续的,输出就是一个连续的向量
    下图所示为离散动作的例子,连续动作的情况也是一样的。输入一个状态,网络决定现在要采取哪一个动 作。演员网络和评论员网络的输入都是 s s s ,所以它们前面几个层 (layer) 是可以共享的

    尤其当我们在玩雅达利游戏时,输入都是图像。输入的图像非常复杂,通常我们在前期都会用一些卷积神经网络来处理它们,把图像抽象成高级(high level) 的信息。把像素级别的信息抽象成高级信息的特征提取 器,对于演员与评论员来说是可以共用的。所以通常我们会让演员与评论员共享前面几层,并且共用同一组 参数,这一组参数大部分都是卷积神经网络的参数。先把输入的像素变成比较高级的信息,再让演员决定要 采取什么样的动作,让评论员即价值函数计算期望奖励。

  • 第二个技巧是我们需要探索的机制。在演员-评论员算法中,有一个常见的探索的方法是对 π \pi π 输出的分布设 置一个约束。这个约束用于使分布的熵 (entropy) 不要太小,也就是希望不同的动作被采用的概率平均一 些。这样在测试的时候,智能体才会多尝试各种不同的动作,才会把环境探索得比较好,从而得到比较好的 结果


五、异步优势演员-评论员算法

异步优势演员-评论员算法同时使用很多个进程(worker),每一个进程就像一个影分身,最后这些影分身会把所有的经验值集合在一起。如果我们没有很多 CPU,不好实现异步优势演员-评论员算法,但可以实现优势演员-评论员算法。

异步优势演员-评论员算法的运作流程,如下图所示,异步优势演员-评论员算法一开始有一个全局网络 (global network)全同网络包含策略网络和价值网络,这两个网络是绑定(tie)在一起的,它们的前几 个层会被绑在一起。假设全局网络的参数是 θ 1 \theta_1 θ1​ ,我们使用多个进程,每个进程用一张 CPU 去跑。比如我们有 8 个进程,则至少 8 张 CPU。每一个进程在工作前都会把全局网络的参数复制过来。接下来演员就与环境 交互,每一个演员与环境交互的时候,都要收集到比较多样的数据。例如,如果是走迷宫,可能每一个演员 起始的位置都会不一样,这样它们才能够收集到比较多样的数据。每一个演员与环境交互完之后,我们就会计算出梯度。计算出梯度以后,要用梯度去更新参数。我们就计算一下梯度,用梯度去更新全同网络的参 数。就是这个进程算出梯度以后,就把梯度传回给中央的控制中心,中央的控制中心就会用这个梯度去更新 原来的参数

注意,A3C使用了平行探索的方法,所有的演员都是平行跑的,每一个演员各做各的,不管彼此。所以每个 演员都是去要了一个参数以后,做完就把参数传回去。当第一个进程做完想要把参数传回去的时候,本来它要的参数是 θ 1 \theta_1 θ1​ ,等它要把梯度传回去的时候,可能别人已经把原来的参数覆盖掉,变成 θ 2 \theta_2 θ2​ 了。但是没有关 系,它一样会把这个梯度就覆盖过去。


六、路径衍生策略梯度

接下来我们来了解路径衍生策略梯度(pathwise derivative policy gradient)方法。这个方法可以看成 深度Q网络 解连续动作的一种特别的方法,也可以看成一种特别的演员-评论员的方法

用动漫《棋魂》来比喻,阿光就是一个演员,佐为就是一个评论员。阿光落某一子以后,如果佐为是一般的演员-评论员算法的评论员,他会告诉阿光这时候不应该下小马步飞。佐为会告诉我们,我们现在采取的这一步算出来的值到底是好还是不好,但这样就结束了,他只告诉我们好还是不好。因为一般的演员-评论员算法的评论员就是输入状态或输入状态-动作对,给演员一个值,所以对演员来说,它只知道它做的这个动作到底是好还是不好

在路径衍生策略梯度里面,评论员会直接告诉演员采取什么样的动作才是好的。所以佐为不只是告诉阿光,这个时候不要下小马步飞,同时还告诉阿光这个时候应该要下大马步飞,这就是路径衍生策略梯度中的评论员所做的。评论员会直接告诉演员做什么样的动作才可以得到比较大的值

从深度 Q \mathrm{Q} Q 网络 的观点来看,深度 Q \mathrm{Q} Q 网络的一个问题是在使用 深度 Q \mathrm{Q} Q 网络时,考虑连续向量会比较麻烦,没有通用的解决方法 (general solution),那我们应该怎么解这个优化问题呢?

我们用一个演员来解决这个优 化的问题。本来在深度 Q \mathrm{Q} Q 网络 里面,如果是一个连续的动作,我们要解决这个优化问题。但是现在这个优化 问题由演员来解决,假设演员就是一个解决者(solver),这个解决者的工作就是对于给定的状态 s s s ,解出 来哪一个动作可以得到最大的 Q Q Q 值,这是从另外一个观点来看路径衍生策略梯度

在生成对抗网络中也有 类似的说法。我们学习一个判别器 (discriminator) 并用于评估时,是非常困难的,因为我们要解决的 arg max ⁡ \max max 的问题非常的困难,所以用生成器 (generator) 来生成。所以概念是一样的, Q Q Q 就是那个判别器。根据 这个判别器决定动作非常困难,怎么办? 另外学习一个网络来解决这个优化问题,这个网络就是演员。所以 两个不同的观点是同一件事。

从两个不同的观点来看,

  • 一个观点是: 我们可以对原来的深度 Q \mathrm{Q} Q 网络加以改 进,学习一个演员来决定动作以解决 arg ⁡ max ⁡ \arg \max argmax 不好解的问题
  • 另外一个观点是: 原来的演员-评论员算法的 问题是评论员并没有给演员足够的信息,评论员只告诉演员好或不好的,没有告诉演员什么样是好,现在有新的方法可以直接告诉演员什么样的是好的

路径衍生策略梯度算法如下图所示,假设我们学习了一个Q 函数,Q函数的输入是 s s s 与 a a a ,输出是 Q π ( s , a ) Q_\pi(s, a) Qπ​(s,a) 。接下来,我们要学习一个演员,这个演员的工作就是解决 arg ⁡ \arg arg max 的问题,即输入一个状态 s s s ,希望可以输出一个动作 a 。 a a 。 a a。a 被代入Q函数以后,它可以让 Q π ( s , a ) Q_\pi(s, a) Qπ​(s,a) 尽可能大,即
π ′ ( s ) = arg ⁡ max ⁡ a Q π ( s , a ) \pi^{\prime}(s)=\underset{a}{\arg \max } Q_\pi(s, a) π′(s)=aargmax​Qπ​(s,a)

实际上在训练的时候,我们就是把 Q \mathrm{Q} Q 与演员连接起来变成一个比较大的网络。 Q \mathrm{Q} Q 是一个网络,接收输入 s s s 与 a a a ,输出一个值。演员在训练的时候,它要做的事就是接收输入 s s s ,输出 a a a 。把 a a a 代入 Q \mathrm{Q} Q 中,希望输出的值 越大越好。我们会固定住 Q Q Q 的参数,只调整演员的参数,用梯度上升的方法最大化 Q Q Q 的输出,这就是一个 生成对抗网络,即有条件的生成对抗网络(conditional GAN)。Q 就是判别器,但在强化学习里就是评论 员,演员在生成对抗网络里面就是生成器。

我们来看一下路径衍生策略梯度算法。如下图所示,一开始会有一个策略 π \pi π ,它与环境交互并估计 Q Q Q 值。 估计完 Q Q Q 值以后,我们就把 Q Q Q 值固定,只去学习一个演员。假设这个 Q Q Q 值估得很准,它知道在某一个状态 采取什么样的动作会得到很大的Q值。接下来就学习这个演员,演员在给定 s s s 的时候,采取了 a a a ,可以让最 后Q函数算出来的值越大越好。我们用准则(criteria) 去更新策略 π \pi π ,用新的 π \pi π 与环境交互,再估计 Q \mathrm{Q} Q 值, 得到新的 π \pi π 去最大化 Q \mathrm{Q} Q 值的输出

深度 Q \mathrm{Q} Q 网络 里面的技巧,在这里也几乎都用得上,比如经验回放、探索等技巧。


下图所示为原来深度 Q \mathrm{Q} Q 网络的算法。

  • 我们有一个 Q \mathrm{Q} Q 函数 Q Q Q 和另外一个目标 Q \mathrm{Q} Q 函数 Q ^ \hat{Q} Q^​ 。
  • 每一次训练,在每一 个回合的每一个时间点,我们会看到一个状态 s t s_t st​ ,会采取某一个动作 a t a_t at​ 。至于采取哪一个动作是由 Q \mathrm{Q} Q 函数所 决定的。如果是离散动作,我们看哪一个动作 a a a 可以让 Q \mathrm{Q} Q 值最大,就采取哪一个动作。
  • 当然,我们需要加 一些探索,这样表现才会好。我们会得到奖励 r t r_t rt​ ,进入新的状态 s t + 1 s_{t+1} st+1​ ,然后把 ( s t , a t , r t , s t + 1 ) \left(s_t, a_t, r_t, s_{t+1}\right) (st​,at​,rt​,st+1​) 放到回放缓 冲区里。
  • 接下来,我们会从回放缓冲区中采样一个批量的数据,在这个批量数据里面,可能某一笔数据是 ( s i , a i , r i , s i + 1 ) \left(s_i, a_i, r_i, s_{i+1}\right) (si​,ai​,ri​,si+1​) 。
  • 接下来我们会算一个目标 y , y = r i + max ⁡ a Q ^ ( s i + 1 , a ) y , y=r_i+\max _a \hat{Q}\left(s_{i+1}, a\right) y,y=ri​+maxa​Q^​(si+1​,a) 。怎么学习 Q \mathrm{Q} Q 呢? 我们希望 Q ( s i , a i ) Q\left(s_i, a_i\right) Q(si​,ai​) 与 y y y 越接近越好,这是一个回归问题,最后每 C C C 步,要用 Q Q Q 替代 Q ^ \hat{Q} Q^​ 。

接下来我们把深度 Q Q Q 网络 改成路径衍生策略梯度,需要做 4 个改变,如下图所示:

  • 第一个改变是,我们要把 Q Q Q 换成 θ \theta θ ,本来是用 Q Q Q 来决定在状态 s t s_t st​ 执行一个动作 a t a_t at​ ,现在直接用 θ \theta θ 来执行动作。我们直接学习了一个演员。这个演员的输入 s t s_t st​ 会告诉我们应该采取哪一个 a t a_t at​ 。所以本来输入 s t s_{t} st​采取哪一个 a t a_t at​是 Q 决定的,而在路径衍生策略梯度里面,我们会直接用 θ \theta θ来决定
  • 第二个改变是,本来我们要计算在 s i + 1 s_{i+1} si+1​ ,根据策略采取某一个动作 a a a 会得到的 Q \mathrm{Q} Q 值,我们会采取让 Q ^ \hat{Q} Q^​ 最大的那个动作 a 。  a_{\text {。 }} a。 ​ 现在因为我们直接把 s i + 1 s_{i+1} si+1​ 代入 θ \theta θ ,就会知道给定 s i + 1 s_{i+1} si+1​ ,哪个动作会给我们最大的 Q Q Q 值,就采取哪个动作。在 Q Q Q 函数里面,有两个 Q \mathrm{Q} Q 网络:真正的 Q \mathrm{Q} Q 网络和目标 Q \mathrm{Q} Q 网络。实际上我们在实现路径衍生策略梯度算法的时候,也有两个演员: 真正要学习的演员 θ \theta θ 和目标演员 θ ^ \hat{\theta} θ^ 。这个原理就与为什么要有目 标 Q Q Q 网络一样,我们在算目标值的时候,并不希望它一直的变动,所以我们会有一个目标演员和一个目标 Q Q Q 函数,它们平常的参数就是固定住的,这样可以让目标的值不会一直地变化。
    总结一下,第二个改变是我们用策略取代原来要解 arg max 的地方
  • 第三个改变是,之前只要学习 Q \mathrm{Q} Q 函数,现在我们多学习了一个 θ \theta θ ,学习 θ \theta θ 的目的是最大化 Q \mathrm{Q} Q 函数,希望得到的演员可以让 Q Q Q 函数的输出尽可能大,这与学习生成对抗网络 里面的生成器的概念是类似的。
  • 第四个改变是,我们不仅要取代目标的 Q Q Q 网络,还要取代目标策略

七、与生成对抗网络的联系

如下表所示,GAN 与演员-评论员的方法是非常类似的。如果大家感兴趣,可以参考一篇论文: “Connecting Generative Adversarial Network and Actor-Critic Methods”。

生成对抗网络与演员-评论员都挺难训练,所以在文献上就有各式各样的方法,告䜣我们怎么样可以训练 生成对抗网络。知道生 成对抗网络与演员-评论员非常相似后,我们就可以知道怎样训练演员-评论员。但是因为做生成对抗网络与演员-评论员的人是 两群人,所以这篇论文里面就列出说在生成对抗网络上面有哪些技术是有人做过的,在演员-评论员上面,有哪些技术是有人做 过的。也许训练 生成对抗网络 的技术,我们可以试着应用在演员-评论员上,在演员-评论员上用过的技术,也可以试着应用在 生成对抗网络上


八、关键词总结

  • 优势演员-评论员 (advantage actor-critic, A2C) 算法:一种改进的演员-评论员 (actor-critic) 算法。
  • 异步优势演员-评论员 (asynchronous advantage actor-critic, A3C) 算法:一种改进的演员-评论员算 法, 通过异步的操作, 实现强化学习模型训练的加速。
  • 路径衍生策略梯度 (pathwise derivative policy gradient):一种使用 Q \mathrm{Q} Q 学习来求解连续动作的算法, 也是一种演员-评论员算法。其会对演员提供价值最大的动作, 而不仅仅是提供某一个动作的好坏程度。

九、习题

9-1 完整的优势演员-评论员算法的工作流程是怎样的?
9-2 在实现演员-评论员算法的时候有哪些技巧?
9-3 异步优势演员-评论员算法在训练时有很多的进程进行异步的工作, 最后再将他们所获得的 “结 果” 集合到一起。那么其具体是如何运作的呢?
9-4 对比经典的 Q Q Q 学习算法, 路径衍生策略梯度有哪些改进之处?


十、面试题

9-1 友善的面试官:请简述一下异步优势演员-评论员算法 (A3C), 另外 A3C 是同策略还是异策略的 模型呀?
9-2 友善的面试官:请问演员-评论员算法有何优点呢?
9-3 友善的面试官:请问异步优势演员-评论员算法具体是如何异步更新的?
9-4 友善的面试官:演员-评论员算法中, 演员和评论员两者的区别是什么?
9-5 友善的面试官:演员-评论员算法框架中的评论员起了什么作用?
9-6 友善的面试官:简述异步优势演员-评论员算法的优势函数。

【EasyRL学习笔记】第九章 Actor-Critic 演员-评论员算法相关推荐

  1. 《Go语言圣经》学习笔记 第九章 基于共享变量的并发

    <Go语言圣经>学习笔记 第九章 基于共享变量的并发 目录 竞争条件 sync.Mutex互斥锁 syn.RWMutex读写锁 内存同步 syn.Once初始化 竞争条件检测 示例:并发的 ...

  2. CSAPP学习笔记——第九章 虚拟内存(一)内存陷阱

    CSAPP学习笔记--第九章 虚拟内存(一)内存陷阱 int val; ... scanf("%d", val); 引用了错误的指针,scanf将val解释为一个地址,并试图将一个 ...

  3. 学习笔记-第九章 恶意代码分析实战

    第九章 OllyDbg 1.加载恶意代码直接加载可执行文件,甚至dll程序.如果恶意代码已经在你的系统上运行,你可以通过附加进程的方式调试它.另外,ollydbg是一个灵活的调试系统,可以使用命令行选 ...

  4. 【PMP】Head First PMP 学习笔记 第九章 人力资源管理

    第九章 人力资源管理 每一个成功的项目背后都有一个伟大的团队. 4个过程 制订人力资源计划(计划过程组) 招募项目团队(执行过程组) 发展项目团队(执行过程组) 管理项目团队(执行过程组) 在制订人力 ...

  5. 第一行代码学习笔记第九章——使用网络技术

    知识点目录 9.1 WebView的用法 9.2 使用HTTP协议访问网络 * 9.2.1 使用HttpURLConnection * 9.2.2 使用OkHttp 9.3 解析XML格式数据 * 9 ...

  6. 吴恩达机器学习学习笔记第九章:神经网络学习

    课时①非线性假设 通过说Linear Regression和logistic Regression的不足来引入神经网络: 安卓告诉我们神经网络并不是什么新玩意儿,老早就有了,但是他经过了一段低迷期直到 ...

  7. 《metasploit渗透测试魔鬼训练营》学习笔记第九章--meterpreter

    七.强大的meterpreter   7.1再探metasploit的攻击载荷模块      7.1.1典型的攻击载荷模块      metasploit涵盖了各大主流操作系统和平台,其中绝大部分是远 ...

  8. 【EasyRL学习笔记】第七章 深度Q网络进阶技巧(Double-DQN、Dueling-DQN、Noisy-DQN、Distributional-DQN、Rainbow-DQN)

    文章目录 一.双深度Q网络(DDQN) 二.竞争深度Q网络(Dueling DQN) 三.优先级经验回放 四.在蒙特卡洛方法和时序差分方法中取得平衡 五.噪声深度Q网络(Noisy DQN) 六.分布 ...

  9. DQN相关知识总结及演员-评论员算法介绍(DataWhale组队学习笔记)

    DQN基本概念及相关技巧 DQN(Deep Q-network)即深度Q网络,通过结合神经网络技术和价值函数近似,采用目标网络和经历回放的方法来进行网络的训练. 价值函数近似 在面对现实中的强化学习任 ...

最新文章

  1. ITCAST视频-Spring学习笔记(使用JDK中的Proxy技术实现AOP功能)
  2. 弹性碰撞后速度方向_两物体发生弹性碰撞后.相对速度大小不变.方向相反. ,也可以说两物体的速度之和保持不变.即 ....
  3. 春节跳槽最新Java面试题
  4. 棒棒糖 宏_棒棒糖图表
  5. appcan slider轮播图和页面弹动冲突解决
  6. 宝塔面板插件 sitemap生成器(附神马/百度主动推送)
  7. 计算机科学与技术专业热,广东省计算机科学与技术专业最“热”
  8. mtk android工具包,MTK Android software Tools工具的说明
  9. JAVA内置注解 基本注解
  10. 英语单词辨异 —— 容易理解错的单词
  11. 给ecshop后台增加管理功能页面
  12. 第四届中国优秀云计算开源案例评选结果出炉
  13. java实现视频加密_JAVA实现视频加密
  14. y的花式写法_y的花式写法_26个字母的花式写法,总有一个你喜欢哒
  15. 读《卧底经济学》有感
  16. 开源高手推荐十大最流行开源软件
  17. android应用实现重启系统
  18. 基于SSM或SpringBoot的JavaWeb项目——写作分析系统
  19. android--------Android Studio常见问题以及解决方式
  20. Matlab——Simulink输出的数据怎么利用plot函数绘图

热门文章

  1. 无需代码,1秒搞定QQ和微信多开!
  2. 概率论的学习和整理8: 几何分布
  3. 安装Ubuntu后的配置
  4. C# 常用Excel导出的几种常见方式及实现步骤
  5. 前端开发中的地理定位问题小总结
  6. 软件的安全性应从哪几个方面去测试?
  7. 为什么要学数学--读《给讨厌数学的人》第二章之读书笔记
  8. 常见传感器和芯片的介绍
  9. LeetCode力扣刷题——简单易懂的贪心算法
  10. 水面无人艇局部危险避障算法研究 参考文献