来源:量子位公众号
不仅会下围棋,还自学成才横扫国际象棋和日本将棋的deepd alphazero,登上了最新一期《科学》杂志封面。
同时,这也是经过完整同行审议的alphazero论文,首次公开发表。
论文描述了alphazero如何快速学习每个游戏,如何从随机对弈开始训练,在没有先验知识、只知道基本规则的情况下,成为史上最强大的棋类人工智能。
《科学》杂志评价称,能够解决多个复杂问题的单一算法,是创建通用机器学习系统,解决实际问题的重要一步。
deepd说,现在alphazero已经学会了三种不同的复杂棋类游戏,并且可能学会任何一种完美信息博弈的游戏,这“让我们对创建通用学习系统的使命充满信心”。
alphazero到底有多厉害?再总结一下。
在国际象棋中,alphazero训练4小时就超越了世界冠军程序stockfish;
在日本将棋中,alphazero训练2小时就超越了世界冠军程序elo。
在围棋中,alphazero训练30小时就超越了与李世石对战的alphago。
alphazero有什么不同
国际象棋有什么难的?
实际上,国际象棋是计算机科学家很早就开始研究的领域。1997年,深蓝击败了人类国际象棋冠军卡斯帕罗夫,这是一个人工智能的里程碑。此后20年,国际象棋的算法在超越人类后,一直还在不断地进步。
这些算法都是由强大的人类棋手和程序员构建,基于手工制作的功能和精心调整的权重来评估位置,并且结合了高性能的alpha-beta搜索。
而提到游戏树的复杂性,日本将棋比国际象棋还难。日本将棋程序,使用了类似国际象棋的算法,例如高度优化的alpha-beta搜索,以及许多有针对性的设置。
alphazero则完全不同,它依靠的是深度神经网络、通用强化学习算法和通用树搜索算法。除了基本规则之外,它对这些棋类游戏一无所知。
其中,深度神经网络取代了手工写就的评估函数和下法排序启发算法,蒙特卡洛树搜索(cts)算法取代了alpha-beta搜索。
alphazero深度神经网络的参数,通过自我博弈的强化学习来训练,从随机初始化的参数开始。
随着时间推移,系统渐渐从输、赢以及平局里面,学会调整参数,让自己更懂得选择那些有利于赢下比赛的走法。
那么,围棋和国际象棋、将棋有什么不同?
围棋的对弈结局只有输赢两种,而国际象棋和日本将棋都有平局。其中,国际象棋的最优结果被认为是平局。
此外,围棋的落子规则相对简单、平移不变,而国际象棋和日本将棋的规则是不对称的,不同的棋子有不同的下法,例如士兵通常只能向前移动一步,而皇后可以四面八方无限制的移动。而且这些棋子的移动规则,还跟位置密切相关。
尽管存在这些差异,但alphazero与下围棋的alphago zero使用了相同架构的卷积网络。
alphago zero的超参数通过贝叶斯优化进行调整。而在alphazero中,这些超参数、算法设置和网络架构都得到了继承。
除了探索噪声和学习率之外,alphazero没有为不同的游戏做特别的调整。
5000个tpu练出最强全能棋手
系统需要多长时间去训练,取决于每个游戏有多难:国际象棋大约9小时,将棋大约12小时,围棋大约13天。
只是这个训练速度很难复现,deepd在这个环节,投入了5000个一代tpu来生成自我对弈游戏,16个二代tpu来训练神经网络。
训练好的神经网络,用来指引一个搜索算法,就是蒙特卡洛树搜索(cts),为每一步棋选出最有利的落子位置。
每下一步之前,alphazero不是搜索所有可能的排布,只是搜索其中一小部分。
比如,在国际象棋里,它每秒搜索6万种排布。对比一下,stockfish每秒要搜索6千万种排布,千倍之差。
每下一步,需要做多少搜索?每下一步,需要做多少搜索?
alphazero下棋时搜索的位置更少,靠的是让神经网络的选择更集中在最有希望的选择上。deepd在论文中举了个例子来展示。
上图展示的是在alphazero执白、stockfish执黑的一局国际象棋里,经过100次、1000次……直到100万次模拟之后,alphazero蒙特卡洛树的内部状态。每个树状图解都展示了10个最常访问的状态。