1. 导言
WU Xiaokun 吴晓堃
xkun.wu [at] gmail
2021/03/01
人工智能概论。机器学习简史。深度学习兴起的原因。深度学习工作站的配置。测试深度学习的简单示例:MNIST手写数字分类。
重点:基本概念,机器学习的编程范式和深度学习算法的工作流程;
难点:深度学习工作站的配置,测试深度学习的简单示例。
人工智能诞生于20世纪50年代。
将通常由人类完成的智力任务自动化。
在相当长的时间内,许多专家相信,只要程序员精心编写足够多的明确规则来处理知识,就可以实现与人类水平相当的人工智能。
符号主义人工智能适合用来解决定义明确的逻辑问题,比如下象棋。
比如图像分类、语音识别和语言翻译。
于是人们研究出了一种新的方法来替代符号主义人工智能,这就是机器学习(machine learning)。
在维多利亚时代的英格兰,Charles Babbage发明了分析机(Analytical Engine),即第一台通用的机械式计算机。
“分析机谈不上能创造什么东西。它只能完成我们命令它做的任何事情……它的职责是帮助我们去实现我们已知的事情。”
– Lovelace伯爵夫人Ada
人工智能先驱Alan Turing在 1950 年发表论文《计算机器和智能》。
测试者与被测试者(一个人和一台机器)隔开的情况下,通过一些装置(如键盘)向被测试者随意提问。进行多次测试后,如果机器让平均每个参与者做出超过30%的误判,那么这台机器就通过了测试,并被认为具有人类智能。
机器学习的概念来自于Turing引述 Lovelace伯爵夫人 Ada 的问题后的进一步思考:
对于计算机而言,除了“我们命令它做的任何事情”之外,它能否自我学习执行特定任务的方法?
如果没有程序员精心编写的数据处理规则,计算机能否通过观察数据自动学会这些规则?
注意:机器学习系统是训练出来的,而不是明确地用程序编写出来的。
舉例:原始人穿越来到现在,如何学会交通规则?观察与试错。
机器学习在 20 世纪 90 年代才开始蓬勃发展。
对比:经典的统计分析方法(比如贝叶斯分析)。
给定包含预期结果的示例,机器学习将会发现执行一项数据处理任务的规则。
衡量结果是一种反馈信号,用于调节算法的工作方式。这个调节步骤就是我们所说的学习。
机器学习模型将输入数据变换为有意义的输出,这是一个从已知的输入和输出示例中进行“学习”的过程。
机器学习和深度学习的核心问题在于有意义地变换数据,换句话说,在于学习输入数据的有用表示(representation)——这种表示可以让数据更接近预期输出。
問題:我们人为定义了坐标变换。
寻找更好数据表示的自动搜索过程。
机器学习算法在解决问题时通常没有什么创造性,而仅仅是遍历一组预先定义好的操作集合,这个操作集合叫作假设空间(hypothesis space)。
在预先定义好的可能性空间中,利用反馈信号的指引来寻找输入数据的有用表示。
它是从数据中学习表示的一种新方法,强调从连续的层(layer)中进行学习,这些层对应于越来越有意义的表示。
“深度学习”中的“深度”指的并不是利用这种方法所获取的更深层次的理解,而是指一系列连续的表示层。
数据模型中包含多少层,这被称为模型的深度(depth)。
神经网络这一术语来自于神经生物学,然而,虽然深度学习的一些核心概念是从人们对大脑的理解中汲取部分灵感而形成的,但没有证据表明大脑的学习机制与现代深度学习模型所使用的相同。
就表现形式而言,深度学习是从数据中学习表示的一种数学框架。
你可以将深度网络看作多级信息蒸馏操作:信息穿过连续的过滤器,其纯度越来越高(即对任务的帮助越来越大)。
学习数据表示的多级方法。
下面用三张图来具体看一下深度学习的过程是如何发生的。
神经网络中每层对输入数据所做的具体操作保存在该层的权重(weight)中,其本质是一串数字,有时也被称为该层的参数(parameter)。
想要控制神经网络的输出,就需要能够衡量该输出与预期值之间的距离。 这是神经网络损失函数(loss function)的任务,该函数也叫目标函数(objective function)。
深度学习的基本技巧是利用这个距离值作为反馈信号来对权重值进行微调,以降低当前示例对应的损失值。 这种调节由优化器(optimizer)来完成,它实现了所谓的反向传播(backpropagation)算法,这是深度学习的核心算法。
一开始对神经网络的权重随机赋值,因此网络只是实现了一系列随机变换。 其输出结果自然也和理想值相去甚远,相应地,损失值也很高。
但随着网络处理的示例越来越多,权重值也在向正确的方向逐步微调,损失值也逐渐降低。 这就是训练循环(training loop),将这种循环重复足够多的次数(通常对数千个示例进行数十次迭代),得到的权重值可以使损失函数最小。
我们尤其不应该把达到人类水平的通用智能(human-level general intelligence)的讨论太当回事。 在短期内期望过高的风险是,一旦技术上没有实现,那么研究投资将会停止,而这会导致在很长一段时间内进展缓慢。
两次人工智能冬天(AI winter):
我们可能正在见证人工智能炒作与让人失望的第三次循环,而且我们仍处于极度乐观的阶段。 最好的做法是降低我们的短期期望,确保对这一技术领域不太了解的人能够清楚地知道深度学习能做什么、不能做什么。
过去五年里,人工智能研究一直在以惊人的速度发展,这在很大程度上是由于人工智能短短的历史中前所未见的资金投入,但到目前为止,这些进展却很少能够转化为改变世界的产品和流程。
但不要怀疑:人工智能的时代即将到来。人工智能最终将应用到我们社会和日常生活的几乎所有方面,正如今天的互联网一样。
深度学习并不是机器学习的第一次成功。 可以这样说,当前工业界所使用的绝大部分机器学习算法都不是深度学习算法。
如果你第一次接触的机器学习就是深度学习,那你可能会发现手中握着一把深度学习“锤子”,而所有机器学习问题看起来都像是“钉子”。
概率建模是统计学原理在数据分析中的应用,在统计学习课程中专门讲授。 它是最早的机器学习形式之一,至今仍在广泛使用。
其中最有名的算法之一就是朴素贝叶斯(Naive Bayes)算法,比计算机出现得还要早,在其第一次被计算机实现(很可能追溯到 20 世纪 50 年代)的几十年前就已经靠人工计算来应用了。
另一个密切相关的模型是 logistic 回归(logistic regression,简称 logreg),它有时被认为是现代机器学习的“hello world”。 不要被它的名称所误导——logreg 是一种分类算法,而不是回归算法。
神经网络早期的迭代方法已经完全被本章所介绍的现代方法所取代。
人们早在 20 世纪 50 年代就将神经网络作为玩具项目,但在很长一段时间内,一直没有训练大型神经网络的有效方法。
在 20 世纪 80 年代中期很多人都独立地重新发现了反向传播算法,并开始将其应用于神经网络。
贝尔实验室于 1989 年第一次成功实现了神经网络的实践应用,当时 Yann LeCun 将卷积神经网络的早期思想与反向传播算法相结合,并将其应用于手写数字分类问题,由此得到名为LeNet 的网络,在 20 世纪 90 年代被美国邮政署采用,用于自动读取信封上的邮政编码。
SVM 刚刚出现时,在简单的分类问题上表现出了最好的性能,很快就使人们将神经网络抛诸脑后。
SVM 的目标是通过找到良好决策边界(decision boundary)来解决分类问题,这个过程分为两步:
将数据映射到高维表示从而使分类问题简化?在实践中通常是难以计算的。
要想在新的表示空间中找到良好的决策超平面,你不需要在新空间中直接计算点的坐标,只需要在新空间中计算点对之间的距离。
实现将原始空间中的任意两点映射为这两点在目标表示空间中的距离的函数。
核函数通常是人为选择的,而不是从数据中学到的——对于 SVM 来说,只有分割超平面是通过学习得到的。
决策树(decision tree)是类似于流程图的结构,可视化和解释都很简单。 到了 2010 年,决策树经常比核方法更受欢迎。
随机森林(random forest)算法构建多个决策树,然后将它们的输出集成在一起。
梯度提升机(gradient boosting machine)通过迭代地训练新模型来专门解决之前模型的弱点。
要想了解机器学习算法和工具的现状,一个好方法是看一下 Kaggle 上的机器学习竞赛:哪种算法能够可靠地赢得竞赛呢?顶级参赛者都使用哪些工具?
在 2017 年左右,Kaggle 上主要有两大方法:梯度提升机和深度学习。具体而言:
Turing Award 2018
深度学习发展得如此迅速,主要原因在于它在很多问题上都表现出更好的性能。
深度学习还让解决问题变得更加简单,因为它将特征工程完全自动化,而这曾经是机器学习工作流程中最关键的一步。
在实践中,如果连续应用浅层学习方法,其收益会随着层数增加迅速降低,因为三层模型中最优的第一表示层并不是单层或双层模型中最优的第一表示层。
深度学习的变革性在于,模型可以在同一时间共同学习所有表示层,一切都由单一反馈信号来监督。
深度学习用于计算机视觉的两个关键思想,即卷积神经网络和反向传播,在 1989 年就已经为人们所知。
长短期记忆(LSTM,long short-term memory)算法是深度学习处理时间序列的基础,它在 1997 年就被开发出来了,而且此后几乎没有发生变化。
那么为什么深度学习在2012 年之后才开始取得成功?这二十年间发生了什么变化?
总的来说,三种技术力量在推动着机器学习的进步:
只有当合适的数据和硬件可用于尝试新想法时(或者将旧想法的规模扩大,工程实践往往如此),才可能出现算法上的改进。
在 20 世纪 90 年代和 21 世纪前十年,真正的瓶颈在于数据和硬件。 但在这段时间内发生了下面这些事情:互联网高速发展,并且针对游戏市场的需求开发出了高性能图形芯片。
从 1990 年到 2010 年,非定制 CPU 的速度提高了约 5000 倍。
在 20 世纪前十年里,NVIDIA 和 AMD 等公司投资数十亿美元来开发快速的大规模并行芯片(图形处理器,GPU),以便为越来越逼真的视频游戏提供图形显示支持。
2007 年,NVIDIA 推出了 CUDA,作为其 GPU 系列的编程接口。
NVIDIA TITAN X 比一台现代笔记本电脑的速度要快约 350 倍。
使用一块 TITAN X 显卡,只需几天就可以训练出几年前赢得 ILSVRC 竞赛的 ImageNet 模型。 与此同时,大公司还在包含数百个 GPU 的集群上训练深度学习模型,这种类型的 GPU 是专门针对深度学习的需求开发的,比如 NVIDIA Tesla K80。
2016 年,Google 展示的张量处理器(TPU)比最好的 GPU 还要快 10 倍。
人工智能有时被称为新的工业革命。 如果深度学习是这场革命的蒸汽机,那么数据就是煤炭,即驱动智能机器的原材料,没有煤炭一切皆不可能。
就数据而言,除了过去 20 年里存储硬件的指数级增长(遵循摩尔定律),最大的变革来自于互联网的兴起,它使得收集与分发用于机器学习的超大型数据集变得可行。
深度学习兴起的催化剂:ImageNet 数据集。
ImageNet 的特殊之处不仅在于数量之大,还在于与它相关的年度竞赛:ILSVRC。
“机器学习这一具有变革意义的核心技术将促使我们重新思考做所有事情的方式。 我们用心将其应用于所有产品,无论是搜索、广告、YouTube 还是 Google Play。 我们尚处于早期阶段,但你将会看到我们系统性地将机器学习应用于所有这些领域。”
– Google 首席执行官 Sundar Pichai
深度神经网络成为企业投资和研究人员纷纷选择的方法,是否只是难以持续的昙花一现?
深度学习有几个重要的性质,证明了它确实是人工智能的革命,并且能长盛不衰。
20 年后我们可能不再使用神经网络,但我们那时所使用的工具都是直接来自于现代深度学习及其核心概念。
在一次科学革命之后,科学发展的速度通常会遵循一条 S 形曲线:首先是一个快速发展时期,接着随着研究人员受到严重限制而逐渐稳定下来,然后进一步的改进又逐渐增多。 深度学习仍然处于这条 S 形曲线的前半部分,在未来几年将会取得更多进展。
将通常由人类完成的智力任务自动化。
数据观点:寻找对目标任务而言最佳数据表示的自动搜索过程。
函数观点:寻找逼近目标任务的最佳显函数的自动搜索过程。
在预先定义好的假设空间中,利用反馈信号的指引来自动寻找一个最优的显函数。这个函数能够将输入数据映射为解决目标任务的最佳数据表示。
学习最佳数据表示的多层方法;其中层是数据处理单元。
注意:机器学习系统(即模型)是训练出来的,而不是人为编写出来的。