英语原文共 10 页,剩余内容已隐藏,支付完成后下载完整资料
深度学习
1.引言
远在古希腊时期,发明家就梦想着创造能思考的机器。神话人物皮格马利翁 (Pygmalion)、代达罗斯 (Daedalus) 和赫淮斯托斯 (Hephaestus) 可以被看作传说中的发明家,而加拉蒂亚 (Galatea)、塔洛斯 (Talos) 和潘多拉 (Pandora) 则可以被视为人造生命 (Ovid and Martin, 2004; Sparkes, 1996; Tandy, 1997)。
当人类第一次构思可编程计算机时,就已经在思考计算机能否变得智能(尽管这距造出第一台计算机还有一百多年)(Lovelace, 1842)。如今,人工智能 (artificial intelligence, AI) 已经成为一个具有众多实际应用和活跃研究课题的领域,并且正在蓬勃发展。我们期望通过智能软件自动地处理常规劳动、理解语音或图像、帮助医学诊断和支持基础科学研究。
在人工智能的早期,那些对人类智力来说非常困难、但对计算机来说相对简单的问题得到迅速解决。比如,那些可以通过一系列形式化的数学规则来描述的问题。人工智能的真正挑战在于解决那些对人来说很容易执行、但很难形式化描述的任务,比如识别人们所说的话或图像中的脸。对于这些问题,我们人类往往可以凭直觉轻易地解决。
针对这些比较直观的问题,本书讨论一种解决方案。该方案可以让计算机从经验中学习,并根据层次化的概念体系来理解世界,而每个概念通过与某些相对简单的概念之间的关系定义。让计算机从经验获取知识,可以避免由人类来给计算机形式化地指定它需要的所有知识。层次化的概念让计算机构建较简单的概念来学习复杂概念。如果绘制出这些概念如何建立在彼此之上的图,我们将得到一张 “深”(层次很多)的图。基于这个原因,我们称这种方法为AI深度学习 (deep learning)。许多AI的早期成功发生在相对朴素且形式化的环境中,计算机不需要具备很多
关于世界的知识。例如,IBM 的深蓝(Deep Blue)国际象棋系统在 1997 年击败了世界冠军Garry Kasparov(Hsu, 2002)。当然国际象棋是一个非常简单的领域,仅含有 64 个位置并只能以严格限制的方式移动 32 个棋子。设计一种成功的国际象棋策略是巨大的成就,但向计算机描述棋子及其允许的走法并不是挑战的困难所在。国际象棋完全可以由一个非常简短的、完全形式化的规则列表来描述,并可以容易地由程序员事先准备好。
讽刺的是,抽象和形式化的任务对人类而言是最困难的脑力任务之一,但对计算机而言却属于最容易的。计算机早就能够打败人类最好的象棋选手,但直到最近计算机才在识别对象或语音任务中达到人类平均水平。一个人的日常生活需要关于世界的巨量知识。很多这方面的知识是主观的、直观的,因此很难通过形式化的方式表达清楚。为了表现出智能,计算机需要获取同样的知识。人工智能的一个关键挑战就是如何将这些非形式化的知识传达给计算机。
一些人工智能项目力求将关于世界的知识用形式化的语言进行硬编码 (hardcode)。计算机可以使用逻辑推理规则来自动地理解这些形式化语言中的申明。这就是众所周知的人工智能的知识图谱 (knowledge base) 方法。这些项目没有导致重大的成功。其中最著名的项目是 Cyc (Lenat and Guha, 1989)。Cyc 包括一个推断引擎和一个使用 CycL 语言描述的声明数据库。这些声明是由人类监督者输入的。这是一个笨拙的过程。人们设法设计出足够复杂的形式化规则来精确地描述世界。
例如,Cyc 不能理解一个关于名为Fred的人在早上剃须的故事 (Linde, 1992)。它的推理引擎检测到故事中的不一致性:它知道人没有电气零件,但由于Fred正拿着一个电动剃须刀,它认为实体 lsquo;lsquo;正在剃须的 Fred”(“FredWhileShaving”) 含有电气部件。因此它产生了这样的疑问——Fred在刮胡子的时候是否仍然是一个人。
依靠硬编码的知识体系面对的困难表明,AI系统需要具备自己获取知识的能力,即从原始数据中提取模式的能力。这种能力被称为机器学习 (machine learning)。引入机器学习使计算机能够解决涉及现实世界知识的问题,并能作出看似主观的决策。比如,一个被称为逻辑回归 (logistic regression) 的简单机器学习算法可以决定是否建议剖腹产 (Mor-Yosef et al., 1990)。而朴素贝叶斯 (naive Bayes)(同样是一个简单机器学习算法)则可以区分垃圾电子邮件和合法电子邮件。
这些简单的机器学习算法的性能在很大程度上依赖于给定数据的表示 (representation)。例如,当逻辑回归被用于推荐剖腹产时,AI系统不直接检查患者。相反,医生需要告诉系统几条相关的信息,诸如子宫疤痕是否存在。表示患者的每条信息被称为一个特征。逻辑回归学习病人的这些特征如何与各种结果相关联。然而,它丝毫不能影响该特征定义的方式。如果将病人的 MRI 扫描作为逻辑回归的输入,而不是医生正式的报告,它将无法作出有用的预测。MRI 扫描的单一像素与分娩过程中并发症之间的相关性微乎其微。
在整个计算机科学乃至日常生活中,对表示的依赖都是一个普遍现象。在计算机科学中,如果数据集合被精巧地结构化并被智能地索引,那么诸如搜索之类的操作的处理速度就可以成指数级地加快。人们可以很容易地在阿拉伯数字的表示下进行算术运算,但在罗马数字的表示下运算会更耗时。因此,毫不奇怪,表示的选择会对机器学习算法的性能产生巨大的影响。图1.1展示了一个简单的可视化例子。
图 1.1: 不同表示的例子:假设我们想在散点图中画一条线来分隔两类数据。在左图,我们使用笛卡尔坐标表示数据,这个任务是不可能的。右图中,我们用极坐标表示数据,可以用垂直线简单地解决这个任务。(与 David Warde-Farley 合作画出此图。)
许多人工智能的任务都可以通过以下方式解决:先提取一个合适的特征集,然后将这些特征提供给简单的机器学习算法。例如,对于通过声音鉴别说话者的任务来说,一个有用的特征是对其声道大小的估计。这个特征为判断说话者是一个男性、女性还是儿童提供了有力线索。然而,对于许多任务来说,我们很难知道应该提取哪些特征。例如,假设我们想编写一个程序来检测照片中的车。我们知道,汽车有轮子,所以我们可能会想用车轮的存在与否作为特征。不幸的是,我们难以准确地从像素值的角度描述一个车轮看上去像什么。虽然车轮具有简单的几何形状,但它的图像可能会因场景而异,如落在车轮上的阴影、太阳照亮的车轮的金属零件、汽车的挡泥板或者遮挡的车轮一部分的前景物体等等。解决这个问题的途径之一是使用机器学习来挖掘表示本身,而不仅仅把表示映射到输出。这种方法我们称之为表示学习 (representation learning)。学习到的表示往往比手动设计的表示表现得更好。并且它们只需最少的人工干预,就能让AI系统迅速适应新的任务。表示学习算法只需几分钟就可以为简单的任务发现一个很好的特征集,对于复杂任务则需要几小时到几个月。手动为一个复杂的任务设计特征需要耗费大量的人工时间和精力;甚至需要花费整个社群研究人员几十年的时间。
表示学习算法的典型例子是自动编码器 (autoencoder)。自动编码器由一个编码器 (encoder) 函数和一个解码器 (decoder) 函数组合而成。编码器函数将输入数据转换为一种不同的表示,而解码器函数则将这个新的表示转换到原来的形式。我们期望当输入数据经过编码器和解码器之后尽可能多地保留信息,同时希望新的表示有各种好的属性,这也是自动编码器的训练目标。不同种类的自动编码器的目标是实现不同种类的属性。
当设计特征或设计用于学习特征的算法时,我们的目标通常是分离出能解释观察数据的变化因素 (factors of variation)。在此背景下,“因素” 这个词仅指代影响的
不同来源;因素通常不是乘性组合。这些因素通常是不能被直接观察到的量。相反,它们可能是现实世界中观察不到的物体或者不可观测的力,但会影响能观测到的量。为了对观察到的数据提供有用的简化解释或推断其原因,它们还可能以概念的形式存在于人类的思维中。它们可以被看作数据的概念或者抽象,帮助我们了解这些富有变化的数据。当分析语音记录时,变化的因素包括说话者的年龄、性别、他们的口音和他们正在说的词语。当分析汽车的图像时,变化的因素包括汽车的位置、它的颜色、太阳的角度和亮度。
在许多现实的人工智能应用中,困难主要源于很多变化因素影响着我们能够观察到的每一个数据。比如,在一张包含红色汽车的图片中,其单个像素在夜间可能会非常接近黑色。汽车轮廓的形状取决于视角。大多数应用需要我们理清变化因素并丢弃我们不关心的因素。当然,从原始数据中提取这样高层次的、抽象的特征是非常困难的。许多诸如说话口音这样的变化因素,只能对数据进行复杂的、接近人类水平的理解来辨识。这几乎与获得原问题的表示一样困难,因此,乍一看,表示学习似乎并不能帮助我们。深度学习 (deep learning) 通过其它较简单的表示来表达复杂表示,解决了表示学习中的核心问题。
深度学习让计算机通过较简单概念构建复杂的概念。图1.2展示了深度学习系统如何通过组合较简单的概念(例如转角和轮廓,它们转而由边线定义)来表示图
图 1.2: 深度学习模型的示意图。计算机难以理解原始感观输入数据的含义,如表示为像素值集合的图像。将一组像素映射到对象标识的函数非常复杂。如果直接处理,学习或评估此映射似乎是不可能的。深度学习将所需的复杂映射分解为一系列嵌套的简单映射(每个由模型的不同层描述)来解决这一难题。输入展示在可见层 (visible layer),这样命名的原因是因为它包含我们能观察到的变量。然后是一系列从图像中提取越来越多抽象特征的隐藏层 (hidden layer)。因为它们的值不在数据中给出,所以将这些层称为 lsquo;lsquo;隐藏”; 模型必须确定哪些概念有利于解释观察数据中的关系。
这里的图像是每个隐藏单元表示的特征的可视化。给定像素,第一层可以轻易地通过比较相邻像素的亮度来识别边缘。有了第一隐藏层描述的边缘,第二隐藏层可以容易地搜索可识别为角和扩展轮廓的边集合。给定第二隐藏层中关于角和轮廓的图像描述,第三隐藏层可以找到轮廓和角的特定集合来检测特定对象的整个部分。最后,根据图像描述中包含的对象部分,可以识别图像中存在的对象。像中人的概念。深度学习模型的典型例子是前馈深度网络或多层感知机 (multilayer perceptron, MLP)。多层感知机仅仅是一个将一组输入值映射到输出值的数学函数。该函数由许多较简单的函数复合构成。我们可以认为每个应用具有不同的数学函数,并为输入提供新的表示。
学习数据正确表示的想法是解释深度学习的一个视角。另一个视角是深度能够让计算机学习一个多步骤的计算机程序。表示的每一层可以被认为是并行执行另一组指令后计算机的存储器状态。更深的网络可以按顺序执行更多的指令。顺序指令提供了极大的能力,因为后面的指令可以参考早期指令的结果。从这个角度上看,在某层激活函数里,并非所有信息都蕴函着解释输入的变化因素。表示还存储着状态信息,用于帮助程序理解输入。这里的状态信息类似于传统计算机程序中的计数器或指针。它与具体的输入内容无关,但有助于模型组织其处理过程。
目前主要有两种度量模型深度的方式。第一个观点是基于评估架构所需执行的顺序指令的数目。我们可以认为这是描述每个给定输入后,计算模型输出的流程图的最长路径。正如两个使用不同语言编写的等价程序将具有不同的长度;相同的函数可以被绘制为具有不同深度的流程图,其深度取决于我们可以用来作为一个步骤的函数。图1.3说明了语言的选择怎样给相同的架构两个不同的衡量。
图 1.3: 将输入映射到输出的计算图表的示意图,其中每个节点执行一个操作。深度是从输入到输出的最长路径的长度,但这取决于可能的计算步骤的定义。这些图中所示的计算是逻辑回归模型的输出,sigma;(wTx),其中sigma;是logistic sigmoid函数。如果我们使用加法、乘法和logistic sigmoid作为我们计算机语言的元素,那么这个模型深度为三。如果我们将逻辑回归视为元素本身,那么这个模型深度为一。
另一种是在深度概率模型中使用的方法,它不是将计算图的深度视为模型深度,而是将描述概念彼此如何相关的图的深度视为模型深度。在这种情况下,计算每个概念表示的计算流程图的深度可能比概念本身的图更深。这是因为系统对较简单概念的理解在给出更复杂概念的信息后可以进一步细化。例如,一个AI系统观察其中一只眼睛在阴影中的脸部图像时,它最初可能只看到一只眼睛。但当检测到脸部
全文共6202字,剩余内容已隐藏,支付完成后下载完整资料
资料编号:[142895],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。