似乎有一个长期存在的信念(主要是由不懂语言的人),在AI上,lisp比大多数语言都要好。
这种信念源自何处?事实是否有根据?
似乎有一个长期存在的信念(主要是由不懂语言的人),在AI上,lisp比大多数语言都要好。
这种信念源自何处?事实是否有根据?
Answers:
类似于LISP的语言与其他语言之间的主要区别之一是,在LISP中,代码和数据是同一回事。这样就可以做一些事情,例如让程序在运行时修改“某些”算法,因为它“学习”了新事物,这是该语言的本机部分。
LISP能够通过宏轻松添加新语言语义的能力(尽管不那么重要)的另一个方面。这使得实际上可以进入并定义您的AI可以使用并可以发展的DSL,并且在AI运行时该语言有可能发展,自我纠正和发展。
同意Quadrescence,LISP的使用历史对于LISP的图像(对AI有益)大有帮助。 LISP为什么用于AI会更详细地介绍历史。
Lisp最早的一些程序是定理证明,符号数学,经典的ELIZA等。除了诸如Peter Norvig的PAIP之类的书,以及Lisp起源于MIT AI实验室的事实,它也得到了这种印象。那轻快对AI有好处。
DARPA还资助大学进行AI研究,并从Symbolics购买了大量的硬件。资金的短缺最终导致了所谓的“人工智能冬天”。
最后,原始语言(如Fortran)(或“语言”(如ASM))主要用于数值计算。您使用了数字和数组。如今,我们已经有了符号,或者能够使用大多数现代语言创建几乎任何我们想要的对象。
因此,不再是lisp一次使AI更好的原因。但是,“ lisp对AI有好处”的想法仍然存在。
完全取决于另一种情况是,是否因为lisp的特性和结构而使其成为更好的语言(因为实际上这不仅适用于AI,而且还适用于许多其他领域,并且通常会引发旧式的火焰战争)。
让我们看一下当前的AI程序:(1)机器人,例如自动驾驶汽车。在DARPA的巨大挑战中,卓越的汽车驾驶软件不是Lisp。相反,它是一种过程语言,例如C ++或Java。(2)自然语言的机器翻译。广泛使用的生产系统未将Lisp用于此目的。(3)游戏,例如国际象棋程序。广泛使用的高级国际象棋程序(例如Fritz)并未将Lisp用于此目的。
Lisp是由美国AI实验室在1960年代发明和开发的,目的是快速建立原型符号逻辑程序的原型,使本地Lisp数据结构符合所需的符号抽象级别-例如,英语单词可以是列表中的符号,逻辑公式可以很容易表示为运算符和操作数的列表。
但是对于生产程序而言,静态类型语言和各种第三方库在软件工程上的优势意味着Lisp甚至不被用于执行AI任务的大型现代系统考虑。
@斯蒂芬·里德说得很好。我只能补充说我在70年代曾在MIT AI实验室工作。那时我听到一个有关Lisp起源的故事。我不能发誓这是真的,但这是这样的:
约翰·麦卡锡(John McCarthy)在50年代就读于麻省理工学院,他一直在研究程序的属性,为此,他一直在使用类似于Lambda微积分的简单语法。
故事是一位研究生想做一个项目(类比,定理证明或符号数学,我不记得是哪个),并问麦卡锡要使用哪种语言。答案-当然是Fortran。(没有什么其他的东西了,列表处理本身当时是众所周知的,但只是作为子例程包,而不是作为语言。)嗯,以某种方式导致了可以在嵌套列表结构中处理符号的程序。连同一种阅读和打印它们的方式,然后是一种eval
功能,以及Voila'-一种语言。LIST处理语言。它从那里起飞。
对于当时我们正在使用的那种算法(仍然很少有人在做),需要一种可以轻松操纵符号表达式的语言。这就是Lisp擅长的。基本概念有很多变体,名称不同,例如Prolog,Scheme等。
因此,人工智能对很多人来说意味着很多事情,不同的语言对不同的事物有好处,但是对于可以描述为符号操纵的问题,很难找到一种并非源于Lisp的有用语言。
Lisp对于被称为AI的事物具有优势-至少在90年代左右之前,大多数AI都是逻辑,搜索和解析相关事物。
Lisp的主要优点是它支持宏-作为数据的代码,元编程。
标准ML(SML)是80年代以来在AI中广泛使用的另一种语言。客观CAML和F#是SML的发展。
ML系列(和Haskell等)的主要优点是模式匹配。Lisp可能也可以使用它,但是可以通过元编程库而不是通过语言内置。它也可以在Haskell中使用,但至少目前,模式匹配在函数式编程语言之外并不常见。
我已经看到LISP基本上是扩展的无类型Lambda演算,而ML基本上是扩展的类型Lambda演算。我不知道肯定要说的Lambda类型演算。
多年来,人工智能也已成为一门更为广泛的学科,以至于它几乎完全消失了。数据挖掘可以被视为AI的一个子领域。许多AI事物(OCR,语音识别)几乎几乎不再是AI-它们只是应用程序,与其他任何事物一样。AI比以前更加依赖信号处理和其他类型的数字运算。
对于OCR和语音识别,AI始终当然取决于信号处理和数字处理。是的,这有一些矛盾;-)我无法给出我不真正知道的东西的权重。
无论如何,结果是,甚至可能没有一种语言适合整个现代AI应用程序的全部-我想(没有第一手知识)现代人工智能有很多多语言开发。而且我几乎可以保证,您会在某些项目中找到C和C ++,以获得数字运算性能。如果出于类似原因有很多Python,我也不会感到惊讶-有了一个好的数字库,Python可以轻松地处理数字运算任务。
在其中一辆自动驾驶汽车中,我想象视觉系统是用与路线规划系统不同的语言编写的(并且在不同的硬件上运行)。