开发 | One-Page AlphaGo——十分钟看懂 AlphaGo 的核心算法!

AI科技评论按:本文作者夏飞,清华大学与卡内基梅隆大学毕业,现于谷歌从事技术研发工作。本文是对《自然》上发表的知名论文“Mastering the game of Go with deep neural networks and tree search”进行的总结,对 AlphaGo 的算法结构进行了概括。原总结文用英语写就,经AI科技评论编译。

下文概括了围棋借助人工智能在 2016 年实现的突破。

围棋是一个完全信息博弈问题。而完全信息博弈,通常能被简化为寻找最优值的树搜索问题。它含有 b 的 d 次方个可能分支,在国际象棋中 b≈35,d≈80;而在围棋中 b≈250,d≈150。很显然,对于围棋,用穷举法或简单的寻路算法(heuristics)是行不通的。但有效的方法是存在的:

  • 从策略(policy) P(a|s) 中取样 action,降低搜索广度
  • 通过位置评估降低搜索深度
  • 把策略和值用蒙特卡洛树搜索(MCTS)结合起来。

通常的步骤是:

  • 用一个 13 层的 CNN,直接从人类棋步中训练一个监督学习策略网络 Pσ。输入为 48 x 19 x 19 的图像(比方说,它的组成棋子颜色 是 3 x 19 x 19),输出是使用 softmax 层预测的全部落子的概率。精确度是 55.7%。
  • 训练一个能在运行时快速取样 action 的快速策略 Pπ。这会用一个基于小型模式特征的线性 softmax。精确度是 24.2%,但它计算一次落子只用 2 微秒,而不像 Pσ 需要 3 毫秒。
  • 训练一个增强学习策略网络 Pρ ,通过优化博弈结果来进一步提升监督策略网络。这把策略网络向赢棋优化,而不是优化预测精确度。本质上,Pρ 与 Pσ 的结构是一样的。它们的权重使用相同值 ρ=σ 初始化。对弈的两个选手,是当前策略网络 Pρ 和随机(防止过拟合)选择的此前的策略网络迭代。
  • 训练一个价值网络(value network)Vθ,来预测强化学习策略网络自己和自己下棋的赢家。该网络的架构和策略网络类似,但多出一个特征平面(当前玩家的颜色),并且输出变成了单一预测(回归,均方差损失)。根据完整棋局来预测对弈结果,很容易导致过拟合。这是由于连续落子位置之间高度相关,只有一子之差。因此,这里使用了强化学习策略网络自己与自己对弈新生成的数据。该数据从包含 3000 万个不同位置的独立棋局中抽取。
  • 把策略网络、价值网络、快速策略和蒙特卡洛树搜索结合起来。一个标准的蒙特卡洛树搜索过程包含四步:选择、扩展、评估、备份。为了让大家更容易理解,我们只粗略讲了讲它如何在模拟中选择状态的部分(如对数学感兴趣,请到原始论文中找公式)。

状态分数=价值网络输出+快速运行(fast rollout)的策略结果+监督学习策略网络输出

高状态得分(或者说落子)会被选择。价值网络输出和快速运行策略结果是评估函数,在叶子节点进行评估(注意,为了评估快速运行,需要一直到最后一步)。监督学习策略网络输出是一个当前阶段的 action 概率,充作选取分数的奖励分。该分数会随访问次数而退化,以鼓励探索。注意强化学习策略网络只被用于辅助,来生成价值网络,并没有直接在蒙特卡洛树搜索中使用。

到这就结束了,以上就是战胜了人类的 AlphaGo 算法!

“12小时零基础入门深度学习”,欢迎来玩!

“AlphaGo的划时代意义在于它不仅仅缩短了机器与人的智能距离,还将颠覆人与人智商差异的感知 。” 这是在去年AlphaGo战胜李世石后, 有业内人士如是说。

The rich get richer,门外汉也想窥探人工智能背后的神秘。AI慕课学院自上线以来推出了不少人工智能专业课程,有不少像小编这样的AI小白空有一腔热情却只能望而却步。现在,雷锋网携手AI慕课学院推出《12小时零基础入门深度学习》(线下周末班,仅50个名额),邀请了IOT农业机械和MLAQI预测算法项目的深度学习工程师Chris、“深度学习”和“无人驾驶”领域有丰富教学经验的Max博士、曾参与某大型算法金融项目研发的深度学习工程师杨杰等中外讲师,12小时现场授课,采用“探索+实践”的硅谷教学模式,用最流行的深度学习技能 CNN、RNN、VGG16、ResNet、InceptionCNN等动手操作9大项目,fastai中文社区最活跃的四位贡献者为你打开深度学习入门的那扇门,快速构建你的深度学习应用。目前课程回馈价599元,史上最低,欢迎来玩。

讲真,小编在一个月前知道“AI慕课学院” 在密谋这个课程福利的时候就已经悄悄预约了,名额有限,快来面基呀。

详情请点击“阅读原文”查看,或直接访问http://www.mooc.ai/course/92

原文发布于微信公众号 - AI科技评论(aitechtalk)

原文发表时间:2017-05-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏菩提树下的杨过

SqlTransaction事务使用示例

using System; using System.Data; using System.Data.SqlClient; using System.Co...

1878
来自专栏谈补锅

记录C#常用的代码片段

using Newtonsoft.Json; using Newtonsoft.Json.Linq;

962
来自专栏码匠的流水账

聊聊EurekaRibbonClientConfiguration

spring-cloud-netflix-eureka-client-2.0.0.RELEASE-sources.jar!/org/springframewor...

1171
来自专栏我和未来有约会

silverlight向服务器post数据类

using System; using System.Net; using System.Windows; using System.Windows.Co...

1995
来自专栏闻道于事

商城项目整理(三)JDBC增删改查

商品表的增加,修改,删除,订单表的增加,确认,用户表的查看,日志表的增加,查看 商品表建表语句: 1 create table TEST.GOODS_TABL...

5505
来自专栏DT乱“码”

简单的考勤系统

连接数据库类 package com.lianrui.it; import java.sql.Connection; import java.sql.Driv...

3509
来自专栏跟着阿笨一起玩NET

GB2312转换成UTF-8与utf_8转换成GB2312

1931
来自专栏积累沉淀

Hive2.0.0操作HBase 1.2.1报错解决

首先看错  org.apache.hive.service.cli.HiveSQLException: Failed to open new session: ...

2369
来自专栏码匠的流水账

聊聊spring cloud的AbstractLoadBalancingClient

本文主要研究一下spring cloud的AbstractLoadBalancingClient

852
来自专栏成长道路

JDBC动态SQL语句连接orcale数据库的工具类

import java.sql.Connection; import java.sql.DriverManager; import java.sql.P...

2520

扫码关注云+社区