人工智能语言

是一类适应于人工智能和知识工程领域的、具有符号处理和逻辑推理能力的计算机程序设计语言。能够用它来编写程序求解非数值计算、知识处理、推理、规划、决策等具有智能的各种复杂问题。

   简介

  人工智能(AI)语言是一类适应于人工智能和知识工程领域的、具有符号处理和逻辑推理能力的计算机程序设计语言。能够用它来编写程序求解非数值计算、知识处理、推理、规划、决策等具有智能的各种复杂问题。典型的人工智能语言主要有LISP、Prolog、Smalltalk、C++等。

  一般来说,人工智能语言应具备如下特点:

  具有符号处理能力;

  适合于结构化程序设计,编程容易;

  具有递归功能和回溯功能;

  具有人机交互能力;

  适合于推理。

  发展

  许多对信息技术划代的标准都是硬件,如电子管为第一代,晶体管为第二代,集成电路为第三代,等等,对用户来说,与计算机打交道要通过计算机语言,一般把机器语言称为第一代,第二代是汇编语言,第三代是ALGOL、COBOL、FORTRAN等语言,第三代语言延续时间较长,从六十年代开始,在七十年代得到进一步发展,但是随着计算机应用的普及,到七十年代末出现一些第四代语言的产品。

  第四代语言这个术语是由J.Martin首先创立并积极推广,他和P.Mimn下的简单定义是:

  用户得结果的时间只需第三代语言的十分之一,

  系统与用户比较友好,易于学习和记忆,

  既适合于最终用户又适合于数据处理专业人员使用。

  根据J.Martin定义,依应用生成的类型而区分为集成的个人计算机工具,查询语言和报表生成器,图象语言,决策支持和财会模型系统,面向最终用户的应用生成器,面向数据处理专业人员的应用生成器,等等。有人说,前三代语言应用于工业时代,而第四代语言则标志着信息时代的开始。

  现在,计算机语言仍是计算机科学和计算机软件中的活跃分支,其研究领域可分为:语言理论、设计、处理实现和环境。语言种类也大大扩充,包括:需求、设计、实现语言,函数、逻辑和关系语言;分布式、并行和实时语言;面向对象的语言,硬件描述语言;数据库语言;视觉图形语言;协议语言原型语言,自然语言。

  在人工智能的研究发展过程中,从一开始就注意到了人工智能语言问题。实际上四十多年来有一百来种人工智能语言先后出现过,但很多都被淘汰了。它们大抵有三个来源。第一个来源是计算机科学家们对可计算性理论的研究。例如,LISP语言是为处理人工智能中大量出现符号编程问题而设计的,它的理论基础是符号集上的递归函数论。已经证明,用LISP可以编出符号集上的任何可计算函数。Prolog语言是为处理人工智能中也是大量出现的逻辑推理问题(首先是为解决自然语言理解问题)而设计的。它的理论基础是一阶谓词演算(首先是它子集Horn子句演算)的消解法定理证明,其计算能力等价于LISP。OPS5面对的问题也是逻辑推理。不过PROLOG是向后推理,OPS5是向前推理。OPS5的理论基础是Post的产生式系统,其计算能力也等价于LISP。第二个来源是认知科学的研究成果。人们研究出各种各样的认知模型,并为这些模型设计相应的知识表示语言。例如产生式表示、框架表示、语义网络表示等实际上都有其认知模型作为背景。如上所述的OPS5是产生式表示的语言,SRL、FRL、FEST等是框架语言,概念图和SNetI都是语义网络表示语言。面向对象的程序设计是在SIMULA中的类程和Minsky的框架表示两种思想融合的基础上发展起来的(它适用于计算机软件的所有领域,不只是人工智能)。

  人工智能语言系统理论研究

  在这个问题上,国外一些卓有成就的语言学家、逻辑学家和心理学家都在自然语言理解中的语法、句法及语义分析方面提出了一系列较为系统的理论方法。比较有影响的理论有:

  转换生成语法

  1957年美国的乔姆斯基(N.Chomsky)创建了转换生成语法(Transformational Generative Grammar)。乔姆斯基用数字方法定义的人工语言(形式语言)来研究语言学同题,用他的语言生成方法去研究形式语言。乔姆斯基将句子的结构分为深层结构和表层结构两个层次,一些表达相同意义的句子尽管表层结构不同,但其深层结构却是相同的。转换生成语法的原理是,通过上下文无关语法生成句子的深层结构,然后应用转换规则再将深层结构转换为表层结构。在乔姆斯基的语法中基本上完全抛开了语义、语用和语境(广义)方面的知识,只局限在一个形式化的机制上,因此很难完整确切地描述自然语言。

  依存语法

  1959年法国的语言学家特思尼耶尔(Lucien Tesniere)提出了依存语法(Dependency Grammar)。依存语法描述的是句子中词与词之间直接的句法关系。特思尼耶尔认为词与词之间存在着一种“依存”关系。这种关系原则上将一个上项词与一个下项词联系起来,上项叫支配词,下项叫从属词。一个词可以同时是某个上项的从属词和另一个下项的支配词,这样句子里的所有词便构成一个“分层次体系”。动词是句子的中心,支配句中的其他成分。依存语法由于依存关系的数目不宜过多或过少。过少的依存关系使得语言描写的深度和精度不够,而太多的依存关系又会使语言分析和处理的过程太繁杂,代价太高,从而影响它的可操作性。

  语义网络

  1968年美国奎廉(Quilian)首次提出了一种知识表示工具——语义网络(Semantie Network)。奎廉建议用语义网络来描述人对事物的认识,实际上是对人脑功能的模拟,并希望这种语义网络能用于进行知识推导。在这个网络中,代替概念的单位是节点,代替概念之间关系的则是节点间的连接弧,称为联想弧。因此这种网络又称为联想网络。

  蒙塔鸠语法

  1970年美国蒙塔鸠(R.Montague)创建了一个完备的自然语言体系(U—niversalGrammar)——蒙塔鸠语法。蒙塔鸠语法由三部分组成:第一部分是用乔姆斯基的转换生成语法推导出成立的句子,第二部分是把成立的句子转化为内涵逻辑表达式,第三部分是内涵逻辑学的语义理论。这是一套集转换生成语法、内涵逻辑和语义理论为一体、形式化程度较高的语法体系,较好地解决了语形与语义的关系问题,但它还是一种以句法为目标的分析器,无法解决句子所包含的深层意义以及与其他心智能力的关系等问题。

  扩展转换网络

  1970年美国伍兹(W.A.Woods)根据乔姆斯基创建的转换生成语法,设计了扩展转换网络(Augmented Transitional Network,简称ATN),并于1972年建成了LU—NAR模型[1引。扩展转换网络既可以看成是一种语法描述工具。在ATN中,文法被表示为一组图(或称为网络),这些网络表示了句子成分的可能顺序以及在处理过程中分析器可能进行的各种选择。LUNAR是把ATN语法应用于实际问题的一个范例,由于系统只要求有限的性能目标,所以自然语言对话中的某些常见的复杂问题被回避了。

  系统语法

  1972年美国维诺格拉德(T.Winograd)根据韩礼德(Halliday)的系统语法提出SCHRRDLU模型。系统语法把语言看成是一种社会现象,采用描述和归纳的方法进行研究。维诺格拉德认为语义理论必须在三个平面上描述关系:确定词的意义;确定词组在句法结构中的意义;一个自然语言的句子决不应该被孤立解释,一种语义理论必须描述一个句子的意义如何依赖于它的上下文,语义理论必须涉及语言学背景(说话的上下文)和现实社会(世界)背景(即同非语言学事实的知识的相互作用),语义理论必须同句法和语言的逻辑方面(演绎推理)相联系SCHRRDLU是一个在“积木世界”中进行英语对话的自然语言理解系统。同样由于系统只在一个简单的限定领域(积木世界),所以自然语言对话中的某些常见的复杂问题被回避了。

  格语法和语义网络理论

  1973年美国西蒙RFSimmons(R.F.Simmons)在伍兹的ATN的基础上,采用菲尔摩(Fillmore)的格语法(CaseGrammar)建立了语义网络理论。格语法将自然语言理解中的语法和语义分析结合起来,它的语法规则是用于描述语法规律而不是语义规律的,但规律所产生的最终结构不是严格表示语法结构而是描述语义关系。语义网络表示描述了知识的分层分类结构下的概念关系,主要推理形式是概念(结点)间属性的继承。这种分层的继承关系刻画了客观知识与人类常识。语义网络表示有实现系统,但一直缺乏理论基础。

  概念依存理论

  1972年美国杉克(C.Sehank)提出了概念依存理论(ConceptualDependencyTheory),建立了MARGI系统,1977年又建立SAM系统。杉克认为句子的句法分析对语言理解的帮助不大,句法结构无法提供必要的信息来理解语义,人类在理解语句时全靠生活知识。在理解时,语法只起到一个指引的作用,即根据某些输人词语找到所需的概念结构。任何两段话,只要意思相同,无论是否属于同一种语言,都有同一个概念内容。概念内容应具有中性的结构形式,超脱于特定的语言文法,超脱于一切表层结构。概念内容由概念及其相互之间的从属关系构成。由于用概念依存理论来理解自然语言时,大量使用到语义知识,使得对纯粹语法分析有二义性的句子亦能赋以唯一的解释。但另一方面,要很好地完成分析工作又需要庞大的语义知识库。

  境况语义学

  1983年美国的巴杯士(John Barwise)和佩里(John Perry)建立了系统的语义学——境况语义学(situation semantics),发表了他们的代表性著作《境况与态度》。巴杯士和佩里认为他们的语义理论可以克服传统的真值条件语义学遇到的一些困难,特别是如何处理态度动词等问题。境况语义学是一种语义与语用相结合的语义分析理论。广义的境况包括客观世界中所有动态和静态的事件,它是连续时间和连续空间中呈现的连续画面;狭义的境况是指与某个言语活动相联系的动态或静态事件,即包括该言语活动所涉及的事件。境况理论认为,语言表达式的含义是两个境况之间的关系:一个是话语发生时的境况,另一个则是该话语所描述的境况,这两个境况之间的关系要受人们对语言使用规则的约束,正是这种约束决定了语言表达式的含义。语言之所以具有交流信息的功能,是因为对语言使用规则的约束要为整个社会所遵从。境况理论的任务,就是要从客观世界存在的大量真实境况中,抽象出所有境况共有的内部结构,在此基础上探讨境况之间的约束关系,揭示出语言表达式的含义,从而为基于境况的自然语言理解提供一个具有可计算的数学模型。

  语料库语言学

  近几年来,在国际范围内掀起了语料库语言学(CorpusLinguistics)的研究热潮。语料库语言学研究机器可读的自然语言文本的采集、存储、检索、统计、语法标注、句法——语义分析以及具有上述功能的语料库在语言定量分析、词(字)典编撰、作品风格分析、自然语言理解和机器翻译等领域的应用。

  人工智能语言与传统语言的区别

  传统方法

  通常把问题的全部知识以各种的模型表达在固定程序中,问题的求解完全在程序制导下按着预先安排好的步骤一步一步(逐条)执行。解决问题的思路与冯·诺依曼式计算机结构相吻合。当前大型数据库法、数学模型法、统计方法等都是严格结构化的方法。

  把问题的全部知识以各种的模型表达在固定程序中,问题的求解完全在程序制导下按着预先安排好的步骤一步一步(逐条)执行。这种方法解决严格结构(Well Structured)问题非常有效。如果把这类问题形式化为三元组(x,->,y),“x”是给定的信息,“->”为求解途径,“y”是目标。传统方法的特点:“x”、“y”是明确的、完备的;“->”有着固定的明确的程式。这个方法之所以有效,主要是因为这个思路与冯.诺依曼式计算机结构相吻合。当前大型数据库法、数学模型法、统计方法等都是严格结构化的方法。

  人工智能方法

  对于人工智能技术要解决的问题,通常需要建立一个知识库,程序根据环境和所给的输入信息以及所要解决的问题来决定自己的行动,所以它是在环境模式的制导下的推理过程。这种方法有极大的灵活性、对话能力、有自我解释能力和学习能力。这种方法对解决一些条件和目标不大明确或不完备,的非结构化问题比传统方法好。它采用用试探法来解决问题。人工智能也尚未发展到完全能解决这类问题的全部问题。这类问题是人工智能研究要解决的问题。

  人工智能要解决的问题,无法把全部知识都体现在固定的程序中。它要建立一个知识库(包含事实和推理规则),程序根据环境和所给的输入信息以及所要解决的问题来决定自己的行动,所以它是在环境模式的制导下的推理过程。这种方法有极大的灵活性、对话能力、有自我解释能力和学习能力。这种方法对解决一些弱结构(ill structured)问题比传统方法好。弱结构指“x”、“y”不大明确或不完备,即不能很好地形式化,不好描述。“->”用试探法。AI也尚未发展到完全能解决这类问题的全部问题。这类问题是AI研究要解决的问题。随之而来也希望计算机硬件结构也来一个革命,突破冯.诺依曼体系结构。

  面向主体(Agent,亦称活体)程序设计

  近年来出现了具有人工智能特色面向对象程序设计,称为面向主体(Agent,亦称活体)程序设计。往一个对象中增加更多的智能,使它能根据环境的变化进行推理并规划自己的行为,就得到主体(Agent)。主体概念符合Minsky提出的“意念社会”认知模型,特别适用于分布环境。经典的面向对象程序设计语言是Smalltalk,面向主体的程序设计语言也已经有了一些,如OZ等,但还没被大家公认和普遍采用。也有基于PDP认知模型(Parallel Distributed Processing)的神经网络语言。第三来源是知识工程的实际需要。例如,为了开发各种领域的专家系统而设计的包含不精确推理或不确定推理功能,甚至包含多种不同推理机制的AI语言,例如Loops和TUILI。还有的是看到某一个专家系统做得比较成功,干脆抽去它的领域知识,留下它的表示方法,也成为一种语言,俗称专家系统外壳。例如,抽去医学专家系统MYSIN的领域知识就得到一个外壳语言Emycin。

  人工智能语言的特点

  由于人工智能研究的问题的特点和解决问题的方法的特殊性,为了能方便而有效地建立人工智能系统,需要发展专门的人工智能语言。人工智能语言的特点是什么,亦即人工智能语言应具备的特征是什么?

  一般来说,人工智能语言应具备如下特点:

  1.要有符号处理能力(即非数值处理能力);

  2.适合于结构化程序设计,编程容易;(要把系统分解成若干易于理解和处理的小单位的能力,从而既能较为容易地改变系统的某一部分,而又不破坏整个系统。)

  3.要有递归功能和回溯功能;

  4.要有人机交互能力;

  5.适合于推理;

  6.要有把过程与说明式数据结构混合起来的能力,又要有辨别数据、确定控制的模式匹配机制。

  名家名言

  编辑

  谈到LISP和PROLOG两种AI语言的重要性,我们可以从美国AI界的权威学者、麻省理工学院教授P.H.Winston(温斯顿)所说的三段话来体会:

  (1)温斯顿认为,LISP 语言是AI的数学,不仅对AI的机器实现有重要意义,而且是AI理论研究的重要工具。

  (2)“在中世纪,拉丁文和希腊文的知识对所有学者来说,都是必不可少的。只懂一种语言的学者必然是一个残缺不全的学者,他缺乏从两个方面来观察世界所获得的那种理解力。同样地,现代的AI专业人员如果不能同时大致通晓LISP和Prolog,也犹如一个残疾人,因为就广义来说,这两种人工智能的主要语言的知识都是必不可少的。”

  “我一直热衷于Lisp,Lisp是在MIT被制造并且在那儿成长起来的。”

  (3)概括地说,计算机语言的发展正是一个从HOW型低级语言向WHAT型高级语言进化的过程.在HOW型语言中,程序编制者必须详细说明运算是怎样(HOW)一步一步进行的;而在WHAT型语言中,程序编制者只需简单说明要做的事情是什么(WHAT) 。 …现代的LISP语言是这些语言的佼佼者,因为采用Common Lisp格式的Lisp具有非凡的表现力,但是如何做某件事情仍然是有待于Lisp程序编制者来表达的东西.相反,Prolog是一种明显地冲破了HOW型语言陈规的语言, 它鼓励程序编制者去描述情况和问题,而不是那些用来解决问题的详细步骤。”

  由以上论述可以看出LISP语言和Prolog语言对人工智能学科和人工智能学者的重要性。

  一般来说,LISP可以称为人工智能的汇编语言, Prolog是人工智能更高级的语言。