强化学习(Reinforcement Learning)
0. 人工不智能,机器爱学习
什么课题什么方向都拉倒吧,强化学习才是AI的主宰!!!
简单的做了个笔记,边学边补充。唉,就是玩:强化学习玩小游戏
主要参考:蘑菇书EasyRL、周志华机器学习、莫烦Python
从强化学习的几个元素的角度划分,方法主要有下面几类:
- policy-based agent, 基于策略的智能体,找最优策略。
- value-based agent, 基于价值的智能体,找最优奖励总和。
- action-critic agent, 演员评论员智能体,策略和价值都最优。
然后又从不同的角度可以细分为:
- Model-free:不去理解环境,根据真实世界的反馈,采取下一步行动。
- Model-based:先理解理解环境,并建立一个虚拟环境,通过想象预判接下来要发生的所有情况,选择最好的情况作为下一步的策略。它比 Model-free 多出了虚拟环境和想象力。
- Policy based:通过感官分析所处的环境,得到下一步各种行为的概率,然后根据概率采取行动。
- Value based:输出的是所有动作的价值,根据最高价值来选动作,这类方法不能选取连续的动作。
- Monte-carlo update:结束时总结这一回合中的所有转折点,再更新行为准则。
- Temporal-difference update:环境中每一步都在更新,一直学习。
- On-policy:自身参与到环境中进行学习。
- Off-policy:可通过其他系统参与到环境得到的反馈进行学习。
1. Q-Learning
1、算法思想
Q-Learning属于value-based的算法,也是Off-policy,
即为 就是在某一时刻的 状态下 ,采取动作 动作能够获得收益的期望,环境会根据动作反馈相应的回报reward r,所以算法的主要思想就是将State与Action构建成一张Q-table来存储Q值,然后根据Q值来选取能够获得最大的收益的动作。 2、公式推导
目标是求出累计奖励最大的策略的期望:
( :状态集合, :动作集合, :回报函数, :范围, :折损系数, :在 状态下采取动作 策略 ) 时间差分法TD(融合了蒙特卡洛和动态规划)进行离线学习,使用bellman方程对马尔科夫过程求解最优策略,(此处有点模糊,待补充),更新公式如下:
( :学习率, :奖励性衰变系数, :回报值, :Q-table值) ( ) (根据下一个状态 中选取最大的 值乘以衰变 加上真实回报值 作为Q现实,之前Q表里面的 作为Q估计)
2. Sarsa
1、算法思想
Sarsa与Q-Learning一样,在更新table时有区别,它属于On-policy,训练过程中会比较保守,其实就是怂,Q-Learning是苏维埃,Sarsa就是美利坚。
相对于Sarsa来说,它的变种Sarsa(
)中多了一个矩阵E (eligibility trace),用来保存在路径中所经历的每一步,因此在每次更新时也会对之前经历的步进行更新。 参数
取值范围为 ,如果 ,Sarsa( ) 将退化为Sarsa,即只更新获取到 reward 前经历的最后一步;如果 ,Sarsa( ) 更新的是获取到 reward 前的所有步。 可理解为脚步的衰变值,即离最终目标越近的步越重要。
3. Deep Q Network
1、算法思想
Q-Leanring在状态和动作空间是高维连续时,使用Q-table表示动作空间和状态就很困难。
DQN用神经网络来拟合一个函数代替Q-table,使用一个eval_net产生Q估计(当前网络),使用另外一个target_net产生Q现实(目标网络),同时它设置了一个experience replay(经验池)用于存放之前的动作和状态,在学习过程中随机的加入之前的经验让神经网络更有效率。
Double DQN和Nature DQN结构一样,在Nature DQN的基础上,先在当前Q网络中先找出最大Q值对应的动作,再把这个动作放到目标网络里面去计算目标Q值,来消除过度估计的问题。
Prioritized Experience Replay (DQN),字面意思就可以理解,就是把样本做一个优先级处理,一般SumTree树形结构排序,batch抽样的时候不是随机抽样,按照Memory中的样本优先级来抽,更有效地找到需要学习的样本。
Dueling DQN把特征层和输出层之间的全连接层分成了两部分,一部分用于近似state-value V(s),另一部分近似Advantage-Function A(s, a),求和得到最终的Q(s, a)。
4. Policy Gradients
1、算法思想
Policy Gradients可以在一个连续区间输出动作,利用reward值来引导某一个动作是否应该增加被选的概率(基于概率的算法),通过更新神经网络来决定输出策略,根据每一回合的输赢来判断该回合中的每一步是好还是坏(回合更新)。
5. Actor Critic
1、算法思想
从 Critic (单步更新)评判模块得到对动作的好坏评价,然后反馈给 Actor,也就是乘以Actor的输出值(策略概率),让 Actor 更新自己的策略。这两个模块用不同的神经网络来代替。Actor Critic的不足之处在于:每次都是在连续状态中更新参数,每次参数更新前后都存在相关性,导致神经网络只能片面的看待问题,甚至导致神经网络学不到东西。
6. Deep Deterministic Policy Gradient(DDPG)
1、算法思想
Deep Deterministic Policy Gradient可拆解为两大部分:Deep和Deterministic Policy Gradient。Deep指的是DQN算法中使用一个记忆库和两个结构相同但参数不同的神经网络。Deterministic Policy Gradient指:Policy Gradient本是随机选择一个分布的动作,但现在Deterministic Policy Gradient改变了输出动作过程,使得输出更加确定。
7. Asynchronous Advantage Actor-Critic(A3C)
1、算法思想
创建多个并行环境,让多个拥有副结构的agent同时在这些并行环境上更新主环境中的参数(效率高)。并行的agent互不干扰,且主环境的更新受到副结构更新的不连续干扰(相关性降低,收敛性提高)。类似于有多个相同的机器人共同干着一件事,比如玩游戏,他们的经验上传到中央大脑,又从中央大脑获取到玩游戏的方法。
8. Proximal Policy Optimization(PPO)
1、算法思想
PPO主要是限制更新步长,因为学习速率慢时间就长,学习速率快就容易躁动。限制的部分就在于actor的更新,A会乘一个新旧概率比,如果差距大优势大那么学习幅度就加大,同时还要减去一个新旧的分布的KL,做以惩罚项,让他们不要差距太大。另外也可以不要KL的惩罚项,因为惩罚也是为了限制它的更新速度,那么直接对新旧比的出现幅度进行控制就可以了。(比如倍数不超过多少倍),即clip。
Distributed PPO就是类似与AC3的多线程。