Python深度学习
上QQ阅读APP看书,第一时间看更新

1.3 为什么是深度学习,为什么是现在

深度学习用于计算机视觉的两个关键思想,即卷积神经网络和反向传播,在1989年就已经为人们所知。长短期记忆(LSTM, long short-term memory)算法是深度学习处理时间序列的基础,它在1997年就被开发出来了,而且此后几乎没有发生变化。那么为什么深度学习在2012年之后才开始取得成功?这二十年间发生了什么变化?

总的来说,三种技术力量在推动着机器学习的进步:

❑ 硬件

❑ 数据集和基准

❑ 算法上的改进

由于这一领域是靠实验结果而不是理论指导的,所以只有当合适的数据和硬件可用于尝试新想法时(或者将旧想法的规模扩大,事实往往也是如此),才可能出现算法上的改进。机器学习不是数学或物理学,靠一支笔和一张纸就能实现重大进展。它是一门工程科学。

在20世纪90年代和21世纪前十年,真正的瓶颈在于数据和硬件。但在这段时间内发生了下面这些事情:互联网高速发展,并且针对游戏市场的需求开发出了高性能图形芯片。

1.3.1 硬件

从1990年到2010年,非定制CPU的速度提高了约5000倍。因此,现在可以在笔记本电脑上运行小型深度学习模型,但在25年前是无法实现的。

但是,对于计算机视觉或语音识别所使用的典型深度学习模型,所需要的计算能力要比笔记本电脑的计算能力高几个数量级。在20世纪前十年里,NVIDIA和AMD等公司投资数十亿美元来开发快速的大规模并行芯片(图形处理器,GPU),以便为越来越逼真的视频游戏提供图形显示支持。这些芯片是廉价的、单一用途的超级计算机,用于在屏幕上实时渲染复杂的3D场景。这些投资为科学界带来了好处。2007年,NVIDIA推出了CUDA,作为其GPU系列的编程接口。少量GPU开始在各种高度并行化的应用中替代大量CPU集群,并且最早应用于物理建模。深度神经网络主要由许多小矩阵乘法组成,它也是高度并行化的。2011年前后,一些研究人员开始编写神经网络的CUDA实现,而Dan Ciresan参见“Flexible,high performance convolutional neural networks for image classification”,刊载于Proceedings of the 22nd International Joint Conference on Artificial Intelligence,2011年。和Alex Krizhevsky参见“ImageNet classif ication with deep convolutional neural networks”,刊载于Advances in Neural Information Processing Systems,2012年第25辑。属于第一批人。

这样,游戏市场资助了用于下一代人工智能应用的超级计算。有时候,大事件都是从游戏开始的。今天,NVIDIA TITAN X(一款游戏GPU,在2015年底售价1000美元)可以实现单精度6.6 TFLOPS的峰值,即每秒进行6.6万亿次float32运算。这比一台现代笔记本电脑的速度要快约350倍。使用一块TITAN X显卡,只需几天就可以训练出几年前赢得ILSVRC竞赛的ImageNet模型。与此同时,大公司还在包含数百个GPU的集群上训练深度学习模型,这种类型的GPU是专门针对深度学习的需求开发的,比如NVIDIA Tesla K80。如果没有现代GPU,这种集群的超级计算能力是不可能实现的。

此外,深度学习行业已经开始超越GPU,开始投资于日益专业化的高效芯片来进行深度学习。2016年,Google在其年度I/O大会上展示了张量处理器(TPU)项目,它是一种新的芯片设计,其开发目的完全是为了运行深度神经网络。据报道,它的速度比最好的GPU还要快10倍,而且能效更高。

1.3.2 数据

人工智能有时被称为新的工业革命。如果深度学习是这场革命的蒸汽机,那么数据就是煤炭,即驱动智能机器的原材料,没有煤炭一切皆不可能。就数据而言,除了过去20年里存储硬件的指数级增长(遵循摩尔定律),最大的变革来自于互联网的兴起,它使得收集与分发用于机器学习的超大型数据集变得可行。如今,大公司使用的图像数据集、视频数据集和自然语言数据集,如果没有互联网的话根本无法收集。例如,Flickr网站上用户生成的图像标签一直是计算机视觉的数据宝库。YouTube视频也是一座宝库。维基百科则是自然语言处理的关键数据集。

如果有一个数据集是深度学习兴起的催化剂的话,那么一定是ImageNet数据集。它包含140万张图像,这些图像已经被人工划分为1000个图像类别(每张图像对应1个类别)。但ImageNet的特殊之处不仅在于其数量之大,还在于与它相关的年度竞赛ImageNet大规模视觉识别挑战赛(ILSVRC)。

正如Kaggle自2010年以来所展示的那样,公开竞赛是激励研究人员和工程师挑战极限的极好方法。研究人员通过竞争来挑战共同基准,这极大地促进了近期深度学习的兴起。

1.3.3 算法

除了硬件和数据之外,直到20世纪前十年的末期,我们仍没有可靠的方法来训练非常深的神经网络。因此,神经网络仍然很浅,仅使用一两个表示层,无法超越更为精确的浅层方法,比如SVM和随机森林。关键问题在于通过多层叠加的梯度传播。随着层数的增加,用于训练神经网络的反馈信号会逐渐消失。

这一情况在2009—2010年左右发生了变化,当时出现了几个很简单但很重要的算法改进,可以实现更好的梯度传播。

❑ 更好的神经层激活函数(activation function)。

❑ 更好的权重初始化方案(weight-initialization scheme),一开始使用逐层预训练的方法,不过这种方法很快就被放弃了。

❑ 更好的优化方案(optimization scheme),比如RMSProp和Adam。

只有这些改进可以训练10层以上的模型时,深度学习才开始大放异彩。

最后,在2014年、2015年和2016年,人们发现了更先进的有助于梯度传播的方法,比如批标准化、残差连接和深度可分离卷积。今天,我们可以从头开始训练上千层的模型。

1.3.4 新的投资热潮

随着深度学习于2012—2013年在计算机视觉领域成为新的最优算法,并最终在所有感知任务上都成为最优算法,业界领导者开始注意到它。接下来就是逐步升温的业界投资热潮,远远超出了人工智能历史上曾经出现过的任何投资。

2011年,就在深度学习大放异彩之前,在人工智能方面的风险投资总额大约为1900万美元,几乎全都投给了浅层机器学习方法的实际应用。到了2014年,这一数字已经涨到了惊人的3.94亿美元。这三年里创办了数十家创业公司,试图从深度学习炒作中获利。与此同时,Google、Facebook、百度、微软等大型科技公司已经在内部研究部门进行投资,其金额很可能已经超过了风险投资的现金流。其中只有少数金额被公之于众:2013年,Google收购了深度学习创业公司DeepMind,报道称收购价格为5亿美元,这是历史上对人工智能公司的最高收购价格。2014年,百度在硅谷启动了深度学习研究中心,为该项目投资3亿美元。2016年,深度学习硬件创业公司Nervana Systems被英特尔收购,收购价格逾4亿美元。

机器学习,特别是深度学习,已成为这些科技巨头产品战略的核心。2015年末,Google首席执行官Sundar Pichai表示:“机器学习这一具有变革意义的核心技术将促使我们重新思考做所有事情的方式。我们用心将其应用于所有产品,无论是搜索、广告、YouTube还是Google Play。我们尚处于早期阶段,但你将会看到我们系统性地将机器学习应用于所有这些领域。”参见“Alphabet earnings call”,2015年10月22日。

由于这波投资热潮,短短五年间从事深度学习的人数从几千人涨到数万人,研究进展也达到了惊人的速度。目前没有迹象表明这种趋势会在短期内放缓。

1.3.5 深度学习的大众化

有许多新面孔进入深度学习领域,而主要的驱动因素之一是该领域所使用工具集的大众化。在早期,从事深度学习需要精通C++和CUDA,而它们只有少数人才能掌握。如今,具有基本的Python脚本技能,就可以从事高级的深度学习研究。这主要得益于Theano及随后的TensorFlow的开发,以及Keras等用户友好型库的兴起。Theano和TensorFlow是两个符号式的张量运算的Python框架,都支持自动求微分,这极大地简化了新模型的实现过程。Keras等用户友好型库则使深度学习变得像操纵乐高积木一样简单。Keras在2015年初发布,并且很快就成为大量创业公司、研究生和研究人员转向该领域的首选深度学习解决方案。

1.3.6 这种趋势会持续吗

深度神经网络成为企业投资和研究人员纷纷选择的正确方法,它究竟有何特别之处?换句话说,深度学习是否只是难以持续的昙花一现?20年后我们是否仍在使用深度神经网络?

深度学习有几个重要的性质,证明了它确实是人工智能的革命,并且能长盛不衰。20年后我们可能不再使用神经网络,但我们那时所使用的工具都是直接来自于现代深度学习及其核心概念。这些重要的性质可大致分为以下三类。

简单。深度学习不需要特征工程,它将复杂的、不稳定的、工程量很大的流程替换为简单的、端到端的可训练模型,这些模型通常只用到五六种不同的张量运算。

可扩展。深度学习非常适合在GPU或TPU上并行计算,因此可以充分利用摩尔定律。此外,深度学习模型通过对小批量数据进行迭代来训练,因此可以在任意大小的数据集上进行训练。(唯一的瓶颈是可用的并行计算能力,而由于摩尔定律,这一限制会越来越小。)

多功能与可复用。与之前的许多机器学习方法不同,深度学习模型无须从头开始就可以在附加数据上进行训练,因此可用于连续在线学习,这对于大型生产模型而言是非常重要的特性。此外,训练好的深度学习模型可用于其他用途,因此是可以重复使用的。举个例子,可以将一个对图像分类进行训练的深度学习模型应用于视频处理流程。这样我们可以将以前的工作重新投入到日益复杂和强大的模型中。这也使得深度学习可以适用于较小的数据集。

深度学习数年来一直备受关注,我们还没有发现其能力的界限。每过一个月,我们都会学到新的用例和工程改进,从而突破先前的局限。在一次科学革命之后,科学发展的速度通常会遵循一条S形曲线:首先是一个快速发展时期,接着随着研究人员受到严重限制而逐渐稳定下来,然后进一步的改进又逐渐增多。深度学习在2017年似乎处于这条S形曲线的前半部分,在未来几年将会取得更多进展。