天涯小站 2.0

 找回密码
 注册
搜索
天涯小站 2.0 首页 拾萃 科技网络 查看内容

漫人:阿狗、神经网络、蒙特卡罗、围棋及其它(五)

2016-4-4 07:08 AM| 发布者: 星光| 查看: 779| 评论: 8|原作者: 漫人

摘要: 上一篇说到深蓝打败了棋王卡斯帕罗夫,而老卡说在跟深蓝的对局中,特别是第二盘,发现了人的智慧和创造力。这就很有意思了,问题就是什么时候,机器会和人一样,我说的是智能方面,不是运动方面哈。为此,图灵(Alan ...
上一篇说到深蓝打败了棋王卡斯帕罗夫,而老卡说在跟深蓝的对局中,特别是第二盘,发现了人的智慧和创造力。这就很有意思了,问题就是什么时候,机器会和人一样,我说的是智能方面,不是运动方面哈。为此,图灵(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)
发表评论

最新评论

引用 2016-4-6 10:40 PM
pilot: 说到图灵, 知道的人可能不多.
那可是电子计算机的鼻主级人物, 大概相当于物理界的牛顿吧.
别说阿狗、神经网络、蒙特卡罗, 就连计算机语言算法人工智能啥的, 都是 ...
图灵,是个很大的题目,我要是再花时间去细说,估计好多篇都转不回来。

所以就留了个坑,以后有机会再填吧。

其实,有了The Imitation Game那个电影,我想对图灵多多少少有些了解了。
引用 2016-4-6 10:22 PM
星光: 在计算搜寻方法上,主要用启发式运算(heuristic),启发式运算不求完全和最佳,但是可以节省好多时间和运算能力。好多象棋程序,后来就在PC上跑,效果也很好。
...
这个heuristic,是计算机模拟上常用的方法,但我一直没吃透,还得仔细研究以后才能说。
引用 2016-4-6 10:20 PM
waspking: i <- i+1 is easier to understand?
I did not have a problem understanding it.
i=i+1, means &quot;use the value of old i, +1, and store it to the same ...
就是那个等号想不通嘛。

你硬文说的跟我上面讲的就是一回事嘛。
引用 2016-4-6 10:19 PM
昨夜雨: 周末没有机会上来,怎么就5篇了?:)
呵呵,赶场啊!
引用 2016-4-6 01:35 AM
说到图灵, 知道的人可能不多.
那可是电子计算机的鼻主级人物, 大概相当于物理界的牛顿吧.
别说阿狗、神经网络、蒙特卡罗, 就连计算机语言算法人工智能啥的, 都是图灵机的子孙后代.
记得当年国内计算机科班就是计算机软硬件语言, 数据结构, 操作系统, 高深点的再加个数据库, 编译原理.
到了米国导师一看学过的课程, 闭口不谈俺当时想学的计算机网络, 并形处理等高大上, 给列的第一门课就是图灵机和机器学习. 虽然枯燥抽象, 学完了才恍然大悟, 原来计算机不光是按人写的程序替你玩命算数字的傻子!
早在上世纪三十年代, 图灵就已经告诉大家, 机器可以做人所能做的录入, 记忆, 识别, 计算, 处理,分析, 学习, 等等, 等等
而且会比人做的又快又准又好.
八十年后的今天, 计算机果然无处不在.
谁又能预料到五十年, 八十年后电脑将会怎样?
这个大神还是个长跑高手, 在当时算世界级马拉松顶尖高手, 是能够代表英国队参加奥林匹克马拉松比赛的那种.
本来他是一定能够在电子计算机方面更加辉煌的, 只可惜为了当时被人们视为邪恶的同性取向, 草草地了却了一生.
让人一声叹息.
引用 2016-4-5 08:59 AM
在计算搜寻方法上,主要用启发式运算(heuristic),启发式运算不求完全和最佳,但是可以节省好多时间和运算能力。好多象棋程序,后来就在PC上跑,效果也很好。

有意思,等着你进一步的讲解。

也等着你们侃侃神经元处理信息。真想听听炉匠怎么说。
引用 2016-4-4 10:30 AM
i <- i+1 is easier to understand?
I did not have a problem understanding it.
i=i+1, means &quot;use the value of old i, +1, and store it to the same symbol &quot;i&quot; to save memory space.&quot;

I first learned APL. I found it similar to R.
oops, I learned basic while i was in beijing, in 1982/1983. Huge machine in a clean room with 64K memory...and punching holes was a terrible way to input the program...
引用 2016-4-4 07:43 AM
周末没有机会上来,怎么就5篇了?:)

查看全部评论(8)

手机版|天涯小站

GMT-5, 2026-6-26 10:46 PM

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

返回顶部