现在,因为我3年前在A.I.上课。我非常熟练地问这个问题......开玩笑只是开玩笑;)
但严肃的说,这些语言是什么使它们如此受欢迎A.I.研究。即使A.I.研究是“老”......它可能是过去5到10年中最长的方式...... 是因为这些语言在A.I.的概念中有些“设计”了。或者只是说我们现在没有什么好用的?
我问这个因为我总觉得它很有趣,而且我只是有点好奇。如果我完全错了,他们使用不同的语言,我很想知道他们使用的是什么。我的意思是我可以理解prolog,尤其是Sentient / Propositional Logic和Fuzzy逻辑。但我不明白“为什么”我们会使用Lisp ...甚至还有其他A.I.研究人员会用来做机器学习等。
关于主题的任何文章/书籍也很有用:)
答案 0 :(得分:30)
Lisp已经回答了这个问题,所以我只会评论Prolog。
Prolog专为两件事而设计:自然语言处理和逻辑推理。在20世纪70年代早期的GOFAI范例中,当Prolog被发明时,这意味着:
Prolog非常擅长这一点,并且在ISS中用于完成这样的任务。然而,这种方法已经失去了信誉,因为
直到最近,NLP研究人员才开发出一些实用的组合符号统计方法,sometimes using Prolog。世界其他地方使用Java,C ++或Python,您可以更轻松地找到库,工具和非博士程序员。事实上I / O和算术在Prolog中不实用,这无助于它的接受。
Prolog现在主要局限于涉及NLP和约束推理的特定领域应用程序,它们看起来确实很好。尽管如此,很少有软件公司会以“基于Prolog技术为基础”做广告,因为这种语言因为没有达到“让AI变得容易”的承诺而得名。
(我想补充一点,我是Prolog的忠实粉丝,但我甚至只用它来进行原型设计。)
答案 1 :(得分:29)
无法真正与Prolog交谈,但这就是为什么Lisp:
Lisp是一种homoiconic语言,这意味着代码以与语言中的数据结构相同的形式(s-expressions)表示。即“代码是数据”。如果您正在编写修改/操作其他代码的代码,例如,这有很大的优势。遗传算法或符号操作。
Lisp的宏系统使其非常适合定义特定问题的DSL。大多数Lisp开发人员有效地“扩展语言”以满足他们的需求。再一次,Lisp是同质的这一事实在这里有很大的帮助。
有一些历史联系,因为Lisp在大多数早期AI研究的同时变得流行起来。一些interesting facts in this thread。
Lisp作为一种函数式编程语言非常有效。这是一个非常适合AI的领域(你经常只是试图让机器学习如何为给定的输入生成正确的输出)。
主观观点:Lisp似乎吸引了具有数学思维的人,这恰好是你需要很多现代人工智能......这是可能的,因为Lisp非常漂亮与无类型的lambda演算密切相关
我正在做一些AI /机器学习工作,并且由于上述原因选择了Clojure(JVM上的现代Lisp)。
答案 2 :(得分:15)
当我们认为AI是符号操作和像Ontologies这样的东西时,Lisp有一个优势。 当我们认为AI是逻辑时,Prolog有一个优势,而Unification是一个棘手的操作。 但是这些都不能为任何当前的竞争者提供任何优势#AI; AI" 统计AI是关于稀疏数组的。 各种神经网络,包括深度学习,都是关于与链接相关的节点的海洋。 模型自由方法(多种机器学习,进化方法等)也很简单。复杂性是紧急的,所以你不必担心它。写一个简单的基础,可以了解它需要学习什么。 在任何一种情况下,任何通用语言都可以。甚至可以说,大多数神经网络方法都非常简单,以至于C ++会有点过分。
使用允许您最轻松地聘请最佳程序员完成任务的语言。
答案 3 :(得分:11)
这里有一些好的和信息丰富的回答,但Lisp和Prolog的观点要么被遗漏,要么被边缘化,要么不够强调。
Lisp,后来Prolog出现在一个主要的人工智能研究围绕符号处理的时代。符号处理的一个简单例子是我们人类如何手工进行代数,微积分或积分。我们象征性地操纵变量和常量来导出等价关系。 Lisp和Prolog就是为此而设计的。
符号操作并非在C ++或Java中实现,因为它们的设计并未考虑到这一点。然而,现在人工智能中的C ++,Java或类似语言可能是流行语,因为现在存在几种不涉及符号处理的AI研究变体。
AI的一种形式涉及使用统计方法作为知识的基础,这需要使用更多更精简的语言来减少计算时间。许多所谓的AI系统也只不过是专门用于特定利基目的的系统。当然,这些系统最好用非Lisp / Prolog语言编程,而不是依赖于“推理”或常识知识获取,更多地依赖于从输入处理数据。
即使是Watson(用Java,C ++和一些Prolog编程)也可以说是一个高度专业化的系统。似乎Watson的目的是获取大量事实,然后使用复杂的搜索算法对这些事实进行排序(虽然不确定,IBM可能会因此而怨恨我)。未来的AI实现可能会结合AI范例并为每个专用部分实现各种语言。甚至Lisp和Prolog有一天可能会卷土重来。
答案 4 :(得分:6)
回忆起Prolog的动机:解决问题的逻辑,理解推理,人或机器,这可能是一个好主意。这是一个正在进行的项目,即使Prolog是其最好的结果之一,也不是它的最终结果。我们一直在寻找更好的语言来代表知识。查看Bob Kowalski的最新着作:如何人工智能化。
答案 5 :(得分:1)
但我不明白“为什么”我们会使用Lisp ......甚至还有什么 A.I.研究人员会用来做机器学习等。
Yann LeCun开发了Lush又名LISP Universal Shell。他最近还成为社交媒体网络的人工智能研究主任。
关于主题的任何文章/书籍也很有用:)
我猜你已经知道了Artificial Intelligence: A Modern Approach 这是大学人工智能阅读最多的入门书。