Lisp和Prolog用于人工智能?

Lisp和Prolog用于人工智能?,lisp,artificial-intelligence,prolog,Lisp,Artificial Intelligence,Prolog,自从3年前我参加了人工智能课程以来,我显然已经足够熟练地提出这个问题……只是开玩笑而已;) 但说真的,是什么让这些语言如此受A.I.研究的欢迎呢。尽管A.I.的研究是“古老的”…但它可能是过去5-10年来最长的一次,似乎。。。。 是因为这些语言在某种程度上是围绕人工智能的概念“设计”的,还是因为我们现在没有更好的语言可供使用 我问这个是因为我总是觉得它很有趣,我只是有点好奇。如果我完全错了,他们使用不同的语言,我想知道他们都用什么。我的意思是我能理解序言,特别是感知/命题逻辑和模糊逻辑。但我不明

自从3年前我参加了人工智能课程以来,我显然已经足够熟练地提出这个问题……只是开玩笑而已;)

但说真的,是什么让这些语言如此受A.I.研究的欢迎呢。尽管A.I.的研究是“古老的”…但它可能是过去5-10年来最长的一次,似乎。。。。 是因为这些语言在某种程度上是围绕人工智能的概念“设计”的,还是因为我们现在没有更好的语言可供使用

我问这个是因为我总是觉得它很有趣,我只是有点好奇。如果我完全错了,他们使用不同的语言,我想知道他们都用什么。我的意思是我能理解序言,特别是感知/命题逻辑和模糊逻辑。但我不明白“为什么”我们会使用Lisp…甚至A.I.的研究人员会用什么来进行机器学习等等


关于这个主题的任何文章/书籍也很有帮助:)

无法真正与Prolog对话,但以下是Lisp的原因:

  • Lisp是一种语言,这意味着代码以与语言中的数据结构相同的形式()表示。i、 e.“代码即数据”。如果您正在编写修改/操纵其他代码的代码,例如遗传算法或符号操纵,则这具有很大的优势

  • Lisp的宏系统非常适合定义特定于问题的DSL。大多数Lisp开发人员有效地“扩展语言”来完成他们需要的工作。Lisp是同音符号这一事实在这里也有很大帮助

  • 有一些历史联系,因为Lisp和许多早期人工智能研究几乎同时流行。一些

  • Lisp作为一种函数式编程语言工作得很好。这是一个非常适合人工智能的领域(您通常只是试图让机器学习如何为给定的输入生成正确的输出)

  • 主观观点:Lisp似乎很吸引有数学思维的人,而这恰恰是许多现代人工智能所需要的。。。。。这是可能的,因为Lisp与非类型lambda演算关系非常密切


我目前正在做一些人工智能/机器学习工作,选择(JVM上的现代Lisp)主要是出于上述原因。

Lisp的问题已经得到了回答,所以我只对Prolog进行评论

Prolog设计用于两个方面:自然语言处理和逻辑推理。在20世纪70年代早期的范例中,当Prolog被发明时,这意味着:

  • 为自然语言构建符号语法,用于构建句子/话语的逻辑表示
  • 使用这些表示和逻辑公理(不一定是古典逻辑的公理)来推断新的事实
  • 使用类似的语法将逻辑表示转换回语言
  • Prolog在这方面非常擅长,并且在中被用于完成这样的任务。不过,这种做法遭到了质疑,因为

  • :任何语法都不能捕捉一种语言中的所有规则和例外
  • 语法越详细,解析的复杂性(大O和实用性)就越高
  • 对于许多实际任务来说,逻辑推理既不充分也不必要
  • NLP的统计方法,即“字数统计”,已被证明更加可靠。随着互联网的兴起,足够的数据集可用于获取NLP开发人员所需的统计数据。与此同时,内存和磁盘成本有所下降,而处理能力仍然相对昂贵
  • 直到最近,NLP研究人员才开发出一些实用的组合符号统计方法。世界上其他地方使用java、C++或Python,您可以更容易地找到库、工具和非PHD程序员。事实上,在Prolog中,I/O和算术是笨拙的,这无助于它的接受

    Prolog现在主要局限于涉及NLP和约束推理的领域特定应用程序,在这些应用程序中,Prolog似乎运行得相当顺利。尽管如此,很少有软件公司会用“基于Prolog技术的构建”来做广告,因为这种语言因没有兑现“让人工智能变得简单”的承诺而名声扫地


    (我想补充一点,我是Prolog的超级粉丝,但即使是我也只将其用于原型制作。)

    这里有一些很好的信息反馈,但Lisp和Prolog的要点要么被忽略、边缘化,要么没有得到足够的强调

    Lisp和后来的Prolog出现在一个主要人工智能研究围绕符号处理的时代。符号处理的一个简单例子是我们人类如何手工做代数、微积分或积分。我们象征性地操纵变量和常量以导出等价关系。Lisp和Prolog就是为此而设计的

    符号操作在C++或java中不是很容易实现的,因为它们不是为了这个目的而设计的。然而,C++、java或类似语言可能是人工智能中的流行语,因为现在存在一些不涉及符号处理的人工智能研究的变体。p> 人工智能的一种形式是使用统计方法作为知识的基础,这需要使用更精简的语言来减少计算时间。另外,许多所谓的人工智能系统只不过是为特定的利基目的服务的专门系统。当然,这些系统最好用非Lisp/Prolog语言编程,较少依赖于“推理”或常识知识获取,更多地依赖于处理输入数据

    甚至沃森(它在爪哇编程,C++,和一个小Prolog)可以说是高度专业化的系统。看来Watson的设计初衷是获取大量事实,然后使用复杂的搜索算法对这些事实进行排序(但不确定,IBM可能会这样做)