(转) 一张图解AlphaGo原理及弱点

一张图解AlphaGo原理及弱点

2016-03-23 郑宇,张钧波 CKDD

作者简介:

郑宇,博士, Editor-in-Chief of ACM Transactions on Intelligent Systems and Technology, ACM数据挖掘中国分会秘书长。

 

张钧波,博士,ACM数据挖掘中国分会会员,从事深度神经网络相关研究。

 

--------------------------------------

 

 

近期AlphaGo在人机围棋比赛中连胜李世石3局,体现了人工智能在围棋领域的突破,作为人工智能领域的工作者,我们深感欣慰。其实质是深度学习网络(CNN)跟蒙特卡罗搜索树(MCTS)结合的胜利,是人类智慧的进步。不少所谓的“砖”家开始鼓吹机器战胜人类、甚至人类将被机器统治等无知言论,让人实在看不下去。作为围棋爱好者和人工智能领域工作者,我们觉得是时候跟大家讲讲AlphaGo的原理及其弱点了。

 

可以很负责任的告诉大家,AlphaGo还没有完全攻克围棋这个难题,职业棋手也并非没有希望赢Go了,更不能说机器战胜了人类。AlphaGo未来需要走的路还很长。如果有中国职业棋手想挑战AlphaGo,我们愿意为其组建最顶尖(且懂围棋)的人工智能专家顾问团,助其取胜AlphaGo

 

虽然网上技术贴不少,但还没有一篇文章完全讲清楚AphaGo的原理,Nature上刊登的文章也缺乏一张刨解全局的图(加之用英文描述,同学们很难理解透彻)。以下是我跟张钧波博士在多次阅读原文并收集了大量其他资料后,一起完成的一张图,解释了AlphaGo的原理,看完后大家自然知道其弱点在何处了。

 

图1、AlphaGo的原理图 (作者为本图花费大量心血,版权归两位作者所有,欢迎转发,但请勿盗图)

 

AlphaGo总体上包含离线学习(图1上半部分)和在线对弈(图1下半部分)两个过程。

离线学习过程分为三个训练阶段。

  • 第一阶段:利用16万多幅专业棋手对局的棋谱来训练两个网络。一个是基于全局特征和深度卷积网络(CNN)训练出来的策略网络(Policy Network)。其主要作用是给定当前盘面状态作为输入,输出下一步棋在棋盘其它空地上的落子概率。另一个是利用局部特征和线性模型训练出来的快速走棋策略(Rollout Policy)。策略网络速度较慢,但精度较高;快速走棋策略反之。

     

  • 第二阶段:利用第t轮的策略网络与先前训练好的策略网络互相对弈,利用增强式学习来修正第t轮的策略网络的参数,最终得到增强的策略网络。这部分被很多“砖”家极大的鼓吹,但实际上应该存在理论上的瓶颈(提升能力有限)。这就好比2个6岁的小孩不断对弈,其水平就会达到职业9段?

     

  • 第三阶段:先利用普通的策略网络来生成棋局的前U-1步(U是一个属于[1, 450]的随机变量),然后利用随机采样来决定第U步的位置(这是为了增加棋的多样性,防止过拟合)。随后,利用增强的策略网络来完成后面的自我对弈过程,直至棋局结束分出胜负。此后,第U步的盘面作为特征输入,胜负作为label,学习一个价值网络(Value Network),用于判断结果的输赢概率。价值网络其实是AlphaGo的一大创新,围棋最为困难的地方在于很难根据当前的局势来判断最后的结果,这点职业棋手也很难掌握。通过大量的自我对弈,AlphaGo产生了3000万盘棋局,用来训练价值网络。但由于围棋的搜索空间太大,3000万盘棋局也不能帮AlphaGo完全攻克这个问题。

 

在线对弈过程包括以下5个关键步骤:其核心思想实在蒙特卡罗搜索树(MCTS)中嵌入了深度神经网络来减少搜索空间。AlphaGo并没有具备真正的思维能力。

  1. 根据当前盘面已经落子的情况提取相应特征;
  2. 利用策略网络估计出棋盘其他空地的落子概率;
  3. 根据落子概率来计算此处往下发展的权重,初始值为落子概率本身(如0.18)。实际情况可能是一个以概率值为输入的函数,此处为了理解简便。
  4. 利用价值网络和快速走棋网络分别判断局势,两个局势得分相加为此处最后走棋获胜的得分。这里使用快速走棋策略是一个用速度来换取量的方法,从被判断的位置出发,快速行棋至最后,每一次行棋结束后都会有个输赢结果,然后综合统计这个节点对应的胜率。而价值网络只要根据当前的状态便可直接评估出最后的结果。两者各有优缺点、互补。
  5. 利用第四步计算的得分来更新之前那个走棋位置的权重(如从0.18变成了0.12);此后,从权重最大的0.15那条边开始继续搜索和更新。这些权重的更新过程应该是可以并行的。当某个节点的被访问次数超过了一定的门限值,则在蒙特卡罗树上进一步展开下一级别的搜索(如图2所示)。


    图2、MCTS拓展下一级节点

 

AlphaGo的弱点在哪里?

  1. 攻其策略网络,加大搜索空间。进入中盘后,职业选手如能建立起比较复杂的局面,每一步棋都牵连很多个局部棋的命运(避免单块、局部作战),则AlphaGo需要搜索空间则急剧加大,短时间内得到的解的精度就会大打折扣。通俗地说,非常复杂的变化,人算不清楚,现阶段计算机的计算力更没办法。李世石九段的第四局棋就有这个意思。此处左右上下共5块黑白棋都相互关联到一起,白1下后,黑棋需要考虑很多地方。很多地方都需要在MCTS上进行更深入的搜索。为了在一定的时间内有结果,只能放弃搜索精度。

    图3、李世石对AlphaGo第四盘棋棋谱

     

  2. 攻其价值网络,万劫不复:AlphaGo的价值网络极大地提高了之前单纯依靠MCTS来做局势判断的精度,但离准确判断围棋局势还有不小的差距。神经网络还不能完全避免在某些时候出现一些怪异(甚至错误)的判断,更何况其训练样本还远远不足。这也是为什么有了价值网络还仍然需要依靠快速走棋来判断局势。大家都曾经怀疑过AlphaGo的打劫能力,也感觉到了AlphaGo有躲避打劫的迹象。实际上南京大学的周志华教授曾经撰文指出打劫会让价值网络崩溃的问题,原理不再重复。不能说AlphaGo不会打劫,而是害怕在棋局早期的多劫并存。即,打劫要乘早,太晚了搜索空间变小,即便价值网络失效,还可以靠快速走棋网络来弥补。开劫应该以在刚刚进入中盘时期为好(太早劫财还不够),并且保持长时间不消劫,最好在盘面上能同时有两处以上打劫。没有了价值网络的AlphaGo其实水平也就职业3-5段左右。

 

结束语

  • AlphaGo已经达到了顶尖棋手的水平,但还不能说彻底打败了人类!
  • AlphaGo体现了人类智慧的进步,但其本身并没有思维和智慧!
  • 数据+计算资源+计算方法 共同推动了人工智能在围棋项目的进步!

 

 

长按以下二维码关注KDD China

阅读原文

 



微信扫一扫
关注该公众号

时间: 2024-07-30 12:29:39

(转) 一张图解AlphaGo原理及弱点的相关文章

图解Alphago原理

电脑是下围棋要做些什么 如何决定下一步是最优的,最原始的方法是这样的- 然后,悲剧了,搜索空间如宇宙星空 OK,来看看Alphago怎么搞的 关键是降低搜索广度与深度 假如.... 又假如... 那Alphago是怎么搞的?构建两种专家模型:落子预测器 +棋盘价值评估器 两个专家模型使用深度学习技术,论文上称政策网络(policy network)+价值网络(value network) 最后看看如何Alphago下棋吧,Alphago打的是组合拳:蒙特卡洛搜索树+政策网络+价值网络共同作用:

【JAVA秒会技术之秒懂HTTPS】白话图解HTTPS原理

白话图解HTTPS原理         [前言]最近看过几篇文章,内容是关于"全民HTTPS"的.为什么HTTPS,突然会受到如此多业内人士的青睐呢?HTTPS究竟是什么呢?它与HTTP又有怎样的区别呢?     带着这个问题,我查看了很多网上的资料,但是太多的专业词汇,让我感到头疼,很难理解.按我个人的认知,这个世界上根本不存在任何高深的道理,尤其是西方讲究科学性的思维,再高深,也不可能高深过中国传统思想中的八个字"只可意会,不可言传",完全不该诉你,让你自己去领

图解mapreduce原理和执行过程

说明: &http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   下面的图来自南京大学计算机系黄宜华老师开设的mapreduce课程的课件,这里稍作整理和 总结. 本文旨在对接触了mapreduce之后,但是对mapreduce的工作流程仍不是很清楚的人员,当然包括博主自己,希望与大家一起学习. mapreduce的原理 MapReduce借鉴了函数式程序设计语言Lisp中的思想,Lisp(List processin

阿里技术协会(ATA)11月系列精选文集

JAVA核心技术 1.面向GC的Java编程 2.JVM飙高排查脚本-结构分析 3.理解Java NIO 4.杜绝假死,Tomcat容器做到自我保护,设置最大连接数 5.Groovy与Java集成常见的坑 6.java 深拷贝探讨 分布式计算 1.jstorm 介绍 2.Spark的调度策略详解 3.生活中的Paxos,原来你我都在使用--对Paxos生活化的解读(一) 4.生活中的Paxos,原来你我都在使用--对Paxos生活化的解读(二) 5.消息中间件MetaQ高性能原因分析 大数据 1

listview的工作原理

       /**       * Unsorted views that can be used by the adapter as a convert view.       */       private ArrayList<View>[] mScrapViews;          private int mViewTypeCount;          private ArrayList<View> mCurrentScrap;          /**       

Android开发中通过源码彻底理解ListView工作原理【超详细】

ListView控件是Android应用开发中原生控件中最复杂,但是又相当的重要,当应用程序要处理很多内容而且屏幕无法公完全显示的时候,ListView就可以发挥其作用了,他可以滑动手指就能把超出屏幕的部分内容移动显示到屏幕中. ListView还有一个非常神奇的功能,即使在ListView中加载非常非常多的数据,比如达到成百上千条甚至更多,ListView都不会发生OOM或者崩溃,而且随着我们手指滑动来浏览更多数据时,程序所占用的内存竟然都不会跟着增长.那么ListView是怎么实现这么神奇的

理解Javascript_11_constructor实现原理_javascript技巧

constructor是什么 简单的理解,constructor指的就是对象的构造函数.请看如下示例: 复制代码 代码如下: function Foo(){}; var foo = new Foo(); alert(foo.constructor);//Foo alert(Foo.constructor);//Function alert(Object.constructor);//Function alert(Function.constructor);//Function 对于foo.con

深入浅出谷歌人工智能围棋“大脑”

在象棋和国际象棋中,电脑软件都非常厉害,只有围棋是唯一"电脑下不过人类"的项目.而今年1月份有个爆炸性新闻:谷歌DeepMind开发的人工智能围棋程序AlphaGo以5:0的压倒性优势击败了欧洲围棋冠军.专业二段棋手.那么3月份AlphaGo会和韩国九段.世界冠军李世石进行对弈.如果此役AlphaGo获胜,这意味着人工智能真正里程碑式的胜利. 这也引起了笔者好奇心,在春节期间,跟Facebook的田渊栋(他的背景无可挑剔,卡耐基梅隆大学机器人系博士,Google X 无人车核心团队,F

骆驼鼻孔激发沙漠造林

     最近科学家们受到骆驼鼻孔的启发,试图完成一项"异想天开"的计划--在沙漠里面种植一片人造森林.这项计划预算大概要耗费330万英镑,准备在卡塔尔建造一个超大型的露天温室,在这个温室里面可以种植多种植物,使之形成一个完整的.生机勃勃的植物生态系统.    难以置信的是这样一个复杂的生态系统却将建立在地球上最不适宜居住的地方,更加让人匪夷所思的是这一项计划的灵感却得益于骆驼这种驼背哺乳动物的鼻子.科 学家们打算借助自然力量来完成这个项目--"撒哈拉森林"计划.按