人工智能
【简介】“人工智能”一词最初是在1956 年Dartmouth学会上提出的。从那以后,研究者们发展了众多理论和原理,人工智能的概念也随之扩展。人工智能是一门极富挑战性的科学,从事这项工作的人必须懂得计算机知识,心理学和哲学。人工智能是包括十分广泛的科学,它由不同的领域组成,如机器学习,计算机视觉等等,总的说来,人工智能研究的一个主要目标是使机器能够胜任一些通常需要人类智能才能完成的复杂工作。但不同的时代、不同的人对这种“复杂工作”的理解是不同的。例如繁重的科学和工程计算本来是要人脑来承担的,现在计算机不但能完成这种计算, 而且能够比人脑做得更快、更准确,因之当代人已不再把这种计算看作是“需要人类智能才能完成的复杂任务”, 可见复杂工作的定义是随着时代的发展和技术的进步而变化的, 人工智能这门科学的具体目标也自然随着时代的变化而发展。它一方面不断获得新的进展,一方面又转向更有意义、更加困难的目标。目前能够用来研究人工智能的主要物质手段以及能够实现人工智能技术的机器就是计算机, 人工智能的发展历史是和计算机科学与技术的发展史联系在一起的。除了计算机科学以外, 人工智能还涉及信息论、控制论、自动化、仿生学、生物学、心理学、数理逻辑、语言学、医学和哲学等多门学科。人工智能学科研究的主要内容包括:知识表示、自动推理和搜索方法、机器学习和知识获取、知识处理系统、自然语言理解、计算机视觉、智能机器人、自动程序设计等方面。
【人工和智能】人工智能的定义可以分为两部分,即“人工”和“智能”。“人工”比较好理解,争议性也不大。有时我们会要考虑什么是人力所能及制造的,或者人自身的智能程度有没有高到可以创造人工智能的地步,等等。但总的来说,“人工系统”就是通常意义下的人工系统。
关于什么是“智能”,就问题多多了。这涉及到其它诸如意识(consciousness)、自我(self)、思维(mind)(包括无意识的思维(unconscious_mind)等等问题。人唯一了解的智能是人本身的智能,这是普遍认同的观点。但是我们对我们自身智能的理解都非常有限,对构成人的智能的必要元素也了解有限,所以就很难定义什么是“人工”制造的“智能”了。因此人工智能的研究往往涉及对人的智能本身的研究。其它关于动物或其它人造系统的智能也普遍被认为是人工智能相关的研究课题。
人工智能目前在计算机领域内,得到了愈加广泛的重视。并在机器人,经济政治决策,控制系统,仿真系统中得到应用。
【人工智能的定义】
著名的美国斯坦福大学人工智能研究中心尼尔逊教授对人工智能下了这样一个定义:“人工智能是关于知识的学科――怎样表示知识以及怎样获得知识并使用知识的科学。”而另一个美国麻省理工学院的温斯顿教授认为:“人工智能就是研究如何使计算机去做过去只有人才能做的智能工作。”这些说法反映了人工智能学科的基本思想和基本内容。即人工智能是研究人类智能活动的规律,构造具有一定智能的人工系统,研究如何让计算机去完成以往需要人的智力才能胜任的工作,也就是研究如何应用计算机的软硬件来模拟人类某些智能行为的基本理论、方法和技术。
人工智能(Artificial Intelligence,简称AI)是计算机学科的一个分支,二十世纪七十年代以来被称为世界三大尖端技术之一(空间技术、能源技术、人工智能)。也被认为是二十一世纪(基因工程、纳米科学、人工智能)三大尖端技术之一。这是因为近三十年来它获得了迅速的发展,在很多学科领域都获得了广泛应用,并取得了丰硕的成果,人工智能已逐步成为一个独立的分支,无论在理论和实践上都已自成一个系统。
人工智能是研究使计算机来模拟人的某些思维过程和智能行为(如学习、推理、思考、规划等)的学科,主要包括计算机实现智能的原理、制造类似于人脑智能的计算机,使计算机能实现更高层次的应用。人工智能将涉及到计算机科学、心理学、哲学和语言学等学科。可以说几乎是自然科学和社会科学的所有学科,其范围已远远超出了计算机科学的范畴,人工智能与思维科学的关系是实践和理论的关系,人工智能是处于思维科学的技术应用层次,是它的一个应用分支。从思维观点看,人工智能不仅限于逻辑思维,要考虑形象思维、灵感思维才能促进人工智能的突破性的发展,数学常被认为是多种学科的基础科学,数学也进入语言、思维领域,人工智能学科也必须借用数学工具,数学不仅在标准逻辑、模糊数学等范围发挥作用,数学进入人工智能学科,它们将互相促进而更快地发展。
【实际应用】机器视觉:指纹识别,人脸识别,视网膜识别,虹膜识别,掌纹识别,专家系统,智能搜索,定理证明,博弈,自动程序设计,还有航天应用等。
【学科范畴】人工智能是一门边沿学科,属于自然科学和社会科学的交叉。
【涉及学科】哲学和认知科学,数学,神经生理学,心理学,计算机科学,信息论,控制论,不定性论,仿生学,
【研究范畴】自然语言处理,知识表现,智能搜索,推理,规划,机器学习,知识获取,组合调度问题,感知问题,模式识别,逻辑程序设计,软计算,不精确和不确定的管理,人工生命,神经网络,复杂系统,遗传算法人类思维方式
【应用领域】智能控制,机器人学,语言和图像理解,遗传编程机器人工厂
【意识和人工智能的区别】人工智能就其本质而言,是对人的思维的信息过程的模拟。
对于人的思维模拟可以从两条道路进行,一是结构模拟,仿照人脑的结构机制,制造出“类人脑”的机器;二是功能模拟,暂时撇开人脑的内部结构,而从其功能过程进行模拟。现代电子计算机的产生便是对人脑思维功能的模拟,是对人脑思维的信息过程的模拟。
人工智能不是人的智能,更不会超过人的智能。
“机器思维”同人类思维的本质区别:
1.人工智能纯系无意识的机械的物理的过程,人类智能主要是生理和心理的过程。
2.人工智能没有社会性。
3.人工智能没有人类的意识所特有的能动的创造能力。
4.两者总是人脑的思维在前,电脑的功能在后。
【强人工智能和弱人工智能】人工智能的一个比较流行的定义,也是该领域较早的定义,是由约翰·麦卡锡(John McCarthy|)在1956年的达特矛斯会议(Dartmouth Conference)上提出的:人工智能就是要让机器的行为看起来就象是人所表现出的智能行为一样。但是这个定义似乎忽略了强人工智能的可能性(见下)。另一个定义指人工智能是人造机器所表现出来的智能性。总体来讲,目前对人工智能的定义大多可划分为四类,即机器“像人一样思考”、“像人一样行动”、“理性地思考”和“理性地行动”。这里“行动”应广义地理解为采取行动,或制定行动的决策,而不是肢体动作。
强人工智能
强人工智能观点认为有可能制造出真正能推理(Reasoning)和解决问题(Problem_solving)的智能机器,并且,这样的机器能将被认为是有知觉的,有自我意识的。强人工智能可以有两类:
类人的人工智能,即机器的思考和推理就像人的思维一样。
非类人的人工智能,即机器产生了和人完全不一样的知觉和意识,使用和人完全不一样的推理方式。
弱人工智能
弱人工智能观点认为不可能制造出能真正地推理(Reasoning)和解决问题(Problem_solving)的智能机器,这些机器只不过看起来像是智能的,但是并不真正拥有智能,也不会有自主意识。
主流科研集中在弱人工智能上,并且一般认为这一研究领域已经取得可观的成就。强人工智能的研究则处于停滞不前的状态下。
对强人工智能的哲学争论
“强人工智能”一词最初是约翰·罗杰斯·希尔勒针对计算机和其它信息处理机器创造的,其定义为:
“强人工智能观点认为计算机不仅是用来研究人的思维的一种工具;相反,只要运行适当的程序,计算机本身就是有思维的。”(J Searle in Minds Brains and Programs. The Behavioral and Brain Sciences, vol. 3, 1980)这是指使计算机从事智能的活动。在这里智能的涵义是多义的、不确定的,象下面所提到的就是其中的例子。利用计算机解决问题时,必须知道明确的程序。可是,人即使在不清楚程序时,根据发现(heu- ristic)法而设法巧妙地解决了问题的情况是不少的。如识别书写的文字、图形、声音等,所谓认识模型就是一例。再有,能力因学习而得到的提高和归纳推理、依据类推而进行的推理等,也是其例。此外,解决的程序虽然是清楚的,但是实行起来需要很长时间,对于这样的问题,人能在很短的时间内找出相当好的解决方法,如竞技的比赛等就是其例。还有,计算机在没有给予充分的合乎逻辑的正确信息时,就不能理解它的意义,而人在仅是被给予不充分、不正确的信息的情况下,根据适当的补充信息,也能抓住它的意义。自然语言就是例子。用计算机处理自然语言,称为自然语言处理。
关于强人工智能的争论不同于更广义的一元论和二元论(dualism)的争论。其争论要点是:如果一台机器的唯一工作原理就是对编码数据进行转换,那么这台机器是不是有思维的?希尔勒认为这是不可能的。他举了个中文房间的例子来说明,如果机器仅仅是对数据进行转换,而数据本身是对某些事情的一种编码表现,那么在不理解这一编码和这实际事情之间的对应关系的前提下,机器不可能对其处理的数据有任何理解。基于这一论点,希尔勒认为即使有机器通过了图灵测试,也不一定说明机器就真的像人一样有思维和意识。
也有哲学家持不同的观点。Daniel C. Dennett 在其著作 Consciousness Explained 里认为,人也不过是一台有灵魂的机器而已,为什么我们认为人可以有智能而普通机器就不能呢?他认为像上述的数据转换机器是有可能有思维和意识的。
有的哲学家认为如果弱人工智能是可实现的,那么强人工智能也是可实现的。比如Simon Blackburn在其哲学入门教材 Think 里说道,一个人的看起来是“智能”的行动并不能真正说明这个人就真的是智能的。我永远不可能知道另一个人是否真的像我一样是智能的,还是说她/他仅仅是看起来是智能的。基于这个论点,既然弱人工智能认为可以令机器看起来像是智能的,那就不能完全否定这机器是真的有智能的。Blackburn 认为这是一个主观认定的问题。
需要要指出的是,弱人工智能并非和强人工智能完全对立,也就是说,即使强人工智能是可能的,弱人工智能仍然是有意义的。至少,今日的计算机能做的事,像算术运算等,在百多年前是被认为很需要智能的。
【人工智能简史】人工智能的传说可以追溯到古埃及,但随着1941年以来电子计算机的发展,技术已最终可以创造出机器智能,“人工智能”(Artificial Intelligence)一词最初是在1956年Dartmouth学会上提出的,从那以后,研究者们发展了众多理论和原理,人工智能的概念也随之扩展,在它还不长的历史中,人工智能的发展比预想的要慢,但一直在前进,从40年前出现到现在,已经出现了许多AI程序,并且它们也影响到了其它 技术的发展。
计算机时代
1941年的一项发明使信息存储和处理的各个方面都发生了革命.这项同时在美国和德国出现的 发明就是电子计算机.第一台计算机要占用几间装空调的大房间,对程序员来说是场恶梦:仅仅为运行一 个程序就要设置成千的线路.1949年改进后的能存储程序的计算机使得输入程序变得简单些,而且计算机 理论的发展产生了计算机科学,并最终促使了人工智能的出现.计算机这个用电子方式处理数据的发明, 为人工智能的可能实现提供了一种媒介.
AI的开端
虽然计算机为AI提供了必要的技术基础,但直到50年代早期人们才注意到人类智能与机器之间 的联系. Norbert Wiener是最早研究反馈理论的美国人之一.最熟悉的反馈控制的例子是自动调温器.它 将收集到的房间温度与希望的温度比较,并做出反应将加热器开大或关小,从而控制环境温度.这项对反馈 回路的研究重要性在于: Wiener从理论上指出,所有的智能活动都是反馈机制的结果.而反馈机制是有可 能用机器模拟的.这项发现对早期AI的发展影响很大.
1955年末,Newell和Simon做了一个名为"逻辑专家"(Logic Theorist)的程序.这个程序被许多人 认为是第一个AI程序.它将每个问题都表示成一个树形模型,然后选择最可能得到正确结论的那一枝来求解 问题."逻辑专家"对公众和AI研究领域产生的影响使它成为AI发展中一个重要的里程碑.1956年,被认为是 人工智能之父的John McCarthy组织了一次学会,将许多对机器智能感兴趣的专家学者聚集在一起进行了一 个月的讨论.他请他们到 Vermont参加 " Dartmouth人工智能夏季研究会".从那时起,这个领域被命名为 "人工智能".虽然 Dartmouth学会不是非常成功,但它确实集中了AI的创立者们,并为以后的AI研究奠定了基础.
Dartmouth会议后的7年中,AI研究开始快速发展.虽然这个领域还没明确定义,会议中的一些思想 已被重新考虑和使用了. Carnegie Mellon大学和MIT开始组建AI研究中心.研究面临新的挑战: 下一步需 要建立能够更有效解决问题的系统,例如在"逻辑专家"中减少搜索;还有就是建立可以自我学习的系统.
1957年一个新程序,"通用解题机"(GPS)的第一个版本进行了测试.这个程序是由制作"逻辑专家" 的同一个组开发的.GPS扩展了Wiener的反馈原理,可以解决很多常识问题.两年以后,IBM成立了一个AI研 究组.Herbert Gelerneter花3年时间制作了一个解几何定理的程序.
当越来越多的程序涌现时,McCarthy正忙于一个AI史上的突破.1958年McCarthy宣布了他的新成 果: LISP语言. LISP到今天还在用."LISP"的意思是"表处理"(LISt Processing),它很快就为大多数AI开发者采纳.
1963年MIT从美国政府得到一笔220万美元的资助,用于研究机器辅助识别.这笔资助来自国防部 高级研究计划署(ARPA),已保证美国在技术进步上领先于苏联.这个计划吸引了来自全世界的计算机科学家, 加快了AI研究的发展步伐.
大量的程序
以后几年出现了大量程序.其中一个著名的叫"SHRDLU"."SHRDLU"是"微型世界"项目的一部分,包括 在微型世界(例如只有有限数量的几何形体)中的研究与编程.在MIT由Marvin Minsky领导的研究人员发现, 面对小规模的对象,计算机程序可以解决空间和逻辑问题.其它如在60年代末出现的"STUDENT"可以解决代数 问题,"SIR"可以理解简单的英语句子.这些程序的结果对处理语言理解和逻辑有所帮助.
70年代另一个进展是专家系统.专家系统可以预测在一定条件下某种解的概率.由于当时计算机已 有巨大容量,专家系统有可能从数据中得出规律.专家系统的市场应用很广.十年间,专家系统被用于股市预 测,帮助医生诊断疾病,以及指示矿工确定矿藏位置等.这一切都因为专家系统存储规律和信息的能力而成为可能.
70年代许多新方法被用于AI开发,著名的如Minsky的构造理论.另外David Marr提出了机器视觉方 面的新理论,例如,如何通过一副图像的阴影,形状,颜色,边界和纹理等基本信息辨别图像.通过分析这些信 息,可以推断出图像可能是什么.同时期另一项成果是PROLOGE语言,于1972年提出. 80年代期间,AI前进更为迅速,并更多地进入商业领域.1986年,美国AI相关软硬件销售高达4.25亿 美元.专家系统因其效用尤受需求.象数字电气公司这样的公司用XCON专家系统为VAX大型机编程.杜邦,通用 汽车公司和波音公司也大量依赖专家系统.为满足计算机专家的需要,一些生产专家系统辅助制作软件的公 司,如Teknowledge和Intellicorp成立了。为了查找和改正现有专家系统中的错误,又有另外一些专家系统被设计出来.
从实验室到日常生活
人们开始感受到计算机和人工智能技术的影响.计算机技术不再只属于实验室中的一小群研究人员.个人电脑和众多技术杂志使计算机技术展现在人们面前.有了象美国人工智能协会这样的基金会.因为AI开发 的需要,还出现了一阵研究人员进入私人公司的热潮。150多所像DEC(它雇了700多员工从事AI研究)这样的公司共花了10亿美元在内部的AI开发组上.
其它一些AI领域也在80年代进入市场.其中一项就是机器视觉. Minsky和Marr的成果现在用到了生产线上的相机和计算机中,进行质量控制.尽管还很简陋,这些系统已能够通过黑白区别分辨出物件形状的不同.到1985年美国有一百多个公司生产机器视觉系统,销售额共达8千万美元.
但80年代对AI工业来说也不全是好年景.86-87年对AI系统的需求下降,业界损失了近5亿美元.象 Teknowledge和Intellicorp两家共损失超过6百万美元,大约占利润的三分之一巨大的损失迫使许多研究领 导者削减经费.另一个另人失望的是国防部高级研究计划署支持的所谓"智能卡车".这个项目目的是研制一种能完成许多战地任务的机器人。由于项目缺陷和成功无望,Pentagon停止了项目的经费.
尽管经历了这些受挫的事件,AI仍在慢慢恢复发展.新的技术在日本被开发出来,如在美国首创的模糊逻辑,它可以从不确定的条件作出决策;还有神经网络,被视为实现人工智能的可能途径.总之,80年代AI被引入了市场,并显示出实用价值.可以确信,它将是通向21世纪之匙. 人工智能技术接受检验 在"沙漠风暴"行动中军方的智能设备经受了战争的检验.人工智能技术被用于导弹系统和预警显示以 及其它先进武器.AI技术也进入了家庭.智能电脑的增加吸引了公众兴趣;一些面向苹果机和IBM兼容机的应用 软件例如语音和文字识别已可买到;使用模糊逻辑,AI技术简化了摄像设备.对人工智能相关技术更大的需求促 使新的进步不断出现.人工智能已经并且将继续不可避免地改变我们的生活.
人工智能专业机构
美国
1. Massachusetts Institute of Technology 麻省理工学院
2. Stanford University 斯坦福大学 (CA)
3. Carnegie Mellon University 卡内基美隆大学 (PA)
4. University of California-Berkeley 加州大学伯克利分校
5. University of Washington 华盛顿大学
6. University of Texas-Austin 德克萨斯大学奥斯汀分校
7. University of Pennsylvania 宾夕法尼亚大学
8. University of Illinois-Urbana-Champaign 伊利诺伊大学厄本那—香槟分校
9. University of Maryland-College Park 马里兰大学帕克分校
10. Cornell University 康乃尔大学 (NY)
11. University of Massachusetts-Amherst 马萨诸塞大学Amherst校区
12. Georgia Institute of Technology 佐治亚理工学院
University of Michigan-Ann Arbor 密西根大学-安娜堡分校
14. University of Southern California 南加州大学
15. Columbia University 哥伦比亚大学 (NY)
University of California-Los Angeles 加州大学-洛杉矶分校
17. Brown University 布朗大学 (RI)
18. Yale University 耶鲁大学 (CT)
19. University of California-San Diego 加利福尼亚大学圣地亚哥分校
20. University of Wisconsin-Madison 威斯康星大学麦迪逊分校
中国
1、北京大学
2、清华大学
3、中国科学技术大学
4、哈尔滨工业大学
5、厦门大学人工智能研究所
6、中国AI创业研发俱乐部
7、西安交通大学智能车研究所
【经典的人工智能成果】人机对弈
1996年2月10~17日, Garry Kasparov以4:2战胜“深蓝” (Deep Blue)。
1997年5月3~11日, Garry Kasparov以3.5:2.5输于改进后的“深蓝” 。
2003年2月Garry Kasparov 3:3战平 “小深”(Deep Junior)。
2003年11月Garry Kasparov 2:2战平 “X3D德国人” (X3D-Fritz )。
模式识别
指纹识别
人脸识别
语音识别
文字识别
图像识别
车牌识别
知识工程
以知识本身为处理对象,研究如何运用人工智能和软件技术,设计、构造和维护知识系统
专家系统
智能搜索引擎
计算机视觉和图像处理
机器翻译和自然语言理解
数据挖掘和知识发现
【电影】
中文名人工智能
片名AI( Artificial Intelligence)
年代2001
国家美国
类别剧情/科幻/冒险
语言英语汉语普通话
片长146 Mins
导演史蒂文·斯皮尔伯格Steven Spielberg
主演裘德·洛Jude Law .... Gigolo Joe
海利·乔·奥斯蒙特 Haley Joel Osment
威廉·赫特William Hurt .... Prof. Hobby (the Visionary)
梅丽尔·斯特里普Meryl Streep .... Blue Mecha (voice)
本·金斯利Ben Kingsley .... Specialist (voice)
克里斯·罗克 Chris Rock .... Comedian (voice)
阿德里安.格兰尼 Adrian Grenier .... Teen in van
海利·乔·奥斯蒙特Haley Joel Osment .... David
亚当·亚里克斯·马里 Adam Alexi-Malle .... Crowd member
Jack Angel .... Teddy (voice)
Clara Bellar .... FemMecha nanny
Keith Campbell .... Roadworker
戴夫·切斯 Daveigh Chase .... Child singer
Clark Gregg .... Supernerd
恩里克·克兰东尼 Enrico Colantoni .... The Murderer
获奖情况
奥斯卡奖/Academy Awards, USA 2002 最佳效果(视效及其他) / Best Effects, Visual Effects 提名 Dennis Muren
奥斯卡奖/Academy Awards, USA 2002 最佳效果(视效及其他) / Best Effects, Visual Effects 提名 Scott Farrar
奥斯卡奖/Academy Awards, USA 2002 最佳效果(视效及其他) / Best Effects, Visual Effects 提名 Stan Winston
奥斯卡奖/Academy Awards, USA 2002 最佳效果(视效及其他) / Best Effects, Visual Effects 提名 Michael Lantieri
奥斯卡奖/Academy Awards, USA 2002 最佳音乐/歌曲 / Best Music, Song 提名 约翰.威廉姆斯
金球奖/Golden Globes, USA 2002 最佳男配角 / Best Performance by an Actor in a Supporting Role in a Motion Picture 提名 裘德·洛
金球奖/Golden Globes, USA 2002 最佳导演 / Best Director - Motion Picture 提名 史蒂文·斯皮尔伯格
金球奖/Golden Globes, USA 2002 最佳电影歌曲/音乐 / Best Motion Picture Score 提名 约翰.威廉姆斯
英国学院奖/British Academy Awards 2002 最佳特效 / Best Special Visual Effects 提名 Dennis Muren
英国学院奖/British Academy Awards 2002 最佳特效 / Best Special Visual Effects 提名 Scott Farrar
英国学院奖/British Academy Awards 2002 最佳特效 / Best Special Visual Effects 提名 Michael Lantieri
[剧情]
21世纪中期,由于气候变暖,南北两极冰盖的融化,地球上很多城市都被淹没在了一片汪洋之中。此时,人类的科学技术已经达到了相当高的水平,人工智能机器人就是人类发明出来的用以应对恶劣自然环境的科技手段之一。
先进的人工智能机器人不但拥有可以乱真的人类外表,而且还能像人类一样感知自己的存在。大卫(海利·乔·奥斯蒙特)就是这样一个有思想、有感情的小机器人,他被一对人类父母所收养,有一个哥哥和一个贴身的伙伴——机器泰德熊。但这些并不能让大卫满足,他一直渴望着自己终有一天不再仅仅是个机器人。抱着对这个愿望的执着,11岁的大卫踏上了漫长的心路历程,跟随在他身边的,还有另一个善良的机器人乔(裘德·洛)。谁也不知道他们能否完成自己的心愿,脱胎换骨成为真正的人,等待他们的只有凶吉难料的对复杂人性的追寻……
渊源——两位大师的故事
由于《人工智能》一片是斯皮尔伯格继完成《侏罗纪公园》多年之后重拾科幻片的老本行,并且也是他在《第三类接触》后又一次自编自导影片,所以该片制作的水准也就可想而知。
本片斥资1亿美元,由华纳、梦工厂和库布里克制片公司合作出品,库布里克的养子也担任了本片的执行制片人。2000年8月17日,影片在位于加州的华纳公司制片厂16号摄影棚开机(16号摄影棚是全世界最大的摄影棚,《完美风暴》一片就是在这里诞生的),整个拍摄过程中,高科技的技术手段再一次大显其能:工业光魔利用先进的“实时3D电脑游戏引擎”系统事先在电脑中制作了部分影片中的场景,使导演可以随时根据拍摄需要选择合适的背景并加入特殊效果;另外,崭新的“On-Set Visualization”技术还可以实时地在拍摄时将演员和背景合成起来,并把合成的结果显示到场景中,让演员们不会因为对着蓝色幕布演戏而不知所措。
看来对高科技手段乐此不疲的斯皮尔伯格这次可真是又过了一次特技瘾——据小演员奥斯蒙特说,斯皮尔伯格叔叔很会给自己找乐子,《人》片拍摄过程中,摄影棚简直就是他的一个大型游乐场。难怪我们总能在斯氏的影片中看到那么多自己儿时的梦,其实这位大导演本身就是一个童心未泯的大顽童。
宣传——“欲擒故纵”的把戏
众所周知,《人工智能》在整个制作过程中均保持了高度的保密性,再厉害的记者也无法打探到有关剧情或拍摄的任何细节。这种保密程度与当年的《女巫布莱尔》可有一拼,因而《人》片也就格外受到影迷们的关注,网络上各种与《人》沾边的消息都成了电影爱好者们疯狂追逐的对象——这也许正是影片制作者们所要达到的效果吧?“欲擒故纵”的把戏比起花大把的银子作宣传来说,可划算多了。
当然,保密归保密,“欲擒故纵”还是不能完全替代影片宣传的。《人》片的宣传手法可以说也是很讨巧的:在电影预告片的末尾,一句犹如谜语一般的话引起了影迷们的极大兴趣,要想解开这个谜团,他们必须访问一系列的网站,然后得到几个电话号码和E-mail地址,拨打这些电话号码并且发信给那些神秘的地址,谜底——也就是《人》片的剧情——就会一点一点地呈现在你的眼前。这种宣传方法正好投合了影迷们猎奇的心理,达到了非常好的宣传效果。
幕后
斯皮尔伯格继承大师库布里克遗志,拍摄了这部未来派的科幻史诗影片,裘迪劳和第六感小神童奥士文的机器人造型颇为神奇。
故事发生在二十一世纪,地球因温室效应而令冰山溶化,许多沿海城市被水淹没,人类只有依靠电脑的人工智能来维持生命,同时人类也应用具有人工智能的机器人作各种不同的用途。在其中的一个家庭,一对人类父母收养了小机器人大卫(凯利祖奥士文)作为他们的儿子,给他真人一样的生活。而大卫在人类中长大,开始了一段非比寻常的心路历程…本片是导演监制于一身的斯皮尔伯格根据电影大师史丹利库布里克生前所留下的八十页剧本改编而成的。影片的故事有点儿象童话皮诺曹的现代科幻版,和2年前罗宾威廉斯的《两百年人》(Bicentennial Man)也有几分相似。而片名 A.I. 是 Artificial Intelligence 的缩写,就是人工智能的意思,影片的全名也应该是 A.I.: Artificial Intelligence。
斯皮尔伯格自98年的《拯救大兵瑞恩》后就一直在犹豫他的下一部作品,他手头的计划包括《艺妓回忆录》(Memoirs of a Geisha)、《印第安纳琼斯第四集》(Indiana Jones 4)和《少数派报告》(Minority Report)等。但由于和他有20年交情的库布里克于1999年突然去世,《大开眼界》(Eyes Wide Shut)在无奈中带着一丝遗憾成了大师的绝响,而大师生前最后一个计划也就是本片《A.I.》暂时搁浅,这一突变使得斯皮尔伯格把本片列入了他的计划之中。
斯皮尔伯格于去年初决定继《侏罗纪公园》后再度挑战科幻题材的影片,其中包括向老友致敬的这部《A.I.》和汤姆克鲁斯期待多时的《少数派报告》,两部影片到底谁先胜出一度成了影迷茶余饭后的最佳话题。经过数度周折,斯皮尔伯格最终选择了这部他从未尝试过的未来派风格的科幻史诗影片《A.I.》。
人工智能幕后揭秘
1999年,斯坦利库布里克因为心脏病突发而永远的离开了他毕生热爱的电影事业。引用一本杂志的话“我们对这个死去的伟大导师已经说的太多”。这个大师的一生之中,只拍了16部影片,却部部都是惊世之作,从《2001年太空漫游》到《发条橙》,他老人家的深度和对人类的讽刺实在是让人佩服。“只有上帝和库布里克才热爱人类和诅咒人类——如今这一对老混蛋在天堂又他妈笑了。”
唯独让这位大师在天堂仍不得安心的,就是让他花费了二十多年心血的《AI》,早在1974年,库布里克就开始构思如何将这个故事拍成电影了。灵感来源于1969年的一部短篇小说《去年夏天的超级玩具》,小说描绘了一个失去关爱的机器男孩和他的玩具泰迪熊的故事。库布里克在这个故事的基础上不断加工润色甚至还找来几位小说家一起来合作当故事构思的差不多时,技术的实现问题就摆到了库布里克面前。以当年的技术水平是很难达到库布里课的要求的。不是说库布里克挑剔,之所以称之为大师,就是因为他对完美的执著追求。别人拍一部电影可以只花几个月,他却要耗费三四年。所以《2001年:太空漫游》放在今天看仍然很完美,而别的早期科幻片却显得很粗糙,道理就在于此。花在说回来,因为当年技术条件的限制,库不里克深感难度之大,只好把进展放慢,暂时将影片搁置起来。
一切的改变开始于1993年的《侏罗纪公园》,这部科幻影片获得了巨大的成功,不仅在票房上,更在于技术上。可以说《侏罗纪公园》是电影数码技术史上的一个里程碑。库布里克从那里看到了希望,于是,当年感恩节上他邀请了公司的效果总监丹尼斯·谬伦去他在英国的家做客。饭后库布里客观摩了丹尼斯带来的一些样片,并一起讨论了为该片进行数码制作的可能性。回到美国后,丹尼斯开始为《AI》设计方案,但库布里克要求甚高,每个方案他都不会马上表态。因为库布里克的这种拖拉作风,一直到他去世,这项工作也未能有所进展。
就在库布里克去世一年后,华纳公司让史蒂文·斯皮尔博格接手了这部影片。几十年没写过剧本的斯皮尔博格开始为《AI》编写剧本。这不是华纳公司的突发奇想,事实上二十年来库布里克一直与斯皮尔博格保持着密切的联系。要说谁是最了解这部影片的人,那么除了库布里克自己就是斯皮尔博格了。两年后丹尼斯被请到洛杉矶,会见了斯皮尔博格。在那里丹尼斯惊讶的看到库布里克为这部影片所准备的各种资料,其中包括请画家贝克绘制的一千五百多张电影插图。事实上从丹尼斯1993年同库布里克第一次会晤开始,库布里克就为该片投入了大量心血,做了很多的前期工作。说到这1500张插图,我们还要提一下他们的作者——克里斯·贝克。库布里克之所以找到贝克是因为被他的一部图画书所吸引,库布里克告诉他大致内容,然后让贝克自由发挥。就这样,在两年半的时间里,两人虽然身在两地,但通过电话和传真机完成了这些惊人的插图。
正式开始工作后,他的老搭档斯坦·温斯顿工作室自然而然的负责起人物造型的任务。当然,最主要的人物就是那些形形色色的机器人了。说到为机器人设计造型,温斯顿工作室可是有一手的。最经典的造型莫过于当年的《终结者》了。但是这次不同以往,要设计的造型数量巨大,斯坦温斯顿试图创造出一个人们从未见过的机器人世界。为此,温斯顿工作室聘请了超过140位艺术家来加盟这个工程。并且建立了大大小小的车间,这是温斯顿工作室有史以来搞的最大的一次,人人都是倾力而为之。即便如此,在设计了几百个方案后,斯皮尔博格居然还是不太满意,他总是说“哦,他看起来实在太像终结者了。”
当影片转交到斯皮尔博格的手中,一切关于大卫的问题都不存在了,因为斯皮尔博格使用了真人来扮演这个机器男孩(不愧位大师,偷工减料的本事也是一流的……不知道库布里克在天之灵会不会被气的吐血……)。童星海利乔奥斯蒙特出色的完成了这个任务,他在表演的时候居然能几分中不眨一下眼睛。当然,为了让他显得更完美,化妆师们剃光了奥斯蒙特脸上的汗毛,这样他看起来会更光滑一些。事实上,为了研究出这个效果,化妆师拿其他小孩做了很多试验,以至于最后半打孩子脸上都是光光的。
影片的主角是机器人男孩大卫,这是一个皮诺曹式的人物,也是让库布里克最伤神的角色,早在1994年,库布里克就开始了一系列试验,摸索如何在影片中表现这个角色。以库布里克最初的想法,大卫一定不能用真人来扮演,其中一个原因是因为真小孩儿会长大,而以库布里克的拖拉作风,估计影片拍完小孩儿也该成人了。同时他也希望这个角色看起来稍微的不同于真人,因为他毕竟是个机器人。所以他让IML做一个全数码生成的人物试试,但是效果并不理想。随后考虑使用玩偶,模型专家以库布里克五岁的孙子为样板,制作了玩偶模型,但是这个方案最后也未被采纳。也有人建议库布里克使用真人演出,再加上电脑生成的脑袋,如此种种,但库布里克始终没有能够找到令他满意的效果。
当斯皮尔博格除了大卫,影片中还出现了各种型号千奇百怪的机器人。制作者们为了影片设计了大约25种机器人。他们各司其职,摆阔请立功,厨师和开罐头的机器人。斯皮尔博格要求这些机器人看上去更人性化一些,而不是让观众感觉到他们只是一些机器而已。为了让这些机器人在银幕上活灵活现,斯坦温斯顿工作室动用了模型、CG和化妆技术,总而言之,能用的全都用上了。
虽然影片上映后如同所有库布里克的影片一样,观众反映平平。但相信它会是一部慢热的作品。在若干年之后,成为又一部伟大的作品。毕竟,它包含了两位电影大师的心血。以及数百名幕后人员的忘我工作。
【相关著作】
《视读人工智能》:机器真的可以思考吗?人的思维只是一个复杂的计算机程序吗?本书着眼于人工智能这个有史以来最为棘手的科学问题之一,集中探讨了其背后的一些主要话题。人工智能不仅仅是一个虚构的概念。人类对智能机体结构半个世纪的研究表明:机器可以打败人类最伟大的棋手,类人机器人可以走路并且能和人类进行互动。尽管早就有宣言称智能机器指目可待,但此方面的进展却缓慢而艰难。意识和环境是困扰研究的两大难题。我们到底应该怎样去制造智能机器呢?它应该像大脑一样运转?它是否需要躯体?从图灵影响深远的奠基性研究到机器人和新人工智能的飞跃,本书图文并茂地将人工智能在过去半个世纪的发展清晰地呈现在读者面前。
《人工智能的未来》:诠释了智能的内涵,阐述了大脑工作的原理,并告诉我们如何才能制造出真正意义上的智能机器——这样的智能机器将不再仅仅是对人类大脑的简单模仿,它们的智能在许多方面会远远超过人脑。霍金斯认为,从人工智能到神经网络,早先复制人类智能的努力无一成功,究其原因,都是由于人们并未真正了解智能的内涵和人类大脑。所谓智能,就是人脑比较过去、预测未来的能力。大脑不是计算机,不会亦步亦趋、按部就班地根据输入产生输出。大脑是一个庞大的记忆系统,它储存着在某种程度上反映世界真实结构的经验,能够记忆事件的前后顺序及其相互关系,并依据记忆做出预测。形成智能、感觉、创造力以及知觉等基础的,就是大脑的记忆-预测系统……
《人工智能哲学》:人工智能哲学是伴随现代信息理论和计算机技术发展起来的一个哲学分支。本书收集了人工智能研究领域著名学者的十五篇代表性论文,这些论文为计算机科学的发展和人工智能哲学的建立作出了开创性的贡献。这些文章总结了人工智能发展的历程,近年来该学科发展的趋势,以及人工智能中的重要课题。在这些划时代的著作中,包括有:现代计算机理论之父艾伦·图灵的“计算机与智能”;著名美国哲学家塞尔的“心灵,大脑与程序”;J·E·欣顿等人的“分布式表述”,以及本书编者、英国著名人工智能学者M·A·博登的“逃出中文屋”。
《人工智能:一种现代的方法》:本书以详尽和丰富的资料,从理性智能体的角度,全面阐述了人工智能领域的核心内容,并深入介绍了各个主要的研究方向,是一本难得的综合性教材。全书分为八大部分:第一部分"人工智能",第二部分"问题求解",第三部分"知识与推理",第四部分"规划",第五部分"不确定知识与推理",第六部分"学习",第七部分"通讯、感知与行动",第八部分"结论"。 本书既详细介绍了大量的基本概念、思想和算法,也描述了各研究方向最前沿的进展,同时收集整理了详实的历史文献与事件。因此本书适合于不同层次和领域的研究人员及学生,可以作为信息领域和相关领域的高等院校本科生和研究生的教材或教学辅导书目,也可以作为相关领域的科研与工程技术人员的参考书。
【安全问题】目前人工智能还在研究中,但有学者认为让计算机拥有智商是很危险的,它可能会反抗人类。这种隐患也在多部电影中发生过。
【Badming代码】下面是Badming写的一些关于AI的c++代码,badming认为当代码复杂到一定程度,程序给人类的反应,人类已经分不清是不是死的代码或是真的有意识产生了。下面的代码实际是简单脚本的处理代码。Badming认为,现代的脚本语言实际上是未来Ai的前身。
#include<iostream>
#include<fstream>
#include<string>
#include<map>
#include<vector>
using namespace std;
/**********************信息结构*************************************************/
typedef vector<string> Msg;
Msg MsgEmpty; // 空的
Msg MsgFalse; // 假
Msg MsgUnknown; //不知道
Msg MsgTrue; //真
Msg MsgAny; //任何值
typedef map<int ,Msg> Knowledge; //解决方案
struct FunTool //辅助工具
{
typedef Msg (*Way)(Msg );
int id;
Way pFun;
string explain;
FunTool(){}
FunTool(int _id,Way _pFun,string _explain)
{
id=_id;
pFun=_pFun;
explain=_explain;
}
};
typedef vector<FunTool> FunTools;
/**********************信息结构定义完毕*****************************************/
//可能需要的方法,人为提供的
Msg say(Msg msg)
{
for(int i=0;i<msg.size();i++)
{
cout<<msg[i]<<"";
}
cout<<endl;
return MsgEmpty;
}
Msg makeMsg(string str)
{
Msg a;
a.push_back(str);
return a;
}
Msg nextNumber(Msg msg)
{
string str=msg[0];
if(str.empty())makeMsg("");
int n=0;
for(int i=0;i<str.size();i++)
{
if(str[i]<='9'&&str[i]>='0')
n=n*10+str[i]-'0';
else makeMsg("");
}
n++;
char t[100];
itoa(n,t,10);
return makeMsg(t);
}
class PlusGirl
{
public :
PlusGirl()
{
initMap();
MsgEmpty.push_back("empty");MsgEmpty.push_back("msgState");
MsgFalse.push_back("false");MsgFalse.push_back("msgState");
MsgUnknown.push_back("unknow");MsgUnknown.push_back("msgState");
MsgTrue.push_back("true");MsgTrue.push_back("msgState");
MsgAny.push_back("any");MsgAny.push_back("msgState");
}
int strToInt(string str)
{
int n=0;
int i=0;
while(i<str.size()&&str[i]<='9'&&str[i]>='0')
{
n*=10;
n+=str[i]-'0';
i++;
}
return n;
}
/*******************************************************************************/
FunTools iFunTools;//定义函数工具集
void initMap()
{
iFunTools.push_back(FunTool(iFunTools.size(),nextNumber,"让一个数+1"));
iFunTools.push_back(FunTool(iFunTools.size(),say,"说出msg中内容"));
}
Msg showHelp( Msg msg)
{
cout<<"PlusGirl可用的方法如下 :"<<endl;
cout<<"编号方法的使用说明"<<endl;
for(int i=0;i<iFunTools.size();i++)
{
cout<<iFunTools[i].id<<""<<iFunTools[i].explain<<endl;
}
return MsgEmpty;
}
/******************************************************************************/
//知识结构 ,校验格式与执行解决方案
vector<Knowledge> iKnows; //解决方案集合
Msg analyse(const Msg &words) //通过各种情况分析,而解决问题
{
for(int i=0;i<iKnows.size();i++)
{
Msg msg=solveProblem(iKnows[i],words);
if(msg.empty()||msg==MsgUnknown)continue ;
return msg;
}
return MsgEmpty;
}
Msg solveProblem(Knowledge &know,const Msg problem) //使用一种解决方案,解决一个问题
{
Knowledge::iterator loop=know.begin();
map<int ,Msg> data;//数据区域
data[0]=problem;
map<int ,string> itemData;
while(loop!=know.end())
{
Msg & script=loop->second;
if(0>=script.size())return MsgUnknown;
//define a msg
if(script[0]=="define")
{
if(6>script.size())return MsgUnknown;
if(script[3]!="=")return MsgUnknown;
if(script[1]=="msg")
{
if(script[4]=="msg")
{
data[strToInt(script[2])]= data[strToInt(script[5])];
}else
if(script[4]=="item")
{
data[strToInt(script[2])].clear();
for(int i=5;i<script.size();i++)
{
data[strToInt(script[2])].push_back(itemData[strToInt(script[i])]);
}
}else
if(script[4]=="string")
{
data[strToInt(script[2])].clear();
for(int i=5;i<script.size();i++)
{
data[strToInt(script[2])].push_back(script[i]);
}
}else
return MsgUnknown;
}
if(script[1]=="item")
{
if(script[4]=="msg")
{
itemData[strToInt(script[2])]= data[strToInt(script[5])][strToInt(script[6])];
}else
if(script[4]=="item")
{
itemData[strToInt(script[2])]=itemData[strToInt(script[5])];
}else
if(script[4]=="string")
{
itemData[strToInt(script[2])]=script[5];
}else
return MsgUnknown;
}
}
//if ..
if(script[0]=="if")
{
if(9>script.size())return MsgUnknown;
Msg temp;
if(script[1]=="solve")
{
temp=solveProblem(iKnows[strToInt(script[2])],data[strToInt(script[3])]);
}else
if(script[1]=="fun")
{
temp=iFunTools[strToInt(script[2])].pFun(data[strToInt(script[3])]);
}else
if(script[1]=="msg")
{
temp=data[strToInt(script[2])];
}else return MsgUnknown;
if(temp.empty())return MsgUnknown;
if(temp==MsgUnknown)return temp;
if(script[5]=="msgState")
if((script[4]=="=="&&script[6]!=temp[0])||(script[4]=="!="&&script[6]!=temp[0]))
{
loop++;
continue;
}
if(script[5]=="msg")
if((script[4]=="=="&&data[strToInt(script[6])]!=temp)||(script[4]=="!=" &&data[strToInt(script[6])]!=temp))
{
loop++;
continue;
}
if(script[7]=="end")return data[strToInt(script[8])];
if(script[7]=="goto"){loop=know.find(strToInt(script[8]));continue;}
}
if(script[0]=="use")
{
if(6>=script.size())return MsgUnknown;
if(script[4]=="solve")
{
data[strToInt(script[2])]=solveProblem(iKnows[strToInt(script[5])],data[strToInt(script[7])]);
}
if(script[4]=="fun")
{
data[strToInt(script[2])]=iFunTools[strToInt(script[5])].pFun(data[strToInt(script[7])]);
}
loop++;
continue ;
}
if(script[0]=="end")
{
return data[strToInt(script[1])];
}
if(script[0]=="goto")
{
loop=know.find(strToInt(script[1]));continue;
}
loop ++;
}
return MsgEmpty;
}
/******************************************************************************/
};
int main()
{
PlusGirl girl;
girl.showHelp(MsgEmpty);
cout<<"------------------------------------------"<<endl<<endl;
/*加法指南
输入形如 1 4 可以得到答案
下面是加法代码
0 define msg 0 = msg 0
1 define item 1 = msg 0 0
2 define item 2 = msg 0 1
3 define msg 1 = item 1
4 define msg 2 = item 2
5 define msg 3 = string 0
6 if msg 3 bad == msg 2 goto 10
7 use msg 3 = fun 0 msg 3
8 use msg 1 = fun 0 msg 1
9 goto 6
10 use msg 1 = fun 1 msg 1
11 end msg 1
*/
Knowledge k;
Msg t;
t.push_back("define");t.push_back("item");t.push_back("1");t.push_back("=");t.push_back("msg");t.push_back("0");t.push_back("0");
k[1]=t;t.clear();
t.push_back("define");t.push_back("item");t.push_back("2");t.push_back("=");t.push_back("msg");t.push_back("0");t.push_back("1");
k[2]=t;t.clear();
t.push_back("define");t.push_back("msg");t.push_back("1");t.push_back("=");t.push_back("item");t.push_back("1");
k[3]=t;t.clear();
t.push_back("define");t.push_back("msg");t.push_back("2");t.push_back("=");t.push_back("item");t.push_back("2");
k[4]=t;t.clear();
t.push_back("define");t.push_back("msg");t.push_back("3");t.push_back("=");t.push_back("string");t.push_back("0");
k[5]=t;t.clear();
t.push_back("if");t.push_back("msg");t.push_back("3");t.push_back("bad");t.push_back("==");t.push_back("msg");t.push_back("2");t.push_back("goto");t.push_back("10");
k[6]=t;t.clear();
t.push_back("use");t.push_back("msg");t.push_back("3");t.push_back("=");t.push_back("fun");t.push_back("0");t.push_back("msg");t.push_back("3");
k[7]=t;t.clear();
t.push_back("use");t.push_back("msg");t.push_back("1");t.push_back("=");t.push_back("fun");t.push_back("0");t.push_back("msg");t.push_back("1");
k[8]=t;t.clear();
t.push_back("goto");t.push_back("6");
k[9]=t;t.clear();
t.push_back("use");t.push_back("msg");t.push_back("1");t.push_back("=");t.push_back("fun");t.push_back("1");t.push_back("msg");t.push_back("1");
k[10]=t;t.clear();
t.push_back("end");t.push_back("msg");t.push_back("1");
k[11]=t;t.clear();
girl.iKnows.push_back(k);
string a,b;
while(cin>>a>>b)
{
Msg m;
m.push_back(a);
m.push_back(b);
girl.analyse(m);
}
system("pause");
return 0;
}