一、介绍
Actor-Critic 算法有两部分组成:actor 和 critic。其中 action 就是Policy Gradient 算法,critic 是Q-learning。所以实际上 actor-critic算法是Q-learning算法和policy gradient算法的结合。
- Actor Critic 算法能在有限维的输入和有限维的输出中起到比较好的效果。
- Actor 角色起到的作用是:在当前状态下决定哪一个动作被执行会达到最好的效果;而Critic则是对某一个状态下采取的某个动作做出评价。这个评价会影响 actor 今后的选择。
- Actor-Critic 算法所需要的训练时间要比Policy Gradient 算法短。
二、回顾 Q-learning
对于Q-learning,有如下特点:
- 基于 value-based
- 处理离散的动作空间
-
它是一个 model-free 的算法,使用 Q函数去找到最理想的策略
如上图的网络都是为了近似 Q(s,a)函数,有了 Q(s,a),我们就可以根据Q(s,a)的值来作为判断依据,作出恰当的行为。
Q-learning算法最主要的一点是:决策的依据是Q(s,a)的值。即算法的本质是在计算 当前状态s, 采取某个动作 a 后会获得的未来的奖励的期望,这个值就是 Q(s,a)。换句话说,我们可以把这个算法的核心看成一个评论家(Critic),而这个评论家会对我们在当前状态s下,采取的动作a这个决策作出一个评价,评价的结果就是Q(s,a)的值。
但是,Q-learning 算法却不怎么适合解决连续动作空间的问题。因为如果动作空间是连续的,那么用Q-learning算法就需要对动作空间离散化,而离散化的结果会导致动作空间的维度非常高,这就使得Q-learning 算法在实际应用起来很难求得最优值,且计算速度比较慢。
而Policy Gradient 正好弥补了这个缺点。
三、回顾 Policy Gradient
Policy Gradient 算法的核心思想是: 根据当前状态,直接算出下一个动作是什么或下一个动作的概率分布是什么。即它的输入是当前状态 s, 而输出是具体的某一个动作或者是动作的分布。
我们可以想像,Policy Gradient 就像一个演员(Actor),它根据某一个状态s,然后作出某一个动作或者给出动作的分布,而不像Q-learning 算法那样输出动作的Q函数值。
四、Actor Critic
Actor-Critic 是Q-learning 和 Policy Gradient 的结合。
为了导出 Actor-Critic 算法,必须先了解Policy Gradient 算法是如何一步步优化策略的。
如上图所示, 最简单的Policy Gradient 算法要优化的函数如下:
其中 要根据 Monte-Carlo 算法估计,故又可以写成:
但是这个 方差会比较大,因为是由多个随机变量得到的,因此,我们需要寻找减少方差的办法。
一个方法就是引入一个 baseline 的函数 b, 这个 b 会使得 的期望不变,但是方差会变小,常用的 baseline函数就是 。再来,为了进一步降低 的随机性,我们用 替代 ,这样,源式就变成:
因为 ,故进一步演化成:
照上面的式子看来,我们需要两个网络去估计 和 ,但是考虑到贝尔曼方程:
弃掉期望, 得:
即最终的式子为:
这样只需要一个网络就可以估算出 值了,而估算 的网络正是我们在 Q-learning 中做的,所以我们就把这个网络叫做 Critic。这样就在 Policy Gradient 算法的基础上引进了 Q-learning 算法了
引用
https://www.jianshu.com/p/25c09ae3d206
https://www.bilibili.com/video/av24724071/?p=6
https://www.jianshu.com/p/277abf64e369