《master the game of GO wtth deep neural networks and tree search》研究解读
现在”人工智能“如此火爆的一大直接原因便是deepmind做出的阿尔法狗打败李世石,从那时开始计算机科学/人工智能成为了吹逼的主流。记得当时还是在学校晚新闻的时候看到的李世石输的消息,这个新闻都是我给打开的hhhhh,对当时场景的印象还是蛮深的。现在涵哥就带大家追根溯源,看看把人工智能推上吹逼大道的研究与技术到底是怎么一回事。
在研读aphago工作原理前建议先学完david silver的RL基础课,这样读起来才有意思。
文章分了五个小块,分别是:
supervised learning of policy networks
reinforcement learning of policy networks
reinforcement learning of value networks
searching with policy and value networks
evaluating the playing strength of AlphaGO
如果用一句话说明白alphaGO是怎么工作的,那应该是“combines the policy and value network with MCTS”.

我们先从最基础的policy approximator引入。supervised learning of policy network 是一个由CNN+rectifier_nonlinearities+softmax组成的十三层的神经网络,输入the board state representation也就是当前的棋盘图像(用s表示),输出a probability distribution over all legal moves也就是选择所有符合规则的下一步走法中每一种的可能性(用a表示)。训练数据集来自KGS GO Sever即库存的人类大师对局,采用随机梯度上升法(SGA)进行训练优化————
。
因为对SLpolicynetwork太笨重不满意,deepmind又训练了rollout policy,a linear softmax of small pattern features with weight pai,它极度快速,延时只有2μs,而policy network需要3ms。
有了第一阶段的尝试,我们把policy gradient拿来用,进入第二阶段。用pρ 表示我们的RL policy network,其结构与pσ 相同,参数初始化为ρ=σ,训练数据通过self play产生。wew play games between the current pρ and a random selected previous iteration of pρ ,也就是说通过当前迭代版本的pρ 和随机选择的先前迭代版本的pρ 之间对局产生训练数据,然后用SGA方法优化pρ ——————
。
接下来进入training pipeline的最后阶段,以position evaluation为核心。在此之前我们已经把policy network做好了,也就是准备好了"策略",然后需要有一套对当前棋局的评估器,来评估从当前棋局出发依照策略p最后结果输还是赢。estimating a value function vp(s) that predicts the outcome from position s of game played by using policy p for both players。vp(s) = E[zt|st=s,at...T ~p] 。
We approximate the value function using a value network vθ(s) with weight θ , vθ(s) ≈ vpρ(s) ≈ v*(s) 。vθ(s) 结构和pρ (s)大致相似,只是输出为一个单纯的回归。训练时以state-outcome pairs (s,z)的regression作数据集,通过SGD最小化vθ(s)和corresponding outcome z之间的MSE来优化参数——————
。
到现在准备好了策略policy和价值评估器value network,是时候借助蒙特卡洛树搜索(MCTS)对全局建模了。
AlphaGO 用MCTS将policy network 和value network结合到一起,通过MCTS的前向搜索选择下一步的行为(就是下一步棋落到哪)。"MCTS with policy and value networks"包含四个核心操作,分别是select,expansion,evaluation,backup。
搜索树的每条边(s,a)存储着action value Q(s,a),visit count N(s,a)和prior probability P(s,a),每个节点是棋局的state。从树根state开始,通过simulation即模拟对局(没有备份操作的完整对局episode)遍历这棵树。对于任意simulation的每个时间步,基于at = argmax( Q(st,a) + u(st,a) )选择action,其中
。对于每一场simulation————遍历走到叶子节点sL时如果还没到simulation的END便进行expansion操作向下扩展。P(s,a)=pσ(a|s)。到达当前simulation的END时,通过V(sL)来评估叶子节点——V(sL) = (1- λ )vθ(sL) + λzL 。vθ(sL)用了value network,zL 是基于rollout policy pπ 一直下到结束的outcome。回看,backup,更新这一场simulation所走过的所有边。每条边的visit count和mean evaluation对从它这儿走过的所有simulations进行累加,si L 表示第i次simulation(总共做了n次simulations)的叶子节点,1(s,a,i)表示第i次simulation的时候(s,a)这条边是否被走过。 
search做完之后,从根结点位置选择访问次数最多的move。至此我们的AlphaGO就正式出道了,这时我仿佛听到上天对它说了句——开始你牛逼闪闪发光的一年吧!
另外deepmind还提到了他们在研究中发现的一个有意思现象:SL policy network比RL policy network表现好,而RL value network 比SL policy network 表现好,作者说“persumably because humans select a diverse beam of promising moves,whereas RL optimizes for the single best move”哈哈哈。
为了培(xun)养(lian)AlphaGO,他的父亲(deepmind)不惜砸重金,采用异步MCTS,40个搜索线程在48个CPU上做simulations,用8个并行计算GPU训练神经网络。另外deepmind也尝试了分布式MCTS,使用了40个搜索线程,1202个CPU,176个GPU。

“evaluating the playing strength of AlphaGO”这一小段我不想说了,王婆卖瓜自卖自夸,谁爱看自己去看吧。
注:对于具体method我没做太多分享,但以后想写了可能还会补充一些,我觉得alphaGO的突破之处在于成功用MCTS把policy network和value network结合到了一起。再厉害它也是在前人的基础上做的,并不是自己另辟新路,技术的发展一贯如此。至于本文为啥中英文混体,是因为我思前想后拿不定主意一些地方该怎么用纯中文来表达,这些地方英文来表达是最能传达本意的,所以直接从论文上撸下来了,莫怪莫怪。最后建议自己读一下《master the game of go with deep neaural network and tree search》的原文。链接:https://www.nature.com/articles/nature16961.pdf

《master the game of GO wtth deep neural networks and tree search》研究解读的更多相关文章
- 论文笔记:Mastering the game of Go with deep neural networks and tree search
Mastering the game of Go with deep neural networks and tree search Nature 2015 这是本人论文笔记系列第二篇 Nature ...
- Mastering the game of Go with deep neural networks and tree search浅析
Silver, David, et al. "Mastering the game of Go with deep neural networks and tree search." ...
- AlphaGo论文的译文,用深度神经网络和树搜索征服围棋:Mastering the game of Go with deep neural networks and tree search
转载请声明 http://blog.csdn.net/u013390476/article/details/50925347 前言: 围棋的英文是 the game of Go,标题翻译为:<用 ...
- 论文翻译:2018_Source localization using deep neural networks in a shallow water environment
论文地址:https://asa.scitation.org/doi/abs/10.1121/1.5036725 深度神经网络在浅水环境中的源定位 摘要: 深度神经网络(DNNs)在表征复杂的非线性关 ...
- Classifying plankton with deep neural networks
Classifying plankton with deep neural networks The National Data Science Bowl, a data science compet ...
- Training (deep) Neural Networks Part: 1
Training (deep) Neural Networks Part: 1 Nowadays training deep learning models have become extremely ...
- [C4] Andrew Ng - Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization
About this Course This course will teach you the "magic" of getting deep learning to work ...
- Training Deep Neural Networks
http://handong1587.github.io/deep_learning/2015/10/09/training-dnn.html //转载于 Training Deep Neural ...
- On Explainability of Deep Neural Networks
On Explainability of Deep Neural Networks « Learning F# Functional Data Structures and Algorithms is ...
随机推荐
- 用Java JMC控制台分析线程阻塞原因
问题 今天在玩dianping-CAT框架时,发现请求某个页面的时候,发生了阻塞.浏览器得不到响应. 环境 本地Tomcat 8 , Windows 系统. 解决 启动jmc 控制台,找到BLOCKE ...
- C语言存储类别和链接
目录 C语言存储类别和链接 存储类别 存储期 五种存储类别 C语言存储类别和链接 最近详细的复习C语言,看到存储类别的时候总感觉一些概念模糊不清,现在认真的梳理一下.C语言的优势之一能够让程序员恰 ...
- Vue引入插件
引入Element ui 1.在当前目录下,运行:npm i element-ui -S 2.在src/main.js中添加代码 import ElementUI from 'element-ui' ...
- Flask:Flask的模板系统和静态文件
1.Flask模板系统 Django框架有自己独立的模板系统,而Flask是没有的,Flask默认采用jinjia2模板系统,jinjia2是仿写Django模板系统的一个第三方模块,但性能上要比Dj ...
- 安装实时查看日志工具 log.io
官网:http://logio.org/ 一.环境 [root@centos ~]# cat /etc/system-release CentOS release 6.5 (Final) [root@ ...
- 前端与算法 leetcode 26. 删除排序数组中的重复项
目录 # 前端与算法 leetcode 26. 删除排序数组中的重复项 题目描述 概要 提示 解析 算法 # 前端与算法 leetcode 26. 删除排序数组中的重复项 题目描述 26. 删除排序数 ...
- LVS NAT模式实践
client:192.168.4.10/24 proxy:192.168.2.5/24 192.168.4.5/24 web1:192.168.4.100/24 web2:192.168.4.200/ ...
- 看电影(movie):组合数
Description 到了难得的假期,小白班上组织大家去看电影.但由于假期里看电影的人太多,很难做到让全班看上同一场电影,最后大家在一个偏僻的小胡同里找到了一家电影院.但这家电影院分配座位的方式很特 ...
- 「考试」$5T$
啊因为最近题实在是好啊,只能四五篇四五篇写了. T1. 括号序列的确简单. 当我们维护左右$cnt$后. 到一个左括号的地方的话. 答案就是:$$\sum\limits_{i=1}^{min(lc,r ...
- Linux 常用命令 | free 详解
free命令可以显示Linux系统中空闲的.已用的物理内存及swap内存,及被内核使用的buffer.在Linux系统监控的工具中,free命令是最经常使用的命令之一.本文介绍free命令的使用方法和 ...