深度学习 — 从人工智能到深度学习的演进之路(一)

深度学习 — 从人工智能到深度学习的演进之路(一) 一、人工智能的终极矛盾莫拉维克悖论远在古希腊时期人类就梦想着创造能自主思考的机器——从皮格马利翁的加拉蒂亚到代达罗斯的塔洛斯再到赫淮斯托斯的潘多拉。千年之后当人类第一次构思可编程计算机时就已经在思考计算机能否变得智能。但 AI 研究者们很快发现了一个深刻的矛盾后来被称为莫拉维克悖论Moravec’s Paradox对人类困难的抽象任务如象棋、数学推导计算机反而容易解决而对人类毫不费力的直觉任务如识别人脸、理解语言计算机却极其困难。IBM 的深蓝在 1997 年击败了国际象棋世界冠军 Garry Kasparov。国际象棋仅有 64 个位置和 32 枚棋子完全可以由一组形式化规则来描述。设计出成功的策略是巨大成就但向计算机描述象棋这个问题本身并不难。真正的难题在于一个人的日常生活需要关于世界的巨量知识——什么是影子、一把椅子从侧面看和从正面看为什么是同一把椅子、一个人拿着电动剃须刀的时候仍然是一个人……这些知识是主观的、直观的根本无法用形式化的规则穷尽描述。这就引出了 AI 的核心问题如何让计算机获得这些非形式化的、人类凭直觉掌握的知识二、AI 方法的四个发展阶段书中梳理了解决这个核心问题的四代方法每一代都是对前一代局限性的突破2.1 第一代知识库方法 —— 硬编码世界知识核心思路将人类关于世界的知识用形式化语言写成规则输入给计算机。代表项目Cyc始于 1984 年Cyc 项目包括一个推断引擎和一个用 CycL 语言描述的声明数据库这些声明全部由人类监督者手工输入。其目标是建立一个涵盖所有常识的数据库。经典失败案例Cyc 无法理解Fred 在早上剃须这个简单故事。它的推理过程如下Cyc 知道人体不包含电气零件Cyc 发现Fred 正拿着一个电动剃须刀电气设备Cyc 推断实体正在剃须的 FredFredWhileShaving含有电气部件Cyc 产生困惑Fred 在刮胡子的时候是否仍然是一个人致命缺陷这个笨拙的过程暴露了硬编码方法的根本困境——世界的复杂性是无穷的任何有限的规则集都无法完整描述常识。人类的常识推理依赖于数以亿计的隐式假设而这些假设我们自己甚至都说不清楚。2.2 第二代经典机器学习 —— 从数据中学习映射核心突破与其硬编码知识不如让系统从数据中自动提取模式。原理给定人工设计的特征feature机器学习算法学习特征与结果之间的映射关系。具体例子逻辑回归判断剖腹产医生提供一组特征是否有子宫疤痕、胎位如何等逻辑回归学习这些特征如何与各种结果相关联。但关键在于——它无法影响特征的定义方式。如果把患者的 MRI 原始扫描像素作为输入它将完全无法工作因为单个像素与分娩并发症之间的相关性微乎其微。朴素贝叶斯区分垃圾邮件基于词频等人工特征来分类。核心局限性能严重依赖于人工设计的特征。对于很多任务我们根本不知道应该提取哪些特征。书中举了一个生动的例子假设我们想检测照片中的汽车。我们知道汽车有轮子所以想用车轮是否存在作为特征。但根据像素值来描述车轮看上去像什么几乎不可能——同一个车轮的图像会因为阴影、光照、视角、遮挡等因素而千差万别。表示的力量书中用了一个极其精妙的例子来说明数据表示的重要性。假设在散点图中有两类数据需要用一条线分开在笛卡尔坐标下这两类数据混杂在一起根本无法线性分割。但只要转换到极坐标系一条简单的垂直线就能完美分开。数据没变变的只是表示方式而任务从不可能变成了轻而易举。这说明阿拉伯数字比罗马数字更容易做算术运算不是因为数字本身变了而是因为表示更好了。表示的选择对机器学习性能的影响是决定性的。2.3 第三代表示学习 —— 自动发现特征核心突破不仅学习特征到输出的映射还学习特征本身的构造方式。典型代表自编码器Autoencoder自编码器由两部分组成编码器函数将输入数据转换为一种不同的内部表示通常是低维的解码器函数将内部表示还原回原来的形式训练目标输入经过编码再解码后尽可能完整地保留信息。这迫使编码器必须学到数据中最本质的结构——那些真正重要的变差因素factors of variation。什么是变差因素这是一个核心概念。变差因素指影响观察数据的潜在原因——它们通常不能被直接观察到分析语音时变差因素包括说话者的年龄、性别、口音和正在说的词语分析汽车图像时变差因素包括汽车的位置、颜色、太阳的角度和亮度在现实应用中困难源于多个变差因素同时影响每一个数据点。比如一张夜晚拍摄的红色汽车照片单个像素的值几乎接近黑色因为夜晚光照汽车轮廓的形状取决于拍摄视角。大多数应用需要我们理清这些变差因素只关注我们需要的那些。表示学习的困境从原始数据中提取高层次的抽象特征如说话口音本身就需要接近人类水平的理解能力这几乎和解决原问题一样困难。2.4 第四代深度学习 —— 层次化表示学习核心突破通过多层简单表示来逐步构建复杂表示解决了表示学习中一步到位的困境。深度学习的关键洞察第一层比较相邻像素的亮度来识别边缘第二层将边缘组合成角和轮廓第三层将角和轮廓组合成物体部件眼睛、车轮最终层将部件组合成完整对象的识别结果每一层只做一小步抽象但层层叠加后就能完成从像素到概念的跨越。深度学习模型的典型例子是前馈深度网络也称多层感知机, MLP。它本质上是一个将输入映射到输出的数学函数只不过这个函数由许多较简单的函数复合而成。每一次函数应用都为输入提供了一个新的表示。三、理解深度的两个视角书中提出了两种理解模型深度的方式它们从不同角度揭示了深度的本质。视角一计算图的深度顺序指令数将模型看作从输入到输出的计算流程图最长路径的长度就是深度。关键洞察深度取决于你如何定义一步。以逻辑回归 σ(wᵀx) 为例如果把加法、乘法、sigmoid 各算一步 → 深度为 3如果把逻辑回归整体算一步 → 深度为 1这就像同一个程序用不同语言编写代码行数不同一样。视角二概念图的深度概念层级数在深度概率模型中关注的是概念之间的层级关系深度而非计算步骤数。精彩例子AI 系统观察一张脸部图像其中一只眼睛在阴影中系统最初只看到一只眼睛但检测到脸的存在后系统推断第二只眼睛也可能存在概念图只有两层眼睛层和脸层但计算图可能需要 2n 层——因为对简单概念的理解会在获得复杂概念的信息后进一步精细化。深度学习的两种解读书中提出了理解深度学习的两种互补视角视角 A表示学习视角——每一层学习数据的一种新表示逐层从简单到抽象。视角 B程序视角——每一层表示相当于执行一组并行指令后计算机的存储器状态。更深的网络能执行更多的顺序指令后面的指令可以参考早期指令的结果。这赋予了深度网络极大的计算能力。在这个视角下某层的激活值不仅仅包含对输入变差因素的解释还可能存储状态信息——类似传统程序中的计数器或指针帮助模型组织其处理过程。四、AI 学科的层级关系每一层都是上一层的子集和深化。书中用两张图展示了它们之间的关系四种方法的对比方法谁设计输入特征谁设计特征到输出的映射代表技术知识库 AI人人Cyc、专家系统经典机器学习人机器从数据学逻辑回归、SVM、朴素贝叶斯表示学习机器从数据学机器从数据学自编码器深度学习机器分多层从数据学机器从数据学CNN、RNN、深度网络可以看到从上到下人工的成分越来越少自动的成分越来越多。五、深度学习的三次浪潮详解深度学习并非一夜之间诞生的新技术。它经历了三次浪潮每次浪潮都有其名称、核心突破和衰退原因。5.1 第一次浪潮1940s-1960s控制论 Cybernetics时代背景最早的学习算法试图模拟生物学习——大脑怎样学习、为什么能学习。核心模型与事件McCulloch-Pitts 神经元1943最早的脑功能计算模型。这个线性模型通过检验函数 f(x,w) 的正负来识别两类输入。但权重需要由操作人员手动设置。感知机 Perceptron1950s第一个能从数据中学习权重的模型。这是一个里程碑——机器第一次能够从样本中自动调整自己的参数。自适应线性单元 ADALINE返回函数 f(x) 本身的值来预测实数。用于调节其权重的训练算法是随机梯度下降SGD的一种特例——稍加改进后的 SGD 至今仍是深度学习的主要训练算法。衰退原因线性模型有一个致命局限——无法学习 XOR异或函数。Minsky 和 Papert 在 1969 年的著作中指出了这一点导致对神经网络研究的资助大幅削减。批评者从 XOR 问题推广到对整个受生物学启发的学习方法的普遍抵触引发了第一次AI 寒冬。5.2 第二次浪潮1980s-1990s联结主义 Connectionism时代背景联结主义也称并行分布处理, PDP在认知科学的背景下出现。当时大多数认知科学家研究符号推理模型但符号模型难以解释大脑如何用神经元实现推理。联结主义者开始研究基于神经系统实现的认知模型很多思想可追溯到心理学家 Donald Hebb 在 1940 年代的工作。联结主义的核心思想当网络将大量简单的计算单元连接在一起时可以实现智能行为。关键突破① 反向传播算法的普及Backpropagation反向传播算法使得训练具有内部表示隐藏层的深度神经网络成为可能。虽然它曾黯然失色但截至今日仍然是训练深度模型的主导方法。② 分布式表示Distributed Representation这是联结主义时期形成的最重要概念之一。核心思想系统的每个输入都应该由多个特征表示每个特征都应该参与多个输入的表示具体例子假设视觉系统需要识别红色/绿色/蓝色 × 汽车/卡车/鸟类这 9 种组合。局部表示一对一方式需要 9 个神经元每个对应一种组合红汽车、红卡车、红鸟……。每个神经元必须独立学习颜色和物体的概念互不共享。分布式表示只需 6 个神经元——3 个描述颜色3 个描述物体身份。描述红色的神经元可以从所有红色物体的图像中学习红色的概念而不仅仅从某一类中学习。优势参数大幅减少学习效率大幅提高泛化能力更强。这个概念是本书的核心主题之一。③ LSTM 长短期记忆网络1997Hochreiter 和 Bengio 分别指出了对长序列建模时的根本性数学难题梯度消失/爆炸问题。Hochreiter 和 Schmidhuber 于 1997 年提出 LSTM 来解决这些问题。如今 LSTM 在许多序列建模任务中广泛应用。衰退原因双重打击商业泡沫破裂基于神经网络的创业公司寻求投资做法野心勃勃但不切实际。当 AI 不能实现这些不合理的期望时投资者彻底失望。竞争对手崛起核方法SVM和图模型在很多重要任务上表现优异进一步削弱了人们对神经网络的信心。第二次浪潮的衰退一直持续到 2007 年。低谷期的坚守者加拿大高级研究所CIFAR通过其 NCAP 研究计划帮助维持了神经网络研究的火种。该计划联合了三位后来被称为深度学习三巨头的研究者Geoffrey Hinton多伦多大学Yoshua Bengio蒙特利尔大学Yann LeCun纽约大学5.3 第三次浪潮2006-至今深度学习 Deep Learning引爆点2006 年的突破Geoffrey Hinton 证明了一种名为**深度信念网络DBN的神经网络可以使用贪婪逐层预训练Greedy Layer-wise Pretraining**策略有效训练。其他 CIFAR 附属研究组很快证明同样的策略可以训练多种类型的深度网络并系统性地提高泛化能力。这一次浪潮正式普及了深度学习这一术语强调两点研究者现在有能力训练以前不可能训练的深层网络深度具有理论上的重要性关键认知转变“目前在复杂任务达到人类水平的学习算法与 1980 年代努力解决玩具问题的学习算法几乎是一样的。最重要的新进展是现在我们有了这些算法得以成功训练所需的资源。”这句话道破了一个深刻的事实不是算法变了而是数据、算力和工程实践变了。六、深度学习成功的三大驱动力详解6.1 与日俱增的数据量数据量的增长史也是一部从手工制造到数字洪流的历史时代数据规模代表数据集20世纪初数百~数千样本手动制作的统计度量1950s-1980s小型合成数据集低分辨率字母位图1980s-1990s数万样本MNIST 手写数字6万张2000s数万~数十万CIFAR-106万张彩色图2010s数百万~数千万ImageNet1400万张、Sports-1M机器翻译数亿句对WMT 英法数据集关键经验法则截至 2016 年每类约5,000个标注样本 → 可接受的性能1,000 万以上标注样本 → 达到或超越人类表现为什么数据这么重要因为统计估计的核心难题是观察少量数据并在新数据上泛化。当数据足够多时这个负担大大减轻——机器不需要那么聪明也能表现得好。Hinton 的比喻他将 MNIST 数据集描述为机器学习的果蝇——就像生物学家用果蝇做实验一样机器学习研究者可以在 MNIST 这个受控环境下研究算法的行为。6.2 与日俱增的模型规模联结主义的核心见解之一大量简单的计算单元协同工作才能产生智能行为。单独的神经元或小集合的神经元并不特别有用。人工神经网络的规模大约每2.4 年翻一倍每神经元的连接数量已经与小型哺乳动物大脑在同一数量级上但在神经元总数上即使现在的大型网络也比青蛙的神经系统还小按目前的趋势至少要到 2050 年代人工神经网络才能具备与人脑相同数量级的神经元驱动力更快的 CPU、通用 GPU 的出现、更快的网络连接和更好的分布式计算软件基础设施。“其神经元比一个水蛭还少的神经网络不能解决复杂的人工智能问题这是不足为奇的。”6.3 与日俱增的精度、复杂度和现实世界影响图像识别的进化轨迹阶段能力最早期识别裁剪紧凑的小图中的单个对象中期处理更大尺寸的图像现代处理高分辨率照片识别 1000 类别无需裁剪ImageNet ILSVRC 竞赛——深度学习的登场秀2012 年前传统方法top-5 错误率26.1%2012 年AlexNet卷积网络首次参赛top-5 错误率骤降至15.3%此后每年持续刷新截至书写作时3.6%语音识别在 1990 年代提高后一直停滞到约 2000 年。深度学习的引入使错误率陡然下降有些甚至降低了一半。任务复杂度的演进单对象识别→整个字符序列输出神经网络可以学习输出描述图像的完整字符序列而不仅仅是单个对象固定输入映射→序列到序列学习Seq2SeqLSTM 等循环网络用于对序列之间的关系建模引领了机器翻译的颠覆性发展神经图灵机能学习读写存储单元可以从样本中学习简单程序如排序将深度学习推向自我编程的方向深度强化学习DeepMind 的系统学会玩 Atari 视频游戏并匹敌人类深度学习也显著改善了机器人控制的性能工业应用Google、Microsoft、Facebook、IBM、Baidu、Apple、Adobe、Netflix、NVIDIA 等顶级技术公司全面采用。科学贡献预测分子相互作用帮助设计新药搜索亚原子粒子粒子物理学自动解析构建人脑三维图的显微镜图像为神经科学家提供可研究的视觉处理计算模型七、神经科学与深度学习灵感而非蓝图书中用了相当篇幅讨论深度学习与神经科学的关系。这个讨论极其重要因为媒体经常过度强调两者的相似性。7.1 神经科学提供了什么① 可行性证明大脑证明了智能行为是可能的。概念上建立智能的直接途径是逆向大脑背后的计算原理。② 通用算法假说——雪貂实验这是书中最引人入胜的案例之一神经学家将雪貂的大脑重新接线使视觉信号传送到听觉区域结果雪貂竟然学会了用听觉处理区域看东西。这暗示大脑的不同区域可能运行着相似的通用学习算法。在此之前机器学习研究是分散的不同社群分别研究 NLP、计算机视觉、运动规划和语音识别。这个发现启发了一种统一的方法论。③ 架构灵感新认知机受哺乳动物视觉系统结构启发后来成为现代**卷积网络CNN**的基础**整流线性单元ReLU**的思想部分受生物神经元特性启发7.2 神经科学不提供什么书中非常明确地指出了边界“大家不应该认为深度学习在尝试模拟大脑。”原因一我们对大脑的了解远远不够。要深刻理解大脑使用的算法需要同时监测至少数千相连神经元的活动。目前我们做不到这一点甚至连大脑最简单、最深入研究的部分都远远没有理解。原因二更接近生物的不一定更好。真实的神经元计算着与整流线性单元非常不同的函数但更接近真实神经网络的系统并没有导致机器学习性能的提升。原因三灵感来源是多元的。现代深度学习从许多领域获取灵感特别是应用数学的基本内容——线性代数、概率论、信息论和数值优化。深度学习 vs 计算神经科学这是两个不同的领域。深度学习关注如何构建能解决智能任务的系统计算神经科学关注构建大脑如何真实工作的精确模型。虽然研究人员在两个领域之间来回穿梭但目标和方法是不同的。八、核心概念完整速查表概念定义书中举例特征 (Feature)数据的单个可测量属性是否存在子宫疤痕、声道大小估计表示 (Representation)数据的描述方式好的表示让任务更容易笛卡尔坐标 vs 极坐标变差因素 (Factors of Variation)影响观察数据的潜在不可观测原因光照、视角、年龄、口音表示学习 (Representation Learning)让机器自动学习数据的有效表示自编码器深度学习 (Deep Learning)通过多层简单表示逐步构建复杂表示像素→边缘→轮廓→部件→物体分布式表示 (Distributed Representation)每个输入由多个特征表示每个特征参与多个输入的表示6个神经元编码9种颜色×物体组合反向传播 (Backpropagation)计算损失函数对每个权重梯度的算法1980s 普及至今仍是主导训练方法知识库方法 (Knowledge Base)将世界知识硬编码为形式化规则Cyc 项目多层感知机 (MLP)多层简单函数复合而成的深度网络前馈深度网络贪婪逐层预训练2006年突破使深度网络的有效训练成为可能深度信念网络LSTM长短期记忆网络解决长序列建模的梯度问题1997年提出广泛用于NLP九、深度思考题基础理解用你自己的话解释莫拉维克悖论。为什么象棋对计算机简单而人脸识别却很难Cyc 项目的Fred 剃须故事揭示了知识库方法的什么根本缺陷书中笛卡尔坐标/极坐标的例子说明了什么请再举一个换表示就能简化问题的生活例子。深入思考4. “分布式表示相比局部表示有哪些具体优势如果物体类别从 3 种增加到 100 种两种方式各需要多少神经元5. 为什么深度”多层比宽度单层很多神经元更有效用计算机程序的类比来解释。6. 书中说目前达到人类水平的算法和 1980 年代的算法几乎一样——那真正改变了什么这对你学习深度学习有什么启示批判思维7. 深度学习的三次浪潮为什么会有衰退当前的第三次浪潮有可能再次衰退吗需要什么条件8. 书中说不应该认为深度学习在模拟大脑。但如果有一天我们真正理解了大脑的算法这对深度学习意味着什么