1.1 人工智能
1997年5月3日——1997年5月11日,一场别开生面的比赛在纽约的公平大厦举行,吸引了全世界的关注。对垒的双方分别是世界国际象棋冠军卡斯帕罗夫和IBM的超级计算机“深蓝”。经过6场激烈的比赛,“深蓝”最终战胜了卡斯帕罗夫,赢得了具有特殊意义的胜利。而这一次比赛也载入了人类的史册。
而另一场可以载入人类史册的人机大战发生在2016年3月9日——2016年3月15日。这一次的比赛双方是世界顶级围棋棋手李世石和Google的人工智能AlphaGo。赛前有很多人并不看好AlphaGo,认为AlphaGo会惨败。没想到AlphaGo最终以4:1大胜李世石,从而一战成名。由于AlphaGo的胜利,AlphaGo用到的深度学习(Deep Learning)技术和人工智能(Artificial Intelligence, AI)也成为了当下最热门的技术话题。
AI第一次被提出来是在1956年,是由4位图灵奖得主、信息论创始人和一位诺贝尔得主在美国达特茅斯会议(Dartmouth Conference)上一同定义出来的。人工智能只是一个抽象概念,它不是任何具体的机器或算法。任何类似于人的智能或高于人的智能的机器或算法都可以称为人工智能。例如,几年前我们去洗车的时候会看到洗车店写着自动化洗车,看起来很高级。今天我们再去看,可能它改成了人工智能洗车,看起来更高级。实际上它的技术并没有改变,只是改了一个名字。随着人工智能技术的大热,很多商品都挂上了人工智能的标签,实际上任何看起来有一点智能的算法和机器都可以称为人工智能,所以人工智能这个标签并不能代表某个商品的技术水平。
提到人工智能,不得不说到一个非常著名的关于人工智能的测试,图灵测试(Turing Test)。图灵测试是由计算机科学之父图灵提出来的,指的是测试者和被测试者(被测试者有可能是人或机器)在隔离的情况下,测试者通过一些装置(如键盘)向被测试者提问。经过多次测试之后,如果有30%的测试者不能确定被测试者是人还是机器,那么说明这台机器通过了测试。
虽然图灵测试早在1950年被提出,但是至今没有机器能够很好地通过图灵测试。偶尔会有一些新闻报道说某某机器通过了图灵测试,但是这些通过图灵测试的机器往往会受到很多人质疑,并且经不住多次实验。
人工智能早期阶段,迅速解决了一些对于人类来说比较困难,但是对于计算机来说相对容易的问题,如下棋、推理和路径规划等。我们下象棋的时候,通常需要思考很久才能推算出几步棋之后棋盘战局的变化,并且经常还会有看错和看漏的情况。而计算机能在一瞬间计算出七八步棋甚至十几步棋之后棋盘的情况,并从中选出对自己最有利的下法来与对手对弈。面对如此强大的对手,人类早在20年前就已经输了。可能有人会想到人工智能在象棋领域早就战胜了人类最顶尖的选手,为什么在围棋领域一直到2016年才出了个AlphaGo把人类顶级棋手击败。比起象棋,围棋的局面发展的可能性要复杂得多。或许我们在设计象棋AI的时候可以使用暴力计算的方法,把几步之内所有可能的走法都遍历一次,然后选一个最优下法。同样的方法放到围棋上就行不通了,围棋每一步的可能性都太多了,用暴力计算法设计出来的围棋AI,它的棋力是很差的。虽然AlphaGo的计算非常快,可以在短时间完成大量运算,但是AlphaGo比其他棋类AI强的地方并不是计算能力,而是它的算法,也可以理解为它拥有更强大的“智慧”。就像是进行小学速算比赛,题目是100以内的加减法,10个小学生为一队,1个数学系的博士为另一队。如果比赛内容是1min哪个队做的正确题目多,小学生队肯定是能够战胜数学博士的。如果是进行大学生数学建模比赛,那10000个小学生也赢不了1个数学博士。对于解决复杂的问题,需要的往往不只是计算速度,更多的应该是智慧。
对于一些人类比较擅长的任务,如图像识别、语音识别和自然语言处理等,计算机却完成得很差。人类的视觉从眼睛采集信息开始,但起到主要作用的是大脑。人类的每个脑半球中都有着非常复杂的视觉皮层,包含着上亿个神经元,以及几百亿条神经元之间的连接。人类的大脑就像是一台超级计算机,可以轻松处理非常复杂的图像问题。神经元之间的电信号可以快速传递,但是就像前面说到的,对于复杂的问题,计算速度只是一方面。人类的视觉能力是通过几亿年的不断进化和不断演变最终才得到的,更强的视觉和听觉能力使得人类可以拥有更强的生存能力。
在人工智能的早期阶段,计算机的智能通常是基于人工制定的“规则”,我们可以通过详细的规则去定义下棋的套路和推理的方法,以及路径规划的方案。但是我们却很难用规则去详细描述图片中的物体,如我们要判断一张图片中是否存在猫。那我们首先要通过规则去定义一只猫,如图1.1所示。
图1.1 猫(Cat)
观察图1.1中的猫,我们可以知道猫有一个圆脑袋、两个三角形的耳朵、又胖又长的身体和一条长尾巴,然后可以定义一套规则来在图片中寻找猫。这看起来好像是可行的,但是如果我们遇到的是图1.2和图1.3中的猫(我家领养的猫,刚来的时候上厕所比较臭,故取名“臭臭”)该怎么办?
图1.2 藏起来的“臭臭”
图1.3 盘成一团的“臭臭”
猫可能只露出身体的一部分,可能会摆出奇怪的造型,那么我们又要针对这些情况定义新的规则。从这个例子中大家应该能看得出来,即使是一只很普通的家养宠物,都可能会出现无数种不同的外形。如果我们使用人工定义的规则去定义这个物体,那么可能需要设置非常大量的规则,并且效果也不一定会很好。仅仅一个物体就这么复杂,而现实中常见的各种物体成千上万,所以在图像识别领域,使用人为定义的规则去做识别肯定是行不通的。很多其他的领域也同样存在这种问题。