| 上一篇说到深蓝打败了棋王卡斯帕罗夫,而老卡说在跟深蓝的对局中,特别是第二盘,发现了人的智慧和创造力。这就很有意思了,问题就是什么时候,机器会和人一样,我说的是智能方面,不是运动方面哈。为此,图灵(Alan Mathison Turing)早就给出了答案,我就不再重复了。我只想指出卡斯帕罗夫居然有了这种感觉,就是他面对的不再是机器,而是有思想有智慧的人。那么可不可以说深蓝在某种程度上通过了“图灵测验”(Turing test)? 那么我们还是先来仔细看看深蓝是个什么样系统吧。之所以称深蓝为系统,是因为深蓝包括了硬件和软件。深蓝的任务,就是下棋,没有别的,虽然深蓝也可以用来做别的事。深蓝实际是一个大规模并行运算系统,有30个节点,每个节点里有一个120 MHz的P2SC芯片(其实就是CPU啦),外加480个专门设计的VLSI下棋芯片。深蓝的程序是用C写的,系统是IBM开发的AIX OS。前面提到过,1997年的升级版深蓝每秒可以运算2亿(200 million),在当时全世界的超级计算机中,速度排名259,已经是很了不起了。 因为深蓝的超级速度,所以深蓝的运算方法是“brute force”。“Brute”哈,古狗的翻译是作名词讲,是“畜生”或“兽性”;作形容词讲,是“无礼”或“残忍”。畜生的力量或残忍的力量,文明一点讲,就是“蛮力”。蛮力在这里怎么讲啊?具体地讲,就是比如说你有一把号码锁,但是忘记解锁号码了。如果号码是三位,那么你就一个号码一个号码试,从000到999一路试过来,直到找到解锁号码为止,这就是蛮力。这个过程,对于码农来说,就是用i = i + 1来表达,从1开始,一直到N。如果号码锁是3位数,那么N就是1000;如果是4位数,N就是10000,以此类推。 说来有意思,当初学计算机语言,我怎么也想不通这个i = i + 1的意义,因为这在数学上是怎么也讲不通的。如果做数学运算,你把“i”从右边移到左边,两个相互抵消,余下的不就是0 = 1么?这怎么成?!教授没有解释,书中也没明确,实在想不通。直到某一天,吃完午饭在一起喝茶的时候,我们教研室的一位计算机大拿才解释清楚了。原来在这里,“i”代表两个意思,一个是数值,这个跟数学中的符号一样;另一个是在计算机储存中的物理位置。在i = i + 1这个等式中,左面的“i”代表的是储存中的物理位置,右面的代表的才是数值,那么i = i + 1翻译成人话,就是在计算机储存中i那个位置,把原来的数值加1以后再重新输入到i的储存位置中,那么下面的运算,就是用新的数值去算了。 又扯远了,还是回头来说蛮力。具体到深蓝,这个蛮力究竟要蛮到什么程度?大家知道国际象棋的格子是8x8,共64格。小时候在《十万个为什么》里曾看到这样一个故事:国际象棋发明于印度。说当年那个印度国王得到了象棋,发现很好玩,因此很高兴,就对发明象棋的人说,你要什么奖赏吧。那个发明的人就说,我也不想要太多,这样吧:大王在象棋的第一个格子里放1粒米,第二个格子放2粒米,第三个格子放4粒米,这样一直加倍放下去,直到把整个棋盘64个格子填满,你就把棋盘上的米奖给我。国王一想这还不好说,不就几粒米么,好办。现在问题是,国王能兑现他的诺言么?在你说肯定能行之前,我就想温馨提示一句,我曾经让孩子们拿这个问题去坑过她们的老师。 ![]() 那么国际象棋的运算数目已经是如此庞大,围棋呢?哈,总算回到围棋这个主题了哈。围棋棋盘是19x19线,总共有361个交点,这是个什么级数啊?所以流行的看法,是计算机要在围棋上打败人,那还有很长很长的路要走,也许是在遥远的将来吧,没想到阿尔法狗的出现,一下子就把我们从遥远的将来拉回到现实中,这就是阿尔法狗给我们的震撼。当然震撼不止是在时间轴上,还有其它方面的,我后面要说到。 不过话要说回来,科学、技术都在进步。当年觉得强大无比的计算机,到今天实际上可以说是小菜一碟,其运算能力,还不如你手上的手机。比如说这深蓝,运算能力是11.38 GFLOPS(FLOP是计算计算机运算能力的单位),当时已经是不得了的了。不过到了1999年,Intel Pentium III的运算能力已经到了1.354 GFLOPS,虽然跟深蓝还差了一个数量级,但这只是一个芯片,而深蓝是用了一大堆芯片。再到了2010年,Intel Core-i7 980X Extreme Edition的运算能力是147.6 GFLOPS,超过了深蓝一个数量级。 再说手机,iPhone 5里的图像处理部分的运算能力是76.8 GFLOPS,Samsung Galaxy S5的图像处理部分的运算能力更是高达142 GFLOPS。就想说明一点,就是今天的计算机的运算能力,比当年要强大许多许多。当然,要解决实际问题,不是光有运算能力就行的,更多的是要注入人的智慧,就是说软件也得跟得上。 实际上,好多其它的国际象棋软件,特别是深蓝以后的软件,更注意在计算方法上的改进,而不是依靠蛮力。在计算搜寻方法上,主要用启发式运算(heuristic),启发式运算不求完全和最佳,但是可以节省好多时间和运算能力。好多象棋程序,后来就在PC上跑,效果也很好。我在这里提这个启发式,是因为这跟阿尔法狗用到的蒙特卡罗树搜寻很有关系,我们后面会讨论。 先写到这里吧,因为我要呼呼了,回头再侃。 https://en.wikipedia.org/wiki/Deep_Blue_(chess_computer) https://en.wikipedia.org/wiki/Turing_test https://en.wikipedia.org/wiki/Computer_performance_by_orders_of_magnitude http://www.phonearena.com/news/A-modern-smartphone-or-a-vintage-supercomputer-which-is-more-powerful_id57149 https://en.wikipedia.org/wiki/Heuristic_(computer_science) |
pilot: 说到图灵, 知道的人可能不多.
那可是电子计算机的鼻主级人物, 大概相当于物理界的牛顿吧.
别说阿狗、神经网络、蒙特卡罗, 就连计算机语言算法人工智能啥的, 都是 ...
星光: 在计算搜寻方法上,主要用启发式运算(heuristic),启发式运算不求完全和最佳,但是可以节省好多时间和运算能力。好多象棋程序,后来就在PC上跑,效果也很好。
...

waspking: i <- i+1 is easier to understand?
I did not have a problem understanding it.
i=i+1, means "use the value of old i, +1, and store it to the same ...

昨夜雨: 周末没有机会上来,怎么就5篇了?:)

Powered by Discuz! X3.4
© 2001-2017 Comsenz Inc.