强化学习入门(五):Q-learning算法系列2:进阶算法

一、Double DQN(DDQN)

1、引出原因

DQN的Q-value往往是被高估的(即高出实际值),原因是Q值总是基于使得Q最大的action得出的。
在这里插入图片描述
上图为四个游戏的训练结果的对比。
橙色的锯齿线代表DQN估测的Q-value,橙色的直线代表DQN训练出来的policy实际中获得的Q-value。
蓝色的锯齿线代表Double DQN估测的Q-value,蓝色的直线代表Double DQN训练出来的policy实际中获得的Q-value。

可以得到两个结论:

  1. 从橙色的曲线和橙色的直线可以看出,DQN估测出来的Q-value,往往会高于实际中的Q-value (即,DQN的Q被高估了)
  2. 从橙色的直线和蓝色的直线可以看出,Double DQN训练出来的policy,一般会好过DQN训练出来的policy(即,DDQN训练效果更好)

2、DDQN基本原理

如下图所示,DDQN使用两个Q function(因此称为double), 一个用来选择行动action,另外一个用来计算Q值。
在这里插入图片描述
在这里插入图片描述

二、Dueling DQN

1、创新点

Dueling DQN的原理很简单——只对网络结构进行改变!
在这里插入图片描述

2、优势所在

Dueling DQN中,输出结果变成Q=V+A,因为有时候在某种state,无论做什么动作,对下一个state都没有多大的影响,所以将Q-function分解为两部分。比如,在一个好的state,无论做什么action,都能得到很高的value;在一个很差的state,无论做什么action,都只会得到一个很低的value。
在这里插入图片描述
在这里插入图片描述
下图展示了实际过程中,如何使A(s,a)的每一列的和都为0:
下图中V(s)的输出值为1,A(s,a)的输出值为{7,3,2}为了使A(s,a)的每一列的和都为0,可以使A(s,a)的每个数减去对应所在列的平均数,即{7,3,2}变成{3,-1,-2},此为Normalization的过程
在这里插入图片描述

三、优先回放(Prioritized Experience Replay)

之前在buffer中sample数据去训练network的时候,是无差别地sample每一笔数据,就是说没有偏向于sample哪些数据。

这样做的不足是有些:有时候因为sample到的某一笔训练数据质量不好,造成 Q ( s t , a t ) Q(s_t,a_t) Q(st,at)估测的值和 r t + Q ( s t + 1 , a t + 1 ) r_t+Q(s_{t+1},a_{t+1}) rt+Q(st+1,at+1)的差距比较大(即TD error)。如果接下去还是无差别地sample每一笔数据,就会导致这些TD error比较大的情况没有得到更多更好的训练,就会导致Q network 在有些情况估值不准确。
在这里插入图片描述
所以使用Prioritized Reply后,对于那些会造成TD error的情况,就会倾向于sample更多相关的数据来训练network,使得network克服这个TD error。
(直白的说就是你应该在薄弱的地方投入更多的精力)

四、Multi-step: Combination of MC and TD

MC是计算的在s_t之后直到episode结束的所有reward,TD是计算 s t s_t st s t + 1 s_{t+1} st+1的reward。

Multi-step这个方法结合了MC和TD各自的特点将TD改为计算 s t s_t st s t + n s_{t+n} st+n,即由原来跳到下一个状态,改为跳到之后n个状态。特殊的,直接跳到episode结束则变为MC方法。
在这里插入图片描述

五、Noisy Net

1、创新点——在参数上加noise

在这里插入图片描述
这个技术是为了改进exploration的。之前的exploration(epsilon greedy)是在action上做noise。而Noisy Net是在Q-function的参数上做noise

注意:在每一个episode开始前,对Q-function的参数添加noise,用这个添加了noise的network去玩游戏,直到episode结束,才可以重新添加新的noise(同一场游戏,是同样的noise)。

2、优势

在这里插入图片描述

在action上加noise,会随机的试,即epsilon-greedy,就算给出同一个state s,也会做出不同的action,可能是按照Q-function的结果,也可能是以random得到的结果。这不符合实际的情况,因为实际上我们希望给出同一个state,都会做出同样的action。

在Q-function的参数上加noise,会系统的试。因为在这个方法规定了只在一个episode开始前添加noise,不会在episode中途再增加noise,所以在episode中遇到同一个state都会做出同样的action。所以它是比较有系统地进行exploration。比如在一个episode中,遇到 S t S_t St状态都采取“向右”的action,在另一个episode遇到 S t S_t St状态都采取“向左”的action。

六、Distributional Q-function

1、提出原因——不同的分布可能有相同的mean

使用同一policy的actor在同一个state采取同一个action,得到的cumulated reward是不同的,因为后续state是具有随机性的。如果对它进行统计,会发现它是会呈现一个分布(distribution)。而Q-value就是这些分布取mean的结果。

这样做有一个不足就是:即便mean相同,但是可能实际的分布是完全不同的。然而因为Q-function只输出Q-value(即分布的mean),所以我们看不到实际的分布
如下图所示,mean相同,分布却截然不同。

在这里插入图片描述
所以Distributional Q-function就是为了能够实现从输出Q-value变成输出Q-function的分布。

2、优势

在这里插入图片描述
左边为Q-function,右边为Distributional Q-function。

三种颜色代表三种action,每种action的几率加起来为1(注意并非总的为1)。

同一颜色不同柱子代表在同一state下采取同一action产生的reward落在分布里的几率。
具体来说,在绿色柱子里,5个柱子的X轴代表5种不同reward,Y轴代表在某一state采取某一action得到的reward落在此处的几率,绿色的五个加起来概率为1。

Distributional Q-function的好处:有了具体的分布,我们不仅可以从中挑选一个mean最大的动作之后(其实这一步不用Distributional Q-function也能做),还能进一步考虑哪个分布的方差最小,进一步降低不稳定的可能性

目前虽然还是选mean最大的去执行,但是如果有两个mean差不多,就可以去选一个更稳定的去执行。

七、Rainbow

把前面所有的方法全部运用在一起就是Rainbow,可以看到最终效果还是很不错的。
其中,文章前面讲到的Multi-step可以看A3C当做参考,因为A3C中就有运用到 Multi-step 的技术。
在这里插入图片描述
下面这张图讲的是,在上面的Rainbow拿掉某一种技术后导致分数降低多少(比如绿色的线就是拿掉Dueling DQN技术)。
在这里插入图片描述

可以看到在拿掉Double DQN后几乎没有影响,是因为有使用Distribution Q-function的时候,一般就克服了DQN过估计(over estimate)reward的问题(而这正是Double DQN想解决的问题),甚至会出现略微低估(under estimate)reward的情况,所以使用Double DQN的效果就没有那么大。
Distribution Q-function之所以能解决过估计,是因为Distribution Q-function的输出是一个分布,而这个分布的X轴(即reward大小)是有一个区间的,假设这个区间是[-10,10],而这时过估计的reward为100,超出这个区间,就没有被记录到,所以就不会有过估计(over estimate)的情况发生。

参考:
https://blog.csdn.net/ACL_lihan/article/details/104056542
https://blog.csdn.net/cindy_1102/article/details/87907470

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值