前言
从发明计算机的第一天起,人们就试图用计算机模拟自身智能。如今,计算机已经从只能完成四则运算的计算器,发展成为能胜任很多复杂任务的智能机器。在各种应用领域中,计算机已经成为人类大脑的延伸。人工智能的研究使计算机能够模拟人类思维的感知、学习、解决问题和推理决策的能力,与此同时,也帮助我们对自身智能有了更加深入的理解。
人工智能的研究者把人工智能分为强人工智能和弱人工智能两类。这种划分既是技术层面的,也是哲学层面的。如果机器表现出像人一样智能的行为,那么是否可以认为机器真的在像人一样思考呢?计算机科学和神经生物科学尚不能回答这个问题,哲学家也没有找到满意的答案。强人工智能的观点认为,人工智能应该像人一样具有自主的意识、情感和心智,能够理解和学习任何智能问题。弱人工智能的观点则仅关注机器在特定任务上所表现出的智能性,并不关心机器是否能真正像人一样自主思考。只要在特定领域能够帮助我们解决一些实际的智能问题,这样的机器都可以视作拥有弱人工智能。
强人工智能现在还是一种理论设想,它如同人一样具有高度的自主性,不仅可以解决不同类型的问题,甚至具有自主选择解决什么问题的能力。它有自己的意识和感情,但是它只存在于电影、小说等科学幻想作品中。
哲学家和科学家通过思想实验,对强人工智能的观点提出了各种怀疑,比如,中文屋子实验和换脑实验。
中文屋子实验设想有一个英语母语者,对中文一窍不通。他被关在一间屋子里,屋子里有一本英文写成的手册来说明中文的语法规则,另外还有一大堆中文符号。屋子外面的人从窗口传进用中文写成的问题,屋子里的人按照手册上的规则将中文符号组成答案传递出去。这个过程足以以假乱真,让屋子外面的人误以为屋子里的人懂得中文,然而事实上他压根不懂中文。强人工智能就如同屋子里的人,如果我们只能看到他表现出智能,如何知道他是否真的在思考呢?
换脑实验则更加科幻。假设我们的神经生理学和计算机硬件已经高度发达,完全了解大脑所有神经元的连接机制,并且能够用微电路模拟大脑神经网络的所有活动。设想我们把生物的大脑替换为电子的大脑,让电子的大脑接管一切输入的感官信号,并做出反应,输出对身体肌肉的控制信号。从外界看来,所有智能行为和活动跟换脑之前并无差异,那么现在电子大脑具有自我意识吗?或者意识还存在于那个生物大脑之中吗?生物大脑中的意识会不会试图呐喊“我什么也看不到”,却无法控制发声的肌肉呢?这个假想的实验有些骇人听闻,但是同样让我们怀疑外在表现出的智能是否等同于自主意识。
弱人工智能不再纠结于机器是否“真的”具有了自主意识,只关注表现出的智能。计算机科学家图灵提出了图灵测试,用来判断机器是否具有智能。测试者通过屏幕和键盘分别与一个真实的人和一台智能机器聊天,如果无法区分屏幕后面是人还是机器,那么就可以认为机器具有如同人一样的智能。相比图灵测试,弱人工智能的定义更加宽泛,它只要求机器能够处理具体领域的特定任务。
在现实生活中,弱人工智能的应用比比皆是。手机可以听懂我们的语音指令;摄像头可以辨别电脑的主人、进出停车场的车辆号牌;电子监控代替了交通警察,辅助查处违章的车辆;翻译软件帮助外国游客把路牌、标识、菜单等翻译成他们熟悉的语言;自动驾驶系统甚至在受限的环境中也可以自主控制车辆,从而解放驾驶员的双手。这些都是弱人工智能的应用。
弱人工智能关注于处理特定的任务,“弱”字用在这里并不完全合适,在限定领域或者特定任务中,“弱”人工智能其实并不“弱”,称作“窄”人工智能更为恰当。相比存在于科学幻想中的强人工智能,人们对应用于各种受限场景的弱人工智能有更加成熟的研究。虽然它不像人的智能一样具有理解、学习任何问题的能力,但是它通常可以在某个领域做得很好,甚至比人做得更好,毕竟机器更准确,更稳定,更迅速,而且不知疲倦。因此,弱人工智能得到了广泛的应用,成为人们生活和工作的得力助手。弱人工智能是我们向强人工智能发起探索的阶段性成果,人们不会放弃对更加通用智能的探索,会持续追寻理解和复现自身智能的梦想。只有逐步扩展弱人工智能的边界,连接和打通各种不同的任务和信息通道,才能帮助我们实现更加复杂和通用的智能。
在人工智能研究并不很长的历史上,研究者探索了很多种不同的方法和路径。比如,符号主义的研究者认为,智能可以通过如同数学推导一样的逻辑推演系统实现,各种知识可以用符号表示出来,组织成计算机能够处理的语言进行演算、分析和推理。再如,联结主义的研究者认为,智能存在于神经元的连接中,采用电子装置模拟生物大脑的神经元连接就可以实现智能。这些不同的学派在早期的人工智能研究中,在相当长的一段时间内占据了主导地位。而机器学习则是在这些研究的基础上,利用统计学的原理取得成功的一类算法和模型。机器学习侧重于从样本或者经验组成的数据中学习统计规律,通过自我修正的方式达到完成特定任务的目标。机器学习与一般计算机算法最显著的区别在于,完成任务的步骤中有一些不确定的参数,人们不需要告诉计算机这些参数的确切取值,机器学习方法会通过数据自己去寻找最为合适的取值。
在这本书中,我们会看到机器学习家族中最为重要和经典的方法。全书内容可以分为两部分:第一部分包含前5章,是比较基本的内容;第二部分包含后5章,是稍微深入一些的内容。
在第一部分,我们首先回顾人工智能最早的实现方法之一——专家系统,从中理解人们为什么走向了机器学习之路。然后,介绍决策树和人工神经元这两种基本的模型。决策树作为一类简明有效的方法,至今仍活跃在各种应用之中,或者成为其他方法的组成元素。人工神经元则是更为复杂的人工神经网络以及深度学习的组成单元。最后,我们会介绍线性回归和逻辑斯蒂回归,了解机器学习中回归和分类这两个核心问题。
在第二部分,我们首先介绍人工神经网络,了解深度学习的基本原理。然后,我们会介绍集成学习如何将若干较为简单的模型结合为更强的模型。到此为止,我们还停留在机器学习中的监督学习这一分支上。在随后两章中,我们会看到机器学习的另外两个分支——无监督学习和强化学习。我们通过聚类算法了解无监督学习,然后介绍强化学习如何解决智能体在环境中进行决策的问题。最后,我们对人工智能中较为复杂和综合的自然语言处理问题进行介绍。
机器学习是包含了很多模型、算法和理论的大家族,本书不求覆盖机器学习的所有内容,但是希望能够使读者对这一家族的主要分支都有所了解。作为入门级的知识介绍,我们试图避免引入过于艰深的统计学习理论,但是对于涉及的方法,也应该做到“知其然,知其所以然”。我们尽可能用较为易懂的数学语言将原理解释清楚,并且用一些实例为读者提供直观和感性的认识,使抽象的算法更加容易理解。
在每章中,我们都编写了动手实践的内容,提供了采用Python语言编写的小实验[1]。通过实验,读者可以对相关的算法和模型有更加直观的了解。根据算法和模型的复杂程度不同,有的实验从零开始实现了算法模型,有的实验则采用了现有的软件库,将算法模型加以应用。正所谓“实践出真知”,我们相信,读者完成这些实验后,会对本书理论部分的内容有更加深入的了解。实验采用Python语言,其编程门槛不高,不像C语言或者Java语言这些工程类计算机语言那样需要计算机和软件工程原理作为预备知识。然而,Python语言也并非完全不需要学习,不熟悉Python的读者可以本着“边用边学”的原则,同步进行学习和实践。本书不会介绍Python语言的知识,这些知识很容易从其他书籍或者互联网的在线文档中获取。“世上无难事,只怕有心人”,相信对于有兴趣进行实践的读者,编程工具和程序语言不会成为学习的障碍,反而是学习的得力助手。
我们希望将读者顺利地带入机器学习和人工智能的领域,帮助读者成为机器学习和人工智能领域的学习者、研究者和实践者。我们也希望与读者一起研究和探索,大家共同揭开智能系统研究和应用的神秘面纱,了解其中的奥秘。