文中的图片来自莫烦python视频。视频内容真心很赞,一天就可以看完,有兴趣的朋友可以点击下边的链接哦
https://space.bilibili.com/243821484/#/channel/detail?cid=26359
come on, babies! 让我们一起来聊一下增强学习吧~hhhh
增强学习,简单来讲,就是做对了给奖励,做错了给惩罚,超级简单粗暴。惩罚和奖励啥的本质上也可以用梯度下降来反传。
最大的感受是,找最优解的过程中,走一步告诉你对不对,再走一步告诉你对不对,或者走完了告诉你前边走了那一堆对不对。然后更新。这个算法有一个表,这个表会告诉你选择这个优化方向的好坏程度,预测的值是根据之前的经验来的,我们也会根据每一步或者最终结果的好坏来更新这张表。
我们来一起了解一下几个经典的增强学习的算法吧~
1. Q-learning:
一张q表记录选择路径的分数。
为了更明确图片中的公式具体是怎样计算的,我直接用数字来算一遍啦
![](/qrcode.jpg)
q现实 = 0+0.9*2 = 1.8
q估计 = 1
新q = 1 + alpha * (1.8-1)
然后我们就可以把图中的s1,a2对应的 1 修改为 1 + alpha * 0.8 咯。然后继续计算。。。
注意Q-learning是选择后续路径中最大的那个来计算q现实,就是说,如果s2情况下,我选择走a1,那么我的q现实也是1.8哦。
2. 这里就可以引出sarsa算法,sarsa就是走哪条路就选哪个。
体现在更新过程中就是,Q-learning记吃不记打,总是选之后价值大的。sarsa就是每次选错了就惩罚,就不大敢走,即使这条路另一个支路可能是对的,但是走错的那条路如果被惩罚多了,那后边这条路就会很难走的。
当然,为了解决这种直接封锁道路的一锤子买卖,算法中加了10%的随机选路的过程,保证即使这条路不好,算法也是有可能往这个方向再试一试的。
3. Q-learning和神经网络结合起来就有了DQN(Deep Q Network)
和神经网络结合起来再想记录参数就不能用一张表来解决啦,我们就会使用两个网络来记录结果,一个是现实网络,一个是估计网络。两个网络异步更新。现实网络是更新慢的那个,可能是存储了几步之前的网络参数,用于打乱经历相关性。
(1)网络输入:状态(s)和动作(a);输出:value
(2)网络输入:状态(s);输出:动作(a)与对应的value
dqn有记忆库,记录之前的经历来学习,打乱经历的相关性。
4. policy gradient
输入是状态,输出是动作or动作的概率。基于神经网络,让某动作更容易被选中。最大化好动作的概率。最终的结果也不是一条确定的通路,而是通过概率来选的路径。一个回合结束之后才能更新。
5. actor critic
actor:policy gradient 作出动作
critic:q-learning 预判这个动作的value
两者结合就可以实现单步更新,更有效率。而不是policy gradient那样一个回合结束才知道每一步是好还是不好。
6. ddpg
两个actor,两个critic。相互之间会互通信息。