[lisp] AI에 Lisp가 사용되는 이유는 무엇입니까? [닫은]

AI 프로그래밍에 사용된다고 들었 기 때문에 Lisp를 배우면서 내 지평을 넓히고 있습니다. 몇 가지 탐구를 한 후에도 AI 예제 또는 언어로 더 기울어 진 언어로 된 것을 찾지 못했습니다.

과거에 Lisp을 사용할 수 있었거나 방금 놓친 것이 있습니까?



답변

Lisp WAS는 1980 년대 말까지 AI에서 사용되었습니다. 그러나 80 년대에 Common Lisp는 “AI 언어”로서 비즈니스 세계에 과매도되었습니다. 백래시는 대부분의 AI 프로그래머가 몇 년 동안 C ++을 사용하도록 강요했습니다. 오늘날 프로토 타입은 일반적으로 젊은 동적 언어 (Perl, Python, Ruby 등)로 작성되며 성공적인 연구의 구현은 일반적으로 C 또는 C ++ (때로는 Java)입니다.

70 년대가 궁금하다면 … 그러나 나는 Lisp가 AI 연구에서 세 가지 이유로 (중요한 순서로) 성공했다고 생각합니다.

  1. Lisp는 훌륭한 프로토 타이핑 툴입니다. 아주 오랫동안 최고 였습니다 . Lisp은 아직 해결 방법을 모르는 문제를 해결하는 데 여전히 뛰어납니다. 이 설명은 AI를 완벽하게 특징 짓습니다.
  2. Lisp는 기호 프로그래밍을 잘 지원합니다. 오래된 AI도 상징적이었습니다. 이 점에서도 오랫동안 독특했습니다.
  3. 리스프는 매우 강력합니다. 이 때문에 코드 / 데이터 차이는 약한 느낌이 당신의 함수 및 매크로가 내장 된 물건처럼 보이기 때문에 다른 언어보다 더 확장.

나는이없는 피터 노르 빅의 옛 AI 책을 있지만 리스프에서 AI 알고리즘을 프로그래밍을 배울 수있는 좋은 방법이 될 예정이다.

면책 조항 : 저는 컴퓨터 언어학을 전공하는 대학원생입니다. 나는 자연어 처리의 서브 필드가 다른 필드보다 훨씬 더 잘 알고 있습니다. 아마도 Lisp는 다른 서브 필드에서 더 많이 사용될 것입니다.


답변

Lisp는 AI를 사용하여 심볼로 잘 계산하는 소프트웨어의 구현을 지원하므로 AI에 사용됩니다. Lisp의 핵심은 기호, 기호 표현 및 이들을 사용한 컴퓨팅입니다.

기호로 계산하는 일반적인 AI 영역은 컴퓨터 대수, 정리 증명, 계획 시스템, 진단, 재 작성 시스템, 지식 표현 및 추론, 논리 언어, 기계 번역, 전문가 시스템 등입니다.

이 도메인에서 유명한 AI 응용 프로그램이 Lisp로 작성된 것은 놀라운 일이 아닙니다.

  • 최초의 대형 컴퓨터 대수 시스템 인 Macsyma.
  • 널리 사용되는 정리 증명 자로서 ACL2 (예 : AMD에서 사용)
  • 미군이 첫 걸프전에서 사용한 물류 계획자인 DART. 이 Lisp 애플리케이션만으로 당시 AI 연구에 대한 미국의 모든 투자에 대해 상환했다고합니다.
  • 허블 우주 망원경의 계획 및 예약 응용 프로그램 인 SPIKE 다른 대형 망원경에서도 사용됩니다.
  • CYC는 가장 큰 소프트웨어 시스템 중 하나입니다. 인간 상식 지식의 영역에서의 표현과 추론.
  • 상업적으로 사용되는 최초의 자연어 번역 시스템 중 하나 인 METAL.
  • 신용 카드 거래를 확인하는 American Express의 Authorizer ‘s Assistant.

이 영역에는 Lisp로 작성된 수천 개의 응용 프로그램이 있습니다. 이들에게는 매우 일반적으로 심볼 처리 영역에서 특별한 기능이 필요하다는 것입니다. 하나는 이러한 영역에서 Lisp 위에 특수 인터프리터 / 컴파일러가있는 특수 언어를 구현합니다. Lisp을 사용하면 기호 데이터 및 프로그램에 대한 표현을 작성할 수 있으며 이러한 표현 (수학 공식, 논리 공식, 계획 등)을 조작하기 위해 모든 종류의 기계를 구현할 수 있습니다.

(AI에는 많은 다른 범용 프로그래밍 언어도 사용됩니다. AI에서 특히 Lisp가 사용되는 이유에 답하려고 노력했습니다.)


답변

한 가지 이유는 도메인에 특정한 구문을 사용하여 언어를 확장하여 효과적으로 도메인 특정 언어로 만들 수 있기 때문입니다. 이 기술은 비트를 섞는 것이 아니라 해결 하려는 문제 에 대해 추론 할 수 있으므로 매우 강력합니다 .


답변

필자는 항상 기능 언어이기 때문에 코드와 데이터를 구분하지 않는다고 생각합니다. 함수 정의 및 함수 호출을 포함한 모든 것을 목록으로 취급하고 다른 데이터와 같이 수정할 수 있습니다.

따라서 자체 검사, 자체 수정 코드를 쉽게 작성할 수 있습니다.


답변

가능한 대답 중 하나는 AI가 매우 어려운 문제의 모음이며 Lisp는 AI뿐만 아니라 어려운 문제를 해결하기위한 좋은 언어입니다.

그 이유는 매크로, 일반 함수 및 풍부한 내부 검사를 통해 간결한 코드를 작성하고 도메인 추상화를 쉽게 도입 할 수 있다는 것입니다. 이는 더 강력하게 만들 수있는 언어입니다. 불필요하게 발생하는 많은 문제와 자체 비용이 발생하지만 다른 문제의 경우 모든 발전을 위해 힘이 필요합니다.


답변

AI에 대해서만 생각하는 것은 잘못이라고 생각합니다. AI 겨울철 및 일반적인 lisp에 대한 상업적 효과와 같은 것들이 AI에 사용 된 이유를 묻는다면 산만하지 않습니다.

어쨌든 AI 코드의 대부분은 본질적으로 연구 코드이기 때문이라고 생각합니다. Lisp는 탐색 알고리즘, 어려운 알고리즘 구현, 자체 수정 및 종종 수정 된 코드를위한 훌륭한 언어입니다. 다시 말해, 연구 코드의 경우입니다.

대부분의 언어보다 더 유연하고 강력하면서도 대부분의 언어보다 효율적인 코드를 생성하기 때문에 일부 연구 코드 (수학, 신호 처리)에 lisp를 사용합니다. 나는 일반적으로 c ++ 속도의 +/- 2 요소 내에서 성능을 얻을 수 있지만 훨씬 더 빠르게 구현할 수 있으며 c ++, java, c #을 사용하는 경우보다 훨씬 많은 시간이 걸리는 복잡성을 처리합니다.

그래도 주제를 방황하고 있습니다. AI 코드는 연구 코드에 대한 강력한 접근 방식이기 때문에 주로 일반적인 lisp로 작성되었다고 생각합니다. 여전히 그렇습니다. 그러나 ‘AI’알고리즘이 더 잘 이해되고 탐색됨에 따라 일부는 가르치고 사용하기가 훨씬 쉬워 학부 과정에서 올해의 풍미가있는 언어로 나타났습니다. 거기에서 사람들이 이미 알고있는 것이 무엇인지, 어떤 라이브러리를 사용할 수 있는지, 그리고 큰 그룹에 적합한 것이 무엇인지가 문제가됩니다.


답변

큰 이유는 기본 데이터 구조로서 목록의 유연성 때문이었습니다.

당시에는 그것들을 모든 종류의 복합 객체로 바꿀 수 있었고 메시지 전달과 정치와 같은 새로운 것들을 선택의 언어로 만들었습니다. AI를위한 것이 아니라 크고 복잡한 작업을위한 것입니다. 특히 그들이 개념을 실험 할 때.