写于2016 3.8晚

AlphaGo 与 Alan Turing

    如果我们可以被称为生物版本的机器人,承载着在上千年或是万年的时间内不断完善的人工智能,并正如行为主义所指出的那样,对不同的刺激做出相对应的行为,那么我们便是如何让机械的机器人拥有人工智能的最好参考。

机械的躯体与人类的躯体是不同的。我们有着许许多多的生理限制。我们的器官会退化,哪怕它们曾经是多么的灵敏。我们的大脑总是需要休息,用足够的睡眠来调整自己。我们会随着年龄的增长,经历一些不可修复的损伤。而这些是机械的躯体所不用担心的,它的计算和模拟的速度是我们的大脑所难以接近的。但是,机械的机器人一直被认为是不会思考的。

在早期的棋类AI里,比如说深蓝打败国际象棋大师卡斯巴罗夫,它是利用决策树来得出下一步该下在哪里的。这是我第一次了解人工智能时知道的,虽然现在还是觉得决策树奥妙重重,但是我想决策树应该还是利用了像搜索的思想,暴力地求出下在哪里的胜算最大。它充分利用了计算机计算的速度非常快的优点,但这样暴力的算法是不能支持围棋AI的,因为围棋19*19的棋盘上绝大部分的地方对于计算机都是可行的下一步,很难想象它的时间复杂度会是多么的壮观。

记得那年六岁时,妈妈带着我第一次去家门口的棋院时,我的启蒙老师递给了我背面写着围棋规则的棋谱本。我们、深蓝和ALPHAGO一样通过棋类运动最为简单直接的规则来理解、研究围棋的策略。我渐渐明白,一名棋手提升自己棋艺的过程是漫长的,他需要面临着这样两个主要的问题。一名成熟的棋手在对弈时,会根据对手的棋风和棋盘上目前的局势设计自己的策略,他需要确认自己的策略是符合大局的最优策略,并且他所落子的地方需要是在他的策略之下最优的一步。其实这个策略的目的是明确的打败对手,即围出比对手更大地方。所以,策略是走当前最有胜算的一步。

无论是我们还是机器在实现走出他的策略下最优的一步时,都是通过大量的对弈实现的。我们通过与我们实力相当的对手对弈,积累经验。而机器通过学习的则是训练集中大量高段位选手的棋谱。这可以帮助机器和我们决定哪一步的胜算更大。然而,大局观该如何实现呢?

我一直以为大局观是较为直觉,就像思考,想象一样是机器所很难实现的(想象竟然已经可以办到了QAQ)。然而在ALPHAGO里他用了神经网络来解决大局观的问题。我第一次接触神经网络是在COURSERA的ML课上,他所布置的作业便是用神经网络识别数字(只要求写神经网络的PRO和BACK)。无论是识别数字、还是人脸,无论是否用卷积处理,神经网络经常用于处理图片,实现计算机视觉。用神经网络处理整个棋盘,得出大局观下胜算可能会比较高的几步(也许是一片范围)。然后继续用神经网络较为细节的计算它们的胜算。虽然不知道它具体是如何实现的,但是它打破了一些我传统的认知。也许我们直觉的背后是有着人脑逻辑紧密的分析。而只是在人脑几千年的进化里,这些现在看上去属于直觉的逻辑分析的过程也在进化,从最初费劲思索到现在灵光一瞬,以至于被我们误认为是直觉。这也许也解释了为什么我们在算数时很吃力,因为算数相比于人类的出现是现代的,所以人脑还没有进化到可以快速的算数。

它同时使用了蒙特卡洛搜索树,最终计算出最优的一步。为了更好的得到神经网络里每一层的参数,它大量地和自己下棋,得到新的棋局,并从中训练自己。最终打败欧洲的围棋冠军。我在网上看到了关于和自己下棋的质疑。一些学者认为与自己下棋其实上知识量还是没有改变的,并且给出例子幼儿园的知识量储备永远都无法达到诺贝尔奖的知识量。

我认为,这种想法很有趣。好的围棋手并不像是诺贝尔奖获得者,他需要的不是大量的专业知识,而是经验。经验可以来源于别人的棋盘上、历代大师的棋谱上,但也可以来源于自己的棋盘上。老师曾经花很长时间教会我如何正确地与自己下棋,换位思考,予以御敌。而当人类在选择围棋对手时,他通常会选择与自己实力相当的对手。对方的知识储备量和自己是相当的,在相同的老师教导下,甚至知识是会与自己的有很大的重叠。那么,按照上文的观点,人类在下棋上是无法进步的。事实上,人类的棋坛是不乏高手。换到计算机上,亦然。

ALPHAGO的出现象征着机器或是科学家已经可以开始学会复制我们的思考。根据奇点理论,人类的科技水平正在按照指数级别增长的速度增长。ALPHAGO这样聪明的弱人工智能势必会变成可以做到各方面超越人类的强人工智能。也许终有一天,当可以思考的机器人审视我们时,会像此刻的我们看动物园里的大猩猩一样。机器人是会服务、忠诚于我们(它只会忠诚于我们刻在它芯片上的目标),还是会毁灭我们(芯片上的目标并没有成功地按照我们所设想的那样顺利地约束它)。这都会是我们有机会见证到的时刻。

如果人类用机械的躯体更换自己退化的四肢、衰老的肾脏,最后到自己的大脑,以求永生。他们会成为进化的优胜者,也许衍生为新的物种。当他们选择建立新的国度时,他们的个体是高度统一、相似更好,还是存在差异(比如说性格和理念)更好。

在《阿兰·图灵传》的第一章《他得学会合群》中图灵家族相信“勇者好运”。而这种勇者体现在图灵一家勇敢地表现自己与主流的不同,并引以为荣。阿兰·图灵在要求严格的公学中展现自己与常人的不同之处,尝试自己喜欢的学科。他所做的没有任何的错误,甚至相当的勇敢和执着。然而他的行为无法为他带来认同。老师喜欢他,却批评他的行为。同学们孤立、欺负他。这些体现了人性对异类的隔离与轻视。

我在之前读过一篇讨论天才是否应该合群的文章。文章认为天才的不合群会造成他终生的孤独和渐渐扭曲的性格,最终导致反社会倾向,对社会危害极大。结论是天才应该合群。但是,如果阿兰·图灵在他作为学生时,他向公学屈服,像其他人一样学习死板的课本,那在现在看来没有多少意义的课本的话,他会变得合群。他天才的聪明会使他成功,成为老师期许的高收入的社会成功人士。那么,现在便没有人会如此狂热地敬仰他。

正是阿兰·图灵的不合群让他经历了种种的苦难与迫害,让他免于浸染在世俗的陋习中。是这些苦难塑造了独特的他,让他变成闪烁的明星。

现在,我们亦然不能宽容地对待我们中异类,如果可以,在未来,在人工智能机器人的国度里,异类将会被尊重与宽容。

杂文:AlphaGo 与 Alan Turing的更多相关文章

  1. Alan Turing的纪录片观后感

    清明假期,火车上闲着,上B站看了图灵的纪录片 好吧,感想就两个词,数字化 和 自动化

  2. Turing Test

    Computer Science An Overview _J. Glenn Brookshear _11th Edition In the past the Turing test (propose ...

  3. 【转载】 历届Turing奖得主名单

    Turing奖最早设立于1966年,是美国计算机协会在计算机技术方面所授予的最高奖项,被喻为计算机界的诺贝尔奖.它是以英国数学天才Alan Turing先生的名字命名的,Alan Turing先生对早 ...

  4. Turing Year 2012

    Turing LectureFrom cryptanalysis to cognitive neuroscience - a hidden legacy of Alan Turinghttp://co ...

  5. 历届图灵奖 (Turing award)得奖名单

    历届图灵奖 (Turing award)得奖名单 一.总结 一句话总结:各个方面都有. 二.历届图灵奖 (Turing award)得奖名单 Turing奖最早设立于1966年,是美国计算机协会在计算 ...

  6. Generalizing from a Few Examples: A Survey on Few-Shot Learning(从几个例子总结经验:少样本学习综述)

    摘要:人工智能在数据密集型应用中取得了成功,但它缺乏从有限的示例中学习的能力.为了解决这一问题,提出了少镜头学习(FSL).利用先验知识,可以快速地从有限监督经验的新任务中归纳出来.为了全面了解FSL ...

  7. 科技发展时间线(Technology Timeline)

    本文主要记录,过去两百年间,科技发展的时间线 这些内容,是自己在学习电脑发展历史的时候做的, 感兴趣的同学,可以复制到 Excel 里面,按顺序逐一进行学习, 学习和整理的过程确实花了很长时间,但是并 ...

  8. 人工智能 - AI

    CNCC 2016 | 人工智能60年浪潮 (原文链接) Intelligence,智能是指生物一般性的精神能力,其三因素理论: 成分智力 Componential Intelligence:思维和对 ...

  9. Java中使用Jedis操作Redis(转载)

    整理 1.字符串 添加:set keyname value 查询:get keyname 拼接:append keyname value 删除:del keyname 添加多个: mset keyna ...

随机推荐

  1. jquery判断滚动条到底

    $(document).scroll(function(){ var dHeight = $(document).height(); var wHeight = $(window).height(); ...

  2. 用C++类模板实现栈结构出现的问题以及思考

    C++中使用了模板来减少方法相同但是类型不一样带来的函数重载以及大量复制代码的问题.这里主要说说类模板   类模板的定义:   template<TYPENAME Type>   clas ...

  3. C++是怎么实现多态性的

    C++是怎么实现多态性的,C++中多态实现的原理, 当一个类中有虚函数时,系统会为该类构造一个虚函数表vtable,他是一个指针数组,存放每个虚函数的入口地址,编译器还会在此类中隐含插入一个指针vpt ...

  4. Hibernate+JPA

    参考链接:http://blog.163.com/hero_213/blog/static/398912142010312024809 近年来ORM(Object-Relational Mapping ...

  5. Ubuntu 下对ADT 添加别名(alias)

    1:~$ vim .bashrc 2:在打开的.bashrc文件中加入: alias adt='./adt-bundle-linux-x86-20130729/eclipse/eclipse' 3:保 ...

  6. SQL 从100万条记录中的到 成绩最高的记录

    从100万条记录中的到 成绩最高的记录 问题分析:要从一张表中找到成绩最高的记录并不难,有很多种办法,最简单的就是利用TOP 1 select top 1 * from student order b ...

  7. [译] 新手和老手都将受益的JavaScript小技巧

    这篇文章会分享一些鲜为人知但却很强大的JavaScript技巧, 各个级别的JavaScript开发者都会从中受益.   1. 用数组的length属性清空数组   我们知道在JS中对象类型是按引用传 ...

  8. delphi TCXTreelist 通过代码控制行的可编辑性

    procedure TfrmSetOutPzTradeDeptPerson.grdTradeClientEditing(Sender: TObject;  AColumn: TcxTreeListCo ...

  9. appium新版本不支持findElementByName,切换到findElementByAndroidUIAutomator

    appium 1.7.6 不支持findElementByName(locator)  不知道为什么? 脚本中许多这样的语句,麻烦事情多了 org.openqa.selenium.InvalidSel ...

  10. JavaScript 原型与原型链

    __proto__ 用来获取和设置对象原型,但它是非标准的.__proto__前后的双下划线,说明它本质上是一个内部属性,而不是一个正式的对外的API,只是由于浏览器广泛支持,才被加入了ES6.标准明 ...