强化学习
主要分为两个分支,一个是Q-Learning,一个是policy gradient decent,还有一个目前的主流研究就是把二者合并
本文所有图片和文字来自https://mofanpy.com/tutorials/machine-learning/reinforcement-learning/
一、Q-Learning
1、初始算法
通过Q-learning的算法我们可以看出,Q-learning首先采取了三个东西,一是epison-greedy,即以一定的概率随机采样,增加了action的随机性,二是Q现实-Q估计,使得最后Q估计(表中的Reward)能够靠近Q现实(现实的Reward),三是使用alpha来给每次更新一个系数,gamma 是对未来 reward 的衰减值。
问题:由于初始的时候一般Q估计都是0,而Q现实只有当下一个state有reward时,才会出现正向的激励,所以在没有到达目标state之前的状态,Q表都是不更新的 。
2、Sarsa
通过Sarsa的算法可以看出,Sarsa更新Q表的时候没有采用max的方式来更新,而是使用自己确实采用的a'的reward来更新。
所以Sarsa总会采取他认为最优的方式更新,而Sarsa会采取它当前选择的方式。
3、Sarsa(lambda)
在之前的Q-learning和Sarsa中,只有到达目标的state时,才能够获取reward,然后更新Q表,这样的效率是很低的。
而Sarsa(lambda)在每一部计算出E的时候,加了一个1(这个操作是为了使得更新的值永远大于1,防止随着往后传播的时候,值越来越小),然后重复之前的Q(s,a),给他们重新赋值。
4、DQN
deep Q Network
使用DQN的初衷是因为现代社会的问题越来越复杂,使用state-action表格(Q表)来存储所有的可能是不太现实的(如果是指数爆炸式的action)。而神经网络的不同参数组合可以很好的提供记录状态的可能,所以就有了DQN。
具体的迁移方法如上两图,每次输入状态,输出action和Q估计,然后利用Q现实-Q估计来更新参数。
需要注意的是DQN需要维护两个几乎相同的网络,一个网络(这个网络隔一段时间才更新一次)产生Q现实,一个网络(这个网络不断更新)产生Q估计
5、Double DQN
Q-Learning 中有 Qmax, Qmax 会导致 Q现实 当中的过估计 (overestimate). 而 Double DQN 就是用来解决过估计的. 在实际问题中, 如果你输出你的 DQN 的 Q 值, 可能就会发现, Q 值都超级大. 这就是出现了 overestimate.
如何解决?
原本的 Q_next = max(Q_next(s', a_all)).
Double DQN 中的 Q_next = Q_next(s', argmax(Q_eval(s', a_all))).
解释一下上面两行的意思就是,DQN是使用Q现实网络中的Q来预测Qtarget,而double DQN 是现在Q估计中找到需要的action,然后再在Q现实网络中来取值。
6、Prioritized Experience Replay
对记忆库中的样本采样方法进行改进,使得尽量平衡不同reward的样本.
通过上图高亮的部分可以看出,每个样本被赋予了一个优先级p(这个p是erro确定的),每次采用的使用对所有的优先级进行归一化,然后按照它们的概率采样。
7、Dueling DQN
修改 DQN 中神经网络的结构, 就能大幅提升学习效果, 加速收敛.
用一句话来概括 Dueling DQN 就是. 它将每个动作的 Q 拆分成了 state 的 Value 加上 每个动作的 Advantage.
可以看到上图中每个网络主要预测的是动作和reward,而dueling DQN 还需要预测这个动作的advantage(有用性)
二、Policy Gradient
对比起以值为基础的方法, Policy Gradients 直接输出动作的最大好处就是, 它能在一个连续区间内挑选动作, 而基于值的, 比如 Q-learning, 它如果在无穷多的动作中计算价值, 从而选择行为, 这, 它可吃不消.
上图简单明了的说明了,就是把vt和pi乘到了梯度上,然后来更新参数,pi代表的是某种策略的概率,vt是这种策略的奖励。
三、合并二者
1、Actor-critic
用一个critic网络(基于值的)评估actor网络(基于策略的)的结果
2、DDPG
Deep Deterministic Policy Gradient
Google DeepMind 提出的一种使用 Actor Critic 结构, 但是输出的不是行为的概率, 而是具体的行为, 用于连续动作 (continuous action) 的预测. DDPG 结合了之前获得成功的 DQN 结构, 提高了 Actor Critic 的稳定性和收敛性.
3、A3C
Asynchronous Advantage Actor-Critic
Google DeepMind 提出的一种解决 Actor-Critic 不收敛问题的算法. 它会创建多个并行的环境, 让多个拥有副结构的 agent 同时在这些并行环境上更新主结构中的参数. 并行中的 agent 们互不干扰, 而主结构的参数更新受到副结构提交更新的不连续性干扰, 所以更新的相关性被降低, 收敛性提高.
4、DPPO
Trust Region Policy Optimization
Distributed PPO
利用KL散度来控制前后两个策略的差距,让这个差距不要太大,同时还要学习一个A来控制新旧策略的更新步长
四、强化学习能做什么?提供了什么想法?
1、能做什么?
如果有一个Q现实和一个Q估计,就能够利用DQN来进行更新,问题就在如何定义Q现实和Q估计了
2、提供了什么想法?
更新的传递性(Sarsa(lambda))
样本权重(PER)
为结果预测一个有用性advantage(dueling DQN)
网络之间的异步更新