第1章 深度学习入门
随着计算能力的不断发展以及可使用的数据量不断增加,深度学习作为一种强大的多层架构,在过去十年受到了极高的关注。本章将介绍深度学习的概念,人工智能、机器学习和深度学习间的关系,并提供在计算机上利用 R 函数包搭建可以运行深度学习环境的教程,在随后的章节,我们将会在这个环境中,深入探讨深度学习模型的训练和使用。本章包括以下内容:机器学习与深度学习、人工智能与深度学习、机器学习算法回顾、搭建深度学习环境。
1.1 机器学习与深度学习
深度学习是一种强大的多层架构,可以用于模式识别、信号检测以及分类或预测等多个领域。
1.1.1 机器学习
在介绍深度学习之前,先介绍一下机器学习。这里所说的“学习”是指从数据中学习,是指机器(计算机)可以由数据自动决定权重参数的值,并总结出来的用于进行预测的算法。此处,预测是个非常笼统的概念,包括数值预测和类别预测。例如,机器学习中的预测可以包括预测某位消费者在一家指定的公司将会花费多少(数值预测),或者预测一笔信用卡消费中是否存在欺诈(二分类预测);也可以是一般的模式识别,如给定的图片显示了什么字母,或者这张图片中是否有猫、狗、人、脸、建筑等(多分类预测)。
这与传统的统计分析范式具有不同之处,简单来说,在过去的范式中,研究人员输入规则和根据这些规则需要处理的数据,然后输出答案,见图1.1.1。机器学习的范式是,人类输入数据以及从这些数据中预期得到的答案,系统通过机器学习输出规则,然后可以将这些规则应用于新数据以自动产生答案。因此机器学习系统是训练出来的而不是通过明确的程序制定出来的。
图1.1.1 两种解决问题的模式
机器学习任务中,计算机工作人员为它提供了许多与任务相关的示例,它在这些示例中找到了统计结构,从而*终让系统自动提出任务规则。例如,如果一个机器学习系统的目标是自动在图片上添加标签,那么首先我们需要大量已经添加过标签的图片示例,然后该系统就会通过“学习”找到特定图片与特定标签之间相关联的统计规则。机器学习与数理统计紧密相关,但它有几个重要方面与统计学不同。机器学习倾向于处理大型复杂数据集(例如,百万级规模的图像数据集,每幅图像由数万像素组成),对于这些数据集,使用贝叶斯分析等经典统计分析进行处理是不切实际的。因此,机器学习,特别是深度学习,是以工程为导向的,使用了相对较少的数理统计理论。机器学习是一个需要动手实践的学科,其中更多的想法是靠实践来证明的,而不是依靠理论推导来证明。
1.1.2 从数据中学习表示
为了定义深度学习并理解深度学习和其他机器学习方法之间的区别,下面首先介绍机器学习算法的工作原理。我们刚刚说过,在给定包含预期结果的示例中,机器学习将通过规则执行数据处理任务。因此,进行机器学习,我们需要以下三个要素。
(1)输入数据:例如,对于语音识别任务,输入数据可能是人类说话的声音文件;对于图像标记任务,输入数据可能是图像文件。
(2)预期输出的示例:例如,在语音识别任务中,输出示例可以是人类生成的根据声音文件转录的文档;在图像标记任务中,输出示例可以是“狗”“猫”等之类的标签。
(3)衡量算法效果的标准:这一要素是为了测量算法的当前输出与其预期输出之间的差距。测量结果可以当作反馈信号(反向传播算法得名的原因详见第2章),用来调整算法,这个调整过程就是我们所说的学习。
机器学习模型将其输入数据转换为有意义的输出,这是一个从已知的输入到输出示例中进行的“学习”过程。因此,机器学习和深度学习的核心问题是:找到数据有意义的转换,换句话说,找到更接近预期输出的输入数据有价值的表示。在进一步讨论之前,我们需要先回答一个问题:什么是表示?本质上它是一种以不同的方式来查看数据、表示数据或编码数据的过程。例如,彩色图像可以用 RGB(三原色,red,green,blue)格式(用红色、绿色、蓝色存储数据的一种格式)或 HSV(色彩模型,hue,saturation,value)格式(用色调、饱和度、明度存储数据的一种格式)表示,这些是对相同数据的两种不同表示。在处理某些任务时,使用一种格式表示可能很困难,但换另一种格式表示就会变得很简单。例如,对于“选择图像中所有红色像素”这一任务,使用 RGB 格式会更简单,而对于“降低图像饱和度”的任务,使用 HSV 格式会更简单。机器学习模型就是在为输入的数据寻找合适的表示,使其更适合手头的任务。
下面具体来看一个例子。在 x 轴、y 轴以及它们构成的(x, y)坐标系中表示一些点,如图1.1.2所示。
图1.1.2 一个分类任务示例
如图1.1.2所示,图中有一些白点和一些黑点。假设我们想要开发一种算法,该算法可以获取一个点的坐标(x,y)并输出该点是黑色和白色的可能性,显然,这是一个分类任务。
对于这个例子:1输入是点的坐标;2预期输出是点的颜色;3衡量算法好坏的标准是正确分类的百分比。
下面对数据建立一种新表示,即将白点与黑点完全分开。可用的方法有很多,这里使用的是坐标变换,如图1.1.3所示。
图1.1.3 通过坐标变换找到更好的表示
在新坐标系中,点的坐标可以看作数据的一种新表示。利用该表示,黑白分类问题可以表示为简单规则,即“黑点是 x >0”或“白点是 x <0”,这种新的表示基本上解决了该分类问题。
上述转换中人为进行了坐标变换。如果尝试让计算机自动地搜索不同可能的坐标变换,并用正确分类的点的百分比作为反馈信号来寻找*好的坐标变换,那么为了获得更好的表示而自动搜索的整个过程就是机器学习。
所有机器学习算法都具有自动查找这种变换的能力,这种变换可以根据任务将数据转换为更有用的表示。这些操作可以是前面提到的坐标变换、线性投影(可能带来信息损失)、平移、非线性操作(例如,选择特定点,如 x >0)等。机器学习算法在寻找这些变换时通常不具有创造性,它们只是在执行一遍预定义的操作,这组操作集合称为假设空间(hypothesis space)。
这就是机器学习的技术定义:以反馈信号为指导,在预定义的假设空间内搜索某些输入数据的有用表示。这项技术可以应用于广泛的领域,例如,语音识别、自动驾驶汽车等智能任务。理解了机器学习的含义后,让我们来看看深度学习的特殊之处。
1.1.3 深度学习
深度学习是神经网络、图形化建模、优化、模式识别和信号处理等学科交叉出现的一个新兴领域,是机器学习的一个分支。其工作原理和机器学习一样,也是根据反馈信号的指导,在预定义的可能空间内搜索某些输入数据的有用表示。但与机器学习的不同之处在于,深度学习强调通过连续的数据操作来学习数据中有价值的表示。通过这些操作,数据的特征抽象度越来越高,在更高阶的层中,数据表示变得越来越有意义。
因此,深度学习中的深度并不是指达到更深层次的理解,而是指一系列连续数据操作的层(层是神经网络中的一个基本概念,未来会进一步介绍该概念,现在可以把它理解为一组操作的集合)的深度。数据模型中的层数,称为模型的深度。现代深度学习通常涉及数十个甚至数百个连续的表示层,这些表示层都是从训练数据中自动学习的。这就是深度学习的独*之处,而其他机器学习方法只涉及一层或两层数据表示,因此有时也被称为浅层学习(Spencer et al.,2015)。
深度学习中的深度(多层)架构用于映射输入或观测特征与输出之间的联系,这种深度架构使深度学习特别适合处理含有大量变量的问题,同时可以把深度学习生成的特征提取(将在后面的章节详细讨论,此处理解为变量选取或变量构建)当作学习算法整体的一部分,而不是把特征提取当作一个单独的步骤。
深度学习模型的核心思想如图1.1.4所示。不论开发什么特定的深度学习模型,一般都符合这个原理图。将输入数据传入模型并且通过多个非线性层进行过滤,*后一层通过激活函数(详细介绍参见第2章,此处理解为非线性转化即可)将前面 k 层输出的表示转化为目标输出。对于分类问题,通常是使用分类器输出目标对象属于哪一类的概率;对于连续变量,则是使用激活函数输出估计值。
图1.1.4 通用深度学习框架
在深度学习中,每一个中间层的表示都是从神经网络模型中学习得到的,这些神经网络模型是一个接一个逐层堆叠的结构。神经网络这一术语是人们源于对人类大脑生理学结构和功能的模仿的期望,参考神经生物学提出的,然而,虽然深度学习中的一些核心概念的命名在一定程度上受到了大脑研究的启发,但深度学习模型不是大脑的模型。没有证据表明大脑的学习机制与现代深度学习模型中使用的学习机制相同。读者可能会读到一些科普文章,宣称深度学习的工作原理就像大脑一样,或者是模仿大脑的工作原理进行建模,但事实并非如此。如果认为深度学习与神经生物学有任何关联,那么对于该领域的新手来说,这将是一件令人困惑的事情。我们不需要那种“就像我们的头脑”一样神秘的包装,同时*好忘记在深度学习和生物学之间建立的假设联系。虽然这个期望从未真正实现,但人们很快发现神经网络非常擅长分类和预测。就现阶段的研究目的而言,深度学习就是从数据中学习有价值的表示的一种数学框架。
深度学习算法学到的表示是什么样的?让我们来看一下多层网络(图1.1.5)是如何转换数字图像以识别图像中包含的数字的。
图1.1.5 数字识别神经网络
如图1.1.6所示,这个网络将数字图像转换为与原始图像越来越不同的表示,并且提供越来越多的有关*终结果的信息。我们可以将深度网络视为多阶段信息的提纯操作,其中随着信息穿过连续的过滤器(层),其纯度(对于目标任务而言有用的信息)越来越高。
这就是深度学习的技术定义:学习数据中有价值的表示的多级方法。这是一个简单的想法——但事实证明,非常简单的机制一旦具有足够大的规模,*终将会产生神奇的效果。
图1.1.6 从数字分类模型中学习到的表示
1.1.4 深度学习的工作原理
此时,我们已经知道,机器学习是关于将输入(如图像)映射到目标(如标签)的过程,这一过程是通过观察许多输入和目标的训练数据来完成的。我们还知道,深度神经网络是通过一系列简单的数据变换(层)进行这种输入到目标的映射,并且这些数据变换是通过观察示例并从中学习得来的。现在我们来看看这种学习过程是如何发生的。
针对输入数据,神经网络中每层的具体操作都存储在该层的权重(weight)中,其本质上是一组数字。用术语来讲,每一层转换的实现是通过它的权重参数化表示(图1.1.7)而得到的(权重有时也称为该层的参数)。在此语境中,学习意味着为神经网络中所有层都找到一组权重值,以便该神经网络能够将训练数据输入正确映射到其关联的目标中。
图1.1.7 神经网络权重参数化表
展开