人工智能和深度学习导论

978-7-115-58408-3
作者: [美]奥斯瓦尔德·坎佩萨托(Oswald Campesato )
译者:
编辑: 王峰松

图书目录:

详情

本书首先介绍了人工智能的基础知识,然后分别介绍了机器学习、深度学习、自然语言处理和强化学习中的重点概念和实践过程,包含逻辑斯谛回归、k最近邻、决策树、随机森林、支持向量机、卷积神经网络、循环神经网络、LSTM、自动编码器等。此外,本书的附录部分还分别简单介绍了Keras、TensorFlow、pandas等人工智能相关的工具。 本书适用于高等院校电子信息类专业的人工智能导论课程,也适合想要对人工智能、机器学习和深度学习快速了解和掌握的专业人士阅读参考。

图书摘要

版权信息

书名:人工智能和深度学习导论

ISBN:978-7-115-58408-3

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。


版  权

著    [美]奥斯瓦尔德·坎佩萨托(Oswald Campesato)

译    刘少俊 方延风

责任编辑 王峰松

人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

读者服务热线:(010)81055410

反盗版热线:(010)81055315

内 容 提 要

本书首先介绍了人工智能的基础知识,然后分别介绍了机器学习、深度学习、自然语言处理和强化学习中的重点概念和实践过程,包含逻辑斯谛回归、k最近邻、决策树、随机森林、支持向量机、卷积神经网络、循环神经网络、LSTM、自动编码器等。此外,本书的附录部分还分别简单介绍了Keras、TensorFlow、pandas等人工智能相关的工具。

本书适用于高等院校电子信息类专业的人工智能导论课程,也适合想要对人工智能、机器学习和深度学习快速了解和掌握的专业人士阅读参考。

译 者 序

当前世界正在以前所未有的速度改变,人工智能已逐渐融入学习、工作、生活的方方面面,成为不可或缺的工具。人工智能是计算机科学的一个分支,它试图了解智能的本质,是一门涉及研究和开发用于模拟、延伸、扩展智能的理论、方法、技术和应用系统的技术科学。机器学习是一种人工智能方法,主要研究如何从经验中改进系统性能以实现人工智能这一目标。深度学习则是一种实现机器学习的技术,最初是利用深度神经网络来解决特征表达的学习过程,得益于计算能力不断增强、数据规模不断扩大、算法模型不断改进,现在已经是机器学习研究中非常重要的一个领域。

本书介绍了人工智能、机器学习、深度学习的基本概念和一些经典的算法、模型,供初学者入门学习。本书还在附录部分介绍了Keras、TensorFlow和pandas,这三者分别提供了深度学习框架和数据处理工具,能帮助人们快速开发人工智能应用。本书提供了足够的代码示例来帮助读者理解不同深度的算法功能,以便读者更好地掌握各个知识点。通过认真阅读本书,读者必能有所收获。

本书由刘少俊、方延风合作翻译,刘少俊主要翻译了第1、3、5章和附录A、B的内容,方延风主要翻译了第2、4、6章和附录C的内容。在这里,要特别感谢福建省科学技术信息研究所的支持,本书的中译本是“打造区域科技创新智库基础条件与能力建设(2019L3015)”“分布式科技数据采集与存储平台的研究与应用(2019R1008-8)”等项目的建设成果。此外,还要感谢人民邮电出版社的编辑,他们对本书进行了专业、细致的审核。

此外,由于译者水平有限,书中难免有欠妥之处,如有任何意见和建议,请不吝告知,我们将感激不尽。我们的邮箱分别是liusj@fjinfo.org.cn和afang@fjinfo.org.cn。

译者

2021年12月

前  言

目标

本书的目标是向初学者介绍基本的机器学习和深度学习概念与算法,旨在快速介绍机器学习和深度学习的各种“核心”特性,并提供大学课程中包含的代码示例。章节中的材料说明了如何使用Keras解决某些任务,之后你可以进一步阅读以加深知识。

本书还将为你节省搜索代码示例所需的时间,这是一个潜在的耗时过程。在任何情况下,如果你不确定能否理解这里介绍的内容,请浏览代码示例以了解复杂程度。

请记住下面这一点:阅读本书并不会让你成为机器学习或深度学习专家

你能从本书中学到什么

第1章对人工智能进行了简短的介绍。第2章介绍了机器学习的概念(有监督和无监督学习)、任务类型(回归、分类和聚类)和线性回归。第3章专门介绍了分类算法,如kNN、朴素贝叶斯、决策树、随机森林和支持向量机。

第4章介绍了深度学习,并深入研究了卷积神经网络。第5章介绍了深度学习体系架构,例如RNN和LSTM。

第6章介绍了自然语言处理的各个方面,并提供了一些基本概念和算法,其后是强化学习和贝尔曼方程。附录A介绍了Keras,附录B介绍了TensorFlow 2.0,附录C介绍了pandas。

还有一点:尽管Jupyter比较流行,但是本书中的所有代码示例都是Python脚本。你可以通过各种在线教程快速学习Jupyter的有用功能。此外,完全在线的谷歌Colaboratory也值得关注,它基于Jupyter Notebook并提供了可以免费使用的图形处理器(Graphics Processing Unit,GPU)。

阅读本书需要多少Keras知识

如果你接触过Keras,这对阅读本书会有所帮助。如果完全没有接触过Keras,你可以阅读一下附录A。如果你还想了解Keras和逻辑斯谛回归,请参阅第3章中的示例。该例需要一些涉及激活函数、优化器和成本函数的理论知识,这些知识都将在第4章中进行讨论。

请记住,Keras已经很好地被集成到TensorFlow 2中(在tf.keras命名空间中),它提供了一个“纯TensorFlow”之上的抽象层,使你能够更快地搭建应用原型。

需要学习本书的理论部分吗

同样,答案取决于你计划在多大程度上参与机器学习。除了创建模型之外,你还将使用各种算法来查看究竟哪些模型提供了项目所需的精确度(或其他度量指标)。如果有所欠缺,机器学习的理论可以帮助你对模型和数据进行“取证”分析,并在理想情况下帮助你确定改进模型的方法。

代码示例的创建

本书中的代码示例是使用 Python 3 和 Keras 创建和测试的,Keras 内置在使用macOS 10.12.6操作系统的MacBook Pro上的TensorFlow 2中。代码示例主要来自作者的“深度学习和Keras”研究生课程。在某些情况下,有些代码示例包含了在线论坛中讨论的小段代码。考虑到本书的体量,书中的代码示例遵循的要点可以概括为“4 个C”,就是尽可能清晰(Clear)、简洁(Concise)、完整(Complete)、正确(Correct)。

本书的技术预备知识

你需要对Python有所了解,并且要知道如何从命令行启动Python代码(在Mac用户的类UNIX环境中)。此外,基础线性代数(向量和矩阵)、概率论/统计学(均值、中值、标准差)和微积分中的基本概念(如导数)将有助于你掌握材料。NumPy和matplotlib的一些知识也会有所帮助——本书假设你熟悉它们的基本功能(如NumPy数组)。

要想理解本书后半部分的代码示例,另一个先决条件也很重要:对神经网络要有一些了解,包括隐藏层和激活函数的概念(即使你没有完全理解它们)。交叉熵的知识对一些代码示例的理解也会有所帮助。

本书的非技术预备知识

尽管这个问题的答案更难量化,但有学习机器学习的强烈愿望,以及阅读和理解代码示例的动机和能力是非常重要的。

即使是简单的机器学习的应用程序接口(Application Programming Interface,API),初次接触时也可能是一个挑战,因此请准备好多次阅读代码示例。

如何设置命令shell

如果你是Mac用户,则可以通过两种方法进行操作。第一种方法是使用Finder导航到Applications→Utilities,然后双击“Utilities”应用程序。接下来,如果你已经打开了命令shell,则可以通过键入以下命令来启动新的命令shell:

open/Applications/Utilities/Terminal.app

Mac用户的另一种方法是从已经可见的命令shell,在MacBook Pro上打开新的命令shell。在一个命令shell中按下command + n快捷键即可启动另一个命令shell。

如果你是PC用户,则可以安装模拟bash命令的Cygwin,或使用其他工具包,例如MKS(一款商用产品)。请自行阅读描述下载和安装过程的在线文档。注意,自定义别名如果是在主启动文件以外的其他文件(例如.bash_login)中定义的,则不会被自动设置。

读完本书,下一步是什么

这个问题的答案千差万别,主要是因为答案在很大程度上取决于你的目标。最好的答案是:尝试一种书中的新工具或技术来解决你关心的问题,无论是专业的还是个人的。问题具体是什么取决于你是谁,因为数据科学家、经理、学生、开发人员的需求各有不同。此外,在应对新挑战时,请牢记所学内容。

O. 坎佩萨托

美国旧金山

资源与支持

资源获取

本书提供如下资源:

配套数据库文件;

本书思维导图;

异步社区7天VIP会员。

要获得以上资源,您可以扫描下方二维码,根据指引领取。注意:部分资源可能需要验证您的身份才能提供。

提交勘误

作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发现的问题反馈给我们,帮助我们提升图书的质量。

当您发现错误时,请登录异步社区(www.epubit.com),按书名搜索,进入本书页面,点击“发表勘误”,输入勘误信息,点击“提交勘误”按钮即可(见下图)。本书的作者和编辑会对您提交的勘误进行审核,确认并接受后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。

与我们联系

我们的联系邮箱是contact@epubit.com.cn。

如果您对本书有任何疑问或建议,请您发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。

如果您有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们。

如果您所在的学校、培训机构或企业,想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。

如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接发邮件给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。

关于异步社区和异步图书

“异步社区”是由人民邮电出版社创办的IT专业图书社区,于2015年8月上线运营,致力于优质内容的出版和分享,为读者提供高品质的学习内容,为作译者提供专业的出版服务,实现作者与读者在线交流互动,以及传统出版与数字出版的融合发展。

“异步图书”是异步社区策划出版的精品IT图书的品牌,依托于人民邮电出版社在计算机图书领域30余年的发展与积淀。异步图书面向IT行业以及各行业使用IT技术的用户。

第1章 人工智能导论

本章对人工智能进行了简要介绍,主要是对这一多样化的主题进行概述。与本书的其他章节不同,这一介绍性章节在技术内容上比较“轻量”。它很容易阅读,也值得大致浏览一番。本章末尾简要介绍了机器学习和深度学习,后续章节将对它们进行更详细的讨论。

请记住,许多人工智能主题的图书都倾向于从计算机科学的角度来讨论人工智能,并讨论传统的算法和数据结构。相比之下,本书将人工智能视为机器学习和深度学习的“总称”,因此本章以简略的方式讨论它,作为其他各章的前导。

本章分为三部分。本章的第一部分(1.1节和1.2节)讨论了人工智能(Artificial Intelligence, AI)的定义、确定智能存在的各种可能方法,以及“强人工智能”和“弱人工智能”的区别。你还将了解图灵测试,这是一种著名的智能测试。

本章的第二部分(1.3节~1.10节)讨论了一些人工智能用例以及神经计算、演化计算、自然语言处理和生物信息学的早期方法。

本章的第三部分(1.11节)介绍了人工智能的主要子领域,如自然语言处理(包括自然语言理解和自然语言生成)、机器学习、深度学习、强化学习和深度强化学习。

虽然本章未讨论基于代码的示例,但本章的配套文件中包含了一个旨在解决Red Donkey问题的Java代码示例以及一个旨在复原魔方的Python代码示例(需要安装Python 2.x)。

1.1 什么是人工智能

“人工”这个词的字面意思是人造的、合成的,有时具有负面含义,即作为一个次等的替代品。然而,人造物(例如人造花)和它们的对应物非常相似,而且在某些时候可能是更有利的,比如它们没有任何维护需求(不需要阳光、水等)。

相比之下,智能的定义比人工的定义更难以捉摸。R. Sternberg在有关人类意识的文章中提供了以下有用的定义:“智能是个人从经验中学习、推理、记住重要信息,以及应付日常生活需求的认知能力。”

你可能还记得标准化测验中的如下问题:给定1,3,6,10,15,21这样的序列,下一个数字是什么?首先你要观察到,相邻数字的差每次递增1:从1到3,增加了2;从3到6,增加了3,以此类推。基于这种模式,可能的答案是28。这些问题旨在衡量我们识别模式中显著特征的熟练程度。

顺便说一下,“预测序列中的下一个值”这类数学问题可以有多个答案。例如,如果生成公式是,则序列2,4,8中可能的下一个数字是16。但是,如果生成公式为,那么序列中的下一个数字是22而不是16。有很多公式可以匹配2,4,8作为初始数字序列,但下一个数字可以与16或22不同。

让我们回到R. Sternberg对智能的定义,并考虑以下问题。

如何确定某人(某物)有智能?

动物有智能吗?

如果动物有智能,如何评估它们的智能?

我们倾向于通过与人们的互动来评估他们的智力:我们提出问题并观察对方的回答。虽然这种方法是间接的,但我们经常依靠这种方法来评估他人的智力。

对于动物的智力,我们还可以通过观察它们的行为来进行评估。聪明的Hans是一匹著名的马,它生活在大约1900年的德国柏林,据称它精通算术,例如计算加法和平方根。

实际上,Hans能够识别人类的情绪。结合敏锐的听觉,Hans可以在接近正确答案时,感觉到观众的反应。有趣的是,Hans在没有观众的情况下表现不佳。你可能不愿意将聪明的Hans的行为归因于智能,但是在得出结论之前,请仔细阅读R. Sternberg给出的定义。

再举一个例子,有些生物仅在群体中表现出智慧。蚂蚁是一种简单的昆虫,有关人工智能的文章很少关注它们个体的行为,但蚂蚁群体对复杂的问题表现出非凡的解决能力。实际上,蚂蚁可以找出从蚁穴到食物来源的最佳路线、搬运重物,以及搭起桥梁。因此,集体智慧来自个体昆虫之间的有效交流。

脑质量和脑-身体质量比是评估智力的两个指标,海豚在这两个指标上都优于人类。海豚的呼吸处于自主控制下,这可能是海豚的大脑质量过大,以及海豚左右半脑轮流睡眠的原因。海豚在诸如镜子测试的动物自我意识测试中得分很高,在这种测试中,海豚意识到镜子中的图像实际上是它们自己的样子。它们还可以表演复杂的把戏,海洋世界的游客可以证明这一点。这说明海豚有记忆和执行复杂的身体运动序列的能力。

工具的使用是检测智能的另一个试金石,经常被用来区分直立人和早期智人。海豚也与人类有同样的特点:海豚在觅食时使用深海海绵来保护它们的嘴。因此,智能不是人类独有的属性。许多生物都拥有某种程度的智能。

现在考虑以下问题:无生命的物体(例如计算机)可以拥有智能吗?人工智能的既定目标是创建表现出与人类相似思维的计算机软件或硬件系统,换句话说,让机器表现出通常被认为可以体现人类智能的特征。

机器可以思考吗?思维能力怎么样?请记住,思维与智能是有区别的。思维是推理、分析、评估和创造思想观念的工具。因此,并不是每个有思维能力的人都是聪明的。智能也许类似于高效和有效的思维。

许多人带着偏见对待这个问题,他们说计算机由硅制造、依赖电力供应,因此没有思维能力。而另一个观点则是,计算机的性能要比人类高得多,因此计算机必然比人类更智能。真相很可能介于这两个观点之间。正如我们已经讨论过的,不同的动物物种具有不同程度的智能。然而,相较于开发用于动物的标准化智商测试,我们更感兴趣的是确定机器智能存在的测试。也许Raphael说得好:人工智能是一门科学,它让机器完成了人类凭借智能才能完成的事情。

强人工智能与弱人工智能

目前关于人工智能有两大阵营:强人工智能阵营与弱人工智能阵营。弱人工智能与麻省理工学院有关,弱人工智能的支持者认为任何表现出智能行为的系统都是人工智能的例子。弱人工智能阵营关注的是程序是否正确执行,而不管人造物是否以人类的方式执行任务。电气工程、机器人和相关领域的人工智能项目主要关注结果是否令人满意。

另外一种达到人工智能的方法叫作生物可行性,它与卡内基·梅隆大学有关。根据这种方法,当一个人造物表现出智能行为时,它的执行应该基于人类使用的方法。例如,考虑一个具有听觉的系统:弱人工智能的支持者只关心系统的性能,而强人工智能的支持者可能希望通过模拟人类听觉系统来成功获得听觉。这种模拟将包括耳蜗、耳道、耳膜和耳朵其他部分的等效物,每个等效物在系统中执行各自的任务。

因此,弱人工智能的支持者仅根据系统表现来衡量他们构建的系统是否成功。他们认为,人工智能研究存在的理由是解决困难的问题,而不管它们实际上是如何解决的。

而强人工智能的支持者关心的是他们所构建系统的结构。他们认为,仅仅凭借拥有启发式方法、算法和知识的人工智能程序,计算机就可以具有意识和智能。众所周知,好莱坞制作了各种各样具有强人工智能阵营的电影,例如《我,机器人》(I, Robot)和《银翼杀手》(Blade Runner)。

1.2 图灵测试

1.1节提出了3个问题,而前两个问题已经解决:如何确定智能,以及动物是否有智能。第二个问题的答案不一定是“是”或“否”。有些人比其他人聪明,有些动物比其他动物聪明。机器智能也存在同样的问题。

艾伦·图灵(Alan Turing)试图从可操作层面来回答智能问题。他想将功能(能做什么)和实现(如何构建)分离开来,并为此设计了一种称为“图灵测试”的工具,1.2.1 节将对此进行讨论。

1.2.1 图灵测试的定义

图灵提出了两个模仿游戏,游戏中的一个人或实体要试图表现得像另一个人。在第一个游戏中,在一个中央装有帘子的房间中,帘子一边有一个人(称为询问者),另一边有另一个人。询问者(无关性别)必须询问一系列问题来确定帘子另一边是男人还是女人。

这个游戏假定男人可能会在他的回答中撒谎,但女人一直是诚实的。为了使询问者无法从声音中确定性别,交流是通过计算机进行而不是通过口头表达的。如果帘子另一边是男人,并且成功欺骗了询问者,那么他就赢得了模仿游戏。

在图灵最初提出的游戏形式中,询问者必须同时正确识别一男一女。图灵可能基于那一时期流行的游戏发明了这一测试,而这一测试甚至可能促使他发明了机器智能测试。

20世纪著名的社会学家和精神分析心理学家Erich Fromm认为:男女平等,但不一定相同。例如,不同性别的人对颜色、花朵的了解可能不同,花在购物上的时间也不同。区分男女与区分智能有什么关系?图灵认为可能存在不同类型的思维,理解并容忍这些差异是很重要的。

1.2.2 询问者测试

图灵提出的两个模仿游戏中的第二个游戏更适合人工智能研究。与之前一样,询问者在一个中央装有帘子的房间里。这一次,帘子后面躲着一台计算机或一个人,机器扮演着前一测试中男人的角色,并且也能在合适的时候撒谎。而人一直是诚实的。询问者提出问题,然后评估对方的回答以确定他是在与人交流还是在与机器交流。如果计算机成功地欺骗了询问者,那么它就通过了图灵测试,也因此可以被认为是智能的。

1.3 启发式方法

启发式方法有时候非常有用,而且人工智能应用经常依赖于启发式方法的应用。启发式方法在本质上是解决问题的“经验法则”。换句话说,启发式方法是一组策略,这组策略通常可以解决问题。对比启发式方法与算法,算法是解决问题的一组预定规则,其输出是完全可预测的。

启发式方法是一种寻找近似解的技术,可以在其他方法太耗时或太复杂(或两者兼有)时使用。使用启发式方法可能会得到理想的结果(但无法保证一定能得到),启发式方法在人工智能的早期研究中特别流行。

我们在日常生活中可以发现各种启发式方法。例如,许多人更喜欢使用启发式方法而不是通过问路来到达目的地。比如,当晚上驶离高速公路时,有时很难找到返回主干道的路线。可能会有用的一种启发式方法是,每当驶入一个岔路口,就选择有着更多路灯的方向前进。你可能有一种最喜欢的方法来找回掉落的隐形眼镜,或在拥挤的购物中心找到停车位。两者都是启发式方法的例子。

人工智能问题往往是大型问题,带有计算复杂性,而且通常不能通过简单算法来解决。人工智能问题及其领域往往体现了大量的人类专业知识,尤其在需要使用强人工智能方法来解决的情况下。有些类型的问题使用人工智能方法可以更好地解决,而包括简单的决策或精确计算的其他类型的问题更适合使用传统的计算机科学方法来解决。让我们思考以下几个生活中的例子:

医疗诊断;

使用可以扫描条形码的收银机购物;

使用自动取款机;

双人博弈,如国际象棋和跳棋。

在上述例子中,医疗诊断这个科学领域多年来一直受益于人工智能,特别是专家系统的发展。专家系统通常建立在有大量人类专业知识且存在大量规则的领域中,这些规则通常是这样的:如果(条件)—那么(行动)。举个简单的例子:如果你头疼,那么就吃两片药并在早上给我打电话。

特别地,专家系统变得非常流行(也非常有用),因为它们可以存储比人类大脑所能容纳的多得多的规则。专家系统是能产生全面有效结果的人工智能技术之一。事实上,专家系统可以帮助人类做出更准确的决策(甚至“挑战”不正确的选择)。

遗传算法

达尔文的生物演化论是一个前途无量的范式,其中包括了自然界中以数千年或数百万年的速度发生的自然选择。相比之下,计算机内部的演化比自然选择快得多。

遗传算法是一种启发式算法,可“模仿”自然选择的过程,其中包括选择最适合的个体进行繁殖,以产生下一代。

让我们对人工智能使用的演化过程与动植物界的演化过程进行比较。在演化过程中,物种通过自然选择、繁殖、突变和重组的遗传算子来适应环境。

遗传算法是演化计算领域的一种特殊方法。演化计算是人工智能的一个分支,在演化计算中,问题的解决方案就像动物适应现实世界中的环境一样适应问题环境。

如果你感兴趣,可以参考维基百科的genetic algorithm词条页面来了解更多关于遗传算法的有趣细节。

1.4 知识表示

当我们考虑人工智能相关的问题时,恰当地表示问题很重要。为了处理知识并产生智能结果,人工智能系统需要获取和存储知识,也需要识别和表示知识的能力。选择何种表示形式是理解和解决问题的本质。

正如数学家George Pólya所言,选择一个好的表示几乎和为特定问题设计算法或解决方案一样重要。使用良好和自然的表示形式有助于快速得到可理解的解决方案。

作为体现表示选择重要性的一个例子,让我们考虑著名的“传教士和野人过河”问题。假设我们的目标是用一艘船将3名传教士和3个野人从一条河的西岸转移到东岸。在从西向东渡河过程中的任何时刻,通过选择适当的表示,你都可以找到解决问题的路径。这个问题有两个限制:船在任何时候最多只能容纳两个人,而且河的任何一边岸上的野人人数永远不能超过传教士人数,否则传教士会被野人吃掉。

你可以在维基百科的missionaries and cannibals problem词条页面找到这个问题[以及相关的“嫉妒的丈夫”(jealous husbands)问题]的解决方案。

1.4.1 基于逻辑的解决方案

人工智能研究人员将基于逻辑的方法用于知识表示和问题求解。Terry Winograd的积木世界(1972年)是一个将逻辑用于此用途的开创性例子,在这个例子中,一个机器人手臂与桌面上的积木进行交互。这个项目涵盖了语言理解、场景分析,以及人工智能领域的其他问题。

此外,许多成功的专家系统是用产生式规则和产生式系统构建的。产生式规则和专家系统的吸引力在于能够清晰、简洁地表示启发式方法的可行性。数以千计的专家系统已经采用这种方法完成了构建。

1.4.2 语义网络

语义网络是知识的另一种图形表示(尽管很复杂)。语义网络先于使用继承的面向对象语言(其中来自特定类的对象继承了超类的许多属性)。

使用语义网络的大部分工作集中在知识表示和语言结构上,如Stuart Shapiro 的语义网络处理系统和Roger Schank在自然语言处理方面的工作。

对于知识表示,还存在其他替代方法。图形化方法对视觉、空间、运动等感官具有更大的吸引力。最早的图形化方法可能是状态空间表示法,它显示了系统所有可能的状态。

1.5 人工智能和博弈

自20世纪中叶计算机问世以来,通过训练计算机进行复杂的棋类博弈,计算机科学和编程技术取得了重大进展。一些有计算机参与的博弈(例如国际象棋、跳棋、围棋和黑白棋)已经使人们受益于人工智能给出的独特方案。

博弈刺激了人们对人工智能的兴趣和人工智能的发展。Arthur Samuel在1959年对跳棋的研究是早期努力的一个亮点。他的程序基于一个含有50个启发式方法的表格,可以在自身的不同版本间博弈。在一系列比赛中,失败的程序将采用获胜程序的启发式方法。这个程序很擅长下跳棋,但从未达到大师级水平。

几个世纪以来,人们一直试图训练机器下国际象棋。对国际象棋机器的迷恋可能源于一种普遍接受的观点,即只有拥有智能才能下好棋。

1959年,Newell、Simon和Shaw开发了第一个真正的计算机国际象棋程序,该程序遵循香农-图灵(Shannon-Turing)范式。Richard Greenblatt编写了第一个俱乐部级别的计算机国际象棋程序。计算机国际象棋程序在20世纪70年代稳步发展,直到70年代末,程序达到了专家水平(相当于国际象棋锦标赛排名前1%的选手)。

1983年,Ken Thompson的Belle是第一个正式达到大师级水平的程序。随后,来自卡内基·梅隆大学的Hitech取得了成功,作为第一个特级大师级(等级分超过2400分)程序,它成为一个重要的里程碑。此后不久,同样来自卡内基·梅隆大学的“深思”(Deep Thought)被开发出来,并成为第一个能够稳定击败国际象棋特级大师的程序。

当IBM在20世纪90年代接管该程序时,“深思”演化成了“深蓝”(Deep Blue)。在1996年的费城,深蓝与世界冠军Garry Kasparov进行了6场比赛,最终Kasparov获胜,从而“拯救了人类”。然而1997年,在对阵深蓝的继承者——“更深的蓝”(Deeper Blue)时,Kasparov输了,震动了整个棋坛。

在随后与Kasparov、Kramnik和其他世界冠军级别选手的6场比赛中,程序表现出色,但这些比赛不是世界锦标赛。尽管人们普遍认为这些程序可能仍然比不上最优秀的人类棋手,但大多数人还是愿意承认顶级程序和最有成就的人类棋手难分伯仲(这让人想到了图灵测试)。

1989年,位于埃德蒙顿的阿尔伯塔大学的Jonathan Schaeffer开始了他的长期目标——用他的程序Chinook征服跳棋游戏。在1992年的一场40回合比赛中,在对战跳棋世界冠军Marion Tinsley时,Chinook以2胜33平4负的成绩输了。1994年,他们再次比赛,6场打平,之后Tinsley因健康原因不得不退出比赛。从那以后,Schaeffer和他的团队一方面努力求解残局(只有8枚或更少棋子的残局),另一方面试图解决从开局开始的跳棋问题。

其他使用人工智能技术的博弈包括西洋双陆棋、扑克、桥牌、黑白棋和围棋(通常被称为“人工智能的新果蝇”)。

AlphaZero的成功

谷歌开发了AlphaZero,这是一个基于人工智能的软件程序,它使用自我对局的方式学习如何玩游戏。AlphaZero是AlphaGo的后继产品,后者在2016年击败了人类顶尖棋手。AlphaZero在围棋比赛中轻松击败了AlphaGo。

而且,在学习了国际象棋的规则之后,AlphaZero进行了自训练(再次使用自我对局),并在一天之内成为世界上的顶尖棋手。AlphaZero可以打败任何人类棋手及任何下国际象棋的计算机程序。

真正有趣的一点是,AlphaZero发明了自己的下棋策略,这种策略不仅不同于人类,还涉及一些被认为违反直觉的棋步。

遗憾的是,AlphaZero无法告诉我们它是如何发明出一种优于任何以前发明的下棋方法的策略的。既然AlphaZero完全依靠自学成为世界排名第一的棋手,那么AlphaZero算不算有智能?

1.6 专家系统

专家系统是人工智能自存在以来就一直被研究的领域,也是人工智能领域可以宣称获得巨大成功的一门学科。专家系统有许多特点,这使其成为人工智能研究和开发的理想选择。这些特点包括:知识库与推理机的分离、系统知识超过所有专家知识的总和、知识与搜索技术的特殊关系、推理能力和不确定性。

最早诞生且常被提及的专家系统是使用启发式方法的DENDRAL。该专家系统的目的是根据质谱图鉴定未知化合物。DENDRAL由斯坦福大学开发,旨在对火星土壤进行化学分析。它是第一个证明了在特定学科中编码领域专家知识具有可行性的专家系统。

另一个著名的专家系统是同样来自斯坦福大学的MYCIN(1984年)。开发MYCIN是为了方便对传染性血液疾病进行研究。然而更重要的是,MYCIN为之后所有基于知识的系统设计建立了范例。它有400多条规则,最终被用来为斯坦福医院的住院医生提供培训。

20世纪70年代,PROSPECTOR在斯坦福大学被开发用于矿物勘探。PROSPECTOR也是早期使用推理网络的有价值的范例。

随后在20世纪70年代出现的其他著名和成功的专家系统有:XCON(大约有10 000条规则),它是为了帮助在VAX计算机上配置电路板而开发的;GUIDON,一个辅导系统,它是MYCIN的一个分支;TEIRESIAS,一个MYCIN的知识获取工具;HEARSAY Ⅰ和HEARSAY Ⅱ,它们是使用Blackboard架构进行语音理解的最早的例子。

Doug Lenat的人工数学家(Artificial Mathematics,AM)系统是20世纪70年代研究和开发工作的另一个重要成果。除此之外,还有用于不确定性推理的Dempster-Schafer理论,以及Zadeh在模糊逻辑方面的工作。

20世纪80年代以来,人类在配置、诊断、指导、监控、计划、预测、补救和控制等领域已经开发了数千个专家系统。今天,除了独立的专家系统之外,还有许多专家系统已经被嵌入其他用于控制的软件系统中,包括医疗设备和汽车中的专家系统。例如,汽车的牵引控制应该何时激活?

此外,许多专家系统的框架,如Emycin、OPS、EXSYS和CLIPS,已经成为行业标准。人们也开发了许多知识表示语言。如今,许多专家系统在幕后工作,以增强日常体验,如优化在线购物的体验。

1.7 神经计算

McCulloch和Pitts在神经计算方面进行了早期研究,试图理解动物神经系统的行为。他们的人工神经网络(Artificial Neural Network,ANN)模型有一个严重的缺点:不包括学习机制。

Frank Rosenblatt开发了一种称为感知器学习规则的迭代算法,用于在单层网络(所有神经元都直接连接到输入端的网络)中找到合适的权重。这一新兴学科的研究可能受到了严重阻碍,因为Minsky和Papert声明某些问题不能通过单层感知器来解决,如异或(XOR)函数。这项声明发布后,用于资助神经网络研究的资金立即被大幅削减。

20 世纪 80 年代初期,Hopfield 的工作使该领域再次活跃起来。他的异步网络模型(Hopfield网络)使用能量函数找到了NP完全问题的近似解。

20世纪80年代中期,反向传播被提出,这是一种适用于多层网络的学习算法。人们通常使用基于反向传播的网络来预测道琼斯平均指数,或将反向传播网络用于光学字符识别系统,以识别和阅读印刷材料。

神经网络也用于控制系统。ALVINN是卡内基·梅隆大学的一个项目,它使用一个反向传播网络来感知高速公路,并协助导航Navlab车辆转向。这项工作的一个直接应用是,每当车辆偏离高速公路车道时,就警告因睡眠不足或其他情况而判断力受损的驾驶员。展望未来,希望有一天类似的系统会驾驶车辆,这样我们就可以自由地在车上阅读报纸、打电话,以利用额外的空闲时间。

1.8 演化计算

遗传算法通常被归类为演化计算。遗传算法使用概率和并行性来解决组合问题(也称为优化问题),这是John Holland开发的一种算法。

然而,演化计算并不仅仅关注优化问题。Rodney Brooks曾是麻省理工学院计算机科学和人工智能实验室的主任。他成功创造了接近人类水平的人工智能,并巧妙地称其为“人工智能研究的圣杯”,这一成功源自放弃了对基于启发式方法和表示范例的符号方法的依赖。

在他看来,智能系统可以设计成多层,高层依赖低层。例如,如果你想建造一个能够避开障碍物的机器人,避障程序将建立在一个只负责机器人如何运动的低层之上。

Brooks认为,智能是通过智能体与其环境交互而产生的。他著名的成就是在实验室里制造的昆虫状机器人,这些机器人体现了这种智能哲学,其中一群自主机器人既可以与环境互动,也可以彼此互动。

1.9 自然语言处理

如果想要建立智能系统,那么希望系统拥有语言理解能力似乎是很自然的。对于许多早期实践者而言,这是不言自明的。Eliza 是一个著名的早期应用程序,由麻省理工学院的计算机科学家Joseph Weizenbaum与斯坦福大学的精神病学家Kenneth Colby合作开发。

Eliza打算模仿Carl Rogers学派的精神病学家扮演的角色。例如,如果用户输入“我觉得累了”,Eliza可能会回应:“你说你感觉累了。多跟我说点吧。”“对话”将以这种方式继续,机器在对话的原创性方面贡献很小或没有贡献。精神病学家可能会以这种方式行事,希望病人能发现他们真实的(也许是隐藏的)感受。与此同时,Eliza只是用模式匹配来假装像人一样互动。

让人好奇的是,Weizenbaum的学生和公众对与Eliza互动有着浓厚兴趣,尽管他们完全知道Eliza只是一个程序。这令Weizenbaum备感困扰。同时,Colby仍然致力于这个项目,并成功编写了一个名为DOCTOR的程序。

尽管Eliza对自然语言处理贡献甚微,但这种软件假装拥有了或许是最后一项能体现人类“特殊性”的能力——感受情绪。当人和机器之间的界限变得不那么清晰(这可能在大约50年之内实现)并且这些机器人变得不那么像凡人而更像永生者时,会发生什么?

最近,几个麻省理工学院的机器人,包括Cog、Kismet和Paro,已经具有伪装人类情感并引起与之互动的人的情感反应的超强能力。Turkle研究了养老院的儿童和老人与这些机器人形成的关系,这些关系涉及真挚的情感与关怀。Turkle说,也许有必要重新定义“关系”一词,纳入人们与这些所谓的人工产物的接触。然而,她仍然相信,这种关系永远不会取代只有在必须每天面对死亡的人与人之间才会出现的关系。

Winograd的积木世界包括一个能够实现各种目标的机器人手臂。例如,如果SHRDLU被要求举起一个上面有一个小绿色块的红色块,它知道必须在举起红色块之前移除绿色块。与Eliza不同,SHRDLU能够理解英语命令,并做出适当的反应。

HEARSAY是语音识别领域一个雄心勃勃的项目。它采用了Blackboard架构,在这种架构中,各种语言成分(如语音和短语)的独立知识源(智能体)可以自由交流。语法和语义都用以修剪不可能的单词组合。

HWIM(Hear What I Mean的英文简称,发音为“whim”)项目使用增强的转移网络来理解口语。它有一张包含1000个单词的词汇表来管理旅行预算。也许这个项目的目标范围过大,以致它的表现不如HEARSAY Ⅱ。

在这些自然语言程序的成功中,解析扮演了不可或缺的角色。SHRDLU使用上下文无关语法来帮助解析英语命令。上下文无关语法为处理符号串提供了一种句法结构。然而,为了有效地处理自然语言,还必须考虑语义。

解析树提供了组成句子的单词之间的关系。例如,许多英文句子可以分为主语和谓语。主语可以分为名词短语和介词短语等。本质上,解析树给出了句子的解析,即句子的含义。

这些早期的语言处理系统都在一定程度上运用了世界知识。然而,到了20世纪80年代后期,自然语言处理进步的最大绊脚石是常识的问题。例如,虽然我们在自然语言处理和人工智能的特定领域构建了许多成功的程序,但这些程序经常被批评为只适用于微观世界,意思是这些程序没有现实世界的常识。例如,一个程序可能非常了解某个特定的场景,比如在餐馆点餐,但是它不知道服务员是否还在工作,也不知道他们是否穿着通常的衣服。在过去的25年里,得克萨斯州奥斯汀市的Douglas Lenat一直在建立最大的常识知识库来解决这个问题。

自然语言处理(Natural Language Processing,NLP)经历了一些有趣的发展。在经历了初始阶段(如本节前面所述)之后,自然语言处理依赖统计数据来管理句子的解析树。Charniak描述了如何扩充上下文无关语法,使每条规则都有一个相关概率。这些相关概率可以从宾州树库(Penn Treebank)中获得,该库包含体量超过100万个单词的人工解析的英文文本,大部分来自《华尔街日报》。Charniak展示了这种统计方法如何成功地从《纽约时报》的头版获得一个句子的解析(即使对大多数人来说,这也不是一件小事)。

自然语言处理发展的下一步涉及被称为RNN(Recurrent Neural Network,循环神经网络)、LSTM(Long-Short Term Memory,长短期记忆)和双向LSTM的深度学习体系架构,这将在第 5 章中讨论。更新的深度学习体系架构是谷歌在 2017 年开发的Transformer。BERT基于Transformer(以及注意力机制),是目前可用于解决NLP任务的强大开源系统之一。自然语言处理的另一种方法涉及深度强化学习(详见第6章)。

1.10 生物信息学

生物信息学是一门将计算机科学的算法和技术应用在分子生物学中的新兴学科。它主要关注生物数据的管理和分析。在结构基因组学中,人们试图为每种观察到的蛋白质指定一个结构。自动发现和数据挖掘可以帮助人们实现这一目标。

Juristica和Glasgow展示了基于案例的推理如何帮助发现每个蛋白质的代表性结构。在国际先进人工智能协会特刊《人工智能与生物信息学》2004年的一篇调查文章中,Glasgow、Juristica和Rost指出:“在生物信息学的近期活动中,增长最快的领域可能是微阵列数据分析。”

对微生物学家来说,他们可获得的数据的种类过多,数量过大,这让他们不堪重负——需要基于巨大的数据库来理解分子序列、结构和数据。许多研究人员认为,来自知识表示和机器学习的人工智能技术将被证明是有所帮助的。

1.11节将快速地简要介绍人工智能的主要部分,包括机器学习和深度学习。

1.11 人工智能的主要部分

本书的后续章节深入探讨了人工智能的各个重要部分,包括:

机器学习;

深度学习;

NLP;

强化学习;

深度强化学习。

传统的人工智能基于规则集合,这产生了20世纪80年代的专家系统。传统的人工智能还包括由John McCarthy(1956年第一次正式人工智能会议的成员之一)创造的LISP。

传统的人工智能主要是与条件逻辑相结合的一组规则,20世纪80年代开发的功能强大的专家系统也是如此。然而,基于规则的决策系统可能涉及数千条规则。即使是简单的物体,也需要许多规则——请试着想出一套规则来定义一把椅子、一张桌子,甚至一个苹果。传统的人工智能存在一些显著的局限性,这主要缘于需要的规则数量。

1.11.1 机器学习

大约20世纪中叶,机器学习(AI的一个子集)主要依靠数据来优化和“学习”如何执行任务,通常伴随着新的或改进的算法,如线性回归、kNN(k-Nearest Neighbor)、决策树、随机森林和支持向量机(Support Vector Machine,SVM),这里面除了线性回归,其他所有算法都是分类器。

如你所见,机器学习是一个多样化且充满活力的领域,它包含着很多子领域。

数据(而非规则)在机器学习中非常重要,因此不同数据通常对应不同类型的机器学习。

监督学习:大量标记数据。

半监督学习:大量部分标记数据。

无监督学习:大量未标记数据,聚类。

强化学习:数据用以实验、反馈和改进。

吴恩达(Andrew Ng,Coursera的联合创始人)认为,“99%的机器学习都是有监督学习。”

除了根据数据进行分类之外,机器学习算法还可以分为以下主要类型:

分类(针对图像、垃圾邮件、欺诈等数据);

回归(预测股价、房价等);

聚类(无监督分类)。

1.11.2 深度学习

机器学习的一个重要子领域是深度学习,它起源于20世纪中叶。深度学习体系架构依赖感知器作为神经网络的基础,通常涉及大型数据集。这样的深度学习体系架构还涉及启发式方法和经验结果。现在,深度学习在一些图像分类任务上甚至可以超越人类水平。

虽然机器学习也有多层感知器(又称多层感知机),但深度学习引入了使用新算法和新架构(如卷积神经网络、RNN和LSTM)的深度神经网络。

1.11.3 强化学习

强化学习(也是机器学习的一个子集)涉及试错以使对所谓智能体的回报最大化。深度强化学习结合了深度学习和强化学习的优点。特别是,强化学习中的智能体被神经网络代替了。

深度强化学习在许多不同领域都有应用,其中3个广受欢迎的领域如下:

博弈(围棋、象棋等);

机器人学;

自然语言处理。

使用强化学习的一些著名例子包括:

AlphaGo(混合强化学习);

AlphaZero(完全强化学习);

贪心算法;

深度强化学习——结合了深度学习和强化学习。

1.11.4 机器人学

机器人正以多种方式进入我们的个人和职业生活,包括:

手术(辅助外科医生);

放射学(检测癌症);

药品管理;

宗教理论;

法律/房地产/军事/科学;

喜剧(包括脱口秀);

音乐(指挥乐队);

餐饮(美食);

舞蹈队伍搭配;

以及许多其他领域。

机器人卡车司机正在取代人类司机的工作,它们唯一的成本是机器的维护。此外,机器人不会像人类那样分心,从而导致事故,也不需要工资或任何形式的休假。然而,尽管机器人取得了令人惊讶的成就,但像《星际迷航》中的角色Data那样的机器人仍然只是一个梦。

1.11.5 自然语言处理

自然语言处理是计算机科学和人工智能的一个领域,包括计算机和人类语言之间的交互。在早期,自然语言处理涉及基于规则的技术或统计技术。自然语言处理和机器学习使计算机程序可以处理和分析大量的自然语言数据。

机器学习技术可以解决许多自然语言处理任务。自然语言处理涉及的一些领域包括:

在不同语言间进行翻译;

从文本中寻找有意义的信息;

生成文档摘要;

检测仇恨言论。

尽管机器学习有许多优点,但还有些问题需要解决。其中一个问题是职业偏见。例如,人工智能系统推断男性是医生,女性是家庭主妇。另一个问题涉及性别偏见。例如,在维基百科(约2018年)中,传记的主人公中只有18%是女性,而维基百科的编辑者中有84%~90%是男性。

机器学习的第三个问题涉及数据偏差和算法偏差。最后,机器学习还有一些关于人工智能与伦理互动的问题,其中包含一些发人深省的问题(比如人工智能导致人类失业、机器人拥有何种权利等)。

1.12 代码示例

本书的配套资源包含以下文件:

RubiksCube.py

Board.java

Search.java

其中的Python文件是复原魔方问题的解决方案,剩下的两个Java文件是Red Donkey问题的解决方案。

为了运行Java程序,请下载Java运行环境;为了编译和运行Java程序,请下载Java SDK;如果还没有安装Python,请安装Python。上述内容,包括编译和启动Java代码的说明,都可以在网上找到。

1.13 总结

在这一章中,你了解了人工智能、强人工智能、弱人工智能,以及图灵测试。你明白了启发式方法及其在算法中的实用性,接触了遗传算法和知识表示。你看到了人工智能最初如何应用于不同的领域,如博弈和专家系统。

你还了解了神经计算、演化计算、自然语言处理、生物信息学的早期方法和人工智能的主要子领域(包括自然语言处理、机器学习、深度学习、强化学习和深度强化学习等)。

相关图书

大模型应用开发 动手做AI Agent
大模型应用开发 动手做AI Agent
GPT图解 大模型是怎样构建的
GPT图解 大模型是怎样构建的
大语言模型:基础与前沿
大语言模型:基础与前沿
生成式AI入门与AWS实战
生成式AI入门与AWS实战
ChatGPT原理与应用开发
ChatGPT原理与应用开发
深度对话GPT-4提示工程实战
深度对话GPT-4提示工程实战

相关文章

相关课程