五天前在谷歌总部举办的一场国际象棋比赛,DeepMind联合创始人德米斯·哈萨比斯(左三)笑开了花
编者按:20年前的1997年,超级计算机“深蓝”在比赛中击败Garry Kasparov,为计算机和棋手们开启了一场新革命。从AlphaGo在围棋领域战胜李世石和柯洁,到只凭借自学就击败Alphago的AlphaGoZero,再到今天的主角——只经过一天学习就精通3种棋艺的AlphaZero。这些鲜活的例子无一不在向我们揭露一个事实:人类并不是完美的。在这个时代,也许唯一能让我们感到欣慰的是这些击败人类的程序仍由人类所造。
2017年12月5日,谷歌DeepMind团队一篇名为Mastering Chess and Shogi by Self-Play with aGeneral Reinforcement Learning Algorithm的学术论文悄然发表。
在论文中,团队证明在除了游戏规则外没有其他任何相应数据的情况下,他们的程序AlphaZero能通过泛化强化学习算法在4个小时内学会国际象棋、在2个小时内学会日本将棋、在8个小时内学会围棋,并击败相应领域的“世界冠军”。不少观看了AlphaZero和国际象棋“冠军”程序Stockfish对局记录的网友纷纷表示:
这不是简单的“殴打”,这简直是拆迁!
论文概要在摘要中,DeepMind团队是这样介绍AlphaZero的:
国际象棋是人工智能史上研究最广泛的领域,这个庞大的项目基于复杂搜索技术的组合、特定领域的适应性调整以及数十年来经人类专家提炼所得的评估函数。相比之下,AlphaGo Zero项目近期取得了喜人的成果,通过强化学习,它从一块“白板”自学成了超越人类的围棋大师。而在这篇论文中,我们泛化了强化学习算法,并推出一种能适应多个领域、表现超越人类的新“白板”算法—— AlphaZero。从随机游戏开始,除了游戏规则没有任何知识数据,AlphaZero在24小时内就学会了国际象棋、将棋和围棋,并令人信服地击败了相应领域的“世界冠军”。
事实上,计算机在象棋领域的研究历史几乎和计算机科学本身一样古老,巴贝奇、图灵、香农、冯·诺依曼,这些大师都曾为国际象棋的分析和下法设计过硬件、算法和理论。之后,国际象棋也一度成为一代人工智能领域研究人员心目中的重大挑战,为了让机器能承受超越人类极限的计算任务,无数人曾前赴后继地投身高性能计算机制造,这样的行为现在也仍在发生。
然而,到目前为止,他们取得的成果还只限于这个狭窄的棋牌游戏领域,如果没有其他人的大力投入,它们无法被推广到其他问题上。而DeepMind的这个尝试正是对这种局面的一个突破。
AlphaZero简介
AlphaZero的目的是利用深度学习网络和蒙特卡洛树搜索算法进行自我对弈,再依靠评分系统不断训练自己在棋局中占据优势,最后战胜对手。它的设计主要围绕以下几方面:
用神经网络体系模拟网格状的棋盘,其中输入为棋子坐标,输出为动作(棋子移动方式),它们被构建为多个层。
DeepMind为AlphaZero提供了非常翔实的游戏规则,算法能利用蒙特卡洛树搜索模拟任何规则允许的下法来结束棋局,并对这些模拟的最终表现评分;
这些游戏规则也用于对输入层(即castling,重复而无演进)和输出层(棋子移动、叫吃和将棋drop)的编码;
算法会用合理下法的特定数量等比例降低搜索噪声;
如果棋局有时长/步数限制,AlphaZero会在进行国际象棋比赛和将棋比赛时限制自己的最高步数来获得一个计算到的结果;而围棋则用Tromp-Taylor规则来评分。
正如摘要中提到的,除了必要的游戏规则外,算法没有任何如视频、棋谱、定式等游戏相关的学习资料。
AlphaZero算法原理
在论文中,DeepMind并没有给出AlphaZero的具体模型设计,只表示它是AlphaGo Zero算法的通用版本,两者都不再借用传统手工搜集整理的数据和游戏的特定技巧玩法进行学习,而是依靠DNN和“白板”强化学习算法不断自我对弈。
DNN
AlphaZero使用的深度神经网络包含一个参数θ:
(p, v) = fθ(s)
其中输入s为棋子的坐标,神经网络根据每个动作a输出具有分量
pa = Pr(a|s)
的移动概率p的向量,而v则是根据坐标s估计的预期结果z的标量值:
v ≈ E[z|s].
AlphaZero能在自学中学习移动概率计算和预期结果估计,并将其用来指导搜索。
蒙特卡洛树搜索算法
不同于利用游戏专用数据的alpha-beta搜索,AlphaZero用的是蒙特卡洛树搜索算法(MCTS),它的每一次搜索都包含一系列从根节点到叶子节点最后贯穿整棵树的自我对弈模拟。而每次模拟会通过从每个状态s中选择一个低访问次数、高移动概率、高价值动作a来继续推进(衡量标准为s中a模拟的叶子节点状态平均值)。最后搜索返回的是一个表示移动概率分布的向量π,它在比例上和贪婪性上都与访问根节点的次数相关。
强化学习
DNN中的参数θ经随机初始化后,AlphaZero会通过一种自我对弈的强化学习算法来进行训练。棋局中,蒙特卡洛树搜索算法会对应给出下棋双方的下一步动作:at ∼ πt。棋局结束后,算法根据游戏规则对棋子位置sT计算表现评分z:-1为负;0为平; 1为胜。为了降低预测结果vt和评分z之间的误差,同时使动作向量pt和搜索概率πt更接近,参数θ会做重新调整。具体来说,θ可由以下算式计算得出:
其中c为控制L2权重正则化水平的参数。调整后,更新的参数会用于之后的自我对弈棋局。
AlphaZero和AlphaGo Zero的区别
DeepMind也在论文中介绍了AlphaZero和AlphaGo Zero的一些不同点,它们主要表现在以下这几个方面:
AlphaGo Zero只会考虑输/赢两种结果,因此它会不断估计并优化胜率;而AlphaZero会估计和优化比赛结果,并考虑平局或其他潜在的情况。
由于无论怎么调整棋局方位,围棋的规则都不会发生变化,AlphaZero沿用了AlphaGo Zero的方法,会通过增加一些对称数据强化训练,并在蒙特卡洛树搜索期间随机调整棋盘角度进行评估。但考虑到国际象棋和将棋的规则是不对称的,AlphaZero没有增加训练数据,在搜索时也不会改变棋盘位置。
AlphaGo Zero算法提升自我的方式是不断迭代,它会计算每一次训练的表现,如果后一次比前一次更优,那后者会代替前者进行之后的自我对弈。而AlphaZero从头到尾只有一个神经网络,它只通过更新参数来完成自我更新,省去了评分步骤,也不统计最佳状态。
AlphaGo Zero通过贝叶斯优化调整搜索的超参数,而AlphaZero则重复使用相同的超参数,无需针对特定游戏做改变。当然,这一点也有例外,就是AlphaZero为了保证搜索会把噪声添加进之前的动作中,它与合理下法的数量成正比。
在展示成果前,DeepMind先在论文中评价了围棋、国际象棋、将棋对神经网络架构的适应性。他们指出,由于规则的高度对称性、动作空间简单、比赛结果只有输和赢,围棋是最适合神经网络训练的。而国际象棋和将棋棋盘规则不对称,棋子移动方式各异,尤其是将棋还允许被吃掉的棋子重返战场,因此引入一些新的设计和思考十分必要。事实上,国际象棋和将棋都有平局的结果,尤其是国际象棋还把平局视为一种最优解,这都对AlphaZero提出了新的挑战。
AlphaZero国际象棋、将棋、围棋百场对局结果
在这次实验中,AlphaZero的“世界冠军”对手们分别是2016年TCEC冠军、今年在51场比赛中保持不败战绩的国际象棋AI程序Stockfish,2017年CSA世界冠军、日本将棋AI程序Elmo,以及DeepMind上一篇论文的主角、只训练了3天就超越AlphaGo(李世石版)的围棋AI程序AG0 3(AlphaGo Zero3天训练版)。
如上图所示,AlphaZero在三个游戏中都占据优势,以总成绩28胜72平、90胜2平8负和60胜40负的战绩锁定胜局。但我们也可以发现,执黑执白似乎对AlphaZero的表现有一定影响。执白棋时,它分别以25胜25平、43胜2平5负在国际象棋和将棋比赛中战胜对手;而执黑棋时,它在将棋上以47胜3负大胜Elmo,但在国际象棋上则以3胜47平险胜。可能是因为“师出同门”,AlphaZero在围棋上表现稳定,和AG0 3相比进步也很明显。
训练落子70万步后,AlphaZero和其他“世界冠军”的Elo评分对比
虽然对局结果中似乎出现了一些有关黑白棋公平性上的发现,但毫无疑问的一点是,AlphaZero利用这300场比赛证明了它的实力,而这一切是在除了比赛规则外没有任何预备的训练数据、训练时间只压缩在24小时内的情况下实现的。
上图是论文中的一幅评分图,暂且抛开评分可信度,通过对比数据我们可以发现,AlphaZero在训练到30万步时已经超越了Stockfish,此时用时约为4小时。而在将棋训练中,AlphaZero仅用2小时、11万步就超越了Elmo。在面对棋盘情况更复杂的围棋时,算法在16.5万步时和战胜李世石的AlphaGo打成平手(8小时),并在之后一路上升。
遗憾的是,虽然DeepMind展示了AlphaZero和AG0 3的对局成绩,但是并没有在论文中说明训练了多长时间。
AlphaZero对国际象棋部分下法的评价
是RL还是TPU?虽然AlphaZero在技术上取得的成就毋庸置疑,但在相当一部分国际象棋爱好者和部分机器学习爱好者看来,这篇论文并没有真正证明强化学习算法和AlphaZero本身的优越性,而引起争议的正是下面这幅图。
随着思考时间延长,AlphaZero和Stockfish、Elmo在Elo评分上的变化
据透露,DeepMind在训练AlphaZero时用了5000个TPU和64个二代TPU,这也是他们把训练时间压缩在24小时内的最主要原因。其中二代TPU是谷歌今年5月发布的新型深度学习芯片,把64个二代TPU连接起来后,它们的浮点性能可以达到惊人的11.5PFLOPS,远超世界上前五百超级计算机的算力。
在论文中,团队称为了公平起见,AlphaZero和AG0 3使用的是一台带有4个TPU的机器,而Stockfish和Elmo使用的是“足以发挥它们最大效果”的64个线程和1GB的哈希表。在这样的背景下,依靠蒙特卡洛树搜索,AlphaZero每秒只需在国际象棋中搜索8万次,在将棋中搜索4万次,而Stockfish每秒需要的搜索次数高达7000万次,Elmo也要3500万次,它们用的是α-β搜索。
对此,DeepMind给出的结论是α-β搜索的内在优势需要被重新考量,如上图所示,思考时间延长后,AlphaZero较其他两个程序在评分上有了更好的表现。
但是许多人对此提出了异议,AI思考时间越长做出的决策越准确的道理众所周知,但它对算力的压力也会随时间增长,而Stockfish和Elmo的硬件配置和AlphaZero相比太差了。诚然,开发人员在设计它们的时候会考虑到硬件的承受能力,把资源占用控制在可以接受的范围内,这使它们在起跑线上就远远落后于AlphaZero,再加上可怕的搜索次数,因此一个情理之中的疑问是:如果Stockfish也基于4个TPU的算力设计,AlphaZero是否能超越它?
另外,一些人也对文中的Elo评分提出了异议,考虑到Stockfish并没有国际象棋需要的opening book,所以这些评分很有可能是有问题的。
结语无论如何,AlphaZero在只有游戏规则的前提下在一天内就击败了3类棋牌游戏中的顶级“选手”,这本身就是一个非常了不起的成就。在这种情况下,比较算法优劣或是争论谁强谁弱的问题恐怕都不重要了,重要的是我们需要看到神经网络的力量。未来机器学习在游戏“输赢”定义上还有很长一条路要走,但与此同时,它将给我们的认知方式带来前所未有的改变。
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved