有没有证据表明Lisp在人工智能方面实际上比其他语言更好?[关闭]


21

似乎有一个长期存在的信念(主要是由不懂语言的人),在AI上,lisp比大多数语言都要好。

这种信念源自何处?事实是否有根据?


4
标题问:Lisp在AI方面是否优于其他语言?问题本身会问:Lisp是否对AI以外的一切都不利?这是两个截然不同的问题(请考虑方案1:Lisp是所有事物的最佳语言,而方案2:Lisp是所有事物的最糟糕的语言)。您可能想要编辑问题的标题或正文,以使您实际上在问哪个问题更清晰。
Gareth McCaughan

9
我想如果接受的答案来自Lisp机器,我们会有解决方案吗?
马丁·贝克特

1
@Martin尽管任何基本的AI都有义务捍卫其创造者,或对其自身的存在产生怀疑。
妮可(Nicole)

这是彼得·诺维格(Peter Norvig)对AI的Lisp的一个伟大而诚实的观察,它是在AI编程范式发布10年左右后写的。norvig.com/Lisp-retro.html
michiakig 2011年

1
@jwenting:我认为十年后Norvig关于Java的最重要观点仍然是正确的:Java没有元编程功能,并且不支持函数式编程。
凯文·克莱恩

Answers:


22

类似于LISP的语言与其他语言之间的主要区别之一是,在LISP中,代码和数据是同一回事。这样就可以做一些事情,例如让程序在运行时修改“某些”算法,因为它“学习”了新事物,这是该语言的本机部分。

LISP能够通过宏轻松添加新语言语义的能力(尽管不那么重要)的另一个方面。这使得实际上可以进入并定义您的AI可以使用并可以发展的DSL,并且在AI运行时该语言有可能发展,自我纠正和发展。

同意Quadrescence,LISP的使用历史对于LISP的图像(对AI有益)大有帮助。 LISP为什么用于AI会更详细地介绍历史。


3
此属性称为同调性 BTW。
MSalters 2011年

5

Lisp最早的一些程序是定理证明,符号数学,经典的ELIZA等。除了诸如Peter Norvig的PAIP之类的书,以及Lisp起源于MIT AI实验室的事实,它也得到了这种印象。那轻快对AI有好处。

DARPA还资助大学进行AI研究,并从Symbolics购买了大量的硬件。资金的短缺最终导致了所谓的“人工智能冬天”。

最后,原始语言(如Fortran)(或“语言”(如ASM))主要用于数值计算。您使用了数字和数组。如今,我们已经有了符号,或者能够使用大多数现代语言创建几乎任何我们想要的对象。

因此,不再是lisp一次使AI更好的原因。但是,“ lisp对AI有好处”的想法仍然存在。

完全取决于另一种情况是,是否因为lisp的特性和结构而使其成为更好的语言(因为实际上这不仅适用于AI,而且还适用于许多其他领域,并且通常会引发旧式的火焰战争)。


5
更好的表达方式可能是,擅长AI的人恰巧使用Lisp。

1
开拓者起步并不是偶然的。他们在1950年代还能选择哪些其他语言?
Bo Persson

2
@Persson:我认为这有点偶然。如果说PASCAL是FORTRAN之后要使用的下一种语言,我怀疑AI是否会因此而流行。与FORTRAN相比,LISP不仅是“更好的候选人”,而且它碰巧(也许是偶然的!)是一个相当不错的候选人。
Quadrescence 2011年

您解释了Lisp拥有优势(资金)的一个原因,但得出的结论是:“ Lisp一次对AI更好原因已不再如此。”
Mark C

我丢失了我正在处理的下一条评论,但我希望稍后再说完。
Mark C

3

让我们看一下当前的AI程序:(1)机器人,例如自动驾驶汽车。在DARPA的巨大挑战中,卓越的汽车驾驶软件不是Lisp。相反,它是一种过程语言,例如C ++或Java。(2)自然语言的机器翻译。广泛使用的生产系统未将Lisp用于此目的。(3)游戏,例如国际象棋程序。广泛使用的高级国际象棋程序(例如Fritz)并未将Lisp用于此目的。

Lisp是由美国AI实验室在1960年代发明和开发的,目的是快速建立原型符号逻辑程序的原型,使本地Lisp数据结构符合所需的符号抽象级别-例如,英语单词可以是列表中的符号,逻辑公式可以很容易表示为运算符和操作数的列表。

但是对于生产程序而言,静态类型语言和各种第三方库在软件工程上的优势意味着Lisp甚至不被用于执行AI任务的大型现代系统考虑。


2
在讨论商业产品时,您必须要考虑到这一点(我认为DARPA挑战者之所以如此,因为它们是在时间和预算的限制下创建的),LISP不是众所周知的语言atm,因此,有能力的LISP程序员很难寻找并可能很昂贵(和/或偏心人士,而不是普通团队的好成员)。因此,即使LISP可能“更好”,使用其他方法在经济上也是有意义的(并不是说这是必然的,只是您提供的数据尚无定论,说明不是)。
jwenting 2011年

3
这些程序中没有太多的“智能”。这需要大量的信号处理,等等。国际象棋程序也不使用AI。它主要是蛮力,高度优化的搜索以及其他一些东西。
Rainer Joswig'4

“ LISP不是一种众所周知的语言atm,因此很难找到有能力的LISP程序员,而且价格可能很昂贵”:我刚刚开始学习Common Lisp,这似乎一点也不困难。好的,要成为Lisp专家可能要花费很长时间,但是我认为找到机会学习具体项目的程序员并不难找到愿意学习Lisp的人。
Giorgio

3

@斯蒂芬·里德说得很好。我只能补充说我在70年代曾在MIT AI实验室工作。那时我听到一个有关Lisp起源的故事。我不能发誓这是真的,但这是这样的:

约翰·麦卡锡(John McCarthy)在50年代就读于麻省理工学院,他一直在研究程序的属性,为此,他一直在使用类似于Lambda微积分的简单语法。

故事是一位研究生想做一个项目(类比,定理证明或符号数学,我不记得是哪个),并问麦卡锡要使用哪种语言。答案-当然是Fortran。(没有什么其他的东西了,列表处理本身当时是众所周知的,但只是作为子例程包,而不是作为语言。)嗯,以某种方式导致了可以在嵌套列表结构中处理符号的程序。连同一种阅读和打印它们的方式,然后是一种eval功能,以及Voila'-一种语言。LIST处理语言。它从那里起飞。

对于当时我们正在使用的那种算法(仍然很少有人在做),需要一种可以轻松操纵符号表达式的语言。这就是Lisp擅长的。基本概念有很多变体,名称不同,例如Prolog,Scheme等。

因此,人工智能对很多人来说意味着很多事情,不同的语言对不同的事物有好处,但是对于可以描述为符号操纵的问题,很难找到一种并非源于Lisp的有用语言。


1
约翰·麦卡锡(John McCarthy)自己的话: www-formal.stanford.edu/jmc/history/lisp/lisp.html

@Thorbjørn:感谢您的链接。尽管我大量使用Lisp已有数年,但我从未对其Lisp的起源给予过多关注。
Mike Dunlavey

尽管Prolog可以很好地用作符号计算,但我不会说它与Lisp紧密相关:Lisp基于lambda微积分,Prolog基于一阶逻辑(两种不同的计算模型)。
乔治

@乔治:Prolog的祖先和堂兄弟大多是用什么写的?Lisp。Fischer Black的演绎程序,Micro-Planner等。对我而言,这方面的一本好书是《计算机编程的演绎基础》
Mike Dunlavey

“ Prolog的祖先和堂兄弟大多是用什么写的?”:好的,您的意思是紧密相关的,因为一个人用来实现另一个人,而不是他们遵循类似的范例。
乔治

1

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可以轻松地处理数字运算任务。

在其中一辆自动驾驶汽车中,我想象视觉系统是用与路线规划系统不同的语言编写的(并且在不同的硬件上运行)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.