浅谈Alpha Go所涉及的深度学习技术( 三 )


在架构上,AlphaGo可以说是拥有两个大脑,两个神经网络结构几乎相同的两个独立网络:策略网络与评价网络,这两个网络基本上是个13层的卷积神经网络所构成,卷积核大小为5*5,所以基本上与存取固定长宽像素的图像识别神经网络一样,只不过我们将矩阵的输入值换成了棋盘上各个坐标点的落子状况 。

浅谈Alpha Go所涉及的深度学习技术

文章插图
第一个大脑「策略网络」基本上就是一个单纯的监督式学习,用来判断对手最可能的落子位置 。他的做法是大量的输入这个世界上职业棋手的棋谱,用来预测对手最有可能的落子位置 。在这个网络中,完全不用去思考「赢」这件事,只需要能够预测对手的落子即可 。目前AlphaGo预测对手落子位置的正确率是57%(这是刊登在Nature文章时的数据,现在想必更高了) 。那各位可能认为AlphaGo的弱点是否应该就在策略网络,一方面是预测准确率不高,再者是如果下了之前他没看过的棋局是不是就有机会可以赢过他 。可惜并不是,因为AlphaGo的策略网络有做了两个层面增强,第一个层面是利用了名为增强策略网络(reinforced-learning (RL) policy network)的技术,他先使用部分样本训练出一个基础版本的策略网络,以及使用完整样本建立出来的进阶版策略网络,然后让两个网络对弈,后者进阶版策略网络等于是站在基础版前的「高手」,因此可以让基础网络可以快速的熟即到高手可能落子的位置数据,进而又产生一个增强版,这个增强版又变成原有进阶版的「高手」,以此循环修正,就可以不断的提升对于对手(高手)落子的预测 。第二个层面则是现在的策略网络不再需要在19*19的方格中找出最可能落子位置,改良过的策略网络可以先透过卷积核排除掉一些区域不去进行计算,然后再根据剩余区域找出最可能位置,虽然这可能降低AlphaGo策略网络的威力,但是这种机制却能让AlphaGo计算速度提升1000倍以上 。也正因为Alpha Go一直是根据整体局势来猜测对手的可能落子选择,也因此人类耍的小心机像是刻意下几步希望扰乱计算机的落子位置,其实都是没有意义的 。
浅谈Alpha Go所涉及的深度学习技术

文章插图
第二个大脑是评价网络 。在评价网络中则是关注在目前局势的状况下,每个落子位置的「最后」胜率(这也是我所谓的整体棋局),而非是短期的攻城略地 。也就是说策略网络是分类问题(对方会下在哪),评价网络是评估问题(我下在这的胜率是多少) 。评价网络并不是一个精确解的评价机制,因为如果要算出精确解可能会耗费极大量的计算能力,因此它只是一个近似解的网络,而且透过卷积神经网络的方式来计算出卷积核范围的平均胜率(这个做法的目的主要是要将评价函数平滑化,同时避免过度学习的问题),最终答案他会留到最后的蒙利卡罗搜索树中解决 。当然,这里提到的胜率会跟向下预测的步数会有关,向下预测的步数越多,计算就越庞大,AlphaGo目前有能力自己判断需要展开的预测步数 。但是如何能确保过去的样本能够正确反映胜率,而且不受到对弈双方实力的事前判断(可能下在某处会赢不是因为下在这该赢,而是这个人比较厉害),因此 。这个部分它们是透过两台AlphaGo对弈的方式来解决,因为两台AlphaGo的实力可以当作是相同的,那么最后的输赢一定跟原来的两人实力无关,而是跟下的位置有关 。也因此评价网络并不是透过这世界上已知的棋谱作为训练,因为人类对奕会受到双方实力的影响,透过两台对一的方式,他在与欧洲棋王对弈时,所使用的训练组样本只有3000万个棋谱,但是在与李世石比赛时却已经增加到1亿 。由于人类对奕动则数小时,但是AlphaGo间对奕可能就一秒完成数局,这种方式可以快速地累积出正确的评价样本 。所以先前提到机器下围棋最大困难点评价机制的部分就是这样透过卷积神经网络来解决掉 。
浅谈Alpha Go所涉及的深度学习技术

文章插图
AlphaGo技术的最后环节就是蒙地卡罗搜索树,相较于以前深蓝所使用的搜索(搭配MinMax搜索算法以及Alpha-Beta修剪法,这里就不再赘述),由于我们并非具有无限大的计算能力(请注意,如果是有限的排列组合,蒙地卡罗搜索树的确有可能针对所有组合进行通盘评估,但是在围棋的场景下是没有办法的,就算这样做,恐怕也会造成计算时间的大幅增加),因此不可能是适用于旧的方法,不过在前面策略网络以及评价网络中,AlphaGo已经可以针对接下来的落子(包括对方)可能性缩小到一个可控的范围,接下来他就可以快速地运用蒙地卡罗搜索树来有限的组合中计算最佳解 。一般来说蒙地卡罗搜索树包括4个步骤: