从马文到AlphaGo AI走过了怎样的70年?-程序员宅基地

技术标签: 人工智能  数据结构与算法  大数据  

(原标题:从马文·明斯基到AlphaGo,人工智能走过了怎样的70年?)

【编者按】从19世纪中叶人工智能的萌芽时期,到现今人工智能的重生,从马文·明斯基到AlphaGo,历史上发生了哪些激动人心的故事?本文以此铺展人工智能发展近70年来背后发生的故事。作者@沐阳浸月,中科院自动化所复杂系统国家重点实验室研究生,主攻机器人与人工智能。

从马文·明斯基到AlphaGo,人工智能走过了怎样的70年?

前不久,在人工智能领域发生了两件大事,一个就是是伟大的人工智能先驱马文·明斯基教授逝世,一个是谷歌AlphaGo击败欧洲围棋冠军,职业围棋二段樊麾。

马文·明斯基教授是几乎见证了从人工智能作为一门学科的兴起直至今日成就的所有大风大浪的人,或者可以说何教授本人就是这些大风浪的弄潮儿,他对人工智能的发展的影响意义十分深远。而谷歌AlphaGo此次取得的成就,也可以算是人工智能领域一次里程碑式的创举,它的成功标志着人工智能领域又进入了一个新高度。这篇文章,我们将从马文·明斯基还是哈佛大学本科生的时候讲起,一直到今日AlphaGo的胜利,梳理一下人工智能是怎样从初见萌芽一步一步走到今日的辉煌成就的。

从马文·明斯基到AlphaGo,人工智能走过了怎样的70年?

要是从宏观的角度来讲,人工智能的历史按照所使用的方法,可以分为两个阶段,分水岭大概在1986年神经网络的回归——

前半段历史中,我们主要使用的方法和思路是基于规则的方法,也就是我们试图找到人类认知事物的方法,模仿人类智能和思维方法,找到一套方法,模拟出人类思维的过程,解决人工智能的问题。

后半段的历史,也就是我们现在所处的这个时期,我们主要采取的方法是基于统计的方法,也就是我们现在发现,有的时候我们不需要把人类的思维过程模拟出一套规则来教给计算机,我们可以在一个大的数量集里面来训练计算机,让它自己找到规律从而完成人工智能遇到的问题。

这个转化也可以用一个形象的例子来描述,就像我们想造出飞机,就观察鸟是怎么样飞的,然后模仿鸟的动作就行,不需要什么空气动力学什么的,这种思想在人类历史上也被称为“鸟飞派”。但是我们都知道,怀特兄弟造出飞机靠的是空气动力学,而不是仿生学。不过我们不能就因为这一点就笑话人工智能前半段各位研究人员和前辈的努力和心血,因为这是人类认知事物的普遍规律,其实现在也有不少人会认为,计算机可以读懂文字、看懂图片靠的是依靠和我们人类一样的认知过程。

从马文·明斯基到AlphaGo,人工智能走过了怎样的70年?

在研究基于规则的探索中,人工智能经历了三个主要阶段——兴起、繁盛和萧条。会有这样的过程,一个重要原因是基于规则方法的局限性。好了,那我们就先扒一扒这段历史。

一、萌芽阶段

人工智能的萌芽时期大概出现在19世纪中叶,第一位需要介绍的人物便是马文·明斯基。明斯基于1946年进入哈佛大学主修物理专业,但他选修的课程相当广泛,从电气工程、数学,到遗传学、心理学等涉及多个学科专业,后来他放弃物理改修数学。

1950年,也就是明斯基本科的最后一年,他和他的同学Dean Edmonds建造了世界上第一台神经网络计算机,并命名其为SNARC(Stochastic Neural Analog Reinforcement Calculator)。这台计算机是由3000个真空管和B-24轰炸机上一个多余的自动指示装置来模拟40个神经元组成的网络的。后来,明斯基又到普林斯顿大学攻读数学博士学位,并以“神经网络和脑模型问题”为题完成博士论文,但是当时的评审委员会并不认为这可以看做是数学。

从马文·明斯基到AlphaGo,人工智能走过了怎样的70年?

(马文·明斯基)

明斯基的这些成果虽然可以被称作人工智能的早期工作,但是鉴于当时的明斯基还是一个青涩的毛头小子,所做的博士论文都不能得到相应的认可,所以影响力有限。

接着上场的第二位人物影响力就大很多,那就是计算机科学之父阿兰·图灵,他是被认为最早提出机器智能设想的人。图灵在1950年的时候(也就是明斯基还在读本科的时候)在杂志《思想》(Mind)发表了一篇名为“计算机器与智能”的文章,在文章中,图灵并没有提出什么具体的研究方法,但是文章中提到的好多概念,诸如图灵测试、机器学习、遗传算法和强化学习等,至今都是人工智能领域十分重要的分支。

从马文·明斯基到AlphaGo,人工智能走过了怎样的70年?

(图灵在1950年的时候在杂志《思想》(Mind)发表的名为“计算机器与智能”的文章)

介绍完以上两大人物,接下来标志着人工智能作为一个独立领域而诞生的盛会——达特茅斯研讨会就要粉墨登场了。

不过在介绍达特茅斯研讨会之前,我们不得不介绍这第三位重量级的人物,那就是约翰·麦卡锡,因为他正是这次研讨会的发起人。约翰·麦卡锡于1948年获得加州理工学院数学学士学位,1951年获得普林斯顿大学数学博士学位。然后又在那里作为老师工作了两年,接着短暂地为斯坦福大学供职后到了达特茅斯大学,正是这个时期,它组织了达特茅斯研讨会。在这次大会上,麦卡锡的术语人工智能第一次被正式使用,所以麦卡锡也被称作人工智能之父。其实麦卡锡在达特茅斯会议前后,他的主要研究方向正是计算机下棋。

从马文·明斯基到AlphaGo,人工智能走过了怎样的70年?

(约翰·麦卡锡)

下棋程序的关键之一是如何减少计算机需要考虑的棋步。麦卡锡经过艰苦探索,终于发明了著名的 - 搜索法,使搜索能有效进行。 - 搜索法说核心就是,算法在采取最佳招数的情况下允许忽略一些未来不会发生的事情。说的有点抽象,我们来举个十分简单的例子。

假如你面前有两个口袋和一个你的敌人,每个口袋放着面值不等的人民币,你来选择口袋,你的敌人决定给你这个口袋里哪张面值的钱。假设你一次只能找一只口袋,在找口袋时一次只能从里面摸出一次。当然你希望面值越大越好,你的敌人自然希望面值越小越好。假如你选择了第一个口袋。现在我们从第一个口袋开始,看每一张面值,并对口袋作出评价。比方说口袋里有一张5元的和一张10元的。如果你挑了这只口袋敌人自然会给你5元的,10元的就是无关紧要的了。

现在你开始翻第二个口袋,你每次看一张面值,都会跟你能得到的最好的那张面值(5元)去比较。所以此时你肯定就去找这个口袋里面面值最小的,因为只要最少的要比5元好,那么你就可以挑这个口袋。假如你在第二个口袋摸出一张1元的,那么你就不用考虑这个口袋了,因为如果你挑了这个口袋,敌人肯定会给你1元面值的,那当然要选择最小面值的5元的那个口袋啦。

从马文·明斯基到AlphaGo,人工智能走过了怎样的70年?

(基于 - 剪枝算法的智能五子棋)

虽然有点绕,不过我觉得你应该大概已经理解了这个思路。这就是 - 搜索法,因为这种算法在低于或者超过我们搜索中的 或者 值时就不再搜索,所以这种算法也称为 - 剪枝算法。这种算法至今仍是解决人工智能问题中一种常用的高效方法。当年IBM的深蓝国际象棋程序,因为打败世界冠军卡斯帕罗夫而闻名世界,它靠的正是在30个IBM RS/6000处理器的并行计算机上运行的 - 搜索法。

但是需要注意的是,前不久的谷歌AlphaGo,由于棋盘是19x19的,几乎所有的交叉点都可以走子,初始的分支因子为361,这对于常规的 - 搜索来说太令人生畏了,所以别看名字里面带了一个 (Alpha,有可能这个名字是为了纪念麦卡锡的 - 搜索算法),AlphaGo采用的是却是蒙特卡洛搜索树(MCTS),它是一种随机采样的搜索树算法,它解决了在有限时间内要遍历十分宽的树而牺牲深度的问题。

从马文·明斯基到AlphaGo,人工智能走过了怎样的70年?

后来麦卡锡有从达特茅斯搬到了MIT,在那里他又做出了三项十分重要的贡献。第一个是他定义了高级语言Lisp语言,从此Lisp语言长期以来垄断着人工智能领域的应用,而且人们也有了可以拿来用的得力工具了,但是稀少而且昂贵的计算资源仍是问题。于是麦卡锡和他的同事又发明了分时技术。然后,麦卡锡发表了题为“有常识的程序”的文章,文中他描述了一种系统,取名为意见接收者,任务是使用知识来搜索问题的解,这个假想也被看成是第一个完整的人工智能系统。

同年,明斯基也搬到了MIT,他们共同创建了世界上第一座人工智能实验室——MIT AI Lab实验室。尽管后来麦卡锡和明斯基在某些观点上产生了分歧导致他们的合作并没有继续,但这是后话。

从马文·明斯基到AlphaGo,人工智能走过了怎样的70年?

(MIT AI Lab实验室)

二、人工智能的诞生

好了,前期的一些大人物介绍完了,让我们一起回到1956年那个意义非凡的夏天。

那年,28岁的约翰·麦卡锡,同龄的马文·明斯基,37岁的罗切斯特和40岁的香农一共四个人,提议在麦卡锡工作的达特茅斯学院开一个头脑风暴式的研讨会,他们称之为“达特茅斯夏季人工智能研究会议”。参加会议的除了以上这四位,还有6位年轻的科学家,其中包括40岁的赫伯特·西蒙和28岁的艾伦·纽维尔。在这次研讨会上,大家讨论了当时计算机科学领域尚未解决的问题,包括人工智能、自然语言处理和神经网络等。人工智能这个提法便是这次会议上提出的,上文也有提到。在这个具有历史意义的会议上,明斯基的SNARC,麦卡锡的 - 搜索法,以及西蒙和纽维尔的“逻辑理论家”是会议的三个亮点。前面已经对明斯基的SNARC,麦卡锡的 - 搜索法有所介绍,下面我们再来看一下西蒙和纽维尔的“逻辑理论家”又是什么。

西蒙和纽维尔均是来自卡内基梅隆大学(当时还叫卡内基技术学院)的研究者,他们的研究成果在这次盛会上十分引人注意。“逻辑理论家”是西蒙和纽维尔研究出来的一个推理程序,他们声称这个程序可以进行非数值的思考。然后在这次研讨会之后不久,他们的程序就能证明罗素和怀特海德的《数学原理》第二章的大部分定理。但是历史往往对新鲜事物总是反应迟缓,他们将一篇与逻辑理论家合著的论文提交到《符号逻辑杂志》的时候,编辑们拒绝了他们。

从马文·明斯基到AlphaGo,人工智能走过了怎样的70年?

我们现在来看看这个研讨会的成果,或者说叫意义。遗憾的是,由于历史的局限,这个世界上最聪明的头脑一个月的火花碰撞,并没有产生任何新的突破,他们对自然语言处理的理解,合在一起甚至不如今天一位世界上一流大学的博士毕业生。但是这次研讨会却让人工智能领域主要的人物基本上全部登场。在随后的20年,人工智能领域就被这些人以及他们在MIT、CMU、斯坦福和IBM的学生和同事们支配了。

我们看看这10个人,除了香农,当时其实大多数都没什么名气,但是不久之后便一个个开始崭露头角,其中包括四位图灵奖的获得者(麦卡锡,明斯基,西蒙和纽维尔),这四位也是我上文主要介绍的四个人。当然,香农也不用得图灵奖,作为信息论的发明人,他在科学史上的地位也图灵也差不多了。

从马文·明斯基到AlphaGo,人工智能走过了怎样的70年?

(香农) 

三、短暂的繁荣与困境

从这次会议之后,人工智能迎来了它的一个春天,因为鉴于计算机一直被认为是只能进行数值计算的机器,所以,它稍微做一点看起来有智能的事情,人们都惊讶不已。

因为鉴于当时简单的计算机与编程工具,研究者们主要着眼于一些比较特定的问题。例如Herbert Gelernter建造了一个几何定理证明器,可以证明一些学生会感到棘手的几何定理;阿瑟·萨缪尔编写了西洋跳棋程序,水平能达到业余高手;James Slagle的SAINT程序能求解大学一年级的闭合式微积分问题;还有就是结合了多项技术的积木世界问题,它可以使用一只每次能拿起一块积木的机器手按照某种方式调整这些木块。

从马文·明斯基到AlphaGo,人工智能走过了怎样的70年?

(马文·明斯基与他的积木机器人)

虽然这些早期的人工智能项目看起来拥有着巨大的热情和期望,但是由于方法的局限性,人工智能领域的研究者越来越意识到他们所遇到的瓶颈和困难,再加上没有真正令人振奋人心的项目出来而导致资助的停止,人工智能陷入了一个低潮。

产生这些现实困难的原因主要有三点。

第一点是大部分早期程序对要完成的任务的主题一无所知。就拿机器翻译来说,给程序一个句子,会用的方法只是进行句法分割然后对分割后的成分进行词典翻译,那这样就很容易产生歧义。例如I went to the bank,bank既有银行也有河岸的意思,如果只是单纯的分割加单词翻译,这句话根本没法解释。

第二点是问题的难解性。上面我已经提到,早期的人工智能程序主要解决特定的问题,因为特定的问题对象少,复杂度低啊,但是一旦问题的维度上来了,程序立马就捉襟见肘了。

第三点就是程序本身的结构就有问题。例如明斯基在1969年证明了两输入的感知机连何时输入是相同的都判断不了。

从马文·明斯基到AlphaGo,人工智能走过了怎样的70年?

(感知机模型)

综上,由于种种困难,再加上资助的减少,人工智能步入了寒冬。这便是人工智能历史的上半段。

四、人工智能的重生

上个世纪80年代中期,当初于1969年由Bryson和Ho建立的反传学习算法被重新发明,然后统计学在人工智能领域的使用以及良好的效果也让科学界为之一振。于是在新的结构和新的方法下,人工智能又重获新生。

首先兴起的是语音识别领域,在这个方面的成就一个重要的原因是隐马尔可夫模型的方法开始主导这个领域。隐马尔可夫模型包含“隐含”和“马尔可夫链”两个概念,马尔可夫链是具有这样一种特性的链条,就是现在的状态只和前一个状态有关,而和再往前的状态没有关系。所以我们遇到这样一个链条的时候,我们可以随机选择一个状态作为初始状态,然后按照上述规则随机选择后续状态。“隐含”的意思则是在这个马尔可夫链上再加一个限制就是,任意时刻的状态我们是不可知的,但是这个状态会输出一个结果,这个结果只和这个状态相关,所以这个也称为独立输出假设。

通过这么一解释我们就能看出,隐马尔可夫模型是基于严格的数学理论基础,这允许语音研究者以其他领域中发展数十年的数学成果为依据。其次这个模型的这种随机性可以通过大量的真实语音进行训练,这就保证了性能的鲁棒性。

从马文·明斯基到AlphaGo,人工智能走过了怎样的70年?

(隐马尔可夫模型简图)

在马尔可夫链的基础上还诞生了一个以对不确定性知识进行有效表示和严格推理的形式化方法——贝叶斯网络。贝叶斯网络是一个加权的有向图,是马尔可夫链的拓展。马尔可夫链保证了网络中的每一个状态只跟与其直接相连的状态有关,而跟与它间接相连的状态没有关系,那么这就是贝叶斯网络。在这个网络中,每个节点的概率,都可以用贝叶斯公式来计算,贝叶斯网络因此得名。

贝叶斯网络极大地克服了20世纪60年代和70年代概率推理系统的很多问题,它目前主导着不确定推理和专家系统中的人工智能研究。而且这种方法允许根据经验进行学习,并且结合了经典人工智能和神经网络最好的部分。所以极大的推动的人工智能领域走向现在我们正处的这个巅峰时代。

从马文·明斯基到AlphaGo,人工智能走过了怎样的70年?

(一个简单的贝叶斯网络。雨水影响洒水器是否有动作,且雨水及洒水器二者均可影响草是否湿润)

除了这种算法上的革新,还有两个重要推动因素就是互谅网的兴起以及极大数据集的可用性。就像我们用Siri的时候必须联网一样,人工智能系统基于Web的应用变得越来越普遍;我之前在文章《2015年,机器人界发生了哪些神奇疯狂的故事?(下)》中介绍的HitchBOT,它可以拍照、自动识别路人的语言,并将回答显示在屏幕上,这个能力也是通过在网络上搜索相应的答案而实现的。

由于我们现在采用的方法已经基本上变为是基于概率的方法,所以我们便需要有大量的数据集对我们的系统进行训练,以完成监督学习。而现在的互联网环境让这种极大数据集的获得变得越来越方便和容易。就如我们所熟知的ImageNet,ImageNet是一个带有标记信息的图片库,里面的图片均已经由人对图片内容进行了标记。它就好比是一个用于测试计算机视觉系统识别能力的“题库”,包含超过百万道“题目”。 题目由图像和对应的单词(80%为名词)组成,考察的方式是计算机视觉系统能否识别图像中的物体并返回正确的单词。ImageNet使用训练题对计算机视觉系统进行“培训”,然后用测试题测试其识别能力。

从马文·明斯基到AlphaGo,人工智能走过了怎样的70年?

(ImageNet数据集)

又如AlphaGo,在DeepMind的主页里,AlphaGo是这样被介绍的:它是一种计算机玩围棋的新方法,这种方法运用了基于深度神经网络的蒙特卡洛搜索树,而这个深度神经网络一方面是通过运用人类专家级围棋棋局进行监督学习来训练,另一方面还通过程序通过电脑自己与自己博弈的增强学习来进行训练,可见AlphaGo的成果也离不开通过学习人类专家级棋谱进行监督学习的这个大量数据集的使用。

从马文·明斯基到AlphaGo,人工智能走过了怎样的70年?

 

(DeepMind的主页里AlphaGo的页面)

今天这篇文章,我们从人工智能的萌芽一直到今天AlphaGo打败击败欧洲冠军樊麾职业二段这个里程碑式的事件截止,介绍了人工智能能走到今天这个成就的一路的艰难险阻与大风大浪。我相信,随着计算机运算能力以及更加优化的算法,以及大数据集和数据挖掘等技术的帮助,人工智能的路一定会继续高歌猛进。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33878457/article/details/86217137

智能推荐

oracle 12c 集群安装后的检查_12c查看crs状态-程序员宅基地

文章浏览阅读1.6k次。安装配置gi、安装数据库软件、dbca建库见下:http://blog.csdn.net/kadwf123/article/details/784299611、检查集群节点及状态:[root@rac2 ~]# olsnodes -srac1 Activerac2 Activerac3 Activerac4 Active[root@rac2 ~]_12c查看crs状态

解决jupyter notebook无法找到虚拟环境的问题_jupyter没有pytorch环境-程序员宅基地

文章浏览阅读1.3w次,点赞45次,收藏99次。我个人用的是anaconda3的一个python集成环境,自带jupyter notebook,但在我打开jupyter notebook界面后,却找不到对应的虚拟环境,原来是jupyter notebook只是通用于下载anaconda时自带的环境,其他环境要想使用必须手动下载一些库:1.首先进入到自己创建的虚拟环境(pytorch是虚拟环境的名字)activate pytorch2.在该环境下下载这个库conda install ipykernelconda install nb__jupyter没有pytorch环境

国内安装scoop的保姆教程_scoop-cn-程序员宅基地

文章浏览阅读5.2k次,点赞19次,收藏28次。选择scoop纯属意外,也是无奈,因为电脑用户被锁了管理员权限,所有exe安装程序都无法安装,只可以用绿色软件,最后被我发现scoop,省去了到处下载XXX绿色版的烦恼,当然scoop里需要管理员权限的软件也跟我无缘了(譬如everything)。推荐添加dorado这个bucket镜像,里面很多中文软件,但是部分国外的软件下载地址在github,可能无法下载。以上两个是官方bucket的国内镜像,所有软件建议优先从这里下载。上面可以看到很多bucket以及软件数。如果官网登陆不了可以试一下以下方式。_scoop-cn

Element ui colorpicker在Vue中的使用_vue el-color-picker-程序员宅基地

文章浏览阅读4.5k次,点赞2次,收藏3次。首先要有一个color-picker组件 <el-color-picker v-model="headcolor"></el-color-picker>在data里面data() { return {headcolor: ’ #278add ’ //这里可以选择一个默认的颜色} }然后在你想要改变颜色的地方用v-bind绑定就好了,例如:这里的:sty..._vue el-color-picker

迅为iTOP-4412精英版之烧写内核移植后的镜像_exynos 4412 刷机-程序员宅基地

文章浏览阅读640次。基于芯片日益增长的问题,所以内核开发者们引入了新的方法,就是在内核中只保留函数,而数据则不包含,由用户(应用程序员)自己把数据按照规定的格式编写,并放在约定的地方,为了不占用过多的内存,还要求数据以根精简的方式编写。boot启动时,传参给内核,告诉内核设备树文件和kernel的位置,内核启动时根据地址去找到设备树文件,再利用专用的编译器去反编译dtb文件,将dtb还原成数据结构,以供驱动的函数去调用。firmware是三星的一个固件的设备信息,因为找不到固件,所以内核启动不成功。_exynos 4412 刷机

Linux系统配置jdk_linux配置jdk-程序员宅基地

文章浏览阅读2w次,点赞24次,收藏42次。Linux系统配置jdkLinux学习教程,Linux入门教程(超详细)_linux配置jdk

随便推点

matlab(4):特殊符号的输入_matlab微米怎么输入-程序员宅基地

文章浏览阅读3.3k次,点赞5次,收藏19次。xlabel('\delta');ylabel('AUC');具体符号的对照表参照下图:_matlab微米怎么输入

C语言程序设计-文件(打开与关闭、顺序、二进制读写)-程序员宅基地

文章浏览阅读119次。顺序读写指的是按照文件中数据的顺序进行读取或写入。对于文本文件,可以使用fgets、fputs、fscanf、fprintf等函数进行顺序读写。在C语言中,对文件的操作通常涉及文件的打开、读写以及关闭。文件的打开使用fopen函数,而关闭则使用fclose函数。在C语言中,可以使用fread和fwrite函数进行二进制读写。‍ Biaoge 于2024-03-09 23:51发布 阅读量:7 ️文章类型:【 C语言程序设计 】在C语言中,用于打开文件的函数是____,用于关闭文件的函数是____。

Touchdesigner自学笔记之三_touchdesigner怎么让一个模型跟着鼠标移动-程序员宅基地

文章浏览阅读3.4k次,点赞2次,收藏13次。跟随鼠标移动的粒子以grid(SOP)为partical(SOP)的资源模板,调整后连接【Geo组合+point spirit(MAT)】,在连接【feedback组合】适当调整。影响粒子动态的节点【metaball(SOP)+force(SOP)】添加mouse in(CHOP)鼠标位置到metaball的坐标,实现鼠标影响。..._touchdesigner怎么让一个模型跟着鼠标移动

【附源码】基于java的校园停车场管理系统的设计与实现61m0e9计算机毕设SSM_基于java技术的停车场管理系统实现与设计-程序员宅基地

文章浏览阅读178次。项目运行环境配置:Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:Springboot + mybatis + Maven +mysql5.7或8.0+html+css+js等等组成,B/S模式 + Maven管理等等。环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。_基于java技术的停车场管理系统实现与设计

Android系统播放器MediaPlayer源码分析_android多媒体播放源码分析 时序图-程序员宅基地

文章浏览阅读3.5k次。前言对于MediaPlayer播放器的源码分析内容相对来说比较多,会从Java-&amp;amp;gt;Jni-&amp;amp;gt;C/C++慢慢分析,后面会慢慢更新。另外,博客只作为自己学习记录的一种方式,对于其他的不过多的评论。MediaPlayerDemopublic class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal..._android多媒体播放源码分析 时序图

java 数据结构与算法 ——快速排序法-程序员宅基地

文章浏览阅读2.4k次,点赞41次,收藏13次。java 数据结构与算法 ——快速排序法_快速排序法