Aktuelle Programmiersprache für AI? [geschlossen]

15

Für ein paar Jahrzehnte war die Programmiersprache der Wahl für AI entweder Prolog oder LISP , und einige andere, die nicht so bekannt sind . Die meisten von ihnen wurden vor den 70er Jahren entworfen.

Änderungen treten häufig in vielen anderen domänenspezifischen Sprachen auf, aber in der AI-Domäne waren sie nicht so häufig aufgetreten wie in den webspezifischen Sprachen oder Skripten usw.

Gibt es neuere Programmiersprachen, die das Spiel in der KI verändern und aus den Unzulänglichkeiten früherer Sprachen lernen sollen?

Eduard Florinescu
quelle
1
Octave ist eine gute Sprache für maschinelles Lernen, wenn Sie dieser Zweig der KI interessiert.
Setzamora
Denken Sie auch an einen Meta-Programmieransatz (dh das Generieren von Programmen). Schauen Sie in J.Pitrats Blog . Dann hat die Sprache, die Sie generieren, möglicherweise nicht viel Bedeutung, es könnte sogar C sein.
Basile Starynkevitch

Antworten:

23

Der KI-Kurs, an dem ich online teilgenommen habe und der in Stanford unterrichtet wurde, empfahl, Python für die Hausaufgaben zu verwenden. Ich glaube, dass Georgia Tech immer noch LISP verwendet.

Der Irrtum hier ist "neu" ist "gut". Die KI-Forschung ist eine der ältesten Disziplinen der Computerforschung. Es kalbt immer wieder Teilfelder ab, da die Leute erkennen, dass Techniken, die daraus entstehen, auch anderswo eingesetzt werden können. Sprachverarbeitung, maschinelles Lernen und Data Mining sind Beispiele für "praktische" Anwendungen, die eine Vielzahl von Sprachen verwenden.

Es ist weniger so, dass sich das Hauptfeld verändert hat, als dass es zu einer Vielzahl verwandter Disziplinen weiterentwickelt wurde. Es ist fast so, als würde man "Wissenschaftliches Rechnen" sagen und davon ausgehen, dass es nur das Lösen linearer Gleichungen bedeutet.

Die Sprachen, die Sie erwähnt haben, haben sich in den letzten 20 oder 30 Jahren ziemlich stark entwickelt. Lisp brachte Common Lisp und Clojure hervor. Prolog erzeugte Visual Prolog (es hat Objekte ...) und Mercury (nimm Haskell und Prolog, sperr sie in einen Raum zusammen ... steh weit weg und mach dich bereit zu rennen).

Angesichts der Tatsache, dass KI-Forschung theoretischer ist, ist es sinnvoll, sich eher auf die Theorie (Mathematik) als auf die praktischen Aspekte (Sprachen) zu konzentrieren.

Abgesehen davon ist Google der größte Innovator von KI-Technologien, auf den ich setzen würde. Sie neigen dazu, Python zu bevorzugen (und Go and Dart, aber das ist nebensächlich). Daher würde ich sagen, dass Python die "neueste Sprache der Wahl" ist, aber Sie können auch Haskell oder OCaml oder F # oder C # oder sogar Java verwenden.

Weltingenieur
quelle
+1 Für die Erwähnung von Merkur.
Guy Coder
8

Antworten auf Ihre Fragen finden Sie in einer aktuellen Sonderausgabe „Sprachen der KI“ der deutschen KI-Zeitschrift „ Künstliche Intelligenz“ , Band 26, Nummer 1 / Februar 2012, herausgegeben von Springer. Ich bin Mitautor eines Teils eines Diskussionspapiers: „Welche Sprache verwenden Sie zum Erstellen Ihrer AI-Programme und warum?“ Hier ein Preprint davon: http://ai.cs.unibas.ch /papers/schmid-et-al-kijournal2012.pdf

Zusammenfassend schwören einige KI-Forscher immer noch auf die klassischen KI-Sprachen Lisp und Prolog. Andere verwenden Standardsprachen wie C ++, Java oder Python. Wieder andere erforschen gerne neue esoterische Programmiersprachen.

Ich glaube, dass AI nichts Besonderes ist, das spezielle Programmiersprachen erfordert. Was Forscher im Allgemeinen wollen, sind Programmiersprachen, die ein schnelles Prototyping ermöglichen. Hierfür eignen sich alte AI-Sprachen (Lisp, Prolog) und neuere Skriptsprachen (Perl, Python, Ruby oder neuere JVM-Sprachen wie Clojure).

Einige Forscher möchten über das Prototyping hinausgehen, oder sie haben spezielle Anforderungen (z. B. Big Data) und müssen ihre Algorithmen in kompilierten oder stark typisierten Sprachen wie C, C ++ oder Java erneut implementieren, sobald die explorative Programmierphase vorbei ist und sie eine haben das Problem besser in den Griff bekommen. Einige würden sagen, dass Sie sich zu diesem Zeitpunkt (wenn das Problem gut verstanden ist) nicht mehr mit KI befassen.

Zurück zu Ihrer letzten Frage: Alle wichtigen Entwicklungen in neuen AI-Sprachen, die mir bekannt sind, sind von der auf Einschränkungen basierenden Programmierung inspiriert. Einige haben Prolog-Implementierungen wie SICStus und SWI eingegeben, andere haben Prolog-ähnliche Sprachen wie Mercury und Mozart / Oz hervorgebracht. Natürlich gibt es wahrscheinlich bedeutende neue Entwicklungen, die mir nicht bekannt sind.

Christian Pietsch
quelle
2

Während sich die meisten dieser Antworten auf das Wort "Sprache" konzentrieren, weil Sie es in Ihrer Frage verwendet haben, glaube ich nicht, dass Sie eine bestimmte Sprache denken sollten, wenn Sie KI denken.

Ich arbeite seit Jahren mit dieser Technologie und arbeite derzeit mit Proof-Assistenten und konvertiere Code von OCaml nach F #. Es ist nicht die Sprache, die die KI erreicht, sondern spezifische Algorithmen, die in der Sprache implementiert sind. Für PROLOG ist dies eine auf Vereinheitlichung basierende Inferenzmaschine . Wenn Sie nun mit der Vereinheitlichung beginnen und sich ansehen, wie sie im Laufe der Jahre angepasst und weiterentwickelt wurde, werden Sie meines Erachtens den Fortschritt finden, den Sie suchen. Konzentrieren Sie sich nicht auf die Sprache, sondern auf die Algorithmen.

Beispiel: Für die Typinferenz in funktionalen Sprachen wird Hindley-Milner verwendet, das auf der Vereinheitlichung basiert.

Ein weiteres Beispiel für den Proof-Assistenten finden Sie hier : prolog.ml. Die Inferenz-Engine für Prolog ist in OCaml implementiert und wird in F # übersetzt. Während OCaml und F # normalerweise nicht als AI-Sprachen bezeichnet werden, sind sie in der Lage, die AI-Algorithmen vollständig zu implementieren.

Guy Coder
quelle
Ich muss sagen, dass dies genau das ist, was ich über diese Frage denke: Die Algorithmen sind wichtiger als die Sprache, in der Sie sie schreiben. Deshalb bestand jedes AI-Buch, das ich las, darauf, Pseudocode für die Algorithmen anzugeben.
JJP
1

Ich würde sagen, es hängt davon ab, was Sie mit KI meinen. Das maschinelle Lernen hat im Allgemeinen eine rasante Entwicklung der Werkzeuge erfahren, so dass in Python, C #, Ruby, OCaml und C # eine Reihe von Algorithmen für Klassifizierung, Clustering und andere Formen von überwachtem und unbeaufsichtigtem Lernen implementiert wurden, insbesondere mit probabilistischen grafischen Modellen Java, um nur einige zu nennen.

Wenn Sie umfangreiche Manipulationen von Daten durchführen, um beispielsweise Empfehlungsmodule, kollaboratives Filtern oder andere Arten von unbeaufsichtigten oder überwachten Lernproblemen zu erstellen, sollten Sie sich Mahout ansehen . Es ist nicht wirklich eine "Programmiersprache" an sich, aber es ist eine Reihe von Werkzeugen für diese Art von Problem. Sie können Modellcode in Java oder anderen JVM-Sprachen wie groovy (eine dynamische, einigermaßen ausdrucksstarke Sprache) oder clojure (lisp-like) schreiben.

Ich bin mir nicht sicher, warum Sie Lisp als datiert betrachten würden. Hierher stammen die meisten "neuen" Sprachfunktionen in anderen Sprachen (Schließungen usw.).

Natürlich haben sich die Techniken des maschinellen Lernens im Allgemeinen eher probabilistischen Modellen zugewandt als dem Ansatz der binären Logik im Stil eines Entscheidungsbaums, mit dem die meisten frühen KI-Bemühungen begannen. Man kann also argumentieren, dass maschinelles Lernen ein Zweig oder eine Ablenkung vom großen Zelt ist von AI.

JasonTrue
quelle
0

Die Sprache der Wahl für AI, die ich vor Jahren verwendet habe, war Prolog, das eine Visual Prolog- Version hat, die mit IDE wie in Delphi geliefert wurde.

Prolog (und seine GUI-Version Visual Prolog) ist eine Allzweck-Logikprogrammiersprache für künstliche Intelligenz und Computerlinguistik.

Der jüngste Trend zeigt jedoch, dass alle OOP-Sprachen wie C #, Java, Python, Haskell usw. für AI-Anwendungen programmierbar werden.

Yusubov
quelle
3
Seit wann ist Haskell OOP?
Andrea
Sie können OOP in Haskell emulieren, nicht wahr?
Yusubov
1
Sie können es in jeder Sprache emulieren. Das bedeutet nicht, dass Sie normalerweise eine Sprache als OO
jk betrachten.