没错,这是一篇标题党文章!!高能预警!!!
相信最近大家又双叒叕被AlphaGo刷屏了,这是当天的朋友圈:
image.png
各位同学在十九大学习之余还偷偷关注AlphaGo,厉害之极。
这次的AlphaGo之所以引起极大的轰动,还是因为只用了4个TPU,花三天时间自学,就100:0战胜了之前完胜李世石的AlphaGo,经过40天的训练,则可以打败与柯洁下棋时的AlphaGo。关键是这次的AlphaGo完全是从0开始,不使用人类之前的任何经验和数据,无师自通,左右互搏完成了升级。形象点类比大概就是一个围棋白痴自学了三天,然后打败了学习过各种棋谱、汲取人类几乎全部经验的高手。
人类太多余了
“人类太多余了”,这是天才棋手柯洁的评价。那是否AlphaGo真的伟大到全面碾压人类了呢,看了Facebook田渊栋到一段话,印象深刻:
让我非常吃惊的是仅仅用了四百九十万的自我对局,每步仅用1600的MCTS rollout,Zero就超过了去年三月份的水平。并且这些自我对局里有很大一部分是完全瞎走的。这个数字相当有意思。想一想围棋所有合法状态的数量级是10^170(见Counting Legal Positions in Go),五百万局棋所能覆盖的状态数目也就是10^9这个数量级,这两个数之间的比例比宇宙中所有原子的总数还要多得多。仅仅用这些样本就能学得非常好,只能说明卷积神经网络(CNN)的结构非常顺应围棋的走法,说句形象的话,这就相当于看了大英百科全书的第一个字母就能猜出其所有的内容。
当然个人对于其最后到类比持保留态度,但是足以说明了AlphaGo到学习速度之惊人。
AlphaGo学习能力这么强,那是否可以在其他方面也快速发展,势如破竹地碾压人类呢,看下围棋有什么特点:棋局信息完全透明,也就是是AlphaGo可以轻易获得所有信息,二是围棋可以通过模拟对弈,快速得到结果信息,验证算法。围棋的这些条件在很多事情的处理中是难以达到的,AlphaGo想要在其他方面有所突破,也许还有很长的路。
AlphaGo如何下棋
以上说了那么多,作为程序员,总还是要说点有用的信息。当然,以下的内容也主要是在搜集资料的基础上,加上了一些自己的理解。
首先来看看AlphaGo是如何来认识围棋,如何下棋的。人类在下围棋的时候首先查看当前棋局,然后分析局势落子完成一步。AlphaGo也是这样,计算机认识到的棋局是一个19*19=361的一个矩阵,矩阵中的每个点可以是黑子(用-1表示)、白子(用1表示)、无子(用0表示)。用一个向量来表示当前棋局则是:
落子也可以用一个361维向量来表示,落子的位置用1表示,其他为0:
AlphaGo要解决的问题就是识别棋局,然后选择一个最佳落子位置。AlphaGo识别棋局并不难,只是拿到一个矩阵即可。难点在于如何选择落子位置 ,最容易想到的当然是寻找棋谱,学习前人的经验。也就是需要有大量的样本供AlphaGo训练。目前来说深度卷积神经网络(Convolutional Neural Networks )是一个非常好的选择。通过对大量的人类棋谱进行训练,得到的结果就是可以根据当前的棋盘状态,选择一个最佳的落子位置,用公式可以表示为:
但是这个训练有一个问题,因为需要大量的样本,不免拿到的棋谱可能会有一些比较差的棋局,训练出来的AlphaGo可能只是一个普通水平的棋手。
模特卡洛搜索树
如何在此基础上强化学习呢,之前已经有了一个围棋电脑程序CrazyStone,它采用了模特卡洛搜索树。模特卡洛搜索树简单来说就是摒弃人类的棋谱,采用随机落子的方式,模拟围棋直到判出胜负,然后把胜利一方的落子方式记下来。通过大量的模拟,得到每种状态下的最佳落子方式。可以说这是一种愚公移山的方式,但是确实奏效了。
我们知道围棋的合法状态非常多,如果单纯采用模特卡洛搜索树的方式,随机落子,可能产生的一些棋局是显而易见的臭棋。AlphaGo改进了方式,决定采用之前训练的结果:
来代替随机落子。
但是如果完全采用上述方式代替随机落子,样本数又会大大减少,这样训练出来的Alpha可能会有很多的棋局是没有训练过的,于是采用一定的策略增加一些随机落子。
强化学习
对于强化学习(Reinforcement learning),它是机器学习的一个分支,特别善於控制一只能够在某个环境下自主行动的个体 (autonomous agent),透过和环境之间的互动,例如 sensory perception 和 rewards,而不断改进它的 行为。
参考强化学习的思路,AlphaGo设计一个评价函数,即在模拟棋局还没有完成时,判断此时的胜率。这样的好处是可以不用完成所有的搜索,即进行剪枝,提高搜索效率。
AlphaGo Zero
AlphaGo Zero中放弃了使用
即放弃了人类的围棋经验积累,采用了深度神经网络来作为模特卡洛搜索算法的落子参照。通过这种增强的强化学习算法,不断优化神经网络的参数,最终训练出了强大的AlphaGo。
总结
综上所述,就是AlphaGo 从入门到深入理解的全部内容……看完文章,估计只有一个概念性的了解,欢迎大家去文后的参考资料中详细学习,如果有任何问题,欢迎给我留言(自己去查资料就好,我也不懂。那为啥标题还敢带深入理解字样,借用媳妇儿的一句话:装B我最行)。
参考材料:
今日Nature: 人工智能从0到1, 无师自通完爆阿法狗100-0 | 深度解析
人类太多余?且慢,先听AI科学家详解AlphaGo Zero的伟大与局限
深入浅出看懂AlphaGo如何下棋
深入浅出看懂AlphaGo元
与cup-xxx的聊天记录
网友评论