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

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

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

>… Пожалуйста, не думайте, что Lisp полезен только для анимации и графики,> искусственного интеллекта, биоинформатики, B2B и электронной коммерции, интеллектуального анализа данных, EDA / полупроводников> приложений, экспертных систем, финансов, интеллектуальных агентов, знаний> управления, механического САПР , Моделирование и имитация, Естественный язык,> Оптимизация, Исследования, Анализ рисков, Планирование, Телекоммуникации и Интернет> Создание, просто потому, что это единственное, что они> перечислили. - Кент Питман

Avi 25.09.2008 10:28

Я не думал, что Лисп полезен только для ИИ, мне просто интересно, почему он для этого используется.

Cristián Romo 25.09.2008 21:42

Я бы перефразировал вопрос так: «Какие особенности языка необходимы для жесткого ИИ?» Это правильный и полезный вопрос, и в результате только Lisp Forth и ассемблер имеют то, что нужно для создания жесткого ИИ.

Albert van der Horst 17.02.2014 17:23
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
188
3
83 521
10
Перейти к ответу Данный вопрос помечен как решенный

Ответы 10

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

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

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

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

Это не потому, что это функционально. У Prolog есть то же свойство - все является «термином», а термины - это данные, а также код. (Пролог - это язык логического программирования, который также часто используется для ИИ)

Hugh Allen 25.09.2008 03:25

Причудливый термин для этого называется гомоиконность - en.wikipedia.org/wiki/Homoiconicity.

Morten Jensen 13.01.2019 18:43

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

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

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

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

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

Zeusoflightning125 24.07.2014 01:24
Ответ принят как подходящий

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

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

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

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

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

Lisp определенно все еще жив и здоров в мире машинного обучения / ILP.

HasaniH 20.07.2009 19:15

У меня был курс бакалавриата по искусственному интеллекту, преподаваемый на языке С. У меня был курс повышения квалификации по искусственному интеллекту, который читался по книге Норвига. Книга на языке C посвящена алгоритмам и структурам ИИ. Книга Норвига была такой: «Давайте изучим LISP, пока мы читаем об истории искусственного интеллекта». На мой взгляд, полнейшая трата времени.

San Jacinto 23.05.2010 02:42

Одна из причин, по которой все, кажется, упускают из виду, заключается в том, что Джон Маккарти написал Лисп и был очень влиятельным компьютерным ученым, особенно в области ИИ. Естественно, большая часть его работы была реализована на Лиспе, и таким образом Лисп закрепился.

cha0site 09.04.2012 22:30

Common Lisp никогда не задумывался как язык ИИ, он был создан для использования в промышленности. Для исследования обычно используется Схема. И никогда, никогда не судите язык по его возрасту - он просто не пропорционален крутости, и наоборот. C старый, но крутой, так почему возраст Лиспа имеет значение?

Luka Ramishvili 17.05.2012 23:51

Не знаю, верно ли, что Lisp БЫЛ использовался для ИИ до конца 1980-х годов. В 2016 году MIT останется довольно известным учреждением в области искусственного интеллекта. Рекомендуемый учебник для курса робототехники MIT - Artificial Intelligence by Patrick Henry Winston. Ко 2-му изданию главы этой книги по программированию разветвились в отдельную синхронизированную книгу - Lisp. Как следует из названия, программирование в Lisp - полностью. people.csail.mit.edu/phw/Books/LISPBACK.HTML

Hack-R 15.01.2016 17:40

Lisp породил Python, породивший Tensorflow. :)

Will Ness 17.02.2018 21:38

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

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

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

Можете ли вы предоставить или дать ссылку на пример этого?

DuckMaestro 25.10.2011 05:38

@DuckMaestro: Примерно за 30 минут работы с макросами на этой неделе я реализовал специальную версию SQL Select с ошибками. Это выглядит так: (запрос SELECT * FROM dataset WHERE expr).

Paul Nathan 13.11.2011 00:08

Встраивание решателя алгебры в Лисп youtube.com/… Встраивание языка схем в Лисп youtube.com/… Встраивание Лиспа в Лисп youtube.com/… Встраивание Пролога в Лисп - просто посмотрите всю серию

aoeu256 26.09.2019 02:13
youtube.com/watch?v=SLcZXbyGC3E <- This one is good
aoeu256 26.09.2019 02:24

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

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

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

aoeu256 26.09.2019 01:56

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

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

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

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

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

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

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

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

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

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

Да, исторически искусственный интеллект был больше связан с символическими вычислениями, чем с чем-либо еще. «AI зима» в 80-х годах, вероятно, был скорее кризисом символический AI - в то время произошло возрождение интереса к субсимвольным методам (нейронные сети, машинное обучение и т. д.). Реализации Лиспа обычно были довольно слабыми в числовых вычислениях. Я не знаю, улучшились ли они на этом фронте.

MaD70 17.10.2009 06:13

@ MaD70: зима 80-х, посвященная ИИ, была посвящена ИИ в целом. Военные приостановили большую часть финансирования, и ИИ в основном потерпел неудачу на коммерческом рынке. Даже те нейронные сети, которые существовали в то время. Если рассматривать этот ИИ как «новые методы разработки программного обеспечения» (с использованием правил, логики, нейронных сетей, сборки мусора и т. д.) - это тоже не удалось. Многое из этого даже не используется / не нравится сегодня.

Rainer Joswig 20.08.2010 12:40

Мое впечатление в то время и в ретроспективе было другим: я четко помню возрождение интереса как к исследованиям, так и к рынку (были даже специализированные нейронные процессоры) к субсимволическим методам во второй половине 80-х. начало 90-х, после десятилетий остракизма (см. мой ответ, где я упоминаю влияние критики перцептронов Мински и Паперта: stackoverflow.com/questions/683124/neural-networks-obsolete/‌…).

MaD70 02.10.2010 16:43

Символический ИИ потерпел неудачу, ИМО, из-за оборудования того времени (недостаточно мощного / дешевого) И потому, что такой резкий контраст между символическими и субсимвольными лагерями исключил любую синергию. W.r.t. «даже широко используются / нравятся сегодня»: я подозреваю, что некоторые из техник, разработанных в ИИ (в обоих лагерях), используются гораздо больше, чем можно подумать (к счастью, не больше раздумывая).

MaD70 02.10.2010 16:43

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

MaD70 02.10.2010 16:44

@ MaD70: действительно ли QA в текстиле с NN и обработкой изображений AI? Несомненно, полезная работа ...

Rainer Joswig 20.11.2013 14:04

Как Лисп может плохо справляться с числовыми вычислениями? Очень легко преобразовать S-выражения для компиляции в код Fortran / C в программе на Лиспе. Сборка мусора сегодня намного популярнее, чем когда-то. CSS, SQL, менеджеры зависимостей проекта (make) - это популярные сегодня языки реляционной логики / ограничений, а Excel - популярный язык потока данных.

aoeu256 27.07.2019 23:16

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

Другие вопросы по теме