购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.4 机器学习和深度学习

1.4.1 什么是机器学习

要说明什么是深度学习,首先要知道机器学习(Machine Learning,ML)、神经网络、深度学习之间的关系。

众所周知,机器学习是一种通过利用数据训练出模型,然后使用模型预测的方法。与传统的为解决特定任务、硬编码的软件程序不同,机器学习是用大量的数据来“训练”的,通过各种算法从数据中学习如何完成任务。举个简单的例子,当我们浏览网上商城时,经常会出现商品推荐的信息。这是商城根据你往期的购物记录和冗长的收藏清单识别出其中哪些是你真正感兴趣的,并且愿意购买的产品。这样的决策模型可以帮助商城为客户提供建议并鼓励产品消费。

机器学习是人工智能的子领域,机器学习理论主要是设计和分析一些让计算机可以自动学习的算法。

举个例子,假设要构建一个识别猫的程序。传统上,如果我们想让计算机进行识别,需要输入一串指令,例如猫长着毛茸茸的毛、顶着一对三角形的耳朵等,然后计算机根据这些指令执行下去。但是,如果我们对程序展示一只老虎的照片,程序应该如何反应呢?更何况通过传统方式要制定全部所需的规则,而且在此过程中必然涉及一些较难定义的概念,比如对毛茸茸的定义。因此,更好的方式是让机器自学。我们可以为计算机提供大量的猫的照片,系统将以自己特有的方式查看这些照片。随着实验的反复进行,系统会不断学习更新,最终能够准确地判断出哪些是猫,哪些不是猫。

我们不给机器规则,取而代之,我们“喂”给机器大量的针对某一任务的数据,让机器自己学习,继而挖掘出规律,从而具备完成某一任务的智能。机器学习是通过算法,使用大量数据进行训练,训练完成后会产生模型,将来有新的数据进来能够进行准确的分类或预测。

机器学习的常用方法主要分为监督学习(Supervised Learning)和无监督学习(Unsupervised Learning)。

1.监督学习

监督学习需要使用有输入和预期输出标记的数据集。例如,指定的任务是使用一种图像分类算法对男孩和女孩的图像进行分类,那么男孩的图像需要带有“男孩”标签,女孩的图像需要带有“女孩”标签。这些数据被认为是一个训练数据集,通过已有的训练数据集(即已知数据及其对应的输出)来训练得到一个最优模型,这个模型就具备了对未知数据进行分类的能力。它之所以被称为监督学习,是因为算法从训练数据集学习的过程就像是一位老师正在监督学习。在我们预先知道正确的分类答案的情况下,算法对训练数据不断进行迭代预测,然后预测结果由“老师”进行不断修正。当算法达到可接受的性能水平时,学习过程才会停止。

在人对事物的认知中,我们从小就被大人教授这是鸟,那是猪,那是房子,等等。我们所见到的景物就是输入数据,而大人对这些景物的判断结果(是房子还是鸟)就是相应的输出。当我们见识多了以后,脑子里就慢慢地得到了一些泛化的模型,这就是训练得到的那个(或者那些)函数,从而不需要大人在旁边指点的时候,我们也能分辨出来哪些是房子,哪些是鸟。

2.无监督学习

无监督学习(也叫非监督学习)则是另一种研究得比较多的学习方法,它与监督学习的不同之处在于我们事先没有任何训练样本,需要直接对数据进行建模。这听起来有些不可思议,但是在我们认识世界的过程中很多地方都用到了无监督学习。比如我们去参观一个画展,我们对艺术一无所知,但是欣赏完多幅作品之后,也能把它们分成不同的派别(比如哪些更朦胧一点,哪些更写实一些,即使我们不知道什么叫作朦胧派,什么叫作写实派,但是至少能把它们分为两个类别)。

1.4.2 深度学习独领风骚

机器学习有很多经典算法,其中有一个叫作神经网络的算法。神经网络最初是一个生物学的概念,一般是指大脑神经元、触点、细胞等组成的网络,用于产生意识,帮助生物思考和行动,后来人工智能受神经网络的启发,发展出了人工神经网络。人工神经网络是指由计算机模拟一层一层的神经元组成的系统。这些神经元与人类大脑中的神经元相似,通过加权连接相互影响,并且通过改变连接上的权重,可以改变神经网络执行的计算。

最初的神经网络是感知器(Perceptron)模型,可以认为是单层神经网络,但由于感知器算法无法处理多分类问题和线性不可分问题,当时计算能力也落后,因此对神经网络的研究沉寂了一段时间。2006年,Geoffrey Hinton在科学杂志 Science 上发表了一篇文章,不仅解决了神经网络在计算上的难度,同时也说明了深层神经网络在学习上的优异性。深度神经网络(Deep Neural Network,DNN)的深度指的是这个神经网络的复杂度,神经网络的层数越多,就越复杂,它所具备的学习能力就越深,因此我们称之为深度神经网络。从此神经网络重新成为机器学习界主流强大的学习技术,同时具有多个隐藏层的神经网络被称为深度神经网络,基于深度神经网络的学习研究称为深度学习。

如图1-1所示,神经网络与深度神经网络的区别在于隐藏层级,神经网络一般有输入层→隐藏层→输出层,一般来说隐藏层大于2的神经网络叫作深度神经网络,深度学习就是采用像深度神经网络这种深层架构的一种机器学习方法。它的实质就是通过构建具有很多隐藏层的神经网络模型和海量的训练数据来学习更有用的特征,从而最终提升分类或预测的准确性。

图1-1

有计算机界诺贝尔奖之称的ACM A.M.图灵奖(ACM A.M. Turing Award)公布2018年获奖者由引起这次人工智能革命的三位深度学习之父——蒙特利尔大学教授Yoshua Bengio、多伦多大学名誉教授Geoffrey Hinton、纽约大学教授Yann LeCun获得,他们使深度神经网络成为计算的关键。ACM这样介绍他们三人的成就:Hinton、LeCun和Bengio三人为深度神经网络这一领域建立起了概念基础,通过实验揭示了神奇的现象,还贡献了足以展示深度神经网络实际进步的工程进展。

Google的AlphaGo与李世石九段惊天动地的大战,AlphaGo以绝对优势完胜李世石九段,击败棋圣李世石的AlphaGo所用到的算法实际上就是基于神经网络的深度学习算法。在自然语言处理领域,深度学习技术已经取得了很多重大突破。这些深度学习模型可以对大量的文本数据进行自动学习,自动生成丰富的语言表示,这些表示可以被用来解决多种自然语言处理任务,如火爆的ChatGPT的技术架构就是深度学习模型。人工智能、深度学习成为这几年计算机行业、互联网行业最火的技术名词。

1.4.3 机器学习和深度学习的关系和对比

如图1-2所示,深度学习(Deep Learning,DL)属于机器学习的子类。它的灵感来源于人类大脑的工作方式,这是利用深度神经网络来解决特征表达的一种学习过程。深度神经网络本身并非是一个全新的概念,可理解为包含多个隐含层的神经网络结构。为了提高深层神经网络的训练效果,人们对神经元的连接方法以及激活函数等做出了调整,其目的在于建立、模拟人脑进行分析学习的神经网络,模仿人脑的机制来解释数据,如文本、图像、声音。

图1-2

如果是传统机器学习方法,我们会首先定义一些特征,如有没有胡须,耳朵、鼻子、嘴巴的模样,等等。总之,首先要确定相应的“面部特征”作为机器学习的特征,以此来对对象进行分类识别。

而现在,深度学习方法更进一步。深度学习可以自动找出这个分类问题所需要的重要特征,而传统的机器学习则需要人工给出特征。

那么深度学习是如何做到这一点的呢?以猫狗识别的例子来说,按照以下步骤即可:

(1)确定有哪些边和角跟识别出猫和狗关系最大。

(2)根据上一步找出的很多小元素(边、角等)构建层级网络,找出它们之间的各种组合。

(3)在构建层级网络之后,就可以确定哪些组合可以识别出猫和狗。

深度学习的“深”是因为它通常有较多的隐藏层,正是因为有那么多隐藏层存在,深度学习网络才拥有表达更复杂函数的能力,这样才能识别更复杂的特征,继而完成更复杂的任务。

对于机器学习与深度学习,我们从5个方面进行比较:数据依赖、硬件依赖、特征工程、运行时间、可理解性。

1.数据依赖

机器学习能够适应各种数据量,特别是数据量较小的场景。如果数据量迅速增加,那么深度学习的效果将更加突出,如图1-3所示。这是因为深度学习算法需要大量数据才能完美理解。随着数据量的增加,二者的表现有很大区别。

图1-3

通过数据量对不同方法表现的影响可以发现,深度学习适合处理大数据,而数据量比较小的时候,用传统机器学习方法也许更合适。之前提到的预先训练过的网络在120万幅图像上进行了训练。对于许多应用来说,这样的大数据集并不容易获得,并且花费昂贵且耗时。

2.硬件依赖

深度学习十分依赖高端的硬件设施,因为计算量实在太大了。深度学习中涉及很多矩阵运算,因此很多深度学习都要求有GPU参与运算,因为GPU就是专门为矩阵运算而设计的。相反,普通的机器学习随便给一台计算机就可以运行。深度学习需要使用高端的CPU和GPU(图形处理器)。与GPU相比,CPU在处理并行计算的速度上略有落后。GPU的设计初衷是用于图形渲染,这需要大规模的并行计算来处理图像中的像素。深度学习中的许多任务也可以受益于大规模并行计算,因为神经网络中的许多操作可以同时在多个数据点上执行。GPU的高度并行化结构使其非常适合执行这些操作。

3.特征工程

特征工程是指我们在训练一个模型的时候,需要首先确定有哪些特征。在机器学习方法中,几乎所有的特征都需要通过行业专家来确定,然后手工对特征进行编码。然而深度学习算法试图自己从数据中学习特征。这也是深度学习十分引人注目的一点,毕竟特征工程是一项十分烦琐、耗费很多人力物力的工作,深度学习的出现大大减少了发现特征的成本。经典的机器学习算法通常需要复杂的特征工程。首先在数据集上执行深度探索性数据分析,然后做一个简单的降低维数的处理。最后,必须仔细挑选一些对结果预测最有用的特征传递给机器学习算法。而当使用深度网络时,不需要这样做,因为只需将数据直接传递到网络,通常就可以实现良好的性能。深度学习算法试图自己从数据中学习特征。这也是深度学习十分引人注目的一点,毕竟特征工程是一项十分烦琐、耗费很多人力物力的工作,深度学习的出现大大减少了发现特征的成本。

4.运行时间

深度学习需要花费大量时间来训练,因为有太多参数需要学习。顶级的深度学习算法需要花费几周的时间来训练。但是机器学习一般几秒钟,最多几小时就可以训练好。执行时间是指训练算法所需要的时间量。一般来说,深度学习算法需要大量时间进行训练。这是因为该算法包含很多参数,因此训练它们需要比平时更长的时间。相对而言,机器学习算法的执行时间更少。但是深度学习花费这么多时间训练模型肯定不会白费力气的,优势在于模型一旦训练好,在预测任务时就运行得很快。

5.可理解性

最后一点,也是深度学习的一个缺点。其实也算不上缺点吧,那就是深度学习很多时候我们难以理解。一个深层的神经网络,每一层都代表一个特征,而层数多了,我们也许根本不知道它们代表什么特征,就无法把训练出来的模型用来对预测任务进行解释。例如,我们用深度学习方法来批改论文,也许训练出来的模型对论文评分都十分准确,但是我们无法理解模型的规则,这样那些拿了低分的同学找你问“凭什么我的分这么低?”,你会哑口无言,因为深度学习模型太复杂,内部的规则很难理解。

传统机器学习算法就不一样,比如决策树算法,可以明确地把规则列出来,每一个规则、每一个特征都可以理解。但这不是深度学习的错(指深度学习模型太复杂,内部的规则很难理解),只能说它太厉害了,人类还不够聪明,理解不了深度学习的内部特征。 XsrO14y7Gzgga2dkpwealQ50zS64kJZjeQHHDBMXhY/pFqHhHOuISlES6IynB1g5

点击中间区域
呼出菜单
上一章
目录
下一章
×