Java lernen mit kognitiven Architekturen


Kognitive Architekturen wie SOAR und ACT-R versprechen ihren Nutzern, dass sie damit lernen könnten, wie man hochentwickelte KI-Systeme entwickelt. Tatsächlich lernt man mit SOAR und ACT-R nur eines: in LISP zu programmieren. Obwohl es mitlerweise von ACT-R auch eine Java-Version gibt, wird man mit dieser ebenfalls gezwungen in LISP zu programmieren will man denn dafür sogenannte Modelle zu erstellen. Der Grund für diesen Mißstand ist der, dass SOAR und ACT-R schon sehr alt sind, und als sie erfunden wurden, LISP die wichtigste Programmiersprache war. Damals wurden sogar Editoren wie EMACS in LISP programmiert und man dachte, das wäre die Zukunft.

Heute gibt es immernoch die Notwendigkeit dass man sich mit kogntiven Architekturen beschäftigt, allerdings muss bezweifelt werden ob LISP sich dafür noch eignet. Besser wäre es hingegen wenn man sich mit kogntiven Architekturen im Java-Umfeld auseinandersetzt, also zunächst auf die Programmiersprache fokussiert und dann versucht mit dieser Roboter, Bilderkennung und Linuistic Parsing durchzuführen. Leider wird dieser Ansatz weder von SOAR noch von ACT-R unterstützt, und so stellt sich die Frage nach einer Alternative. OpenCOG ist leider keine, weil man sich dort auf C++ festgelegt hat. Sondern die Alternative besteht darin, Java-Bibliotheken zu verwenden (Jar-Files) die das entwickeln von kognitiven Architekturen unterstützen. Beispielsweise Marry-TTS oder Boofcv: mit beiden Bibliotheken lassen sich kognitive Systeme entwickeln.

Natürlich ist es nicht ausreichend nur mit diesen beiden Biblitheken zu arbeiten, sondern man benötigt noch viel mehr Bibliotheken. Diese sind wegen der aktuellen Softwarekrise jedoch nicht vorhanden, es gibt derzeit einen akuten Mangel an kognitiven Java-Bibliotheken.

Der Unterschied zwischen einer kognitiven Architektur wie SOAR und einer kognitiven Java-Library ist der, dass man bei SOAR gezwungen wird mit LISP zu arbeiten. Im Grunde ist das ein zweischneidiges Schwert: einerseits bekommt man so ein Rüstzeug mit auf den Weg andererseits kann sich diese Vorgabe leicht in ein Gefängnis verwandeln, was Fortschritt behindert. Die Gewissensentscheidung die es zu fällen gilt besteht darin, dass man sich entscheiden muss ob man innerhalb einer LISP Umgebung arbeiten möchte oder ob auf die Annehmlichkeiten eines Frameworks verzichtet und stattdessen Programmiersprachenunabhängig vorgeht. Fakt ist, dass man innerhalb von SOAR nicht in Java programmieren kann, genausowenig wie man für Emacs Java Plugins schreiben kann. Und ohne eine Programmiersprache wie Java oder LISP geht es auch nicht, weil am Ende es immer darum geht, dass man selber Sourcecode erstellt, weil sonst die Software nicht laufen wird.

Häufig werden SOAR und ACT-R völlig falsch dargestellt. Neueinsteiger glauben zunächst, es würde sich dabei um programmiersprachen unabhänige Modelle handeln, ähnlich vielleicht wie UML nur eben für künstliche Intelligenz. Die Wahrheit ist jedoch, dass ACT-R im Kern eine LISP-ähnliche Programmiersprache ist die man lernen muss um darin Programme zu erstellen und auch die SOAR Language ist ein LISP Dialekt. Die Frage lautet daher, welche Vorteile es bringt wenn man der SOAR Sprache programmiert und nicht in Java? Die Antwort: es gibt keinen. Vielmehr ist die SOAR Language eine historisch entstandene Tradition die in den 1980’er vielleicht State-of-the-art war, mangels Erneuerung dann jedoch einfach beibehalten wurde und heute immernoch als innovativ verkauft wird. Tatsächlich ist es jedoch so, dass man ein Problem sowohl in SOAR Language als auch in Java formulieren kann, und dass der SOAR Weg nicht mit weniger Aufwand verbunden ist. Im Gegenteil, es ist eine weitere Sprache und noch nichtmal eine die besonders verbreitet wäre. Wie sich das auf die Praxis auswirkt, sieht man immer dann, wenn es gilt mit SOAR eine konkrete Aufgabe zu lösen. Im Projekt „SOAR-SC“ musste beispielsweise für Starcraft AI ein Bot entwickelt werden. Und leider war es dafür erforderlich in der SOAR Language zu coden. Das Ergebnis kann man sich heute auf github anschauen, wo der SOAR-SC zum Download bereitsteht und man muss sagen, dass es eines von den weniger guten Softwareprojekten ist. Es ist für Außenstehende sehr schwer nachvollziehbar was die einzelnen „.soar“ Dateien für eine Funktion haben. Genausogut hätte man den Starcraft AI Bot auch in Assembler, Forth oder Brainfuck programmieren können. Als proof-of-concept vielleicht eine nützliche Sache aus didaktischen Gründen jedoch eine Katastrophe.

GOMS UND HTAMP
Die Problematik, dass ACT-R im Grunde bedeutet, dass man in LISP programmieren muss, ist auch den Entwicklern schmerzlich bewusst. Daraus jedoch zufolgern, dass LISP eventuell das eigentliche Problem darstellt kommen sie jedoch nicht. Stattdessen wird einfach eine zusätzliche Schicht eingebaut, mit der man LISP Sourcecode automatisiert erzeugen kann. Diesbezügliche Ansätze finden sich in Papern rund um GOMS und HTAmp welche ausgehend von einem abstrakten hierarchichen Modell automatisiert LISP Quellcode für ACT-R erzeugen können. Na dann ist das Problem ja gelöst, so möchte man meinen. Tatsächlich fehlt bis heute der Beweis, dass derartige Tools praxistauglich eingesetzt werden können. Und so bleibt die automatisierte Erzeugung von LISP Quellcode wohl nur ein frommer Wunsch.

Stattdessen zieht man sich innerhalb der ACT-R Community darauf zurück, das eigenes Versagen nicht unbedingt negativ zu sehen ist, und man seine Berufung weniger in der Softwareentwicklung selber sieht, sondern im Unterrichten. Und so enthalten Papers rund um GOMS und HTAmp diesen typischen oberlehrerhaften Duktus bei dem als Zielgruppe der unwissende Erstsemesterstudent ausgemacht wurde, dem es gilt etwas zu erklären, hier nur ein Beispiel unter vielen:

„Den konzeptionellen Aufbau eines HTAmap-Modells in Form eines
vereinfachten UML-Klassendiagramms zeigt Abbildung 28 (S. 116).
Aus Gründen der Übersichtlichkeit wurde auf eine explizite Darstel-
lung der jeweiligen Attribute und Operationen innerhalb der Klassen
verzichtet.“

Wie genau HTAmp jetzt dazu beitragen soll, eine Künstliche Intelligenz zu entwickeln oder sogar einen funktionsfähigen Roboter bleibt im Unklaren und soll durch das Tutorial auch gar nicht erläutert werden. Stattdessen geht es eher darum, Wissen über HTamp zu vermitteln, was man anschließend in Klausuren oder ähnlichem überprüfen kann und keine weitere Bedeutung besitzt als auf sich selbst bezogen zu sein. Und so verwundert es sich nicht, dass ACT-R bis heute im akademischen Umfeld verhaftet blieb und nicht den Sprung in die raue Wirklichkeit geschafft hat. Würde man HTAmp beispielsweise als kommerzielle Software zum Preis von 30 EUR (vielleicht im Genre Softwareentwicklungstool) in einem Kaufhaus anbieten, dann hätte man das Problem, dass plötzlich die Kunden ihr Geld zurück haben wollen, weil die Software schlichtweg nichts taugt.

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s