1.1 机器学习分类
1.1.1 监督学习
你可能已经熟悉了监督学习的概念,监督学习是被研究得最多且最著名的机器学习方法。它的基本问题是,当给定一系列带标签的数据时,如何自动构建一个函数来将某些输入映射成另外一些输出。虽然这听起来很简单,但仍存在一些棘手的问题,计算机领域也是在最近才成功解决了部分问题。监督学习的例子有很多,包含:
- 文本分类:电子邮件是否是垃圾邮件?
- 图像分类和目标检测:图片包含了猫还是狗还是其他东西?
- 回归问题:根据气象传感器的信息判断明天的天气。
- 情感分析:某份评价反应的客户满意度是多少?
这些问题貌似不同,但思想一致——我们有很多输入输出对,并想通过学习它的规律来让未来的、当前不可见的输入能产生准确的输出。根据“标准答案”数据源给出的已知答案来学习,这就是监督一词的由来。
1.1.2 非监督学习
另外一个极端就是所谓的非监督学习,它假设我们的数据没有已知的标签。它的主要目标是从当前的数据集中学习一些隐藏的结构。这种学习方法的常见例子就是对数据进行聚类。该算法用于将数据分类成不同组,以揭示数据间的关系。例如,想要找到相似的图片或者有类似行为的客户。
另一类正变得越来越流行的非监督学习方法是生成对抗网络(Generative Adversarial Network,GAN)。当有两个相互竞争的网络时,一个网络试着生成假数据来愚弄第二个网络,而第二个网络则努力将伪造的数据和真实的采样数据区分开。随着时间的流逝,两个网络都通过捕获数据中一些细微的特定模式变得越来越强大。
1.1.3 强化学习
RL则处于第三阵营,介于完全监督和完全没有预定义标签之间。它会用到很多已经比较完善的监督学习方法来学习数据的表示,比如用深度神经网络(deep neural network)来进行函数逼近、随机梯度下降和反向传播。但它会用不同的方式来使用这些方法。
本章接下来的两节将介绍RL方法的一些具体细节,包括用严格的数学形式来建立假设和抽象。而本节会用比较不正式但很容易理解的方式来比较RL和监督学习以及非监督学习之间的区别。
想象在某环境下有个需要选择动作的智能体。(本章后面会给出“智能体”和“环境”的详细定义。)迷宫中的机器老鼠就是一个很好的例子,当然你也可以想象一个无人操作的直升机在盘旋,或一个国际象棋程序要学着如何击败一名大师级棋手。为了简单起见,我们以机器老鼠为例(见图1.1)。
图1.1 机器老鼠的迷宫世界
在本例中,环境就是迷宫,迷宫里会有一些地方有食物,还有些地方有电流。机器老鼠能够选择动作,比如左转、右转以及前进。每一时刻,它都能观察到迷宫的整体状态并据此决定选择什么动作。机器老鼠的目的是找到尽可能多的食物,同时尽可能避免被电击。这些食物和电信号代表智能体(机器老鼠)收到的奖励,是环境针对智能体选择的动作所提供的额外反馈。奖励在RL中是非常重要的概念,本章后面就会谈到它。现在,你只要知道智能体最终的目标是获取尽可能多的奖励就够了。在这个例子中,机器老鼠需要寻找大量食物并承受少量电击——对于机器老鼠而言,这比站着不动且一无所获要好得多。
我们不想将与环境有关的知识和每个特定环境下采取的最佳动作硬编码给机器老鼠——这样太消耗精力了,而且只要环境稍微发生变化,这样的硬编码就失效了。我们想要的是一套神奇的方法,让机器老鼠学着自己避开电流并收集尽可能多的食物。RL就是这样一个与监督学习和非监督学习都不一样的神奇工具,它不像监督学习那样需要预定义好标签。没有人将机器老鼠看到的所有图片标记为好或坏,也没有人给出它需要转向的最佳方向。
但是,它也不像非监督学习那样完全不需要其他信息,因为我们有奖励系统。奖励可以是得到食物后的正向反馈、遭到电击后的负向反馈,什么都没发生时则无反馈。通过观察奖励并将其与选择的动作关联起来,智能体将学习如何更好地选择动作,也就是获取更多食物、受到更少的电击。当然,RL的通用性和灵活性也是有代价的。与监督学习和非监督学习相比,RL被认为是更具挑战的领域。我们来快速讨论一下RL有哪些棘手的地方。