1704438786
1704438787
坎贝尔告诉我:“对计算机有利的棋局通常都是棋子很多的复杂棋局,这样就会有许多设定的走法可选。我们希望遇到战术比战略更重要的棋局。这样就可以花一些心思琢磨战术了。”
1704438788
1704438789
如此说来,“深蓝”便是空前绝后的更“人性化”的象棋计算机了。虽然博弈论在象棋中的作用与它在信息不完整的游戏中(如纸牌)的作用程度不同,但在开局中可能却是一样的。一个稍微逊色的走子就会打乱对手的阵脚,使他数月时间的准备毁于一旦——如果对手知道如何应对的话,数月作无用功的人就是你了。但是,大多数计算机都想下出“完美的”象棋,而不是根据对手的状况调整比赛策略。“深蓝”却能像人类棋手一样比赛,并且会将局面扭转至坎贝尔眼中相对有利的局面。
1704438790
1704438791
1997年时,卡斯帕罗夫的棋艺实在太高超了,当时的确应当好好想想该如何设计程序,让“深蓝”赢得比赛。
1704438792
1704438793
从理论上讲,对计算机可以下国际象棋这种情况进行编程并不难:如果让一个国际象棋程序无限期地进行搜索运算,那么全部10的1050种棋局都能得到解决方法。坎贝尔对我说:“有一个运算程序简单易懂,又能解决国际象棋中的问题,我也许半天就能写出这个程序,若给它足够的时间运转,便能够完成比赛。”可他又哀叹道:“可这样的计算,可能需要花费人类一生的时间来完成。”
1704438794
1704438795
若想让计算机棋手打败世界冠军,通常要作无数次索然无味的反复试验。设计者需要思考,是否应该让程序多注意残局阶段,而在中局阶段应少耗费时间,以达到表现上的平衡?是否有更好的办法能让电脑在开局阶段就能评估出舍马换象的价值?另外,有的棋路的确暗含“将军”的机会或能变成一个陷阱,但最终却不能帮助棋手赢得比赛,对这种棋路,程序需花多长时间才能识别出其无用性并且对其忽略?
1704438796
1704438797
通过调整这些参数并观察调整后的变化,坎贝尔对“深蓝”进行过多次试验。但有时“深蓝”还是会犯错,会出现一些奇怪的、出人意料的走法。在这种情况下,坎贝尔只得询问老程序员:新出现的走法究竟是程序的特征——是一个预示着其技巧正在提升的顿悟时刻,还是程序中的漏洞?
1704438798
1704438799
我一般会说这是程序中的漏洞。在更宽泛的预测环境中,当一个模型产生了一个意料之外或难以解释的结果时,通常是由漏洞造成的。把噪声误认作信号的情况太普遍,也太容易了。漏洞甚至能让最出色的预测者前功尽弃。
1704438800
1704438801
在本书上一章中为你介绍过那位身家百万美元的篮球赌客鲍勃·乌尔加利斯。有一年,乌尔加利斯决定要在棒球比赛中一试身手。他设计的模拟器建议把赌注压在费城费城人队,但这次乌尔加利斯赌输了。结果证明是因为模拟器1000个行代码中有一个字母输入错误了:费城人队的主场球场市民银行球场是一个有助于防守和本垒打的小型球场,其编码为 P–H–I,但乌尔加利斯的助手却错误地把编码输成 P–H–1。仅一个错误的行代码就足以“淹没”程序中所有的信号,害得乌尔加利斯将赌金压在了“噪声”上。这次失败让乌尔加利斯沮丧万分,从此彻底停用了这个棒球程序。
1704438802
1704438803
对坎贝尔而言,他们设计的“深蓝”程序在国际象棋方面早就比设计人员厉害百倍,这是坎贝尔面临的挑战,因为很有可能“深蓝”走了一步他们都没走过的棋,但他们却未必知道这是由于漏洞造成的。
1704438804
1704438805
“刚开始调试‘深蓝’时,每次它走了一步不常见的棋,我都会说,‘哦,一定出错了!’我们就会去探究,查看编码,最后弄明白问题所在。但随着时间的推移,我们越来越少这样做了。虽然当该程序继续出现奇怪棋局时,我们还是会去查看一下,但我们却发现它已经想出了一些人类很难搞懂的走法。”
1704438806
1704438807
在国际象棋史上,最著名的几步棋也许要数国际象棋天才波比·费希尔在1956年所谓的“世纪大赛”中走的那几步了。当时只有13岁的费希尔在对阵国际象棋大师唐纳德·波恩盖尔时,出现了两次戏剧性的弃子——一次是费希尔白白地牺牲一个棋子马,几步棋后,他又故意地让自己的棋子后失去防护,而让棋子象前进一步。这两步棋都是正确的,几步之后,费希尔的策略就使波恩盖尔损兵折将,自己的优势则越来越明显。然而,不管是当时还是现在,都很少有国际象棋大师仔细地考虑费希尔的招数。一直以来,棋手们都对“除非是置换对方的棋子后,或是可以立刻将对方一军,否则绝不能放弃自己的棋子后”这样的启示法深信不疑,之所以这样做,是因为这些方法屡试不爽,几乎从没出现过失误。
1704438808
1704438809
1704438810
1704438811
1704438812
1704438813
1704438814
1704438815
图9–7 波比·费希尔著名的牺牲招数(1956年)
1704438816
1704438817
我把这个棋局输入我的笔记本电脑,通过费里茨程序运行,几秒钟之后,费里茨就识别出费希尔的招数。事实上,该程序认为这样的局面只有费希尔的招数方能奏效。在搜寻到所有可能的走法后,费里茨识别出这种情况下应该抛弃上面提到的那个启示法。
1704438818
1704438819
我们或许不能说计算机找到了这些走法是因为它具有“创造性”,相反的,它只是通过其强大的计算速度找到了这些走法。但是,计算机确实另有优势:下棋时,即使在走法上遇到了大难题,计算机也可以识别出特定棋局里的绝妙招数。但对于人类棋手而言,要做到这一点就需要突破传统,变得富有创造力和自信心。人们赞叹费希尔小小年纪却棋艺高超,可也许正是因为年龄小,他才能创造出这个招数:他充分地发挥自己的想象力处理每一步棋。人类的思维盲点通常是我们自己一手造成的,并且会与日俱增。计算机也有盲点,但它至少能够考虑到所有可能出现的招数,进而避免这些空想问题。
1704438820
1704438821
然而,“深蓝”的程序中还存在一些漏洞:数量不多,但肯定会有几个漏洞。采访接近尾声时,坎贝尔戏谑地提及1997年计算机“深蓝”和卡斯帕罗夫的对决,在第一场比赛快结束时发生了一个意外。
1704438822
1704438823
“‘深蓝’在比赛过程中出现了一个漏洞,这个漏洞很可能使卡斯帕罗夫对其能力做出错误判断,因为卡斯帕罗夫没想到这步棋是因为漏洞造成的。”
1704438824
1704438825
这个漏洞是在第一场比赛走到第44步棋时出现的,由于无法决定该走哪步棋,“深蓝”系统默认使出最后一招自动防故障装置措施,完全是随意走了一步棋。这个漏洞无足轻重,因为它是在比赛接近尾声时才出现的,而此时胜负已定。次日,坎贝尔及其团队修补了这个漏洞。坎贝尔告诉我:“1997年年初,我们曾遇到同样的问题,当时认为漏洞已经修补好了,不幸的是,我们还是漏掉了一个漏洞。”
1704438826
1704438827
事实上,漏洞对计算机“深蓝”来说代表很多东西,唯独不代表灾难,因为漏洞似乎可以使计算机击败卡斯帕罗夫。卡斯帕罗夫迎战“深蓝”的比赛一直为人们所津津乐道,在第二场比赛中,卡斯帕罗夫出了一些状况,他犯了一个从未犯过的错误,输掉了原本可以打成平局的比赛。究竟是什么让国际象棋大师犯了这个错误?是由于“深蓝”第一局比赛中的第44步棋吗?当时“深蓝”似乎是极为随意地走了一个棋子车,这步棋让卡斯帕罗夫感到紧张,他觉得这有悖直觉的一步棋必是一步高招,而他绝没有想到这不过是一个程序漏洞。
1704438828
1704438829
因为太依赖21世纪的新兴科技,我们对机器在生活中的价值仍留有艾伦·波式的盲点。但计算机让卡斯帕罗夫出错,却是由于一个设计缺陷。
1704438830
1704438831
计算机擅长做什么?
1704438832
1704438833
计算机的计算速度非常快。而且,它可以非常踏实忠心地计算——不知疲倦、不带情绪、不会中途改变分析方式。
1704438834
1704438835
但这并不意味着电脑做出的预测就一定很完美或者很准确。首字母缩略词“GIGO”(意为无用输入,无用输出)很好地概括了这一个问题。若给计算机输入错误的数据,或提供一套愚蠢的指令供其分析,它不可能“变废为宝”。此外,计算机也不善于完成需要创造性和想象力的任务,比如为这个世界的运转方式设计策略或提出理论。
[
上一页 ]
[ :1.704438786e+09 ]
[
下一页 ]