1. 什么是强化学习?
通常我们可以将机器学习分成三个类别:
- 监督学习
- 非监督学习
- 强化学习
监督学习
每个类型的机器学习的应用都是不一样的,例如就监督学习的话,通常用来做Classification或者Regression,例如下图
这是一个Classification的应用,我们通过训练包含神经网络的智能体,使其能够做到输入一张图片,输出对于图像的辨识之后的一组概率值,例如上面输入一只猫的,输出是猫的概率为99%
为什么叫监督学习呢,因为一开始没经过训练的网络是无法辨识出是一只猫的,可能是其他的动物,这样就产生了LOSS,我们需要告诉智能体:你见到这种特征之后应当输出“是猫”,也就是使用梯度下降算法来减少LOSS的过程。就类似于监督智能体来学习,告诉他结果,并让他的输出尽量靠近我们指定的结果。
非监督学习
而非监督学习室不需要我们指定结果,而是让机器自己去辨识里面的一些特征,并且能够实现自己对特征的捕获或者其他操作,例如下面非监督学习的常见应用之一:聚类
强化学习
强化学习的基本方式是:我们给机器人提供一个环境,让机器人在这个环境中做各种事情,然后学习到那些事情是好的哪些是坏的,然后保留好的行为,淘汰坏的行为。这样经过训练之后就能够让他们在特定环境下可以做出最好的动作选择。
例如由Google公司Deepmind团队出品的大名鼎鼎的AlphaGo围棋AI,他就是一开始通过监督学习,通过参照高手过招的样本来学习得到基本的下棋策略之后,再进行强化学习。最终他们可以比我们都清楚在什么情况下应该下在哪个位置是最好的。
图例:我们输入一个游戏情景(环境),经过训练的智能体能够给出对策:我应该跳起来!
2. 强化学习的三大件
在基本了解强化学习的情景之后,我们来看下强化学习最基本的三个概念
- 环境State
- 动作Action
- 奖励Reward
例如上图:一个吃星星的简单小游戏,我们初始的时候出生在最中间,此时可以记为St
,这就是环境State
接下来如果我们向下移动一个来吃掉下面的星星的话,就可以记为我们执行了At=向下
,这就是动作Action
进行向下的Action之后,此时进入了一个新的环境St+1
,因为人物处于的位置发生了改变,也就是环境更新了
与此同时我们因为吃到了星星,所以我们得到了奖励Reward记作Rt=1
(图中假设为1)。
因此一次强化学习的过程可以按照上面的τ中所描述的那样,在s1进行动作a1得到r1并进入s2,再进行a2得到r2并进入r3,在进行a3……一直到游戏结束
重点
因此强化学习的最关键的几个点就是:
- 如何进行Action的选择
- 如何定义Reward
- 如何让Reward来指导Action进行决策
前段时间有个微博上了热搜:某开发者在训练一个狼吃羊的游戏AI时,发现经过五万次训练之后,狼似乎不堪内卷,上去就选择直接一头撞死。看起来非常的滑稽和荒谬,但问题也是相当的简单。
我后面去看了下作者的源码,发现作者对于奖励的定义中,包括:
原地站着15秒得-1.5分;
一头扎死得-1.1分;
尝试绕路但是撞死得-1.1 到-2.4分
所以由于训练过程中狼根本没有吃到过羊,正数的奖励一直不会出现,因此狼在-1.1到-2.4分之间选择了最高的 -1.1,也就是自杀。
这就是一个典型的Reward设置不合理的例子,可以发现定义一个良好的Reward是我们训练成功的关键之一!
3. 强化学习的各种分类
在关于如何决策Action和如何让Reward驱动Action的决策中,有相当多的算法可以实现,例如之前文章中提到的Q-Learning算法
除此之外,还有很多其他的算法,通常我们可以分为策略学习(基于Action)和价值学习(基于Reward)两种
当然也有将两个结合起来的Actor-Critic学习模型以及各种改版
相关文献:
DQN: Mnih et al. Human-Level control through deep reinforcement learning. Nature, 2015.
DPG: Silver et al. Deterministic policy gradient algorithms. In ICML, 2014.
DDPG: Lillicrap et al. Continuous control with deep reinforcement learning. In ICLR, 2016
A3C: V Mnih et al.Asynchronous Methods for Deep Reinforcement Learning. In ICML, 2016
你比
好耶OωO