《跟我一起学深度学习》
深度学习的进展是多个领域早期贡献的结果。在深度学习领域的演进中,数学、神经科学、计算机科学和统计学等学科的早期研究发挥了至关重要的作用,为深度学习的理论、方法和应用奠定了坚实的基础。在这一进程中,一些关键人物在这些学科的交叉领域中发挥了重要作用,他们的合作努力极大地推动了深度学习领域的发展和应用。与此同时,随着诸如TensorFlow、PyTorch等深度学习框架的涌现,为深度学习的推动提供了更加强大的工具和推进动力。在本章内容中,将首先从20世纪80年代开始,来梳理深度学习的发展脉络,包括各个重要技术的出现及深度学习发展的兴衰沉浮等,然后将对深度学习发展中有突出贡献的人物进行简单介绍,并同时梳理常见的几种深度学习框架;最后,对本书的体系结构及相关资源的获取进行了介绍。由于深度学的发展涉及方法面面,因此本章节内容将主要对与本书相关的部分进行介绍。
1.1 深度学习的发展阶段
深度学习的概念可以追溯到20世纪80年代,但其真正的兴起和广泛应用要迟至近年。在1980年代,研究人员开始尝试使用多层神经网络来解决复杂的问题,但由于当时计算资源有限、训练困难等问题,深度学习并没有得到广泛的认可和成功,但作为深度学习领域的基础,人工智能(Artificial Intelligence,AI)领域的早理论发展则可追溯至20世纪40年代至50年代末,它也标志着现代计算机科学技术的兴起。
在这一时期,人工智能的萌芽主要集中在解决特定的问题、理解自然语言和基于规则的专家系统。随后,多层感知机的出现激发了深度学习的早期兴趣并奠定了神经网络的基础;进一步,反向传播算法的成功应用成为神经网络研究的重大突破,这一算法在1980年代中期被重新发现和完善,极大地推进了神经网络的训练效率和实用性。紧接着,卷积神经网络的发展,特别是在1990年代的应用和改进,为图像识别和处理带来了革命性的进步。与此同时,循环神经网络的发展为序列数据处理,如语音识别和时间序列分析提供了有效工具。整个人工智能领域所涵盖的研究领域及之间的简单从属关系如图1-1所示。
图 1-1 人工智能领域关系划分图
最后,在自然语言处理领域中,AI的发展与应用通过诸如基于变换器的双向编码器表示(Bidirectional Encoder Representations from Transformers,BERT)和生成式预训练变换器(Generative Pre-training Transformer,GPT)等先进模型显著提升了机器翻译、文本生成和语言理解的能力。总体而言,这些发展共同构筑了当代AI领域的基础,推动了技术的不断进步和应用的广泛扩展。
1.1.1 早期理论的发展
人工智能领域的早期理论发展始于20世纪40至50年代,数学和计算机科学领域取得的关键进展极大地推动了该领域的进程。在此期间,如艾伦·图灵(Alan Turing)、约翰·麦卡锡(John McCarthy)等学者,通过提出革命性的理论概念和计算模型确立了该领域的基本理论框架。同时,约翰·冯·诺伊曼(John von Neumann)关于计算机设计的原理和克劳德·香农(Claude Shannon)的信息理论等,为AI技术的演进也提供了关键性支持。这一时期的理论探索与实际应用的交融,为人工智能领域的持续发展奠定了坚实的基础。
1936年,有着人工智能之父之称的图灵在其论文《可计算数与决策问题的应用》[1]中首次提出了图灵机(Turing Machine)这一概念。在这篇论文中图灵介绍了图灵机这种抽象的理论机器模型,它定义了一个算法是否可计算也就是确定一个问题是否有解。图灵通过其模型展示了特定问题的不可计算性,亦即,不存在能够解决这些问题的算法[2]。此一重要发现深刻地揭示了计算机能力的边界与局限,对计算机程序设计及人工智能的发展产生了根本性的影响,因此这篇论文也被称为是计算机科学和人工智能领域的里程碑之作,奠定了现代计算机科学的理论基础。
1943年,沃伦·麦卡洛克(Warren McCulloch )和沃尔特·皮茨(Walter Pitts) 提出了一种简化的神经网络模型麦卡洛克-皮茨(McCulloch-Pitts)[3]。该模型基于对生物神经网络的抽象化理解将神经元简化为一种逻辑门(Logic Gates),并且他们认为神经元是一系列具有开和关两种状态的阈值控制单元(Threshold Control Unit),可以通过连接各个神经元建立一个逻辑环路来进行逻辑推导。神经元在进行信号传递时通过计算各个输入值的权重和并同阈值进行比较,只要总和达到了阈电位(Threshold Potential),不论超过了多少就能引起一系列离子通道的开放和关闭,从而形成离子的流动改变跨膜电位[4],如图1-2所示。
图 1-2 离子的流动改变跨膜电位
离子流动改变跨膜电位这一过程就可以简单地看作神经网络的工作原理,同时这也是将神经网络与数学逻辑结合起来的第1次尝试。沃伦·麦卡洛克和沃尔特·皮茨同时也证明了这种简化的神经网络模型能够计算每个可被数学逻辑表达的函数[5]。这一发现对于理解大脑如何处理信息,以及如何在计算机上模拟这一过程具有重要意义,也对后来的人工神经网络理论产生了深远影响,如图1-3所示便是早期ENIAC的主控制面板。
图 1-3 程序员贝蒂·让·詹宁斯(左)和弗兰·比拉斯(右)操作位于穆尔电气工程学院的ENIAC主控制面板
1945年,在美国宾夕法尼亚大学的约翰·莫奇利(John Mauchly)和约翰·皮斯普·埃克特(J. Presper Eckert)等人的主持下完成了世界上第一台电子计算机(Electronic Numerical Integrator And Computer, ENIAC)设计与建造[6]。ENIAC是世界上第一台通用计算机,它是图灵完全的电子计算机能够重新编程解决各种计算问题,它的诞生也标志着信息时代的开端为后来的计算机科学和人工智能研究奠定了技术基础。1948年,香农发表了《通信的数学理论》奠定了信息论的基础[7]。香农通过引入了熵的概念来量化信息中的不确定性,特别是在决策树、信息检索、模式识别等领域中具有重要应用。信息论对理解和建模通信过程中的信息处理非常关键,同样对人工智能的发展产生了深远影响。
总体而言,人工智能早期理论的发展奠定了现代人工智能研究的基础,涉及计算机科学、逻辑学、神经科学和心理学等多个领域。这一时期的研究不仅推动了技术的进步,也引发了关于智能、意识和人机关系等哲学和伦理讨论。
1.1.2 人工智能的萌芽
1950到1970年代标志着人工智能作为一个独立学科的诞生和初步发展。在这个时期,一系列理论突破和实验性尝试为人工智能的未来发展奠定了基础。1950年,图灵也在他的论文《计算机器与智能》 中首次提出了图灵测试(Turing Test)[8],关于图灵测可以参见9.1节内容。论文开篇即提出一个引人深思的问题:机器能否思考?。通过图灵测试可以评估机器是否能够展现出与人类相似的智能。尽管这个测试在当时来看有诸多批评,但是它在思考机器智能的性质和界限方面开辟了新的思路。同时,随着第一台电子计算机的问世专家系统(Expert System)也在这一时期开始兴起。
1956年,在达特茅斯会议(Dartmouth Conference)上约翰·麦卡锡首次正式提出了人工智能这一术语,这也标志着人工智能作为一个独立学科的诞生[9],因此也推动了对于人工智能的早期探索。他还对后来的列表处理器编程语言(List Processor, LISP)有重大贡献,该语言在人工智能的早期发展中发挥了核心作用。因约翰·麦卡锡推动了人工智能作为一个独立学科的发展及在人工智能领域的卓越贡献,他在1971年获得图灵奖,同样也被称为人工智能之父[10]。1956年,作为信息处理语言(Information Processing Language, IPL)发明者之一的艾伦·纽厄尔(Allen Newell)和赫伯特·西蒙(Herbert A. Simon)合作开发了逻辑理论家(Logic Theorist)和一般问题解决器(General Problem Solver),旨在模拟人类在解决广泛问题时的思考过程,它们也被称为是世界上最早的两个人工智能程序,其中逻辑理论家更是能够证明《数学原理》中前52个定理中的38个,并且某些证明比原著更加新颖和精巧[11]。1975年艾伦·纽厄尔和赫伯特·西蒙一起因人工智能方面的基础贡献而被授予图灵奖。
20世纪50年代末,浅层学习(Shallow Learning)在神经网络领域再次流行起来。1958年,弗兰克·罗森布拉特(Frank Rosenblatt)不仅将线性神经网络与阈值函数相结合形成了一种模式分类器,还创造了更为复杂和深层的多层感知机(Multi-Layer Perceptrons, MLPs)[12],如图1-4所示。这些多层感知机的第1层是非学习层具有随机分配的权重,而输出层则具有自适应的可学习参数。虽然这种结构还不属于深度学习,但弗兰克·罗森布拉特实际上已经拥有了后来被称为极端学习机(Extreme Learning Machines, ELMs)的概念,只是当时未得到适当的认可[5]。在这个时期,研究人员对人工智能的潜力充满了乐观,政府和私人部门在这个时期也对人工智能研究提供了大量的资金支持,一系列重要的里程碑事件和项目推动了人工智能领域的发展,因此,自1956年起的十年里也被称为是人工智能发展的第1次高潮。
图 1-4 弗兰克·罗森布拉特所提出的多层感知机[5]
1969年, 马文·明斯基(Marvin Minsky) 和 西摩·佩珀特(Seymour Papert)在他们的论著《感知器:计算几何简介》中详细讨论了异或门(Excelusive-OR gate, XOR)问题,提出单层感知机无法解决非线性可分问题[13]。XOR函数是一种简单的二元逻辑运算,它仅在输入变量具有不同值时输出1(真),如果输入变量相同,则输出0(假),如图1-5所示便是一种经典线性不可分情况。
图 1-5 XOR线性不可分问题示意图
马文·明斯基和西摩·佩珀特的发现对当时神经网络的发展产生了巨大影响,导致一段时间内该领域的研究资金和兴趣显著减少,然而,也正是由于这样的发现催生了后续对更复杂神经网络结构的研究,特别是多层网络和非线性激活函数的研究与应用并最终克服了XOR问题,这对深度学习的发展起到了催化剂的作用。1972年,数学家迈克尔·詹姆斯·莱特希(Michael James Lighthill)为英国科学研究委员会所撰写的《莱特希尔报告》对当时的人工智能研究进行了深刻的批评,指出当前的人工智能在理论上可能很先进但在实际应用中却遇到了重大障碍,大多数研究没有产生实际应用或商业价值[14]。这个事件是人工智能发展早期的一个重要转折点,反映了人工智能研究面临的多重困难,包括资金紧缺、技术挑战和公众对人工智能的疑虑,也强调了理论研究和实际应用之间平衡的重要性,因此,1970年代通常也被称为是人工智能的第1个寒冬。
在电子计算机问世以后,研究人员开始尝试使用计算机技术来模拟人类决策的前景,这些系统通常也被描述为专家系统的早期形式[15]。 例如,生物医学研究人员开始创建用于医学和生物学诊断应用的计算机辅助系统,即通过患者的症状和实验室测试结果作为输入来生成诊断结果[16,17],如图1-6所示。专家系统分为两个子系统:推理机和知识库,知识库代表事实和规则,而推理机则是将规则应用于已知事实以推断出新事实[15]。1965年,被认为是第1个专家系统的丹德拉(Dendritic Algorithm, Dendral)项目诞生[18]其主要目的是研究科学假设的形成和发现,例如通过分析质谱并利用化学知识帮助有机化学家识别未知的有机分子。1970年代,专家系统作为人工智能的一个子领域开始获得关注,这一时期的代表作包括用于有机化学分析的启发式丹德拉系统(Heuristic Dendral)和用于医疗诊断的米辛(Mycin)系统,而它们都是源于早期的丹德拉项目。
图 1-6 早期的专家系统平台[15]
1950到1970年代的人工智能研究奠定了这个领域的基础。通过定义人工智能开发早期的人工智能程序和尝试机器学习,这个时期的研究为后来更复杂和高级的人工智能技术发展铺平了道路。虽然当时的技术和理论有其局限性,但它们对于理解和构建智能系统的探索是至关重要的。在这个时期,人工智能领域的研究人员对这个新兴学科的未来充满乐观,许多人预测机器将很快能够模仿甚至超越人类智能,不过同时大家也开始意识到实现这些目标的复杂和挑战。
1.1.3 反向传播算法的发展
1980年代对于深度学习的发展来讲是一个关键时期,特别是反向传播算法的提出和应用为训练复杂神经网络提供了有效方法,对神经网络的研究产生了积极影响并带领人工智能走出了当时的寒冬进入了第2次高潮。反向传播算法可以有效地计算神经网络中每个权重误差的梯度,从而使深度神经网络通过梯度下降等优化方法进行训练成为可能,进而大大推动了整个人工智能领域的发展。
1676年戈特弗里德·威廉·莱布尼茨(Gottfried Wilhelm Leibniz )首次在学术论文中提出了微积分的链式法则,它在今天的神经网络中至关重要,使我们能够精确计算出神经网络中权重参数的微小调整对于最终输出结果的影响[5]。梯度下降(Gradient Descent, GD)技术最初由奥古斯丁-路易·柯西(Augustin-Louis Cauchy)在1847年提出[19],后由雅克·阿达玛(Jacques Hadamard)进一步发展[20],它是神经网络中的关键优化方法。随机梯度下降(Stochastic Gradient Descent, SGD)是梯度下降的变体,由赫伯特·罗宾斯(Herbert Robbins)和萨顿·莫罗(Sutton Monro)于1951年提出[21],它每次更新参数时只随机选择一个训练样本来计算梯度(详见3.3节内容)。
1970年,赛普·林纳因马(Seppo Linnainmaa)首次发表了现在众所周知的反向传播算法(Back Propagation,BP)[22],同时也被称为自动微分的反向模式(The Reverse Mode of Automatic Differentiation),它是当今众多流行神经网络软件包的核心不分,例如PyTorch 和Tensorflow等深度学习框架。尽管反向传播算法在1970年就已经被提出,但实际上直到1982年保罗·维波斯(Paul Werbos)才首先描述了通过误差的反向传播来训练人工神经网络的过程[23]。不过反向传播算法真正开始普及则是在1986年由大卫·鲁梅尔哈特(David Rumelhart) 、杰弗里·辛顿(Geoffrey Hinton)和罗纳德·威廉姆斯(Ronald Williams)联合发表在《自然》杂志的开创性论文后[24]。在论文中作者详细阐述了反向传播算法如何有效地通过神经网络传递误差信息并据此更新网络权重以最小化输出误差,并展示了其在多层神经网络中的有效性,解决了如何有效训练多层神经网络的问题,因此也成为后续深度学习能够蓬勃发展的基石。
在反向传播算法出现之前训练多层网络是非常具有挑战性的,因为难以准确地计算出隐藏层的误差。反向传播算法的应用使在多层网络中有效地传递误差信息成为可能,从而大幅地提高了多层神经网络的训练效率和效果。反向传播算法的提出和成功应用不仅推动了神经网络的发展,也为理解和改进更复杂的学习算法提供了重要的理论基础。尽管反向传播算法在训练神经网络方面极为有效,但它也带来了如陷入局部最小值等问题。同时,随着网络规模的增加反向传播算法的计算复杂性也随之上升。这在当时的计算能力下仍是一个重大挑战,因此也限制了更深层网络的训练。
1980年代反向传播算法的发展是深度学习历史上的一个里程碑。它不仅解决了训练多层神经网络的关键问题,也开启了深度学习在随后几十年里的快速发展。虽然存在一些局限性和挑战,但反向传播算法无疑是推动整个人工智能领域向前发展的关键因素之一。

浙公网安备 33010602011771号