范廷钰吧 关注:221贴子:8,154
  • 2回复贴,共1

AG的部分原理解读

只看楼主收藏回复

由于巨大的搜索空间 (穷举搜索是不可能的) 和分析棋局自身的复杂性,围棋一向被视为是对于人工智能最具挑战性的经典游戏之一。通常情况下,我们可以设法把实际搜索空间缩小。
1) 减小深度:把状态s以下的子树用一个预测状态s的输出的近似函数代替。这种方法已经在国际象棋和跳棋上取得成功,超过了人类的表现,但是因为围棋的复杂度,被认为行不通。
2) 减小广度:对政策p采样,政策指的是在某一状态s下的所有走法的概率分布。比如Monte-Carlo rollouts,随机选择一些采样点,直接不分支搜到树的最顶部,然后对这些采样取均值。这种方法可以取得一个较有效的对棋局的判断,被证明可以战胜初级围棋手。
AlphaGo 采取了一种新颖的方法,主要由三部分组成:策略网络,负责预测下一步的棋的概率;估值网络,负责评估当前局面,预测获胜方;蒙塔卡洛树搜索,作用是把系统连为一体。这三个部分并非缺一不可,但是合作在一起,能取得最好的效果。AlphaGo取得了对其他围棋程序99.8%的胜率,在击败李世石的世纪大战之前,AlphaGo 曾5比0横扫欧洲围棋冠军。这是计算机首次在全尺寸棋盘围棋比赛中击败人类职业棋手,这样的成就比人们之前预测的至少提前了十年。
1、策略网络
训练策略网络是 AlphaGo 整个训练体系的第一步。围棋棋盘有19*19个棋格,可以看作是一幅19*19像素的图像,每个像素可以有三个值:黑、白、空。每一个特定时刻的棋局,其实就是一幅19*19的图,作为深层网络的输入。2016年1月发布在自然杂志上的AlphaGo的版本中,策略网络包含了13层神经元,训练数据是从 KGS Go 服务器上取得的3000万个人类棋手的真实棋局,和该棋局对应的下一步走法。
经过多个卷积层和非线性激活函数,策略网络在输出层预测每一个合法落子的概率。机器预测的下一步和人类棋手的下一步会有偏差,网络就以经典的梯度下降算法调整每个连接的权重,纠正偏差。AlphaGo预测人类棋手下一步的准确率达到了57%。值得注意是,AlphaGo还具备一个快速走子策略。完整的策略网络虽然能提供很高的正确率,但是速度较慢 (预测每一步需要 3 ms ),快速走子可以把速度提高1500倍,达到 2 微秒/步,代价是牺牲一定的准确度。
如果说深层卷积网络让 AlphaGo 具备了模仿人类棋手走下一步棋的能力,那么接下来的强化学习 ( reinforcement learning ) 进一步优化了预测结果。强化学习,其实就是让机器不再模仿人类,而是自己跟自己下棋。此时的机器一分为二,一方是当前的状态,另一方是随机选取的之前某一步迭代的状态。随机选取对手是为了要避免过拟合。有趣的是,如果把只会模仿人类的机器和经过强化学习优化过的机器一对一较量,后者取得了80%的胜率。
2、估值网络
估值网络的目的是评估当前局面,预测最后的胜者。估值网络是AlphaGo相比别的人工智能围棋算法的新颖之处。预测局面是围棋的难点之一,就算是顶尖棋手,在预测的时候也经常出现偏差。
训练估值网络有一个小窍门。如果把同一盘棋的每一步局面都当作输入训练的话,因为每两个相邻的棋局都只差一颗棋子,相关性很高,所以很容易造成过拟合的问题。作者就让机器自己生成3000万个不同的棋局,每个棋局都属于一盘不同的棋。训练后的估值网络比采用快速蒙特卡洛推演( Monte-Carlo rollouts with fast policy) 要准确,同时可以达到一般蒙特卡洛推演的准确度,但是要快15000倍。
AlphaGo完全没有做任何局部分析,纯粹用暴力训练出一个相当不错的估值网络,实际上证明了深度卷积神经网络的对问题的分解能力。
3、蒙特卡洛树搜索
AlphaGo通过蒙特卡洛树搜索把策略网络和估值网络结合了起来。目前主要有两种随机算法,蒙特卡洛算法和拉斯维加斯算法。简单的说,蒙特卡洛算法是采样越多,越近似最优解,但找到的不一定就是最优解。相反,拉斯维加斯算法是采样越多,越有可能找到最优解,也就是说找到了就是最优解,但是不保证能找到。显然,对于围棋对弈,要求在有限的采样内,必须给出一个解,不要求是最优解,但是要尽量接近。这种情况,蒙特卡洛算法是很合适的,也是各个围棋软件很常用的一个方法。
如何高效的用蒙特卡洛树搜索把策略和估值网络结合,对实际的工程水平是有很高要求的。AlphaGo选择在CPU上运行异步多线程搜索,在GPU上平行计算策略网络和估值网络。当时和李世石世纪大战的AlphaGo用了40个搜索线程,48个CPU和8个GPU。还有一个更强大的分布式版本,拥有1202个CPU和176个GPU。
作者:约翰曰不约,摘自WX科技蜘蛛《一大波Master正在靠近》)


本楼含有高级字体1楼2017-01-09 14:10回复
    具体深层的问题可能需要懂棋的计算机专家进行详细解读,在此大家了解一二即可。


    2楼2017-01-09 14:11
    回复
      人类从未停止探索的脚步,每种看似简单的应用背后,都离不开各种复杂技术的支撑。人类的智慧,也在这一次次的突破中得到升华和证明。人类不断进行技术创新,得到应用后的技术再次襄助人类,推动人类文明不断前行。。——每思及此,都会很开心:未来的一切、终是美好的呢。:)1.9


      3楼2017-01-09 14:13
      回复