1.强化学习与各关键词之间的关系
图 1-1 所示为与强化学习相关的关键词之间的关系。
图 1-1 各关键词之间的关系
首先,机器学习是实现人工智能的一种技术。不同的人对人工智能的定义有不同的理解,这里不进行深入说明。不过,对于“机器学习是实现人工智能的一种技术”这一点,人们意见一致。
顾名思义,机器学习是让“机器”进行“学习”的方法。这里的“机器”叫作模型,实际上是含有参数的数学式。对模型的参数进行调整,使之与给定的数据拟合的行为叫作“学习”(图 1-2)。
图 1-2 机器学习的机制
深度学习是机器学习中的一种模型。将神经网络模型叠加成多层模型(使之变深),就形成了深度神经网络(Deep Neural Network,DNN)。通过某些学习方法让 DNN 进行学习,就叫作深度学习。
对模型的参数进行调整,使之与数据拟合的学习方法一共有 3 种,分别是监督学习、无监督学习和强化学习。
■ 监督学习
事先给定数据和答案(标签),然后对模型的参数进行调整,让输出(标签)与给定的数据一致。
■ 无监督学习
事先仅给定数据,然后对模型的参数进行调整,以提取数据的特征(结构或表征)。
■ 强化学习
事先给定一个可以根据行动得到奖励的环境(任务),然后对模型的参数进行调整,以便让不同状态下的行动与奖励联系起来
监督学习是最容易理解且使用最广泛的学习方法。这里我们以图像分类为例来介绍一下。首先准备一个数据集,在这个数据集中,每张图像都有对应的标签,用来表明这张图像是哪种动物(这称为监督数据)。然后,为了在输入图像后让模型输出正确的标签,对模型的参数进行调整。我们可以使用谷歌公开的 Teachable Machine 在浏览器上尝试进行图像分类。
这里介绍一下 Teachable Machine 的用法。用网络摄像头对着某样物体,并按下某种颜色的按钮,此时拍摄的这张照片就可以与所按下的按钮的颜色对应起来。这里的颜色就是标签。在图 1-3 中,我们设置“企鹅 = 绿色”,让模型进行学习。在图 1-4 中,我们设置“猫 = 紫色”,让模型进行学习。这样一来,当图像为企鹅时,模型输出绿色;当图像为猫时,模型输出紫色。这个例子说明,为了让模型能够根据输入的图像输出正确的标签,Teachable Machine 会调整内在的模型参数。
图 1-3 在 Teachable Machine 上让模型学习“企鹅 = 绿色”
图 1-4 在 Teachable Machine 上让模型学习“猫 = 紫色”
无监督学习不会事先给定标签。因为给定的只有数据,所以叫作“无监督”。由于没有标签,所以模型学习的是数据内部的结构(structure)和表征(representation)等。比如,在输入某个样本后,模型会根据该样本在全体数据中的位置调整参数,输出表示该数据的表征(向量)。
这里具体解释一下什么是“学习数据的结构”。一个相近的例子是生物学中分类框架的构建。人类归属于人属,并和黑猩猩、大猩猩一样归属于人科。这样的分类并不是从一开始就确定的,而是在对各种各样的动物进行观察的基础上,通过积累经验而总结出来的。也就是说,这个结构是仅根据数据推测出来的,这就是一种无监督学习。这种推测结构的无监督学习方法包括聚类等。
那么,什么是“学习数据的表征”呢?较为相近的例子是数据压缩。压缩后的数据之所以可以代表原来的数据,是因为压缩后的数据中包含了原数据的一些特征。自编码器(autoencoder)就是一种获取压缩表征的方法。
自编码器能够根据压缩后的向量(图 1-5 中的 Z)复原原始数据。负责压缩的是编码器(encoder),负责复原的是解码器(decoder)。图 1-5 展示的是将音频数据用编码器压缩,再用解码器复原的过程。编码器和解码器都是模型,都会对参数进行调整,调整的目的分别是压缩音频和把压缩后的向量复原为原始音频。
图 1-5 将音频数据用编码器压缩,再用解码器复原
(引自“MusicVAE:Creating a palette for musical scores with machine learning”)
自编码器的学习结束之后,可以从编码器中得到音频数据的压缩表征。使用压缩表征可以实现很多有趣的事情。比如,将多个音频数据用编码器压缩,然后混合,再用解码器复原,就可以得到全新的音频。借助 Beat Blender,我们可以听到 4 种打击乐混合的声音(图 1-6)。
图 1-6 Beat Blender
(引自 Beat Blender 网站)
图 1-6 中左侧正方形的 4 个角代表 4 种打击乐。移动正方形中白色的点可以改变合成率。将白点按轨迹移动,可以听到不同合成率下的声音。
近几年涌现出很多使用 DNN 来获取压缩表征的方法。当然,这也是因为 DNN 是一种擅长从数据中提取特征的模型。我们会在第 6 章介绍将压缩表征用于强化学习的方法。
强化学习与前面两种机器学习方法不同,它给定的是环境,而不是数据。我们可以把环境理解为到达某种状态即可获取奖励的空间,其中定义了“行动”以及与行动对应的“状态”的变化。简单来说,强化学习就像游戏一样。比如,在游戏中,按下按钮后角色会跳跃,那么“按下按钮”就相当于行动,“角色跳跃”就相当于状态的变化。到达终点之后,就可以获得“奖励”。
实际上,强化学习中使用的“环境”以游戏为主。本书使用的 OpenAI Gym 库就收集了很多用作强化学习环境的游戏(图 1-7)。在研究领域,Atari 2600 游戏机的游戏经常被用于测试强化学习模型的性能。
图 1-7 OpenAI Gym 中收集的 Atari 2600 中的游戏
(引自 Gym 网站)
强化学习需要对模型的参数进行调整,以便从环境中获取奖励。此时,模型是一个接收“状态”并输出“行动”的函数。借助 Metacar,我们可以在浏览器上体验强化学习模型的机制(图 1-8)。Metacar 在浏览器上准备了一个汽车行驶的环境,我们可以在这个环境中进行模型的学习。另外,还可以查看模型学习结果,也就是模型对哪种状态下的哪种行动的评价较高。
图 1-8 Metacar 中的模型识别到的状态及相应的行动评价
本节整理了与强化学习相关的关键词。强化学习是一种机器学习方法。机器学习方法包括监督学习、无监督学习和强化学习 3 种,我们通过示例分别介绍了它们的机制。下一节将介绍各机器学习方法和强化学习的不同。