下棋程序的关键之一是如何减少计算机需要考虑的棋步。麦卡锡经过艰苦探索,终于发明了著名的 - 搜索法,使搜索能有效进行。 - 搜索法说核心就是,算法在采取最佳招数的情况下允许忽略一些未来不会发生的事情。说的有点抽象,我们来举个十分简单的例子。
假如你面前有两个口袋和一个你的敌人,每个口袋放着面值不等的人民币,你来选择口袋,你的敌人决定给你这个口袋里哪张面值的钱。假设你一次只能找一只口袋,在找口袋时一次只能从里面摸出一次。当然你希望面值越大越好,你的敌人自然希望面值越小越好。假如你选择了第一个口袋。现在我们从第一个口袋开始,看每一张面值,并对口袋作出评价。比方说口袋里有一张5元的和一张10元的。如果你挑了这只口袋敌人自然会给你5元的,10元的就是无关紧要的了。
现在你开始翻第二个口袋,你每次看一张面值,都会跟你能得到的最好的那张面值(5元)去比较。所以此时你肯定就去找这个口袋里面面值最小的,因为只要最少的要比5元好,那么你就可以挑这个口袋。假如你在第二个口袋摸出一张1元的,那么你就不用考虑这个口袋了,因为如果你挑了这个口袋,敌人肯定会给你1元面值的,那当然要选择最小面值的5元的那个口袋啦。
(基于 - 剪枝算法的智能五子棋)
虽然有点绕,不过我觉得你应该大概已经理解了这个思路。这就是 - 搜索法,因为这种算法在低于或者超过我们搜索中的 或者 值时就不再搜索,所以这种算法也称为 - 剪枝算法。这种算法至今仍是解决人工智能问题中一种常用的高效方法。当年IBM的深蓝国际象棋程序,因为打败世界冠军卡斯帕罗夫而闻名世界,它靠的正是在30个IBM RS/6000处理器的并行计算机上运行的 - 搜索法。
但是需要注意的是,前不久的谷歌AlphaGo,由于棋盘是19x19的,几乎所有的交叉点都可以走子,初始的分支因子为361,这对于常规的 - 搜索来说太令人生畏了,所以别看名字里面带了一个 (Alpha,有可能这个名字是为了纪念麦卡锡的 - 搜索算法),AlphaGo采用的是却是蒙特卡洛搜索树(MCTS),它是一种随机采样的搜索树算法,它解决了在有限时间内要遍历十分宽的树而牺牲深度的问题。
后来麦卡锡有从达特茅斯搬到了MIT,在那里他又做出了三项十分重要的贡献。第一个是他定义了高级语言Lisp语言,从此Lisp语言长期以来垄断着人工智能领域的应用,而且人们也有了可以拿来用的得力工具了,但是稀少而且昂贵的计算资源仍是问题。于是麦卡锡和他的同事又发明了分时技术。然后,麦卡锡发表了题为“有常识的程序”的文章,文中他描述了一种系统,取名为意见接收者,任务是使用知识来搜索问题的解,这个假想也被看成是第一个完整的人工智能系统。
同年,明斯基也搬到了MIT,他们共同创建了世界上第一座人工智能实验室——MIT AI Lab实验室。尽管后来麦卡锡和明斯基在某些观点上产生了分歧导致他们的合作并没有继续,但这是后话。
(MIT AI Lab实验室)
<上一页 1 2 3 4 5 6 下一页> 余下全文