工欲善其事必先利其器。本篇进行强化学习的初步讲解,先不进行 让人脑壳变大的证明。
“Reinforcement learning is an important type of Machine Learning where an agent learn how to behave in a environment by performing actions and seeing the results.”简单讲,强化学习是构建一个智能体,智能体通过与环境进行交互,智能体通过自身的表现,逐步提高自己的姿势水平了。
在本篇文章,你可以get到以下几个技能点:
(1)知道强化学习到底是啥,核心点是什么
(2)三种强化学习算法
(3)深度强化学习,到底深在哪里
从环境中学习是我们的本能,比如 进入社会, 成为个社会人儿。。。咳咳,,,现在想象一下,冬天,一个小孩在家看到个正在烧火的壁炉,如果此时他慢慢爬过去,它便会感觉到温暖、舒服与得劲(Positive Reward +1)。那么它可能就会认为爬向着火的壁炉是个正确的选择。
但是,这孩子有点熊,好奇心大,又动手 伸进壁炉里面,那么它可能就被烫哭了(Negative reward -1),它就便认为距离火炉太近是一个脑残的决定。一般讲,此时这个孩子就学会了,适当靠近火炉是温暖的,是个正确的做法;但是离的太近,便可能烫伤自己,是个错误的决定。
这个便是人们学习,认知的过程,强化学习就是一种从行动中学习的计算方法。
强化学习的过程
像图片那样,这是个强化学习应用于学习超级马里奥游戏的例子。强化学习过程可以建模为一个循环,其工作方式如下:
(1)我们的智能体从游戏环境中接收状态
(2)基于状态,智能体采取了一个动作(我们的代理将会向右移动)
(3)游戏环境进入到一个新的状态
(4)环境为代理提供了一些奖励(还活着:+1)
该强化学习过程,循环输出一系列状态,动作和奖励。 智能体的目标是预期累积奖励的最大化。
一 强化学习的核心---奖励假设
老王可能会问了,:“为什么强化学习的核心是奖励这块呢?"
因为强化学习是建立在奖励假设的基础上的,所有的目标都可以通过预期累积奖励的最大化来刻画。这就是为什么在强化学习中,要有最好的行为,我们需要最大化预期的累积奖励。
第t步的累积奖励可以写成:
但是,实际上,我们不能只是添加这样的奖励。更接近t步操作所提供的奖励更有可能发生。
假设你的智能体是这只小老鼠,而你的对手就是猫。目标是在被猫吃掉之前吃更多的奶酪。
正如我们在图中可以看到的那样,我们在附近吃到奶酪的可能性比接近猫的奶酪更容易(因为越接近猫,就越危险)。因此,我们需要对猫附近的奖励进行打折扣,即使它有更多的奶酪。
为了给奖励打折,我们这样做:
我们定义了一个gamma的折扣率。它介于0和1之间。
- gamma越大,折扣越小。这意味着智能体更关心长期奖励。
- 另一方面,gamma越小,折扣越大。这意味着智能体更关心短期奖励(最近的奶酪)。
折扣预期奖励公式为:
强化学习的过程,就是平衡 眼前利益 与 长期利益 的过程。
二 情节与连续任务
我们可以有两种类型的任务:情节和连续。
(1)情节任务
在这种情况下,我们有一个起点和一个终点。 这会创建一个集合:状态,行动,奖励和新状态。
例如,想想超级马里奥兄弟,一个情节是 新马里奥游戏开始到结束(当你被杀或者你达到了关卡的末尾)
(2)连续任务
这些是永远连续的任务(没有终端状态)。 在这种情况下,智能体必须学习如何选择最佳操作并同时与环境交互。
例如,使用智能体进行股票交易。 对于此任务,没有起点和终端状态,直到我们决定停止他。
三 蒙特卡罗与TD学习方法
目前主流有两种学习方法:以一个情节为单位收集奖励,进行预期最大期望奖励的计算,蒙特卡罗方法;评估每一步的奖励,时间差异学习。
(1)蒙特卡罗
当这一情节结束时(即智能体到达“终端状态”),求所有奖励之和,看看智能体玩的咋样,
然后,我们对知识进行更新,开始一个新的游戏。智能体在每次知识迭代中,决策水平逐步提高。
举个栗子:
如果我们采取刚才前面讲的老鼠的例子:
1)我们总是从同一个起点开始
2)我们设定终止状态为:猫吃了老鼠或者我们移动了> 20步,我们就会终止这一情节
3) 在情节结束时,我们列出了状态,行动,奖励和新状态。
4) 智能体计算出总奖励(看看小老鼠的表现如何)
5) 然后智能体将根据上面的公式更新
6)然后用这个新知识开始一个新情节
经过很多次迭代后,小老鼠就会表现的越来越好(当然你参数要调好,这是后话)。
(2)时间差异学习
TD学习它可没有耐心等到情节结束时,再更新最大未来期望奖励,它在情节的进行中,更新知识。
TD方法等到下一步长,进行知识更新。在时间t+1,它们使用观察到的奖励 和当前估计值。
本篇讲到这,下一节讲,强化学习的具体计算。本篇文章主要内容来源于,https://medium.freecodecamp.org/an-introduction-to-reinforcement-learning-4339519de419,后面会进行本篇再进行丰富补充。