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 연구에서 세 가지 이유로 (중요한 순서로) 성공했다고 생각합니다.
- Lisp는 훌륭한 프로토 타이핑 툴입니다. 아주 오랫동안 최고 였습니다 . Lisp은 아직 해결 방법을 모르는 문제를 해결하는 데 여전히 뛰어납니다. 이 설명은 AI를 완벽하게 특징 짓습니다.
- Lisp는 기호 프로그래밍을 잘 지원합니다. 오래된 AI도 상징적이었습니다. 이 점에서도 오랫동안 독특했습니다.
- 리스프는 매우 강력합니다. 코드 / 데이터 구별은 약하므로 함수와 매크로가 내장 기능처럼 보이기 때문에 다른 언어보다 확장 성 이 더 높습니다.
나는이없는 피터 노르 빅의 옛 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를위한 것이 아니라 크고 복잡한 작업을위한 것입니다. 특히 그들이 개념을 실험 할 때.
나는 당신이 옳다고 생각합니다 : Lisp는 일을 해킹하기위한 편리한 도구였습니다. 프로그램과 데이터를 크게 구분하지 않았기 때문입니다. 이를 통해 해커는 데이터처럼 기능을 매우 쉽게 조작 할 수있었습니다.
그러나 lisp는 데이터와 프로그램 사이에 중괄호와 구별이 없으므로 인간이 읽기가 매우 어렵습니다. 오늘은 프로덕션 AI 코드 (또는 프로토 타이핑)에 lisp를 사용하지 않지만 스크립팅에는 파이썬을 선호합니다.
고려해야 할 또 다른 사항은 언어와 관련된 기존 라이브러리 / 도구입니다. 나는 lisp 라이브러리와 파이썬 라이브러리를 비교할 수는 없지만 라이브러리와 오픈 소스가 이전보다 훨씬 더 중요하다고 생각합니다.
이 답변은 lisp와 python의 다음 비교에서 영감을 얻었습니다. http://amitp.blogspot.com/2007/04/lisp-vs-python-syntax.html
I remember hearing that, being a functional language, Lisp was a very good choice for implementing recursive algorithms. Being able to track down a tree and work your way back is essential when considering the decision making processes (traversal) and end result (leaf node).
This was told to me during an AI course at university where we studied Lisp.
A more cynical answer might be "because it lost a political AI war between Japan and the USA in the 1980s". There is an fun blog post that speculates about the impact of the Fifth-Generation Computer System demise on the Prolog.
참고URL : https://stackoverflow.com/questions/130475/why-is-lisp-used-for-ai
'Programing' 카테고리의 다른 글
장고의 SECRET_KEY 변경 효과 (0) | 2020.05.18 |
---|---|
툴박스에 어떤 최신 C ++ 라이브러리가 있어야합니까? (0) | 2020.05.18 |
관계형 데이터베이스 대신 문서 기반 데이터베이스를 사용해야하는 이유는 무엇입니까? (0) | 2020.05.18 |
Java에서 마지막 N 개 요소를 보유하는 크기 제한 큐 (0) | 2020.05.18 |
+ PHP에서 배열 연산자? (0) | 2020.05.18 |