IBM 的深蓝曾经战胜国际象棋高手,让我们感叹计算机技术的进步。不过,多年以来,古老的围棋却成为计算机难以把握的难题。如今,借助于神经网络的进步,计算机专家们试图突破传统算法,以全新的方式训练计算机的下棋能力。据 technology review 的报道,来自爱丁堡大学的计算机专家 Christopher Clark 和 Amos Storkey 在这方面取得了不小的进步。
专家们认为,计算机难以掌握围棋的原因有两个:一是,在下围棋的时候,棋手总是面临太多的选择。在任意时刻,棋手面临的选择多达上百种。相比较说,国际象棋中,棋手面对的选择大约是 50 种。二是,计算机很难评估双方的优势和弱势。在国际象棋中,通过评估剩下棋子的价值,计算机通常能够了解玩家是否处于优势地位,但是,在围棋中,计算机很难对此做出评估。“计算每个玩家的棋子数量,根本无法判断谁在取胜。” Clark 和 Storkey 说。
为了解决这个问题,计算机采取了一种特别的方法。在每一步之后,计算机都会玩完整个游戏,而且采取各种不同的方法。如果大多数情况下都是胜利的,计算机会认为,它走出的一步是正确的。这是一个非常耗时的任务,而且,计算机通常还是失败。因为围棋高手只要看一眼,就能判断出棋盘上的形势如何。
一些专家认为,人类擅长围棋的秘密在于模式辨识能力。在下围棋的时候,人类思考的不是前面的几步,而是根据棋子组成的形状,判断出双方的优势和劣势。因此,随着模式识别算法方面的进步,人们开始思考训练计算机的新方法。
Clark 和 Storkey 训练了一个复杂的神经网络,教它预测下一步是什么。他们从 16 万次的围棋高手对战中,生成 1650 万个棋局,然后,他们训练神经网络,让它掌握人类高手的下一步动作。许多天后,他们开始用剩下的棋局测试神经网络,让它预测下一步应该怎么走。据两个人说,在训练之后,神经网络预测的准确率明显超过以前算法,大约提升了 44%。
在训练完神经网络之后,Clark 和 Storkey 让它与两个最好的围棋算法比赛。其中一个是 GNU Go,相当于中等水平的业余选手。在与 GNU Go 的对战中,神经网络明显胜出,大概 90% 的情况都是取胜的。另外一个是 Fuego,比 GNU Go 的水平更高,人类选手也要多年训练才能达到这个等级。在与 Fuego 的对战中,神经网络只赢了 10% 的比赛。不过,Clark 和 Storkey 认为,这已经是很大的进步了。
“尽管神经网络下棋时采用了‘不看下一步’的做法,并且只用了对手的部分计算时间,它仍然比 GNU Go 玩的更好,而且还赢了 Fuego 几局。” Clark 和 Storkey 说。同时,他们也认为,如果把神经网络与传统的算法结合,计算机的围棋技能或许会有更大的进步。