AlphaGo的硬件配置

最近AlphaGo与李世石的比赛如火如荼,关于第四盘李世石神之一手不在我们的讨论范围之内。我们重点讨论下AlphaGo的硬件配置:

AlphaGo有多个版本,其中最强的是分布式版本的AlphaGo。根据DeepMind员工发表在2016年1月Nature期刊的论文,分布式版本(AlphaGo Distributed)使用了1202个CPU和176个GPU,同时可以有40个搜素线程。

维基百科上有各种版本的AlphaGo硬件配置 :

最后一列是等级分,代表了论文送审时(2015年11月)的水平。

下面是2016年3月14日GoRatings 发布的全球等级分列表,AlphaGo也被列在其中,排在第四位,可以看见各个版本AlphaGo的实力。

硬件配置Google官方没有给出明确说明,根据各方报道跟李世石对战的应该是最强的两个分布式“阿法狗”之一:

-(1920 CPUs + 280 GPUs,同时有64个搜索线程)

-(1202 CPUs + 176 GPUs,同时有40个搜索线程)

有Twitter网友作图:


从这个角度来看韩国人抗议比赛时间对于李世石不公平,也是可以理解的。

AlphaGo的算法结构

本文尝试用最简单的方法来讲述AlphaGo的算法,了解AlphaGo是如何下棋的。

AlphaGo的技术总体架构如果一句话总结的话就是:深度CNN神经网络架构结合蒙特卡洛搜索树(Monte Carlo Tree Search)。

深度学习神经网络训练出两个落子策略和一个局面评估模型,这三个策略的神经网络架构基本相同,这是参数不同而已。

两个落子策略:SL(supervised-learning policy network),RL(Reinforcement learning policy network)。

落子策略SL是通过学习人类对弈棋局,来模拟给定当前棋局局面,人如何落子的思路,这是纯粹的学习人类下棋经验,它的学习目标是:给定某个棋局形式,人会怎么落子?那么AlphaGo通过人类对弈棋局来学习这些落子策略,也就是说SL策略学习到的是像人一样来下下一步棋。

(数字表示人类棋手会下在该地方的可能性)

落子策略RL是通过AlphaGo自己和自己下棋来学习的,是在SL落子策略基础上的改进模型,RL策略的初始参数就是SL落子策略学习到的参数,就是它是以SL落子策略作为学习起点的,然后通过自己和自己下棋,要进化出更好的自己,它的学习目标是:不像SL落子策略那样只是学习下一步怎么走,而是要两个AlphaGo不断落子,直到决出某盘棋局的胜负,然后根据胜负情况调整RL策略的参数,使得RL学习到如何能够找到赢棋的一系列前后联系的当前棋局及对应落子,就是它的学习目标是赢得整盘棋,而不是像SL策略那样仅仅预测下一个落子。

局面评估网络(Position Evaluator Value Network)采用类似的深度学习网络结构,只不过它不是学习怎么落子,而是给定某个棋局盘面,学习从这个盘面出发,最后能够赢棋的胜率有多高,所以它的输入是某个棋局盘面,通过学习输出一个分值,这个分值越高代表从这个棋盘出发,那么赢棋的可能性有多大。

(局面评估是怎么看这个棋盘的。深蓝色表示下一步有利于赢棋的位置)

有了上面的三个深度学习策略,AlphaGo把这三个策略引入到蒙特卡洛搜索树中,所以它的总体架构还是蒙特卡洛搜索树,只是在应用蒙特卡洛搜索树的时候在几个步骤集成了深度学习学到的落子策略及盘面评估。

在AlphaGo与李世石的第四局中,李下出78手神之一手的时候,Google DeepMind 的 Hassabis 是这样说的:

@demishassabis 26m26 minutes ago

Lee Sedol is playing brilliantly! #AlphaGo thought it was doing well, but got confused on move 87. We are in trouble now...

@demishassabis 7m7 minutes ago

Mistake was on move 79, but #AlphaGo only came to that realisation on around move 87

简单来说就是狗没有及时认知到78的威胁,直到到87手才发现胜率下跌。这个说明狗在好几步后都不知道自己已经不妙了,计算结果里没有后来的发展。

这不是狗的bug,是标准的多算胜少算,这应该不算是bug而是value network和policy network还有待完善。

参考文献:

https://www.dcine.com/2016/01/28/alphago/

http://www.afenxi.com/post/8713

http://geek.csdn.net/news/detail/59308

http://blog.csdn.net/malefactor/article/details/50631180

http://www.leiphone.com/news/201603/Q1cWFZjnGl1wc4m1.html

人机大战之AlphaGo的硬件配置和算法研究的更多相关文章

  1. 人机大战中AlphaGo及其执子人黄士杰

    2016年3月9日注定要写入围棋界的历史.IT界的历史以及科学界的历史.当天,韩国著名围棋棋手李世石VS谷歌AlphaGo的人机大战赛在韩国首尔举行.对弈的一方为拥有1200多个处理器的谷歌人工智能系 ...

  2. 随便谈谈alphago与人机大战

    3月16日历时8天的人机大战终于落下帷幕,alphago以4:1的比分击败了当年如日中天的李世石.这个结果让我这个围棋爱好者+计算机爱好者百感交集…… ——一个时代落幕了,一个新的时代开启了. 这次人 ...

  3. 世界围棋人机大战、顶峰对决第二战:围棋世界冠军Lee Sedol(李世石,围棋职业九段)对战Google DeepMind AlphaGo围棋程序,AlphaGo再次胜出!

    感觉在哔哩哔哩(bilibili)上看比赛直播比较好,一直可以看到比赛的直播画面,还能听到英文解说和中文主持人的解说.YouTube上是不错,但是一方面爬梯子比较卡,另一方面只能听到英文解说. 韩国著 ...

  4. 我与小娜(36):人机大战第五局,AlphaGo必胜!

    我与小娜(36):人机大战第五局,AlphaGo必胜!       小娜知道,细致阅读论文"Mastering the game of Go with deep neural network ...

  5. 如何查看LINUX 硬件配置信息

    如何查看LINUX 硬件配置信息 在网上找了N久,发现了一篇不错的文档,转载一下: 1.查看机器所有硬件信息: dmidecode |more dmesg |more 这2个命令出来的信息都非常多,所 ...

  6. C/C++通过WMI和系统API函数获取获取系统硬件配置信息

    转载:http://www.cnblogs.com/renyuan/archive/2012/12/29/2838716.html 转载:http://blog.csdn.net/jhqin/arti ...

  7. 【Spark学习】Apache Spark集群硬件配置要求

    Spark版本:1.1.1 本文系从官方文档翻译而来,转载请尊重译者的工作,注明以下链接: http://www.cnblogs.com/zhangningbo/p/4135912.html 目录 存 ...

  8. C#程序中获取电脑硬件配置信息的一种方法

    本文介绍获取cpu信息和内存信息的方法,根据本文所举例的代码可以举一反三获取更多信息. 获取cpu名称的方法: public string GetCpuInfo() { ManagementObjec ...

  9. LINUX查看硬件配置命令

    LINUX查看硬件配置命令   系统 # uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinf ...

随机推荐

  1. SQL数据库

    SQL是Structured Query Language(结构化查询语言)的缩写.SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言.在使用它时,只需要发出“做什么”的命令,“怎么做” ...

  2. Spark中常用工具类Utils的简明介绍

    <深入理解Spark:核心思想与源码分析>一书前言的内容请看链接<深入理解SPARK:核心思想与源码分析>一书正式出版上市 <深入理解Spark:核心思想与源码分析> ...

  3. JQuery调用Servlet实现文件下载

    jsp页面上的txt附件,点击后浏览器默认直接打开,结果是乱码. 因为用户上传的txt文件可能是ANSI.Unicode.UTF-8编码的任意一种,上传时后台获取文件内容重写一遍保证浏览器打开正常太过 ...

  4. 安装Openfile环境和组件XMPP

    打开ProFTPD和Apache Web Server 安装Openfile 在系统偏好设置中打开Openfile,开启Openfile状态 在safair浏览器中输入127.0.0.1:9090 配 ...

  5. php设计模式--单例模式

    单例模式(Singleton Pattern 单件模式或单元素模式) 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 单例模式是一种常见的设计模式,在计算机系统中,线程池.缓 ...

  6. JS实现的简单横向伸展二级菜单

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. tomcat的CATALINA_HOME可以不用设置

    不配置tomcat的环境变量也是可以运行的 用记事本打开tomcat/bin目录下面的startup.bat 在文本的前一部分有下面的脚本代码 rem Guess CATALINA_HOME if n ...

  8. JS-reverse(数组内容颠倒)

    var arr1 = [ 1,2,3,4,5,6 ];// arr1.reverse();// alert( arr1 ); //怎么颠倒字符串呢? var str = 'abcdef';alert( ...

  9. shell编写mysql备份工具

    如需转载,请经本人同意. 这是之前写的一个备份脚本,调用的备份工具是xtrabackup 编写思路是:每周一全备份,备份后提取lSN号,对备份文件进行压缩,其余时候在LSN的基础上进行增量备份,并对3 ...

  10. BZOJ2888 资源运输(LCT启发式合并)

    这道题目太神啦! 我们考虑他的每一次合并操作,为了维护两棵树合并后树的重心,我们只好一个一个的把节点加进去.那么这样一来看上去似乎就是一次操作O(nlogn),但是我们拥有数据结构的合并利器--启发式 ...