1 必须由将棋专家来编程吗?

1

必须由将棋专家来编程吗?

10年前,正在读大二的我不小心留了级,那时的我整日泡在东京大学的将棋俱乐部里消磨时间。

由于留级的缘故,我平时没有太多课,反而有很多的闲暇时间。我思考着未来,开始阅读此前从未接触过的编程类书籍,并为之深深着迷。

要想开发出能打败将棋专家的程序,究竟应该怎么做呢?

必须由将棋专家来编程吗?把他关于将棋的所有知识一一录入电脑,这样的程序才有可能打败他自己,不是吗?

当时,我的将棋水平是在业余五段。虽不能与职业棋手相提并论,但在全国数百万的将棋爱好者中,我也可以跻身前1000位。此外,我还曾获得关东地区学生赛的亚军,可以说实力尚可。

事实上,包括个人和团体在内,当时致力于电脑将棋开发的人员约有50人,我应该是所有人中将棋水平最高的。

因此,我理所应当地认为,我写出的程序即使尚不能战胜将棋专家,也一定是所有程序中最强大的。

虽然直到大三为止,我都还只是一个完完全全的理科生,对电脑的基本操作都不甚熟悉。但在下定决心以后,我迅速地投身于对人工智能与编程的学习中,渐渐地,我将所有的时间都花在了将棋程序的设计开发上。

数月后,我完成了初代将棋程序“PONANZA”的开发工作。

带着PONANZA,我向将棋俱乐部飞奔而去。俱乐部的成员一直都知道我在写将棋程序。事实上,当时业界最先进的电脑将棋已经逼近了业余高级棋手的水平,因此所有人都做好了迎接劲敌的准备。

我启动了PONANZA。

紧张的气氛随之弥漫开来。然而……

我的PONANZA一败涂地。其水平之低远远超出了所有人的想象。我还曾在对弈中故意让PONANZA 8个子,人为制造了非常悬殊的战力差来进行对抗。(图1-1)

后8枚棋子意味着我(上)正在用极弱的战力与PONANZA(下)对抗。一般而言,这样的战力差足以让稍有将棋知识的人轻轻松松赢过职业棋手。

图1-1 我与PONANZA初次对战的情况

然而,即使让了PONANZA 8个子,我还是赢了。

我从未如此希望自己输掉这盘棋。我拼尽全力、倾注了所有热情编写的将棋程序,几乎是我那几个月全部生活目标的程序,惨遭失败。

当时我接触编程尚不足半年。不可否认,我的编程技术还十分稚嫩与笨拙,但这并不是问题的关键。

擅长下将棋的我误以为自己“真的懂将棋”了。但从某种意义上说,我其实对将棋一无所知。非但如此,当年的我对智能完全没有概念——智能究竟是什么呢?