第七百九十一章电脑和人脑的对决
深蓝是美国IBM公司生产的一台超级国际象棋电脑,重1270公斤,有32个大脑(微处理器),每秒钟可以计算2亿步。“深蓝”输入了一百多年来优秀棋手的对局两百多万局。
深蓝是并行计算的电脑系统,建基于RS/6000SP,另加上480颗特别制造的VLSI象棋芯片。下棋程式以C语言写成,运行AIX操作系统。1997年版本的深蓝运算速度为每秒2亿步棋,是其1996年版本的2倍。1997年6月,深蓝在世界超级电脑中排名第259位,计算能力为每秒113.8亿次浮点运算。
1997年的深蓝可搜寻及估计随后的12步棋,而一名人类象棋好手大约可估计随后的10步棋。每增加1步棋的搜寻能力约等于增加下棋强度约80ELO分。
人与计算机的首次对抗是在1963年。国际象棋大师兼教练大卫·布龙斯坦怀疑计算机的创造性能力,同意用自己的智慧与计算机较量。下棋的时候他有一个非常不利的条件:让一个后。但当对局进行到一半时,计算机就把布龙斯坦的一半兵力都吃掉了。这时,布龙斯坦要求再下一局,但这次却不再让子了!
1996年2月10日,超级电脑深蓝首次挑战西洋棋世界冠军卡斯帕罗夫,但以2-4落败。比赛在2月17日结束。其後研究小组把深蓝加以改良
1997年5月11日,在人与计算机之间挑战赛的历史上可以说是历史性的一天。计算机在正常时限的比赛中首次击败了等级分排名世界第一的棋手。加里·卡斯帕罗夫以2.5:3.5(1胜2负3平)输给IBM的计算机程序“深蓝”。机器的胜利标志着国际象棋历史的新时代。
我们可以看到国际象棋的博弈树复杂度有10的123次方这么多,根据深蓝每秒运算2亿步棋来算的话,对于博弈树的遍历需要10的107次方这么多年。虽然说随着游戏的进行博弈树复杂度快速下降,但是想要用计算机找到必胜策略,在可预见的未来还是不行的。要知道可见的宇宙范围内才10的80次方这么多原子,就算把它们都做成计算机来并行运算,可能都满足不了需求。楼上说各种棋类都会研发出不败的计算机软件的同学大可放心。
但是我们想要打赢别人并不需要找到那个飘渺的必胜策略,只需要比对方运算得多就行了:深蓝可搜索到随后的12步棋,而一名人类象棋好手能估计10步棋左右。这就体现出来差距了,多算一步,胜率就多了许多。
更关键的是算法,算法对于计算机运算能力的提升要远高于硬件更新换代的提升。稍微有点智商的对弈软件都不可能采取暴力运算的算法,至少也会用α—β剪枝算法。深蓝的获胜主要是软件的胜利,在未来的的人机对弈中,软件也都是获胜的绝对决定因素,硬件速度的重要性很低。就像其他答案里描述的,这个软件针对特定人的棋风进行了优化。在此之外,也肯定针对国际象棋的特点设计了特殊的算法。对于所有棋类游戏而言,想要设计出一个高手水平的对弈软件其实都是能做到的,即使是围棋,如果真的有需求的话也可以想办法设计,关键在于要让高手把自己的对弈思路「说清楚」。只要是人能够「说清楚」的事情,计算机实际上都能做。
1947年,阿兰.图灵设计了第一个下国际象棋的程序。
1948年,UNIAC计算机被宣称是世界上功能最强大的计算机。它不仅可以下国际象棋,而且它玩RUMMY(一种用两副牌玩的纸牌游戏)所向无敌,无人能战胜它。
1949年,克劳得.香农对如何编写用于下棋的计算机程序进行了描述。当年,Ferranti计算机被用于解二步杀的棋题。
1956年,在美国城市洛斯阿拉莫斯(LosAlamos),人们在计算机MANIACI上(每秒运行11,000次)运行了用6*6棋盘下棋的程序。这也是第一个有文献记载的国际象棋程序。
1957年,波恩斯坦为IBM704机编写了一个国际象棋程序。这是世界上第一个成熟的国际象棋程序。
世界上第一个参加比赛的国际象棋程序是由麻省理工学院的格林.布莱特(Greenblatt)为PDP-6机所写的程序,名为MacHackVI。
1966年一个来自苏联的国际象棋程序击败了斯坦福IBM7090机的程序。
1967年,在麻省国际象棋锦标赛上,MacHackVI成为第一个击败人类棋手的国际象棋程序。
1968年,国际大师戴维.列维公开表示十年之内计算机不会击败他,并为此赌3000美元。
1970年,首届计算机国际象棋锦标赛在纽约举行。冠军被西北大学(NorthesternUniversity)的阿特金(Atkin)和格尔林(Gorlen)编写的程序CHESS3.0夺走。本次比赛共有6个程序参加。
1971年,莫斯科控制科学研究所编写了一个程序,名为KAISSA。它于1974年斯德哥尔摩计算机国际象棋锦标赛的决赛上以4-0完胜对手荣获冠军。
1974年,世界通信国际象棋世界冠军汉斯.波尔莱纳(Hans.Berliner)撰写了他的博士学位论文,题目是“用于解题的国际象棋计算机”。(ChessComputerasProblemSloving).
1975年国际特级大师大卫.勃龙斯坦在维尔纽斯举行的一个锦标赛中利用KAISSA的残局棋库赢得了一个封局。
1976年,在北加利福尼亚举行的保尔.马森锦标赛的B组赛中,CHESS4.5获得冠军,表现分为1950。
1976年,在海法举行的国际象棋奥林匹克团体赛上,计算机被用于编对工作。
1977年,世界上诞生了第一台国际象棋微机,名为CHESSCHALLENGER(国际象棋挑战者)。同年,国际计算机国际象棋协会(ICCA)成立。
1977年,CHESS4.5赢得明尼苏达公开赛冠军,战绩为5胜1负,表现分为2271。
1977年的哥伦布日(即十月十二日,美国某些州的法定假日)在俄亥俄州举行的美国公开赛上,一台名为SNEAKYPETE的电脑成为第一个参加该赛的计算机。
1977年,米歇尔.斯蒂恩()成为第一位输给计算机的特级大师。
1978年,在圣约瑟(哥斯达黎加首都)举行了世界上首次微机国际象棋赛。
1980年,伦敦举办了首届世界微机国际象棋锦标赛。
1981年,电脑CRAZYBLITZ以5-0的比分完胜对手,获得密西西比州冠军,其表现分为2258。
1982年,电脑BELLE由于前往苏联参加计算机国际象棋锦标赛而被美国国务院没收。国务院说此举违反了美国技术转让法中关于禁止将高科技的计算机运往国外的条款。
1983年,BELLE在慢棋赛中击败一名大师,并且成为世界上第一个获得大师分的计算机。
1984年,在加拿大一台微机首次战胜了大型机。
1985年,电脑HITECH的表现分达到2530分。
1987年,美国业余国际象棋锦标赛成为第一个完全由计算机编排的比赛。
1988年,计算机“深思”与特级大师托尼.迈尔斯并列美国公开赛冠军,表现分达到2745分。
1988年,电脑HITECH在美国宾西法尼亚国际象棋锦标赛中击败国际大师EdFormanek(2485)荣获冠军。
1988年,丹麦棋星本特.拉尔辛成为第一位在大型比赛---美国公开赛中负于计算机的特级大师。
1989年,电脑“深思”在加拿大举行的世界电脑国际象棋锦标赛中一举夺魁,并且等级分达到2600分。同年在另一次比赛中“深思”还战胜了特级大师罗伯特.伯恩(Robert.Byrne
1990年,一个名叫CHESS的程序在波士顿举行的哈佛杯比赛中成绩超越了所有的特级大师。
1994年,在德国慕尼黑举行了一次5分钟快棋赛,包括卡斯帕罗夫在内的17名特级大师参加了比赛。比赛中卡斯帕罗夫被电脑FRITZ3击败。该程序还战胜了阿南德、肖特、格尔凡德和克拉姆尼克。有趣的是,特级大师罗伯特.许伯纳拒绝与FRITZ3交手,因而以弃权作负。这也是历史上第一次一位特级大师因弃权而负于电脑。
1996年2月10--17日“深思”的后代“深兰”(DeepBlue)在美国费城与卡斯帕罗夫交手。结果,卡斯帕罗夫以4-2取胜。
1997年5月4日--11日“深兰”的后代“更深的兰”(DeeperBlue)挑战卡斯帕罗夫,经过6局激战,这台重1.4吨,装在两只黑色铁柜中的RS6000/SP超级计算机以3.5-2.5战胜卡斯帕罗夫,成为历史上第一台在对抗赛中战胜世界冠军的计算机。
计算机和象棋大师的对抗,显示了计算机弈棋的力量,但也暴露了它的一些弱点,象棋大师依靠直观感觉、思维判断以及记忆中的局面和理论原则选择最佳决策,并善于从纷乱的局面中找出主要矛盾;但计算机却是根据程序预定的局面估价函数选取最佳对策,计算时尽管采取简化选剔法,仍然需要面面俱到。它的水平受时间的限制,尤其是残局的水平仍较差。
加里·卡斯帕罗夫在费城和纽约面对的这台电脑包括一个装备大量专门用以进行高速运算芯片的IBMSP/2服务器,每个芯片每秒能处理2-3百万个局面。使用超过200个这种芯片,整个程序的速度达到了每秒处理2亿个局面。
棋弈机器每秒能处理2亿个局面意味着什么?肯·汤普森,“尤物”之父(也是Unix和C语言之父),在80年代对搜索深度和棋力提高之间的关系做了非常有意义的试验。他让“尤物”自己跟自己下,但只有一方的搜索深度不断增加,平均每增加一个搜索深度可大约换算成200个国际象棋等级Elo分。于是,“尤物”搜索四层其水平大约是1230分,搜索到九层它的水平达到了2328分。延伸这条曲线,到了顶端会变平缓,可以计算出搜索深度达到十四层时,就达到了世界冠军的程度即2800分。(如下图,横坐标是搜索层数,纵坐标是国际等级分。上部横线是卡斯帕罗夫的分数作参考,A线表示对电脑水平的乐观估计,B线表示悲观估计,C线表示现实估计)
专家的结论是:要与人类世界冠军争夺冠军,必须做一台每秒运算10亿次的电脑(搜索到十四层的深度)。深蓝接近了,但还达不到。
电脑棋力的一个重要方面是下棋时使用广阔的开局库。多少代人类大师的知识积累和经验可以轻易地储存在硬盘上并且在开局阶段采用。即使是个人电脑程序也懂得几千万个开局局面,并且对这些局面的每一个都有完全的统计(比如出现过那些着法、用哪些着法胜过、使用过的人有多少,等等)。程序经常是连走15到20步之后才第一次需要计算。如果没有从这些人类的开局知识精华中受益,程序将实力大减。
当电脑从数目庞大的、从国际象棋历史积累下来的开局知识中取得坚实优势之时,它们也从对局的另一端搜索中受益。
残局数据库
这又是那位影响力到处有的肯·汤普森充当了研究先锋。他在80年代就开始生成和储存棋盘上剩四至五子的所有符合规则的残局。一个典型的五子残局,比如王双象对王单马,包含总数121万个局面。加上一只移动不连续的兵,这个数字增加到335万。汤普森编写程序产生所有符合规则的局面并计算出每个残局可能的强制变化。他还以一种方式把结果压缩,使得一张标准的CD-ROM能存放大约20个残局。
好在,局面数量更大得不可思议的七子残局,离产生依然很遥远。更好在的是,对局的两端即开局和残局,永不可能接在一起。是啊,假如看到一台电脑走了4然后宣布40步棋之内将死,这就太难以让人接受了。但是电脑在比赛中稳定战胜人类世界冠军大概只是时间问题,若干年或若干十年之后……
电脑其实是不停的搜谱,然后判断局面的好坏。人脑如果纯从记忆力来说,是比不过电脑的,所以人战胜电脑的方法是创新。
之所以这场深蓝大战被很多人质疑的原因,就是因为卡斯帕罗夫在认为摸透了电脑对某些特定局面判定有问题(过分看重子力优势,而忽略局面优势,比如能多吃个兵)之后,电脑下出了一反常态的不得子的招法,且事后不给卡斯帕罗夫拆解电脑谱着思索痕迹的时间,直接物理拆除了更深的蓝。使得当时关键招是否是人为修改的(当时有说法是,那招请教了卡尔波夫)成为谜案。
更深层次的说,其实深蓝是ibm挽救公司的一次成功的商业炒作,它战胜的应该是它的竞争对手!
(本章完)