RNG在下rng是什么战队棋

[text]返回顶部&/&深挖围棋AI技术:alphaGo在下一盘什么棋?围观&·&&0评论&·&&0香蕉&/&&&/&&已收藏&/&&/&深挖围棋AI技术:alphaGo在下一盘什么棋?
【编者按】作者李理,出门问问NLP工程师。本文原标题:AlphaGo的棋局,与人工智能有关,与人生无关。
CNN和Move Prediction
之前我们说了MCTS回避了局面估值的问题,但是人类下围棋显然不是这样的,所以真正要下好围棋,如此从模仿人类的角度来说,这个问题是绕不过去的。人类是怎么学习出不同局面的细微区别的呢?当然不能由人来提取特征或者需要人来编写估值函数,否则还是回到之前的老路上了。我们的机器能自动学习而不需要领域的专家手工编写特征或者规则来实现估值函数呢?
眼下最火热的深度学习也许可以给我们一条路径(当然可能还有其它路径,但深度学习目前看起来解决feature的自动学习是最promising的方法之一)。
深度学习和CNN简介
在机器学习流行之前,都是基于规则的系统,因此做语音的需要了解语音学,做NLP的需要很多语言学知识,做深蓝需要很多国际象棋大师。
而到后来统计方法成为主流之后,领域知识就不再那么重要,但是我们还是需要一些领域知识或者经验来提取合适的feature,feature的好坏往往决定了机器学习算法的成败。对于NLP来说,feature还相对比较好提取,因为语言本身就是高度的抽象;而对于Speech或者Image来说,我们人类自己也很难描述我们是怎么提取feature的。比如我们识别一只猫,我们隐隐约约觉得猫有两个眼睛一个鼻子有个长尾巴,而且它们之间有一定的空间约束关系,比如两种眼睛到鼻子的距离可能差不多。但怎么用像素来定义”眼睛“呢?如果仔细想一下就会发现很难。当然我们有很多特征提取的方法,比如提取边缘轮廓等等。
但是人类学习似乎不需要这么复杂,我们只要给几张猫的照片给人看,他就能学习到什么是猫。人似乎能自动”学习“出feature来,你给他看了几张猫的照片,然后问题猫有什么特征,他可能会隐隐预约的告诉你猫有什么特征,甚至是猫特有的特征,这些特征豹子或者老虎没有。
深度学习为什么最近这么火,其中一个重要的原因就是不需要(太多)提取feature。
从机器学习的使用者来说,我们以前做的大部分事情是feature engineering,然后调一些参数,一般是为了防止过拟合。而有了深度学习之后,如果我们不需要实现一个CNN或者LSTM,那么我们似乎什么也不用干。
Neural Network能自动学习出层次化的feature
CNN最早是Yann
Lecun提出用来解决图像识别的问题的一种深度神经网络。由Yann LeCun提出,通过卷积来发现位置无关的feature,而且这些feature的参数是相同的,从而与全连接的神经网络相比大大减少了参数的数量。
CNN深度神经网络
因此CNN非常适合围棋这种feature很难提取问题,比如图像识别。用CNN来尝试围棋的局面评估似乎也是很自然的想法。
Prediction using CNN
之前也分析过了,围棋搜索如果不到游戏结束,深的局面并不比浅的容易评估,所以我们不需要展开搜索树,而可以直接评估一个局面下不同走法的好坏。这样做的好处是很容易获得训练数据。我们有大量人类围棋高手的对局(海量中等水平的对局),每一个局面下“好”的走法直接就能够从高手对局库里得到,认为他们的对局都是“好”的走法。但是要得到一个局面的“绝对”得分却很难,因为我们只知道一盘对局最终的结果。一盘游戏最终的胜负可能是因为布局就下得很好,也可能是因为最后的官子阶段下得好,中间具体某个局面的好坏是很难判断的(当然强化学习试图解决这个问题,但是还是很难的,下面在讨论AlphaGo的时候会有涉及)。对于一个局面,如果能知道这个局面下最好的走法(或者几个走法),那么我们对弈时就直接选择这个走法(当然这个最好的走法可能得分也很差,比如败局已定的情况下怎么走都是输)。
所以大部分研究都是用CNN来预测一个局面下最好的走法。【预测走法比估值一个局面容易,如果我们能够准确估值局面,那么最佳走法就是从走之后的局面中选择对自己最有利的走法。或者用我们做问答系统常用的比喻,预测走法是搜索引擎,局面评估是问答系统。搜索引擎只要把好的排前面就行了(甚至不一定要求排在第一,排在第一页也就差不多了),而问答不仅要把好的排前面,而且还要知道这个最“好”的结果是否足够“好”,因为排序的好是相对“好”,问答的好必须是绝对的“好”,是唯一正确答案】。
Der Werf等(2003)
最早用CNN(当然还有用其它机器学习方法)来预测走法是2003年Van
Werf等人的工作,他们用了很多手工构造的feature和预处理方法,他们取得了25%的预测准确率。没有细看论文,在2006年Deep Learning火之前,所以估计网络的层次很浅。
& Nair(2008)
之后在2008年,这个时候Deep的神经网络已经逐渐流行了。Sutskever
& Nair用来2层的CNN,第一层有15个7*7的filter,第二层用了5*5的filter,最后用了一个softmax层,输出19*19,表示每个可能走法的概率(当然需要后处理去掉不合法或者不合理的走法,比如违反棋规的打劫局面立即提回,或者在自己的眼里下棋)。他们得到了34%的预测准确率。不过有一点问题就是他们出来使用当前局面,还用了上一步走法(这个走子导致了当前局面,也就是对手的上一步走子),这个可能是有问题的,因为实际对局时对手的水平是不能确定的,用这个feature当然能提高“数字”上的准确率,但是对于下棋水平是否有负面影响是很难说的。
& Storkey(2015)
到了2015年,计算机的计算能力更强,深度神经网络的层次也越来越深,在围棋领域也能看到这种趋势。Clark
& Storkey使用了8层的CNN,用的特征包括最原始的棋子(用了3个feature plane,表示361个点是黑棋/白棋/空白),ko(劫)的约束,一个group(块)的气。包括使用很多trick来保证symmetries(因为围棋的局面旋转90/180/270/360度后以及做180度的镜像之后应该是一样的)。他们在GoGoD数据上的预测准确率达到了41.1%,在KGS数据上的准确率达到44.4%。GoGoD上大部分是职业选手的对局,而KGS数据有很多业余高手的对局。
Maddison等(2015)
光是预测准确率,并不能说明下棋的水平。因此Maddison等人的工作把Move Prediction用到了实际的对弈当中。
他们的CNN增加到了12层,feature也有所增加,下面是他们使用的feature。
第一组feature是棋子(Stone)的颜色,和之前一样。
第二组是棋子(所在group)的气,用4个plane来表示,分别是1,2,3 &=4口气。
第三组是走了这步棋之后的气,用了6个plane,代表1,2,3,4,5,&=6口气。
第四组表示这个走法在当前局面是否合法。
第五组表示这个棋子距离当前局面的轮次,比如上一步对手走的就是1,上上一步自己走的就是2。因为围棋很多都是局部的战役,所以这个feature应该是有用的。
第六组就是表示走这这后能吃对方多少个棋子。
第七组表示走这能否征子成功。
第八组feature比较有趣,按照作者的说法就是因为KGS的对弈水平参差不齐,如果只留下高手的对局数据太少,所以用这个feature。
他们在KGS数据上的预测准确率达到55%。相对于Clark等人的工作,Maddison的工作除了增加了CNN的层次(8到12),增加的feature应该是很有帮助的,比如Turns
Since,Capture Size和Ladder Move。尤其是Ladder Move,下过围棋的都知道征子能否成功对应是否要走这步棋已经局部的计算非常重要。
根据他们的使用,人类6d的预测准确率也只有52%,所以从预测走法的角度来说,CNN的水平已经达到了6d的水平。
另外他们还做了实验,证明Clark那些用来保证symmetry的tricky并没有什么卵用,直接简单粗暴的把数据做symmetric变换后训练就行了。
完全不用搜索直接用Move
Prediction的结果下棋,能97%的比率战胜GnuGo(这个是完全基于alpha-beta搜索的),作者并没有说明只用Move Prediction的绝对水平,而只是和很差的GnuGo比较,所以应该水平不怎么样。
加上MCTS之后他们的水平能达到主流MCTS的开源软件如Pachi何Fuego的水平。当然CNN的预测相对于Simulation来说是很慢的,他们的GPU(4个GeForce
GTX Titan Black)评估128个局面需要0.15s,而CPU(16 Intel Xeon E52643 v2
3.5GHz)每秒可以simulation 47,000个局面。所以他们使用了异步的策略,先用先验知识给出一个节点的N(v),Q(v),先搜索着,等GPU运算完了再用CNN预测的胜率更新这些统计量。因此CPU和GPU的速度需要能大致匹配。
Tian & Yan Zhu(2015)
DeepMind进行围棋竞赛的主要就是Facebook Tian yuandong他们了。在Google宣布文章在Nature发表的前一天,他们在arxiv上发表了自己的工作。
下面我们来看看他们的工作(《Better
Computer Go Player with Neural Network and Long-Term Prediction》)。
使用的feature:
除了使用之前工作的标准feature之外,他们增加了一些feature,比如是否边界,距离中心的远近,是否靠近自己与对手的领土(不清楚怎么定义领土的归属的)。此外对于之前的feature也进行了压缩,之前都把特征分成黑棋或者白棋,现在直接变成己方和对手,这样把模型从两个变成了一个(之前需要给黑棋和白棋分别训练一个模型)。此外的一个不同地方就是类似于Multi-task的learning,同时预测未来3步棋的走法(而不是1步棋走法)。
为了与Maddison的工作比较,这里只用了标准的features,比较的也是未来1步棋的准确率,可以发现这个方法还是有效的(不过我个人觉得作者应该自己复现Maddison的结果而不是直接用他的结果)
只使用DCNN的围棋软件(不用MCTS搜索)
darkforest: 标准的feature,一步的预测,使用KGS数据
darkforest1:扩展的feature,三步预测,使用GoGoD数据
darkforest2:基于darkforest1,fine-tuning了一下参数。
把它们放到KGS上比赛,darkforest能到1k-1d的水平,darkforest1能到2d的水平,darkforest2能到3d的水平【注:KGS的3d应该到不了实际的业余3段】,下面是具体的情况。
因此作者认为加入3步预测的训练是有效的。
Policy: 走法首先通过DCNN排序,然后按顺序选择,除非累计的概率超过0.8或者超过一定次数的top走法。Expansion使用的UCT算法。
Policy:参考的Pachi的tree policy,有3*3的pattern,对手打吃的点(opponent atari
point),点眼的检测(detection of nakade points)等。
这个版本的软件叫darkforest3,在KGS上能到5d的水平。
DCNN预测的top3/5的走法可能不包含局部战役的一个关键点,所以它的局部作战能力还比较弱。
对于一些打劫点即使没用,DCNN还是会给高分。
当局面不好的情况下,它会越走越差(这是MCTS的弱点,因为没有好的走法,模拟出来都是输棋,一些比较顽强的抵抗的走法不能走出来)。
从上面的分析可以看出:DCNN给出的走法大局观还是不错的,这正是传统的方法很难解决的问题。局部的作战更多靠计算,MCTS会有帮助。但是我个人觉得MCTS搜索到结束,没有必要。一个局部的计算也许可以用传统的alpha-beta搜索来解决,比如征子的计算,要看6线有没有对手的棋子,另外即使有对手的棋子,也要看位置的高低,这样的计算DCNN是没法解决的,需要靠计算。
终于轮到主角上阵了,您可能不耐烦了。不过有了前面的基础,理解AlphaGo就容易多了,这里我们主要分析AlphaGo的创新点。
Network & Value Network
上图是AlphaGo所使用的两个网络以及训练过程。和之前的工作比,除了Policy
Network之外,AlphaGo多了一个Value Network。
Network我们通过之前的介绍以及了解到了,它的作用是Tree Policy时候的Node
Selection。(rollout阶段不能使用Policy
Network,因为DCNN的计算速度相对于Simulation来说太慢,所以AlphaGo又训练了一个简单的Rollout Policy,它基于一些local的pattern之类的feature训练了一个线性的softmax)。
Network又是做什么用的呢?这个Value
Network就是我们之前说的很多工作都“回避”的问题——给一个局面打分,就是之前在象棋和minimax部分讨论的局面的估值函数,只不过AlphaGo是使用深度强化学习(deep
reinforcment learning)学习出来,而不是像Deep
Blue或者其它象棋程序那样是人工提取的feature甚至手工调整权重(当然Deep
Blue是很多年前的工作了,现在也有用深度强化学习来搞国际象棋的,比如这篇论文《Giraffe: Using Deep
Reinforcement Learning to Play Chess》)。
前面在讨论Tian等人的工作时我们也分析过了,光用Move
Prediction的软件大局观还不错,但是局部的战术就比较差,因为局部的战术更多靠计算,人类也是这样。围棋由于估值函数比较困难,所以大都是用MCTS搜索到游戏结束。但是MCTS如果盲目搜索(使用随机的default
policy去rollout/playout)肯定不好,使用各种领域知识来缩小rollout的范围就非常重要。前面我们也看到,传统的MCTS只能到2d的水平,而用DCNN的tree
policy的MCTS就能到5d的水平(如果default policy如果能用DCNN指导肯定更好,可惜DCNN的速度太慢)。
Policy Network & Rollout Policy的训练
这个和之前介绍的差不了太多。AlphaGo相比之前多了Rollout
Policy,之前的Rollout Policy大多是使用手工编制的pattern,而AlphaGo用训练Policy Network相同的数据训练了一个简单的模型来做Rollout。
训练数据来自3千万的KGS的数据,使用了13层的CNN,预测准确率是57%,这和之前Tian等人的工作是差不多的。
Policy Network & Value Network的训练
之前训练的SL
Policy Network优化的目标是预测走法,作者认为人类的走法会在很多promising的走法里选择,这不一定能提高AlphaGo的下棋水平。为什么?文中没有解释,我个人认为可能是一个局面(尤其是优势)的情况下有很多走法,有保守一点但是保证能赢一点点的走法,也有激进但需要算度准确的但能赢很多的走法。这取决于个人的能力(比如官子能力怎么样)和当时的情况(包括时间是否宽裕等等)。
所以AlphaGo使用强化学习通过自己跟自己对弈来调整参数学习更适合自己的Policy。
具体的做法是当前版本跟之前的某一个版本(把之前所有版本都保留和不是用最近的一个可以避免overfitting)对弈,对弈的走法是根据Policy Network来选择的,然后根据结果调整参数。这个公式用自然语言来描述就是最终得分z_t(获胜或者失败),在t时刻局面是s_t我选择了走法a_t,P(a_t|s_t)表示局面s_t时选择走法a_t的概率,就像神经网络的反向传播算法一样,损失z_t(或者收益)是要由这个走法来负责的。我们调整参数的目的就是让这个概率变小。再通俗一点说就是,比如第一步我们的模型说必须走马(概率是1),那么如果最终输棋,我们复盘时可能会觉得下次走马的概率应该少一点,所以我们调整参数让走马的概率小一点(就是这个梯度)。
Policy Network的初始参数就是SL Policy Network的参数。最后学到的RL Policy Network与SL
Policy Network对弈,胜率超过80%。
Network与开源的Pachi对弈(这个能到2d也就是业余两段的水平),Pachi每步做100,000次Simulation,RL
Policy Network的胜率超过85%,这说明不用搜索只用Move
Prediction能超过2d的水平。这和Tian等人的工作的结论是一致的,他们的darkforest2也只用Move Prediction在KGS上也能到3d的水平。
Value Network的强化学习训练
一个局面在policy
p下的估值公式。用通俗的话说就是:在t时刻的局面是s,然后我们用p来下棋直到游戏结束,我们重复很多次,然后求平均的得分。当然,最理想的情况是我们能知道双方都是最优策略下的得分,可惜我们并不知道,所以只能用我们之前学到的SL
Policy Network或者RL Policy Network来估计一个局面的得分,然后训练一个Value Network
V(s)。前面我们也讨论过了,RL Policy Network胜率更高,而我们学出来的Value
Network是用于rollout阶段作为先验概率的,所以AlphaGo使用了RL Policy Network的局面评估来训练V(s)。
V(s)的输入时一个局面,输出是一个局面的好坏得分,这是一个回归问题。AlphaGo使用了和Policy Network相同的参数,不过输出是一个值而不是361个值(用softmax归一化成概率)。
上面的公式说明:V(s)的参数theta就是简单的用梯度下降来训练
不过用一盘对局的所有(s,v(s))训练是有问题的,因为同一盘对局的相邻的局面是非常相关的,相邻的局面只差一个棋子,所有非常容易overfitting,导致模型“记住”了局面而不是学习到重要的feature。作者用这样的数据训练了一个模型,在训练数据上的MSE只有0.19,而在测试数据上是0.37,这明显overfitting了。为了解决这个问题,作者用RL
Policy Network自己跟自己对局了3千万次,然后每个对局随机选择一个局面,这样得到的模型在训练数据和测试数据上的MSE是0.226和0.234,从而解决了overfitting的问题。
+ Policy & Value Networks
上面花了大力气训练了SL
Policy Network,Rollout Policy和Value Network,那么怎么把它们融合到MCTS中呢?
一次MCTS的Simulation可以用上图来说明,下文加黑的地方是这三个模型被用到的地方。
首先每个节点表示一个局面,每一条边表示局面+一个合法的走法(s,a)。每条边保存Q(s,a),表示MCTS当前累计的reward,N(s,a)表示这条边的访问次数,P(s,a)表示先验概率。
每次Simulation使用如下的公式从根节点开始一直选择边直到叶子节点(也就是这条边对于的局面还没有expand)。
Q(s_t,a)就是exploit
term,而u(s_t,a)就是explore term,而且是于先验概率P(s,a)相关的,优先探索SL Policy Network认为好的走法。深挖围棋AI技术:alphaGo在下一盘什么棋?该投稿暂无简介深挖围棋AI技术:alphaGo在下一盘什么棋?深挖围棋AI技术:alphaGo在下一盘什么棋?[+展开简介]投1蕉安利给基友官方下载功能反馈本站不提供任何视听上传服务,所有内容均来自视频分享站点所提供的公开引用资源。Copyright (C)
AcFun. 保留所有权利& Mata指挥得当 一个大龙BUFF推掉五座塔
Mata指挥得当 一个大龙BUFF推掉五座塔
时间:  来源:互联网  阅读次数:396  小编:小东  我要分享:
RNG vs HYG第一局的比赛马上开始,先看看RNG这支队伍2015年和2016年的对比吧,进步非常大。
BP结束,阵容对比。
开局RNG主动换线,然后配合打野辅助去拿HYG的红,双方互换红BUFF开局。于是又是镜像开局互推一塔,然后上单单吃塔钱,由于HYG在下路,所以他们推完塔之后继续拿下小龙。
5分25秒,蜘蛛上路gank抓死波比,不过毕竟由于RNG主动换线,波比的发育还是不比剑姬差。
9分41秒,HYG剑姬被RNG三人Gank极限逃生,RNG这波有点伤士气啊。随后HYG拿下第二条小龙,HYG开局节奏还可以,后面能否滚起雪球是他们的关键。
13分03秒,RNG发动进攻,HYG蜘蛛极限逃生,RNG只好推掉HYG的中一塔泄愤。
17分钟双方在小龙开启团战,RNG先击杀HYG两名英雄,但他们急于追杀璐璐,导致HYG剑姬进场偷掉RNG两名英雄,RNG团战失败,小龙被HYG拿下,第三条小龙。
19分58秒,RNG和HYG在上路团战,RNG打出0换4,随后拿下大龙。RNG这波团战打得相当果断相当漂亮,这波很关键!
带着大龙BUFF的RNG一口气拔掉了HYG五座塔,其中三座二塔两座高地塔。这简直太恐怖了。。。
这条大龙让RNG在非常短的时间内扩大了巨大的优势,简直就是闪电战一样碾压了HYG,这支队伍滚雪球的能力太强了。RNG拿下第一局的胜利。
其实上场RNG每个选手的表现都不错,这时候就要把MVP给扭转局势的指挥Mata了。
关注IT新闻资讯,了解最新的IT动态,扫描&&二维码&&
好特网,阅读的好地方!
老商人为你揭秘DNF各种卡金币卡SS骗局!成就大家装逼的梦想。揭秘卡金币卡SS的骗局原理,希…
偶像梦幻祭的主要玩法核心就是培养自己与角色的亲密度,那么偶像梦幻祭有哪些方法可以增加…
好特网精选
帮助玩家更好的体验游戏、学习和成长
系统:Vista/winXP/win7/win8
大小:53.58 MB
大家都在看什么
网友在10分钟点赞了
网友在16分钟点赞了
网友在17分钟点赞了
网友在33分钟点赞了
网友在42分钟点赞了
大小:52.46 MB
大小:30.95 MB
大小:433.5 KB
大小:11.33 MB
大小:2.06 MB
大小:36.03 MB
大小:30.43 MB
大小:41.5 MB
大小:11.75 MB
大小:7.07 MB
大小:80.5 MB
大小:137.9 MB
大小:46.97 MB
大小:127.4 MB
大小:90.9 MB}

我要回帖

更多关于 rngvsskt视频下载 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信