Lisp 是否仍被用于解决 AI 问题?

人工智能 历史 编程语言 口齿不清
2021-11-16 19:52:42

我知道在处理人工智能问题时,很早就使用了 Lisp 语言。它今天仍然用于重要的工作吗?如果没有,是否有一种新语言已取代其成为当今人工智能工作中最常用的语言?

4个回答

总的来说,答案是否定的,但当前的范式很大程度上归功于 LISP。今天最常用的语言是python。

相关答案:

LISP 在我们现在所说的函数式编程中开创了许多重要概念,其中一个关键的吸引力在于程序与数学的接近程度。其中许多功能已被纳入现代语言(参见维基百科页面)。LISP 非常有表现力:它的语法很少(只有列表和一些基本操作),但你可以编写简短的程序来表达复杂的想法。这让新手感到惊讶,并将其作为人工智能的语言出售。但是,这是一般程序的属性。短节目可以代表复杂的概念。虽然您可以在 LISP 中编写强大的代码,但任何初学者都会告诉您,阅读其他人的 LISP 代码或调试您自己的 LISP 代码也非常困难。最初,函数式编程也有性能考虑,并且不喜欢被 C 等低级命令式语言取代。(例如,函数式编程要求永远不会更改(“变异”)对象,因此每个操作都需要一个要创建的新对象。没有良好的垃圾收集,这可能会变得笨拙)。今天,我们了解到,编写好的代码需要函数式编程和命令式编程的混合,而现代语言(如 python、ruby 和 scala)都支持这两者。在这一点上,这只是我的观点,没有理由更喜欢 LISP 而不是 python。

目前最受关注的人工智能范式是机器学习,我们从数据中学习,而不是以前的方法,如专家系统(80 年代),专家编写规则让人工智能遵循。Python 是目前使用最广泛的机器学习语言,拥有许多库,例如 Tensorflow 和 Pytorch,以及一个活跃的社区。为了处理海量数据,我们需要像 Hadoop、Hive 或 Spark 这样的系统。这些代码是用 python、java 或 scala 编写的。通常,核心时间密集型子例程是用 C 编写的。

80 年代的 AI 寒冬不是因为我们没有合适的语言,而是因为我们没有合适的算法、足够的计算能力和足够的数据。如果您正在尝试学习 AI,请花时间学习算法而不是语言。

在研究 AI 模型时,我肯定会继续经常使用 Lisp。

你问它是否被用于大量工作。对于我自己的工作,这对我来说太主观了,但我询问了我的一个 AI 模型是否认为自己是实质性的,它的回答是肯定的。当然,它的反应自然也是有偏差的。

总的来说,大量的人工智能研究和开发是在 Lisp 中进行的。此外,即使对于非 AI 问题,有时也会使用 Lisp。为了展示 Lisp 的强大功能,我在 25 年前设计了第一个完全用 Lisp 编写的神经网络模拟系统。

LISP 仍然被大量使用,但越来越少。由于过去有很多人使用它,仍然有动力,他们仍然活跃在行业或研究中(轶事:最后一个 VCR 是 2016 年 7 月由一家日本制造商生产的,是的)。然而,该语言(据我所知)用于不利用机器学习的那种人工智能,通常作为 Russell 和 Norvig 的参考书。这些应用程序仍然非常有用,但机器学习如今得到了所有的关注。

下降的另一个原因是 LISP 从业者已经部分转向 Clojure 和其他最近的语言。

如果您正在学习 AI 技术,LISP(或 Scheme 或 Prolog)是了解整个“AI”正在发生的事情的不错选择。但如果你希望或必须非常务实,Python 或 R 是社区的选择

注意:以上缺乏具体的例子和参考。我知道一些大学的工作,以及一些受 LISP 启发或直接使用 LISP 的公司。


为了补充@Harsh 的答案,LISP(以及 Scheme 和 Prolog)具有使其看起来更适合创建智能机制的特性——使 AI 成为 60 年代所感知的。

其中一个特点是语言设计引导开发人员以一种非常优雅的方式思考,将一个大问题分解为小问题等等。如果你愿意的话,它非常“聪明”或“智能”。与其他一些语言相比,几乎别无选择,只能这样开发。LISP 是一种列表处理语言,并且“纯粹是功能性的”。

但是,在与 LISP 相关的工作中可以看到一个问题。AI 领域中一个值得注意的工作是Situation Calculus,其中(简而言之)描述了“世界”中的对象和规则,并可以让它演变为计算情况——世界的状态。因此,它是一种根据情况进行推理的模型。主要问题被称为框架问题,这意味着这个微积分不能分辨什么不能。改变——只是改变了什么。世界上没有定义的任何东西都不能被处理(注意这里与 ML 的区别)。第一个实现使用 LISP,因为那是当时的 AI 语言。并且受到框架问题的约束。但是,正如@Harsh 所提到的,这不是 LISP 的错:任何语言都会面临同样的框架问题(情境演算的概念问题)。

所以从 AI / AGI / ASI 的角度来看,语言真的无关紧要。概念(算法等)确实很重要。

即使在机器学习中,语言也只是一种实用的选择。Python 和 R 今天很流行,主要是由于它们的库生态系统和关键公司的关注。但是尝试使用 Python 或 R 为基于 RaspberryPI 的应用程序运行模型,您将面临一些严重的限制(但仍有可能,我正在这样做:-))。所以语言选择归结为实用主义。

Clojure 是 Lisp 的一种方言(为 Java 虚拟机实现),用于实现Clojush,一个PushGP系统,即基于使用Push编程语言的遗传编程(进化算法的一个子类)系统,这是一种基于堆栈的编程语言。Clojush 的首席开发人员 Lee Spector 和其他人仍在对这些主题进行研究。所以,是的,Lisp 仍在人工智能中使用!

然而,Python 和 C/C++(用于实现底层的东西)可能是当今 AI 中最常用的两种编程语言,尤其是在深度学习方面。