求解问题始终是人类面临的一大难题。如何通过复杂的计算,通过搜索解答空间来给出最优解是人工智能首先要解决的一个问题。机器的搜索过程就是根据问题实际情况,不断寻找可利用的知识,构造一条代价最小的推理路线,使问题得以解决。诸如拼图、导航、分配、布局、调度和路由等问题,都可以通过搜索来解决。搜索过程一般包括两个步骤:把问题形式化,在给定目标下确定需要考虑哪些行动和状态;在此基础上进行搜索,寻找一组解决问题的行动序列。该过程输入部分是问题本身,输出则为问题的解。
可以用阿尔法狗的原理说明如何通过搜索来完成求解问题。生活中有些问题的状态数是有限的,其随机性是可控的,比如五子棋、国际象棋和围棋等,求解问题的过程可以通过最终的结果来自下而上推算出每一个局面的胜负情况,以此来完成搜索,给出最优决策,比如该理论可以证明出带禁手和不带禁手的五子棋都是先手必胜的[1]。但是对于围棋来说,该博弈空间巨大(2×10170),其评估函数不可能严格给出,所以采用搜索算法可以给出大概率最优行动。
图1-1 人工智能发展历程
围棋棋盘总共19×19路,共有361个交叉点,每个交叉点用一个数值来表示,1代表黑棋,-1代表白棋,0代表空,这样可以用一个361×n的向量来表示棋盘的状态,每个状态用s来表示,而下一步落子后状态为a,这样该程序则转化为数学模型,给出的决策为任意给定的状态s,如何寻找最优决策a的数学问题。每一步都如此来操作,最后获得棋盘上的最大地盘。2015年,谷歌首席工程师黄士杰采用“深度神经网络”的方法从围棋对战平台(KGS)上获得了所有人类对弈的棋局[2],这样就相当于得到了3 000万个训练样本,把每个状态s看作是一个19×19的二维图像,通过卷积神经网络来分类得到落子的向量a,这样就把围棋的历史棋局转化为一个神经网络来进行学习,最后得到策略函数a=P_human(s)。
通过上面的计算,在对弈过程中每一步都可以得到概率最高的落子位置,但是在以上结果之下并没有得到太令人满意的结果,所以黄士杰把他的老师Remi Coulum在2006年提出的CrazyStone算法进行了合并[3]。CrazyStone的算法其实是基于蒙特卡洛搜索树的原理[4]。该方法的基本原则就是每下一步都给出一个评价,最后通过不同的走法给出评价,评价最高的则为最优。该方法的优点在于不需要人工历史数据,仅仅是按照规则来完成对弈。该方法采用Samuel在1967年的国际象棋自对弈方法[5],可以自己与自己下棋来完成推算,之前完成的对弈可以保留下来,相当于人在思考和积累经验。黄士杰在此基础上进行了更深一步的优化,即初始策略进行了提升,也就是在CrazyStone的基础上其第一步则为P_human函数的计算结果,这样从一开始就不是完全盲目的,而是有了一个深度学习的基础。但是P_human函数计算耗时较长,为了能够提高运算速度,此处又采用了一个简化版本的函数,记为P_human_fast。在自己和自己对弈过程中,P_human函数可以不断更新版本,每下10 000盘则更新一次,这样最后得到一个P_human_plus函数。(https://www.xing528.com)
虽然如上的操作已经近乎完美,但是仍然不能与围棋职业选手相比较。在后续的工作中,黄士杰给出了一个评价函数来判断是否能够赢,这样就不需要搜索到最后的结局来完成计算,但是面临的问题是该评价函数需要大量的数据通过计算给出,但是在KGS上的数据并不够推演出评价函数,所以通过CrazyStone的自己与自己对弈的方式来完善该评价函数。
最终,阿尔法狗在MCTS框架之上融合局面评估函数v(),采用P_human作为初始分开局,每局选择分数最高的方案落子,下到第L步之后,改用P_human_fast把剩下的棋局走完,同时调用通过P_human_plus来计算出的v(SL),评估局面的获胜概率,再按照如下规则更新整个树的分数:
新分数=调整后的初始分+0.5×通过模拟得到的赢棋概率+0.5×局面评估分通过以上的操作,在对弈过程中阿尔法狗则可以击败顶尖职业选手。
在人工智能求解问题的应用中,阿尔法狗的原理很好地诠释了如何做到搜索并给出问题的解。该方法在求解各种各样的问题时都可以应用,只要能够合理地构建出数学模型。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
