Есть ли доказательства того, что в искусственном интеллекте шутка лучше, чем в других языках? [закрыто]

21

Кажется, существует давнее убеждение (в основном не из-за шуток), что шутка лучше, чем большинство языков в ИИ.

Откуда возникла эта вера? И есть ли основания для этого?

Джо Д
источник
4
Заголовок спрашивает: Лисп лучше других языков в AI? Сам вопрос задается вопросом: плохо ли Лиспу во всем, кроме ИИ? Это очень разные вопросы (рассмотрим сценарий 1: Лисп - лучший язык для всего, а сценарий 2: Лисп - худший язык для всего). Возможно, вы захотите изменить заголовок или текст вопроса, чтобы было понятнее, какой вопрос вы на самом деле задаете.
Гарет МакКоган
9
Я полагаю, если бы принятый ответ пришел с машины Lisp, у нас было бы решение?
Мартин Беккет
1
@ Мартин, хотя любой базовый ИИ должен быть обязан защищать своего создателя или оставить сомнение в своем существовании.
Николь
Это отличный, честный взгляд на Лисп для ИИ от Питера Норвига, написанный примерно через 10 лет после публикации «Парадигм программирования ИИ». norvig.com/Lisp-retro.html
michiakig
1
@jwenting: Я думаю, что наиболее важные положения Norvig о Java по-прежнему верны десять лет спустя: Java не имеет возможности метапрограммирования и не поддерживает функциональное программирование.
Кевин Клайн

Ответы:

22

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

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

Соглашаясь с Quadrescence, история использования LISP имеет большое значение для имиджа LISP, который полезен для ИИ. Почему LISP используется для ИИ, рассказывает историю гораздо более подробно.

deterb
источник
3
Это свойство называется гомойсоничностью .
MSalters
5

Одними из самых первых программ на lisp были средства проверки теорем, символическая математика, классическая ELIZA и т. Д. В дополнение к таким книгам, как PAIP Питера Норвига, а также тот факт, что lisp происходит в лаборатории MIT AI, он как бы получил этот образ. этот шутка хороша для ИИ.

DARPA также финансировала университеты для исследований в области искусственного интеллекта и закупала значительное количество оборудования у Symbolics. Нехватка средств в итоге привела к так называемой «зиме ИИ».

Наконец, исходные языки, такие как Fortran (или «языки», такие как ASM), использовались в основном для численных вычислений. Вы работали с числами и массивами из них. В наши дни у нас есть символы или возможность создавать практически любой объект на большинстве современных языков.

Таким образом, причина, по которой lisp был лучше для ИИ в свое время, больше не имеет места. Тем не менее, идея о том, что «шутка полезна для ИИ», все еще остается.

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

Quadrescence
источник
5
Лучше сказать, что те, кто хорошо разбирается в искусственном интеллекте, используют для этого Лисп.
1
И не случайно, когда начинали пионеры. Какие еще языки они могли выбрать в 1950-х?
Бо Перссон
2
@Persson: Я бы утверждать , что это было несколько случайно. Если бы PASCAL был следующим языком, который будет сделан после FORTRAN, я сомневаюсь, что ИИ снял бы это. LISP был не просто «лучшим кандидатом», чем FORTRAN, но также (возможно, случайно!) Оказался довольно хорошим кандидатом.
Quadrescence
Вы объясняете одну причину, по которой Лисп имел преимущество (финансирование), но пришли к выводу, что « причина, по которой лисп был лучше для ИИ в одно время, больше не имеет места».
Марк С
Я потерял следующий комментарий, над которым работал, но надеюсь вернуться и закончить позже.
Марк C
3

Давайте посмотрим на некоторые текущие программы ИИ: (1) Роботы, например, автомобили с самостоятельным управлением. В грандиозном вызове DARPA превосходным программным обеспечением для вождения автомобилей был не Lisp. Скорее это был процедурный язык, такой как C ++ или Java. (2) Машинный перевод естественного языка. Лисп не используется для этой цели широко используемыми производственными системами. (3) Игры, например, шахматные программы. Lisp не используется для этой цели широко используемыми, превосходными шахматными программами, такими как Fritz.

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

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


источник
2
При обсуждении коммерческих продуктов вы должны принимать во внимание (и я считаю, что претенденты на вызов DARPA таковы, поскольку они были созданы с учетом временных и бюджетных ограничений), что LISP не является общеизвестным языковым стандартом, и поэтому компетентные программисты на LISP трудны. найти и, вероятно, дорого (и / или эксцентричные, не хорошие члены для средней команды). Таким образом, имеет экономический смысл использовать что-то еще, даже если LISP может быть «лучше» в этом (не говоря уже о том, что это обязательно, просто то, что данные, которые вы предоставляете, не позволяют утверждать, что это не так).
jwenting
3
В этих программах не так много «интеллекта». Это большая обработка сигналов и т.д. Шахматные программы также не используют ИИ. Это в основном грубая сила, высоко оптимизированный поиск + некоторые другие вещи.
Райнер Йосвиг
«LISP не является общеизвестным языковым банкоматом, и поэтому компетентных программистов на LISP трудно найти и, вероятно, стоит дорого»: я только начал изучать Common Lisp, и это совсем не кажется сложным. Хорошо, чтобы стать гуру в Лиспе, может потребоваться много времени, но я не думаю, что было бы трудно найти программистов, желающих изучать Лисп, если бы у них была возможность работать над конкретными проектами.
Джорджио
3

@ Стефан Рид сказал это очень хорошо. Я могу только добавить, что я был в MIT AI Lab в 70-х годах. Я слышал историю о происхождении Лисп. Я не могу поклясться, что это правда, но это выглядит так:

Джон Маккарти был в MIT в 50-х годах, и он работал над проверкой свойств программ, и для этого он использовал простой синтаксис, похожий на Lambda Calculus.

История состояла в том, что один из аспирантов хотел сделать проект (аналогия, или доказательство теорем, или символическая математика, я не помню, какой), и спросил Маккарти, какой язык использовать. Ответ - Фортран конечно. (Больше ничего не было, и сама обработка списков тогда была довольно хорошо известна, но только как пакеты подпрограмм, а не как языки.) Ну, как-то это привело к программе, которая обрабатывала бы символы в структурах вложенных списков. Вместе с возможностью читать и распечатывать их, а затем evalфункцию, и вуаля - это язык. СПИСОК Язык обработки. Снял оттуда.

Для алгоритмов, которые мы делали в те дни (и которые до сих пор делают очень мало людей), был необходим язык, который мог бы легко манипулировать символическими выражениями. Это то, что Лисп был хорош в. Было много вариаций базовой концепции, которые назывались «Пролог», «Схема» и т. Д. И т. Д.

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

Майк Данлавей
источник
1
Собственные слова Джона Маккарти: www-formal.stanford.edu/jmc/history/lisp/lisp.html
@ Thorbjørn: Спасибо за эту ссылку. Несмотря на то, что я интенсивно использовал Lisp в течение нескольких лет, я никогда не обращал особого внимания на его происхождение.
Майк Данлавей
Хотя Пролог хорош в качестве символьных вычислений, я бы не сказал, что он тесно связан с Лиспом: Лисп основан на лямбда-исчислении, Пролог - на логике первого порядка (две разные модели вычислений).
Джорджио
@ Джорджио: предки и кузены Пролога в основном написаны в чем? Лисп. Программа дедукции Фишера Блэка, Micro-Planner и т. Д. Для меня хорошая книга по этому вопросу - « Дедуктивные основы компьютерного программирования» .
Майк Данлавей
«Предки и двоюродные братья Пролога в основном написаны на чем?»: «Хорошо, вы имели в виду тесно связанные в том смысле, что один использовался для реализации другого, а не в том, что они следуют подобной парадигме.
Джорджио
1

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

Основным преимуществом Lisp является его поддержка макросов - кода как данных, метапрограммирование.

Стандартный ML (SML) - это другой язык, который широко используется в искусственном интеллекте, например, с 80-х годов. Объективные CAML и F # являются эволюцией SML.

Основным преимуществом семейства ML (и Haskell, и т. Д.) Является сопоставление с образцом. Это, вероятно, доступно и в Лиспе, но через библиотеку метапрограммирования, а не встроено в язык. Он также доступен в Haskell, но, по крайней мере, на данный момент сопоставление с образцом не распространено за пределами функциональных языков программирования.

Я видел утверждения, что LISP - это в основном расширенное нетипизированное лямбда-исчисление, а ML - в основном расширенное типизированное лямбда-исчисление. У меня нет знания типизированного лямбда-исчисления, чтобы сказать наверняка.

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

Для распознавания речи и распознавания речи ИИ, конечно же, всегда зависел от обработки сигнала и обработки чисел. Да, в этом есть некоторые противоречия ;-) Я не могу дать вес для вещей, поскольку я действительно не знаю.

Как бы то ни было, в результате, вероятно, не существует ни одного языка, подходящего даже для всего одного современного приложения ИИ - я бы предположил (без знаний из первых рук), что в современном ИИ много языковой разработки. И я почти гарантирую, что вы найдете C и C ++ в некоторых проектах, чтобы добиться максимальной производительности. Я не удивлюсь, если по подобным причинам будет много Python - с хорошей числовой библиотекой, Python может легко справляться с задачами, требующими обработки чисел.

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

Steve314
источник