神经网络可能终将在围棋上打败人类

jopen 10年前

原文  http://www.guokr.com/article/439807/

Alulull/ 编译)在几乎一切领域里,人类都面临着被计算机迎头赶超的局面。譬如,机器视觉 专家最近开发出了一种新的算法,使得计算机获得了超越人类的面孔识别能力。类似算法用于物体识别上,也在逐步缩小机器与人类的差距。而人类国际象棋选手在 很久以前就放弃了打败计算机的努力——计算机第一次击败顶尖人类是在1997年,而人类最后一次击败顶尖计算机是在2006年。

但是,有一个领域仍旧由人类独领风骚,那就是一项古老的中国棋类竞技——围棋。计算机始终没能掌握这门技艺,目前最好的算法只能达到一个优秀的业余棋手的水平,顶级的人类棋手能轻易地将其打败。

如今,这一局面似乎有望被打破。苏格兰爱丁堡大学的克里斯托弗•克拉克(Christopher Clark)和阿莫斯•司多奇(Amos Storkey)利用了一种机器学习技术,来计算下一步棋的走向,而正是这种技术帮助面孔识别算法实现了革新性的进步。结果表明,人类继续称霸围棋赛场的 希望恐怕十分渺茫了。

神经网络可能终将在围棋上打败人类

围棋需要两名棋手,以及一个由19X19条网格线划分而成的棋盘。棋手轮流将黑色或白色的棋子下在交叉点上,目标是在游戏结束时比对手占据更多的领地。当己方棋子将对方棋子包围时,棋手就能将该棋子移走。

专家认为,计算机之所以在围棋上表现不佳,原因有二。首先,围棋每一步的可能下法非常之多。棋手在起手时就有19X19=361种落子选择,而在比赛的任意阶段,通常都有数以百计的可能下法。与之形成对比的是,国际象棋的可能下法通常只有50种左右。

第二个问题在于,计算机很难分辨当下棋局的优势方和弱势方。对国际象棋来说,只需要把目前棋盘上剩余棋子的价值总和算出来,就能获得关于棋手形势 的可靠指标。但这种方法对围棋来是行不通的。“计算双方棋手的棋子数目很难告诉我们,现在到底谁的赢面较大。”克拉克和司多奇说。

目前顶尖的围棋算法往往用蛮力法来解决这个问题,那就是对每一步可能的下法模拟出随后的整场比赛,并用不同的下法重复多次。如果在绝大多数模拟棋局中电脑能够获胜,那么就判断这一步棋为好棋。

很显然,这项任务非常耗时,且计算量极大。即便如此,计算机还是不能打败人类围棋高手,因为人往往只需一眼就能看出当下棋局的形势。

许多专家相信,人类掌握围棋的秘诀在于模式识别——通过棋子组成的图形形状来判断优势和弱点,而不是预测几步棋后的走向。

也正是因为这个原因,模式识别算法的最新进展有可能会大大改进计算机的表现。新算法利用大型的图片数据库,训练深度卷积神经网络(deep convolutional neural networks)来识别物体和面孔,其精确性如今已能与人类媲美。因此,可以预想,同样的算法用在围棋棋局自动评估上,也能发挥巨大的作用。

克拉克和司多奇所做的工作恰恰如此。两人训练深度卷积神经网络解决的问题是:给出一张两名围棋高手对局途中的棋盘照片,有没有可能预测出下一步?

他们的解决方案就是让神经网络对一个巨大的围棋棋局数据库进行学习,从而找到下一步棋的下法。克拉克和司多奇使用了超过16万个高手棋局,生成了 共计1650万个棋子位置及其下一步的数据库。他们利用大约1500万个这种位置-步法的信息对来训练一个8层卷积神经网络,令其识别高手们棋路。这一过 程共耗时数天。

接着,他们用数据库中剩余的部分棋局信息对该神经网络进行了测试。换句话说,他们向神经网络输入了源自某一棋局的棋盘位置,并让它选择下一步的下法。克拉克和司多奇说,经过训练的神经网络的预测准确性达到了44%,“显著超过了目前其他的最佳算法。”

这种新算法非常有趣,尤其是因为它在进行决策时没有利用任何先前的着子信息,也没有对将来的棋子位置进行评估。

神经网络的训练结束后,克拉克和司多奇让它和两个目前最好的围棋算法进行了对弈。第一个对手叫做GNU Go,棋力相当于一名中等水平的业余棋手,等级大约为6-8级。(围棋的业余等级为逆序,初学者为30-20级,最高为1级,再往上则改用段位。)

第二个对手则是目前的顶级围棋软件之一,名叫Fuego 1.1,等级大约为5-4级。人类棋手通常需要多年时间学习才能达到这一水平。

对弈的结果对于人类起手来说无疑是一个凶兆。面对GNU Go的200次棋局中,克拉克和司多奇的神经网络的胜率高达90%。换句话说,只需几天的学习训练,神经网络就能稳定地击败6-8级的人类棋手。

在Fuego 1.1面前,它表现欠佳,只赢了10%的棋局。尽管如此,这依然是重大进步。“面对这个对手,哪怕只能赢过几局,也说明(我们的神经网络)的能力达到了相当高的水平。”克拉克和司多奇如是说。

很明显,前景是乐观的。“尽管目前神经网络使用的是‘不往前看’的策略,计算时间也远远小于对手,但它们仍然能够超越GNU Go,而且还能从Fuego那儿拿下几局。”他们说。

进步的空间也很容易预见,比如,将这种算法与其他考虑过往步数并会向前预测的算法结合起来。克拉克和司多奇的一个提议即是,将他们的卷积神经网络与传统的算法同步运行,前者能够帮助后者减小需要探索的步数。

克拉克和司多奇并没有说他们的算法能够打败世界上最好的围棋选手。但毫无疑问的是,围棋选手也终将向计算机霸主低头,这一切只是时间的问题。(编辑:Ent)

参考文献:

  1. arxiv.org/abs/1412.3409: Teaching Deep Convolutional Neural Networks to Play Go
</div>