沈惠璋 上海交通大学安泰经济与管理学院信息管理与信息系统专业教授、博士生导师 天津大学系统工程专业工学博士,上海交通大学管理科学与工程博士后
在人工智能领域主要研究:机器推理、数据挖掘
我从80年代初开始从事的专业工作一直和人工智能的发展相关,对人工智能不是旁观者、是直接的参与者,所以有很多东西还是比较了解的。眼下人工智能炒得很热,有些人很乐观,认为人工智能无所不能;有些人很悲观,认为人工智能会对人类社会和生活产生威胁。其实这都是商业领域的炒作,就像炒作“大数据”一样,绝大多数是外行。专业人员反而不以为然,因为炒作的和事实相去甚远。今天从现象讲起,过渡到本质,比较专业地介绍人工智能的过去、现在和未来。希望在了解本质的基础上,确定我们的努力方向,为中国人工智能的腾飞贡献一份力量。 一、人工智能领域的各个位置 大家都知道,有一种照相机叫傻瓜相机,傻瓜相机实际上是智能相机。真正普及到大众手里的、最早的人工智能产品实际上就是傻瓜相机,1978 年生产的Canon A-1是最早的、有集成电路的数字化微处理器,实现了包括手控曝光在内的、有六种曝光模式、以及大范围测光系统的智能照相机。从那时开始,摄影就不再是摄影家的专利。从商业角度看,智能照相机成为商品市场上的宠儿,为众多商家牟取了大量利润。从社会角度看,不仅大大丰富了人类的生活,而且更加全面、深刻地记录了历史的变迁。 所以,傻瓜相机本身是智能的、但是对使用相机的人来说,所谓的傻瓜不是真傻,而是说不需要专门的训练,是个人就会用。所以从产品的角度,从商业的角度,这是个好东西,它很普及。以前只有受过专业训练的人才会照相,会的人很少,现在谁都会,这就是技术进步给人类带来的好处! 在我们这个行当里,做个比喻,把使用傻瓜相机的用户叫最终用户(End-user),那么再往上叫用户(User)。
User是专业的摄影师、摄影家,再往上应该是制造照相机的,就是Maker,例如蔡斯、尼康。当然,现在蔡斯、尼康既生产,又设计。那么,照相机的第一个设计师是谁呢?最早应该是这个Daguerre(法国,1838年),他是个画家。但是,这位设计师是基于科学家发明的透镜光学原理才发明了照相机。咱们都知道望远镜是伽利略(意大利1610年)发明的、是科学家(Scientist)。实际上比伽利略早两年的Lippershey(荷兰1608年)最先发明了望远镜,然后伽利略在他的基础上,两年以后研制出更好的望远镜。 而望远镜的光学原理在西方被认为是思想家亚里士多德(BC 384-332)发现的,其实更早的、现在有史可查的是咱们中国的墨子(墨翟BC 468-376),他比亚里士多德更早地发现了光学原理,但是西方人不知道。 所以,上图表示的是从End-user、User、Maker、Desigenr、Scientist、到Thinker的关系。 这张图的第一行,也像第二行和第三行一样,在计算机人和工智能这个领域,也有End-user、User、Maker、Desigenr、Scientist、和Thinker。很多使用计算机的人、包括应用人工智产品的人,都是处于End-user这个位置。还有些人属于User这个位置,例如我和前面坐的这几位教授,我们距离Scientist、和Thinker还差很远。距离IBM、微软、英特尔、苹果等,也还相差一定的距离。比如说软件方面我们还没有自己的操作系统、编译系统;硬件方面还没有英特尔水平的CPU和IBM水平的大型计算机。 我们现在总强调说应该有自主创新、说我们原创的东西少。我今天想说的主题就是这个,原创从哪里产生?如果咱们大家都集中在End-user这里,就不会有原创;都集中在End-user这里,就只能跟着人家走;集中在这儿,只是最终用户、使用人家的东西,不可能有原创。 近来有些原创性的东西,好像属于商业模式,比如说摩拜。这种东西也算是一种创新,但这种创新和科学技术创新还不一样。一个商业模式很可能就是流行这么几天、几个月,很短一段时间就过去了,不能长久,更不能作为知识产权长久地持有这个产品的产权和专利,像IBM、微软、英特尔那样。 IBM、Software在图中被放在Maker的位置,它们就没有设计能力了?当然有设计能力。但是最早设计计算机的实际上比IBM要早很多,例如楚泽(Konrad Zuse),他是德国人,1936年开始研制以记忆能力和可编程化为特色的Z系列计算机,1938年制造出Z1计算机。这个George Stibitz是美国人,他1937年,发明Model-K,1940年1月8日,M-1开始运行,标志着美国的第一台数字计算机诞生,电磁式、二进制。一般教材上都写世界上第一台计算机是ENIAC,实际上它不是第一台,前前后后有很多了。ENIAC计算机和现代计算机不一样,不是冯·诺伊曼结构的,是十进制的。正是因为Zuse、George Stibitz的前期探索,才有了后来的ENIAC和IBM计算机。
到Scientist这个级别的实际上是冯·诺伊曼这个档次的,现在有的人说冯·诺伊曼是计算机之父,他已经有很多桂冠了。冯·诺伊曼1933年解决了希尔伯特第5问题,他建立了算子环理论、冲击波理论、湍流理论、博弈论等好多东西他都算是创始人。但是冯·诺伊曼自己很实事求是,很谦虚,他说真正的计算机之父应该是图灵。在计算机这个领域里,图灵应该属于思想家级的。 二、图灵奖和我们努力的方向 现在,我们上海也把人工智能作为我们新兴产业之一,在国家层面也制订了一个2030年要占领世界人工智能前沿的规划。我现在很着急,跟学生、跟同事讨论的就是我们怎么占领这个前沿?什么时候占领前沿?占领前沿就需要朝这张图的左边努力,即争取出一批计算机思想家、科学家,如果我们现在都集中在End-user这里,我们就占领不了前沿。上次有一个报告,也是计算机领域很有名的大牛,他说我们现在中国人在世界上发表的人工智能的论文已经占到总数的43%。不用看我们也知道,43%这里面绝大多数实际上是User和End-user这个层次的,那到底什么算作科学家这个层次呢?我认为应该是图灵奖获得者们,当然这是个人的观点,不见得对,我们可以讨论。一会儿我给大家看看,图灵奖获得者们在干什么? 咱们中国人里,有一个人应该说达到了这个水平,谁呢?就是吴文俊先生,是咱们交大的校友,他把中国古代的数学思想和现代计算机科学结合起来发明了一套特殊的定理机械化证明,就像屠呦呦把古代葛洪的提炼方式与现代的仪器和设备相结合提炼出青蒿素一样,在全世界是首创的。吴文俊先生的这个方法全世界都承认,并且称之为吴方法,我认为他是达到了图灵奖获得者这个水平。但是他没有获得图灵奖,为什么呢?我和朋友也讨论过这件事,有人说是因为外国人歧视中国人。从自然科学的客观角度分析这件事,我觉得也不完全是外国人歧视中国人的原因,凡是获图灵奖的人都是解决了两类问题之一,一类是这个问题已经持续了很多年,例如,希尔伯特的23个数学问题,全世界的数学家搞了一百多年,只要谁解决了其中一个问题就获菲尔兹奖或图灵奖。包括图灵自己,他们这些人里面很多也在设法解决希尔伯特问题,有的获了菲尔兹奖、有的获了图灵奖。换句话说,这个问题是个著名问题,大家都解决不了,很多人都研究了十几年了,你忽然解决了,给出了一个很漂亮的最终的解决方法,大家就把图灵奖给你了。 还有一类,这类问题或者是一个难点,只要一突破了,后面一系列问题跟着解决了;或者别人没有想到,你提出来了,立刻成为这个领域的标准!我认为图灵奖也考虑应用,但是应用面要广、要很有代表性。咱们现在看看历届图灵奖获得者,这些人做的东西基本都是属于这两类。 咱们中国科学家吴文俊先生做的东西从科学上讲是创新、是别人所没有的,而且他自成一派,外国人是承认的。但是这个东西的可推广性如何、是不是能解决一系列实际问题等,还不知道,所以没有获得图灵奖。但是,也许再过十年、二十年,甚至一百年之后,吴方法才被实践证明确实很厉害。到那时,世界上就会出现一个和图灵奖齐名的吴文俊奖,有可能!很多数学发现就是这样的,像数论、群论,开始没人认为有用。但过了几十年、上百年以后,突然它就行了、就有意义了。 现在咱们看看历届图灵奖得主及研究领域,例如这个人,1983年图灵奖得主,Unix操作系统和C语言的发明人。为什么他获奖了呢?如果没有C语言,就不会有苹果、微软的软件,也不会C++、Java。Unix成了小型计算机的操作系统标准,我们现在用的所有的操作系统都是脱胎于它,都是它的简化版,没有超过它,所以他的贡献是很大的。 这一位叫彼得·诺尔(Peter Naur)他完善了BNF范式(Bcakus-Naur-Form),中文叫做巴斯克语言公式。实际上他著名的成果就是Algol 60报告,Algol 60是一个算法语言编译器。在他之前,计算机语言是通过说明性的使用手册和编译代码本身而非正式地定义。他通过使用BNF来定义语法,并用精心选择的说明文字定义语义,从而简洁、准确。现在全世界所有的、各种算法语言都是基于这个巴斯克语言公式的,所以他的贡献是很大的,这个东西是原创的。 我们用的算法语言编译器都是外国人开发的,中国人原创的到现在一个也没有。为什么?就是这些基础的东西不好做,三年、五年你肯定做不出来。但是现在全国的各种科研人员都要接受考核,考核方式为一年一考核,最多三年一考核,三年能做出一个原创的算法语言编译器吗?肯定不能。 说到这里想起一个我的亲身经历,我1979年上本科,1980年的时候学习Algol 60语言,讲课的那位老师他不讲语言,就是不像现在的老师一样讲语句的用法,他讲的就是巴斯克语言公式,很抽象。当时大家学得也很费劲儿、很麻烦、很糊涂!老师您讲的都是什么?都是这种定义,那种定义。然后他说编程序吧,我们开始真是无从下手。我们试着编了几条程序,然后问老师:“您给看看这个程序编得对吗?”那会儿的计算机和现在不一样,现在人手一个,那会儿你只能去机房,而且操作系统不是现在这种交互式的、而是批处理,你不能随便自己做,你根本不能摸,你最多打打纸带给人家专职操作员,人家给你一个计算结果。我请老师给看看程序 那位老师怎么说?“我不是教过你吗?”我说:“没教过,不会啊。”老师说:“我教你那个巴斯克语言公式就是干这个用的!”然后他就开始一条条推导,推导到这里推不下去,这个错了。推导到那里推不下去,那个错了。有同学问为什么?他说:“计算机本来就是这么推导的,你给它,它就是这么推导的。我现在教过你了,你自己推导,你也可以知道对错。”如果我现在这样教学生,学生几天就会把我赶下讲台。 但是后来,又过了十年,我自己做项目,我自己写一个小编译器的时候,编译器不是很好写的,我才发现这个巴斯克语言公式真的太有用了、太美妙了!当时我在上本科的时候就学两个算法语言,其中一个就是用巴斯克语言公式描述的Algol 60,另一个是汇编语言。老师当时就讲,你把这两个学好了,你这一辈子不管计算机怎么变化,任何计算机算法语言你都会!到现在将近四十年了,确实是这么回事,任何的语言拿过来我一看就会,马上就能用。 所以有人说计算机变化太快了,算法语言变化太快了,都跟不上学!我说实际上本质是没有变的。计算机飞速发展、什么总在变?我说计算机技术总在变,应用在不断发展,花样翻新,很多名词在不断发展,花样翻新。但是,计算机科学没有变,尽管这些图灵奖获得者们做了很多工作,但是计算机科学发展并不快。 比如这个人Donald E. Knuth是1974年获得了图灵奖,写了一套书叫《程序设计艺术》,他把自己的计算机编程思想、方法、艺术和技巧都包括在里面,程序多数都是汇编语言实现的,这套书被全世界公认是好书。所以当有学生问我应该学哪一种算法语言的时候,我说:一个是学汇编语言,一个是巴克斯语言公式,足够了。 我这些年一直坚持给CS、MISS专业的学生讲计算机原理和汇编语言,很多人,包括我们很多的同事和朋友也在说:“你干嘛还讲这个计算机原理和汇编语言,这个很老了,讲点新的。”实际上不是因为我只熟悉老的,所以我讲老的,新的根本就不会。实际上我讲计算机原理和汇编语言是为了两个目的:一个是计算机原理,它就是冯·诺伊曼体系结构,属于上图中的Scientist这个层次;另一个汇编语言就是图灵计算,属于上图中的Thinker这个层次。如果没有这两个基础,永远都会在End-user这个层次里翻跟头,连升入User这个层次都不可能! 但是现在我担心的是什么?我给大家看一个东西,这是我前几天接到一个《机器学习与R语言应用实战培训班,》通知,培训三天。然后说:“用户不需要掌握任何分析过程背后数学模型的细节就能很简单地通过R语言在数据集上执行机器学习算法,快捷地完成数据分析任务。”包括算法的R的数据可视化、常用统计量计算、数据质量分析、朴素贝叶斯分类器 、决策树算法、随机森林、支持向量机算法 、神经网络、层次聚类算法、离群点检测方法……什么都有。
三天学这么多东西根本就是不可能的。实际上你去了以后,他给你摆好了软件,让你操作一下。也可以拷贝给你,你按这个键,结果出来了,就像用傻瓜相机拍照一样。不同的是,用傻瓜相机肯定可以拍出照片;用傻瓜软件肯定挖不出有用的东西!但是确实有很多大学老师去参加这个班,然后再回去给大学生教学,这就很麻烦。这种教法和学法就完全是在End-user这个层次打转,你永远提高不了。 三、人工智能是“智能”吗? 接下来咱们进入人工智能的话题,图灵提出了一个著名的“图灵测试”,说隔壁屋子里有一个人、还有一个计算机,咱们这屋里有一个计算机终端,我用这个计算机终端跟那屋对话,如果我判断不出来那屋和我对话的到底是人还是计算机的话,就说明这个计算机通过了图灵测试。实际上图灵此时描述的智能是指“类似人的智能”,就是像人一样的智能。和现在大家谈论的人工智能有很多区别。 咱们都知道逻辑思维和逻辑推理,是亚里士多德完成的演绎推理逻辑体系,建立了形式逻辑,后来叫法不一样,把亚里士多德的形式逻辑叫传统逻辑,也就是演绎法的三段论。把数理逻辑叫做现代形式逻辑。这个逻辑和智能是什么关系呢?其实什么是智能到现在也说不清楚,没有形式化的定义,这是第一。 第二,人类思维的生理机制是什么?到现在是不清楚的。不但生理机制不清楚,人是从哪来的不清楚,到哪里去也不清楚。现在大家还都在研究,以前说人是猿变的,现在很多人说根本不可能,说进化论有问题,因为没有中间的过渡,一下子就跳变了,没有这种跳变的证据,找不出证据来,可能就是不对的。人们近年又出土了很多东西,以我们现在最准确的碳十四鉴定发现属于几亿年前的东西,远比之前我们认为的历史要早。这是怎么回事?所以又有一个新的说法,可能地球上原来有智慧生物,包括人类文明,因为灾难灭绝了,后来又慢慢发展起来了。 那么形式逻辑是什么?它是研究思维规律的。也就是说在你的脑子里面是怎么想的?每个细胞在怎么起作用?还是什么电子在起作用,我不清楚,但是你的思考过程、思维规律我是清楚的。因为两个人对一个事物的判断,有的人判断对,有的人判断错误,那什么叫对,什么叫错?那对为什么对呢?这套逻辑早期中国也有,只是没有西方宣传得好,中国古代白马非马就是逻辑学案例,上图中的墨子也是逻辑学家。但是西方记载比较详细,并且公认亚里士多德是形式逻辑的创始人 形式逻辑是研究思维规律的,生理机制不知道,但是推理结果我知道。什么是前因,什么是后果,什么是对的,什么是错的,什么是矛盾的,什么是对立的,什么是悖论等等,这个搞得很清楚。 如果计算机也能像人的逻辑推理过程一样进行逻辑推理的话,那计算机算不算智能呢?现在有人说了,这不算智能,但是我觉得算智能。智能推理实际是基于人类逻辑推理的。 我再简单扩展一下,最早叫传统逻辑,后来演变到哲学了。其实到后面的辩证法,唯物辩证法也是逻辑。但是我们现在大学里很多的学生把它当政治课了,他背背就完了。实际之前就是逻辑学,是很重要的。然后就是这张PPT上的莱布尼茨,他在这个时候(1646-1716),也就是亚里士多德之后过了一千多年,他把形式逻辑公式化,他提出了数理逻辑,也叫符号逻辑。布尔在这个时候(1815-1864)提出布尔代数,就是0101的那个东西。 我刚刚在说计算机科学的变化不大,就是所有计算机科学完全都是基于数理逻辑和布尔代数的。希尔伯特就是那个数学家,提出23个问题的那个,就到这个时候(1896~1962),出版了集合论等等。这些实际上是真正的、底层的计算机科学,我个人认为我们在这个层次有突破才是世界高峰。否则的话,没法儿攀到高峰。 希尔伯特后面这个人是哥德尔,实际上哥德尔后面紧接着就是图灵了。哥德尔1930年发表了博士论文的修改稿《逻辑谓词演算公理的完全性》,逻辑谓词演算就是用于逻辑推理的。 如果有人问,计算机逻辑推理算智能吗?我说它算智能!为什么?一个好的形式逻辑学家,或者叫逻辑学家,实际这些人(指莱布尼茨、布尔、希尔伯特、哥德尔和图灵)都是逻辑学家。某人如果达到这些人的逻辑水平,他至少是逻辑学家或者是哲学家水平,你能说他没有智能吗?他肯定是智能的,而且是高智能!如果把机器做得具有和哲学家一样的逻辑推理能力,这个机器是智能吗?肯定是智能啊!
但是我也可以说他没有智能,这不是悖论吗,自相矛盾啊?实际上形式逻辑后来就演化出机械唯物论。咱们学习辩证唯物论的时候都在批评机械唯物论,实际上形式逻辑完全是机械逻辑(数理逻辑当然也是机械逻辑)。如果我们拿辩证唯物论一比就知道机械逻辑弱爆了,辨证唯物论讲究对立、统一、运动、矛盾,机械唯物论就不行,它就很死板、就差很多。从这个角度来说只会机械逻辑的计算机又不够智能。 四、人工智能会取代人类吗? 现在问:人工智能会取代人类吗,会把人类灭绝了吗?我不是可能派,我是坚决的反对派,我坚信根本就不可能。现在的计算机没有超出机械唯物论的范畴,在马克思主义、毛泽东思想的指引下,我们学的哲学都是唯物辩证法,即辨证唯物论和历史唯物论。机械唯物论和历史唯物论差的不是一星半点儿,差得很多。计算机要达到历史唯物论这个水平,无论从基础理论上,从思想上都是达不到的,机器没有思想。所以从这个角度看,我认为大家不用担心机器会灭绝人类,它没有这个能力。 下面我简单介绍一下人工智能的方法和应用,看这张PPT,这几位在坐的老师都是做知识表示、推理、搜索、自然语言理解等等。连接符号学习是属于神经网络的,现在神经网络做得最好的领域在图象识别,其次是语音识别,可以用它来区分人的声音,本质上神经网络是一个模式识别系统。如果按照传统的人工智能的标准,它不算人工智能的。传统的人工智能就是前面说的逻辑推理能力,不仅具有正确的逻辑推理能力、还要解释推理过程。神经网络没有逻辑推理、更不会解释,它就是傻算,一会儿给大家看一个例子。 刚才说了,传统的推理学派就是符号推理,是最严谨的。连接学派就是现在的神经网络。
行为主义学派就属于控制论学派,就是自动控制。比如说一个飞机在跑,一个导弹在追,你说人拿按钮控制导弹肯定追不上,人的反应是很慢的,智能自动控制系统就很快。因为我本科就是专门学跟踪、拦截的,有很多算法,没有计算机根本就没法实现。这个智能自动控制系统跟踪、拦截飞机没有问题,但是你让它跟踪、拦截一个人,它就不会了。所以在特定领域里人不如计算机,在另一个特定领域里面计算机不如人。人和机器有区别,虽然有些时候能够互相代替,但是本质的东西还是代替不了。所以不可能因为计算机强了,人类都失业了,我不认为是这样的。但是计算机人工智能强了以后,会改变人类工作的内容,就是人类的工作性质不一样了。计算机人工智能做那个机械的、重复做的工作,它不知道疲劳,只要这次做对了,下次还这么做。人类不行,你现在做得对,一会儿迷糊了、犯困了,一会儿想别的事开小差了,你可能就出错,计算机不会犯这种错误。但是创造性的东西、有一些触类旁通的东西、联想的东西计算机人工智能就不行。 人能联想,计算机有没有办法联想?我尝试研究了三年,最后也放弃了。 五、大数据 再说两句大数据,号称大数据的特别多,什么都是大数据。我有一次参加一个学生毕业论文答辩的时候,他说我是基于大数据的论文。我问:你的大数据是从哪里来的?他说:我发调查问卷。我问:你回收了几张问卷?他说:三张问卷。他一张问卷二十来个变量,所有数加起来六十来个,他也说是大数据,纯粹瞎搞。到后来我一看这个大数据越做越多,实际上大数据是什么?达到PB数量级的才能叫大数据。我们现在计算机的内存都是4G-8G,硬盘一般的笔记本电脑是500G的硬盘,你说我的是4T的,4T是外置的,不是在机器里面的。为什么?超过500G的硬盘速度慢,不能做系统盘。所以电脑里的系统盘都是较小的,机械盘最大是500G,固化盘是255G这个档次,外置的现在是4G。 多少个T才叫一个P呢?就是1024个T才叫1P,就是我们4T的硬盘得256个才叫1P。你现在计算机的内存是多少?我们现在的计算机内存是4G,有的人说我这个好,我是8G,8G也不够,你装这个1P数据根本装不了。 所以大数据指的是什么?纯粹指的是计算机的技术实现方法。技术怎么实现呢?一个是用超大的计算机。但是现在,无论你的计算有多强?单独一个大计算机也是完成不了,需要很多计算机的合作。很多计算机怎么合作?就是云计算、网格计算,实际上这个东西在40年前就已经有了,一直在做,只不过他没有宣传,大家不知道。专业术语是分布式操作系统、分布式计算,和发明C语言那个年代是一个年代的,1977年不是发明了C语言吗?那个年代也在做这个东西,只不过没怎么宣传罢了,现在是宣传了。 所以它是一个很专业的技术问题,和一般的End-user没有关系。你说阿里巴巴、亚马逊的数据大,双十一一天就超过PB个数据了、达到了大数据的级别。超过这PB数据之后有必要把所有数据放到一起、一起处理吗?卖面包的和卖手表的数据有关系吗?所以实际上这种大数据的处理技术对End-user来说没有特别的意义。 大数据还有几个特点,除了数据量大以外,数据利用价值率低,为什么?什么数据都放在一起了,但绝大多数是垃圾、没用的东西,你怎么把不是垃圾的、有用途的数据挑出来?这实际上是很专业的东西、很不好做的。所以不是有了大数据就有了一切。更关键的就是绝大多数还不是大数据。 现在谈谈大数据与统计的关系,很多人说统计学就是处理大数据的,统计方法就是智能,实际不是。
如果真的推广大数据的话,统计学就彻底被废掉了!为什么?统计学已经有几百年的历史,统计学的思想有上千年的历史。统计学为什么诞生的?就是因为当数据量大的时候,我没有总体的样本,我没有条件获得总体数据,更没有这个能力处理处理总体数据,我只能采用抽样的办法。所以,统计学是希望通过抽样,用部分来推断总体。而大数据是总体数据、全部样本都有,不但可以获得总体数据、而且可以处理整体数据(现在所谓的大数据就是这两个意思:获得总体数据、处理整体数据)!我还需要抽样吗?我需要用小样本推断总体数据吗?我已经有了总体数据啊!所以从这个角度来说,大数据和统计学是矛盾的。
(本文根据2017年12月27日沈惠璋教授在深度思考论坛上的演讲整理,未经演讲人审核。)
|