深度学习原理与PyTorch实战(第2版)
上QQ阅读APP看书,第一时间看更新

第1章 深度学习简介

作为开篇,本章将对深度学习进行简要的介绍,内容包括深度学习与人工智能、深度学习的历史渊源、深度学习的影响因素以及取得成功的原因,并从深度网络的超参数、架构和训练方式等方面进一步剖析深度学习的本质。

什么是深度学习?稍微读过一些科普文章的人都知道,所谓的深度学习,就是一种利用深度人工神经网络来进行自动分类、预测和学习的技术。因此,深度学习就等于深度人工神经网络,如图1.1所示。

图1.1 深度人工神经网络示意图

图1.1中黑色的圆圈表示一个人工神经元,连线表示人工神经突触。信息从网络最左侧的节点传入,经过中间层节点的加工,最终由最右侧4个节点输出到外界。神经网络从左到右排成多少列就称为有多少层。多少层算深呢?通常情况下,我们认为超过三层的神经网络都可以叫作深度神经网络。而目前人们已经可以实现深达1000多层的人工神经网络了。

不过,以上对深度学习的认识虽然没有错误,但并不全面,还需要从深度学习与人工智能的关系及其历史渊源等方面来充分理解什么是深度学习。

1.1 深度学习与人工智能

首先,深度学习属于一种特殊的人工智能技术,它与人工智能及机器学习的关系如图1.2所示。

图1.2 人工智能、机器学习、人工神经网络、深度学习之间的关系

人工智能的覆盖面非常广,包括自动推理、联想、学习等。机器学习则是人工智能的一个重要分支,它在20世纪八九十年代才逐渐发展起来,主要研究如何让计算机具有自我学习的能力。事实上,机器学习的算法有上千种,包括决策树算法(decision tree)、支持向量机(support vector machine,SVM)、遗传算法(genetic algorithm),等等。

近些年来,基于人工神经网络的机器学习算法日益盛行起来,逐渐呈现出取代其他机器学习算法的态势,这主要是因为人工神经网络中有一种叫作反向传播算法的关键性技术。该算法可以精确地调整人工神经网络出现问题的部件,从而快速降低网络进行分类或预测的错误率,这使得人工神经网络在诸多机器学习算法中胜出。所以,反向传播算法是人工神经网络的核心。

在应用层面,与一般的机器学习技术相比,深度学习最大的特色是可以处理各种非结构化数据——特指文本、图像、音频、视频,等等。而一般的机器学习更适合处理结构化数据,即可以用关系型数据库进行存储、管理和访问的数据。

通过对比深度学习与人工智能及一般机器学习技术之间的区别和联系,我们可以从横向的、多学科的角度来理解深度学习;另外,我们还需要从纵向的、历史渊源的角度进一步了解深度学习。

1.2 深度学习的历史渊源

尽管人工神经网络的诞生比人工智能还要早上十多年,但是在人工智能的历史上,人工神经网络一直是一个旁支,它被人们称为人工智能的“连接学派”。这一旁支曾经迎来过短暂的辉煌,但是真正爆发还是近些年的事情。

1.2.1 从感知机到人工神经网络

人工智能诞生于1956年的达特茅斯会议,而人工神经网络的诞生比人工智能还早,可以追溯到1943年。当时,第一个人工神经元被发明了出来,这就是著名的麦克洛克麦-皮茨(McCulloch-Pitts)模型。不过,他们的工作并未引起业内重视,人工神经网络的研究一直进展缓慢。直到1957年,弗兰克·罗森布莱特(Frank Rosenblatt)提出了感知机(perceptron)模型,才点燃了人们探索人工神经网络的热情,并使其成为业界探索人工智能的另类路径。这种方法并不是直接从功能的角度模拟人类的智能,而是尝试构建一个类似于大脑神经网络的装置,然后通过结构模拟的方法来解决问题。

然而,好景不长。1969年,马文·明斯基(Marvin Lee Minsky)与西摩尔·派普特(Seymour Aubrey Papert)在其合著的书中开宗明义地指出了感知机模型的局限性:它甚至连极其简单的XOR(异或)问题都无法解出来,何况更高级的智能呢?所谓XOR问题,就是将输入的两个二进制串按照每一个位进行比较,不同的位就输出1,否则输出0。例如,输入的两个二进制串是1001和0111,则XOR就会输出1110。显然,XOR问题是一个基础、简单的问题。然而把1001及0111输入给感知机神经网络,无论如何变换参数,如何训练,它都不能输出正确的答案。就这样,人工神经网络被打入了冷宫。碍于马文·明斯基在人工智能圈中的地位和声势,研究者几乎不敢再发表有关感知机和神经网络的文章了,这种局面一直持续了将近20年。

历史的进程需要一名拯救者来挽救连接学派的颓势,而他就是大名鼎鼎的杰弗里·辛顿(Geoffrey Everest Hinton)。1986年,辛顿与合作者大力发展了人工神经网络的反向传播算法,从而可以构造两层以上的人工神经网络,并且可以有效地进行学习与训练。对明斯基XOR问题的回应就在于深度。两层以上的神经网络可以很轻松地解决XOR问题,从而回击了明斯基的诘难。不仅如此,多层人工神经网络配备上反向传播算法,还能帮助人们解决大量的模式识别和预测问题。尽管当时的精度还有待提高,但是人工神经网络作为一种通用的算法,在20世纪80年代末到90年代初曾经风靡一时,它已经演化成可以与经典的人工智能符号学派和新兴的人工智能行为学派并驾齐驱的连接学派。

然而好景不长,人工神经网络并没有继续沿着深度的方向发展下去。这一方面是受限于当时的计算能力,另一方面是因为缺乏大规模高质量的训练数据。而且,神经网络本身就是一个黑箱,谁也不敢保证神经网络在深度这个方向上一定能够取得更好的结果和精度。于是,学术界的焦点朝向了另一个方向:寻找神经网络的基础理论。到了20世纪90年代末,在两位俄罗斯裔数学家弗拉基米尔·万普尼克(Vladimir Naumovich Vapnik)和亚历克塞·泽范兰杰斯(Alexey Yakovlevich Chervonenkis)的大力推进下,统计学习理论蓬勃发展了起来,它不仅奠定了模式识别问题的数学基础,而且创造出了支持向量机这种极其实用简洁的工具。与传统神经网络希望通过加深网络来提升精度相反,支持向量机的解决方案是提升数据的维度,在高维空间中寻找能够将数据进行精准划分的方法,这种方法在数据量不是很大的情况下非常奏效。就这样,支持向量机成为20世纪90年代到21世纪初的宠儿。

然而,真理似乎总是掌握在少数人手中。在主流学术圈关注支持向量机的时候,辛顿仍然在默默地坚持着深度网络的方向。2006年,辛顿在《科学》杂志上发表了一篇题为《利用神经网络进行数据降维》的文章,提出了深度神经网络(deep neural network,DNN)模型,并指出如果增加神经网络的层数,并且精心设计训练网络的方式,那么这样深层次的神经网络就会具有超强的表达能力和学习能力。

虽然很多人很早就猜想深度的神经网络也许能够大大提高分类的准确度,但是没有人真正地严格验证过这个结论。原因在于当时的硬件水平和数据量都远远无法与深度的神经网络相匹配,再加上深度网络需要特殊的训练技巧,阻碍了人们往深度方向去探索。而辛顿始终坚持着“深度”的梦想,终于在2006年实现了突破,向世人证明了“深度”的作用。

1.2.2 深度学习时代

辛顿有关深度神经网络的研究激励了大量的学者朝着这个方向前进。借助辛顿的深度网络模型,人们首先在语音领域取得了突破。微软的邓力邀请辛顿加入语音识别的深度神经网络模型开发,大幅提升了识别准确度。然而,辛顿并不想止步于此,他需要更大的数据集来训练超深度的网络,从而向世人展示“深度”的神奇威力。然而,这么大规模的数据集到哪里去找呢?

此时,一位华裔女科学家走上了历史的舞台,她就是美国斯坦福大学的计算机视觉专家李飞飞。2006年,李飞飞还是一个名不见经传的小人物。然而,她怀揣着一个不小的梦想:构造一个大规模的有关图像的数据库。她将其命名为ImageNet,以仿效自然语言处理领域中的WordNet,为上千种物体的图像进行标注。但是,当她写报告申请研究经费的时候却遭到了无情的拒绝。然而,李飞飞并未放弃梦想,她最终找到了亚马逊的众包平台——“亚马逊土耳其机器人”(Amazon Mechanical Turk),借助大量网友的力量构造出了ImageNet这样一个大规模、高精度、多标签的图像数据库。

到了2010年,ImageNet已经收录了100多万张图像。如此巨大的数据量应该能促进计算机视觉领域的大发展,于是李飞飞开始举办每年一次的图像识别大赛:ImageNet竞赛。正是这样的竞赛为辛顿提供了一个完美的舞台。那时,他早已准备好要让深度神经网络大显身手了。2012年,辛顿和他的两个学生亚历克斯·克里泽夫斯基(Alex Krizhevsky)和伊利亚·索特思科瓦(Ilya Sutskever)采用了一个深层次的卷积神经网络(AlexNet),在ImageNet竞赛的分类任务中表现突出,技压群雄,将分类错误率从25%降到了17%。其实,卷积神经网络(convolutional neural network,CNN)也不是新事物,它于20世纪80年代发展起来,最早用于模仿动物视觉皮层的结构。到了1998年,这种网络被杨立昆(Yann LeCun)等人成功应用到了手写数字的识别上,大获成功。然而将卷积神经网络做到8层,而且不需要任何预处理就能将图像分类任务做到这么好,这还是头一次。从此,深度神经网络就成了ImageNet竞赛的标配,从AlexNet到GoogleNet,人们不断增加网络的深度,识别准确率直线提升。2012年以后,深度学习开始在学术圈流行起来。

1.2.3 巨头之间的角逐

然而,深度学习更大范围的应用和工业界是分不开的。2011年,谷歌X实验室的杰夫·迪恩(Jeffrey Adgate Dean)和吴恩达等人采用深度学习技术,让谷歌大脑深度神经网络观看了从YouTube中提取出来的30万张图像,并让机器自动进行提炼。结果,谷歌大脑自己学出了一张“猫”脸,如图1.3所示。这张猫脸具有鲜明的“机器烙印”。第二天,这张猫脸便出现在了各大网站的头条位置,深度学习开始引起工业界的关注。

图1.3 谷歌大脑从30万张图像中自学出来的“猫”脸

在看到深度学习技术的发展前景后,以谷歌为代表的各大公司开始疯狂并购人工智能、深度学习初创公司和团队。这不仅引发了人工智能人才的全球争夺战,也促使更多的人才和创业公司投入到人工智能的大潮之中。

深度学习技术在语音和图像领域的成功应用,激发了人们将该技术扩展到自然语言处理领域的热情。首先,2013年,谷歌的托马斯·米科洛夫(Tomas Mikolov)提出了Word2Vec技术(参见第9章),它可以非常快捷有效地计算单词的向量表示,这为大规模使用人工神经网络技术处理人类语言奠定了重要基础。

2014年,谷歌开始尝试利用深度的循环神经网络(recurrent neural network,RNN)来处理各种自然语言任务,包括机器翻译、自动对话、情绪识别、阅读理解等。尽管目前深度学习技术在自然语言类任务上的表现还无法与图像类任务相媲美,但已取得了长足的进步。2016年,谷歌的机器翻译技术取得重大突破,采用了先进的深度循环神经网络和注意力机制的机器翻译在多种语言上已经接近人类的水平(参见第10章和第11章)。

除了在语音、图像和自然语言处理等传统任务上的发展,科学家还在不断地拓宽深度学习的应用范围。在与强化学习这一古老的机器学习技术联姻后,深度学习在计算机游戏、博弈等领域同样取得了重大进展。2015年,被谷歌收购的DeepMind团队研发了一种“通用人工智能”算法,它可以像人类一样,通过观察电子游戏的屏幕进行自我学习,利用同一套网络架构和超参数,从零开始学习每一款游戏,并最终打通了300多款雅达利游戏,在某些游戏上的表现甚至超越了人类(参见第15章)。

2016年3月,DeepMind团队又在博弈领域取得了重大突破。AlphaGo以4∶1的大比分战胜人类围棋冠军,让计算机围棋这一领域的发展提前了至少十年。2017年10月,DeepMind团队创造的AlphaGo升级版AlphaGo Zero再一次取得重大突破,它可以完全从零开始学习下围棋,而无须借鉴任何人类的下棋经验。仅经过大约3天的训练,AlphaGo Zero就达到了战胜李世石的围棋水平;而到了21天以后,世界上已经没有任何人类或程序可以在围棋上战胜它了。AlphaGo的成功不仅标志着以深度学习技术为支撑的新一代人工智能技术大获全胜,更暗示着人工智能的全新时代已经到来。

我们列出了人工神经网络以及深度学习历史上的大事件,绘制了一条时间轴,方便读者查看,如图1.4所示。

图1.4 人工神经网络、深度学习大事件

1.3 深度学习的影响因素

影响深度学习爆发的主要因素有3个,分别是大数据、深度网络架构和GPU。

1.3.1 大数据

前面提到,深度神经网络并不算新技术,早在20世纪八九十年代,人们就提出了增加神经网络的深度以获得更高准确度的设想,但是由于当时硬件发展速度跟不上,人们很难实现深度的神经网络。当然,更主要的原因是当时根本没有足够的大规模数据输入给深度神经网络,因此自然也就无法发挥深度的作用。伴随着网络深度的增加,待拟合的参数自然也会增加,如果没有与其相匹配的海量数据来训练网络,这些参数就完全变成了导致网络过拟合的垃圾,无法发挥作用。

然而,到了21世纪的第二个十年,一切都不一样了。有数据显示,2014年,整个互联网上每秒钟就有60万条信息在Facebook上分享,2亿封邮件、10万条推文发出,571个新网站被建立,1.9E()字节的数据被交换[1]。随着互联网特别是移动互联网时代的到来,我们每一个动作都会被网络服务器记录下来,这些数据促使人类一下子进入了大数据时代。

大数据时代的到来为深度神经网络的大规模应用铺平了道路,加深网络获得更高精度的设想终于在海量数据的基础上得以验证。图1.5所示的曲线很好地说明了数据量的大小对深度神经网络分类和预测准确度的影响。

图1.5 机器学习模型的预测准确度随数据量的增加而变化的曲线

图1.5中横轴表示的是输入神经网络模型的数据规模,纵轴表示的是模型所能达到的分类或预测准确度。实曲线对应的是采用了深度学习技术的神经网络模型,虚曲线代表的则是未采用深度学习技术的模型(例如SVM算法)。对比这两条曲线,我们可以清晰地看到,随着数据量的增加,采用了深度学习方法的模型可以持续不断地提高准确度,而传统算法则会很快地遇到精确度方面的瓶颈。

由此可见,大数据与深度学习技术的搭配才是促使人工智能突飞猛进发展的关键因素。

1.3.2 深度网络架构

有人说,如今的深度学习革命完全是拜大数据所赐,只要拥有海量的数据,随便调试一个深度学习模型,就可以获得很好的预测结果。这种认识是非常片面的,虽然大部分深度学习技术早在20世纪八九十年代就发展了起来,但是当面对一个具体问题时,应该采用什么样的网络架构,如何选取超参数,如何训练这个网络,仍然是影响学习效率和问题解决的重要因素。

所谓的深度网络架构,就是整个网络体系的构建方式和拓扑连接结构,目前主要分为3种:前馈神经网络、卷积神经网络和循环神经网络。

01.前馈神经网络

前馈神经网络也叫全连接网络(fully connected neural network)。在这种结构中,所有的节点都可以分为一层一层的,每个节点只跟它的相邻层节点而且是全部节点相连(也就是全连接的)。这些层一般分为输入层(例如图1.1中最左侧的一列节点)、输出层(图1.1中最右侧的4个节点)以及介于二者之间的隐含层[2]。这种前馈神经网络是目前应用最多的一类神经网络。

02.卷积神经网络

另外一种常见的网络架构是卷积神经网络(CNN,详见第5章),它一般用于处理数字图像,其架构通常如图1.6所示。

图1.6 卷积神经网络架构示意图

图1.6中每一个立方体都是一系列规则排列的人工神经元集合。每个神经元到上一层次的连接称为卷积核,这是一种局域的小窗口。图1.6中的小锥形可以理解为从高层的某一个神经元到低层多个神经元之间的连接。这个小锥形在立方体上逐像素的平移就构成了两层次之间的所有连接。到了最后两层,小立方体被压缩成了一个一维的向量,这就与普通的前馈神经网络没有任何区别了。

CNN这种特殊的架构可以很好地应用于图像处理,它可以使原始图像即使经历平移、缩放等变换之后仍然具有很高的可识别性。正是因为具有这样特殊的架构,CNN才成功应用于计算机视觉、图像识别、图像生成,甚至AI下围棋、AI打游戏等广阔的领域。

03.循环神经网络

还有一种常见的网络架构,就是被广泛应用于自然语言处理任务中的循环神经网络(RNN,详见第10章),如图1.7所示。

图1.7 循环神经网络架构示意图

图1.7的左侧为输入节点,右侧为输出节点,中间的隐含层节点互相连接。可以看到,这种网络与普通的三层前馈神经网络非常相似,只不过隐含层彼此之间还具有大量的连接。

RNN这种特殊架构使得网络当前的运行不仅跟当前的输入数据有关,还与之前的数据有关。因此,这种网络特别适合处理诸如语言、音乐、股票曲线等序列类型的数据。整个网络的循环结构可以很好地应付输入序列之中存在的长程记忆性和周期性。

04.更多的新型网络架构

最近几年,研究人员提出了越来越多的新型网络架构类型,使得深度学习的性能大幅提升。在此,我们仅举两个例子进行说明。

第一个例子来源于机器翻译。人们发现,如果将两个RNN在时间步上串联,就能以相当可观的精度完成机器翻译任务。在这样的架构中,第一个RNN被看作编码器,它的任务是将输入的源语言编码成RNN的隐含层节点状态;第二个RNN被看作解码器,它可以将编码器的隐含状态解码成翻译的目标语言,整体架构如图1.8所示(详见第11章)。

图1.8 机器翻译的编码器—解码器架构(EOS表示句子结束,SOS表示句子起始)

图1.8中左侧的方块表示一个时刻的编码器,它是一个多层的RNN;右侧的方块表示一个时刻的解码器,它也是一个多层的RNN。从左到右表示时间上从前到后。开始的时候,编码器运作,它一步步地读入待翻译的源语言;到了源语言句子结束的时候(读入EOS),解码器开始工作,它一步步地输出翻译的目标语言,并将每一次预测的单词输入给下一时刻的解码器,从而输出整个句子。

另一个例子是可微分计算机(或称为神经图灵机),它是谷歌DeepMind的研究人员提出的一种融合了神经网络和冯·诺依曼体系式计算机的计算架构,它既可以模仿计算机的工作,又可以通过训练的方式进行学习,如图1.9所示。

图1.9 可微分计算机的架构示意图(图片来源:Graves A, Wayne G, Reynolds, et al. Hybrid Computing Using A Neural Network with Dynamic External Memory. Nature, 2016.)

在这种架构中,整个网络由控制器(a)、读写头(b)、存储器(c),以及存储器运作中的临时连接(d)构成。在控制器中,从输入到输出的映射由一个RNN相连,它调控着读写头,会产生一组权重,用于从存储器部分读取或者写入数据。存储器就像计算机中的内存,也可以将其看作一组规则排列的神经元。

这种装置可以用于复杂的推理、阅读理解等高级计算任务,因为它不仅仅是一个神经网络,还结合了冯·诺依曼式体系架构,在问题求解、自然语言处理等任务上的表现已经超越了RNN。

05.训练方式如何影响深度网络

除了架构会影响深度网络的表现以外,训练方式也会对结果产生很大的影响。

有两篇文章可以说明训练方式的重要性。第一篇文章是约书亚·本吉奥(Yoshua Bengio)的《课程学习》(“Curriculum Learning”)[3],该文章指出当我们用数据训练人工神经网络时,不同的顺序会对网络学习速度和最终表现产生重要影响。我们如果先将少量特定标签的数据输入网络,然后拿剩下的数据去训练它,就会比一股脑儿地把所有标签的数据都输入给它要更加有效,从而提高网络的“学习”能力。这就像人类学习一样,有步骤地学习会比一股脑儿地记下所有的知识更好。该学习方式将帮助机器学习吸取人类学习的优点,提升学习效果,协助其跳出局部极优,提高泛化能力。

第二篇文章是《在深度神经网络中特征是如何变成可迁移的》(“How Transferable are Features in Deep Neural Network?”)[4],该文章详细比较了不同的训练方式如何影响网络的学习效率。有了更有效的学习,我们就可以通过迁移学习(参见第6章)将训练好的神经网络迁移到新的小数据集中,从而达到很好的表现。

AlphaGo的复杂训练流程也向我们展示了训练方式和训练路径对于一个深度学习系统的重要性。首先,AlphaGo团队根据人类的下棋经验快速训练了一个小的网络——快速走棋网络,在此基础上,再根据人类下棋的棋谱训练一个大的网络——监督学习走棋网络;然后,在这个网络的基础上,让AlphaGo通过和自己下棋得到一个强化学习走棋网络;最后,在此基础上得到价值网络。整个训练流程非常复杂却又十分精巧,包含了无数训练技巧。

1.3.3 GPU

影响深度学习性能的最后一个因素是GPU。GPU就是图形处理单元(graphics processing unit),和CPU一样,都是做计算的基本单元,只不过GPU是嵌在显卡上的,而CPU是嵌在主机主板上的。

我们知道,深度神经网络的训练过程需要耗费大量的计算时间。如果没有GPU的加速,我们就不可能在可接受的时间内训练好一个深度神经网络。那为什么GPU可以帮助深度神经网络加速呢?原因就在于GPU非常擅长大规模的张量运算,并且可以为这种运算加速,包含多个数值的张量运算所需要的平均时间远远少于对每个数字运算的时间。

原来,GPU是在大规模3D电子游戏这个庞大市场的刺激下发明的。我们知道,3D图像的渲染需要进行大规模的矩阵运算。GPU的出现可以让这种运算并行化,从而让计算机图形渲染画面异常地流畅和光滑。

无巧不成书,后来人们认识到,GPU的矩阵运算并行化可以帮助我们快速实现对神经网络的训练,因为训练的运算过程可以全部转化成高阶矩阵(一般称为张量)的运算过程,而这正是GPU所擅长的。

大数据、深度网络架构和GPU这三驾马车凑齐了以后,我们就可以踏上深度学习的康庄大道了。

1.4 深度学习为什么如此成功

深度学习为什么如此成功?要回答这个问题,就要了解深度学习的本质特色,那就是对所学特征的“表达能力”(representation)。换句话说,深度学习重要的本领在于它可以从海量的数据中自动学习,抽取数据中的特征。

1.4.1 特征学习

深度神经网络的一个特性是会把不同的信息表达到不同层次的网络单元(权重)之中,并且这一提炼过程完全不需要手动干预,全凭机器学习过程自动完成,这就是我们常说的特征学习(feature learning)。深度学习的本质就是这种自动提取特征的功能。

例如,CNN在做图像识别的时候,可以自动提炼出数字图像中的低尺度特征和高尺度特征。如图1.10所示,低层(离输入端比较近)的神经元可以提取图像中的边缘、棱角等低尺度信息;中间层单元可以提取数据中更高一层的尺度信息;而到了更高层,它就可以提取图像中的高尺度信息(例如整张人脸)。

图1.10 使用深层CNN提取图像中不同尺度的信息

事实上,从原始数据中提炼出最基本的特征一直是困扰科学家的一大难题。例如要实现人脸识别,早期的方法是手工从原始图像中提取出边缘、棱角等基础性信息,然后将这些信息传递给一个普通的神经网络做分类。但是,这一过程相当费时费力,并且和领域知识高度相关,因此,手工特征提取成了整个流程的瓶颈。

如今,基于深度学习的算法可以将特征提取的过程自动学习出来。我们只需要将包含人脸的原始图像数据输入网络,它通过反复的监督学习就可以一点一点地在各个层面将重要的特征学习出来,这无疑大大解放了生产力。

1.4.2 迁移学习

除此之外,深度神经网络的另一个重要特性就在于特征提取之后的迁移学习(transfer learning)。我们可以像做脑外科手术一样把一个训练好的神经网络切开,然后再把它拼合到另一个神经网络上。正如我们刚才所说的,神经网络可以在各个层编码表示数据中不同尺度的特征。也就是说,前几层神经网络就好像一个特征提取器,作用就是提炼特征,而后面部分的网络会根据这些特征进行分类或者预测。

于是,当把神经网络组合拼接之后,我们就可以用前面部分的神经网络进行特征提取,再将这个特征提取器与后面的网络进行拼接,去解决另一个完全不同的问题,这就叫迁移学习(详见第6章)。

例如,我们可以组合CNN和RNN两种神经网络,从而得到一个全新的看图说话网络,如图1.11所示。

图1.11 将CNN和RNN进行迁移、拼接

在这个实验中,我们首先训练一个CNN,让它能够对图像进行准确分类。之后,我们将前面一半网络(图1.11矩形框中的部分)切下来,作为一个特征提取器。然后,我们在它的后面连接上一个RNN(可以事先训练好这个网络,使它可以生成自然语言)。最后,只要对拼接起来的新网络稍加训练,它就可以完成看图说话的任务了。

这就是深度神经网络深受欢迎的重要原因。有了特征提取和迁移学习,我们就能够实现各种端到端(end to end)式的学习。也就是说,可以直接输入原始数据,让深度网络输出最终的结果。所有的中间处理环节,我们都不需要关心,整个网络会自动学习到一种最优的模式,从而使模型可以精确地输出预测值。

这种端到端的机器学习方式有一个迷人之处:它可以通过不断吸收大量数据而表现得越来越专业,甚至在训练神经网络的过程中不需要所解决问题的领域知识。于是,端到端的深度学习给大量初创公司快速占领市场提供了丰富的机会。这或许是大家看好并投身深度学习的一个原因。

1.5 小结

作为全书的开篇,本章对深度学习进行了简明扼要的介绍。首先,从深度学习与其他学科的关系、历史渊源这两个层面介绍了什么是深度学习。其次,讨论了导致深度学习爆发的三大本质因素:大数据、深度网络架构以及GPU。在这三大因素中,我们着重强调了深度网络架构的重要性,将流行的网络架构分成了三大类:前馈神经网络、卷积神经网络和循环神经网络。最后,讨论了深度学习取得成功的原因:一是深度神经网络可以自动学习表征,避免了大量的人工工作,使得端到端的机器学习成为可能;二是我们可以对深度神经网络实施类似于脑外科手术的迁移和拼接,这不仅实现了利用小数据完成高精度的机器学习,也让我们的网络能够像软件模块一样进行拼接和组装,这无疑会对深度学习以及人工智能技术的应用与普及产生深远的影响。

1.6 参考文献

[1] 集智俱乐部. 科学的极致:漫谈人工智能. 人民邮电出版社,2016.

[2] Goodfellow I, Bengio Y, Courville A. 深度学习. 人民邮电出版社,2017.

[3] Bengio Y, Louradour J, Collabert R, et al. Curriculum Learning. Proceedings of the 26th International Conference on Machine Learning, 2009.

[4] Yosinski J, Clune J, Bengio Y, et al. How Transferable are Features in Deep Neural Networks?. arXiv: 1411.1792, 2014.