距离AlphaGo击败李世石已经过去数月了,心中的震撼至今犹在,全刊报道此项比赛的《围棋天地》杂志我已经看了不下十遍。总也想说点自己的意见,却也不知道从哪里说起,更不知道想表达些什么。

作为一个评论者我的身份较特殊,人工智能相关的技术领域我涉足了5年,下围棋的时间则有18年。前者的水平我不敢妄自评估,但领域内的最新技术,包括AlphaGo使用的蒙特卡洛搜索树和深度学习之类,基本也在我了解范围之内;后者的水平,大约相当于业余弱5段的样子,高中的时候在县里打打比赛拿个名次也是家常便饭。而我那些比我更懂人工智能的同事们,却连围棋基本规则的也不懂,看直播的时候只是看个热闹而已。我只能孤零零地一个人看新浪的围棋直播,默默地看着李世石一局接一局地落败。即使是他赢下的第四局,实际上也不过是恰好触发了AlphaGo的bug而已。

比赛前我没有看过之前AlphaGo和欧洲冠军樊麾比赛的棋谱,但无论从一个程序员还是一个棋手的角度来讲,我都不认为AlphaGo有哪怕百分之一的胜算。小李的强大是全方位的,也是靠他过去的战绩足以证明的。但是五局比赛下来,除了第四局有一丝隐隐约约的小李风格之外,其他四局完全看不出来是他在对局。抛开第一、二局中的打劫争议不谈(个人是绝对不同意小李故意不打劫这种说法的),小李在比赛中的问题手也是偏多的,棋风也不同于以往,在整个人机大战中并没有发挥出自己的真实水平。

我个人的观点是,人机大战小李必然不能发挥出自己的真实水平,其原因有以下几点:

(1)信息不对称。AlphaGo事先存储了包括李世石在内的大量人类高手的棋谱,而李世石显然是不知道AlphaGo的代码逻辑的,即使有估计他也看不懂。虽然也有放出AlphaGo对阵范麾的五张棋谱,但是这些棋谱是AlphaGo几个月前的水平,而在几个月之后,它通过自我对局水平提高了多少,小李肯定无从得知,大概也只有DeepMind开发团队才知道。如果事先知道AlphaGo的综合实力分布(比如布局中盘官子哪个更强),以及对局风格(比如倾向于攻击还是防守还是均衡),也许小李就不需要在第一、三局进行试探,也不会在第二、四局下得那么保守。事实上,赛前整个围棋界对AlphaGo的评估都是有偏差的。之前所有的人工智能所表现出的都是较强的局部计算力和相对较弱的大局观(或者叫判断力),而AlphaGo与之完全不同,从人机大战的五局来看,其大局观,要强于局部计算力。AlphaGo可以在第二局下出天外飞仙的37手,也能在第四、五局的几个局部出现很明显的误算,就很能说明问题了。

(2)机器节奏导致逻辑割裂。一般人类棋手的落子节奏取决于当前局面,有些地方的招法相对固定,可能1分钟之内可以下十几手,而一些复杂局面会思考一个小时甚至更长。就像一首歌曲,时而节奏轻快,时而节奏缓慢,音调时而高时而低,但整体是顺畅的,悦耳的,或者说逻辑相关的。但AlphaGo完全不同,它有时候也会长考,但是一个再简单的局面它也会想一分钟再落子,某种意义上它把每一步棋之间的逻辑割裂了。我们平时在家电视剧,进行到中间某个时间的时候突然跳出广告,然后1分钟后再开始播,这时候看电视的人也一定会产生一个心理波动(比如烦躁),这是人的神经反射所决定的,不可避免。即便作为一个胜负师,小李的心理承受能力高于常人,但机器落子节奏的影响绝对是不可忽略的。

(3)心理战。许多职业棋手能通过对方的表情和动作来判断其战术意图甚至心理状态,从而针对性地行棋。心理战确实是人和人比赛中不可或缺而且十分精彩的一个部分。但是人机大战中,心理战完全无效,而且越依赖心理战的棋手就越吃亏。小李对心理战的依赖程度我们不得而知,但无法使用心理战无疑会在很大程度上降低他的水平。这里还不得不提到AlphaGo的人肉臂黄士杰博士,为了不影响对局,他在整个比赛中滴水未沾,甚至时刻保持面部表情严肃,必须对他表示由衷的敬佩。

(4)水平波动。人是复杂的动物,心理对表现的影响极大,在围棋这样的智力游戏中更为明显。人的水平发挥波动远大于机器,下棋时下出妙手和恶手的概率都要大于机器。不幸的是,恶手易出而妙手难寻,更可况恶手一出很多时候万难挽回。小李固然强,但他的强是对于其他职业棋手而言的强。当他出现恶手而导致局面落于下风的时候,他固然可以凭借自己的妙手翻盘,但更多的时候是通过搅乱局面等待对手失误来获胜的。而机器出恶手的机会要小很多,而且越到后半盘就越不容易犯错误(导致输掉比赛的大错误,而非导致局部亏损的小错误)。对战机器,如果单纯以取胜为目标的话,也许会写代码、懂人工智能原理的棋手会比小李更适合,因为他们更了解机器,更容易找到机器的弱点。

那么,我们假设是巅峰状态的李世石,在事先充分研究了AlphaGo的棋谱,并且在比赛中没有出现显著的水平波动,他能赢AlphaGo么?

我个人的观点是,现在也许能,但在未来的某个时间点开始,任何一位职业棋手都再也不能击败AlphaGo哪怕一局,甚至任何多位职业棋手联合起来也无法击败它。小李输棋,甚至樊麾输棋早已代表了这个趋势,只不过没想到这一天会这么快就来了而已。

另外一个值得思考的问题是,在天(穷尽围棋所有变化)与地(最基本的围棋规则)之间,人类棋手的水平究竟在什么样的一个位置?以AlphaGo为代表的人工智能又在什么样的一个位置?

没有答案。唯一能知道的是,人和人工智能显然都在地之上,但永远达不到天。而人工智能作为人在思考能力上延伸,就如同火车飞机是人走路能力的延伸一样,必然在特定的领域上超越人,而且能超越得很远。这对人类是绝对的好事,就如同工业时代机器解放了人类的体力,信息时代人工智能就能解放人类在相对简单又枯燥的思想活动中所消耗的脑力,然后投入到更复杂更高级的思想活动中去。其实计算机在几十年前就已经辅助人类证明了四色定理,我们有理由相信它未来能做更多的事,虽然这些事仅凭借我有限的想象力实在是连一件也想不出来。

对于我个人而言,在李世石落败之前,我不下围棋很久了,只是看看新闻和杂志。在李世石落败之后,我又开始偶尔下下围棋了,只不过现实中的对手难觅,不得不选择在网络上下围棋。网络围棋给我的感觉是充满了戾气,总觉得是在为了发泄而下棋,说实话远不如在现实中找到两三个棋友下下棋聊聊天有意思。当然这扯远了。作为一场划时代的比赛的见证者,我感觉这场比赛让我的思路和见识扩展了很多。

也谈谈AlphaGo的更多相关文章

  1. 随便谈谈alphago与人机大战

    3月16日历时8天的人机大战终于落下帷幕,alphago以4:1的比分击败了当年如日中天的李世石.这个结果让我这个围棋爱好者+计算机爱好者百感交集…… ——一个时代落幕了,一个新的时代开启了. 这次人 ...

  2. 文笔很差系列1 - 也谈谈AlphaGo

    距离AlphaGo击败李世石已经过去数月了,心中的震撼至今犹在,全刊报道此项比赛的<围棋天地>杂志我已经看了不下十遍.总也想说点自己的意见,却也不知道从哪里说起,更不知道想表达些什么. 作 ...

  3. AlphaGo论文的译文,用深度神经网络和树搜索征服围棋:Mastering the game of Go with deep neural networks and tree search

    转载请声明 http://blog.csdn.net/u013390476/article/details/50925347 前言: 围棋的英文是 the game of Go,标题翻译为:<用 ...

  4. 《AlphaGo世纪对决》与周志华《机器学习》观后感

    这两天看了<AlphaGo世纪对决>纪录片与南大周志华老师的<机器学习>,想谈谈对人工智能的感想. 首先概述一下视频的内容吧,AlphaGo与李世石对战的过程大家都有基本的了解 ...

  5. 【原】谈谈对Objective-C中代理模式的误解

    [原]谈谈对Objective-C中代理模式的误解 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这篇文章主要是对代理模式和委托模式进行了对比,个人认为Objective ...

  6. 谈谈一些有趣的CSS题目(十二)-- 你该知道的字体 font-family

    开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...

  7. 谈谈一些有趣的CSS题目(十一)-- reset.css 知多少?

    开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...

  8. 谈谈一些有趣的CSS题目(三)-- 层叠顺序与堆栈上下文知多少

    开本系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉 ...

  9. 谈谈如何使用Netty开发实现高性能的RPC服务器

    RPC(Remote Procedure Call Protocol)远程过程调用协议,它是一种通过网络,从远程计算机程序上请求服务,而不必了解底层网络技术的协议.说的再直白一点,就是客户端在不必知道 ...

随机推荐

  1. whereis 和which

    这两个命令用的好,可以很快找出文件的路径 [root@oc3408554812 zip-3.0]# which passwd/usr/bin/passwd[root@oc3408554812 zip- ...

  2. C#关于winforms窗体大小、边框、移动、动画等属性

    1.窗体的边框设置为无: 2.把窗体高度调整为25,发现跑的时候总在40左右,这时需要改改属性, 把MinimumSize(0, 0)改成不为0的,最好改成和自己想要一样的大小, 最大高宽也应该这么调 ...

  3. SetProcessAffinityMask的问题

    BOOL WINAPI SetProcessAffinityMask( _In_ HANDLE hProcess, _In_ DWORD_PTR dwProcessAffinityMask );//M ...

  4. Asp.net页面引用SAP IQ 16 iAnywhere.Data.SQLAnywhere.V4.0.dll报错,语言文件没找到

    参考http://sqlanywhere-forum.sap.com/questions/20420/saconnection-threw-an-exception-cannot-find-the-l ...

  5. bzoj2006: [NOI2010]超级钢琴

    题意:给一个序列(n<=500000),要求选定k个不同区间,使得区间长度在L,R之间,并使得k个区间和之和最大,输出这个最大值. 刚拿到题的时候想的是,对于每个点,如果以它开头,那么之后的L- ...

  6. RSA加密,应用授权及MSSQL备份与还原

    01.QBRSA加解密处理 --> a.利用 RSA密钥生成器生成密钥(e,n,d) [e,n]为私钥, [d,n]为公钥 b.正向加密:  用私钥加密,用公钥解密 c.反向加密:  用公钥加密 ...

  7. C++中的数组

    数组名作为参数时,传递的是数组的首地址, 主调函数中实参数组元素个数不应该少于形参数组的元素个数 把数组名作为参数时,一般不指定数组第一维的大小 即使指定,编译时也会被忽略的.

  8. session的工作原理

    asp中Session的工作原理:asp的Session是具有进程依赖性的.ASP Session状态存于IIS的进程中,也就是inetinfo.exe这个程序.所以当inetinfo.exe进程崩溃 ...

  9. java 配置环境变量

    使用java编程首先需要安装jdk,然后还需要给你的电脑配置环境变量,下面就用图文演示如何配置环境变量: 1.右键我的电脑 -> 属性 2.点击“高级系统设置” 3.点击“环境变量” 4.在系统 ...

  10. JavaScript封装

    js封装就是把使用方式简单化,内部逻辑和使用解耦.使用人员知道参数和返回值就可以了,其他不用使用人员设置. 封装就是将属性,方法,字段等封装成类. JavaScript封装方法 1,函数方式 func ...