达特茅斯 1956年达特茅斯会议之后,研究者对人工智能的热情高涨,之后的十几年是人工智能的黄金时期。大部分早期研究者都通过人类的经验,基于逻辑或者事实归纳出来一些规则,然后通过编写程序来让计算机完成一个任务。这个时期中,研究者开发了一系列的智能系统,比如几何定理证明器、语言翻译器等。
专家系统 到了 20世纪 70年代,研究者意识到知识对于人工智能系统的重要性。特别是对于一些复杂的任务,需要专家来构建知识库。在这一时期,出现了各种各样的专家系统(Expert System),并在特定的专业领域取得了很多成果。专家系统可以简单理解为“知识库 + 推理机”,是一类具有专门知识和经验的计算机智能程序系统。专家系统一般采用知识表示和知识推理等技术来完成通常由领域专家才能解决的复杂问题,因此专家系统也被称为基于知识的系统。一个专家系统必须具备三要素:(1)领域专家级知识;(2)模拟专家思维;(3)达到专家级的水平。在这一时期, Prolog(Programming in Logic)语言是主要的开发工具,用来建造专家系统、自然语言理解、智能知识库等。
机器学习 机器学习的主要目的是设计和分析一些学习算法,让计算机从数据中自动分析获得规律,并利用规律对未知数据进行预测的算法,从而可以帮助人们解决一些特定任务,提高效率。机器学习的研究内容也十分广泛,涉及了概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。对于人工智能来说,机器学习从一开始就是一个重要的研究方向。但直到 1980年后,机器学习因其在很多领域的出色表现,才逐渐成为热门学科。
符号主义 符号主义(symbolism),又称逻辑主义、心理学派或计算机学派,是通过分析人类智能的功能,然后通过计算机来实现这些功能。符号主义有两个基本假设:(1)信息可以用符号来表示;(2)符号可以通过显式的规则(比如逻辑运算)来操作。人类的认知过程可以看作是符号操作过程。在人工智能的推理期和知识期,符号主义的方法比较盛行,并取得了大量的成果。
连接主义 连接主义(connectionism),又称仿生学派或生理学派,是认知科学领域中的一类信息处理的方法和理论。在认知科学领域,人类的认知过程可以看做是一种信息处理过程。连接主义认为人类的认知过程是由大量简单神经元构成的神经网络中的信息处理过程,而不是符号运算。因此,联结主义模型的主要结构是由大量的简单的信息处理单元组成的互联网络,具有非线性、分布式、并行化、局部性计算以及适应性等特性。
参考高中生物课本
首个可学习的人工神经网络是赫布网络,采用一种基于赫布规则的无监督学习方法。 感知器是最早的具有机器学习思想的神经网络,但其学习方法无法扩展到多层的神经网络上。直到 1980年左右, 反向传播算法才有效地解决了多层神经网络的学习问题,并成为最为流行的神经网络学习算法。感知器参见第3.4节。
第一阶段:模型提出 第一个阶段为 1943~1969 年,是神经网络发展的第一个高潮期。在此期间,科学家们提出了许多神经元模型和学习规则。
第二阶段:冰河期 第二阶段为 1969年~1983年,为神经网络发展的第一个低谷期。在此期间,神经网络的研究处于长年停滞及低潮状态。
第三阶段:反向传播算法引起的复兴 第三阶段为 1983年~1995年,为神经网络发展的第二个高潮期。这个时期中,反向传播算法重新激发了人们对神经网络的兴趣。
反向传播算法是迄今最为成功的神经网络学习算法,不仅用于多层前馈神经网络,还用于其他类型神经网络的训练。
第四阶段:流行度降低 第四个阶段为 1995~2006年,在此期间,支持向量机和其他更简单的方法(例如线性分类器)在机器学习领域的流行度逐渐超过了神经网络。
虽然神经网络可以很容易地增加层数、神经元数量,而从构建复杂的网络,但其计算复杂性也会指数级增长。当时的计算机性能和数据规模不足以支持训练大规模的神经网络。在 20世纪 90年代中期,统计学习理论和以支持向量机为代表的机器学习模型开始兴起。相比之下,神经网络的理论基础不清晰、优化困难、可解释性差等缺点更加凸显,神经网络的研究又一次陷入低潮。
第五阶段:深度学习的崛起 2006年, Hinton and Salakhutdinov [2006]发现多层前馈神经网络可以先通过逐层预训练,再用反向传播算法进行精调的方式进行有效学习。随着深度的人工神经网络在语音识别 [Hinton et al., 2012]和图像分类 [Krizhevsky et al., 2012]等任务上的巨大成功,以神经网络为基础的“深度学习”迅速崛起。近年来,随着大规模并行计算以及 GPU设备的普及,计算机的计算能力得以大幅提高。此外,可供机器学习的数据规模也越来越大。在计算能力和数据规模的支持下,计算机已经可以训练大规模的人工神经网络。各大科技公司都投入巨资研究深度学习,神经网络迎来第三次高潮。
机器学习(Machine Learning, ML)是指从有限的观测数据中学习(或“猜测”)出具有一般性的规律,并将这些规律应用到未观测样本上的方法。
传统的机器学习主要关注于如何学习一个预测模型。一般需要首先将数据表示为一组特征(Feature),特征的表示形式可以是连续的数值、离散的符号或其它形式。然后将这些特征输入到预测模型,并输出预测结果。这类机器学习可以看作是浅层学习(Shallow Learning)。浅层学习的一个重要特点是不涉及特征学习,其特征主要靠人工经验或特征转换方法来抽取。
为了提高机器学习系统的准确率,我们就需要将输入信息转换为有效的特征,或者更一般性称为表示(representation)。如果有一种算法可以自动地学习出有效的特征,并提高最终机器学习模型的性能,那么这种学习就是可以叫做表示学习(Representation Learning)。
“好的表示”是一个非常主观的概念,没有一个明确的标准。但一般而言,一个好的表示具有以下几个优点:
在传统机器学习中,我们经常使用两种方式来表示特征: 局部表示(LocalRepresentation)和分布式表示(Distributed Representation)。
一种表示颜色的方法是以不同名字来命名不同的颜色,这种表示方式叫做局部表示,也称为离散表示或符号表示。局部表示通常可以表示为 one-hot向量的形式。假设所有颜色的名字构成一个词表 V,词表大小为 |V|。我们可以用一one-hot向量参见第A.1.4节。个 |V| 维的 one-hot 向量来表示每一种颜色。第 i种颜色的 one-hot 向量中,第 i维的值为 1,其它都为 0。
我们可以使用神经网络来将高维的局部表示空间 R|V| 映射到一个非常低维的分布式表示空间 Rd, d ≪ |V|。在这个低维空间中,每个特征不在是坐标轴上的点,而是分散在整个低维空间中。在机器学习中,这个过程也称为嵌入(embedding)。嵌入通常指将一个度量空间中的一些对象映射到另一个低维的度量空间中,并尽可能保持不同对象之间的拓扑关系。比如自然语言中词的分布式表示,也经常叫做词嵌入。
深度学习是将原始的数据特征通过多步的特征转换得到一种特征表示,并进一步输入到预测函数得到最终结果。和“浅层学习”不同,深度学习需要解决的关键问题是贡献度分配问题(Credit Assignment Problem, CAP) [Minsky,1963],即一个系统中不同的组件(Components)或其参数对最终系统输出结果的贡献或影响。以下围棋为例,每当下完一盘棋,最后的结果要么赢要么输。我们会思考哪几步棋导致了最后的胜利,而又是哪几步棋导致了最后的败局。如何判断每一步棋的贡献就是贡献度分配问题,这也是一个非常困难的问题。从某种意义上讲,深度学习也可以看作是一种强化学习(Reinforcement Learning,RL),每个内部组件并不能直接得到监督信息,需要通过整个模型的最终监督信息(奖励)得到,并且有一定的延时性。
端到端学习(End-to-End Learning),也称端到端训练,是指在学习过程中不进行分模块或分阶段进行训练,直接优化任务的总体目标。在端到端学习中,一般不需要明确地给出不同模块或阶段的功能,中间过程不需要人为干预。
在深度学习中,一般通过误差反向传播算法来进行参数学习。采用手工方式来计算梯度再写代码实现的方式会非常低效,并且容易出错。此外,深度学习模型需要的计算机资源比较多,一般需要在 CPU和 GPU之间不断进行切换,开发难度也比较大。因此,一些支持自动梯度计算、无缝 CPU和 GPU切换等功能的深度学习框架就应运而生。比较有代表性的框架包括: Theano、 Caffe、TensorFlow、 Pytorch、 Keras等。
此外,还有一些深度学习框架,包括微软的 CNTK7,由亚马逊、华盛顿大学和卡内基梅隆大学等开发维护的 MXNet 7和百度开发的 PaddlePaddle 8等。
在这些基础框架之上,还有一些建立在这些框架之上的高度模块化的神经网络库,使得构建一个神经网络模型就像搭积木一样容易。其中比较有名的模块化神经网络框架有:(1)基于 TensorFlow 和 Theano 的 Keras9和(2)基于Theano的 Lasagne 10。
深度学习的研究进展非常迅速。因此,最新的文献一般会发表在学术会议上。和深度学习相关的学术会议主要有:
另外,人工智能的很多子领域也都有非常好的专业学术会议。在计算机视觉领域,有
在自然语言处理领域,有