美文网首页
2016版Alphago的方法简析

2016版Alphago的方法简析

作者: 柒柒的自言自语 | 来源:发表于2017-05-24 16:49 被阅读0次

最近入坑用AI打游戏,决定先去扒alphagao是怎么做的

围棋AI早期利用围棋知识、棋谱进行特征匹配之后拥抱蒙特卡洛树搜索,在Alphago中在蒙特卡罗树搜索的框架下,使用了监督学习和增强学习的方法。数据来自160,000盘6-9段玩家的围棋对战,共29,400,000个棋局

下面是算法大致构架


说明:

蒙特卡罗树搜索

个人认为蒙特卡洛树搜索是逻辑最为复杂的地方

首先熟悉一下蒙特卡罗方法

蒙特卡罗方法是一种统计模拟方法,是使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。当所求解问题是某种随机事件出现的概率,或者是某个随机变量的期望值时,通过“实验”的方法,以这种事件出现的频率估计这一随机事件的概率,或者得到这个随机变量的某些数字特征,并将其作为问题的解。它是一种有偏估计。

举个栗子:

希望得到π值的估计,那么就在一个圆的外切正方形内随机放置100000个点,通过坐落在园内的点与全部点的比来得到π的估计。

再如计算积分,通过模拟点落在积分曲线内部的概率得到这部分面积的估计。

蒙特卡罗树搜索和蒙特卡罗方法还是不一样的,前者没有是无偏的。蒙特卡罗方法做的是概率估计而蒙特卡罗树搜索却可以做到局面估计。

蒙特卡洛树搜索主要涉及到选择、扩展、模拟以及反向更新四个步骤

选择过程会兼顾胜率和多样性

具体到Alphago的算法:

选择:

有兼顾到reward和多样性

扩展:

如果到达的叶子节点访问次数不足阈值,是不做扩展的,仅仅更新价值估计

如果超过了阈值,则做拓展,拓展节点访问次数置为0,并用SL Policy Network求取落字先验

模拟:

使用value net进行估计

使用rollout net快速走子进行估计

综合二者得到扩展的叶节点的价值

反向更新:

各节点的访问次数更新

各节点的价值更新(取均值)

落子选择:

选择访问次数最多的

相关文章

  • 2016版Alphago的方法简析

    最近入坑用AI打游戏,决定先去扒alphagao是怎么做的 围棋AI早期利用围棋知识、棋谱进行特征匹配之后拥抱蒙特...

  • UICollectionView方法简析

    1,问题:cell与cell的间距首先了解一个布局的方向问题,竖直方向---->列,水平方向---->行思考:ce...

  • 银行理财产品投资ABS简析

    银行理财产品投资ABS简析 一段棉线的投资思考 本简析基于作者投资业务经验撰写,选用方法与核心观点如有不妥,还请读...

  • 简析 Swift 的模块系统

    简析 Swift 的模块系统 简析 Swift 的模块系统

  • mybatis-spring解析

    1、概述 原生Mybatis源码简析(上)原生Mybatis源码简析(下)在介绍原生Mybatis源码简析文章中,...

  • 简析Swift和C的交互

    简析Swift和C的交互 简析Swift和C的交互

  • 数组方法简析一

    数组方法里push、pop、shift、unshift、join、split作用简析 arr.push(value...

  • Java析构方法

    析构方法与构造方法相反,当对象脱离其作用域时(例如对象所在的方法已调用完毕),系统自动执行析构方法。析构方法往往用...

  • Java Object 方法简析

    Java中,Object类提供了一下方法 1. getClass 这是一个final且native方法,即不允许子...

  • PHP面向对象基础知识整理

    面向对象由类、成员(字段)、方法组成,方法大致分为三种,分别是普通方法、构造方法、析构方法,具体区别如下: 析构方...

网友评论

      本文标题:2016版Alphago的方法简析

      本文链接:https://www.haomeiwen.com/subject/igkoxxtx.html