Gibt es Hinweise darauf, dass Lispel bei künstlicher Intelligenz tatsächlich besser ist als andere Sprachen? [geschlossen]

21

Es scheint eine lange Überzeugung zu geben (hauptsächlich von Nicht-Lispern), dass Lispeln besser ist als die meisten Sprachen bei AI.

Woher stammt dieser Glaube? Und gibt es tatsächlich eine Grundlage dafür?

Joe D
quelle
4
Der Titel fragt: Ist Lisp besser als andere Sprachen bei AI ?. Die Frage selbst lautet: Ist Lisp schlecht in allem anderen als AI? Dies sind sehr unterschiedliche Fragen (siehe Szenario 1: Lisp ist die beste Sprache für alles und Szenario 2: Lisp ist die schlechteste Sprache für alles). Möglicherweise möchten Sie entweder den Titel oder den Text der Frage bearbeiten, um zu verdeutlichen, welche Frage Sie tatsächlich stellen.
Gareth McCaughan
9
Ich nehme an, wenn die akzeptierte Antwort von einer Lisp-Maschine kommt, hätten wir die Lösung?
Martin Beckett
1
@Martin, obwohl jede grundlegende KI verpflichtet sein sollte, ihren Schöpfer zu verteidigen oder ihre eigene Existenz anzuzweifeln.
Nicole
Dies ist ein großartiger, ehrlicher Blick auf Lisp für KI von Peter Norvig, der ungefähr 10 Jahre nach der Veröffentlichung von Paradigms of AI Programming geschrieben wurde. norvig.com/Lisp-retro.html
michiakig
1
@jwenting: Ich denke, dass die wichtigsten Punkte von Norvig in Bezug auf Java auch nach zehn Jahren noch zutreffen: Java verfügt über keine Metaprogrammierfunktion und unterstützt keine funktionale Programmierung.
Kevin Cline

Antworten:

22

Einer der Hauptunterschiede zwischen LISP-ähnlichen Sprachen und anderen Sprachen besteht darin, dass Code und Daten in LISPs dasselbe sind. Auf diese Weise kann ein Programm beispielsweise einige seiner Algorithmen zur Laufzeit ändern, wenn es als nativer Teil der Sprache neue Dinge "lernt".

Ein weiterer, wenn auch nicht so wichtiger Aspekt ist die Fähigkeit von LISP, neue Sprachsemantiken einfach über Makros hinzuzufügen. Auf diese Weise können Sie eine DSL definieren, mit der Ihre KI arbeitet und in der sie sich entwickeln kann. Diese Sprache kann wachsen, sich selbst korrigieren und sich entwickeln, während die KI ausgeführt wird.

In Übereinstimmung mit Quadrescence trägt die Nutzungsgeschichte von LISP wesentlich zum Image von LISP bei, das für die KI gut ist. Warum LISP für AI verwendet wird , umfasst die Geschichte viel detaillierter.

Abschreck
quelle
3
Diese Eigenschaft wird als Homoiconicity BTW bezeichnet.
MSalters
5

Einige der allerersten Programme in lisp waren Theoremprüfer, symbolische Mathematik, der Klassiker ELIZA usw. Zusätzlich zu Büchern wie Peter Norvigs PAIP und der Tatsache, dass lisp aus dem MIT AI-Labor stammt, hat es dieses Bild erhalten Dieses Lispeln ist gut für die KI.

DARPA finanzierte auch Universitäten für die AI-Forschung und kaufte bedeutende Mengen an Hardware von Symbolics. Der Geldmangel führte schließlich zum sogenannten "AI-Winter".

Schließlich wurden die ursprünglichen Sprachen wie Fortran (oder "Sprachen" wie ASM) primär für das numerische Rechnen verwendet. Sie haben mit Zahlen und Arrays von ihnen gearbeitet. Heutzutage haben wir Symbole oder die Möglichkeit, fast jedes gewünschte Objekt in den meisten modernen Sprachen zu erstellen.

Daher ist der Grund, warum Lispeln für die KI auf einmal besser war, nicht mehr der Fall. Die Idee, dass "Lispeln gut für die KI ist", ist jedoch nach wie vor ungebrochen.

Ob lisp aufgrund seiner Merkmale und seiner Struktur eine bessere Sprache ist oder nicht, ist ein ganz anderer Fall (da dies in Wirklichkeit für viele andere Bereiche als nur die KI gilt und normalerweise zu einem alten Flammenkrieg führen wird).

Quadreszenz
quelle
5
Ein besserer Weg, es auszudrücken, könnte sein, dass diejenigen, die gut mit AI umgehen, Lisp dafür verwenden.
1
Und es war kein Zufall, als die Pioniere begannen. Aus welchen anderen Sprachen konnten sie in den fünfziger Jahren wählen?
Bo Persson
2
@Persson: Ich würde behaupten, es war eher zufällig. Wenn PASCAL nach FORTRAN die nächste Sprache gewesen wäre, hätte ich Zweifel, dass die KI damit abgehoben wäre. LISP war nicht nur ein "besserer Kandidat" als FORTRAN, sondern zufällig auch ein ziemlich guter Kandidat.
Quadrescence
Sie erklären einen Grund, warum Lisp einen Vorteil hatte (Finanzierung), kamen jedoch zu dem Schluss, dass " der Grund, warum Lisp auf einmal besser für AI war, nicht mehr der Fall ist".
Mark C
Ich habe den nächsten Kommentar verloren, an dem ich gearbeitet habe, aber ich hoffe, dass ich zurück bin und später fertig bin.
Mark C
3

Sehen wir uns einige aktuelle KI-Programme an: (1) Roboter, z. B. selbstfahrende Autos. Bei der großen DARPA-Herausforderung war die überlegene Software für das Autofahren nicht Lisp. Es war vielmehr eine prozedurale Sprache wie C ++ oder Java. (2) Maschinelle Übersetzung der natürlichen Sprache. Lisp wird für diesen Zweck von weit verbreiteten Produktionssystemen nicht verwendet. (3) Spielen, zB Schachprogramme. Lisp wird für diesen Zweck von weit verbreiteten, überlegenen Schachprogrammen wie Fritz nicht verwendet.

Lisp wurde in den 1960er Jahren von US AI Labs erfunden und entwickelt, um schnell symbolische Logikprogramme zu erstellen, bei denen die nativen Lisp-Datenstrukturen der erforderlichen Ebene der symbolischen Abstraktion entsprechen - z. B. können englische Wörter Symbole in einer Liste sein, logische Formeln können leicht sein dargestellt als Listen von Operatoren und Operanden.

Aber für Produktionsprogramme bedeutet die Softwareentwicklung, dass die Vorteile statischer typisierter Sprachen und einer Vielzahl von Bibliotheken von Drittanbietern dazu führen, dass Lisp nicht einmal für große moderne Systeme in Betracht gezogen wird, die AI-Aufgaben ausführen.


quelle
2
Sie müssen bei der Diskussion von kommerziellen Produkten berücksichtigen (und ich denke, dass die DARPA-Herausforderungskonkurrenten so sind, da sie unter Zeit- und Budgetbeschränkungen erstellt wurden), dass LISP keine allgemein bekannte Sprache ist und daher kompetente LISP-Programmierer schwierig sind zu finden und wahrscheinlich teuer (und / oder exzentrisch, nicht gute Mitglieder für das durchschnittliche Team). Aus wirtschaftlicher Sicht ist es daher sinnvoll, etwas anderes zu verwenden, auch wenn LISP darin möglicherweise "besser" ist (ohne es unbedingt zu sagen, nur dass die von Ihnen angegebenen Daten nicht eindeutig sind).
21.
3
In diesen Programmen steckt nicht viel 'Intelligenz'. Es ist eine Menge Signalverarbeitung usw. Schachprogramme verwenden auch keine KI. Es ist größtenteils Brute Force, hochoptimierte Suche und einige andere Dinge.
Rainer Joswig
"LISP ist keine allgemein bekannte Sprache und daher sind kompetente LISP-Programmierer schwer zu finden und wahrscheinlich teuer": Ich habe gerade angefangen, Common Lisp zu lernen, und es scheint überhaupt nicht schwierig zu sein. OK, ein Lisp-Guru zu werden, mag eine lange Zeit in Anspruch nehmen, aber ich denke, es wäre nicht schwierig, Programmierer zu finden, die bereit sind, Lisp zu lernen, wenn sie die Möglichkeit hätten, an konkreten Projekten zu arbeiten.
Giorgio
3

@ Stephen Reed sagte es sehr gut. Ich kann nur hinzufügen, dass ich in den 70ern im MIT AI Lab war. Ich habe damals eine Geschichte über den Ursprung von Lisp gehört. Ich kann nicht schwören, dass es wahr ist, aber es geht so:

John McCarthy war in den 50er Jahren am MIT und hatte daran gearbeitet, Eigenschaften von Programmen zu beweisen. Dafür hatte er eine einfache Syntax verwendet, die der von Lambda Calculus ähnelte.

Die Geschichte war, dass einer der Studenten ein Projekt machen wollte (Analogie oder Theorembeweis oder symbolische Mathematik, ich weiß nicht mehr, welche) und McCarthy fragte, welche Sprache er verwenden sollte. Die Antwort - natürlich Fortran. (Es gab nicht viel anderes, und die Listenverarbeitung selbst war damals ziemlich bekannt, aber nur als Unterprogrammpakete, nicht als Sprachen.) Nun, irgendwie führte das zu einem Programm, das Symbole in verschachtelten Listenstrukturen verarbeitete. Zusammen mit einer Möglichkeit, sie zu lesen und zu drucken, und dann einer evalFunktion und Voila '- einer Sprache. Eine LISt-Verarbeitungssprache. Von dort ging es los.

Für die Art von Algorithmen, die wir damals machten (und die immer noch sehr wenige Leute machen), wurde eine Sprache benötigt, die leicht symbolische Ausdrücke manipulieren konnte. Darin war Lisp gut. Es gab viele Variationen des Grundkonzepts, die unterschiedliche Namen hatten, wie Prolog, Schema usw. usw.

AI bedeutet also für viele Menschen eine Menge Dinge, und verschiedene Sprachen sind gut für verschiedene Dinge, aber für Probleme, die als Symbolmanipulation bezeichnet werden können, ist es schwierig, eine nützliche Sprache zu finden, die nicht irgendwie von Lisp abstammt.

Mike Dunlavey
quelle
@ Thorbjørn: Danke für diesen Link. Obwohl ich Lisp mehrere Jahre lang intensiv benutzt habe, habe ich seiner Entstehung nie viel Aufmerksamkeit geschenkt.
Mike Dunlavey
Obwohl Prolog als symbolische Berechnung gut ist, würde ich nicht sagen, dass es in enger Beziehung zu Lisp steht: Lisp basiert auf Lambda-Kalkül, Prolog auf Logik erster Ordnung (zwei verschiedene Modelle der Berechnung).
Giorgio
@Giorgio: Die Vorfahren und Cousins ​​von Prolog sind meist in was geschrieben? Lispeln. Fischer Blacks Abzugsprogramm, Micro-Planner usw. Ein gutes Buch dazu sind für mich deduktive Grundlagen der Computerprogrammierung .
Mike Dunlavey
"Die Vorfahren und Cousins ​​von Prolog sind meistens in was geschrieben?": Ah OK, Sie meinten eng verwandt in dem Sinne, dass das eine zur Umsetzung des anderen verwendet wurde, nicht dass sie einem ähnlichen Paradigma folgen.
Giorgio
1

Lisp hat Vorteile für die Arten von Dingen, die AI genannt wurden - zumindest für die logischen, such- und syntaktischen Aspekte, die bis um die 90er Jahre die meisten AI-Aktivitäten ausmachten.

Ein großer Vorteil von Lisp ist die Unterstützung von Makros - Code als Daten, Metaprogrammierung.

Standard ML (SML) ist eine weitere Sprache, die beispielsweise seit den 80er Jahren in der KI weit verbreitet ist. Objective CAML und F # sind Entwicklungen von SML.

Ein Hauptvorteil der ML-Familie (und von Haskell usw.) ist die Mustererkennung. Dies ist wahrscheinlich auch in Lisp verfügbar, jedoch nicht in die Sprache integriert, sondern über eine Metaprogrammbibliothek. Es ist auch in Haskell verfügbar, aber zumindest im Moment ist der Mustervergleich außerhalb funktionaler Programmiersprachen nicht üblich.

Ich habe Behauptungen gesehen, dass LISP im Grunde ein erweiterter Lambda-Kalkül ohne Typ ist, und ML ist im Grunde ein erweiterter Lambda-Kalkül mit Typ. Ich kenne mich mit typisierter Lambda-Rechnung nicht aus.

Die KI hat sich im Laufe der Jahre zu einem viel umfassenderen Thema entwickelt - bis zu dem Punkt, dass sie fast vollständig verschwunden ist. Data Mining könnte als ein Unterfeld der KI betrachtet werden. Viele AI-Dinge (OCR, Spracherkennung) sind beinahe keine AI mehr - sie sind nur noch Anwendungen, genau wie alle anderen. Und KI hängt viel mehr von der Signalverarbeitung und anderen Arten der Zahlenverarbeitung ab als früher.

Für die OCR- und Spracherkennung war AI natürlich immer von der Signalverarbeitung und der Zahlenverarbeitung abhängig. Ja, da gibt es ein paar Widersprüche ;-) Ich kann die Gewichte für Dinge nicht angeben, da ich es nicht wirklich weiß.

Infolgedessen gibt es wahrscheinlich nicht einmal eine einzige Sprache, die für die gesamte moderne KI-Anwendung geeignet ist - ich würde vermuten (keine Kenntnisse aus erster Hand), dass es in der modernen KI eine Menge mehrsprachiger Entwicklungen gibt. Und ich kann fast garantieren, dass Sie C und C ++ in einigen Projekten finden werden, um die Performance bei der Zahlenkalkulation zu erreichen. Es würde mich nicht überraschen, wenn es aus ähnlichen Gründen eine Menge Python gibt - mit einer guten numerischen Bibliothek kann Python problemlos Aufgaben erledigen, bei denen Zahlen eingegeben werden müssen.

Ich stelle mir vor, dass in einem dieser selbstfahrenden Autos das Bildverarbeitungssystem in einer anderen Sprache (und auf einer anderen Hardware) als das Routenplanungssystem geschrieben ist.

Steve314
quelle