强化学习是一类算法,让计算机在不断的尝试中更新自己的行为准则,最后找到规律学会达到目的的方法,这就是一个完整的强化学习过程。
在强化学习中,一种行为的分数是十分重要的,所以强化学习具有分数导向性。这种分数导向性可以类比我们在监督学习中的正确标签。
监督学习(Supervised learning):
监督学习即具有特征(feature)和标签(label)的,即使数据是没有标签的,也可以通过学习特征和标签之间的关系,判断出标签——分类。
简言之:提供数据,预测标签。比如对动物猫和狗的图片进行预测,预测label为cat或者dog。
无监督学习(Unsupervised learning):
无监督学习没有标签,只有特征,在没有标签的训练数据集中,通过数据之间的内在联系和相似性将他们分成若干类——聚类。根据数据本身的特性,从数据中根据某种度量学习出一些特性。
简言之:给出数据,寻找隐藏的关系。
半监督学习(Semi-Supervised learning):
半监督学习使用的数据,一部分是标记过的,大部分未标记,和监督学习相比较,半监督学习的成本较低,但是又能达到较高的准确度,即综合利用有类标的和没有类标的数据,来生成合适的分类函数。
简言之:少部分标记,大部分未知。
强化学习(Reinforcement learning):
强化学习均使用未标记的数据,通过算法学习距离目标越来越近。
简言之:通过不断激励与惩罚,达到最终目的。
区别:
(1)监督学习有反馈,无监督学习无反馈,强化学习是执行多步之后才反馈。
(2)强化学习的目标与监督学习的目标不一样,即强化学习看重的是行为序列下的长期收益,而监督学习往往关注的是和标签或已知输出的误差。
(3)强化学习的奖惩概念是没有正确或错误之分的,而监督学习标签就是正确的,并且强化学习是一个学习+决策的过程,有和环境交互的能力(交互的结果以惩罚的形式返回),而监督学习不具备。
分类 | 算法 |
---|---|
Modelfree | Q learning, Sarsa, Policy Gradients |
Modelbased | model-based RL |
基于概率 | Policy Gradients |
基于价值 | Q learning, Sarsa |
基于价值和概率结合 | Actor-Critic |
回合更新 | Monte-carlo learning ,基础版的 policy gradients |
单步更新 | Qlearning, Sarsa, 升级版的 policy gradients |
在线学习 | Sarsa,Sarsa lambda |
离线学习 | Q learning,Deep-Q-Network |
Model-free:
不尝试去理解环境,环境给了什么就是什么。
Model-based:
理解环境并学会用一个模型来代表环境。
Model-free 中, 智能体只能 一步步等待真实世界的反馈, 再根据反馈采取下一步行动,而 Model-based的智能体可以通过想象预判断接下来将要发生的所有情况,然后选择这些想象情况中最好的一种,并依据这种情况来采取下一步的策略,这也就是 围棋场上 AlphaGo 能够超越人类的原因。
基于概率:
通过分析所处的环境, 直接输出下一步要采取的各种动作的概率, 然后根据概率采取行动, 每种动作都有可能被选中, 只是可能性不同。
基于价值:
输出所有动作的价值, 根据最高价值来选着动作。
相比基于概率的方法, 基于价值的决策部分更为确凿,选中的一定是价值高的那个。但是基于价值的方法只能选择间断不连续的动作,基于概率的方法可以用一个概率分布在连续动作中选取特定动作。
回合更新:
游戏开始后, 要等待游戏结束时总结这一回合中的所有转折点, 再更新我们的行为准则。
单步更新:
游戏进行中每一步都在更新, 不用等待游戏的结束, 可以边玩边学习。
两者相比单步更新更有效率, 所以现在大多方法都是基于单步更新。
在线学习:
本人边玩边学习
离线学习:
可以选择自己玩, 也可以通过看别人玩来学习别人的行为准则。
强化学习很依赖学习环境,不同学习环境的强化学习,可能 RL 的代码就不同。
以下为常用模块:
Numpy, Pandas (必学):用于学习的数据处理
Matplotlib (可学):用来呈现误差曲线
Tkinter (可学):可以自己编写模拟环境
Tensorflow (可学):实现神经网络与强化学习结合
OpenAI gym (可学):提供了现成的模拟环境