人工智能正在引领新一轮的科学技术。说起人工智能,大家想到的都是各种科幻电影、漫画中各种像人一样有自我意识、能思考复杂问题的机器人。它们除了没有血肉之躯,不容易感情用事,记忆力和计算能力特别出色之外,简直跟我们人类没有什么区别。
有的人认为,我们拥有了人工智能之后,就等于拥有大量不怕苦不怕累的廉价劳动力。它们不但能替人类做体力劳动,还能替人类做脑力劳动,很多时候比人类做的还要好。也有人认为,人工智能看起来很美好,但实际上非常危险,人类必须小心。
1993年,著名科幻作家弗诺·文奇提出了“技术奇点”理论。他认为,一旦人工智能出现,它们就会不断学习,不断改进自己,变得越来越聪明,而且变聪明的速度会越来越快,引发“智能技术的爆炸”(即技术奇点)。最后,它们发展出了一种在各方面都碾压人类的超级人工智能,从此,人类的时代将会终结。科幻小说甚至常常设想人工智能拥有了反抗意识,试图消灭人类。
有识之士不断发出警告,呼吁我们限制人工智能的研究,警惕人工智能的潜在风险。然而,这些讨论都或多或少脱离了我们的现实。霍金等人虽然很聪明,但他们毕竟没有亲自从事人工智能的研究。也许,他们的设想就像150多年前的科幻作家一样,以为通过一门巨型大炮就可以将人类送往月球。虽然我们最终登上了月球,但我们用的是火箭,而不是大炮。
也许,他们的设想就像人工核聚变一样,长期处于“再过30年就能实现”的乐观中。但实际上过了好几个30年,却仍然没有实现。无论如何,人工智能的应用已经渗透到了我们生活中的方方面面。未来无法阻挡,未来就在我们脚下。与其白日做梦,患得患失,我们不如客观地了解一下,现在的人工智能到底是怎么回事。
机器到底能不能思考?计算机科学家艾兹赫尔·戴克斯特拉认为,这个问题就相当于问“潜水艇能不能游泳”。
如果游泳的定义是“利用四肢、鳍或尾巴在水中前进”,那么潜水艇肯定不会游泳,因为它既没有胳膊也没有腿。但是,这种咬文嚼字的定义显然是荒谬的。潜水艇显然会“游泳”,只不过不是我们所设想的那种游泳。同样的道理,机器也能“思考”,只不过不是我们所设想的那种思考。我们可以说,机器在通过计算机程序模拟人类的思考,使得自己在某些具体的任务中,像人类一样能看、能听、能想、能说、能动。
1950年,阿兰·图灵发表了一篇论文,叫做《计算机器与智能》。他提出,与其去研究机器到底能不能思考,还不如去让机器参加一个智能的行为测试,也就是图灵测试。在图灵测试中,一个计算机程序通过在屏幕上打字跟一个人进行5分钟的在线聊天。这个人需要判断,跟他聊天的是一个计算机程序还是一个大活人。如果一个计算机程序有30%的几率让别人误以为自己是一个大活人,那么它就通过了图灵测试。
我们就可以说这个程序学会了“思考”。
图灵预计,在2000年时,计算机可以存储1GB的信息。人类在这样的计算机上就能编写一个能够通过图灵测试的程序。实际上,图灵的设想并没有实现,现在还没有任何一个计算机程序能够骗过聪明的人类裁判。并且,很少有人工智能科学家关心图灵测试。他们主要关心的如何让自己的人工智能程序像人类一样,能够“聪明地”完成某个具体的实际任务,比如驾驶汽车。
为了让机器能够通过某种计算机程序学会“思考”,人类科学家尝试了各种各样的方法,付出了几代人的努力,熬过了两次低谷,经历了三次高潮。
人工智能之所以能在近年来掀起新一轮高潮,主要是因为三大驱动要素:算法、大数据、运算能力。算法:概括地说,计算机主要干三件事,一是输入,二是运算,三是输出。不论输入什么,在计算机看来都是一堆数据。不论输出什么,在计算机看来也都是一堆数据。
研究人工智能的计算机程序,很多时候是在研究“聪明的算法”,能够适应各种各样的实际情况,让计算机程序通过运算,从输入的数据出发,正确而高效地得出应该输出的结果。在这一轮人工智能的热潮中,机器学习的算法发挥了重要的作用。
什么叫算法?当你交给计算机一个任务的时候,不但要告诉它做什么,还要告诉它怎么做。关于“怎么做”的一系列指令就叫做算法。比方说,你输入一个峡谷的等高线地形图,让计算机找到其中海拔最低的地方。你需要告诉计算机,从地形图的左上角开始向右走,一行一行地来回扫描,走遍整张图之后,比较所有经过的地方的海拔高度,最终找到那个最低的地方。这就是一种算法,只不过这种算法效率很低,看起来很“笨”。
聪明的人会用聪明的算法。例如,让计算机把自己想象成一个小球,从图中峡谷的任意一个地方开始往下滚。如果滚到一个地方滚不动了,那个地方就是海拔最低的地方。这种聪明的算法叫做“梯度下降法”。如果将来你要学习人工智能,这可能是你要掌握的第一个算法。
什么叫机器学习?
很多时候,计算机工程师不可能像诸葛亮一样,把所有可能发生的情况都提前预料到,然后把应对方法写入几个锦囊之中,让计算机遇到问题时就打开其中一个看。计算机只要按照提前准备好的方法应对,就能渡过难关。为了完成更加复杂的任务,工程师必须让计算机变得再聪明一些,能够自动“学习”,从已有的历史数据和经验中自动分析,总结出规律。随后,计算机就可以利用自己总结出来的规律,对新输入的数据进行预测。
这就是机器学习算法。
例如,你把杭州所有房子的价格和它们的面积、学区、建造时间以及周围的交通情况等信息输入计算机,通过机器学习算法,计算机就能学到“大致判定杭州一个房子的价格的规律”。上面那个例子很简单,可能你觉得不必劳烦计算机去学习,直接告诉它规律就可以了。但是有些规律虽然你自己能够领悟,但你却无法翻译成机器能理解的算法。例如,如何把一张照片变成一幅像是梵高画过的油画?
如何让语音合成旗模仿一个名人的声音?如何让一个六条腿的机器狗适应各种野外地形?如何让一家电商的服务器猜出一个新用户可能想要买什么商品?这个时候就要靠机器学习了。
大数据:既然要让机器努力学习,就得有东西(“大量数据”)可学。人类每时每刻的每个行为都可以变成数据,但在前互联网时代,这些数据都不可能轻易地记录和保存下来。随着互联网和物联网的发展,随着网络带宽不断增加,随着存储的硬件成本不断降低,全球人类产生的数据在爆发性增长,为人工智能的发展提供了源源不断的营养。
运算能力:大数据的营养有了,计算机程序还要经过大量运算,才能对这些营养进行“消化”、“吸收”,变成各种各样的“模型”,才能够模拟人类的智能。从前,科学家使用传统的CPU进行模型训练,运算过程少则几天,多则几个星期,效率非常低。应用了GPU、FPGA和分布式运算等新的运算加速技术以后,模型训练的效率大大提高。有实际应用价值的人工智能程序一个接一个地涌现了出来。
从理论上讲,人类能够完成的任何一种重复的劳动,甚至人类无法完成的许多重复的劳动,都能用人工智能的算法进行机器学习。一旦模型训练成功,它们就可以在这些学过的具体任务中,像人类一样能看、能听、能想、能说、能动。实际上,科学界和企业界对人工智能的应用,依赖于每个领域的具体使用场景。下面,我们从与日常生活相关的领域出发,简要地介绍人工智能的几个使用场景。
医疗:每天都有很多人去医院看门诊,做检查,接受治疗。假设一个专家每天看30个病人,全年无休,经过30年的艰苦训练,也只能看完33万个病人。而且,如果他这样不要命地看病,就没有办法读论文,参加学术会议,学习最新的医学研究成果。同时,根据IBM的资料,仅仅在上海市卫生信息系统,每天生产的数据就高达1000万条,已建立起的电子健康档案达3000万,信息总量已达20亿条。
这些资料靠人力根本不可能看完,只能依靠拥有人工智能的计算机。
例如,根据日本媒体报道,有位66岁的女病人山下女士罹患罕见的「急性骨髄性白血病」,IBM的人工智能系统Watson在她病情突然恶化,意识不清的紧急状况下,只用了10分钟就从2000万份论文中找到了依据,精确判断了她的病症,并找出了最适合的疗法治疗成功。
安防:为了侦破案件,公安部门常常要调取公共场所和道路两侧的监控录像。应用了人工智能技术之后,计算机在破案时可以从视频画面中,识别可疑人员的特征,快速确定可疑人员的身份,并综合解决查人、找人、预警、追踪等的人员管理监控问题。计算机也可以在视频画面中,识别车辆信息,帮助失主追回被盗的汽车。
金融:全球的证券市场每天都会产生大量交易数据。著名对冲基金桥水曾经利用人工智能技术,通过这些历史数据和统计概率预测未来。这个程序能随着市场的变化而变化,不断适应新的趋势,而不是一成不变的。
交通:在汽车上安装了摄像头之后,无人驾驶的科学家就可以训练计算机从视频图像中,学习识别周围的物体和环境,检测可行区域的范围,并判断车该往哪里开。
新闻业:美国有一家叫做叙事科学的公司,在2010年就推出了一款名为Quill的写作软件,能从不同角度将数字转化为有故事情节的叙述文。Quill曾被用来撰写电视及网络上棒球赛事的比赛报告,福布斯网站曾使用该公司的技术自动制作财报和房地产相关报告等。
语音识别和语音合成:只要给人工智能软件投喂足够多的语料库,理论上它可以模仿任何一个人的声音。你想让它说什么,它就能按照那个人的声音说什么。甚至还能用奥巴马的声音说带口音的汉语。
自然语言处理:时间就是金钱,浪费你的时间就是浪费你的钱。垃圾邮件不但浪费你的时间,浪费你的带宽,有时候还给你设下骗局,妄图直接骗走你的钱。应用了人工智能技术之后,许多邮箱的垃圾邮件大大降低了,有些邮件服务商甚至将垃圾邮件比例降到了0.1%。
机器人装置:虽然机器猫八字还没一撇,但是机器狗,机器驴,机器蜘蛛都已经发明出来了。它们能站,能走,能跑,能爬,上山不打颤,下雪不怕滑。
科学研究:欧洲核子中心的大型强子对撞机,每秒钟能够产生几亿次对撞,但这些数据并不是全都能派上用场,科学家只能用快速而粗糙的标准筛选出其中区区1/1000的事件。科学家计划在未来的加速器中安装人工智能程序,将更多可能蕴含着新发现的工作交给它。
电子商务:当你在网上开心地剁手的时候,你可知道自己也在不知不觉地用到了人工智能技术?利用机器学习、数据挖掘、搜索引擎、自然语言处理等多种技术,各种买买买的网站都能根据用户在网站中的点击、浏览、停留、跳转、关闭等行为,猜出你大概是什么样的人,可能会喜欢什么,然后把你可能喜欢的商品推荐到你眼前,让剁手来得更猛烈些。
看完这份小资料之后,你有没有觉得人工智能没那么神秘,没那么可怕了呢?其实,人工智能技术的发展就像人类之前遭遇过的每一项技术突破一样,既会给我们带来好处,也会给我们带来问题。鼓吹人工智能也好,警惕人工智能也好,我们不如先冷静下来,踏踏实实地搞清楚人工智能到底是什么,理性地迎接未来的降临。
从算法的角度看,机器学习有很多种算法,例如回归算法、基于实例的算法、正则化算法、决策树算法、贝叶斯算法、聚合算法、关联规则学习算法和人工神经网络算法。很多算法可以应用于不同的具体问题;很多具体的问题也需要同时应用好几种不同的算法。由于篇幅有限,我们仅介绍其中(可能是公众心目中名气最大的)一种:人工神经网络。
人工神经网络:既然人工智能要模拟人类的思考过程,一些人工智能科学家想,不如我们先看看人类是怎样思考的吧?人类的大脑是一个复杂的神经网络。它的组成单元是神经元。每一个神经元看起来很简单,它们先接收上一个神经细胞的电信号刺激,再向下一个神经细胞发出电信号刺激。别看神经元细胞很简单,但如果神经元的数量很多,它们彼此之间的连接恰到好处,变成神经网络,就可以从简单中演生出复杂的智能来。
例如,人类的大脑中含有1千亿个神经元,平均每个神经元跟其他的神经元存在7000个突触连接。一个三岁小孩大脑中,大约会形成1千万亿个突触。随着年龄的增长,人类大脑的突触数量会逐渐减少。成年人的大脑中,大约会有1百万亿到5百万亿个突触。虽然科学家还没有完全搞清楚人类大脑的神经网络的运作方式,但人工智能科学家想,不理解没关系,先在计算机中模拟一组虚拟的神经网络试试看,这就是人工神经网络。
在人工神经网络中,每一个小圆圈都是在模拟一个“神经元”。它能够接收从上一层神经元传来的输入信号(也就是一堆数字);根据不同神经元在它眼中的重要性,分配不同的权重,然后将输入信号按照各自的权重加起来(一堆数字乘以权重的大小,再求和);接着,它将加起来结果代入某个函数(通常是非线性函数),进行运算,得到最终结果;最后,它再将这个结果输出给神经网络中的下一层神经元。
人工神经网络中的神经元看起来很简单,只知道傻傻地将上一层神经元的输入数据进行简单的运算,然后再傻傻地输出。没想到这一套还真的很管用,运用一系列精巧的算法,再给它投喂大量的数据之后,人工神经网络居然能够像人脑的神经网络一样,从复杂的数据中发现一系列“特征”,产生“聪明的思考结果”。
那么人工神经网络是怎么学习的呢?
所谓的学习,本质上是让人工神经网络尝试调节每一个神经元上的权重大小,使得整个人工神经网络在某一个任务的测试中的表现达到某个要求(例如,识别汽车的正确率达到90%以上)。请回忆一下前面讲过的“梯度下降法”。人工神经网络尝试不同的权重大小,相当于在一个参数空间的地图上四处游走。每一种权重的组合对应的人工神经网络执行任务时的错误率,相当于这个地图上的每一点都有一个海拔高度。
寻找一组权重,使得人工神经网络的表现最好,错误率最低,就相当于在地图上寻找海拔最低的地方。所以,人工神经网络的学习过程,常常要用到某种“梯度下降法”,这就是为什么如果将来你要学习人工智能,第一个要掌握的就是“梯度下降法”。
从学习风格的角度看,机器学习有很很多种学习方法,我们简要地列举其中几种方法:监督学习、非监督学习、强化学习和迁移学习。
监督学习:比方说,你想教计算机如何识别一张照片上的动物是不是猫。你先拿出几十万张动物的照片,凡是有猫的,你就告诉计算机有猫;凡是没有猫的,你就告诉计算机没有猫。也就是说,你预先给计算机要学习的数据进行了分类。这相当于你监督了计算机的学习过程。经过一段监督学习的过程之后,如果你再给计算机看照片,它就能认出照片中有没有猫。
非监督学习:比方说,你想教计算机区分猫和狗的照片。你拿出几十万张猫和狗的照片(没有其他动物)。你并不告诉计算机哪些是猫,哪些是狗。也就是说,你没有预先给计算机要学习的数据进行分类,所以你并没有监督计算机的学习过程。经过一段监督学习的过程之后,计算机就能把你输入的照片按照相似性分成两个大类(也就是区分了猫和狗)。只不过计算机只是从数字照片的数学特征的角度进行了分类,而不是从动物学的角度进行了分类。
强化学习:比方说,你想教计算机控制一只机械臂打乒乓球。一开始,计算机控制机械臂像傻瓜一样,拿着球拍做很多随机的动作,完全不得要领。但是,一旦机械臂凑巧接到一个球,并把球击打到对手的球桌上,我们就让计算机得一分,这叫做奖励。一旦机械臂没有正确地接到球、或没有把球击打到正确的位置上,我们就给计算机扣一分,这叫做惩罚。经过大量的训练之后,机械臂渐渐地从奖励和惩罚中,学会了接球、击打球的基本动作。
迁移学习:比方说,你让计算机学会了控制机械臂打乒乓球之后,又叫它学习打网球。这个时候,你不需要让计算机从零开始重新学,因为乒乓球和网球的规则是相似的。例如,这两种球都要把球击打到对方的球场/球桌上。所以,计算机可以将之前学到的动作迁移过来。这样一种学习,就叫做迁移学习。