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


185

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

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


5
Lisp가 애니메이션 및 그래픽에만 유용하다고 가정하지 말고 AI, 생물 정보학, B2B 및 전자 상거래, 데이터 마이닝, EDA / 반도체> 응용 프로그램, 전문가 시스템, 재무, 지능형 에이전트, 지식> 관리, 기계 CAD , 모델링 및 시뮬레이션, 자연어,> 최적화, 연구, 위험 분석, 일정 예약, 통신 및 웹> 작성이 유일하게 발생했기 때문에 작성> 목록.
Avi

2
나는 Lisp가 AI에만 유용하다고 생각하지 않았으며 왜 AI가 AI에 사용되는지 궁금합니다.
Cristián Romo

나는 "어려운 AI에는 어떤 언어의 기능이 필요합니까?" 이것은 유효하고 유용한 질문이며 결과는 Lisp Forth 및 어셈블러 만 어려운 AI를 수행하는 데 필요한 것을 갖습니다.
Albert van der Horst

답변:


126

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는 다른 서브 필드에서 더 많이 사용될 것입니다.


33
Lisp는 여전히 머신 러닝 / ILP 세계에서 여전히
살아남고

13
나는 C에서 가르치는 AI 학부 과정을 밟았습니다. Norvig의 책에서 AI를 가르치는 대학원 과정을 밟았습니다. C의 책은 AI 알고리즘과 구조에 중점을 두었습니다. Norvig의 책은 "AI 역사에 대해 읽는 동안 LISP를 배우자"고 생각했다. 제 생각에는 완전한 시간 낭비입니다.
San Jacinto

7
John McCarthy가 Lisp를 썼고 특히 AI 분야에서 매우 영향력있는 컴퓨터 과학자 였기 때문에 모두가 놓친 것 같습니다. 당연히 그의 작품 중 많은 부분이 Lisp에서 구현되었으므로 Lisp는 발판을 마련했습니다.
cha0site

2
일반적인 Lisp는 AI 언어로 의도 된 것이 아니며 업계에서 사용되도록 만들어졌습니다. 연구에는 일반적으로 Scheme이 사용됩니다. 결코 나이에 따라 언어를 판단하지 마십시오. 차가움에 비례하지 않으며 그 반대도 마찬가지입니다. C는 오래되었지만 시원하지만 Lisp의 나이는 왜 중요한가요?
Luka Ramishvili

1
1980 년대 말까지 Lisp WAS 가 AI에 사용 되었다는 것은 정확하지 않습니다 . 2016 년에도 MIT는 AI 분야에서 상당히 유명한 기관으로 남아 있습니다. MIT의 학부 로봇 공학 과정에 권장되는 교재는 Artificial Intelligence by Patrick Henry Winston입니다. 제 2 판에 의해 그 책의 프로그래밍 장들은 그들 자신의 동기화 된 책으로 나뉘어졌다 Lisp. 이름에서 알 수 있듯이 프로그래밍은 전적으로Lisp있습니다. people.csail.mit.edu/phw/Books/LISPBACK.HTML
Hack-R

61

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가 사용되는 이유에 답하려고 노력했습니다.)


10
예, 역사적으로 AI는 다른 어떤 것보다 상징적 계산에 관한 것이 었습니다. 80 년대 의 " AI winter "은 아마도 상징적 인 AI 의 위기 일 가능성이 높았 습니다. 그 당시 서브 심볼 방식 (신경망, 머신 러닝 등)에 대한 관심이 다시 부각되었습니다. Lisp 구현은 일반적으로 숫자 컴퓨팅에서 매우 약했습니다. 그들이이 전선에서 개선되었는지 모르겠습니다.
MaD70

2
@ MaD70 : 80 년대의 AI 겨울은 일반적으로 AI에 관한 것이 었습니다. 군대는 많은 자금 지원을 중단했으며 AI는 대부분 상업 시장에서 실패했습니다. 당시 존재했던 신경망도 마찬가지입니다. AI를 '새로운 소프트웨어 개발 방법'(규칙, 논리, 신경망, 가비지 수집 등)으로 본다면 실패했습니다. 오늘날에는 그 중 많은 부분이 널리 사용되지 않습니다.
Rainer Joswig

당시와 회고에 대한 나의 인상은 달랐다 : 나는 80 년대 후반의 상징적 인 방법으로 연구와 시장 (전용 신경 처리기가 있었음)에서 관심의 부활을 분명히 기억한다. 90 년대 초반, 수십 년간의 배타주의 이후 (내 대답을 참조하십시오 . 퍼셉트론에 대한 Minsky & Papert 비판의 영향에 대해 언급 한 곳 : stackoverflow.com/questions/683124/neural-networks-obsolete/… ).
MaD70

1
상징적 AI는 당시의 하드웨어 (강력한 / 충분하지 않음)로 인해 실패했으며, 상징적 대 서브 상징적 캠프 사이의 격렬한 대조로 인해 시너지 효과가 없었기 때문에 IMO가 실패했습니다. Wrt "오늘날 널리 사용 / 좋아하는": AI (두 캠프 모두에서)에서 개발 된 기술 중 일부는 생각할 수있는 것보다 훨씬 더 많이 사용되고 있다고 생각합니다.
MaD70

예를 들면 : 90 년대 말에 아는 사람들 중 일부는 섬유 분야의 품질 관리 프로젝트의 타당성에 대해 나에게 물었다. 내 머리 꼭대기에서 나는 신경망을 그러한 차별 문제 (본질적으로 이미지 분류)에 대한 유망한 접근법으로 언급했습니다. 그러한 제안만으로 몇 주 안에 신경망을 사용하여 이미 개발 된 소프트웨어를 발견했으며 R & D 관련 프로젝트에 착수하는 것보다 훨씬 더 합리적인 배포 권한을 획득했습니다.
MaD70

22

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


이 예제를 제공하거나 연결할 수 있습니까?
DuckMaestro

9
@DuckMaestro : 이번 주에 약 30 분의 매크로 작업에서 임시 버그가있는 SQL Select 버전을 구현했습니다. 다음과 같습니다. (query SELECT * FROM dataset WHERE expr).
Paul Nathan

리스프의 대수 해결사 포함하기 youtube.com/... 임베딩 리스프의 회로 언어 youtube.com/... 리스프에 임베드 리스프 youtube.com/... 그냥 전체 시리즈를 시청 - 리스프에 임베딩 프롤로그
aoeu256

youtube.com/watch?v=SLcZXbyGC3E <-이것은 좋습니다
aoeu256

12

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

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


10
그것은 기능 적이기 때문이 아닙니다. 프롤로그는 동일한 속성을 갖습니다. 모든 것이 "용어"이고 용어는 데이터뿐만 아니라 코드입니다. (프롤로그는 논리 프로그래밍 언어이며 AI에도 많이 사용됩니다)
휴 알렌

-이를위한 멋진 용어는 Homoiconicity라고 en.wikipedia.org/wiki/Homoiconicity
모르 텐 젠슨

9

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

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


7

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

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

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

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


6

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

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


4

당신이 옳다고 생각합니다 : Lisp는 해킹을위한 편리한 도구였습니다. 프로그램과 데이터를 크게 구분하지 않았기 때문입니다. 이를 통해 해커는 데이터처럼 기능을 매우 쉽게 조작 할 수있었습니다.

그러나 lisp는 데이터와 프로그램 사이에 중괄호와 구별이 없으므로 인간이 읽기가 매우 어렵습니다. 오늘은 프로덕션 AI 코드 (또는 프로토 타이핑)에 lisp를 사용하지 않지만 스크립팅에는 파이썬을 선호합니다.

고려해야 할 또 다른 사항은 언어와 관련된 기존 라이브러리 / 도구입니다. 나는 lisp 라이브러리와 파이썬 라이브러리를 비교할 수는 없지만 라이브러리와 오픈 소스가 이전보다 훨씬 더 중요하다고 생각합니다.

이 답변은 lisp와 python의 다음 비교에서 영감을 얻었습니다. http://amitp.blogspot.com/2007/04/lisp-vs-python-syntax.html


2
개인적으로 대부분의 언어보다 Lisp를 읽기가 더 쉽다는 것을 알게되었으며 몇 주 전에 만 배웠습니다. 파이썬은 대부분의 언어에 비해 특히 깨끗하지만 lisp를 C ++과 비교하면 훨씬 깨끗하고 읽기 쉽습니다. 어쨌든 내 경험으로는.
Zeusoflightning125

4

Lisp는 기능적 언어이기 때문에 재귀 알고리즘을 구현하는 데 매우 적합하다고 들었습니다. 의사 결정 프로세스 (순회) 및 최종 결과 (리프 노드)를 고려할 때 나무를 추적하고 되돌아 갈 수있는 능력이 필수적입니다.

이것은 우리가 Lisp를 공부 한 대학의 AI 과정에서 내게 들었습니다.


1
Lisp의 매크로는 다른 것보다 강력하여 50 줄의 Lisp 코드만으로 OOP를 구현할 수 있으며 REPL을 사용하면 프로그램이 계속 실행되는 동안 프로그램을 편집 할 수 있습니다 ... Lisp만이 자체 소스 코드를 쉽게 편집 할 수 있습니다 ...
aoeu256

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