Недавний язык программирования для ИИ? [закрыто]

15

В течение нескольких десятилетий языком программирования для AI был Prolog или LISP , и еще несколько других, которые не были так хорошо известны . Большинство из них были разработаны до 70-х годов.

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

Существуют ли в последнее время языки программирования, предназначенные для изменения игры в ИИ и изучения недостатков прежних языков?

Эдуард Флоринеску
источник
1
Octave - хороший язык для машинного обучения, если вас интересует эта ветвь ИИ.
Сетзамора
Рассмотрим также подход метапрограммирования (т.е. генерацию программ). Загляните в блог Дж. Питрата . Тогда язык, который вы генерируете, может не иметь большого значения, это может быть даже C.
Василий Старынкевич

Ответы:

23

Курс искусственного интеллекта, в котором я принимал участие онлайн, преподавал в Стэнфорде, рекомендовал использовать Python для домашней работы. Я считаю, что Georgia Tech по-прежнему использует LISP.

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

Таким образом, менее важно, что основная область изменилась, чем она была преобразована в массив связанных дисциплин. Это все равно, что сказать «Научные вычисления» и ожидать, что это просто означает решение линейных уравнений.

Языки, которые вы упомянули, довольно сильно эволюционировали за последние 20 или 30 лет. Лисп породил Common Lisp и Clojure. Пролог породил Visual Prolog (в нем есть объекты ...) и Меркурий (возьмите Haskell и Prolog, заприте их в комнате вместе ... встаньте далеко и приготовьтесь бежать).

Учитывая, что исследование ИИ является более теоретическим, имеет смысл, что оно будет сосредоточено на теории (математика), а не на практических аспектах (языки).

При всем этом, самый большой новатор в области технологий искусственного интеллекта, на который я готов поставить, - это Google. Они предпочитают Python (и Go, и Dart, но это не относится к делу). Таким образом, я бы сказал, что Python - «недавний язык выбора», но вы также можете использовать Haskell, OCaml, F #, C # или даже Java.

Мировой инженер
источник
+1 За упоминание Меркурия.
Гай Кодер
8

Вы можете найти ответы на свои вопросы в недавнем специальном выпуске «Sprachen der KI» («Языки ИИ») немецкого журнала AI, KI - Künstliche Intelligenz , том 26, номер 1 / февраль 2012 года, опубликованном Springer. Я являюсь соавтором одной части документа для обсуждения, включенного в него: «Какой язык вы используете для создания своих программ ИИ и почему?» Вот его препринт: http://ai.cs.unibas.ch /papers/schmid-et-al-kijournal2012.pdf

Таким образом, некоторые исследователи искусственного интеллекта все еще клянутся в классических языках искусственного интеллекта Lisp и Prolog. Другие используют основные языки, такие как C ++, Java или Python. Третьим нравится изучать новые эзотерические языки программирования.

Я считаю, что в искусственном интеллекте нет ничего особенного, что требовало бы специальных языков программирования. В общем, исследователи хотят, чтобы языки программирования позволяли быстро создавать прототипы. Это то, для чего подходят старые языки AI (Lisp, Prolog) и более новые языки «сценариев» (Perl, Python, Ruby или последние языки JVM, такие как Clojure).

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

Возвращаясь к вашему последнему вопросу, все важные разработки в новых языках ИИ, о которых я знаю, вдохновлены программированием на основе ограничений. Некоторые вошли в реализации Пролога, такие как SICStus и SWI, другие породили языки, подобные Прологу, такие как Меркурий и Моцарт / Оз. Конечно, могут быть значительные новые события, о которых я не знаю.

Кристиан Питч
источник
2

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

Я работал с этой технологией в течение многих лет, и в настоящее время я работаю с Proof Assistants и преобразовываю некоторый код из OCaml в F #. Достигает ИИ не язык, а конкретные алгоритмы, реализованные в языке. Для PROLOG это механизм вывода, основанный на унификации . Теперь, если вы начнете с объединения и посмотрите, как оно было адаптировано и улучшено за эти годы, я думаю, вы найдете прогресс, которого вы добиваетесь. Не сосредотачивайтесь на языке, сосредоточьтесь на алгоритмах.

В качестве примера, вывод типов в функциональных языках использует Хиндли – Милнера, который основан на унификации.

Другой пример, относящийся к ассистенту доказательства, здесь , обратите внимание на prolog.ml. Механизм вывода для пролога реализован в OCaml и переводится на F #. Таким образом, хотя OCaml и F # обычно не обозначаются как языки AI, они полностью способны реализовать алгоритмы AI.

Гай Кодер
источник
Я должен сказать, что это именно то, что я думаю об этом вопросе: алгоритмы более важны, чем язык, который вы используете для их написания, поэтому каждая книга ИИ, которую я читал, настаивала на предоставлении псевдокода для алгоритмов.
JJP
1

Я бы сказал, это зависит от того, что вы подразумеваете под ИИ. Машинное обучение в целом пережило некоторую быструю эволюцию инструментария, поэтому ряд алгоритмов для классификации, кластеризации и других форм контролируемого и неконтролируемого обучения, особенно с вероятностными графическими моделями, был реализован в Python, C #, Ruby, OCaml и Ява, просто чтобы назвать несколько.

Если вы выполняете крупномасштабные манипуляции с данными для создания таких вещей, как механизмы рекомендаций, совместная фильтрация или другие неконтролируемые или контролируемые проблемы в обучении, вы можете взглянуть на Mahout . На самом деле это не «язык программирования», а набор инструментов для решения подобных задач. Вы можете написать код модели на Java или на других языках JVM, таких как groovy (динамический, достаточно выразительный язык) или clojure (lisp-like).

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

Конечно, методы машинного обучения в целом движутся к вероятностным моделям, а не к бинарной логике, подходу в стиле дерева решений, с которого начинались большинство ранних попыток ИИ, поэтому можно утверждать, что машинное обучение - это ветвь или отклонение от большой палатки. AI.

JasonTrue
источник
0

Языком выбора для AI, который я использовал несколько лет назад, был Prolog, имеющий версию Visual Prolog, которая шла с IDE, как в Delphi.

Пролог (и его графическая версия Visual Prolog) - это язык логического программирования общего назначения, связанный с искусственным интеллектом и компьютерной лингвистикой.

Однако недавняя тенденция показывает, что любой язык ООП, такой как C #, Java, Python, Haskell и т. Д., Становится программируемым для приложений ИИ.

Юсубы
источник
3
С каких это пор Haskell ООП?
Андреа
Вы можете подражать ООП в Хаскеле, верно?
Юсубов
1
вы можете эмулировать его на любом языке, но это не значит, что вы обычно рассматриваете любой язык как OO
jk.