AlphaGo主要包括四个部分:策略网络、价值网络、快速走子网络、蒙特卡罗树搜索,其中包含三个神经网络需要KGS专家棋谱数据集和数月训练时间。

AlphaGo Zero在上述基础上降低神经网络结构复杂性,将原先两个独立结构的策略网络和价值网络合为一体并舍弃了快速走子网络,形成一个共享神经网络,在该共享神经网络中,从输入层到中间层的权重是完全共享的,最后的输出阶段分为策略函数输出和价值函数输出。此外,与AlphaGo将快速走子网络替换随机模拟不同的是,AlphaGo Zero将神经网络得到的结果替换为随机模拟,从而在提升学习速率的同时,增强了神经网络估值的准确性。

先简单回顾一下AlphaGo的三个神经网络的结构。

策略网络学习的对象是利用围棋知识从当前盘面中提取的多个特征矩阵, 这其中包括棋盘各点上的棋子颜色、现在各点气的情况、所有合法点的位置等等,除此之外每个盘面都有一个标示,这个标示标记了该盘面下一步棋手是如何落子的。在训练过程中,训练者建立好13层的策略网络模型之后,将特征矩阵作为输入投入到计算中,经过每一层的计算最终得到程序预测的该盘面下一步走棋的位置,在这之后程序将预测到的位置与该盘面的标示进行比较,再根据比较结果对每一层网络的参数进行更新,如此周而复始的进行多次计算后最终得到的策略网络便具有了一般棋手的棋感直觉。

除此之外,AlphaGo又训练了一个快速走子网络。这个网络与策略网络具有基本相似的结构,不同的是该网络输入的从盘面提取的特征矩阵更少,并且将策略网络中一些复杂的网络结构简化为简单的线性结构,使网络更加简单,计算也更加快速。快速走子网络的准确率只有24.2%,但是它的计算时间比策略网络小三个数量级。

价值网络模型是AlphaGo训练通道的最后一个步骤。这个网络的数据集是利用强化后的策略网络进行三千万盘的自我博弈形成的棋谱,通过学习三千万盘棋的胜负结果进行学习和更新,从而获取在围棋盘面的胜负棋感。价值网络的输入与策略网络基本相同,不过在策略网络的基础上又添加了现在要走子的颜色这一特征矩阵,价值网络的网络结构也是在策略网络的基础上加入了一个卷积网络层与两个全连接层,在经过15层的网络训练之后价值网络将输出对当前该盘面胜负的预测。

再来看看AlphaGo Zero中一个共享神经网络的结构。

AlphaGo Zero的深度神经网络结构输入数据为19*19*17的张量,具体表示为本方最近8步内的棋面和对方最近8步内的棋面,以及本方执棋颜色。所有张量取值都为{0,1},即二元数据。前16个二维数组型数据直接反映黑白双子对弈距今的9个回合内的棋面信息,以1表示本方已落子状态,0表示对方已落子或者空白状态。而最后1个的19*19二维数组用全部元素置0,表示执棋方为白方,置1表示执棋方为黑方。

输入层由256个3*3步长为1的卷积核构成的卷积层经过批归一化处理,以ReLU作为激活函数输出。

中间层为256个3*3步长为1的卷积核构成的卷积层,经过再次批归一化处理,由输入部分产生的直连接信号作用一起进入到ReLU激活函数。

输出部分有两个,一部分为策略输出,含有两个1*1卷积核、步长为1的卷积层,同样经过批归一化和函数激活处理,再连接神经元个数为19*19(棋盘交叉点总数)+1(放弃走子:pass move)=362个线性全连接层。使用对数概率对所有输出节点作归一化处理,转换到[0,1]之间;另一部分为估值输出,含1个1*1卷积核、步长为1的卷积层,经批归一化和ReLU函数激活处理和全连接层,最后再连接一个激活函数为Tanh的全连接层,该层只有一个输出节点,取值范围为[-1,1]。

神经网络还引入残差结构,采用基于残差网络结构的模块进行搭建,用更深的神经网络进行特征提取,从而在更加复杂的棋局中进行学习。深度残差网络由多层“残差单元”堆叠而成,通式为:y(l)=h(xl)+F(xl,Wl),x(l+1)=f(y1)。Wl是神经网络权值,y(l)是中间输出,xl和x(l+1)分别是第l个单元的输入和输出,F是一个残差函数,h是恒等映射,f为常用的ReLU激活函数。残差网络与其他卷积型前向神经网络的最大不同在于多了一条跨层传播的直连接通路,是的神经网络在进行前向传播和后向传播时,传播信号都能从一层直接平滑地传递到另一层。

此外,AlphaGo Zero的神经网络权值完全随机初始化。AlphaGo Zero不利用任何人类专家的经验或数据,随机初始化神经网络的权值进行策略选择,最后使用深度强化学习进行自我博弈和提升,不需要先验知识和人工设计特征,而是仅利用棋盘上的黑白棋子的摆放情况作为原始数据输入到神经网络中,以此得到结果。由网络结构的简化则其对硬件资源需求更少,只需要单机四块TPU就可以完成,学习时间更短,棋力提升更快。

AlphaGo Zero中的蒙特拉罗树搜索

简言之,AlphaGo Zero将原来的四个阶段合并成三个阶段,将原来的展开阶段和评估阶段合并成同一个阶段,搜索过程具体为选择阶段、展开与评估阶段、回传阶段。最后通过执行阶段选择落子位置。

1.  选择阶段

假定搜索树的根节点为s0,从根节点到叶子节点st需要经过的路径长度为L。在L路径上的每一步中,根据当前时刻的搜索树的储存情况,at=arg max(Q(st,a)+U(st,a)),选择值对应当前状态st的最大动作值作为搜索路径。

2.  展开与评估阶段

在搜索树的叶子节点,进行展开与评估。当叶子节点处于状态st时,由神经网络fθ得到策略输出pl与估值输出vl,然后初始化一个边的四元集:N(st,a)=0,W(st,a)=0,Q(st,a)=0,P(st,a)=pl。

3.  回传阶段

当展开与评估阶段完成后,搜索树中各个节点连接边的信息都已经得到,此时需要将搜索后所得最新结构由叶子节点会传到根节点上进行更新,访问次数N(st,at)、动作累计值W(st,at)、动作平均值Q(st,at)的更新方式如下:

N(st,at)=N(st,at)+1

W(st,at)=W(st,at)+vl

Q(st,at)=W(st,at)/N(st,at)

4.  执行阶段

经过1600次蒙特卡洛树搜索,树中的各边存储着历史信息,根据这些信息用模拟退化算法可以得到落子概率分布π(a | s0)。在执行完落子动作后,当前搜索树的扩展子节点及子树的历史信息会被保留,而扩展子节点的所有父节点信息都会被删除,在保留历史信息的前提下减少搜索树所占内存空间。最终以扩展节点作为新的根节点,为下一轮蒙特卡洛树搜索做准备。当根节点的估值输出小于指定阈值则认输处理,意味着棋局结束。

所谓大道至简,用它来形容AlphaGo Zero 可能不太准确,但他确实另辟蹊径,简化算法,将三个网络模型缩减成一个,将四个阶段搜索减为三个,摆脱了冗余方法的束缚,轻装上阵,去繁留简,完全通过自学产生的数据并逐渐提升性能,自学产生的数据取之不尽,用之不竭,并且伴随着智能体水平的提高,产生的样本质量也会随之提高,最终AlphaGo Zero的棋力要远高于AlphaGo,成为围棋领域的一代宗师。

大道至简——AlphaGo Zero的减法生存相关推荐

  1. 大道至简第七第八章读后感

    大道至简第七第八章读后感 "王不如远交而近攻,得寸,则王之寸:得尺,亦王之尺也."--<战国策.秦策> 此话说的是大王您还不如和远方的国家结盟,而进攻近距离的国家,这样 ...

  2. 一位期货人的总结:大道至简,悟者大成

    一位期货人的总结:大道至简,悟者大成 2018-05-07 15:38期货/成功学 做期货这么长时间了,我从现在开始会把我在日常操作中的一些感悟,和看到的一些投资者的感悟陆续总结出来,如果大家看完后能 ...

  3. 人生的极致:大道至简 知行合一

    人生的极致:大道至简 知行合一 2017-06-11 22:32 来源:李桂江 原标题:人生的极致:大道至简 知行合一 大道至简,知易行难,知行合一,得到功成,大道至简,悟在天成. 一门技术一门学问, ...

  4. 大道至简——RISC-V架构之魂(中)

    本文为<RISC-V CPU设计>专栏和<RISC-V嵌入式软件开发>专栏系列文章之一. 注:本文节选自"硅农亚历山大"所著国内第一本系统介绍CPU与RIS ...

  5. 【model 1.0 】大道至简

    Think: 在老子<道德经>中有这样一句话:"万物之始,大道至简,衍化至繁". 为什么"大道至简"呢? 1.人人都是认知吝啬鬼. 在<超越智 ...

  6. 《大道至简》读后感(伪代码)

    public class 伪代码{ bool 愚公移山() { //项目沟通的基本方式:惩山北之塞: //项目的目标:毕力平险,指通豫南,达于汉阴 //技术方案: 扣石垦壤,簸箕运于渤海之尾 bool ...

  7. vim 键盘宏操作 -- 大道至简

    最近利用vim做一些文本处理时 发现vim 支持的键盘宏是一个好东西啊,高效优雅得处理大量需要重复性操作的文本,让人爱不释手!!! 希望接下来对键盘宏的分享能够实际帮助到大家. 后文中描述的一些vim ...

  8. 大道至简第一章读后感

    当今社会,信息化飞速发展,软件的需求也越来越高,而<大道至简>给我们点透了编程的精义. 大道至简第一是讲的便是编程的精义,文章借愚公移山这个故事来阐释编程的基本思路:出现一个问题(惩山北之 ...

  9. IT一大道至简: 文章列表

    欢迎关注微信公众号:IT一大道至简 07期:<实现兼容IE9+的svg截图和异步下载功能> 摘要: 一起来探索如何实现兼容IE9+的svg截图和异步下载功能,并借此来了解web截图实现方案 ...

最新文章

  1. Cacti 显示自定义的 SNMP 数据
  2. java饿汉式有啥作用,Java面试 - 什么是单例设计模式,为什么要使用单例设计模式,如何实现单例设计模式(饿汉式和懒汉式)?...
  3. 字节跳动教育业务怎么样_[财经]字节跳动教育品牌叫什么名字?大力教育怎么样? - 南方财富网...
  4. 【深度学习】神经网络模型特征重要性可以查看了!!!
  5. 开源SQL-on-Hadoop系统一览
  6. 电商页面设计吸睛大法|C4D背景素材模板,视觉之旅开启!
  7. 【ASP.Net MVC3 】使用Unity 实现依赖注入
  8. 5分钟教小白通过ipv6远程访问白群晖
  9. linux控制风扇转速的命令,Linux下笔记本的风扇控制问题
  10. Google Authenticator(谷歌身份验证器)C#版
  11. 工程力学(16)—弯曲应力
  12. ssh开启图形界面_【工具大道】ssh登录Linux服务器,并显示图形化界面
  13. vue跑项目npm run dev 时报错cannot GET /;node-sass安装失败问题
  14. springboot定制和关闭banner
  15. 打开文件位置在计算机游戏里面,Win7电脑“打开或关闭windows功能”里面没有游戏文件夹的修复方法...
  16. 超简单的方法完整保留原有所有样式拆分Excel表
  17. android开发设置Button背景颜色
  18. 原生js实现轮播图的思路、代码及知识点!
  19. Vue3项目基本知识点
  20. 解决.msi打不开问题

热门文章

  1. isnumeric java_IsNumeric 判断字符串是否为数字(使用Val函数实现),这个函数相当于Java的IsNaN函数...
  2. 实训一:路由器的带外管理
  3. 太阳能充电过充保护系统
  4. gui界面设计心得体会 python_Python图形界面GUI程序设计
  5. 这个号称全世界最好用的终端工具
  6. 锐捷OSPF基础实验配置
  7. HBuilderX快捷键设置
  8. java 龟兔赛跑预测_龟兔
  9. IT运维管理指什么?如何建立有效的IT运维管理系统?
  10. HDFS Corrupt blocks 解决方法