强化学习入门(七):Actor-Critic系列算法原理

一、AC系列算法的引出——回顾Policy gradient与Q-learning

1、回顾Policy gradient

先对policy gradient进行回顾,要记得几个要点:

  1. 给定某个state采取某个action的概率
  2. 考虑到行动输出的概率和为一,为了保证reward越大的有更大的概率被sample到,需要加上baseline b
  3. 考虑到当先action对过去的reward没有影响,从当前时间点开始进行reward的累加
  4. 考虑到时间越久,当前action对后期reward的影响越小,添加折扣系数 γ \gamma γ

在这里插入图片描述
上图中G表示在 s t s_t st采取 a t a_t at一直玩到游戏结束所得到的cumulated reward。这个值是不稳定的,因为在某一个state采取同一个action,最后的结果不一定相同。因为state的变化也是有随机性的。
在这里插入图片描述
虽然经过多次实验后,可能会发现G最后会变成一个比较稳定的分布,那么理论上收集足够多的数据就能解决这一问题。
但是因为policy gradient是一个on policy的方法,每次更新参数后又要重新收集数据。如果每次都要收集非常多的数据那也会造成效率的低下。
因此为了使G变得比较稳定,我们可以用G的期望值来代替,这就需要引入value based的方法。

2、回顾Q-learning

Q-learning部分主要记住以下几个点:

  1. 状态价值函数 V π ( s ) V^\pi(s) Vπ(s)(state value function),表示代表使用actor π \pi π在遇到某一状态s后,接下来使用actor π \pi π一直玩到游戏结束的cumulated reward的期望值。

  2. 状态行动价值函数 Q π ( s , a ) Q^\pi(s, a) Qπ(s,a)(state-action value function),代表使用actor π \pi π 在遇到某一状态s,强制使用a,然后使用actor π \pi π 一直玩到游戏结束的cumulated reward的期望值。
    在这里插入图片描述
    用TD会比较稳定;用MC会比较精确。
    TD是G的有偏估计,方差小;MC是G的无偏估计,方差大。

二、Actor-Critic系列算法

1、Actor-Critic

Actor-Critic 的 Actor 的前生是 Policy Gradients , 这能让它毫不费力地在连续动作中选取合适的动作, 而 Q-learning 做这件事会很吃力。
那为什么不直接用 Policy Gradients 呢? 因为 Actor Critic 中的 Critic 的前生是 Q-learning 或者其他的以值为基础的学习法 , 能进行单步更新, 而传统的 Policy Gradients 则是回合更新, 这降低了学习效率。所以就想到把两者结合起来变成Actor-Critic。
在这里插入图片描述
文章前面提到G是一个不稳定的值,我们要使用它的期望值来代替G。
可以很容易想到,直接用 Q π ( s , a ) Q^\pi(s,a) Qπ(s,a)来代替G的期望值,而baseline就可以使用 V π ( s ) V^\pi(s) Vπ(s)来代替。
因为 V π ( s ) V^\pi(s) Vπ(s) Q π ( s , a ) Q^\pi(s,a) Qπ(s,a)是期望的关系(后面会介绍到),这样括号当中有正有负,符合要求。

2、Advantage Actor-Critic(A2C)

1、引出原因

AC有一个很大的弊端,那就是需要估算两个网络Q和V,使得估算误差扩大了两倍。
所以就想能不能只用一个网络去估计,即只使用V就能估计出Q。

2、基本原理

1、如何只用一个网络去估计

Q和V的关系为下式:
在这里插入图片描述
解释一下这个式子,因为由于在state s t s_t st执行action a t a_t at得到多少的reward r t r_t rt ,和会跳到哪一个 s t + 1 s_{t+1} st+1都是具有随机性的,所以等号右边红框部分加上期望值才等于Q-function。

这里我们做一个简化,认为等号右边红框部分不加期望也等于Q-function(实验结果说明这个简化是可以接受的)。
于是我们得到
在这里插入图片描述
进而我们可以将原式中的Q用V替换掉,即
在这里插入图片描述
这样就将两个网络的估计误差变为V这一个网络的估计误差了。

2、优势

由于刚才拿掉了期望值,所以现在的 r(某一个step得到的reward) 是有一定随机性的。但是相较于前文的G(从某一时间点t开始到结束的cumulated reward), r 的方差会比G小很多。
即,将方差比较大的G换成了方差比较小的r

3、执行过程

在这里插入图片描述
其中绿框部分就是advantage函数。
执行过程:

  1. actor π \pi π与环境做互动收集资料
  2. 使用TD或MC以这些资料去估计value function
  3. 套用 r t n + V π ( s n ) t + 1 − V π ( s t n ) ) r^n_t+V^\pi(s^n)_{t+1}-V^\pi(s^n_t)) rtn+Vπ(sn)t+1Vπ(stn))去更新 π \pi π
  4. 形成新的actor π ′ \pi' π,一直重复123步……

4、两个技巧

1、技巧1:actor和critic的参数可共享

在A2C中我们要训练actor和critic这两个网络,两个网络都是输入状态s,来输出各自的结果。
在这里插入图片描述
以游戏为例子,输入的是游戏画面,前面的网络都是CNN在提取特征,这部分对actor和critic这两个网络来说都是一样的,所以前面几个层的网络参数是可以共享的。

2、技巧2:对actor的输出进行限制

使用output entropy 作为 π ( s ) \pi(s) π(s)的正则项的时候,最好用较大的entropy(与之前的课笔记中所述的exploration方法类似,避免总sample到reward较大的几个action)

这样才会多尝试不同的动作进行探索,而不是一直局限于使用那些已知的reward比较高的动作。

3、Asynchronous Advantage Actor-Critic (A3C)

1、引出原因

强化学习有一个问题就是训练过程很慢,为了解决这个问题就可以使用A3C算法。

2、基本原理

A3C的原理也很简单——既然一个actor训练速度慢,那就开多个actor,最后这些actor会把各自学到的经验集合起来,这样就实现数倍的训练速度。
在这里插入图片描述

3、执行过程

执行过程如下:

  1. 每个worker从global network复制参数
  2. 不同的worker与环境去做互动
  3. 不同的worker计算出各自的gradient
  4. 不同的worker把各自的gradient传回给global network
  5. global network接收到gradient后进行参数更新

注意:假设worker 1一开始从global network复制到的参数是 θ 1 \theta_1 θ1,在worker 1传回gradient之前,global network先收到其他worker的gradient并把参数更新到 θ 2 \theta_2 θ2,这时worker 1仍然可以再传回gradient。

三、Pathwise Derivative Policy Gradient

1、算法原理

1、引出原因

以棋魂为例子,阿光作为actor下棋,佐为做critic。
在原始的actor-critic中,佐为只判断阿光下的某一步棋好还是不好。
在Pathwise Derivative Policy Gradient中,critic会引导actor,让它知道采取什么动作才是好的。

2、基本思想

具体来看这个算法。训练一个Actor,以状态s为输入,动作a为输出。训练一个Q function,以状态s和Actor输出的动作a为输入,以Q value为输出。这样就变成把Actor和Q function连接起来形成的一个大的网络。
在这里插入图片描述
在训练整个网络的时候,会固定住Q的参数,用gradient ascend的方法去调Actor的参数,使它输出的a最后能输出尽可能大的Q value。(类似于GAN,这里的Q是GAN里的discriminator,Actor则是GAN里的generator)

3、执行过程

在这里插入图片描述
具体步骤:

  1. actor 去和环境做互动收集资料。
  2. 根据这些资料来训练Q function的网络去估计Q value,训练好网络后把它的参数固定住。
  3. 训练Actor网络,使它输出的动作a送到Q function的网络中能得到大的Q value,一直沿着这个方向训练下去。
  4. 形成新的actor ,重复123步……

2、与Q-learning执行过程的对比

1、Q-learning的执行步骤

在这里插入图片描述

2、四个改动

在这里插入图片描述
在这里插入图片描述

3、与GAN的关联

在这里插入图片描述
由于该方法与GAN类似,可以根据已有的研究进行两个领域的研究方向迁移,为之后的研究提供一定的思路。

参考:
https://blog.csdn.net/cindy_1102/article/details/87988606
https://blog.csdn.net/ACL_lihan/article/details/104087569

  • 5
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值