[翻译]AlphaGO留给我们的东西

来源:

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万5000个,而处理这些输入情报的中间层(hidden layer)就有将近830万个。而它们之间的连接边(weight edge)竟然达到了14亿个。如此巨大的神经网络直到最近都是不可能训练的。而alphago使用3000万个落点-近16万分棋谱对这个网络进行训练一次就需要大约一个月的时间。

通过这个惊人的过程,人工智能掌握了本以为是人类专属的抽象思考能力。本次对局中,alphago下一手所需的时间在平均一分钟或者稍微超过一点的范围内。通过逆向推定论文的内容,alphago在一分钟内大约做了接近5亿次的局势判断。5亿次看上去很巨大,如果每一手棋需要考虑30个左右落点的话,大概也就平均6.5手而已,10个落点的话大概仅仅能推测8.5手。最终只能以概算的结果来确定落子点。如果考虑到这种检索方式与生俱来的界限,アルファ碁が中盤にすでに計算を終えていたのではという心配は根拠がない。

能够突破这个界限的正是alphago的另一个厉害的地方。仅仅那个程度的检索其实很难说能够战胜人类的最高等级,因为人类也有很多很多概算的地方,甚至比人工智能程序更加精巧。然而alphago有着比其他围棋软件领先一个时代的概算精度。可即便如此仍然可能比人类要差一些,这其中的差距使用强大的计算能力补全。这个结果给予了我们一个重要的启示。人类的抽象思维能力这种东西,可能并非我们所想的那么复杂。

职业围棋界想必受到了巨大的冲击,从今以后也会成为围棋界的重要收获吧。通过与alphago的五盘对局,展现出了职业棋手所下不出来的创意下法。也许会让职业棋手们从下法的固定观念里面所觉悟出来,甚至有扩展思考边界的机会。围棋的水平也会更进一步的发展吧。

也有人担心如果就这样发展下去,数十年后人类被人工智能所支配。从产业发展的历史来看,例如纺织业,信息化的初期也经常会有人对工作受到威胁产生恐惧。但是最终孕育出了新的工种,为人类带来更加富裕的生活。以深度学习为代表的人工智能技术突然来到了我们的生活中,已经到了这些技术的基本含义应该像常识一样被知晓的时代。突然之间进步50年的发展速度,或许能够让我们享受到本应在有生之年连看都看不到的技术产物。

时间: 2025-01-08 19:44:22

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

关于Linux系统的swap交换空间

用Ubuntu已经将近1年了,最近重装了16.04之后,每天到下午5点左右,都会发现Swap交换空间有几百兆的写入,系统内存8G,硬盘是SSD,i5处理器,配置中档,也没有启动什么大型软件,就是用IDEA做开发,虽然没有影响,但本着一颗求知的心,google一下,第一篇是<All about Linux swap space>,口气很大,直接翻译了. Linux将随机存储RAM称为内存页.交换技术就是将一页内存复制到预先设定的硬盘上的交换空间,来释放该页占用内存.物理内存和交换空间的和就是可提

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

一直用NPP,很长时间了,最近才学习它的各种插件,这篇文章是根据NppExec的用户指南写的.很多地方是翻译的,但不全是翻译,同时也有些东西没有翻译. 一.何为NppExec 简单的说,这个插件可以让用户在NPP中直接运行一些命令和程序,而不用启动这些命令和程序对应的实际工具或编译器. 1. NppExec是... NppExec是介于Notepad++和外部工具/编译器之间的一个中间件.它允许用户在NPP中直接运行这些工具/编译器. NppExec是一个控制台(Console)窗口,它能展示运

第八周学习总结

上周五考完了java面向对象,这周开始了数据库的学习,换了新老师,有点儿污污的徐老师,上课的感觉还是不错的,很有条理,写得代码也很清晰,下来能够看得很清楚.数据库是每个程序员必须掌握的知识,它的知识要具体一点儿,没有java面向对象那么抽象,学起来相对轻松些,也可能是刚刚学习,还没学那么深入,暂时这部分的知识自己感觉还是比较简单的.一本书只用了三天时间基本上就快讲完了,主要学习数据库的增.删.改.查,查算是数据库最重要也是最难的部分,因为查询是在数据库中用的最多的.主要学习了如何创建一个数据库,

继承多态个人理解

继承就是父子关系    你老爸把他想留给你的东西留给你 ,你就继承了他那部分,比如财富. 所以老爸有财富,你也有了. 如果有些东西他不想给你 虚方法,需要你自己获得,你就得重写override这个方法, 你老爸有好几个子女 ,如果每个子女都override了或new了老爸的方法 ,那就是多态.比如知识  这个是没法直接拿过来的.

CCPC杭州赛总结

相比于之前的比赛,这次比赛我没有任何包袱,轻装上阵,热身赛前两天晚上八点坐公交车去火车站,路上堵车,差点错过火车,还好一切顺利到了杭州预定的宾馆,这已经是热身赛前一天的下午四点钟了,相当于20个小时的车程,晚上和河南学校的一群大佬在一起聊天(虽然我并没有说很多话).    睡一觉醒来已经是热身赛那天的上午,和队友zjd&&zgp还有在杭州工作的学姐wh一起去杭电报道领取参赛服以及参赛手册等物品,接着就在杭电吃了午饭,又在杭电转了一圈,闲暇之余看到了狗狗和鸭子在湖中长达十分钟之久的追逐大战,

【Gradle教程】第六章 构建脚本基础

6.1. Projects and tasks 项目和任务 Everything in Gradle sits on top of two basic concepts: projects and tasks. **<翻译>** Gradle中的所有东西都是围绕两个基本概念:项目和任务. Every Gradle build is made up of one or more projects. What a project represents depends on what it is t

亚伦.斯沃茨

相信你应该真的每时每刻都问自己,现在这世界有什么最重要的事是我能参与去做的?如果你没在做那最重要的事,那又是为什么? ------Aaron Swartz 维基百科上对亚伦.斯沃茨的介绍:http://zh.wikipedia.org/zh-cn/%E4%BA%9A%E4%BC%A6%C2%B7%E6%96%AF%E6%B2%83%E8%8C%A8 翻译原文来自:http://www.aaronsw.com/ 很敬佩这个人物,完全是idol式人物,翻译有关他的一些东西,希望更多人认识他,理解他的

JSP(一)

一.JSP概要 一]JSP的概念 1>JSP是SUN公司开发的一个基于服务端的一种动态WEB开发技术.         2>JSP的代码结构/内容 = HTML内容+JSP特有元素内容         3>在IDE工具中开发JSP,pageEncoding有两层含义:             1>指明当前JSP中的字符采用什么方式编码             2>指明当前JSP页面保存时采用什么方式编码         4>如果再次访问同一个data.jsp文件,翻译工

C#重的数组、集合(ArrayList)、泛型集合(list&lt;T&gt;)三者比较及扩展延伸……

本来我只想总结下数组.集合(ArrayList).泛型集合(list<T>)三者的比较的,可以一写下来要扩展的知识点有点多了,只能写一个小的知识点列表了如下: 1.数组.集合(ArrayList).泛型集合(list<T>)三者的比较 2.接口 3.值类型和引用类型解析 4.泛型 5.接口和类的区别 6.重载和重写 7.虚方法和抽象方法 8.继承和多态 9.还有很多-- 由于小达刚开始写博客,还挺新鲜,所以进度应该不慢.留给大家一点东西,也不枉白敲一场代码.