三者之间的关系
人工智能的简洁定义如下:努力将通常由人类完成的智力任务自动化。因此,人工智能是一个综合性的领域,不仅包括机器学习与深度学习,还包括更多不涉及学习的方法。
在经典的程序设计(即符号主义人工智能的范式)中,人们输入的是规则(即程序)和需要根据这些规则进行处理的数据,系统输出的是答案(见图 1-2)。利用机器学习,人们输入的是数据和从这些数据中预期得到的答案,系统输出的是规则。这些规则随后可应用于新的数据,并使计算机自主生成答案。
机器学习系统是训练出来的,而不是明确地用程序编写出来的
给定包含预期结果的示例,机器学习将会发现执行一项 数据处理任务的规则。
我们需要以下三个要素来进行机器学习
机器学习和深度学习的核心问题在于有意义地变换数据,换句话说,在于学习输入数据的有用表示(representation)——这种表示可以让数据更接近预期输出。
机器学习模型 都是为输入数据寻找合适的表示——对数据进行变换,使其更适合 手头的任务(比如分类任务)。
可以看到,图中有一些白点和一些黑点。假设我们想要开发一 个算法,输入一个点的坐标 (x, y),就能够判断这个点是黑色还是白 色。在这个例子中:
输入是点的坐标;
预期输出是点的颜色;
衡量算法效果好坏的一种方法是,正确分类的点所占的百分比。
机器学习中的学习指的是,寻找更好数据表示的自动搜索过程。
所有机器学习算法都包括自动寻找这样一种变换:这种变换可以根据任务将数据转化为更加有用的表示。
机器学习的技术定义:在预先定义好的可能性空间中,利用反馈信号的指引来寻找 输入数据的有用表示。
数据模型中 包含多少层,这被称为模型的深度(depth)。这一领域的其他名称包括分层表示学习(layered representations learning)和层级表示学习(hierarchical representations learning)。
在深度学习中,这些分层表示几乎总是通过叫作神经网络(neural network)的模型来学习 得到的。
以将深度网络看作多级信息蒸馏操作:信息穿过连续的过 滤器,其纯度越来越高(即对任务的帮助越来越大)。
神经网络中每层对输入数据所做的具体操作保存在该层的权重(weight)中,其本质是一 串数字。用术语来说,每层实现的变换由其权重来参数化(parameterize,见图 1-7)。权重有时 也被称为该层的参数(parameter)
想要控制神经网络的输出,就需要能够衡量该 输出与预期值之间的距离。这是神经网络损失函数(loss function)的任务,该函数也叫目标 函数(objective function)。
损失函数的输入是网络预测值与真实目标值(即你希望网络输出的 结果),然后输出是一个距离值,衡量该网络在这个示例上的效果好坏(见图 1-8)
深度学习的基本技巧是利用这个距离值作为反馈信号来对权重值进行微调,以降低当前示例对应的损失值(见图 1-9)。这种调节由优化器(optimizer)来完成,它实现了所谓的反向传播(backpropagation)算法 。
随着网络处理的示例越来越多,权重值也在向正确的方向逐步微调,损失值也逐渐降低。这就是训练循环(training loop),将这种循环重 复足够多的次数(通常对数千个示例进行数十次迭代),得到的权重值可以使损失函数最小。
概率建模(probabilistic modeling)是统计学原理在数据分析中的应用。它是最早的机器学习形式之一,至今仍在广泛使用。其中最有名的算法之一就是朴素贝叶斯算法。
对于给定的训练数据,朴素贝叶斯先基于特征条件独立假设学习输入和输出的联合概率分布,然后基于此分布对于新的实例,利用贝叶斯定理计算出最大的后验概率。朴素贝叶斯不会直接学习输入输出的联合概率分布,而是通过学习类的先验概率 和类条件概率 来完成。
贝尔实验室于 1989 年第一次成功实现了神经网络的实践应用,当时 Yann LeCun 将卷积神经网络的早期思想与反向传播算法相结合,并将其应用于手写数字分类问题,由此得到名为 LeNet 的网络,在 20 世纪 90 年代被美国邮政署采用,用于自动读取信封上的邮政编码。
核方法(kernel method)是一组分类算法,其中最有名的就是支持向量机(SVM, support vector machine)。
SVM 的目标是通过在属于两个不同类别的两组数据点之间找到良好决策边界(decision boundary,见图 1-10)来解决分类问题。决策边界可以看作一条直线或一个平面,将训练数据 划分为两块空间,分别对应于两个类别。对于新数据点的分类,你只需判断它位于决策边界的 哪一侧。
SVM 通过两步来寻找决策边界。
(1) 将数据映射到一个新的高维表示,这时决策边界可以用一个超平面来表示(如果数据像 图 1-10 那样是二维的,那么超平面就是一条直线)
(2) 尽量让超平面与每个类别最近的数据点之间的距离最大化,从而计算出良好决策边界(分 割超平面),这一步叫作间隔最大化(maximizing the margin)。这样决策边界可以很好 地推广到训练数据集之外的新样本。
将数据映射到高维表示从而使分类问题简化,就需要用到核技巧,其基本思想是:要想在新的表示空间中找到良好的决策超平面,你不需要在新空间中直接计算点的坐标,只需要在新空间中计算点对之间的距离,而利用核函数(kernel function)可以高效 地完成这种计算。核函数是一个在计算上能够实现的操作,将原始空间中的任意两点映射为这 两点在目标表示空间中的距离,完全避免了对新表示进行直接计算。核函数通常是人为选择的, 而不是从数据中学到的——对于 SVM 来说,只有分割超平面是通过学习得到的。
但是,SVM 很难扩展到大型数据集,并且在图像分类等感知问题上的效果也不好。SVM 是一种浅层方法,因此要想将其应用于感知问题,首先需要手动提取出有用的表示(这 叫作特征工程),这一步骤很难,而且不稳定。
决策树(decision tree)是类似于流程图的结构,可以对输入数据点进行分类或根据给定输 入来预测输出值(见图 1-11)。
随机森林(random forest)算法,它引入了一种健壮且实用的决策树学习方法,即首先构建许多决策树,然后将它们的输出集成在一起。随机森林适用于各种各样的问题—— 对于任何浅层的机器学习任务来说,它几乎总是第二好的算法。
梯度提升机(gradient boosting machine)也是将弱预测模型(通常是决策树)集成的机器学习技术。它使用了梯度提升方法,通过迭代地训练新模型来专门解决之前模型的弱点,从而改进任何机器学习模型的效果。将梯度提升技术应用于决策树时,得到 的模型与随机森林具有相似的性质,但在绝大多数情况下效果都比随机森林要好。它可能是目 前处理非感知数据最好的算法之一
自 2012 年以来,深度卷积神经网络CNN(convnet)已成为所有计算机视觉任务的首选算法。更一般地说,它适用于所有感知任务。
在实践中,如果连续应用浅层学习方法,其收益会随着层数增加迅 速降低,因为三层模型中最优的第一表示层并不是单层或双层模型中最优的第一表示层。
深度 学习的变革性在于,模型可以在同一时间共同学习所有表示层,而不是依次连续学习(这被称 为贪婪学习)。通过共同的特征学习,一旦模型修改某个内部特征,所有依赖于该特征的其他特 征都会相应地自动调节适应,无须人为干预。一切都由单一反馈信号来监督:模型中的每一处 变化都是为了最终目标服务。这种方法比贪婪地叠加浅层模型更加强大,因为它可以通过将复杂、 抽象的表示拆解为很多个中间空间(层)来学习这些表示,每个中间空间仅仅是前一个空间的 简单变换。
深度学习从数据中进行学习时有两个基本特征:第一,通过渐进的、逐层的方式形成越来 越复杂的表示;第二,对中间这些渐进的表示共同进行学习,每一层的变化都需要同时考虑上 下两层的需要。总之,这两个特征使得深度学习比先前的机器学习方法更加成功
深度学习用于计算机视觉的两个关键思想,即卷积神经网络和反向传播。
长短期记忆(LSTM,long short-term memory)算法是深度学习处理时间序列的基础。
三种技术力量在推动着机器学习的进步