阅读更多
本文转自:果壳网
作者:开明

1997年,国际象棋AI第一次打败顶尖的人类;2006年,人类最后一次打败顶尖的国际象棋AI。欧美传统里的顶级人类智力试金石,在电脑面前终于一败涂地,应了四十多年前计算机科学家的预言。

至少还有东方,人们自我安慰道。围棋AI长期以来举步维艰,顶级AI甚至不能打败稍强的业余选手。这似乎也合情合理:国际象棋中,平均每回合有35种可能,一盘棋可以有80回合;相比之下,围棋每回合有250种可能,一盘棋可以长达150回合。这一巨大的数目,足以令任何蛮力穷举者望而却步——而人类,我们相信,可以凭借某种难以复制的算法跳过蛮力,一眼看到棋盘的本质。

但是,无论人怎么想,这样的局面当然不可能永远延续下去。就在今天,国际顶尖期刊《自然》报道了谷歌研究者开发的新围棋AI。这款名为“阿尔法围棋”(AlphaGo)的人工智能,在没有任何让子的情况下以5:0完胜欧洲冠军,职业围棋二段樊麾。



AlphaGo与欧洲围棋冠军樊麾的5局较量。图片来源:参考文献[1]

这是人类历史上,围棋AI第一次在公平比赛中战胜职业选手。

AlphaGo的战绩如何?
此次比赛和以往不同。之前的比赛中,由于AI棋力比人类弱,人类选手都会让子,而且AI主要和业余段位的棋手比赛。而AlphaGo对战樊麾是完全公平的比赛,没有让子。职业二段樊麾出生于中国,目前是法国国家围棋队总教练,已经连续三年赢得欧洲围棋冠军的称号。

研究者也让AlphaGo和其他的围棋AI进行了较量,在总计495局中只输了一局,胜率是99.8%。它甚至尝试了让4子对阵Crazy Stone,Zen和Pachi三个先进的AI,胜率分别是77%,86%和99%。可见AlphaGo有多强大。

在接下来3月份,AlphaGo将和韩国九段棋手李世乭在首尔一战,奖金是由Google提供的100万美金。李世乭是最近10年中获得世界第一头衔最多的棋手。围棋是最后一个人类顶尖高手能战胜AI的棋类游戏。之前有人预测说,AI需要再花十几年才能战胜人类。所以这场比赛或许会见证历史,我们将拭目以待。



李世乭表示很荣幸自己将与电脑公平对弈。“无论结果如何,这都会是围棋史上极具意义的事件。”他说,“我听说谷歌Deep Mind的AI出人意料地强,而且正在变得更强。但我有自信至少这次能赢。”图片来源:tygem.com
AI下围棋到底有多难?

计算围棋是个极其复杂的问题,比国际象棋要困难得多。围棋最大有3^361 种局面,大致的体量是10^170,而已经观测到的宇宙中,原子的数量才10^80。国际象棋最大只有2^155种局面,称为香农数,大致是10^47。

面对任何棋类,一种直观又偷懒的思路是暴力列举所有能赢的方案,这些方案会形成一个树形地图。AI只要根据这个地图下棋就能永远胜利。然而,围棋一盘大约要下150步,每一步有250种可选的下法,所以粗略来说,要是AI用暴力列举所有情况的方式,围棋需要计算250^150种情况,大致是10^360。相对的,国际象棋每盘大约80步,每一步有35种可选下法,所以只要算35^80种情况,大概是10^124。无论如何,枚举所有情况的方法不可行,所以研究者们需要用巧妙的方法来解决问题,他们选择了模仿人类大师的下棋方式。

机器学习


研究者们祭出了终极杀器——“深度学习”(Deep Learning)。深度学习是目前人工智能领域中最热门的科目,它能完成笔迹识别,面部识别,驾驶自动汽车,自然语言处理,识别声音,分析生物信息数据等非常复杂的任务。



描述AlphaGo研究成果的论文成为了1月28日的《自然》杂志的封面文章。图片来源:Nature/Google DeepMind
AlphaGo 的核心是两种不同的深度神经网络。“策略网络”(policy network)和 “值网络”(value network)。它们的任务在于合作“挑选”出那些比较有前途的棋步,抛弃明显的差棋,从而将计算量控制在计算机可以完成的范围里,本质上和人类棋手所做的一样。

其中,“值网络”负责减少搜索的深度——AI会一边推算一边判断局面,局面明显劣势的时候,就直接抛弃某些路线,不用一条道算到黑;而“策略网络”负责减少搜索的宽度——面对眼前的一盘棋,有些棋步是明显不该走的,比如不该随便送子给别人吃。将这些信息放入一个概率函数,AI就不用给每一步以同样的重视程度,而可以重点分析那些有戏的棋着。



AlphaGo所使用的神经网络结构示意图。图片来源:参考文献[1]

AlphaGo利用这两个工具来分析局面,判断每种下子策略的优劣,就像人类棋手会判断当前局面以及推断未来的局面一样。这样AlphaGo在分析了比如未来20步的情况下,就能判断在哪里下子赢的概率会高。

研究者们用许多专业棋局训练AI,这种方法称为监督学习(supervised learning),然后让AI和自己对弈,这种方法称为强化学习(reinforcement learning),每次对弈都能让AI棋力精进。然后他就能战胜冠军啦!

人类在下棋时有一个劣势,在长时间比赛后,他们会犯错,但机器不会。而且人类或许一年能玩1000局,但机器一天就能玩100万局。所以AlphaGo只要经过了足够的训练,就能击败所有的人类选手。

Google DeepMind

Google DeepMind是这个程序的创造者,我们来看一下他们萌萌的程序员。



杰米斯·哈萨比斯(Demis Hassabis) 是Google DeepMind 的CEO。图片来源:Nature Video



文章的第一作者大卫·西尔弗(David Silver)。图片来源:Nature Video

Google DeepMind 去年在《自然》杂志上发表过一篇论文[2],他们用增强学习的方法训练AI玩经典的Atari游戏。其实在几年前就有人研究如何让AI玩《星际争霸》,目前人类大师还是能击败AI的。电脑游戏中大量使用人工智能技术,你有没有觉得游戏变得越来越聪明了?

那么……未来呢?

人工智能研究者面对这样的成就当然欣喜。深度学习和强化学习等技术完全可以用于更广泛的领域。比如最近很火的精准治疗,我们可以训练它们判断哪些治疗方案对某个特定的人有效。

但是,围棋毕竟不仅仅是一项智力成就。就像十多年前的国际象棋一样,围棋必定也会引发超出本领域之外的讨论。等到计算机能在围棋上秒杀人类的时候,围棋是不是就变成了一种无聊的游戏?人类的智力成就是不是就贬值了?AI还将在其他层面上继续碾压人类吗?传统认为AI不可能完成的任务是否也都将被逐一打破?人类最后是会进入AI乌托邦还是被AI淘汰呢?

没人知道答案。但有一点毫无疑问:AI一定会进入我们的生活,我们不可能躲开。这一接触虽然很可能悄无声息,但意义或许不亚于我们第一次接触外星生命。

参考文献:

文章题图:Nature/Google DeepMind
  • 大小: 413 KB
  • 大小: 38.6 KB
  • 大小: 132.7 KB
  • 大小: 208.6 KB
  • 大小: 308.2 KB
  • 大小: 309.2 KB
来自: 果壳网
1
0
评论 共 6 条 请登录后发表评论
6 楼 fjjiaboming 2016-02-02 14:12
这技术这工程, 窵窵窵!
5 楼 cats_tiger 2016-01-30 00:26
本人棋力业余4段,编程12年,计算机战胜职业棋手真的了不起!可是,围棋的美感计算机能体会到吗?
4 楼 chendaiming 2016-01-29 16:49
有意思吗?计算机运算速度是人脑能比的吗?
3 楼 Long_yuan 2016-01-29 12:27
mfkvfn 写道
为什么战胜的是二段,而不是九段?

nba cba
2 楼 mfkvfn 2016-01-29 08:37
为什么战胜的是二段,而不是九段?
1 楼 XLimit 2016-01-28 15:38
AI不是人设计的吗?
只是一个或一群聪明人利用工具可能战胜另一个聪明人,怎么就变成了"人类最后的智力骄傲即将崩塌".

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • HTML页面局部刷新的实现代码

    主要介绍了HTML页面局部刷新的实现代码的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  • web 按钮快捷键_Web功能测试测试点总结

    Web功能测试测试点总结web测试就是基于BS架构的软件产品的测试,通俗点来说就是web网站的测试。一、页面检查当我们进入一个页面时,首先应该检查标题,页面排版(即页面的展示),而不是立刻进入字段校验页面面包屑导航是否正确当时方位是否可见,你的方位:父模块/子模块文字格式一致性排版是否整齐列表项显示字段是否齐全,列表项字段称号是否跟表单一致同一页面,是否出现字段称号相同、值取不同的问题。...

  • 常见功能测试用例

    登录功能:账号、密码 输入已注册的正确账号密码,登录成功 输入已注册的正确账号,错误密码,登录失败 输入未注册的账号密码,登录失败,提示账号不存在 输入停用的账号密码,登录失败,提示此账号已停用,请联系管理员 账号为空,密码不为空,登录失败,提示账号或密码为空 输入已注册正确账号,密码为空,登录失败,提示账号或密码为空 账号和密码为空,登录失败,提示账号或密码为空 登录功能:账号、密码、验证码 参考上面7条 输入已注册的正确账号密码和验证码,登录成功 输入已注册的正确账号密码,错误验证码

  • python怎么写测试脚本语言_如何使用python 语言来实现测试开发

    展开全部对于各种驱动接口,2113Python来编写测试用例的好处是:由于5261Python不需要编译4102,你所执行的也就是你所编1653写的,当发生异常的时候,你无须打开集成开发环境,加载测试工程、并调试,你能够很方便的看到python测试脚本的内容,什么地方出了异常可以立刻发现,例如:from ctypes import *rc =c_int(-12345);dll = windll.L...

  • 测试用例及时更新的可实施性

    1、案例描述   测试团队目前面临一个非常严峻的问题:测试用例得不到有效执行的问题。   导致此问题的主要原因在于当前的测试用例可用性较差,针对系统原有功能的测试用例主要存在以下三个问题:   第一,存在较多冗余的测试用例,在测试执行过程中执行此类用例浪费时间而且没有价值;   第二,存在较多与当前系统实现不一致的用例,此类用例严重误导测试执行人员,并容...

  • 帆软决策报表全页面刷新或局部组件定时刷新

    一、全页面刷新添加初始化后事件支持定时js,以及取消定时setInterval("self.location.reload();",10000); //时间单位为ms,即每10s刷新一次页面  取消定时jsvar timer = setInterval("self.location.reload();",10000);  clearInterval(timer); //取消定时 二、组件局部刷新v...

  • stm32驱动微雪墨水屏1.54inch e-Paper V2

    1.54寸墨水屏应用

  • 帆软决策报表全页面刷新或局部组件定时刷新,并实现假数据的动态展现效果

    添加初始化后事件,如果要进行全页面刷新,则可用以下js: setInterval(“self.location.reload();”,1000);//全局每1s刷新一次 如果要进行局部刷新: var form = this.options.form; setInterval(function() { form.getWidgetByName(‘report’).gotoPage(1,"{}",tr...

  • 帆软报表的局部刷新----填报模式(一)

    功能介绍: 1、在填报模式下,实现点击某个按钮,刷新特定的单元格,单元格中的数据来自于数据库; 2、应用在日历上,点击月份,更新对应的数据,实现局部的刷新; 3、鼠标悬停在月份上,变蓝色;选中的月份,出现黄色下划线; 4、效果图如下:点击日历的月份之后,下面的数据更新。 一、利用单元格设计出日历 1、每个单元格右键选择“控件设置”,如下图。 2、如...

  • 2.13Epd 中景园2.13寸电子墨水屏 显示原理(局部刷新指令)

    介绍显示电子墨水屏的显示原理和 显示模式

  • STM32驱动电子墨水屏幕

    因为项目需要,最近一直研究电子墨水屏幕。电子墨水屏即为使用电子墨水的屏幕。电子墨水屏又被称为电子纸显示技术。 电子墨水是一种革新信息显示的新方法和技术。像多数传统墨水一样,电子墨水和改变它颜色的线路是可以打印到许多表面的,从弯曲塑料、聚脂膜、纸到布。和传统纸差异是电子墨水在通电时改变颜色,并且可以显示变化的图象,像计算器或手机那样的显示。 本程序是本人调试的用STM32控制电子墨水屏幕刷新,快速切换。

  • 1.54寸墨水屏模块 E-Paper电子纸显示屏STM32C8T6驱动代码以及调试过程

    完整调试过程

  • html页面的局部刷新

    有时候我们在做一个动态/静态网页,网页中的某部分需要从服务器获取值但是不能把整个页面都提交到服务器,也就是要对页面做局部刷新,也就是对整个网页无刷新更新值。在这种情况下就需要用JS和XMLHttpRequest对象的配合实现,本片文章记录怎样才能做到整张网页的局部刷新以备日后回顾。 文章分为两部分:XMLHTTPRequest介绍;用XMLHTTPRequest和JavaScript...

  • 墨水屏(电子纸)刷新模式

    MODE 1:INIT 初始化,即刷完后变成全白色。 “初始化(INIT)模式用于完全擦除显示屏并使其保持白色状态。它是适用于存储器中的显示信息不是光学元件的不确定状态的情况显示刷新,例如,设备完全断电后收到电源后的状态。这波形会多次切换显示器,并使其处于白色状态。” MODE 2:DU direct update “直接更新(DU)是一种非常快速、不闪的更新。此模式支持从任何灰度转换为黑阶或白阶。它不能用于更新为除黑色或白色之外的任何灰色。此模式的更新时间很快,可用于响应触摸传感器、笔输入..

  • 电子墨水屏局部刷新怕光的问题(Light make E-ink screen partial update can't work well.)

    最近在用某雪的2.9寸的电子墨水屏做一个时钟,时间部分是每分钟局部刷新一次,其他不刷新。但最近发现这个屏在局部刷新的时候很怕光,当有光照射的时候除了局部刷新的部分颜色变浅以外,整个局部刷新的横坐标范围内的内容颜色都会变浅,而且光线越强,变浅的速度越快。现在还不知道是怕哪种光,紫外线、红外线还是可见光,问过售后,但给出的答案都是这个东西不适合做时钟,没有给出原因。而且看代码也找不到原因,按理说局部刷...

  • thymeleaf的局部刷新(一个最简单的Demo实现,包括Controller和html)

    现在我们有这样一个需求:提交表单后,只刷新某页面的一部分内容,不刷新整个页面。 知识点:使用th:fragment 前端代码:

  • 局部刷新

    在项目开发过程中,局部刷新是个很常见的需求。就比如说点击按钮,使页面的某一个局域数据刷新,亦或是定时更新页面某个表格的数据,并更新表格显示。所以说所谓局部刷新就是不刷新整个网页而更新页面的部分内容。 目前做过的局部刷新有以下中: 一、原生js做局部刷新 思路:这种不使用框架的局部刷新,无疑是离不开js对dom的操作,js获取需要局部刷新的区域,通过js填写区域内容,这里不考虑浏览器兼容性的话,使用ES6的字符串模板在js中写html还是很香的。 <body> <div id="co

Global site tag (gtag.js) - Google Analytics