本文转载自(微信公众号:CKDD),作者郑宇 张钧波,仅作学习收录之用,不做商业目的。

近期AlphaGo在人机围棋比赛中连胜李世石3局,体现了人工智能在围棋领域的突破,作为人工智能领域的工作者,我们深感欣慰。其实质是深度学习网络(CNN)跟蒙特卡罗搜索树(MCTS)结合的胜利,是人类智慧的进步。不少所谓的“砖”家开始鼓吹机器战胜人类、甚至人类将被机器统治等无知言论,让人实在看不下去。作为围棋爱好者和人工智能领域工作者,我们觉得是时候跟大家讲讲AlphaGo的原理及其弱点了。
可以很负责任的告诉大家,AlphaGo还没有完全攻克围棋这个难题,职业棋手也并非没有希望赢Go了,更不能说机器战胜了人类。AlphaGo未来需要走的路还很长。如果有中国职业棋手想挑战AlphaGo,我们愿意为其组建最顶尖(且懂围棋)的人工智能专家顾问团,助其取胜AlphaGo。
虽然网上技术贴不少,但还没有一篇文章完全讲清楚AphaGo的原理,Nature上刊登的文章也缺乏一张刨解全局的图(加之用英文描述,同学们很难理解透彻)。以下是我跟微软亚洲研究院的张钧波博士在多次阅读原文并收集了大量其他资料后,一起完成的一张图,解释了AlphaGo的原理,看完后大家自然知道其弱点在何处了。

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

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

离线学习过程分为三个训练阶段。
• 第一阶段:利用3万多幅专业棋手对局的棋谱来训练两个网络。一个是基于全局特征和深度卷积网络(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上进行跟深入的搜索。为了在一定的时间内有结果,只能放弃搜索精度。
  2. 攻其价值网络,万劫不复:AlphaGo的价值网络极大的提高了之前单纯依靠MCTS来做局势判断的精度,但离准确判断围棋局势还有不小的差距。神经网络还不能完全避免在某些时候出现一些怪异(甚至错误)的判断,更何况其训练样本还远远不足。这也是为什么有了价值网络还仍然需要依靠快速走棋来判断局势。大家都曾经怀疑过AlphaGo的打劫能力,也感觉到了AlphaGo有躲避打劫的迹象。实际上南京大学的周志华教授曾经撰文指出打劫会让价值网络崩溃的问题,原理不再重复。总之打劫要乘早,太晚了搜索空间变小,即便价值网络失效,还可以靠快速走棋网络来弥补。开劫应该以在刚刚进入中盘时期为好(太早劫财还不够),并切保持长时间不消劫,最好在盘面上能同时有两处以上打劫。没有了价值网络的AlphaGo其实水平也就职业3段左右。

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

解读AlphaGo的原理及弱点相关推荐

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

    一张图解AlphaGo原理及弱点 2016-03-23 郑宇,张钧波 CKDD 作者简介: 郑宇,博士, Editor-in-Chief of ACM Transactions on Intellig ...

  2. AlphaGo的原理

    转载申明:最近在看AlphaGo的原理,刚好在 https://blog.csdn.net/a1805180411/article/details/51155164 发现了这篇文章,感觉写的非常好,好 ...

  3. 深入解读RabbitMQ工作原理及简单使用

    深入解读RabbitMQ工作原理及简单使用 RabbitMQ系列目录 RabbitMQ在Ubuntu上的环境搭建 深入解读RabbitMQ工作原理及简单使用 Rabbit的几种工作模式介绍与实践 Ra ...

  4. 详细解读Ian Goodfellow ICCV2017演讲PPT《解读GAN的原理与应用》

    详细解读Ian Goodfellow ICCV2017演讲PPT<解读GAN的原理与应用> 转自: @TOChttps://blog.csdn.net/qq_40667584/articl ...

  5. 深入解读 MySQL 底层原理,让性能“飞起来”的方法总结

    前两天看到字节一个老哥写的帖子,提到高阶开发者必须掌握的技能,其中他明确提出了"精通MySQL". 为啥MySQL对开发人员如此重要? 第一,不管你去面试哪家公司,数据库是必问项, ...

  6. 卷积神经网络模型解读及数学原理 ——翻拍图片识别

    目录 一.需求背景 二.知识储备 1.深度学习 2.卷积神经网络 3.PyTorch框架 4.张量 5.梯度下降法 三.模型解读 1.输入层 2.隐藏层 1)卷积层 2)激活函数 3)池化层 4)流向 ...

  7. Spark源码解读之Shuffle原理剖析与源码分析

    在前面几篇文章中,介绍了Spark的启动流程Spark内核架构流程深度剖析,Spark源码分析之DAGScheduler详解,Spark源码解读之Executor以及Task工作原理剖析,Spark源 ...

  8. 得到app文稿导出_得到app每天听本书,成甲解读《金字塔原理》

    核心内容 第一,什么是金字塔原理: 第二,用金字塔原理来组织思想的方法: 第三,如何让别人对你的观点感兴趣. 前言 你好,欢迎每天听本书.今天我们解读的书是<金字塔原理>,副标题是&quo ...

  9. Nat.Mach.Intell.| DEcode:深度学习解读差异基因表达原理

    今天给大家介绍拉什大学的Shinya Tasaki 等人在Nature Machine Intelligence上发表的文章"Deep learning decodes the princi ...

最新文章

  1. 0607am抽象类接口析构方法tostring小知识点
  2. idea使用git插件,出现冲突了怎么解决?多场景分析助你解决问题
  3. java win10 32,Win10 同时安装64位和32位的JDK
  4. 下采样downsample代码
  5. python闭环最短路径_深度学习经典算法 | 蚁群算法解析
  6. document.all和document.layers
  7. 【转】ABP源码分析二十九:ABP.MongoDb
  8. 虚拟云服务器有哪些,虚拟云主机和服务器有什么区别
  9. c语言方向变量,C语言,变量与内存
  10. C# 抗变与协变的理解
  11. matlab矩阵元素绝对值,如何解决矩阵内部元素绝对值化
  12. 计算机验收标准和验收方法,【超详细】综合布线系统验收标准及内容
  13. 2022电大国家开放大学网上形考任务-简明中国古代史(山东)非免费(非答案)
  14. ajax hover,jQuery / 使用hover()和toggle()切换事件 - 汇智网
  15. 三极管的基础知识(下)②
  16. 台式计算机能装蓝牙吗,台式电脑没有蓝牙功能怎么安装
  17. R︱sparkR的安装与使用、函数尝试笔记、一些案例
  18. 【PTA乙级】【1096 大美数 (15 分)】
  19. uni-app运行在手机或模拟器上(使用雷电模拟器)
  20. GPU底层技术、全球市场格局分析

热门文章

  1. 思念是一种病(转载)
  2. 【开源】【教程】手把手教你用mycobot Pro 600机械臂作画
  3. 新版危险废物标签二维码制作教程
  4. 教幼儿园孩子计算机知识,幼儿园大班计算机课程教学计划
  5. 创作风格化的3d角色插图视频教程
  6. 如何关闭市计算机休眠,电脑怎么取消休眠?关闭休眠命令是什么?
  7. ROS2机器人笔记21-02-23
  8. lol个服务器在线人数,玩家多到爆!传《英雄联盟》国服最高在线人数超过200万...
  9. 痞子衡嵌入式:轻松为i.MXRT设计更新Segger J-Link Flash下载算法文件
  10. libcad.so Crack,转换为多种文件格式