阿尔法围棋是怎样战胜世界顶尖棋手的(修改版)

作者:岁月河山
发表时间:
+-

阿尔法围棋是怎样战胜世界顶尖棋手的(修改版)

阿尔法围棋横扫围棋界当今顶尖高手。四比一赢韩国的李世石九段,升级Master后,快棋全胜六十位中韩日三国一流高手。其后,在三番满棋中,三比零完胜世界等级分最高的柯洁。随后,又轻取中国五位世界冠军组合。聂卫平说,阿尔法围棋的棋力有二十段。 

那么,阿尔法围棋是怎样战胜世界当今顶尖棋手的呢!根据我对围棋的理解,以及从文献上对阿尔法围棋的了解,谈谈阿尔法围棋的算法。

围棋盘面361个点,如果穷尽所有对策可能性,数量级是361!。这是现代计算机无法承受的。对方走了一步棋后,阿尔法围棋有360中可能的选择,阿尔法围棋应用启发式(heuristic)算法只选择250种可能性,也假设对手只选择250种可能性,算步深度12步。如果用树结构表示,这个树有250^12个叶子。这个数也很大。阿尔法围棋应用Monte Carlo随机算法在250^12个叶子中随机选取一个子集。然后,对这个子集进行估价。

所谓估价,就是对子集中,每个叶子所代表的棋形进行评估。这与人类棋手的审局是类似的。找到价值最大的叶子,回溯到树根,就找到了当前最佳一手。

估价的模型是通过深度学习获得的。其实深度学习就是指多层神经网络。多层神经网络的每一层的每一个边都有一个权重。每一层都是线性函数。但是多层综合起来就是非线性函数。多层神经网络的本质是多变量高阶多项式。输入节点的个数要与问题特征的维数相等。输出节点的个数要与目标的维数相等。估价模型的特征是根据围棋知识把盘面中决定价值的特征找出来。例如,棋子连接模样中的点数,子力的厚薄(气数),征子环境,等等,当然最简单的是每个子的坐标。如果用每个子的坐标做特征,问题会变得很复杂。

用训练数据求出权重。训练数据采自实战对局。用最后盘面点数,推出每一步的价值。这样就得到了一系列特征集合价值对(特征集合,实测价值)。把特征集合带入多层神经网络得到价值

优化目标 Sum(价值-实测价值), 得到所有权重。

这就是多变量高阶多项式拟合。当然棋手越强,越客观。训练数据越多,模型越客观。

千古无同局,不能期待当前棋形能在训练数据中找到,但可以把当前棋形分解成特征集合,用特征集合查表的形式(插值)得到棋形的价值。当然,这个算法是很复杂的,应该是阿尔法围棋的核心算法。

在对策组合上,即便是阿尔法围棋考虑250^12个叶子的十分之一,也比人类棋手考虑得多。经过学习,估价模型返回的值也比人类客观。所以,阿尔法围棋当然要战胜世界顶尖围棋高手。