我从计算机科学家和AI领域的研究人员那里听说,Lisp是人工智能研究和开发的好语言。随着神经网络和深度学习的普及,这仍然适用吗?他们对此的理由是什么?当前内置的当前深度学习系统使用哪种语言?
我从计算机科学家和AI领域的研究人员那里听说,Lisp是人工智能研究和开发的好语言。随着神经网络和深度学习的普及,这仍然适用吗?他们对此的理由是什么?当前内置的当前深度学习系统使用哪种语言?
Answers:
首先,我想你指的Common Lisp(这是一个标准的语言规范,看到它的HyperSpec)与高效的实现(点菜SBCL)。但是最近一些Scheme的实现也可能是有意义的(与Bigloo或Chicken / Scheme之类的良好实现)。Common Lisp和Scheme(甚至Clojure)都来自同一个Lisp家族。作为驱动大数据或机器学习应用程序的脚本语言,Guile可能是 Python的有用替代品,并且也是Lisp的方言。顺便说一句,我建议阅读SICP,这是使用Scheme进行编程的绝佳介绍。
然后,Common Lisp(以及Lisp的其他方言)非常适合象征性AI。但是,许多最近的机器学习库都是用更主流的语言编码的,例如TensorFlow是用C ++和Python编码的。深度学习库大多使用C ++或Python或C进行编码(有时使用OpenCL或Cuda进行GPU计算)。
Common Lisp对于符号人工智能非常有用,因为:
但是,大多数机器学习和神经网络库不是用CL编码的。请注意,神经网络和深度学习都不在符号人工智能领域。另请参阅此问题。
CL中已经开发了几种符号AI系统,例如Eurisko或CyC(实际上是在CL之上构建的某些DSL中)。
请注意,编程语言可能不是很重要。在“ 人工智能”研究主题中,一些人致力于AI系统的构想,该系统将生成自己的所有代码(因此正在使用自举方法进行设计)。然后,由这样的系统生成的代码甚至可以用低级编程语言(如C)生成。请参阅J.Pitrat的博客
basile@starynkevitch.net
; 我太老了,不能使用推特
David Nolen(Clojure和ClojureScript的撰稿人,Core Logic的创建者,miniKanren的创始人)在一次名为LISP的演讲中说,由于功能过于强大,他说LISP时代比其他编程语言要早几十年。原因有很多导致该语言无法保持其名称。
该文章的亮点SOM的关键点为何LISP是AI好
我在该领域的大多数朋友通常将Matlab用于人工神经网络和机器学习。尽管它隐藏了底层细节。如果您只是在寻找结果,而不是在寻找结果,那么Matlab将会很好。但是,如果您想学习甚至低级的详细资料,那么我建议您至少要经历一次LISP。
如果您了解各种AI算法和技术,那么语言可能并不那么重要。我建议您阅读“人工智能:一种现代方法(Stuard J. Russell和Peter Norvig撰写)”。我目前正在阅读这本书,这是一本非常好的书。
AI是一个广阔的领域,远远超出了机器学习,深度学习,神经网络等领域。在这些领域中,编程语言一点都不重要(速度问题除外),因此LISP肯定不会成为话题。
例如,在搜索或AI计划中,诸如C ++和Java之类的标准语言通常是首选,因为它们速度很快(特别是C ++),而且由于许多软件项目(如计划系统)都是开源的,因此使用标准语言非常重要(或至少是明智的选择,以免有人对您的反馈或扩展表示赞赏。我只知道一个用LISP编写的计划程序。只是为了给人一种选择编程语言在AI领域中的作用的印象,我将列出一些最著名,因此也是最重要的计划者:
Fast-Downward:
说明:可能最著名的古典计划系统
URL: http : //www.fast-downward.org/
语言: C ++,部件(预处理)在Python中
FF:
说明:连同快速向下的经典规划系统大家都知道
网址: https://fai.cs.uni-saarland.de/hoffmann/ff.html
语言: Ç
VHPOP:
描述:最著名的偏序因果链接(POCL)计划系统之一
URL: http : //www.tempastic.org/vhpop/
语言: C ++
SHOP和SHOP2:
说明:最著名的HTN(分层)计划系统
URL: https : //www.cs.umd.edu/projects/shop/
语言: //www.cs.umd.edu/projects/shop/ SHOP和SHOP2有两种版本。原始版本已用LISP编写。较新的版本(称为JSHOP和JSHOP2)已用Java编写。Pyshop是另一个用Python编写的SHOP变体。
PANDA:
说明:另一个著名的HTN(和混合)规划系统
URL: http : //www.uni-ulm.de/en/in/ki/research/software/panda/panda-planning-system/
语言:有计划器的版本不同:PANDA1和PANDA2用Java编写,PANDA3主要用Java编写,而某些部分在Scala中。
这些只是我想到的一些最著名的计划系统。可以从每两年举行一次的国际计划竞赛(IPC,http://www.icaps-conference.org/index.php/Main/Competitions)中检索到更多最新的竞赛。竞争者的规划人员代码已公开开源(几年)。