AlphaGo Zero 引起巨大社会轰动

  只告诉机器围棋的基本规则,但是不告诉它人类摸索了上千年才总结出来的定式等围棋战术,让机器完全依靠自学,打败人类。这个题目不仅新鲜,而且热辣。

  上周 DeepMind AlphaGo 人工智能围棋团队的一篇新论文,题目是“Mastering the Game of Go without Human Knowledge”。

  这篇论文不仅被顶级学术期刊 Nature 发表,而且立刻被媒体反复报导,引起社会热议。

  这篇论文让人惊艳的亮点有四,

  只告诉机器围棋规则,但是不告诉它定式等等人类总结的围棋战术,也不让它读人类棋手比赛的棋谱,让机器完全自学成才。

  机器完全靠自己摸索,自主总结出了定式等等围棋战术,而且还发现了人类上千年来没有发现的定式。

  从零开始,机器自学了不到 40 天,就超越了前一版 AlphaGo(AlphaGo Master),而 AlphaGo Master 几个月前,曾以 60 : 0 的战绩,战胜了当今几乎所有人类围棋高手。

  AlphaGo Zero 的算法,比 AlphaGo Master 简练很多。

  不过,有些关于AlphaGo Zero 的评论,似乎渲染过度,把它的算法,说得神乎其神。本文尝试用大白话,通俗地解释一下 AlphaGo Zero 的算法。

  AlphaGo Zero 的算法,说来并不复杂。理解清楚 Monte Carlo Tree Search、深度学习启发函数和置信上限,这三个概念就行了。

  Monte Carlo Tree Search:不穷举所有组合,找到最优或次优位置

  围棋棋面总共有 19 * 19 = 361 个落子位置。假如电脑有足够的计算能力,理论上来说,我们可以穷举黑白双方所有可能的落子位置,找到最优落子策略。

  但是,如果穷举黑白双方所有可能的落子位置,各种组合的总数,大约是 250^150 数量级。这个数太大了,以至于用当今世界最强大云计算系统,算几十年也算不完。

  有没有不穷举所有组合,就能找到最优或者次优落子策略的算法呢?有,Monte Carlo Tree Search 就是这样一种算法。

  刚刚开始教机器下围棋的时候,机器除了规则,对围棋一无所知。让两台机器对弈,分别执黑子与白子。只要不违反规则,以均等概率,在所有合法的位置上,随意选择一个地点落子。

  黑方先行,它有 361 个合法投子位置。黑方先随机考虑一个候选位置,譬如天元(9,9)。开局是否投子在天元呢?取决于假如投子在此,是否有可能赢得胜利。如何估算赢得胜利的可能性呢?黑方模拟对局。

  假如黑方第一手投子天元,那么白方的第二手会投子哪里呢?根据均等概率的初步策略,白方有 360 个合法位置,在任何一处投子的概率均等。假如白方的第二手投子在棋盘的最边缘(0,0)。

  接下去,黑方在剩余的 359 个合法位置中,随机选择一个落子位置。接下去白方投子。如此重复,直到终局。

  完成这样一次对局模拟的过程,上限是 361 手,计算成本很低。

  假如黑白两个机器,以黑方投子天元开局,一路乱走,最终以黑方胜利。那么根据 Monto Carlo Tree Search 算法,投子天元的开局,有可能获胜,那么第一手,就真的投子天元。

  假如一路乱走,最终黑方失败,那么黑方就换一个候选位置,再次模拟对局。假如第二次模拟对局以黑方获胜,就投子在第二个位置。假如失败,那就再换到第三个候选位置,第三次模拟对局。如此重复。

  这样反复乱走,收集到了第一批棋谱,当然,这些棋谱的水平,惨不忍睹。

  水平之所以惨不忍睹,是因为 “以均等概率,在所有合法的位置上,随意选择一个地点落子” 的下棋策略。

  如何通过自学,不断改进下棋策略?

  AlphaGo Zero 用深度学习神经网络来解决这个问题。

  用深度学习网络实现启发函数

  AlphaGo Zero 用 CNN 来改进围棋投子策略。具体到 CNN 的系统架构,AlphaGo Zero 用的是 Residual 架构 ResNet。而 Residual 架构是其时任职于微软亚洲研究院的中国人 Kaiming He、Xiangyu Zhang、Shaoqing Ren、Jian Sun,于 2015 年发明的。

  ResNet 的输入是当前的棋面 S_{t} 。它的输出有两个,

  当前棋面 S_{t} 的赢率,v( S_{t} ),赢率就是最终获胜的概率,是一个数值。

  下一手投子的位置及其概率,P( a_{t+1} | S_{t} ),这是一个向量。投子的位置可能有多种,每个位置的概率不同,概率越高,说明在以往的棋谱中,经常投子在这个位置。

  用先前收集到的棋谱,来训练 ResNet,拟合输入 S_{t},以及输出 P( a_{t+1} | S_{t} ) 向量和当前棋面的赢率 v( S_{t} )。

  AlphaGo Zero 只用机器自我对弈的棋谱,来训练 ResNet。

  当然,也可以用人类棋手的棋谱来训练 ResNet。理论上来说,用人类棋手的棋谱来训练 ResNet,AlphaGo Zero 的水平,会在更短时间内,获得更快提升。

  但是,即便不用人类棋手的棋谱,只用机器自我对弈的棋谱,来训练 ResNet,在短短 40 天内,AlphaGo Zero 就已经超越人类棋手的水平。这个速度,实在让人惊艳。

  ResNet 训练好了以后,仍然用 Monte Carlo Tree Search,继续让机器自我对弈。只不过把投子的策略,从均等概率的随机投子,改为根据 ResNet 的指导,来决定下一手的投子位置。

论文配图:MCTS 使用神经网络模拟落子选择的过程

  具体策略如下,

  根据当前棋面 S_{t},让 ResNet 估算下一手可能的投子位置,a_{t+1},及其概率 P( a_{t+1} | S_{t} )。

  下一手的投子位置,a_{t+1} 有多种,每一种位置的赢率 v(S_{t+1}) ,和投子概率 P( a_{t+1} | S_{t} ) 不同。赢率和投子概率越高,得分越高。

  赢率 v(S_{t+1}) 和 投子概率 P( a_{t+1} | S_{t} ) ,是对以往棋谱的总结。而置信上限(Upper Confidence Bound,UCB ),是来鼓励探索新的投子位置,越是以往很少投子的位置,UCB( a_{t+1} ) 得分越高。

  综合考虑下一手的棋面的赢率 v( S_{t+1} ),投子概率 P( a_{t+1} | S_{t} ) ,和置信上限 UCB( a_{t+1} ),给下一手的各个投子位置打分。取其中得分最高者,来指导 Monto Carlo Tree Search,决定下一个投子的位置。

  用改进了投子策略的 Monte Carlo Tree Search,继续让机器自我对弈,这样得到更多棋谱。然后,用这些棋谱,再次训练 ResNet,提高赢率和投子概率的估算精度。如此循环重复,不断提高 ResNet 的精度。

  定式(Joseki)与投子位置热力图

  投子概率 P( a_{t+1} | S_{t} ) ,反应了下一手投子位置的热力图。各个位置被投子的概率非常不均等,其中某些位置被投子的概率,比其它位置显著地高。

  这些位置,加上前面几手的落子位置和相应的棋面,就是围棋定式(Joseki)。

论文补充材料:训练中AlphaGo Zero偏好的投子位置热力图

  AlphaGo Zero 在五天以内,就通过机器自我对弈,总结出了常见的定式。

  而人类发现这些定式,花费了几百年。

  更加令人惊艳的是,AlphaGo Zero 还发现了新的定式,而这些定式,人类迄今为止并没有发现。

  点击查看大图:在 2 小时时间限制下,AlphaGo Zero (20 个残差模块,训练 3 天) 对战 AlphaGo Lee 的 20 局,每局展示了前 100 步棋。

  总结一下,AlphaGo Zero 的算法非常简洁,Monte Carlo Tree Search + ResNet。

  与传统的 A* 算法比较一下,Monte Carlo Tree Search 只是 A* 算法中的树拓展的一种特例,而 ResNet 是 A* 算法中启发函数的一种特例。

一文读懂AlphaGo Zero算法相关推荐

  1. 一文读懂程序化交易算法交易量化投资高频交易统计利

    转 一文读懂程序化交易.算法交易.量化投资.高频交易. 统计套利 在央行发布的<中国金融稳定报告(2016)>中,对于高频交易的解释为程序化交易的频率超过一定程度,就成为高频交易.而对程序 ...

  2. 一文读懂AlphaGo背后的强化学习:它的背景知识与贝尔曼方程的原理

    作者 | Joshua Greaves 译者 | 刘畅,林椿眄 本文是强化学习名作--"Reinforcement Learning: an Introduction"一书中最为重 ...

  3. 一文读懂AlphaGo背后的强化学习

    作者 | Joshua Greaves 编译 | 刘畅,林椿眄 本文是强化学习名作--"Reinforcement Learning: an Introduction"一书中最为重 ...

  4. k均值聚类算法考试例题_一文读懂K-means聚类算法

    1.引言 什么是聚类?我们通常说,机器学习任务可以分为两类,一类是监督学习,一类是无监督学习.监督学习:训练集有明确标签,监督学习就是寻找问题(又称输入.特征.自变量)与标签(又称输出.目标.因变量) ...

  5. k means聚类算法_一文读懂K-means聚类算法

    1.引言 什么是聚类?我们通常说,机器学习任务可以分为两类,一类是监督学习,一类是无监督学习.监督学习:训练集有明确标签,监督学习就是寻找问题(又称输入.特征.自变量)与标签(又称输出.目标.因变量) ...

  6. 一文读懂约瑟夫环算法

    2020-05-25 20:13:40 作者 | 扬帆向海 责编 | 王晓曼 出品 | CSDN博客 问题描述 约瑟夫问题(有时也称为约瑟夫斯置换,是一个出现在计算机科学和数学中的问题.在计算机编程的 ...

  7. pca降维的基本思想_一文读懂 PCA 降维算法

    转自:chenbjin https://www.cnblogs.com/chenbjin/p/4200790.html 主成分分析(PCA)是一种基于变量协方差矩阵对数据进行压缩降维.去噪的有效方法, ...

  8. 一文读懂约瑟夫环算法 | 原力计划

    作者 | 扬帆向海 责编 | 王晓曼 出品 | CSDN博客 问题描述 约瑟夫问题(有时也称为约瑟夫斯置换,是一个出现在计算机科学和数学中的问题.在计算机编程的算法中,类似问题又称为约瑟夫环.又称&q ...

  9. 一文读懂朴素贝叶斯分类算法

    因为毕业论文是和贝叶斯理论相关的内容,今天恰巧看到一篇朴素贝叶斯分类算法的文章,写的非常通俗易懂,再结合另外一篇CNN的文章,在这里梳理一下,来帮助自己的理解. 朴素贝叶斯算法是基于朴素贝叶斯定理的一 ...

  10. 技术原创|一文读懂图遍历算法以及图计算应用

    为解决大规模计算和海量数据处理问题,Google 在 2010 年提出了图计算模型 Pregel.随后又陆续出现了.GraphLab.GraphChi等典型图计算系统. 图计算是人工智能的一个使能技术 ...

最新文章

  1. VC++中GlobalAlloc()、malloc()和new()函数之间区别
  2. 你知道i=i++;的含义吗?原理其实没有你想的那么简单
  3. 金华职业技术学院计算机应用技术分数线,金华职业技术学院录取分数线2021是多少分(附历年录取分数线)...
  4. 田沄(1980-),男,博士,中国工程院—清华大学联合博士后科研工作站博士后,北京师范大学副教授....
  5. OpenJudge NOI 1.1 10:超级玛丽游戏
  6. 天津计算机本科学校有哪些专业吗,天津哪些大学有人工智能专业
  7. [Java] 蓝桥杯ALGO-119 算法训练 寂寞的数
  8. 利用Power Designer反向数据库结构
  9. idea主题风格设置
  10. python websocket服务器端_python实现websocket服务器
  11. 股票涨跌速率对应操作策略和后市走势分析
  12. 《人机交互技术》第二章 感知和认知基础
  13. 工业触摸一体机的触摸屏原理和维护
  14. cinta作业5:循环群
  15. python 缩放图片_python实现按长宽比缩放图片
  16. python 正则 匹配任意字符串_python中正则匹配
  17. python gevent async_谈谈Python协程技术的演进
  18. 线性表操作(线性表)
  19. Thymeleaf select 实现默认选中,使用 th:field 字符串无效问题
  20. Swift之网络编程-网络监测

热门文章

  1. 使用拟合方法实现光敏电阻传感器数值与光照强度的近似转换
  2. 射频功率放大器 RF放大器概念
  3. 内存引起的蓝屏问题排查
  4. java读取txt文件入库_java读取txt文件批量入库
  5. vue项目中通过图片url下载图片
  6. 驱动级音效增强软件Dolby Home Theater V4
  7. 数据结构 实验1——一元多项式的表示与相加
  8. 面向对象系统分析与设计
  9. 无人深空java修改器,无人深空next存档修改-无人深空next存档修改器下载v1.5.0最新版-西西软件下载...
  10. SU插件情报局 | SUBD(细分曲面)详细中文介绍