Почему Лисп используется для ИИ?

Я изучал Лисп, чтобы расширить свой кругозор, потому что слышал, что он используется в программировании ИИ. После некоторых исследований мне еще предстоит найти примеры ИИ или что-нибудь на языке, что сделало бы его более склонным к нему.

Использовался ли Lisp в прошлом, потому что он был доступен, или есть что-то, чего мне просто не хватает?


person Cristián Romo    schedule 24.09.2008    source источник
comment
›… Не думайте, что Lisp полезен только для анимации и графики,› искусственного интеллекта, биоинформатики, B2B и электронной коммерции, интеллектуального анализа данных, EDA / полупроводников ›приложений, экспертных систем, финансов, интеллектуальных агентов, управления знаниями, автоматизированного проектирования систем автоматизированного проектирования , Моделирование и симуляция, Естественный язык, ›Оптимизация, Исследования, Анализ рисков, Планирование, Телекоммуникации и Интернет› Создание, потому что это единственное, что они ›перечислили. - Кент Питман   -  person Avi    schedule 25.09.2008
comment
Я не думал, что Лисп полезен только для ИИ, мне просто интересно, почему он для этого используется.   -  person Cristián Romo    schedule 25.09.2008
comment
Я бы перефразировал вопрос, какие особенности языка необходимы для жесткого ИИ? Это правильный и полезный вопрос, и в результате только Lisp Forth и ассемблер имеют то, что нужно для создания жесткого ИИ.   -  person Albert van der Horst    schedule 17.02.2014


Ответы (10)


Лисп использовался в ИИ до конца 1980-х годов. Однако в 80-е годы Common Lisp был перепродан деловым миром как «язык искусственного интеллекта»; обратная реакция заставила большинство программистов ИИ перейти на C ++ на несколько лет. В наши дни прототипы обычно пишутся на более молодом динамическом языке (Perl, Python, Ruby и т. Д.), А успешные исследования обычно выполняются на C или C ++ (иногда Java).

Если вам интересно узнать о 70-х ... ну, меня там не было. Но я думаю, что Lisp был успешным в исследованиях искусственного интеллекта по трем причинам (в порядке важности):

  1. Lisp - отличный инструмент для создания прототипов. Он был лучшим очень долгое время. Lisp по-прежнему отлично справляется с проблемой, которую вы еще не знаете, как решить. Это описание идеально характеризует ИИ.
  2. Lisp хорошо поддерживает символическое программирование. Старый AI также был символическим. И в этом отношении он долгое время был уникальным.
  3. Лисп очень мощный. Разделение кода и данных слабее, поэтому он кажется более расширяемым, чем другие языки, потому что ваши функции и макросы выглядят как встроенные.

У меня нет старой книги Питера Норвига об ИИ, но предполагается, что это хороший способ научиться программировать Алгоритмы AI в Лиспе.

Отказ от ответственности: я аспирант компьютерной лингвистики. Я знаю подполе обработки естественного языка намного лучше, чем другие поля. Возможно, Lisp больше используется в других подполях.

person Nathan Shively-Sanders    schedule 25.09.2008
comment
Lisp определенно все еще жив и здоров в мире машинного обучения / ILP. - person HasaniH; 20.07.2009
comment
У меня был курс бакалавриата по искусственному интеллекту, преподаваемый на языке С. У меня был курс повышения квалификации по искусственному интеллекту, который читался по книге Норвига. Книга на языке C посвящена алгоритмам и структурам искусственного интеллекта. Книга Норвига была такой: давайте изучим LISP, пока мы читаем об истории искусственного интеллекта. На мой взгляд, полнейшая трата времени. - person San Jacinto; 23.05.2010
comment
Одна из причин, по которой все, кажется, упускают из виду, заключается в том, что Джон Маккарти написал Лисп и был очень влиятельным компьютерным ученым, особенно в области искусственного интеллекта. Естественно, большая часть его работы была реализована на Лиспе, и таким образом Лисп закрепился. - person cha0site; 09.04.2012
comment
Common Lisp никогда не задумывался как язык ИИ, он создавался для использования в промышленности. Для исследования обычно используется Схема. И никогда, никогда не судите язык по его возрасту - он просто не пропорционален крутости, и наоборот. C старый, но крутой, так почему возраст Лиспа имеет значение? - person Luka Ramishvili; 17.05.2012
comment
Не знаю, верно ли, что Лисп БЫЛ использовался для ИИ до конца 1980-х годов. В 2016 году Массачусетский технологический институт остается довольно известным учреждением в области искусственного интеллекта. Рекомендуемый учебник для курса робототехники Массачусетского технологического института - Artificial Intelligence by Patrick Henry Winston. Ко 2-му изданию главы этой книги по программированию разделились в отдельную, синхронизированную книгу - Lisp. Как следует из названия, программирование полностью выполняется на Lisp. people.csail.mit.edu/phw/Books/LISPBACK.HTML - person Hack-R; 15.01.2016
comment
Lisp породил Python, породивший Tensorflow. :) - person Will Ness; 17.02.2018

Lisp используется для AI, потому что он поддерживает реализацию программного обеспечения, которое очень хорошо вычисляет с помощью символов. Символы, символьные выражения и вычисления с ними лежат в основе Lisp.

Типичными областями ИИ для вычислений с символами были / являются: компьютерная алгебра, доказательство теорем, системы планирования, диагностика, системы перезаписи, представление знаний и рассуждения, языки логики, машинный перевод, экспертные системы и многое другое.

Поэтому неудивительно, что многие известные приложения ИИ в этих областях были написаны на Лиспе:

  • Macsyma как первая большая система компьютерной алгебры.
  • ACL2 как широко используемый инструмент доказательства теорем, например, используемый AMD.
  • DART как планировщик логистики, используемый военными США во время первой войны в Персидском заливе. Считается, что только это приложение на Лиспе окупило все вложения США в исследования ИИ того времени.
  • SPIKE, приложение для планирования и составления расписания для космического телескопа Хаббл. Также используется несколькими другими крупными телескопами.
  • CYC, одна из крупнейших написанных программных систем. Представление и рассуждение в области человеческого знания здравого смысла.
  • МЕТАЛЛ, одна из первых коммерчески используемых систем перевода естественного языка.
  • Помощник авторизатора American Express, который проверяет транзакции по кредитным картам.

В этих областях есть тысячи приложений, написанных на Лиспе. Очень часто для них требуются специальные возможности в области символьной обработки. Один из них реализует специальные языки, у которых есть специальные интерпретаторы / компиляторы в этих доменах поверх Lisp. Lisp позволяет создавать представления для символьных данных и программ и может реализовывать все виды механизмов для управления этими выражениями (математические формулы, логические формулы, планы и т. Д.).

(Обратите внимание, что в AI также используется множество других языков программирования общего назначения. Я попытался ответить, почему именно Lisp используется в AI.)

person Rainer Joswig    schedule 25.03.2009
comment
Да, исторически искусственный интеллект был больше связан с символическими вычислениями, чем с чем-либо еще. Зима искусственного интеллекта в 80-х годах, вероятно, была скорее кризисом символического ИИ - в то время произошло возрождение интереса к субсимвольным методам (нейронные сети, машинное обучение и скоро). Реализации Лиспа обычно были довольно слабыми в числовых вычислениях. Я не знаю, улучшились ли они на этом фронте. - person MaD70; 17.10.2009
comment
@ MaD70: зима 80-х, посвященная ИИ, была посвящена ИИ в целом. Военные приостановили большую часть финансирования, и ИИ по большей части потерпел неудачу на коммерческом рынке. Даже те нейронные сети, которые существовали в то время. Если рассматривать этот ИИ как «новые методы разработки программного обеспечения» (с использованием правил, логики, нейронных сетей, сборки мусора и т. Д.) - это тоже не удалось. Многое из этого сегодня даже не используется / не нравится. - person Rainer Joswig; 20.08.2010
comment
Мое впечатление в то время и в ретроспективе было другим: я четко помню возрождение интереса как к исследованиям, так и к рынку (были даже специализированные нейронные процессоры) к субсимвольным методам во второй половине 80-х годов. начало 90-х, после десятилетий остракизма (см. мой ответ, где я упоминаю влияние критики перцептронов Мински и Паперт: stackoverflow.com/questions/683124/neural-networks-obsolete/). - person MaD70; 02.10.2010
comment
Символический ИИ потерпел неудачу, ИМО, из-за оборудования того времени (недостаточно мощного / дешевого) И потому, что такой резкий контраст между символическими и субсимвольными лагерями исключает любую синергию. W.r.t. даже широко используются / нравятся сегодня: я подозреваю, что некоторые из техник, разработанных в ИИ (в обоих лагерях), используются гораздо больше, чем можно подумать (к счастью, больше не раздумывая). - person MaD70; 02.10.2010
comment
Просто пример: в конце 90-х некоторые из моих знакомых спрашивали меня о целесообразности проекта по контролю качества в текстильной сфере. Я сразу же упомянул нейронные сети как многообещающий подход к такой проблеме дискриминации (по сути, классификации изображений). Только с таким предложением через несколько недель они нашли уже разработанное программное обеспечение с использованием нейронных сетей и получили права на его распространение - что намного разумнее, чем начинать проект, связанный с исследованиями и разработками. - person MaD70; 02.10.2010
comment
@ MaD70: действительно ли QA в текстиле с NN и обработкой изображений AI? Несомненно, полезная работа ... - person Rainer Joswig; 20.11.2013
comment
Как Лисп может быть плохим в числовых вычислениях? Очень легко преобразовать S-выражения для компиляции в код Fortran / C в программе на Лиспе. Сборка мусора сегодня намного популярнее, чем когда-то. CSS, SQL, менеджеры зависимостей проекта (make) - это популярные сегодня языки реляционной логики / ограничений, а Excel - популярный язык потока данных. - person aoeu256; 27.07.2019

Одна из причин заключается в том, что он позволяет вам расширять язык конструкциями, специфичными для вашего домена, делая его, по сути, языком, специфичным для предметной области. Этот метод невероятно мощный, поскольку он позволяет вам рассуждать о проблеме, которую вы решаете, а не о перетасовке битов.

person dsm    schedule 25.09.2008
comment
Можете ли вы предоставить или дать ссылку на пример этого? - person DuckMaestro; 25.10.2011
comment
@DuckMaestro: Примерно за 30 минут работы с макросами на этой неделе я реализовал специальную версию SQL Select с ошибками. Это выглядит так: (запрос SELECT * FROM dataset WHERE expr). - person Paul Nathan; 13.11.2011
comment
Встраивание решателя алгебры в Lisp youtube.com/ Внедрение языка схем в Lisp youtube.com/ Встраивание Lisp в Lisp youtube.com/ Встраивание Prolog в Lisp - просто посмотрите всю серию - person aoeu256; 26.09.2019
comment
youtube.com/watch?v=SLcZXbyGC3E ‹- Хороший - person aoeu256; 26.09.2019

Я всегда предполагал, что, будучи функциональным языком, он не делает различий между кодом и данными. Все, включая определения функций и вызовы функций, можно рассматривать как списки и изменять, как любые другие данные.

Так что самоанализирующийся, самомодифицирующийся код можно было бы легко написать.

person aib    schedule 24.09.2008
comment
Это не потому, что это функционально. У Пролога то же свойство - все является термином, а термины - это данные, а также код. (Пролог - это язык логического программирования, который также часто используется для ИИ) - person Hugh Allen; 25.09.2008
comment
Причудливый термин для этого называется гомоиконичность - en.wikipedia.org/wiki/Homoiconicity. - person Morten Jensen; 13.01.2019

Один из возможных ответов заключается в том, что ИИ - это набор очень сложных проблем, а Лисп - хороший язык для решения сложных проблем, а не только ИИ.

Относительно того, почему это так: макросы, универсальные функции и богатый самоанализ позволяют составить краткий код и легко ввести абстракции предметной области - это язык, который вы можете сделать более мощным. Для многих проблем в этом нет необходимости, и это связано с собственными расходами, но для других проблем эта энергия необходима, чтобы хоть как-то продвинуться вперед.

person Rich    schedule 25.09.2008

Думаю, думать об этом только с точки зрения искусственного интеллекта неправильно. Такие вещи, как AI-winter и коммерческие эффекты на обычную шепелявку, отвлекают, если вы спрашиваете, почему он использовался для AI, а не почему он не часто используется сейчас ...

В любом случае, я думаю, это потому, что большая часть кода ИИ была по сути исследовательским. Lisp - отличный язык для исследовательского программирования, для реализации сложных алгоритмов, для самомодифицируемого и часто изменяемого кода. Другими словами, для исследования кода.

Сегодня я использую lisp для некоторых своих исследовательских программ (математика, обработка сигналов), потому что он более гибкий и мощный, чем большинство языков, но при этом генерирует более эффективный код, чем большинство языков. Обычно я могу получить производительность в пределах +/- 2 от, скажем, скорости C ++, но я могу реализовать вещи намного быстрее и справиться со сложностью, которая займет у меня гораздо больше времени, чем если бы я использовал C ++, java, C #.

Хотя это отклоняется от темы. Я думаю, что ИИ-код какое-то время в основном писался на обычном шепелявке, потому что это мощный подход к исследованию кода. Это все еще есть; но по мере того, как алгоритмы «ИИ» стали лучше пониматься и изучаться, некоторые из них стало намного легче преподавать и использовать, поэтому они появлялись на языковых курсах старших курсов. Отсюда возникает вопрос о том, что люди уже знают, какие библиотеки доступны и что хорошо подходит для больших групп.

person simon    schedule 25.09.2008

Я предполагаю, что главной причиной была гибкость списков как базовой структуры данных.

в то время возможность превращать их во всевозможные составные объекты и новые вещи, такие как передача сообщений и полиморфизм, сделала его языком выбора; не специально для ИИ, а для больших и сложных задач. особенно когда они экспериментировали с концепциями.

person Javier    schedule 24.09.2008

Думаю, вы правы: Lisp был удобным инструментом для взлома. Это потому, что он не различает программу и данные. Это позволило хакерам очень легко манипулировать функциями, как и данными.

Но шепелявка довольно сложна для чтения людьми с ее фигурными скобками и отсутствием различия между данными и программой. Сегодня я не буду использовать lisp для какого-либо производственного кода AI (или, возможно, даже для прототипирования), но предпочел бы python для написания сценариев.

Еще одна вещь, которую следует учитывать, - это существующие библиотеки / инструменты в /, связанные с языком. Я не в состоянии сравнивать библиотеки lisp с библиотеками python, но полагаю, что библиотеки и открытый исходный код сейчас имеют гораздо большее значение, чем раньше.

Этот ответ основан на следующем сравнении Lisp и Python: http://amitp.blogspot.com/2007/04/lisp-vs-python-syntax.html

person amit    schedule 25.09.2008
comment
Лично я считаю, что Lisp легче читать, чем большинство языков, и я выучил его всего несколько недель назад. Да, Python особенно чист по сравнению с большинством языков, но если вы сравните lisp с чем-то вроде C ++, он станет намного чище и легче для чтения. Во всяком случае, по моему опыту. - person Zeusoflightning125; 24.07.2014

Я помню, как слышал, что, будучи функциональным языком, Lisp был очень хорошим выбором для реализации рекурсивных алгоритмов. Возможность отследить дерево и вернуться назад очень важна при рассмотрении процессов принятия решений (обход) и конечного результата (листовой узел).

Об этом мне сказали во время курса искусственного интеллекта в университете, где мы изучали Лисп.

person mlambie    schedule 25.09.2008
comment
Макросы в Lisp более мощные, чем что-либо еще, позволяя вам реализовать ООП всего в 50 строках кода Lisp, а REPL позволяет вам редактировать вашу программу, пока она все еще работает ... Только Lisp может легко редактировать свой собственный исходный код ... - person aoeu256; 26.09.2019

Более циничный ответ мог бы быть: «потому что он проиграл политическую войну ИИ между Японией и США в 1980-х». В блоге есть забавная запись о влиянии пятого поколения Гибель компьютерной системы на Прологе.

person Anon    schedule 10.07.2011