来源:
http://headlines.yahoo.co.jp/hl?a=20160317-00000049-cnippou-kr
http://headlines.yahoo.co.jp/hl?a=20160317-00000050-cnippou-kr

作者:首尔大学计算机系教授 文炳魯

这场世纪的对决以人工智能的胜利而落幕。然而笔者仍然认为如果李世石九段能够发挥出全盛时期的实力与创意的话,是不会输给AlphaGO的。虽然李世石输掉了比赛,但仍然展现出了作为过去10年世界围棋第一人的那份宽容和品格。这次的对决中虽然也并非没有规则限制等不完美的地方,但是我们应该多看开一些,为人工智能的胜利毫不吝啬的送上祝福和赞许。
    如果不知道棋盘上变数的庞大性,也就不会明白为什么这次的对决会如此的让人瞩目。在围棋里,光是第一手的放置方式就有将近37个位置。随后稍微有所增加,然后越到终盘放置的可能性就会逐渐减少。这里假设一次需要考虑的落点位置大概有40个,如果如果计算机一秒钟能考虑一万种情况的话,那么连下7步所需考虑的情况大概需要多少时间来计算呢?
    问过一圈周边的熟人,一般的回答是仅需数秒,然而实际上却需要近5年的时间。如果扩展到下30步棋,所需时间就已经超过了10的36次方年。即使候选放子的位置缩小到10个,最初的7步仍然需要17分钟,而30步棋则超过了10的18次方年的时间。没有尽头的时间消耗啊。一般来说,围棋都会进行到200手左右,但仅仅是考虑30手就已经如此难堪,那怎样才能完整的计算200手棋的计算呢。就结论而言,非常细致的搜索和推断仍然是不可或缺的,即便是AlphaGO也并没有回避这个问题。
    AlphaGO之所以敢于挑战这个巨大的领域,其背景在于近几年卓越的技术进步。对于人类来说,图片的分类是比较容易的做到的,但对计算机而言却并不简单。拿当年的发展速度来说,每一年能把识别的错误率降低个0.5%就很了不起了。然而在2012年的ILSVRC(就是2015年百度被踢的比赛)大赛中,多伦多大学的hinton教授组将错误率从26%一口气压到了15%,并因此赢得了竞赛。取得了本应花上20年才能取得的进步。hinton教授所使用的技术正是深度学习和通用GPU运算。到了2015年(的比赛中),错误率已经被压制到了3%以内,仅仅3年的时间就获得了近50年的进步。
    AlphaGO得益于这个爆发式的技术进步,并在规模上堆到了极致。AlphaGO所使用的深度神经网络,仅仅输入层的节点数量就超过了2万5千个,而处理这些输入情报的中间层(hidden layer)有将近830万个。而它们之间的连接边(weight edge)竟然达到了14亿条。如此巨大的神经网络直到最近都是不可训练的。而AlphaGO使用3000万个落点、即将近16万分棋谱对这个网络进行一次训就需要大约一个月的时间。
通过这个惊人的过程,人工智能掌握了本来认为是人类专属的抽象思考能力。本次对局中,AlphaGO下一手所需的时间在平均一分钟或者稍微超过一点。通过论文内容逆向推,AlphaGO在一分钟内大约做了近5亿次的局势判断。5亿次看上去很巨大的数字,但如果每一手棋需要考虑30个左右落点的话,大概也就平均6.5手而已,只考虑10个落点的话也大概仅仅能推测8.5手。最终只能以推测的结果来确定落子点。这是这种检索方式与生俱来的界限。
    而能够突破这个界限的正是AlphaGO的另一个厉害的地方。仅仅上面那种程度的检索其实很难说能够战胜人类最高等级的棋手,因为人类也有很多很多使用推测能力的地方,甚至比人工智能程序更加精巧。然而AlphaGO有着比其他围棋软件领先一个时代的推测精度。可即便如此仍然可能还要比人类要差一些,这其中的差距已经可以使用强大的计算能力进行补全了。这个结果给予了我们一个重要的启示。人类的抽象思维能力这种东西,可能并非我们所想的那么复杂。
    职业围棋界想必受到了巨大的冲击,从今以后也会成为围棋界的重要资产吧。通过与AlphaGO的五盘对局,它展现出了职业棋手所下不出来的创意下法。也许会让职业棋手们从下法的固定观念里面觉悟出来,甚至有扩展思考边界的机会。围棋的水平也会更进一步的发展吧。
    也有人担心如果就这样发展下去,数十年后人类被人工智能所支配。从产业发展的历史来看,例如纺织业,信息化的初期也经常会有人对工作受到威胁产生恐惧。但是最终孕育出了新的工种,技术发展的同时,也为人类带来更加富裕的生活。以深度学习为代表的人工智能技术突然来到了我们的生活中,已经到了这些技术的基本含义应该像常识一样被知晓的时代。突然之间进步50年的发展速度,或许能够让我们享受到本应在有生之年连看都看不到的技术产物。

[翻译]AlphaGO留给我们的东西的更多相关文章

  1. 服务发现与健康监测框架Consul-DNS转发的应用

    关于Consul Consul是一个提供服务注册与发现,健康监测,Key/Value存储以及多数据中心存储的分布式框架.官网地址是https://www.consul.io/,公司初步应用后我们老大觉 ...

  2. Notepad++中NppExec的使用之一:基本用法

    一直用NPP,很长时间了,最近才学习它的各种插件,这篇文章是根据NppExec的用户指南写的.很多地方是翻译的,但不全是翻译,同时也有些东西没有翻译. 一.何为NppExec 简单的说,这个插件可以让 ...

  3. iOS 使用Storyboard 和 xib时的一些知识

    以前不太使用xib和storyboard进行布局,后来在工作中参与到了一个项目的维护工作,那个项目就是使用stroyboard的,再加上xcode5对stroyboard的大力支持,就在这里对于使用s ...

  4. cocos2dx 2.x 版本+Windows+ADT Bundle 配置

    昨天解决了cocos2dx 3.x版本+Windows+ADT Bundle的配置,今天来解决cocos2dx 2.x版本的配置. 整体来说,2.x的配置相对麻烦一点,不过一旦解决了,就一路畅通无阻了 ...

  5. JSP(一)

    一.JSP概要 一]JSP的概念 1>JSP是SUN公司开发的一个基于服务端的一种动态WEB开发技术.         2>JSP的代码结构/内容 = HTML内容+JSP特有元素内容   ...

  6. 目标管理剖析与实践– 献给追梦的人 (转)

      好久没写日志了. 最近总算在忙碌的日子中小小的松了一口气, 过来补起这几个月的空缺. 上次写的Cover Letter & Resume 重点诠释 - 深度剖析没想到居然超过了一万的阅读量 ...

  7. struts2 全局格式化,格式化时间,金钱,数字

    //在前台页面去控制时间,数字,小数,金钱,是极其不明智的选择,除非你是写了良好的 js api 像freemarker , struts 都有良好的标签,我们应该好好利用,才发现的,给大家分享一下 ...

  8. C#重的数组、集合(ArrayList)、泛型集合(list<T>)三者比较及扩展延伸……

    本来我只想总结下数组.集合(ArrayList).泛型集合(list<T>)三者的比较的,可以一写下来要扩展的知识点有点多了,只能写一个小的知识点列表了如下: 1.数组.集合(ArrayL ...

  9. C#入门基本概念

    一.版本号的命名规则 大部分时候是在名字后面加些数字表示不同的版本.其中以加上年份号最为简单明了.比如 Visual Studio 2008.但是大部分人还是不用这个方式.因为年份号中没有带来跟多的信 ...

随机推荐

  1. POJ #2479 - Maximum sum

    Hi, I'm back. This is a realy classic DP problem to code. 1. You have to be crystal clear about what ...

  2. LinearLayout属性baselineAligned的作用及baseline

    相信大家对LinearLayout已经相当熟悉,但你们是否了解它的属性baselineAligned呢? Android官方文档是这么描述的:

  3. Web通过JS调用客户端

    代码实现==> <html> <head> <script language="javascript"> function Run(str ...

  4. 黄聪:simple_html_dom 换行符丢失

    我在利用simple_html_dom来解析文档是,想要将其中的换行符替换成<BR> , 结果试了好几次没有成功,但是在原始文档中确实是有换行符的.后来索性把装载进来的文档打印出来,结果发 ...

  5. mvc 控制器,视图,Razor 语法

    mvc 控制器controller:响应用户请求,并修改模型model;输入数据的处理,输出view数据的提供: url入控制器的方法有关联:MVC提供的是方法调用结果: mvc model:是对应用 ...

  6. PLSQL_基础系列08_操作符标LPAD / TRUNC / DECODE / TRIM / INSTR(案例)

    2014-12-09 Created By BaoXinjian

  7. Android NDK 构建 以及一些错误

    首先下载NDK 然后在最外层的 local.properties文件夹中 写上  ndk的路径 ndk.dir=/Users/wyj/Desktop/androidStudioSdk/android- ...

  8. linux 查看占用端口并kill掉

    主要可以使用ps  命令 或 netstat 命令 weihong@data1:~/jd_parser/jd_parser$ ps aux | head USER PID %CPU %MEM VSZ ...

  9. .Net调用非托管代码数据类型不一致的问题

    什么是Net互操作?.Net不能直接操作非托管代码,这时就需要互操作了.   c#中调用非托管c++函数,此函数又包含指向某个结构的指针,譬如指向c#中的byte数组.对于这样的参数,考虑到非托管变量 ...

  10. 配置sql server 2000以允许远程访问 及 连接中的四个最常见错误

    地址:http://www.cnblogs.com/JoshuaDreaming/archive/2010/12/01/1893242.html 配置sql server 2000以允许远程访问适合故 ...