【李弘毅强化学习】6.Actor-Critic

本文深入探讨了A3C算法的原理与应用,从Policy Gradient和Q-learning的基础知识出发,详细解释了A2C和A3C的工作流程,以及如何通过多线程加速训练过程。此外,还介绍了Pathwise Derivative Policy Gradient算法,它能够提供更具体的行动指导,适用于连续动作空间的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这次课讲解的是A3C,我们先来复习一下policy gradient和Q-learing的知识。

这是PG的形式,我们把小括号中的内容叫做G,G是一堆马尔可夫链的收益和,并且抽样出一部分。但是这个过程是十分不稳定的,因为抽样的时候不知道具体会抽样那个马尔可夫链,例如下图,有的G是100,有的G是-10.如果抽到这两个,那么训练效果肯定是极差的。一般情况下我们都是把G全部求出来,之后再求期望,算E。但是这个过程很难实现,所以我们用的是抽样,我们现在所要想的方法就是利用基于值函数的方法来让这个G变的稳定。

V是对状态s价值的评估,Q是对状态-动作对(s,a)价值的评估,评估的方法有蒙特卡洛方法(MC)和时间差分方法(TD),我们发现Q其实就是对G取期望的结果。

我们对之前的G取期望,其实就是Q的定义,所以我们可以将Q-learning和Policy Gradient结合在一起,用Q-learing的方法去求这个G的均值,使其更加具有稳定性。之后这个b(baceline)我们可以直接使用V,因为V其实是下一步Q的均值,所以Q-V一定是有正值同时也是有负值,是满足我们要求的结果。

依据我们之前所研究的东西,我们发现我们需要两个神经网络,一个用来求V,一个用来求Q,但是训练两个网络的话,一定会有更多的参数,更容易造成过拟合,同时会造成更大的误差,这显然是我们不想要的。所以我们在想可不可以只训练一个网络来解决这些问题。

我们把Q的定义拿出来,发现Q其实是及时奖励r和下一步价值V的和的期望。如果我们把期望给去掉的话,就可以只训练一个网络求V,依然可以求出Q了。

但是因为我们把期望去掉了,会存在误差,误差的来源在于及时奖励r同样是具有随机性的,我们原来用取均值的方法消除了这个随机性,但是我们现在去掉均值了,随机性有一次出来了,这就造成了我们误差。但是好在r的随机性是十分不明显的,r只是一个动作的随机性,而G是很多动作的r加在了一起,所以这些误差可以忽略。

于是,A2C的过程就变为了:1,先用当前的策略Π来和环境互动得到很多的数据,2,对所得到的数据通过TD或者MC算法求得V的值,3,通过下面的函数求梯度,并且更新参数,求得更好的Π4,重复上面的操作,直到整个过程的每一步变得稳定。

下面来分享一下使用A2C时候的小tips:1,求π的网络和求V的网络一定会有重叠的部分(比如说之前玩游戏的例子,我们之前肯定都会用卷积神经网络来实现识别游戏中的情境)2,

其实A3C的过程和A2C的过程是十分类似的,但是由于A2C的过程是比较缓慢的,所以我们通过A3C来进行。举一个通俗的列子,就是鸣人觉得自己的修行时十分缓慢的,这时候去找卡卡西,卡卡西告诉鸣人,一个人修炼的慢,那么多搞一些影分身的话,就会快很多。所以一个A2C比较慢,那么如果搞很多A2C的模块,将其分到不同的cpu上去搞,就会快很多。

A3C的过程就是1,复制参数θ到各个A2C模块 2,对数据进行采样,3,计算梯度,4,更新全局的参数

每一个A2C模块都是可以更新全局参数的。

接下来介绍的时另一种Actor-Critic,就是Pathwise Derivative Policy Gradient

原始的AC算法,我们只是会告诉你现在的a是好还是不好,但是不知道什么是最好的a。而使用这种Pathwise Derivative Policy Gradient,我们就知道哪种是比较好的a了。

举个《棋魂》中的例子就是,佐为告诉阿光“阿光,这一步不要下小马步飞!要下大马步飞”传统的AC算法只是会告诉阿光不要下小马步飞(只是会说这个动作是不好的)但是新的PDPG算法会告诉阿光要下大马步飞(就是会告诉什么动作是最好的)

我们知道Q-learning是难以解决连续问题的,所以我们就找来一个Actor(PG算法)来做Actor。我们把Actor当作是一个解决者来看,这个解决者要做的就是优化这个问题。

原来都是输入一个s,输入一个a,之后输出Q的值,Q的值是用来给a评分的,现在我们用一个Actor来生成高分的a,高分的a和critic连接在一起,之后通过critic给予的分数更新actor。

现实fix住actor,对最初的s,a打分,之后再fix住critic,更新actor,让其获得更高的a的东西。十分类似与GAN的做法,可以理解为也是一个GAN。

算法的过程1,先是actor拥有一个策略π来和环境做互动从而生成很多的数据,2,使用TD算法或者MC算法对数据进行处理得到Q值,通过左下角PG算法更新actor的参数θ,从而得到更好的策略π′,3,再用新的策略进行更新,从而使得其稳定。

类似于Q-learning的方法,所以Q-learning的策略也是可以用在这里的,比如replybuffer。

和Q-Lerning的方法很类似,但是做出了改变

初始化Q-function Q, target Q-function Q ̂=Q, actor π, target actor π ̂=π

在每一个马尔可夫链中循环,

   在每一个马尔可夫链的每一步循环,

1,给予状态s,并且根据策略Π,选择动作,获得回报r,和下一步状态s1。获得很多数据,并且把数据放入buffer中,再从buffer中采样出一部分

2,fix住actor,更新critic,更新Q的参数

3,fix住critic,更新actor,更新Π的参数

4,Q ̂=Q    π ̂=π

 

 

Repla1,y

Buffer

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值