1.2 关于学习
学习究竟是什么?简单来说,学习是在外部刺激下记住大部分以往的经验,从而能够实现改变的能力。因此,机器学习是一种工程方法,对于增加或提高自适应变化的各项技术都十分重要。例如,机械手表是一种非凡的工件,但其结构符合平稳定律,当外部环境发生变化时会变得没有任何用处。学习能力是动物特别是人特有的,根据达尔文的理论,它也是所有物种生存和进化的关键要素。机器虽然不能自主进化,但似乎也遵循同样的规律。
因此,机器学习的主要目标是学习、处理和改进数学模型,该数学模型可以通过环境提供的相关数据进行一次或连续多次的训练得到,利用该数学模型推断未来并做出决策而不需要所有影响因素(外部因素)的全部知识。换句话说,智能体(从环境中接收信息的软件实体,选择达到特定目标的最佳行动并观察其结果)采用统计学习方法,通过确定正确的概率分布来预测最有可能成功(具有最少错误)的动作(值或决策)。
我更喜欢使用术语推断而不是预测,但仅仅是为了避免把机器学习当成一种现代魔法的看法,而这种看法并不罕见。此外,需要介绍一个基本的规律:算法只有在影响实际数据时才能推断出一般的规律,并以相对较高的精度来学习算法的结构。术语预测在使用时具有物理学或系统论中的相同含义。在复杂的情况下,如使用卷积神经网络的图像分类问题,即使信息(尺寸、颜色、特征、对比度等)已经存在于数据中,模型也必须灵活到能提取和学习相关特征。
在接下来的章节中,将会简要介绍常见的机器学习方法,而数学模型、算法和实例将在后面的章节中讨论。
1.2.1 监督学习
监督学习中有教师或监督者的概念,其主要功能是提供误差的精确度量(直接与输出值相比)。在实际算法中,该功能由多组对应值(输入和期望输出)组成的训练集提供。基于训练集,可以修正模型参数以减少全局损失。在每次迭代之后,如果算法足够灵活并且数据是相关的,则模型总体精度增加,并且预测值和期望值之间的差异变得接近于零。当然,监督学习的目标是训练一个系统且该系统能够预测以前从未见过的样本。因此,模型需要具有泛化能力,以避免一个常见的称为过拟合的问题。过拟合将导致由于拟合能力过剩而导致的过度学习。这一问题将在第2章中详细讨论,可以说,过拟合的主要影响是虽然能够正确预测用于训练的样本,但其他样本的误差却很大。
图1-3中,圆圈表示训练样本点,细蓝线代表较好的泛化曲线(图中连接成了线段)。
图1-3 具有不同插值曲线的股票价格回归示例
使用相同的数据集训练两个不同的模型,分别对应于红线和绿线。红线所表示的模型不能接受,因为它的泛化能力差且预测精度低,而绿线代表的模型在趋势和预测分析中,对残差和泛化性能有非常好的折中。
一般来讲,前面所示的例子称为回归,其基于连续的输出值。相反,如果只有一个离散量表示的结果(称为类别),则该过程称为分类。有时,除了预测实际的类别,最好是确定其概率分布。例如,可以训练一种算法来识别手写字母,其输出(英文中的26个字母)是分类。另一方面,对于人类来说,当无法确定是哪一个字母时,会导致多于一个可能的结果。这意味着通过离散概率分布可以更好地描述实际输出,例如,使26个字母表示的连续值归一化,使得它们的总和为1。
图1-4是一个具有两个特征的数据集的分类实例,该实例是一个线性问题。大多数算法尝试通过施加不同的条件来找到最佳的分割超平面。在分类过程中,目标是相同的,即减少错误分类的数量并增加对于噪声的鲁棒性。例如,对于接近分割超平面(此处为直线)的三角形的点(其坐标约为[5.1-3.0]),当第二个特征受到噪声的影响时的坐标值远小于3.0时,略高一点的超平面就可能会错误地将该点分类。我们将会在后面的章节中讨论一些强大的技术来解决这类问题。
图1-4 线性分类示例
常见的监督学习应用包括:
基于回归或分类的预测性分析
垃圾邮件检测
模式检测
自然语言处理
情感分析
自动图像分类
自动序列处理(例如音乐或语音)
1.2.2 无监督学习
无监督学习方法没有任何监督,因而没有对绝对误差的衡量。当需要对一组数据根据其相似度(或距离)进行分组(聚类)时,采用无监督学习方法。例如,前面的分类图中,不需要考虑颜色或形状就可以立即识别出两个类。事实上,圆点(以及三角形)确定了一个集合,不管集合内的点之间的分离程度如何,圆点所代表的集合很容易与三角形代表的集合区分开来。这就像是当理想的样本是海洋时,仅仅考虑岛屿之间的相互位置和内部联系就可以将海洋分成几个区域。
图1-5的每个椭圆表示一个聚类,类中的点用相同的记号标记,类之间的边界点(例如,与圆形区域重叠的三角形)通过特定标准(通常是权衡距离度量)来确定所属的类别。对于模糊的分类,好的聚类方法应该考虑存在的异常值并对它们进行处理,以增加内部一致性(意味着选择使局部密度最大化的分类)和聚类之间的距离。
图1-5 二维数据集拆分为四个自然聚类示例
举例来说,分类时可以优先考虑单个点和质心之间的距离,或者属于同一聚类的点和其他聚类的点之间的平均距离。图中所有边界上的三角形彼此接近,因此最近的点是另一个三角形,其属于同一类。然而,现实生活中的分类问题往往存在着部分重叠的边界,这意味着根据特征考虑某些点时具有不确定性。
分类问题还可以从概率分布的角度进行解释,可以将每个椭圆看成是用最小和最大方差界定的多元高斯分布的面积。在整个区域中,单个的点(例如一个蓝色星号标记的点)可能属于任何一个类,但第一类(左下角)给出的概率最高,因此决定了该点属于第一类。一旦所有高斯分布的方差和平均值(即形状)变得稳定,则边界点在特定的高斯分布范围内(除了等可能的情况)。从技术上讲,可以说这种方法最大限度地提高了给定的某个数据集的高斯混合分布的可能性。这是在很多不同应用程序中用到的非常重要的统计学习的概念,本书将在第2章进行更深入的探讨。此外,本书还将讨论一些常见的聚类方法及其优缺点,并比较其在各种测试分布上的性能。
对于涉及标记和未标记数据的问题,所使用的方法为半监督学习。当需要对只含几个完整(标记)的样本的大量数据进行分类时,或者当需要对聚类算法施加一些约束时(例如,分配一些样本到特定的聚类或从某些特定聚类中去除一些样本),一般采用半监督学习方法。
常见的无监督应用包括:
对象分割(例如用户、产品、电影、歌曲等)
相似性检测
自动标记
推荐引擎
1.2.3 半监督学习
在许多问题中,标记样本的数量与所有样本的数量相比非常小。直接监督方法是不可行的,因为用于训练模型的数据不能代表整个分布,因此有必要在监督策略和无监督策略之间找到折中。为了解决这些问题,需要研究半监督学习。这是个前沿的研究课题,本书不会涉及(感兴趣的读者可以查看Mastering Machine Learning Algorithms一书,作者为Bonaccorso G.,由Packt出版)。半监督学习方法追求的主要目标如下:
考虑到整个数据集,将标记的样本扩展到未标记的样本。带有标记的样本作为吸引子,将其影响扩展到邻居样本,直到达到某个平衡点。
执行分类训练模型(通常是支持向量机(SVM),见第7章),使用标记的样本强化实现良好分类所需的条件,同时尝试利用未标记的样本作为平衡样本被标记的样本所影响。当数据集仅包含少量标记样本时,半监督SVM的表现很好,能显著减少构建和管理非常大的数据集的障碍。
通过考虑数据集的结构实现非线性降维。高维数据集(即图像)中的约束导致的问题是最具挑战性的问题之一,寻找差异最小的原始数据的低维分布是三维以上数据进行可视化的基本任务。此外,关键是在没有特别多的信息丢失的情况下降低维度,同时使用简单的模型。在本书中,将讨论一些常见的线性技术(例如主成分分析(PCA)),以便读者能够理解如何在不影响最终精度但增加训练速度的情况下移除某些特征。
可以看出,半监督学习利用了发现分割超平面(分类)以及自动发现结构关系(聚类)的能力。不失一般性,真正的监督者根据底层信息层纠正决策(表示关系)。为了更好地理解这个逻辑,假设有一组用户,其中只有1%被标记(为简单起见,假设他们是均匀分布的),我们的目标是为剩余部分找到最准确的标签。聚类算法可以根据相似性重新排列结构(因为标记的样本是均匀的,可以期望找到其中心是标记,而邻居样本点是未标记的)。在一些假设下,我们可以将聚类中心的标签传播给邻居样本,重复这个过程,直到每个样本的标签变得稳定。此时,标记了整个数据集,可以使用其他算法来执行其他特别的操作。显然,这只是一个例子,但在现实生活中,考虑到半监督方法所达到的准确性,标记数百万个样本的情况也是极其常见的。
1.2.4 强化学习
在无法提供实际的监督数据时,强化学习使用基于环境提供的反馈来进行学习。在这种情况下,反馈得到的更多是定性的信息,并不能确定其误差的精确度量。在强化学习中,这种反馈通常被称为奖励(reward)(有时候,负面的反馈被定义为惩罚),而了解在一个状态下执行某个行为是否是正面的是非常有用的。最有用的行为的顺序是必须学习的策略,以便能够为得到最高的即时和累积奖励做出最好的决策。换句话说,一个动作可能是不完美的,但就整体策略而言,它必须能够提供最高的奖励。理性的决策总是追求增加总财富是这个概念的基础。看(see)的能力是高级智能体的显著标记,而短视者往往无法正确评估其即时行动的后果,因此他们的策略总是次优的。
当处于经常动态变化的不确定环境时,我们无法实现对误差的精确测量,因此强化学习成为一种非常有效的方法。在过去几年中,许多经典算法被应用于深度神经网络来学习玩Atari视频游戏(一款美国流行的电子游戏)的最佳策略,并训练智能体如何将正确的动作与表示状态的输入(通常是屏幕截图或内存转储)相关联。
图1-6给出了训练深度神经网络玩著名的Atari视频游戏的示意图。输入是一个或多个连续的截图(捕获瞬时的动态画面就足够了),通过神经网络中不同层的处理(稍后讨论)产生表示特定状态转换的策略的输出。应用输出策略后游戏产生的反馈(作为奖励或惩罚),将反馈用于优化输出直到网络变得稳定。在这种情况下,游戏状态能够被正确识别,保证输出的策略始终是最佳的。最终,总奖励超过了预定义的值。
图1-6 深层强化学习体系的一般结构
我们将在第15章和第16章中讨论强化学习的一些例子,这些例子致力于引入深度学习和TensorFlow。一些常见的例子如下:
自动机器人控制
游戏
基于反馈的股票交易分析
1.2.5 计算神经科学
得益于计算神经科学领域的研究成果,很多机器学习算法已被定义和完善。同时,最广泛的自适应系统是其神经系统可以与环境进行有效互动的动物。从机械的角度来看,我们需要假设在巨大的神经元网络内工作的所有过程负责所有的特征计算,从低级感知到高级抽象(如语言、逻辑推理、艺术创作等)。
在1900年年初,Ramóny Cajal和Golgi发现了神经细胞和神经元结构,但他们认为这些神经细胞的行为纯粹是计算性的。两位科学家绘制了代表输入单元(树突)、实体(体细胞)、主要通道(轴突)和输出门(突触)的草图,但是细胞群的动态和学习机制没有被完全理解。神经科学界确信学习等同于持续的结构性变化,但他们无法准确定义学习过程中发生的变化。1949年,加拿大心理学家Donald Hebb提出了一个著名的规则(更广泛的讨论可以参阅图书Mastering Machine Learning Algorithms和Theoretical Neuroscience),该规则主要集中在神经元的突触可塑性上。换句话说,变化的因素是连接到大量其他神经元的输出门的数量和特性。Hebb认为,如果神经元产生尖峰并且突触将其传播到另一个行为方式相同的神经元,则连接会增强,否则连接会减弱。这似乎是一个非常简单的解释,但它让你明白了基本神经元如何实现如检测对象的边界、对信号进行去噪,甚至找到具有最大方差的维度(PCA)的操作。
计算神经科学领域的研究一直持续到今天,许多公司和高校目前正在使用最先进的神经影像技术研究大脑的计算行为。这些发现有时令人惊讶,因为它们证实了仅凭想象但从未观察到的东西。特别是,大脑的某些区域可以轻松管理监督和无监督的问题,而其他区域则利用强化学习来预测最可能的未来感知。例如,动物很快学会将脚步声与遇到捕食者的可能性联系起来,并学习如何应对。以同样的方式,其通过来自眼睛的输入可以提取检测对象的有用信息。这种程序在机器学习中非常普遍,令人惊讶的是,许多算法实现了与动物大脑相同的目标。当然,人类思维的复杂性超出了任何完美的解释,但是使用计算机软件仔细分析这些行为大大提高了决策的速度。在本书的最后,我们将讨论深度学习的基础知识,这是机器学习最先进的分支。但是,请读者尝试理解所有的动态行为(即使它们看起来很抽象),因为底层逻辑总是基于非常简单和自然的机制,你的大脑很可能正在执行边读书边学习的操作!