深度学习之浅谈Alphago

目录

1 前言

2 基础知识介绍   

CNN网络基本原理介绍

3.第一代的围棋之神(Alphago)

4.第二代的围棋之神(Master)

5.第三代的围棋之神(MuZero)

6.第四代的围棋之神(KateGo)

7 总结


1 前言

2016年1月,前沿人工智能企业DeepMind宣布,AlphaGo攻克了围棋并正式挑战人类棋手;当年3月,AlphaGo打败世界顶级围棋手李世石;来年5月,AlphaGo与排名世界第一的世界围棋冠军柯洁,在中国乌镇围棋峰会的对战中再次获胜。围棋是号称人类发明的最复杂的游戏之一。一时间,人工智能即将取代人类的流言四起,引发了对人工智能伦理问题的大讨论。而Alphago所涉及的知识领域,便是深度神经网络,本篇笔记将会以一个我(围棋爱好者)的视角带入,阐述Alphago这一围棋之神的发展历程。   

2 基础知识介绍

围棋棋盘:形状为正方形或略呈长方形的平面图,现在的棋盘为平面上画横竖各十九条平行线,构成三百六十一个交叉点。     

         
 

行棋规则与胜负计算  

基本理念:

围棋的基本规则规定:对局者一方执黑子先行(让子棋除外),另一方执白子,双方轮流交替下一子到棋盘的交叉点上(已有棋子的交叉点不能下子,禁着点不能下子),棋子下定后不允许再挪动位置。这一点同中国象棋和国际象棋有着根本的区别。  

按照行棋的规则:由黑棋先走,黑1占右上角,白2占左下角,黑3占左上角,白4占右下角,黑5攻击白4,双方一替一手的应接直至白18,这就是所谓的下围棋。

棋至终局后,怎样计算胜负呢?怎样判定谁输谁赢呢?简单地说围棋中的胜负可以概括为:谁围的地域大谁就是胜者;反之,就是败者。

 围棋盘上共有三百六十一个交叉点,一盘棋的胜负就是由对局双方所占据的交叉点的多少所决定的。更精确地说就是由双方活棋所占据的地域的大小来决定的。一个交叉点为一子,每方以一百八十又二分之一子为归本数,超过此数者为胜,不足此数者为负。

气:

在围棋对局中,棋子在棋盘上是依赖“气”来生存的,若想学会如何吃子就必须先了解“气”。“气”是围棋基本术语之一,是指在棋盘上与棋子紧紧相邻的空交叉点。

         

图中角上的一子与它紧紧相领的有两个交叉点,所以它有两气。边上的一子,与它紧紧相邻的有三个空交叉点,所以它有三气,中腹的一子,与它紧紧相邻的空交叉点有四个,所以它有四气。棋盘上单独一个棋子的气数不可能超过四气。

吃子:

 “吃子”作为围棋术语,也可称“提子”。在实战对局中,一方将另一方的一个或多个棋子紧紧包围,使其所有的气数被全部堵住(即其所有紧紧相邻的交叉点全部被占有),随后将无气的棋子从棋盘上拿掉,就叫“吃子”。

没有“气”的棋子是没有生命力的,也不允许在棋盘上存在,一旦棋盘上的棋子处于无气状态,即可提掉。

         

         

蒙特卡洛树搜索:

蒙特卡洛树搜索又称随机抽样或统计试验方法,属于计算数学的一个分支,它是在上世纪四十年代中期为了适应当时原子能事业的发展而发展起来的。蒙特卡洛树搜索方法由于能够真实地模拟实际物理过程,解决问题与实际非常符合,可以得到很圆满的结果。以下为搜索步骤。

1.构造或描述概率过程

对于本身就具有随机性质的问题,如粒子输运问题,主要是正确描述和模拟这个概率过程,对于本来不是随机性质的确定性问题,比如计算定积分,就必须事先构造一个人为的概率过程,它的某些参量正好是所要求问题的解。即要将不具有随机性。

2.实现从已知概率分布抽样

构造了概率模型以后,由于各种概率模型都可以看作是由各种各样的概率分布构成的,因此产生已知概率分布的随机变量(或随机向量),就成为实现蒙特卡罗方法模拟实验的基本手段,这也是蒙特卡罗方法被称为随机抽样的原因。最简单、最基本、最重要的一个概率分布是(0,1)上的均匀分布(或称矩形分布)。随机数就是具有这种均匀分布的随机变量。随机数序列就是具有这种分布的总体的一个简单子样,也就是一个具有这种分布的相互独立的随机变数序列。产生随机数的问题,就是从这个分布的抽样问题。在计算机上,可以用物理方法产生随机数,但价格昂贵,不能重复,使用不便。另一种方法是用数学递推公式产生。这样产生的序列,与真正的随机数序列不同,所以称为伪随机数,或伪随机数序列。不过,经过多种统计检验表明,它与真正的随机数,或随机数序列具有相近的性质,因此可把它作为真正的随机数来使用。由已知分布随机抽样有各种方法,与从(0,1)上均匀分布抽样不同,这些方法都是借助于随机序列来实现的,也就是说,都是以产生随机数为前提的。由此可见,随机数是我们实现蒙特卡洛树搜索的基本工具。

3.建立各种估计量

一般说来,构造了概率模型并能从中抽样后,即实现模拟实验后,我们就要确定一个随机变量,作为所要求的问题的解,我们称它为无偏估计。建立各种估计量,相当于对模拟实验的结果进行考察和登记,从中得到问题的解。

4.算法运用到围棋中的具体实践

1. 搜索新的棋局,并将新的棋局添加到MCTS树中;

2. 从新添加的棋局开始模拟随机对弈;

3. 根据随机对弈的结果更新树节点的统计数据。

CNN网络基本原理介绍:

1.输入层

2.卷积层

3.池化层

4.全连接层

5.softmax层   

输入层(数据打标签,数据清洗)

在处理图像的CNN中,输入层一般代表了一张图片的像素矩阵。可以用三维矩阵代表一张图片。三维矩阵的长和宽代表了图像的大小,而三维矩阵的深度代表了图像的色彩通道。比如黑白图片的深度为1,而在RGB色彩模式下,图像的深度为3。

         

卷积层(提取特征)

卷积层是CNN最重要的部分。它与传统全连接层不同,卷积层中每一个节点的输入只是上一层神经网络的一小块。卷积层被称为过滤器(filter)或者内核(kernel)。

【注意】在一个卷积层中,过滤器(filter)所处理的节点矩阵的长和宽都是由人工指定的,这个节点矩阵的尺寸也被称为过滤器尺寸。常用的尺寸有3x3或5x5,而过滤层处理的矩阵深度和当前处理的神经层网络节点矩阵的深度一致。

         

池化层(缩小尺寸)

池化层作用:在CNN网络中卷积池之后会跟上一个池化层,池化层的作用是提取局部均值与最大值,根据计算出来的值不一样就分为均值池化层与最大值池化层,一般常见的多为最大值池化层。

全连接层(对特征做加权和)

作用:全连接层位于CNN网络的后端,经过卷积层的特征提取和池化层的降维后,将特征图转化为一维向量送往全连接层中进行分类和回归操作。

         

softmax层(分类)

三种方法:

1.加权

2.模板匹配

3.几何角度

         

3.第一代的围棋之神(Alphago)

简介:

这是在2016年以4:1击败小李的Alphago,也是DeepMind公司开发的第一个打败职业九段的Alphago。在此之前,人工智能在围棋领域一直没有得到有效的突破。绝大多数AI只能停留在业余“级”的水平上,有一部分训练有素的AI可以达到业余的3到4段,但当时训练最好的AI也只能达到业余5段的水平。也就是和我的水平差不多,如何运用神经网络训练出围棋上帝,成为当时DeepMind亟待解决的问题。

我将围绕3个具体的问题展开,运用深度网络的知识尝试阐述,我想这三个问题也是围棋爱好者们想要知道的。

第一,围棋这么复杂,它是怎么编码,如何把一个棋盘的信息放入到网络中。

第二,他的网络里究竟做了什么,围棋之神是如何思考的。

第三,在第四盘对阵小李的过程中,为什么第78手的“空挖”会让AI陷入BUG,从而保留了人类在围棋领域对抗AI最后胜利的火种。

         

问题一的解答:

采用棋盘编码器来进行特征量化

AlphaGo所采用的棋盘编码器为 19×19×49 的特征张量,其中前48个平面用于策略网络的训练,最后一个平面用于价值网络的训练。前48个平面包含11种概念,其更多地利用了围棋专有的定式,例如它在特征集合中引入了征子和引征的概念。最后一个平面用来表示当前执子方。

                

问题二的解答:

Alphago运用蒙特卡洛算法,分为2个策略网络和一个价值网络。

(1)强策略网络(注重准确率)

强策略网络一共有13层卷机网络,且在整个网络的训练过程中,都保留的原始的19×19的大小,因此我们需要对中间卷机层进行paddinga操作。此外第一个层卷积核的大小为5,剩下12层的卷积核的大小为3,最后一层的卷积核大小为1,且只有一个过滤器。关于激活函数,前12层都采用Relu激活函数,最后一层由于要得出每个位置的概率值,因此采用softmax 激活函数。

(2)快策略网络(注重效率)

由于快策略网络的主要目的是构建一个比强策略网络更小的网络,从而能够进行快速评估,因此读者可以自行创建一个简易的网络从而实现此功能,这里就不做示例。

(3)价值网络(提出胜率,最佳选点)

价值网络总共有16层卷机网络,其中前12层与强策略网络完全一致,第13层是一个额外的卷机层,与第2~12层的结构一致,而第14层的卷积核大小为1,并且有一个过滤器。最后是两层稠密层,倒是第二层共有256个输出,采用ReLU几何函数;最后一层只有一个输出,表示当前状态的价值,采用tanh激活函数。

                  

问题三的解答:

补充知识:

我们需要先了解围棋里打劫的概念。

打劫,是指黑白双方都把对方的棋子围住,这种局面下,如果轮白下,可以吃掉一个黑子;如果轮黑下,同样可以吃掉一个白子。因为如此往复就形成循环无解,所以围棋禁止“同形重复”。根据规则规定“提”一子后,对方在可以回提的情况下不能马上回提,要先在别处下一着,待对方应一手之后再回提。

A选点即为打劫点,若白棋不应,则黑棋可以下在B出消劫。        

解释:为什么第78手的“空挖”会让AI陷入BUG

对于AlphaGo来说,其算法决定其在不打劫就能获胜的条件下会尽量避免劫争,因为优势下的劫争增加了搜索的不确定性,常常会使他对胜率的估计降低。而由此训练出的价值网络会对打劫有着莫名的不接受性,故Alphago不愿意接受打劫的下法,从而选择回避。因此在对战小李第四局上惊现了打劫BUG。

而为什么在出现打劫后不选择马上消劫,因为在价值网络的最后一层rollout,Alphago判断消劫后的胜率会降低很多,会影响他取得比赛的胜率,因而一直撑劫,导致了更多的网络模型错误。

         

         

       

         

4.第二代的围棋之神(Master)

简介:

 Master是以3:0击败柯洁的那一个版本。正式宣告了人工智能在围棋领域的绝对突破。我在阅读Master ,也就是Alphago Zero版本论文的时候,对他不需要提前给出人类棋谱的数据集训练而感到震惊,这一过程也就是我们所说的无监督学习。(无监督学习是一种机器学习的训练方式,它本质上是一个统计手段,在没有标签的数据里可以发现潜在的一些结构的一种训练方式。)

我将运用深度网络的相关知识解决三个问题。

第一,Master是怎么不用棋谱训练的。

第二,Master究竟比Alphago初代强大多少。

第三,为什么Master对劫的把握要好很多。

      

问题一的解答:

论文里阐述了他是如何学习的。

其基本的原理是根据蒙特卡洛树而来,利用Monte Carlo对搜索树中的每个状态的价值进行评估。模拟次数越多,搜索树就越大,相关的估值也变得更加精确。在搜索过程中用于选择下棋动作的策略,也随着时间的推移有所改进,这种改进也就是选择具有更高价值的子树。渐渐地,该策略收敛于最优下法,并且评估也收敛到最优值函数。

最初的Alphago版本,是通过人类提供的棋谱进行监督学习,然后通过强化学习,自我对弈,最后再通过价值网络反应相关的训练成果。而Master是通过无监督学习,随机初始化,通过自我对弈,但这一效率显然太慢。故Master没有rollout过程,只有树搜索的过程。Master采用访问次数计算出概率分布,Master依据这一概率来进行选择,游戏结果用z来表示,只有1和-1两种状态,代表着赢和输。

         

         

问题二的解答:

到底强大了多少?

这是模型训练的相关参数(训练时间,准确性,MSE)

         

         

         

         

从各方面看,Master,即Alphago Zero版本均碾压了之前的Alphago版本。

         

棋谱训练:

         

说明:

令我感到惊奇的是:我们人类探索了千年的定式手段竟被AI训练不到48h就破解了大半,像72h右上图这一定式更是AI的杰作原创,因为之前的本手应该是黑棋粘,而现在变成了黑棋爬。对这一局部棋型的稳定型有了更大的提升。

         

         

看到全局训练的结果我更是感到不可思议。

这里我可以对棋局进行相关解释:

最左的图的模式很像初学者刚学下出来棋型,因为他们是以吃子为目的。

然而AI通过自我学习发现方法不仅于此,中间的图已经初具规模,而右边的图已经达到了半职业的水平。AI在人类认为是“俗手”的招法上不断出招,效果却出奇的好用。

         

         

问题三的解答:

围棋中的“劫”也许是最能体现一个棋手对全局的把握,对局部手段的使用的能力,也最能体现一个棋手的硬实力,这是因为有“劫”这一概念的存在,才让我们见证了一次又一次的逆风翻盘,三劫循环这一名局更能点燃无数围棋人心中的热血。   

为什么Matser对劫的把握更加好?

我想可以从可以从它本身的训练入手。因为是自己跟自己对弈,一切从零开始。而我们之前将人类棋谱当做数据集输入时,或多或少的特征会提取人类棋手手法。例如将一万局藤泽秀行老先生的棋谱当做输入,那么训练出来的AI就有老先生的成熟稳重。将一万局古力的棋谱当做输入,棋风便是好战强悍。但自我对弈过程却没有掺杂这些元素,原先的神经网络也换成了更加高效的残差网络。

正如原文中阐释的一样,使用40层的residual network训练40天,得到了这样的一组结果。                                                                                                                   

         
5.第三代的围棋之神(MuZero)

简介:

在前两代的基础上,MuZero甚至不需要规则就能自我训练。这一“不知道规则”彻底引起了我的恐慌。但当我查阅资料才明白这一学术上的“不知道规则”并不是指全部的规则不清楚,而是只知道部分规则。具体的阐述如下:

其网络结构和Master近九成相似。

MuZero新增部分:

除了祖传的输出策略和价值的神经网络外,新加了一层表征网络。把训练中一个抽象的棋盘状态进入表征网络做进一步的转换,抽象为一个隐状态。把隐状态作为输入进入蒙特卡洛树,找出最优解。具体的做了解用。自己也理解不深。

         

6.第四代的围棋之神(KateGo)

简介:KateGo以稳重风格著称。其稳重的本质是在价值决策的过程中选择了最大化胜率而非最大化目数。具体的网络原理不再阐述。

         

         

7 总结

1.将自己所学的深度学习知识进行现实问题的阐述,是非常有意义的。

2.如何在AI时代更好的下棋练习?我认为,AI的这种强弱认知是基于强大的计算量做支撑,我们人类可以去感悟,但不要去模仿,还是要走出自己的风格。

3.AI严格讲不是在下棋,而是在按照预设规则计算。自从阿尔法狗赢了李世石,人类才真正认识到了,人类的算路与AI有着巨大的、无法超越的差别。人类无法超越AI,但可以通过AI探究围棋的真髓。

4.人类可以在算不清的时候,凭感觉赌一把,也许走对了,也许走错了,但AI不会。AI只走算清的变化,算不清的会忽略掉,所以,目前的AI仍不是已经终结了围棋,而是在挖掘围棋终极奥秘的路上。

5.AI 价值判断是输和赢,只要能赢,赢半目最稳,那就赢半目。而人类的价值判断要复杂得多,不同的棋力对价值判断有着巨大的差异,水平越高,价值判断越接近于AI的判断。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值