强化学习是一类算法, 是让计算机从零开始,通过不断地尝试, 从错误中学习, 最后找到规律, 从而达到目的的方法。用特定名词来说,就是agent会根据environment的变化采取相应的action,当结果符合我们的期望时就会得到一个正的reward,反之会得到负的reward。为了使期望reward最大化,agent会不断调整action,这就是学习的过程。
和监督学习的区别
强化学习通过reward调整action这点很容易让联人想到监督学习中的损失函数。两者的区别是监督学习是有标签的而强化学习无标签。
以下棋为例,监督学习方法是有棋谱(标签)的,机器根据棋谱调整走法。这种方法的缺陷是人类智慧有限,棋谱的方法不一定是最优的。而强化学习是从经验中学习,没有棋谱,没有人告诉机器下一步应该怎么走,完全是自发的行为,只是赢了会得到positive reward,输了会得到negtive reward。这样下很多盘棋后机器会有超出人的表现。在实际训练中,我们会训练两个agent,让它们互相下。著名的Alpha Go的训练方式是监督学习和强化学习的结合。前期用棋谱训练,等机器的技术水平到一定程度后再用强化学习的方式训练。
强化学习的难点
- reward delay
仍然以下棋为例,在实际中并不是每走一步就能看到效果,有时候为了长远考虑会有短期的牺牲。 - Agent’s actions affect the subsequent data it receives
比如在space invader游戏中,agent开始只会向左或向右移,我们要让它知道开火能获得reward。如何让机器探索未做过的action也是强化学习的重要任务。
强化学习算法分类
强化学习算法分为两类,Policy-based和Value-based。Policy-based算法会训练一个Actor,Value-based算法会训练一个Critic。两种算法可以结合起来。
Policy-based 算法
- 将神经网络作为actor,输入是机器对environment的observation(矩阵或向量表示),输出是不同的action(每一个action对应一个神经元)
- actor 的衡量标准:平均期望reward。
- 梯度上升算法,使reward最大化。
Value-based 算法
训练一个critic,作为衡量actor好坏的标准。