笑谈AlphaGo对战人类从模仿到超越之奥义
起源
故事从一个围棋说起,人类赖以自豪的智慧,为什么这么说,因为据统计,从这19乘19的方格中摆棋,可以有10的340次方的可能,用一个更形象的比拟,全宇宙的原子加起来,也比这个数要小。
也就是说,如果计算机靠暴力破解,是无法得到解的,而人凭着棋感可以走出非常高明的棋局,这就是为什么人那么高傲。
可是不幸的是,在IT男的世界里,总有一群倔人,他们决定做一只Go,可以碾压人类智慧的Go,全称阿法Go。
Go的进化历程
从官方公开的论文来看,从左到右是四只Go,英文名如上,看起来非常让人困惑,至少身为中国人的我,有一种看了等于白看的感觉,所以我决定根据它们的特点给它们起个易于理解的名字,例如Merry,笑话。
从左到右,名字为业余Go,模拟Go,进化Go和胜率Go
下面对这四只Go从输入到输出一一论述
业余Go
说它业余,是因为这只Go,只能模仿人类选手的百分之二十的行为。可以用弱智来形容。虽然如此,但是它有一个好处,快。计算快,因为简单。
构成
以一层神经网络构成
输入
以一个棋局来做输入,例如当前棋局的白子和黑子的位置,例如下图
输出
输出下一步所有可能的概率,例如下图
要让一个单层的神经网络变成一个业余Go,IT男把人类在网络上下棋的棋局保存下来作为训练数据,来让业余Go在读到训练数据的棋盘的时候,模拟人类下一步的走棋。
通过一些日子的训练,业余Go从零基础成了一个业余的。
模仿Go
模仿Go跟业余Go是类似的,它们唯一的不同,是模仿Go比业余Go复杂,其他,例如模仿人类走棋,输入数据,输出数据都是一样的
构成
它以多层神经网络构成
如下图
可以看到,模拟Go的结构是由13层的卷积加一个全连接层构成。
复杂的结构也代表着它比业余Go有更好的功力,所以同样用人类选手的下棋数据,对它进行同样的训练,它可以模仿百分之五十的人类下棋的功力。
进化Go
进化Go,顾名思义,就是它自己可以一步一步的成为武林高手。有一个非常高大上的的名字:强化学习。
进化Go一开始,是通过复制模拟Go生成的,然后进化Go就开始跟模拟Go进行武功比试,它们之间会产生千万计的棋局,然后进化Go就从这些生成的棋局中对自己进行调参,也就是优化,然后变成了进化Go一代。
然后进化Go一代又跟进化Go零代进行武功比试,如此类推。
有人可能就疑惑了,为什么进化Gon代要跟进化Gon-1代比试来提高自己的武功?
大家想想,练武的过程,开始大家只会一点武功,那么自然找个跟自己一样烂的人比试来吸取经验,随着经验的增多,武功也会比以前好,那么就要找武功更好的人来过招,一直迭代下去。
进化Go也是这样的一个过程
所以它的成长如下图
可以看出,随着Go的不断进化,它变得越来越强大,但是可以看出,它依然无法跟人类顶尖高手比拟。
胜率Go
模拟Go是模拟下一步走棋的,而胜率Go是计算当前局面的胜率的。
胜率Go的构造跟模拟Go类似,差别是它的输出是一个数字,而不是19乘19的概率。
它的训练数据通过进化Go之间的对弈生成,并通过统计估算出局面的胜率,作为训练数据
可以看出,胜率Go跟进化Go之间没有什么大的武功进步。
是什么让这些Go的武功可以碾压人类智慧?那是因为它们遇到了一颗树,这棵树学名叫蒙特卡洛搜索树
蒙特卡洛搜索树
这颗树,是把棋局的走势,变成一棵树,叶子节点就是决出胜负的棋局,例如当前棋局为第二层,这棵树就会通过利用业余Go模拟1000次随机走子,直到走到决出胜负为止,然后就可以估计当前节点走下去胜利的局数和失败的局数,继而得到一个胜率的估计值
那么Go通过结合胜率Go计算下一节点的胜率,通过模拟1000次随机走子计算出下一节点胜率的估计值,通过模拟Go计算出下一步走子的概率,综合这三项得出综合评分,并取最高分的为下一步走子。
综述
可以看出,AlphaGo并没有从智慧上胜过人类,而只是通过算力的优势,结合比较好的策略,来完胜人类选手。所以现在谈失业还早。好好上班。
笑谈AlphaGo对战人类从模仿到超越之奥义的更多相关文章
- 曲率已驱动了头发——深度分析谷歌AlphaGo击败职业棋手
这篇是我们自开设星际随笔以来写得最长的一篇.我们也花了不少力气.包括把那5盘棋各打了两遍的谱,包括从Nature官网上把那篇谷歌的报告花了200元下载下来研究它的算法(后来发现谷 歌网站上可以免费下载 ...
- 天棋哥哥大战AlphaGo
天棋哥哥大战AlphaGo Time Limit: 1 Sec Memory Limit: 128 MB Submit: 20 Solved: 9 [Submit][Status][Web Boa ...
- AlphaGo的前世今生(二)AlphaGo: Countdown to AI Revolution
这是本专题的第二节,在这一节我们将以David Silver等人的Natrue论文Mastering the game of Go with deep neural networks and tree ...
- 关于 AlphaGo 论文的阅读笔记
这是Deepmind 公司在2016年1月28日Nature 杂志发表论文 <Mastering the game of Go with deep neural networks and tre ...
- (转) 一张图解AlphaGo原理及弱点
一张图解AlphaGo原理及弱点 2016-03-23 郑宇,张钧波 CKDD 作者简介: 郑宇,博士, Editor-in-Chief of ACM Transactions on Intellig ...
- 【转】AlphaGo与人工智能
AlphaGo与人工智能 在之前的一篇文章中我指出,自动驾驶所需要的“视觉识别能力”和“常识判断能力”,对于机器来说是非常困难的问题.至今没有任何机器可以在视觉方面达到驴的水平,更不要说和人比.可是最 ...
- 人机大战中AlphaGo及其执子人黄士杰
2016年3月9日注定要写入围棋界的历史.IT界的历史以及科学界的历史.当天,韩国著名围棋棋手李世石VS谷歌AlphaGo的人机大战赛在韩国首尔举行.对弈的一方为拥有1200多个处理器的谷歌人工智能系 ...
- 霍金:AI或许能根除疾病和贫穷,但也可能摧毁人类 | GMIC 2017
在我的一生中,我见证了社会深刻的变化.其中最深刻的,同时也是对人类影响与日俱增的变化,是人工智能的崛起.简单来说,我认为强大的人工智能的崛起,要么是人类历史上最好的事,要么是最糟的.我不得不说,是好是 ...
- ZUFEOJ 2395 天棋哥哥大战AlphGo
Description3月15日,人机围棋大战巅峰对决在韩国首尔落下帷幕.五番棋的最后一局中,韩国著名棋手李世乭尽管与人工智能“AlphaGo”缠斗至官子阶段,但在双双进入读秒后最终还是投子认输,以总 ...
随机推荐
- python设计模式之模版方法设计模式
我们在使用python的flask框架时,可能会经常用到生命周期函数如:before_request, before_first_request,或者信号等,刚开始学的时候就想只要写一个函数,然后加上 ...
- TypeScript学习——数组、元组、接口(2)
数组 数组类型注解 const numberArr: (number | string)[] = [1, '2', 3]; //既可以是number 也可以是string const stringAr ...
- Python之浅谈装饰器
目录 闭包函数 装饰器 迭代器 闭包函数 就是将原先需要调用好几遍的函数和参数写入一个包内,下次调用时一起调用 def name(x): x=1 def age(): print(x) return ...
- django 类视图的使用
使用django框架也有挺长时间了,但是一直都没有用过django的类视图,因为之前跟着网上教程学习时,觉得类视图是进阶的知识,可能目前还达不到吧 但今天在做项目的时候用到了,感觉真的太方便了吧,而且 ...
- iWS工作流加载顺序
1.初次加载-LoadDataFields(IsPostBack=false); 2.保存-LoadDataFields(IsPostBack=true)-ValidateDataFields-Sav ...
- openstack cinder-backup流程与源码分析
在现在的云计算大数据环境下,备份容灾已经变成了一个炙手可热的话题,今天,和大家一起分享一下openstack是怎么做灾备的. [首先介绍快照] snapshot可以为volume创建快照,快照中保存了 ...
- Dubbo 负载均衡的实现
前言 负载均衡是指在集群中,将多个数据请求分散在不同单元上进行执行,主要为了提高系统容错能力和加强系统对数据的处理能力. 在 Dubbo 中,一次服务的调用就是对所有实体域 Invoker 的一次筛选 ...
- MVC + EFCore 项目实战 - 数仓管理系统2- 搭建基本框架配置EFCore
本次课程就正式进入开发部分. 首先我们先搭建项目框架,还是和之前渐进式风格保持一致,除必备组件外,尽量使用原生功能以方便大家理解. 开发工具:vs 2019 或以上 数据库:SQL SERVER 20 ...
- C++中复杂声明和定义的辨析
0x00 前言 c++中的复杂声明往往令人无法下手,经常使人搞错这到底声明的是一个指针还是指针函数.但其实c++对于复杂声明是遵循一定的规则的,叫做变量名—>右--左-右规则. 0x01 规则解 ...
- Resolve Error While Windows 10 Updating Cross Multiple Updating Versions (Such as Error 0x800f0831 when Update KB4556799) | 解决跨多个更新版本升级Windows 10时遭遇错误的问题(如 KB4556799 / 错误0x800f0831)
Upgrade memory size for a laptop recently, the OS on the laptop was Windows 10 with a version of 201 ...