Чи є докази того, що лісп насправді кращий за інші мови при штучному інтелекті? [зачинено]


21

Здається, існує давнє переконання (головним чином, що не стосується листів), що Lisp кращий, ніж більшість мов на AI.

Звідки виникла ця віра? І чи є в цьому насправді якась основа?


4
У заголовку запитується: чи Ліпп кращий за інші мови в AI ?. Саме запитання задає: Чи погано Лісп у всьому, крім ШІ? Це дуже різні питання (розглянемо сценарій 1: Lisp - найкраща мова для всього, а сценарій 2: Lisp - найгірша мова для всього). Ви можете відредагувати заголовок або частину питання, щоб зрозуміти, яке питання ви насправді задаєте.
Гарет Маккоган

9
Я гадаю, якби прийнята відповідь надійшла від машини Lisp, у нас було б рішення?
Мартін Бекетт

1
@Martin, хоча будь-який основний ШІ повинен бути зобов'язаний захищати свого творця або залишати сумніви у власному існуванні.
Ніколь

Це чудовий, чесний погляд на Лісп для ШІ від Пітера Норвіга, написаний через 10 років після публікації Парадигм програмування AI. norvig.com/Lisp-retro.html
michiakig

1
@jwenting: Я думаю, що найважливіші моменти Норвіга щодо Java все ж таки справжні десять років потому: у Java немає метапрограмування та не підтримує функціональне програмування.
Кевін Клайн

Відповіді:


22

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

Інший аспект, який входить у цю проблему, хоча і не так багато, - це здатність LISP легко додавати нову мовну семантику за допомогою макросів. Це дає можливість реально зайти і визначити DSL, з яким працює ваш AI і може розвиватися, з можливістю розростання, самокорегування та еволюціонування цієї мови під час роботи AI.

Погоджуючись з Квадресценцією, історія використання LISP має великий шлях до образу LISP, що це добре для ШІ. Чому LISP використовується для AI, висвітлює історію набагато детальніше.


3
Ця властивість називається Bomo на гомоїконічність .
MSalters

5

Деякі з найперших програм у Lisp були доказовими для теореми, символічної математики, класичної ELIZA тощо. Окрім таких книг, як PAIP Пітера Норвіга, а також того, що lisp бере свій початок у лабораторії MIT AI, він начебто отримав таке зображення цей ліс хороший для ШІ.

DARPA також фінансувала університети на дослідження в галузі AI, і придбала значну кількість апаратних засобів у Symbolics. Нестача коштів врешті-решт призвела до так званої «AI зими».

Нарешті, оригінальні мови, такі як Fortran (або "мови", такі як ASM), використовувались як основні для чисельних обчислень. Ви працювали з числами та масивами їх. У наші дні у нас є символи чи можливість створити майже будь-який об’єкт, який ми хотіли, на більшості сучасних мов.

Отже, причина того, що ліс був кращим для AI свого часу, це вже не так. Однак думка про те, що "lisp - це добре для ШІ", все ще затрималася.

Незалежно від того, чи ні ліпс є кращою мовою через свої особливості та структуру, це зовсім інший випадок (оскільки насправді така штука стосується багатьох інших областей, ніж просто AI, і, як правило, призведе до вогню старої полум'я).


5
Кращим способом можна сказати, що добрі в AI випадково використовували для цього Lisp.

1
І це було не випадково, коли піонери стартували. Які ще мови вони могли вибрати у 1950-х роках?
Бо Персон

2
@Persson: Я б стверджував, що це було дещо випадково. Якби PASCAL була наступною мовою після FORTRAN, я маю сумніви, що AI зняв би це. ЛІСП був не просто «кращим кандидатом», ніж FORTRAN, але й випадково (можливо, випадково!) Був досить хорошим кандидатом.
Квадресценція

Ви пояснити одну з причин , чому Лисп мав перевагу (фінансування) , але прийшов до висновку , що « причина шепелявість була краще ІІ свого часу вже не так.»
Марк C

Я втратив наступний коментар, над яким працював, але сподіваюся, що повернусь і закінчу пізніше.
Марк C

3

Давайте розглянемо деякі з поточних програм AI: (1) Роботи, наприклад, автомобілі з самостійним керуванням. У великому виклику DARPA найвищим програмним забезпеченням для управління автомобілем був не Lisp. Скоріше це була процедурна мова, така як C ++ або Java. (2) Машинний переклад природної мови. Lisp не використовується для цієї мети широко використовуваними виробничими системами. (3) Ігрові ігри, наприклад, шахові програми. Лісп для цієї мети не використовується широко використовуваними, вищими шаховими програмами, такими як Фріц.

Лісп був винайдений і розроблений американськими лабораторіями AI в 1960-х роках, щоб швидко прототипувати символічні логічні програми, в яких рідні структури даних Lisp відповідають рівню необхідної символічної абстракції - наприклад, англійські слова можуть бути символами в списку, а логічні формули можуть бути легко представлені у вигляді списків операторів та операндів.

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


2
Вам потрібно брати до уваги, обговорюючи комерційні товари (і я вважаю, що претенденти на виклик DARPA є такими, оскільки вони були створені під час та бюджетні обмеження), що LISP не є загальновідомою мовою, і тому компетентні програмісти LISP важкі знайти і, ймовірно, дорого (і / або ексцентрики, не хороші члени для середньої команди). Таким чином, є економічним сенсом використовувати щось інше, навіть якщо LISP може бути "кращим" у цьому (не кажучи, що це є необхідним, лише те, що представлені вами дані є непереконливими, стверджуючи, що це не так).
jwenting

3
У цих програмах не так багато "інтелекту". Це багато обробки сигналів і т. Д. Шахові програми також не використовують AI. Це в основному груба сила, високо оптимізований пошук + деякі інші речі.
Rainer Joswig

"LISP не є загальновідомою мовою, і тому компетентних програмістів LISP важко знайти і, ймовірно, дорого": я тільки почав вивчати Common Lisp, і це зовсім не здається складним. Гаразд, щоб стати гуру Ліспа, це може зайняти тривалий час, але я не думаю, що було б важко знайти програмістів, які бажають навчитися Ліспу, якби їм дали можливість працювати над конкретними проектами.
Джорджіо

3

@Stephen Reed це дуже добре сказав. Можу лише додати, що я був у лабораторії MIT AI у 70-х. Тоді я почув історію про походження Ліспа. Я не можу присягнути, що це правда, але це виглядає так:

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

Історія полягала в тому, що один із студентів студенти хотів зробити проект (аналогія, доказ теореми, або символічна математика, я не пам'ятаю, яку) і запитав Маккарті, якою мовою користуватися. Відповідь - Фортран звичайно. (Іншого не було багато, і сама обробка списку була досить відома тоді, але тільки як пакети підпрограми, а не як мови.) Ну, якимось чином це призвело до програми, яка обробляла символи в вкладених структурах списку. Разом із способом їх читання та друку, а потім evalфункцією, а Voila '- мовою. LISt Мова обробки. Це злетіло звідти.

Для того, який алгоритм ми робили в ті часи (а це ще мало хто робить), потрібна була мова, яка могла б легко маніпулювати символічними виразами. У цьому Ліпп був добрий. В основному понятті було багато варіантів, ідучи за різними назвами, як-от Prolog, Scheme тощо.

Таким чином, AI означає багато речей для багатьох людей, і різні мови корисні для різних речей, але для проблем, які можна було б охарактеризувати як маніпуляції символами, важко знайти корисну мову, яка якось не походить від Lisp.


1
Власні слова Джона Маккарті: www-formal.stanford.edu/jmc/history/lisp/lisp.html

@ Thorbjørn: Дякую за це посилання. Незважаючи на те, що я використовував Лісп протягом багатьох років, я ніколи не приділяв великої уваги його генезу.
Майк Данлаве

Незважаючи на те, що Prolog хороший як символічні обчислення, я б не сказав, що він тісно пов'язаний з Lisp: Lisp заснований на обчисленні лямбда, Prolog на логіці першого порядку (дві різні моделі обчислення).
Джорджіо

@ Джорджіо: Предки та двоюрідні брати Пролога в основному написані в чому? Лісп. Програма дебютації Фішера Блека, Micro-Planner тощо. Для мене хороша книга про це - Дедуктивні основи комп’ютерного програмування .
Майк Данлаве

"Предки і двоюрідні брати Пролога в основному написані в чому?": Ну гаразд, ви мали на увазі тісно споріднені в тому сенсі, що один був використаний для реалізації іншого, а не те, що вони слідують подібній парадигмі.
Джорджіо

1

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

Головною перевагою Lisp є підтримка макросів - коду як даних, метапрограмування.

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

Основна перевага сімейства ML (і Haskell, тощо) - відповідність шаблонів. Можливо, це також доступно і в Lisp, але через бібліотеку метапрограмування, а не вбудовану в мову. Він також доступний у Haskell, але, принаймні, відповідність шаблонів не є звичайною поза функціональними мовами програмування.

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

AI також став набагато більш широким предметом з роками - до того, що майже повністю зник. Видобуток даних можна вважати одним підполем ШІ. Багато речей AI (OCR, розпізнавання виступу) майже не перестали бути AI - вони просто додатки, як і будь-які інші. І AI набагато більше залежить від обробки сигналів та інших видів хрускоту чисел, ніж це було раніше.

Для розпізнавання OCR та розмовляння AI завжди залежав від обробки сигналу та кількості хрускоту. Так, в цьому є деякі суперечності ;-) Я не можу дати ваги для речей, як я насправді не знаю.

У будь-якому випадку, мабуть, не існує єдиної мови, яка підходить навіть для всього сучасного додатка AI - я б здогадався (немає знань з перших вуст), що в сучасному ШІ існує багатомовна розробка. І я майже можу гарантувати, що ви знайдете C і C ++ в деяких проектах, щоб отримати ефективність скорочення кількості. Я не був би здивований, якщо є багато Python з подібних причин - завдяки хорошій чисельній бібліотеці Python може легко впоратися із завданнями по стисненню чисел.

В одному з таких автомобілів, що керують самостійно, я уявляю, що система бачення написана іншою мовою (і працює на іншому обладнання) до системи планування маршруту.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.