Lisp가 AI에 적합한 언어 인 이유는 무엇입니까?


30

나는 컴퓨터 과학자들과 AI 분야의 연구원들로부터 Lisp가 인공 지능의 연구와 개발을위한 좋은 언어라고 들었습니다. 신경망이 확산되고 딥 러닝이 계속 적용됩니까? 이것에 대한 그들의 추론은 무엇입니까? 현재 딥 러닝 시스템은 어떤 언어를 사용하고 있습니까?

답변:


30

첫째, 난 당신이 의미 추측 커먼 리스프 (그 참조 표준 언어 사양입니다 HyperSpec을을 (라 à 효율적인 구현과) SBCL을 ). 그러나 최근 Scheme의 일부 구현은 Bigloo 또는 Chicken / Scheme 과 같은 우수한 구현과 관련이 있습니다 . Common Lisp 및 Scheme (및 Clojure )은 모두 동일한 Lisp 제품군에 속합니다. 그리고 빅 데이터 또는 기계 학습 애플리케이션을 구동 스크립트 언어로, 계략은 할 수 있을 파이썬에 유용한 교체 및도 리스프의 방언이다. BTW, SICP를 읽는 것이 좋습니다Scheme을 사용한 프로그래밍에 대한 훌륭한 소개입니다.

그렇다면 Common Lisp (및 다른 Lisp 방언)는 상징적 AI에 적합합니다. 그러나 최근의 많은 기계 학습 라이브러리는보다 주류 언어 로 코딩됩니다. 예를 들어 TensorFlow 는 C ++ 및 Python으로 코딩됩니다. 딥 러닝 라이브러리 는 대부분 C ++ 또는 Python 또는 C로 코딩되며 GPU 컴퓨팅 부품에 OpenCL 또는 Cuda를 사용하는 경우도 있습니다.

Common Lisp는 다음과 같은 이유로 상징적 인 인공 지능에 적합합니다 .

  • 그것은 매우 좋은 구현을 가지고 있습니다 (예 : SBCL , REPL에 주어진 모든 표현식을 기계 코드로 컴파일합니다 )
  • 그것은 호모 닉 (homoiconic )이기 때문에 프로그램을 데이터로 다루기가 쉽고, 특히 메타 프로그래밍 기술을 사용하는 서브 프로그램을 생성하기 쉽다 .
  • 그것은이 읽기 평가 - 인쇄 루프 대화 형 프로그래밍을 용이하게하기를
  • C와 같은 다른 언어보다 훨씬 강력한 매우 강력한 매크로 기계 (본질적으로 문제에 대한 도메인 고유의 하위 언어를 정의)를 제공합니다.
  • 가비지 컬렉터를 명령합니다 (코드조차도 가비지 수집 가능)
  • 많은 컨테이너 추상 데이터 유형을 제공하며 심볼을 쉽게 처리 할 수 ​​있습니다.
  • 적절한 주석을 통해 상위 수준 (동적 형식) 및 하위 수준 (더 많거나 적은 시작 형식) 코드를 모두 코딩 할 수 있습니다.

그러나 대부분의 머신 러닝 및 신경망 라이브러리는 CL로 코딩되지 않습니다. 신경망이나 딥 러닝은 상징적 인공 지능 분야에 속하지 않습니다. 이 질문 도 참조하십시오 .

Eurisko 또는 CyC 와 같은 몇 가지 상징적 AI 시스템 이 CL에서 개발되었습니다 (실제로는 CL 위에 구축 된 일부 DSL에서).

프로그래밍 언어는 그다지 중요하지 않을 수 있습니다. 에서 인공 일반 지능 연구 주제, 어떤 사람들은 모두 자신의 코드 (그래서 그것을 설계하고 생성 할 것 AI 시스템의 아이디어에서 작동 부트 스트랩 방법을). 그런 다음 이러한 시스템에서 생성 된 코드는 C와 같은 저수준 프로그래밍 언어로 생성 될 수도 있습니다. J.Pitrat의 블로그 참조


1
여기에 tensorflow와 theano는 실제로 상징적 프로그래밍이지만 명령형 언어 인 계산 그래프를 기반으로하고 싶습니다.
Maxim

@Basile : 일반적인 LISP 튜토리얼 또는 참조를 공유하십시오
Ved Prakash

@VedPrakash : 이메일로 연락 드리겠습니다. 광산은 basile@starynkevitch.net; 트위터를 사용하기에 너무 늙었습니다
Basile Starynkevitch

15

LISP 라는 강연에서 David Nolen ( ClojureClojureScript에 기여자 ; CoreKanren 의 miniKanren 포트 제작자)은 LISP 라는 강연 에서 LISP가 다른 프로그래밍 언어보다 수십 년 앞서 있다고 말했다. 언어가 그 이름을 유지하지 못한 데는 여러 가지 이유가 있습니다.

기사에서는 LISP가 AI에 적합한 이유를 강조합니다.

  • 새로운 언어를 쉽게 정의하고 복잡한 정보를 조작 할 수 있습니다.
  • 프로그램뿐만 아니라 데이터를 정의하고 조작 할 수있는 완벽한 유연성.
  • 프로그램이 간결하고 세부 수준이 낮으므로 빠릅니다.
  • 좋은 프로그래밍 환경 (디버깅, 증분 컴파일러, 편집기)

이 분야에 종사하는 대부분의 친구는 일반적으로 인공 신경 네트워크 및 기계 학습에 Matlab을 사용합니다. 그래도 낮은 수준의 세부 정보를 숨 깁니다. 결과를 찾고 있지만 도착하는 방법이 아니라면 Matlab이 좋습니다. 그러나 저수준의 세부적인 내용조차도 배우고 싶다면 LISP를 한 번 이상 살펴 보는 것이 좋습니다.
다양한 AI 알고리즘과 기술을 이해하고 있다면 언어가 그렇게 중요하지 않을 수 있습니다. 나는 "인공 지능 : 현대적인 접근 방식 (Stuard J. Russell and Peter Norvig)" 을 읽을 것을 제안합니다 . 나는 현재이 책을 읽고 있으며, 그것은 아주 좋은 책입니다.


4

AI는 머신 러닝, 딥 러닝, 신경망 등을 넘어서는 광범위한 분야입니다. 이러한 분야 중 일부에서 프로그래밍 언어는 전혀 문제가되지 않으므로 (속도 문제 제외) LISP는 분명히 그 주제가 아닙니다. .

예를 들어 검색 또는 AI 계획에서는 C ++ 및 Java와 같은 표준 언어가 빠르며 (특히 C ++) 계획 시스템과 같은 많은 소프트웨어 프로젝트가 오픈 소스이므로 표준 언어를 사용해야합니다 ( 또는 피드백 또는 확장을 이해하는 경우에는 적어도 현명합니다. LISP로 작성된 하나의 플래너 만 알고 있습니다. AI의이 분야에서 프로그래밍 언어 선택의 역할에 대해 약간의 인상을주기 위해 가장 유명하고 가장 중요한 플래너 목록을 제공하겠습니다.

빨리 아래로 :
설명 : 아마도 가장 잘 알려진 고전적인 계획 시스템
URL : http://www.fast-downward.org/
언어 : C ++, 부분 (전처리)은 Python입니다

FF :
설명 : 모든 사람들이 알고 있는 클래식 계획 시스템 인 Fast-Downward와 함께
URL : https://fai.cs.uni-saarland.de/hoffmann/ff.html
언어 : C

VHPOP :
설명 : 가장 잘 알려진 부분 순서 인과 링크 (POCL) 계획 시스템
URL 중 하나 : http://www.tempastic.org/vhpop/
언어 : C ++

SHOP 및 SHOP2 :
설명 : 가장 잘 알려진 HTN (계층 적) 계획 시스템
URL : https://www.cs.umd.edu/projects/shop/
language : 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/
언어 : there PANDA1과 PANDA2는 Java로 작성되고 PANDA3은 주로 Java로 작성되며 일부는 Scala로 작성됩니다.

이것들은 제 생각에 가장 잘 알려진 계획 시스템 중 일부였습니다. 2 년마다 개최되는 국제 계획 대회 (IPC, http://www.icaps-conference.org/index.php/Main/Competitions ) 에서 최신 행사를 검색 할 수 있습니다 . 경쟁 플래너의 코드는 공개 소스로 게시됩니다 (몇 년 동안).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.