1.3 人工智能
人工智能是计算机科学的一个分支,它的主要研究目标是用计算机程序来表示人类智能。这个词最早是在1956年的达特茅斯会议上正式提出的。在达特茅斯会议正式提出“人工智能”这个概念之前,图灵和早期的计算机科学家一般用“机器智能”这个词。需要强调的是,人工智能是建立在计算机之上。不管人工智能应用多么美妙和复杂,在图灵眼里都是图灵机上的一个程序(或者叫作可计算数,具体参考1.5节)。人工智能课程的主要目的是学习建立在模型之上的算法。这些算法和其他计算机领域的算法并无太大区别,只是这类算法专注在如图1-3所示的智能主体(Intelligent Agent)里面的模型。在人工智能领域,计算机科学家们试图建立模型使得智能主体能够观察周围环境并做出行动,就像人类的行为那样。
图1-3 智能主体作为AI的主要研究对象
最近5年,由于智能主体模型在无人驾驶、聊天机器人和计算机视觉识别等应用的准确率的提升,人工智能的应用热度也随之提升。AlphaGo等棋类对弈让人工智能被公众津津乐道,因为计算资源和计算能力的提升,在限定时间内,对弈模型比人类棋手更具优势,这也引发了很多关于人工智能的讨论。
1.3.1 模型化方法
要理解AI和智能主体,我们要先理解模型化的研究方式。模型之所以让人觉得神奇,是因为很多模型本身是基于经验的,很多时候我们并没有深究物理和计算机等领域的很多模型背后的逻辑。以我们熟知的自由落体运动为例,我们可以为球体在斜塔自由下落建立一个数学模型。在亚里士多德的年代,这个模型被认为是和物体的质量有关系的,所以构建的模型可能如下:
h=c+ α×m+ β×t+γ×t2
其中,h是下落高度,m是物体质量,c, α, β, γ是未定参数,t是时间。
其实,模型的构造是门艺术,依赖于构造者。但是,亚里士多德并没有验证他的模型。按照现在的科学方法,我们至少需要四组以上(h, t)的测验数据来校准四个未定参数。如果数据足够准确,我们会发现c=0, α=0, β=0, γ≈5。读者可能会问,为何不构造一个和t3相关的系数?答案还是因为模型是门艺术,跟构造者的直觉有关。例如,伽利略认为自由落体的下降时间和质量无关,所以他会直接从模型里去除α×m这一项。读到这里,读者可能已经感觉到,如果我们测试得到的(h, t)的数据足够多,不管哪个模型的参数调校出来的公式都接近h=5t2。假设读者没有安全感,在模型里面加入了其他变量,只要测试足够多的数据,仍将发现这些变量的系数都接近于0。通过这个例子,读者也可以直观感受到“大”数据量有助于提高模型的准确度。
到此为止,可能很多人满足了h=5t2的经验公式。但是,仍有好奇的读者会继续追问为什么结果是这样?背后的逻辑是什么?在后面关于人与AI的讨论中,作者会区分人的两类知识:经验和逻辑。目前为止,这只是一个经验知识。但牛顿对这个问题深究了下去,最终奠定了牛顿三定律和万有引力在内的古典力学体系。学过中学物理的读者都知道,自由落体背后的逻辑是因为距离(h)、加速度(a)和时间(t)之间存在以下动力学关系:
另外,根据万有引力定律F=GMm/r2,加速度
a=GM/r2
在牛顿力学体系内,我们解释了经验公式,并且可以精确计算出加速度(a)。站在牛顿力学的高度,我们可以通过逻辑推断出前面的自由落体模型。但是,我们很快又发现万有引力F=GMm/r2仍旧是个经验模型,目前并没有一个更高层次的模型可以通过逻辑推断出万有引力模型。就这样,在一层层逻辑化自己的经验知识的过程中,聪明的读者会把自己的知识拓展至已知知识的边界。在已知知识边界外的创新,可以用来逻辑化很多我们现有的经验知识。当然,还存在另外一种情况,边界外的创新也可能会指出经验知识的局限性,例如麦克斯韦电磁学指出了光速不依赖参考系,从而帮助我们发现已知的牛顿力学的不足。
理解了模型化的科学方法以后,读者就很容易理解AI就是围绕智能主体建立模型,在这些形形色色的模型背后,有着不同的派别和研究方法。在推理(Reasoning)背后,建立了一种叫作目标树(Goal Tree)的模型;在机器学习背后,则模拟人的大脑的神经元放电机制建立了一种叫作神经网络(Neural Networks)的模型。考虑到最新一轮AI的热度很大程度上是由神经网络和深度学习带动的,所以我们在这里简单介绍一下神经网络模型的设计灵感,读者可以从中体会科学模型背后的艺术。
神经网络用于模拟人的神经元的决策机制,所以我们先来看一下人的神经元的结构。人的单个神经元如图1-4所示,树突(Dendrite)会接受信号输入,然后在轴突(Axon)产生一个脉冲输出到神经末梢(Axon Terminal),从而输入给下一个神经元。我们可以认为人脑是神经元的集合,虽然无数神经元的协同工作涉及无数细节,但是人工神经网络模型只要抓住一些基本的细节就够了。
图1-4 神经元结构
在图1-5中,我们对这个神经元进行简单的模型模拟,创建一个接受两个特性(X1, X2)的输入后产出一个输出的人工智能神经元。为帮助读者更直观地理解这个建模过程,我们不妨把X1设为西红柿的颜色:红色为1,青色为0;把X2设为西红柿的硬度:软的为1,硬的为0。红色并且已经软的西红柿是成熟的,可以食用(可否食用作为输出)。我们把可以食用记为1,不能食用记为0。我们的目标是设计一个数学模型来模拟和训练这个神经元以实现识别成熟可食用的西红柿的目标。
图1-5 接受两个特性输入的人工智能神经元
我们认为这个神经元对颜色输入敏感,因此给X1分配一个较大的权重(Weight1),不妨记为50;这个神经元对于硬度的敏感性稍弱,因此X2的权重(Weight2)记为40;这个神经元只有在输入信号高于阈值(Threshold)60的时候才开始放电并输出脉冲(1),否则保持安静(0)。为此,我们选择S函数(也称为Sigmond函数)作为一个神经元工作函数:
y=1/(1+e-x),其中x=Weight1×X1+Weight2×X2-Threshold
读者可以为两个特性分别取不同的输入值,当两个输入变量都为1的时候,输出大体为1。两个变量在其他输入情况下,输出接近0。我们根据已知的输入和输出训练了这个模型的参数:Weight1、Weight2和Threshold。这个训练好的神经元基本能达到识别可食用西红柿的目的。读者可能会好奇为何要给输入乘上权重(Weight1和Weight2)?为何要选择一个阈值(Threshold)?这是为了更好地模拟生物神经元的工作原理。读者可能还会好奇为何选择Sigmond函数作为神经元函数?简单地说,这是为了方便计算调优参数并减少计算工作量。具体来说,1974年,Paul Werbos在他的哈佛大学博士毕业论文中选择了这个神经元函数,在神经网络模型中首先使用了反向传播算法。在此之前,人工神经网络因为计算量巨大,在闵斯基以后的很长一段时间内停滞不前。神经网络在20世纪80年代出现了一个小热潮,但是到20世纪90年代热度又下降了很多,甚至麻省理工学院的人工智能课程中差点删除神经网络部分的内容。2012年,多伦多大学的Geoffrey Hinton教授使用了有6000万个参数的神经网络在图像识别中取得巨大成功,这当然离不开当今时代的算力的提升(在1.4节中会继续讨论云计算的出现使得原来无法想象的神经网络训练变成可能)。Hinton也因此被认为是深度学习的奠基人,并成为谷歌大脑研发的关键人物(也曾任教于卡内基·梅隆大学)。至于如何把图像处理后输入到拥有数以万计神经元的网络进行识别,读者可以参考Hinton的工作。
因为在图像识别、语音识别、文本翻译等领域的突破,出现了最近一轮建立在神经网络上的机器学习和深度学习的热潮,对AI我们应该持有什么样的预期?为此,我们有必要回顾一下AI的历史。历史总是会重复自己,回顾AI历史能够帮助商业决策者做出正确的预期和决策。
1.3.2 AI的发展史
自远古时代,人类一直希望能够创造一种类似于人类智能的机器,将人类从乏味的重复劳动中解放出来。直到1936年,计算机科学的鼻祖图灵发表了名为《论可计算数》的论文,机器模拟人类智能的哲学话题才转变成一个可以像数学学科那样被论证的课题。在论文中,图灵构造了假想的机器来模仿人类。电影《模仿游戏》讲述的就是图灵如何构造假想的机器(计算机)来模仿人类的故事。在那个时代,人工智能的概念还没有提出,人们更多地使用“机器智能”这个词来讨论计算机带来的智能。简单地说,图灵的论文证明了机器可以模仿人类智能,所以今天的无人驾驶、聊天机器人、棋类对弈和计算机视觉识别等应用都是图灵预见的,虽然他那时并没有足够的硬件条件测试这些应用。读者如果想深入探讨计算机是否可以模仿所有人类的活动,可以参考1.5.1节中关于AI和人的讨论。
在图灵提出图灵机后,多个机构便开始设计真正意义上的遵循通用图灵机模型架构的存储程序计算机(Stored-program Computer)。虽然第一台存储程序计算机(后文称作现代计算机)是谁先发明的至今仍有争议,但是影响较大的是冯·诺依曼提出的EDVAC(Electronic Discrete Variable Automatic Computer)。冯·诺依曼在后来也确认现代计算机的核心设计思想是受到通用图灵机的启发。现代计算机发明以后,各种应用如雨后春笋一样蓬勃发展,但是真正把人工智能作为一个应用方向提出来还是在1956年的达特茅斯会议。
在20世纪40年代末现代计算机被发明后,从20世纪50年代开始,各个领域都开始关于“思考机器”(Thinking Machines)的讨论。各个领域的用词和方法的不同带来了很多混淆。于是,达特茅斯学院(Dartmouth College)年轻的助理教授麦卡锡(John McCarthy)决定召集一个会议澄清思考机器这个话题。召集这样的会议需要赞助,聪明的麦卡锡找到了他在IBM公司的朋友罗切斯特(Nathaniel Rochester)和在普林斯顿大学的朋友闵斯基(Marvin Minsky)以及大师香农一起在1955年写了一份项目倡议。在倡议中,他使用了人工智能(Artificial Intelligence)这个词,避免和已经有的“思考机器”一词混淆。这里值得一提的是闵斯基,麦卡锡和闵斯基后来在麻省理工学院领导了AI实验室,成就了麻省理工学院在人工智能领域首屈一指的地位。会议在1956年举行,这里必须提到另外两位短期的参会者,来自卡内基·梅隆大学的纽厄尔(Alan Newell)和司马贺(Hubert Simon)。他们虽然只呆了一个星期,但是他们的报告中公布的一款程序“逻辑理论家”(Logic Theorist)代表了人工智能的另外一条路线。因为纽厄尔和司马贺的奠基工作,卡内基·梅隆大学成为人工智能的另一个重镇。至于其他参会人员和他们之间的趣闻,读者可以参考《东方早报》在人工智能60周年的报道以及相关的著作。
1.3.3 对AI应用的正确预期
达特茅斯会议的意义在于确立了“人工智能”(AI)作为计算机科学的一个研究领域,自那以后,AI在机器视觉、自然语言处理、无人驾驶等领域取得了长足发展。但是,“人工智能”这个概念常常被过度消费。过去,美国的学者用这个概念来申请政府研究经费,今天有不少公司用这个概念来从资本市场募资。但实际上,AI的进展并不像很多人预言的那样乐观。就棋类对弈而言,司马贺在20世纪50年代末就预言计算机能打败人类,但没有实现;20世纪60年代末,麦卡锡打赌说计算机将在10年内打败人类,结果他输了;国际象棋程序深蓝在“限定时间内”胜出人类直到20世纪90年代末才实现。围棋程序AlphaGo在“限定时间内”胜出人类则是在2017年实现的。闵斯基在20世纪80年代末预言,二十年内可以解决自然语言处理问题,时至今日,各种AI应用在自然语言处理方面尚有极大差距。如今的“无人驾驶”在商用中实际上更多起到“辅助驾驶”的作用,因为在实际的使用中仍出现过意外情况,从保证行车安全的角度,尚不能实现真正的“无人驾驶”。
人工智能最近一次的持续升温是被包括大数据和云计算在内的软硬件技术持续发展使得很多应用得以落地而驱动的(我们将在1.4节中讨论ABC的关系)。从历史经验来看,也许是由于大众媒体和科幻电影的影响,AI界有种过于乐观的倾向。但实际上,我们对于AI模型的精度应该抱有十分谨慎的态度,因为我们构建的神经网络在内的很多AI模型本质上还是经验模型,并不是一个严格的逻辑证明。这些模型的精度比起古典力学模型精度还差了很多。即使是古典力学模型,在微观量子世界也是失效的,所以对于这些模型的使用范围也要持谨慎态度。当然,我们也不能对建立在经验模型上的AI应用持过度怀疑的态度,因为我们的大部分知识来自经验,事实证明,这些知识也是实用的。所以,AI是一个在不断前进的领域。
人工智能另外一个层面的讨论是机器能否超越人类?这个问题是令我们对于人工智能感到不安的原因。从计算机发明的第一天,图灵和其他伟大的数学家们就已经对这个话题进行过深入的讨论。与大众传媒不同,数学家和计算机科学家们对这个问题的讨论是深层次的数学和逻辑层面的讨论。1.5节将着重讨论AI和人的关系,有决心探究这一问题的读者可以参考这一节。