李宏毅机器学习系列-强化学习之Q-Learning小改进

李宏毅机器学习系列-强化学习之Q-Learning小改进

  • Double DQN
  • Dueling DQN
  • Prioritized Reply
  • Multi-step
  • Noisy Net
  • Distributional Q-function
  • Rainbow
  • Q-Learning解决连续的行为的方案
    • 方案1
    • 方案2
    • 方案3
    • 方案4
  • 总结

Double DQN

我们在实验中发现Q的值是被高估的,比如下图,红色的曲线是DQN的估计值,直线是Q的DQN的真实值,很明显估计值比真实值高很多,然后我们又用了DDQN,是蓝色的,可以看到估计值和真实值差的不多,而且都要比DQN小,没有高估很多:
李宏毅机器学习系列-强化学习之Q-Learning小改进_第1张图片
那为什么会被高估呢,我们来看看。我们是会找一个使得Q最大的a,如果a被高估了,那Q也会被高估,所以是跟a有关系:
李宏毅机器学习系列-强化学习之Q-Learning小改进_第2张图片
那我们怎么来解决呢,可以用两个网络来合作计算Q值,一个是要训练你的 Q Q Q,一个是目标 Q ′ Q' Q,如果 Q Q Q选择了高估的a,那只要 Q ′ Q' Q不给他高估的值就可以,如果 Q ′ Q' Q高估了,那就让 Q Q Q不去选择高估的那个a,等于相互制约着:
李宏毅机器学习系列-强化学习之Q-Learning小改进_第3张图片

Dueling DQN

这个带来的的好处就是我们可以比较有效率的去使用我们的数据,具体马上会讲他是怎么做的,其实他只是从结构上改变了原来的DQN,把原来的Q,变成了一个V+A,V就是某个s状态下的估计值,A是某个s下所有的行为a的估计值:
李宏毅机器学习系列-强化学习之Q-Learning小改进_第4张图片
我们来举个例子,下图Q可以看成是一个表格,横轴是状态,纵轴是行为,每一个状态的每一个行为都有Q值,V是每个状态下的值,A是每个状态下采取某个a的值,把V加到A的每一行去,就是Q:
李宏毅机器学习系列-强化学习之Q-Learning小改进_第5张图片
假设我们现在训练,要改动两个值,但是我们是改不了直接的Q,我们是根据V和A来改的:
李宏毅机器学习系列-强化学习之Q-Learning小改进_第6张图片
其实我们只需要改动V,就可能会改变3个值,因为Q=A+V,也就是说我们只要固定A在某个s下的值加起来为0,这样对Q造成影响的只能是V了:
李宏毅机器学习系列-强化学习之Q-Learning小改进_第7张图片
所以我们可以想办法,让A的列的和为0,这样V就是Q的列的平均值了,只要V变了,就会影响整一列的值跟着变,这样更新的效率就提高了:
李宏毅机器学习系列-强化学习之Q-Learning小改进_第8张图片
那具体我们怎么来操作呢,可以在A的地方加一层标准化,均值是0就可以:
李宏毅机器学习系列-强化学习之Q-Learning小改进_第9张图片

Prioritized Reply

这个的思路就是说,我们要去多采样那些TD误差比较大的样本,因为这些是我们之前训练不好的样本,应该多拿他们来训练,具体的做法可以看相关的论文,其实还没那么简单,改的还比较多的:
李宏毅机器学习系列-强化学习之Q-Learning小改进_第10张图片

Multi-step

这个就是结合了MC和TD的方法,本来我们只采集一个步骤的数据,现在可以采集多个步骤,这样会估计的比较准,然后奖励的方差也没那么大,可以调节N来调整:
李宏毅机器学习系列-强化学习之Q-Learning小改进_第11张图片

Noisy Net

上次的说的探索是在选择行为的时候有个随机选择,而现在可以在整个网络的参数上面加随机,在每一个轮次的开始给每个参数加随机的噪音:
李宏毅机器学习系列-强化学习之Q-Learning小改进_第12张图片
如果仅仅是随机选择动作,那其实是随机乱试,这样就是可能导致同样的状态,可能会有不一样的动作,好像和真实世界有偏差啊,看到同样的情况一会儿是好的,一会儿是很奇怪的行为。但是如果是给网络加随机噪音,这样他可能看到相同的状态会有做出类似的行为,也就是说对状态是有依赖的探索,也就是有系统地试,不会乱试:
李宏毅机器学习系列-强化学习之Q-Learning小改进_第13张图片

Distributional Q-function

这个的思路就是说我们的Q本来是评估期望的,也就是说是均值,但是不同的分布可能有相同的均值,但是所含的意义是不同的:
李宏毅机器学习系列-强化学习之Q-Learning小改进_第14张图片
,他的思路就是在同一个s状态下,把不同动作所对应的Q的分布给找出来,然后选均值最大的那个,当然也可以选其他的,比如分布的形状,均值一样,如果方差太大,可能风险比较高,所以可以选方差小的。具体有个动画可以看视频,帮助理解:
李宏毅机器学习系列-强化学习之Q-Learning小改进_第15张图片

Rainbow

刚才的方法综合起来:
李宏毅机器学习系列-强化学习之Q-Learning小改进_第16张图片
李宏毅机器学习系列-强化学习之Q-Learning小改进_第17张图片
然后是拿掉某个方法的结果,看看哪个方法有用,哪个没啥用:
李宏毅机器学习系列-强化学习之Q-Learning小改进_第18张图片

Q-Learning解决连续的行为的方案

如果动作是个连续的,那我们要解决这个问题就比较麻烦,比如自动驾驶,方向盘的旋转角度是连续的:
在这里插入图片描述

方案1

采样,但是你可能没办法采样全部的行为:
李宏毅机器学习系列-强化学习之Q-Learning小改进_第19张图片

方案2

用梯度上升法去解这个问题,但是可能找到的是局部最大值,运算量也大
李宏毅机器学习系列-强化学习之Q-Learning小改进_第20张图片

方案3

设计一个Q函数的网络,输入s输出三个东西,Q跟这3个东西相关的,如果要Q最大,只要a是 μ ( s ) \mu(s) μ(s)即可:
李宏毅机器学习系列-强化学习之Q-Learning小改进_第21张图片

方案4

别用Q-Learning,前面讲到了基于策略和基于价值的,后面会讲两个结合的:
李宏毅机器学习系列-强化学习之Q-Learning小改进_第22张图片

总结

本篇主要介绍强化学习的Q-learning的一些小改进,其实作用还是很大的,如果把我们合起来效果可以很厉害,也讲了怎么处理连续的动作。

好了,今天就到这里了,希望对学习理解有帮助,大神看见勿喷,仅为自己的学习理解,能力有限,请多包涵,图片来自李宏毅课件,侵删。

你可能感兴趣的:(强化学习,李宏毅机器学习,深度学习,Q-Learning小改进,强化学习,深度学习)