强化学习之DQN进阶的三大法宝(Pytorch)

更新时间:2023-06-02 18:54:44 阅读: 评论:0

强化学习之DQN进阶的三⼤法宝(Pytorch)
三⼤法宝:
①:DDQN:改变Nature DQN中TD⽬标值中a'的产⽣⽅式。
②:Prioritized experience reply:改变从经验池采样的⽅式。
③:Dueling DQN:改变⽹络结构
本⽂将通过理论+实战结合的⽅式总结DQN与三⼤法宝的功能。
为了阐述清楚三种⽅式的各⾃优势:实战部分不选⽤NIPS DQN作为基础⽹络,⽽是⽤Nature DQN(后⾯简称DQN)。分别探索:DQN vs DDQN:DDQN的功能
DQN vs DQN_PER :PER的功能
DQN vs Dueling DQN:改进版⽹络的功能
DQN vs DDQN_PER_Dueling DQN:组合的功效
⼀:理论部分:少年歌曲
1.1、DQN
苏泊尔电压力锅售后
1.2、DDQN
1.3、Prioritized experience reply(PER)
1.4、Dueling DQN
1.1、DQN:
DQN是基于Q-learning算法,结合神经⽹络来做值函数近似的算法,⽤于解决Q-learning难以适⽤于连续状态以及繁多状态下搜索困难、存储苦难的问题。
1.1.1、⾸先来⼀波论⽂率先提出的伪代码:(下图是2013年提出的第⼀代NIPS
DQN,2015年在原有基础上增加了Target-Q-network,就是下⾯翻译部分)
1.1.2、翻译:(2015年Nature DQN算法)
1、初始化参数N(记忆库),学习率lr,贪⼼策略中的,衰减参数,更新步伐C脚趾有痣
2、初始化记忆库D
3、初始化⽹络Net(本实验选择⼀个2层的⽹络,其中隐藏层为50个神经元的FC层),将参数W和W_指定为服从均值为0,⽅差为0.01⾼斯分布,并例化出2个相同的⽹络eval_net(以下简称Q1)和target_net(以下简称Q2)。
4、for episode in range(M):
5、    初始化状态obrvation
6、    for step in range(T):
7、            通过贪⼼策略选中下个动作action,其中Q(s, a)来⾃于eval_net的前向推理。
8、            通过环境的反馈获得obrvation'以及奖励值reward。
9、            将obrvation、obrvation'、action、reward打包存⼊记忆库D中。
10、          当记忆库存满之后,抽取batch个⼤⼩的数据(sj, sj', aj, rj)送⼊2个⽹络中
11、          以损失函数L =  *( rj +  * max(Q2(sj';W_)) - Q1(sj,aj;W))^2 进⾏训练
12、          每隔C步,更新target_net的参数W_ = W
下⾯这张博主画的图可以很好实现上述的伪代码过程:
1.1.3、DQN提出的原因:
Q-learning算法,使⽤Q表来存储动作状态值函数,通过不断尝试来更新Q表,最终达到收敛,找到了最优策略。但是其缺陷在于Q表的容量和搜索范围,当⼀个任务的状态数⽬贼多,⽐如围棋、图像,那么对Q表的存储量是个考验,此外,搜索也是个问题。另⼀⽅⾯,若任务的状态值是个连续值,⽐如接下去的⼩车位置、速度,Q表是不够⽤的。因此需要⽤值函数近似的⽅法,⽤⼀个⾮线性函数去拟合动作状态值函数,达到升级版Q表的⾓⾊。拟合这件事neual network就很擅长,输⼊是个状态,
输出则是状态对应的各个动作的值,这不就相当于是Q表了吗,并且nn不怕你输⼊繁多的状态,也不怕你输⼊是连续值,故Q-learning将Q值存储的⽅式改成神经⽹络,那么DQN初步就形成了。当然DQN强⼤的原因,并不在于此。
1.1.4、DQN强⼤的原因:
⼆⼤优势:经验回放池 + Target-Q⽹络
1.1.4.1、引⼊经验池:就是⽤⼀个⼆维数组将过去的样本存储起来,供之后⽹络训练⽤,具体来说,经验池
的引⼊:
a、⾸先Q-learning为off-policy算法(异策略算法,Sarsa为同策略,on-policy算法),也就是说,其⽣成样本<s,s_,r,a>的策略值函数更新的策略不⼀样,⽣成策略是-greedy 策略,值函数更新的策略为原始策略。故可以学习以往的、当前的、别⼈的样本。⽽经验池放的就是过去的样本,或者说过去的经验、记忆。⼀⽅⾯,和⼈类学习知识依靠于过去以往的记忆相吻合,另⼀⽅⾯,随机加⼊过去的经验会让nn更加有效率。
b、打乱样本之间的时间相关性。回顾nn中输⼊样本之间是⽆关的(除了RNN⽐较特殊),随机性抽
取有利于消除输出结果对时间连续的偏好。
c、每次抽取batch个数据正适合nn的前向和后向传播。
1.1.4.2、引⼊Target-Q-network
模具维修a、这个⽹络的输出通过取max,乘以,加上reward,作为标签y。这是由于Q-learning是值迭代算法,r +  *
max(Q2(s_,a')是target Q,与Q-learning⼀样,DQN⽤这个作为标签,让Q(s,a)去⽆限接近标签,从⽽找到最优策略。
b、延迟更新⽹络。第⼀代的NIPS DQN是和Q(s,a)同时更新的,这就使得算法的稳定性降低,Q值可能⼀直就靠近不了target Q,但也不能不变,⽐如Target-Q-network刚初始化后,其产⽣的Q(s',a')是不准确的,就像Q-learning中Q(s',a')由于刚开始时候,也不住准确,都是0,但接下去会不断更新Q表,⼀段时间后,下⼀尝试同⼀个Q(s',a')出现时,此时Q(s',a')已经更新了,从第0次尝试->收敛过程中,Q(s',a')⼀定是在不断更新,从0到最优值。因此Target-Q-network中的⽹络参数不能⼀尘不变,⼀段时间后,也需要更新。
c、另外,回顾下监督学习中,标签是个不随⽹路参数W变动的值,因此,⼀定时间内,需要维持不变,
既为了稳定,⼜为了符合监督学习的特性。
1.2、DDQN
1.2.1、DDQN提出的原因
1.2.2、产⽣过估计的原因
tga格式1.2.3、DDQN算法的改进
1.2.4、DDQN算法
DDQN是为了解决DQN出现Q值过度估计的问题。
1.2.1、DDQN提出的原因
过估计问题:由于我们对于Q函数的估计会有误差,在取最⼤化Q值的时候,会⾼于真实的最⼤Q值。由于过⾼的估计偏差,这种累积的错误会导致任意的坏状态被估计为⾼值,从⽽导致次优的策略更新和发散的⾏为,这就是过估计问题。
如上图所⽰,提出DDQN的作者发现DQN算法会导致Q-eval-net的结果Q值被过度估计,也就是说通过这个⽹络出来的Q值⽐真实Q值要⾼出很多。
上图是论⽂中基于游戏Atari的实验:
1、曲线是作者通过6个随机种⼦去产⽣6次随机实验,通过跟踪某个状态动作对的Q值产⽣6条曲线,较深颜⾊的曲线是6次实验的中位线(求中间值),阴影部分是通过将6条中的上下最极端的2条通过线性插值产⽣。平直的直线是⽤训练好的policy在游戏中不断积累R,计算每个episode的衰减的return,即Gt。然后求取平均值来作为对DQN和DDQN的Q(s,a)真实值true value(⽽且是最优值函数)的⽆偏估计。
2、2条不同颜⾊的曲线是DQN和DDQN在训练时,从Q_eval⽹路中输出的Q值,不断变⾼是因为随着迭代加深,策略在优化,值函数在变⼤,最后趋于平稳说明达到收敛,顺便⼀提,Q值不⼀定单调递增,也不⼀定总体递增。得看具体环境,但是最终会稳定下来是确定的。寻路问题,他就是总体先下降然后再上升。⽐如其他环境,上图的6种游戏,那它就是逐渐上升。此外,最终的最优Q值不⼀定从头到尾都是⼏个动作中的最⼤。画玫瑰
番茄土豆炖牛腩的做法
3、如果没有过⾼估计的话,训练到收敛之后,Q(s,a)应该是和真实值true value是⽆限接近的,即上图各⾃颜⾊的直线应该与曲线的右端是重合的,这是符合TD学习的理论的。
如上图所⽰,Wizard of Wor和Asterix这两个游戏中,DQN的结果⽐较不稳定。也表明过⾼估计会影响到学习的性能的稳定性(DDQN打电动显然更强)。因此不稳定的问题的本质原因还是对Q值的过⾼估计。
1.2.2、产⽣过估计的原因
根本原因就是从Q-learning延续到DQN⼀直存在的->TD⽬标值中取max操作:
逆流成河简谱TD⽬标值:
Q-learning(DQN):

本文发布于:2023-06-02 18:54:44,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/836142.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:策略   函数   估计   学习   算法   动作   问题
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图