人工智能七十年:被遗忘的先驱塞缪尔
在人工智能的早期英雄谱里,亚瑟·塞缪尔的名字常常被忽略——他不像麦卡锡那样命名了整个领域,不像明斯基那样制造了惊人的新闻效应,也不像纽厄尔和西蒙那样获得了图灵奖。但他做了一件比这些都重要的事情:他第一个证明了“机器可以学习”。
1901年,塞缪尔出生在堪萨斯州的一个小镇上。他的父亲是电气工程师,从小教他无线电和电报原理。塞缪尔后来在麻省理工学院学电子工程,毕业后先后在通用电气和贝尔实验室工作,1946年加入IBM——那时IBM刚刚从“打孔卡片制表公司”转型为“计算机公司”,塞缪尔的任务是:找到计算机除了做算术以外的用途。
塞缪尔选择了国际象棋——不对,是跳棋。为什么是跳棋?因为国际象棋太复杂,当时的计算机还跑不动;跳棋的棋路相对简单,但又有足够的策略深度,适合作为“智能程序”的测试平台。
1952年,塞缪尔开始编写跳棋程序。他采用的是“自我对弈”的方法——让程序自己和自己下棋,每走一步都记录“赢了”还是“输了”,然后根据输赢调整自己的策略。这个思路在今天的强化学习中被称为“蒙特卡洛树搜索”的前身,但在1950年代,这个想法离经叛道得离谱——大多数人都觉得“计算机只能按照人类预设的规则运行,怎么可能自己学会下棋?”
塞缪尔没有理会这些怀疑,埋头干了四年。1956年,他的跳棋程序第一次公开演示:它和一个人类业余选手对弈,居然赢了——虽然不是每局都赢,但已经能在部分对局中战胜人类了。这是人类历史上第一次,机器在策略游戏中击败了人类。
1959年,塞缪尔在一篇论文中正式提出了“机器学习”这个概念。他在论文中写道:“让计算机能够学习而不是仅仅按照预设指令运行——这是赋予计算机智能的根本途径。一个不会学习的机器,无论多么复杂,都只是算盘;而一个会学习的机器,才有希望成为思维体。”
这篇文章当时并没有引起太大轰动——整个AI界都在忙着讨论“逻辑理论家”和“通用解题机”,谁会在意一个“下跳棋的程序”呢?但塞缪尔不在乎。他继续改进他的程序,让它能与更强的对手对弈。到1962年,他的程序已经能够击败康涅狄格州的跳棋冠军——这是人类历史上第一次,计算机在正式比赛中战胜了人类冠军。
塞缪尔的工作有两个极其超前的贡献。第一是“自我对弈”模式:利用程序的不同版本相互对抗,让“胜利者”留下,“失败者”淘汰——这种“自我博弈”正是后来AlphaGo Zero的核心训练方法。第二是“评估函数”设计:他没有试图教会程序“怎么下棋”,而是让程序学会“如何评估一个局面的好坏”——好的评估函数本身就是一个学习结果。这个方法后来成了所有棋类AI的标准设计。
但塞缪尔始终没有进入AI的“主流圈子”。他不参加达特茅斯会议,不在顶级学术期刊上争辩AI的定义,也不申请政府的巨额经费——他只是在IBM的研究实验室里默默地做他的程序,一做就是二十年。1970年代AI寒冬时,IBM因为商业考虑放弃了大部分AI研究,塞缪尔的研究经费被削减到几乎为零。他没有抱怨,而是把家里的地下室改成了实验室,继续改进他的跳棋程序——用他自己买的二手计算机。
1986年,塞缪尔在接受最后一次采访时说了这么一段话:“我知道很多人觉得机器学习是不可能的,或者说即使可能也是几十年后的事情。但我相信这条路是对的——让机器自己学会东西,而不是我们教它。这个过程可能会很慢,但方向不会错。”1990年,塞缪尔去世,享年89岁。他在生命的最后一年,还在修改跳棋程序里的评估参数——不是为了出名,不是为了拿奖,只是因为他觉得“这挺有趣的”。
几十年后,当深度学习全面爆发、机器学习成了AI领域最核心的赛道时,人们才回头找到塞缪尔的论文。他的名字被重新提起,他的“自我对弈”概念被引用了上万次。但那时他已经不在了——他安静地待在历史里,像他安静地待在IBM实验室里那样,不争不抢,只是把正确的事情做完了。
塞缪尔的故事告诉我们:有时候,被忽略的人反而走得更远。当整个行业都在追逐风口和概念时,真正改变历史的人可能正在角落里调一个参数。