您好、欢迎来到现金彩票网!
当前位置:秒速时时彩登录 > 搜索博弈树 >

AlphaGo背后的搜索算法:蒙特卡罗树搜索 alphago 代码

发布时间:2019-06-03 23:53 来源:未知 编辑:admin

  昨天(3月9日)下午,经过三个多小时的较量,韩国棋手李世石宣布向谷歌人工智能AplphaGo认输,意味着人工智能获得了这场人机世纪之战的第一场胜利。而此前AlphaGo已经以平等条件击败了欧洲围棋冠军樊麾。

  有专家在赛后评论说,AlphaGo的胜利只能算是算法的胜利,因为人工智能目前只是一种算法程序,没有道德,也没有情感,更谈不上情感。

  小编其实认为这并没有错,而且就算李世石最后输给了AlphaGo,这样不代表人类输给了机器人。因为这台打败了人类最高智能代表的机器,是由人类一手精心打造的,其内部的算法也是众多科学家一步一步改进得来的。

  本文的主题,就是AlphaGo能够成功击败专业棋手的功臣之一:蒙特卡罗树搜索(Monte Carlo Tree Search)。

  我们知道,围棋有着明确的游戏规则,其中不存在随机或运气成分(如掷骰子或洗牌)。这类游戏都可以归类为所谓的完美信息博弈(perfect information games)。在完美信息博弈中,每时点参与人采取一个行动,每个参与人在其决策的同时知道以前所有的行动。

  因此,理论上我们是可以构建一个包含了所有可能结果的树,因为游戏中所有的一切都是有规则可循的(fully determined)。几乎所有的弈棋程序,都是依靠其强大、精确的计算能力,来预测好的下法。

  AlphaGo并不是第一个智能弈棋程序。1997年时,已有超级电脑深蓝战胜国际象棋棋王卡斯帕罗夫的先例。那么为什么深蓝没有乘胜追击,挑战围棋呢?这是因为IBM在比赛结束后就让深蓝退役了。O(∩_∩)O~

  我们知道,围棋棋盘横竖各有19条线个落子点,双方交替落子,这意味着围棋总共可能有10^171(1后面有171个零)种可能性。这超过了宇宙中的原子总数是10^80(1后面80个零)!

  而传统AI一般采用的是暴力搜索方法(深蓝就是这样干的),就所有可能存在的下法构建一个树。这样自然根本无法应对围棋游戏啦。

  “蒙特卡洛树搜索”是一种启发式的搜索策略,能够基于对搜索空间的随机抽样来扩大搜索树,从而分析围棋这类游戏中每一步棋应该怎么走才能够创造最好机会。

  一位名叫苏椰的知乎用户举了这样一个例子,以通俗的语言进行了解释:假如筐里有100个苹果,让我每次闭眼拿1个,挑出最大的。于是我随机拿1个,再随机拿1个跟它比,留下大的,再随机拿1个……我每拿一次,留下的苹果都至少不比上次的小。拿的次数越多,挑出的苹果就越大,但我除非拿100次,否则无法肯定挑出了最大的。这个挑苹果的算法,就属于蒙特卡罗算法:尽量找好的,但不保证是最好的。

  需要说明的是,蒙特卡罗树搜索并不是只有一种算法,而是一类算法。其中最流行的算法之一就是UCT(upper confidence bounds applied to trees)。

  据站介绍,第一个使用UCT算法的围棋程序是MoGo。而且,MoGo在2008年的美国围棋公开赛上,第一次在19x19的全尺寸棋盘上击败了职业选手(当然与AlphaGo不同,这位职业选手让了9个子)。

  虽然“蒙特卡洛树搜索”在此前一些弈棋程序中也有采用,在相对较小的棋盘中能够很好地发挥作用,但在正规的全尺寸棋盘上,这种方法的缺陷也体现出来了,因为涉及的搜索树实在太大了。

  但AlphaGo采用了很聪明的策略,利用深度学习的方法降低搜索树的复杂性。因此“深度学习”和“蒙特卡洛树搜索”就成为它的两个关键因素。在每个模拟游戏中,AlphaGo都有两个大脑指引它进行搜索:价值网络(value network)和政策网络(policy network)。“政策网络”观察棋盘布局企图找到较好的下法,“价值网络”则预测这样下的话对方棋手赢棋的可能。结合这两个建议,AlphaGo最终决定怎样落子才是胜算最大的。

  当然可以,而且一个使用UCT算法实现的Python弈棋程序只有400行代码左右哦!想要下载试玩的话,就看本期另外一篇推送吧。

  本站文章除注明转载外,均为本站原创或编译,如需转载,请联系微信公众号“编程派”获得授权。转载时,应注明来源、作者及原文链接

  MCTS蒙特卡洛树搜索原理,分为四个步骤:1.选择。从根节点开始,按一定策略,搜索到叶子节点。2.扩展。对叶子节点扩展一个或多个合法的子节点。3.模拟。对子节点采用随机的(即称为蒙特卡洛的缘由)方式模...博文来自:zkq_1986的博客

  2016年AlphaGo横空出世,在AI界和围棋界掀起了一阵腥风血雨。宝刀一出,无数围棋高手如樊麾,李世石,柯洁等人先后被斩于马下。正所谓:十步杀一人,千里不留行。事了拂衣去,深藏功与名。AlphaG...博文来自:gdhu

  安妮允中编译整理本文经AI新媒体量子位(公众号ID:qbitai)授权转载,转载请联系出处。AlphaZero,DeepMind阵营的最强棋士。关于AlphaZero的理论分析已经不少,最近Appli...博文来自:iFlyAI的博客

  点击打开链接题意:给定一个9*9的棋盘,问黑子能否在下一步将白子围住。由于数据不大,可以直接将.换成x,用DFS搜索。ACcode#include#include#include#includ...博文来自:Egqawkq的博客

  选自int8Blog机器之心编译我们都知道DeepMind的围棋程序AlphaGo,以及它超越人类的强大能力,也经常会听到「蒙特卡洛树搜索」这个概念。事实上,蒙特卡洛树搜索是在完美信息博弈场景中进行决...博文来自:产业智能官

  围棋中的蒙特卡洛方法其思想很简单,对于当前棋局,随机地模拟双方走步,直到分出胜负为止。通过多次模拟,计算每个可下棋点的获胜概率,选取获胜概率最大的点走棋。在围棋程序中实际使用的是一种被称为蒙特...博文来自:wydbyxr的博客

  1.什么是蒙特卡洛方法(MonteCarlomethod)蒙特卡罗方法也称统计模拟方法,是1940年代中期由于科学技术的发展和电子计算机的发明,而提出的一种以概率统计理论为指导的数值计算方法。是指使用...博文来自:bitcarmanlee的博客

  我是在的2008年第17周的RoundUp里看到这篇文章的推荐的,出于自己对中国象棋及其计算机博弈方面的兴趣,虽然对于围棋和围棋AI一窃不通,但还是挺仔细地阅读了这篇文章...博文来自:赖勇浩的编程私伙局

  弈棋计算机弈棋自古被视为一种关乎智力的高级挑战。和其他智力测试相比,弈棋具有直接对抗的特点,没有什么比在紧张的对局中看到对手一手精妙凶狠的棋招更能让人感觉到一种智力上的刺激和挑战了。弈棋相比于其他...博文来自:咔呢哇的博客

  转载:蒙特卡洛介绍  2.蒙特卡洛的应用  3.蒙特卡洛积分 ...博文来自:SneakerDZ的博客

  2015年9月7日周一由JeffBradberry留   与游戏AI有关的问题一般开始于被称作完全信息博弈的游戏。这是一款对弈玩家彼此没有信息可以隐藏的回合制游戏且在游戏技术里没有运气元素(如扔骰子或...博文来自:z84616995z的专栏

  最近这个AlpahGo非常的火呢。Goolge的alphaGo赢了韩国围棋大师李世石。一下子感觉还是google大神厉害。比卖假药的百度强不少。博文来自:freewebsys的专栏

  蒙特卡洛树搜索的基本概念蒙特卡洛树搜索会多次模拟博弈,并尝试根据模拟结果预测最优的移动方案。蒙特卡洛树搜索的主要概念是搜索,即沿着博弈树向下的一组遍历过程。单次遍历的路径会从根节点(当前博弈状态)延伸...博文来自:Haward

  阿尔法狗的利器:蒙特卡洛算法,看完就懂了!二十世纪最有影响力的十大算法之一:蒙特卡洛方法蒙特卡洛方法以及python实现...博文来自:VIEO

  蒙特卡洛方法(MonteCarlomethod,也有翻译成“蒙特卡罗方法”)是以概率和统计的理论、方法为基础的一种数值计算方法,将所求解的问题同一定的概率模型相联系,用计算机实现统计模拟或抽样,以获...博文来自:yimixgg的博客

  最优化问题的计算方法是很重要的,因为很多最优化的问题难于解析地解出来,对于动态模拟,通常人们能够解析地确定定常态的行为,但是关于瞬态行为的研究则需要计算机模拟,概率模型更加复杂,不具有时间...博文来自:diyhoo的编程小屋

  近几年来,随着谷歌的阿尔法狗和阿尔法元的问世,蒙特卡洛树搜索(MCTS),作为一种不需要特定领域的先验知识的搜索算法逐渐被人们重视起来。其可以在无任何已知知识,而仅需要了解模拟规则和结束状态的情况下,...博文来自:bowean的博客

  原作DylanDjian栗子棋编译整理量子位出品公众号QbitAI遥想当年,AlphaGo的Master版本,在完胜柯洁九段之后不久,就被后辈Alph......博文来自:量子位

  蒙特卡洛(MonteCarlo)法是一类随机算法的统称。随着二十世纪电子计算机的出现,蒙特卡洛法已经在诸多领域展现出了超强的能力。在机器学习和自然语言处理技术中,常常被用到的MCMC也是由此发展而来。...博文来自:白马负金羁

  概述蒙特卡罗方法是一种计算方法。原理是通过大量随机样本,去了解一个系统,进而得到所要计算的值。它非常强大和灵活,又相当简单易懂,很容易实现。对于许多问题来说,它往往是最简单的计算方法,有时甚至是唯一可...博文来自:Machine Learning with Peppa

  首先折腾AlphaGo是用python写的。上次已经把web跑起来了,但是和机器学习好像没有太多关心。这次要把环境弄好。搭建python环境.2,目录分析Al...博文来自:freewebsys的专栏

  点击上方“程序人生”,选择“置顶公众号”第一时间关注程序猿(媛)身边的故事PyTorch()是一个人工神经网络开发库,利用PyTor......博文来自:程序人生的博客

  蒙特卡洛方法在工程应用中是怎么回事呢?她的数学原理是怎么回事呢?她又有哪些实际应用呢?就自己最近的体会写成下文,由于本人水平有限,恳请各位批评指正。2蒙塔卡洛是什么?高数、概率论、线性代数是数学的三大...博文来自:u012230579的专栏

  一、背景  蒙特卡罗模拟方法(MonteCarlosimulation)诞生于上个世纪40年代美国的”曼哈顿计划”,名字来源于赌城蒙特卡罗。蒙特卡罗算法从某种意义上而言,就是一种赌博算法。  它是一种...博文来自:Hansonlet

  链接蒙特卡洛方法(MonteCarlomethod,也有翻译成“蒙特卡罗方法”)是以概率和统计的理论、方法为基础的一种数值计算方法,将所求解的问题同一定的概率模型相联系,用计算机实现统计模拟或抽样,以...博文来自:天马行空的博客

  CMU计算机学院暨机器人研究所博士邓侃在本文中,尝试用大白话,通俗地解释AlphaGoZero,弄清楚蒙特卡洛树搜索(MonteCarloTreeSearch,MCTS)、深度学习启发函数和置信上限这...博文来自:zchang81的博客

  编译reason_W出品 AI科技大本营(公众号ID:rgznai100)长久以来,计算机在围棋领域不可能达到人类专家的水平一直是学术界的主流观点。围棋,被认为是人工智能的“圣杯”——一个我们原本...博文来自:AI科技大本营

  本篇博客为《MonteCarloTreeSearch–beginnersguide》的翻译,水平有限,有兴趣的朋友可以直接阅读原文。  很长一段时间以来,学术界普遍认为,机器在围棋领域达到人类大师...博文来自:Sual

  中self用法详解) 写的很不错,推荐看一看...博文来自:CSDN5529的博客

  最近比较有空,大四出来实习几个月了,作为实习狗的我,被叫去研究Docker了,汗汗! Docker的三大核心概念:镜像、容器、仓库 镜像:类似虚拟机的镜像、用俗话说就是安装文件。 容器:类似一个轻量...博文来自:我走小路的博客

  本篇文章是根据我的上篇博客,给出的改进版,由于时间有限,仅做了一个简单的优化。相关文章:将excel导入数据库2018年4月1日,新增下载地址链接:点击打开源码下载地址十分抱歉,这个链接地址没有在这篇...博文来自:Lynn_Blog

  多重背包问题:有N种物品和容量为V的背包,若第i种物品,容量为v[i],价值为w[i],共有n[i]件。怎样装才能使背包内的物品总价值最大?网上关于“多重背包”的资料倒是不少,但是关于怎么实现O(N*...博文来自:flyinghearts的专栏

  学事件分发是为了什么呢?还不是为了解决滑动冲突的。 实际上,如果仅仅是为了解决滑动冲突的,大可不必看源码,只需要掌握事件分发的外在规律即可。 只要记住这张图,再明白内部拦截法和外部拦截法,滑动冲突...博文来自:的博客

  本文主要介绍代码注入攻击的一种特殊类型:XPath 盲注。 如果您不熟悉 XPath 1.0 或需要了解基础知识,请查看 W3 Schools XPath 教程。您还可以在 developerWor...博文来自:WEB安全测试学习中……

  最近项目在使用树莓派,需要在树莓派上挂载多个USB转串口模块,但是linux下识别USB设备通常是按照插入顺序命名的,比如第一个插入就是USB0第二个USB1如此类推。。。这样就给我们写脚本或者写程序...博文来自:-Yo Law-

  在之前两次章我们都已经 说完了对 信息读写 和核验的操作, 那么剩余的类其实 有只用调用方法即可, 如果不会的可以看 JAVA小项目-银行管理系统(图形化界面)4-验证 博文来自:知足常乐的博客

  数据分析之 – 离群值(Outliers)   一:什么是Outliers Outliers是统计学专业术语,是指相比一组数据中的其它数据的极限值   二:极限值意味什么  1. 决定...博文来自:关注微信公众号【OpenCV学堂】

  扫二维码关注,获取更多技术分享 本文承接之前发布的博客《 微信支付V3微信公众号支付PHP教程/thinkPHP5公众号支付》必须阅读上篇文章后才可以阅读这篇文章。由于最近一段时间工作比较忙,...博文来自:Marswill

  基本功能1. 自定义标题栏。(标题栏不做任何功能)2. 有左右发送按钮。(这个只能自己和自己聊天哦,所以有左右发送按钮) (1)点击左边按钮发送按钮,在ListView的左侧显示。 (...博文来自:To_be_Designer

  jquery/js实现一个网页同时调用多个倒计时(最新的) 最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦! //js ...博文来自:Websites

  强连通分量: 简言之 就是找环(每条边只走一次,两两可达) 孤立的一个点也是一个连通分量   使用tarjan算法 在嵌套的多个环中优先得到最大环( 最小环就是每个孤立点)   定义: int Ti...博文来自:九野的博客

  MATLAB编程题 题目描述:从一个NxM的矩阵C中找出与1xM的矩阵P欧氏距离最小的某一行row,要求不能用循环!!! 输入:矩阵C(NxM)、矩阵P(1xM) 输出:row 解题思...博文来自:henryzhihua

  command窗口是命令窗口,即为sqplus窗口,有命令提示符,识别sqlplus命令,基本的命令都可以执行 sql仅可执行DDL、select、DML等...博文来自:Ape55的博客

http://oodlesalootle.com/sousuoboyishu/117.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有