作者:王垠
链接:www.yinwang.org/blog-cn/2017/04/23/ai
(点击尾部阅读原文前往)
有人听说我想创业,给我提出了一些“忽悠”的办法。他们说,既然你是程序语言专家,而现在人工智能(AI)又非常热,那你其实可以搞一个“自动编程系统”,号称可以自动生成程序,取代程序员的工作,节省许许多多的人力支出,这样就可以趁着“AI 热”拉到投资。
有人甚至把名字都给我想好了,叫“深度程序员”(DeepCoder = Deep Learning + Coder)。口号是:“有了 DeepCoder,不用 Top Coder!” 还有人给我指出了这方向最新的,吹得神乎其神的研究,比如微软的
Robust Fill
……
我谢谢这些人的关心,然而其实我并不在乎,也不看好人工智能。现在我简单的讲一下我的看法。
机器一样的心
很多人喜欢鼓吹人工智能,
自动车
,机器人等技术,然而如果你仔细观察,就会发现这些人不但不理解人类智能是什么,不理解人工智能有什么局限性,而且这些“AI 狂人”们的心,已经严重的机械化了。他们或多或少的失去了人性,仿佛忘记了自己是一个人,忘记了人最需要的是什么,忘记了人的价值。这些人就像卓别林在『
大独裁者
』最后的演讲里指出的:“机器一样的人,机器一样的心。”
每当提到 AI,这些人必然野心勃勃地号称要“取代人类的工作”,“节省劳动力开销”。暂且不讨论这些目标能否实现,它们与我的价值观,从一开头就是完全矛盾的。一个伟大的公司,应该为社会创造实在的,新的价值,而不是想方设法“节省”什么劳动力开销,让人失业!想一下都觉得可怕,我创造一个公司,它最大的贡献就是让成千上万的人失业,为贪得无厌的人节省“劳动力开销”,让贫富分化加剧,让权力集中到极少数人手里,最后导致民不聊生,导致社会的荒芜甚至崩溃……
我不可想象生活在那样一个世界,就算那将使我成为世界上最有钱的人,也没有了意义。世界上有太多钱买不来的东西。如果走在大街上,我看不到人们幸福的笑容,悠闲的步伐,没有亲切的问候,关爱和幽默感,看不见甜蜜浪漫的爱情,反而看见遍地痛不欲生的无家可归者,鼻孔里钻进来他们留下的冲人的尿骚味,走到哪里都怕有人抢劫,因为人们实在活不下去了,除了偷和抢,没有别的办法活……
如果人工智能成功的话,这也许就是最后的结果。幸运的是,有充足的证据显示,人工智能是永远不会成功的。
我的人工智能梦
很多人可能不知道,我也曾经是一个“AI 狂热者”。我也曾经为人工智能疯狂,把它作为自己的“伟大理想”。我也曾经张口闭口拿“人类”说事,仿佛机器是可以跟人类相提并论,甚至高于人类的。当深蓝电脑战胜卡斯帕罗夫,我也曾经感叹:“啊,我们人类完蛋了!” 我也曾经以为,有了“逻辑”和“学习”这两个法(kou)宝(hao),机器总有一天会超越人类的智能。可是我没有想清楚这具体要怎么实现,也没有想清楚实现了它到底有什么意义。
故事要从十多年前讲起,那时候人工智能正处于它的冬天。在清华大学的图书馆,我偶然地发现了一本尘封已久的 『
Paradigms of Artificial Intelligence Programming
』(PAIP),作者是 Peter Norvig。像个考古学家一样,我开始逐一地琢磨和实现其中的各种经典 AI 算法。PAIP 的算法侧重于逻辑和推理,因为在它的年代,很多 AI 研究者都以为人类的智能,归根结底就是逻辑推理。他们天真地以为,有了谓词逻辑,一阶逻辑这些东西,可以表达“因为所以不但而且存在所有”,机器就可以拥有智能。于是他们设计了各种基于逻辑的算法,专家系统(expert system),甚至设计了基于逻辑的程序语言 Prolog,把它叫做“第五代程序语言”。最后,他们遇到了无法逾越的障碍,众多的 AI 公司无法实现他们夸口的目标,各种基于“神经元”的机器无法解决实际的问题,巨额的政府和民间投资化为泡影,人工智能进入了冬天。
我就是在那样一个冬天遇到了 PAIP。它虽然没能让我投身于人工智能领域,却让我迷上了 Lisp 和程序语言。也是因为这本书,我第一次轻松而有章法的实现了 A* 等算法。我第一次理解到了程序的“模块化”是什么,在代码例子的引导下,我开始在自己的程序里使用小的“工具函数”,而不再忧心忡忡于“函数调用开销”。PAIP 和 SICP 这两本书,最后导致了我投身于更加“基础”的程序语言领域,而不是人工智能。
在 PAIP 之后,我又迷了一阵子机器学习(machine learning),因为有人告诉我,机器学习是人工智能的新篇章。然而我逐渐意识到,所谓的人工智能和机器学习,跟真正的人类智能,关系其实不大。相对于实际的问题,PAIP 里面的经典算法要么相当幼稚,要么复杂度很高,不能解决实际的问题。最重要的问题是,我看不出 PAIP 里面的算法跟“智能”有什么关系。而“机器学习”这个名字,基本是一个幌子。很多人都看出来了,机器学习说白了就是统计学里面的“拟合函数”,换了一个具有迷惑性的名字而已。
人工智能的研究者们总是喜欢抬出“神经元”一类的名词来吓人,跟你说他们的算法是受了人脑神经元工作原理的启发。注意了,“
启发
”是一个非常模棱两可的词,由一个东西启发得来的结果,可以跟这个东西毫不相干。比如我也可以说,Yin 语言的设计是受了九 yin 真经的启发 :P
世界上这么多 AI 研究者,有几个真的研究过人脑,解刨过人脑,拿它做过实验,或者读过脑科学的研究成果?最后你发现,几乎没有 AI 研究者真正做过人脑或者认知科学的研究。著名的认知科学家 Douglas Hofstadter 早就在接受采访时指出,这帮所谓“AI 专家”,对人脑和意识(mind)是怎么工作的,其实完全不感兴趣,也从来没有深入研究过,却号称要实现“通用人工智能”(Artificial General Intelligence, AGI),这就是为什么 AI 直到今天都只是一个虚无的梦想。
识别系统和语言理解
纵观历史上机器学习能够做到的事情,都是一些字符识别(OCR),语音识别,人脸识别一类的,我把这些统称为“识别系统”。当然,识别系统是很有价值的,OCR 是非常有用的,我经常用手机上的语音输入法,人脸识别对于警察和间谍机关,显然意义重大。然而很多人因此夸口,说我们可以用同样的方法(机器学习,深度学习),实现“人类级别的智能”,取代很多人的工作,这就是神话了。
识别系统跟真正理解语言的“人类智能”,其实相去非常远。说白了,这些识别系统,也就是统计学的拟合函数能做的事情:输出一堆像素或者音频,输出一个个的单词文本。很多人分不清“文字识别”和“语言理解”的区别。OCR 和语音识别系统,虽然能依靠统计的方法,“识别”出你说的是哪些字,它却不能真正“理解”你在说什么。
聊一点深入的话题,看不懂的人可以跳过这一段。“识别”和“理解”的差别,就像程序语言里面“语法”和“语义”的差别。程序语言的文本,首先要经过词法分析器(lexer),语法分析器(parser),才能送进
解释器
(interpreter),只有解释器才能实现程序的语义。类比一下,自然语言的语音识别系统,其实只相当于程序语言的词法分析器(lexer)。
大部分的 AI 系统里面连语法分析器(parser)都没有,所以主谓宾,句子结构都分析不清楚,更不要说理解其中的含义了。IBM 的语音识别专家
Frederick Jelinek
曾经开玩笑说:“每当我开掉一个语言学家,识别率就上升了。” 其原因就是语音识别仅相当于一个 lexer,而语言学家研究的是 parser 以及 interpreter。当然了,你们干的事情太初级了,所以语言学家帮不了你们,但这并不等于语言学家是没有价值的。
很多人语音识别专家以为语法分析(parser)是没用的,因为人好像从来没有 parse 过句子,就理解了它的意义。然而他们没有察觉到,人其实必须要不知不觉地 parse 有些句子,才能理解它的含义。比如这样一个句子:“我并不完全反对去游泳这个提议。” 我问你,一个不能正确 parse 句子的机器,它如何知道你到底想去游泳,还是不想去?这个机器很可能看到“完全”,“反对”,“游泳”,…… 然后就根据关键字做出判断,认为你不想去游泳。它有可能会考虑那个“不”字,可是这个“不”字在句子里的位置,决定了它否认的结构。没有语法分析,你就不可能正确的理解它到底在否定什么。
制造自然语言的 parser 有多难?很多人可能没有试过。没想到吧,我做过这事 :) 在 Indiana 的时候,我为了凑足学分,修了一门 NLP 课程,跟几个同学一起实现了一个英语的 parser。你可能想不到有多困难,你不止需要深刻理解编程语言的 parser 理论,还得依靠大量的例子和数据,才能解开人类语言里面的各种歧义。我的合作伙伴是专门研究 NLP 的,什么 Haskell,类型系统,category theory,什么 GLR parsing 之类…… 都弄得很溜。然而就算如此,我们的英语 parser 也只能处理最简单的句子,还错误百出,最后蒙混过关 :P
经过了语法分析,得到一棵“语法树”,你才能传给人脑里语言的理解中心(类似程序语言的“解释器”)。解释器“执行”这个句子,为相关的名字找到对应的“值”,进行计算,才能得到句子的含义。至于人脑如何为句子里的词汇赋予“意义”,如何把这些意义组合在一起,形成“思维”,这个问题似乎没有人很明白。至少,这需要大量的实际经验,这些经验是一个人从生下来就开始积累的。我们制造的机器完全不具备这些经验,我们不知道如何才能让他获得经验,也不知道这些经验在人脑里面是什么样的结构,如何组织的。所以机器要真的理解一个句子,真的是登天一样的困难。
这就是为什么 Hofstadter 说:“一个机器要能理解人说的话,它必须要有腿,能够走路,去观察世界,获得它需要的经验,它必须能够跟人一起生活,体验他们的生活和故事……” 最后你发现,制造这样一个机器,比养个小孩困难太多了,这不是吃饱了没事干是什么。
机器对话系统和人类客服
各大公司最近叫得最响亮的“AI 技术”,就是 Siri,Cortana,Google Assistant,Amazon Echo 一类含有语音识别功能的工具,叫做“个人助手”。这些东西里面,到底有多少可以叫做“智能”的东西,我想用过的人都应该明白。我每一次试用 Siri 都被它的愚蠢所折服,可以让你着急得砸了水果手机。那另外几个同类,也没有好到哪里去。
很多人被“微软小冰”忽悠过,咋一看这家伙真能理解你说的话呢!然而聊一会你就发现,小冰不过是一个“网络句子搜索引擎”。它只是按照你句子里的关键字,随机搜出网上已有的句子。大部分这类句子出自问答类网站,比如百度知道,知乎。一个很简单的实验,就是反复发送同一个词给小冰,比如“王垠”,看它返回什么内容,然后拿这个内容到 Google 或者百度搜索,你就会找到那个句子真正的出处。人都喜欢自欺欺人,看到几个句子回答得挺“俏皮”,就以为它有智能,而其实它是随机搜出一个句子,牛头不对马嘴,所以你才感觉“俏皮”。比如,你跟小冰说:“王垠是谁?”,她可能回答:“王垠这是要变段子手么。”
心想多可爱的妹子,不正面回答你的问题,有幽默感!然后你在百度一搜,发现这句话是某论坛里面黑我的人说的。小冰只是随机搜索出这句子,至于幽默感,完全是你自己想象出来的。很多人跟小冰对话,喜欢只把其中“符合逻辑”或者“有趣”的部分截图下来,然后惊呼:“哇,小冰好聪明好有趣!” 他们没有告诉你的是,没贴出来的对话,很多都是鸡同鸭讲。
IBM 的 Watson 系统在 Jeopardy 游戏中战胜了人,很多人就以为 Watson 能理解人类语言,具有人类级别的智能。这些人甚至都不知道 Jeopardy 是怎么玩的,就盲目做出判断,以为 Jeopardy 是一种需要理解人类语言才可以玩的游戏。等你细看,发现 Jeopardy 就是很简单的“猜谜”游戏,题目是一句话,答案是一个名词。比如:“有个歌手去年得了十项格莱美奖,请问他是谁?” 如果你理解了我之前对“识别系统”的分析,就会发现 Watson 也是一种识别系统,它的输入是一个句子,输出是一个名词。一个可以玩 Jeopardy 的识别系统,可以完全不理解句子的意思,而是依靠句子里出现的关键字,依据分析大量语料得到的拟合函数,输出一个单词。世界上那么多的名词,到哪里去找这样的语料呢?这里我给你一个 Jeopardy 谜题作为提示:“什么样的网站,你给它一个名词,它输出一些段落和句子,给你解释这个东西是什么,并且提供给你各种相关信息?” 很容易猜吧?你只需要把这种网站的内容掉一个头,制造一个神经网络,输入句子,输出名词,就可以制造出可以玩 Jeopardy 的机器来,而且它很容易超越人类玩家(为什么?)。其实为了验证 Watson 是否理解人类语言,我早些时候去 Watson 的网站玩过它的“客服 demo”,结果完全是鸡同鸭讲,大部分时候 Watson 回答:“我不清楚你在说什么。你是想要……” 然后列出一堆选项,1,2,3……