专栏名称: 算法与数据结构
算法与数据结构知识、资源分享
目录
相关文章推荐
算法爱好者  ·  卖 2000 万,开发者却只赚 29 ... ·  昨天  
九章算法  ·  Meta薪资又爆了! ·  昨天  
算法爱好者  ·  “令人作呕!” 马斯克刚离职就开喷 ·  2 天前  
算法与数学之美  ·  知名大学原校长,任副省长! ·  2 天前  
算法爱好者  ·  网传淘宝商家能查买家跨店记录,官方回应来了 ·  2 天前  
51好读  ›  专栏  ›  算法与数据结构

王垠:自动编程是不可能的,我为什么不在乎人工智能

算法与数据结构  · 公众号  · 算法  · 2017-05-11 15:25

正文

请到「今天看啥」查看全文


我就是在那样一个冬天遇到了 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


经过了语法分析,得到一棵“语法树”,你才能传给人脑里语言的理解中心(类似程序语言的“解释器”)。解释器“执行”这个句子,为相关的名字找到对应的“值”,进行计算,才能得到句子的含义。至于人脑如何为句子里的词汇赋予“意义”,如何把这些意义组合在一起,形成“思维”,这个问题似乎没有人很明白。至少,这需要大量的实际经验,这些经验是一个人从生下来就开始积累的。我们制造的机器完全不具备这些经验,我们不知道如何才能让他获得经验,也不知道这些经验在人脑里面是什么样的结构,如何组织的。所以机器要真的理解一个句子,真的是登天一样的困难。








请到「今天看啥」查看全文