Ist das menschliche Gehirn ein Computerprogramm? — Die Thesen des John R. Searle

Obwohl heute Computer einen hohen gesellschaftlichen Stellenwert einnehmen, sind die philosophischen Diskussionen über die Grenzen der Informatik zumindest im öffentlichen Diskurs nicht existent. Man muss schon etwas zurückgehen in die Zeit der 1970’er und 1980’er um die alten Debatten aufzuspüren, die sich mit der Frage beschäftigt haben ob Maschinen denken können. Damals war das Umfeld für derartige Diskussionen ein fruchtbares, es war die Zeit als Computer noch nicht via PC oder Nintendo in die Privathaushalte eingedrungen waren und die Softwareindustrie praktisch nicht existent war. Aus Sicht der damligen Zeit war die angekündigte KI-Revolution gescheitert, die vollmundigen Versprechungen das Roboter und intelligente Maschinen den Alltag bestimmen haben sich nicht bewahrheitet. Das war nicht nur eine Theorie sondern das konnte man damals auch als Laie erkennen, gab es doch in den 1980’er noch nichtmal Computer die gegen Menschen im Schach gewinnen konnten oder die einfach nur eine MP3 Datei abzuspielen in der Lage waren.

Kurz gesagt, früher hatte die These dass Künstliche Intelligenz gescheitert sei durchaus an Schlagkraft. Und so ging die Kritik am vermeintlichen Computerboom soweit, dass auch die These von der starken Künstlichen Intelligenz angezweifelt wurde, z.B. von John R. Searle der sich mit der Frage beschäftigt hat, ob der menschliche Geist ein Computerprogramm ist, http://www.cs.utexas.edu/~mooney/cs343/slide-handouts/philosophy.4.pdf

Seine Schlussfolgerung damals war, dass dies verneint werden konnte, das also Menschen keine Computer sind und es auch nicht möglich wäre, menschliches Verhalten oder gar das menschliche Gehirn zu duplizieren. Von dieser Debattenkultur ist heute nicht mehr viel zu spüren, eher im Gegenteil, durch das neugestartete Großprojekt „Human Brain Projekt“ wird im Grunde daran geforscht ob das menschliche Gehirn nicht vielleicht doch nur ein Computerprogramm sei. Man kann aus soviel Eifer ableiten, dass die Ausführungen von Searle wohl nicht so überzeugend gewesen sind. Und tatsächlich, seine damaligen Überlegungen liegen heute noch im Internet zur Einsicht bereit und sind aus einer sprachwissenschaftlichen Perspektive heraus geschrieben. Rückblickend muss Searle wohl der Vorwurf gemacht werden, dass er nicht wissenschafltich sondern eher moralisch argumentiert hat. wirklich stichhaltige Argumente, dass das menschliche Gehirn nicht womöglich doch ein Computerprogramm ist, konnte er nicht liefern.

Nichts desto trotz ist die Frage nach wie vor unbeantwortet. Der aktuelle wissenschatliche Stand lässt sich ungefähr so zusammenfassen: wenn man Computer ordentlich nach den Methoden des Softwareengineerings programmiert kann man ihnen sogut wie alles beibringen: Schach, Jeopardy, Autofahren, Starcraft Spielen, Notenkomposition usw. Und all die Dinge, die heute noch nicht in Software realisiert worden sind wie z.B. das Ansteuern von humanoiden Laufrobotern kann man zumindest davon ausgehen, dass es allenfalls eine Fleißaufgabe darstellt. Das heißt, es ist anzunehmen dass mit genügend viel Aufwand und rund 100 Mio Lines of Code in Java man einen Roboter so ansteuert, dass er geradeauslaufen kann und nicht umfällt selbst wenn man ihn anstubst. Insofern sind echte Grenzen von Software derzeit nicht erkennbar, und man kann auch nicht zeigen, dass die nächsten 50 Jahre nichts mehr im Bereich Softwareentwicklung passieren wird. Kommen wir zur zweiten Frage, woraus das menschliche Gehirn besteht. Hier ist sich sich die Wissenschaft nach wie vor unklar. Fakt ist zumindest, dass es etwas mit neuronalen Netzen zu tun hat, was man in Experimenten zeigen kann. Aber wie genau die Neuronen das Denken steuern weiß derzeit niemand. Demzufolge wäre es im Bereich des möglichen, dass Neuronen exakt so funktionieren wie ein natürlicher Supercomputer auf dem ein Betriebssystem läuft und wenn Menschen die Augen aufmachen, sehen sie nicht wirklich die Welt, sondern sehen lediglich eine hochentwickelte Software welche im Gehirn ausgeführt wird, so eine Art von Linux für Menschen sozusagen.

Diese These klingt ziemlich abgehoben und beweisen kann man sie nicht. Vor allem ist nicht klar, wer diese Software geschrieben haben soll und wie man sie verändert. Allerdings ist es mindestens genauso schwierig die These zu wiederlegen, also den Beweis zu führen, dass menschliche Gehirne eben keine Computer sind sondern etwas komplett anderes. Und vermutlich wird auch das „Human Brain Projekt“ darauf keine Antwort liefern können, Man kann erkennen, dass wir es hierbei mit einem klassisches wissenschaftliches Rätsel zu tun haben, was die Neugierde beflügelt und die Leute dazu treibt, sich damit näher auseinanderzusetzen. Im Grunde ist Künstliche Intelligenz und das Funktionieren des menschlichen Gehirns eines der wenigen echten Abenteuer die noch geblieben sind. Denn bekanntlich wurden alle Kontinente bereits erforscht, das Universum komplett vermessen und alle Pflanzen katalogisiert, auch die Frage wie man die Pocken heilt ist weitestgehend beantwortet und selbst die Wirkung von Stickstoff auf den Boden ist keine echte Herausforderung mehr.

Das wünschenswerte Ergebnis des Human Brain Projektes ist es in die Fußstapfen zu treten von John R. Searle, also wissenschaftlich zu begründen, dass der menschliche Verstand kein Computerprogramm ist. Leider ist dieser Nachweis nicht ganz einfach zu führen, zumal man mit relativ simplen Mitteln zeigen kann, dass der menschliche Verstand auch nur das kann, was Computer können und das man biologische Neuronen zu einem Computer zusammenbauen kann, auf dem man dann wiederum einen Linux-Kernel ausführen könnte. Im Grunde ist die Vorstellung, dass das menschliche Bewusstsein das eines Roboters ist, etwas was den Menschen Angst macht. Und es würde auch keinen Sinn ergeben, dass man selber zwar von einer Software gesteuert wird, sich dessen aber nicht bewusst ist.

Obwohl im Bereich Neuroinformatik sehr viel darüber geschrieben wird, wie man das menschliche Gehirn nachbauen möchte, ist es beinahe banal einen neuronalen Schaltkreis zu entwickeln. Diesbezügliche Software (Hopfield-Netze oder ähnliche mathematische Verfahren gibt es schon länger und für praktische Anwendungen sind sie nutzlos). Viel spannender ist vielmehr die Frage, ob man aus menschlichen Neuronen einen Transistor bauen kann, also ein simples physikalisches Bauteil was entweder On oder Off sein kann, und was man zu einer Turing-Maschine zusammenschalten kann. Diese Art von Informatik unterscheidet sich in nichts von klassischer Informatik, man muss also keineswegs künstliche Intelligenz erfinden, sondern es reicht einfach aus zu zeigen, dass man auf einem Neurotransistor-Schaltkreis einen Programm ausführen kann, also eines was in der Sprache C, Java oder Assembler erstellt wurde. Und dann braucht man im nächsten Schritt nur noch zu ermitteln, welches Programm denn auf einem Gehirn insgesamt läuft und wie man es zur Laufzeit anpassen kann.

SOAR VS. JIRA

Eine kognitive Architektur wie SOAR soll die Frage beantworten, welche Bedingungen erforderlich sind, damit eine Künstliche Intelligenz entwickelt werden kann. Genauer gesagt möchte SOAR ein Framework sein zur Erstellung einer derartigen Software. Die Features von SOAR entsprechen ungefähr dem, was der Mensch als Bedingungen mitbringt: Visual Modul, Motorik, Sprache, Denken usw.

Das Mißverständnis besteht darin, dass SOAR eine sehr merkwürdige Sicht auf den Softwareentwicklungsprozess hat. SOAR behauptet beispielsweise, dass zur Erstellung von Anwendersoftware wie auch zur Erstellung von hochentwickelten Steuerungsprogrammen für Roboter es nötig sei, Augen, Ohren und eine Nase bereitzustellen. Wird nach dieser Methodik Software entwickelt? Eher nicht, sondern die Voraussetzungen für Softwareentwicklung unterscheidet sich stark von dem was SOAR behauptet.

Es ist zwar richtig, dass Software prinzipiell den Menschen emulieren soll und eine Programm wie Microsoft Word beispielsweise eine gute Sekräterin zu ersetzen vermag, aber daraus zu folgern, dass man zur Entwicklung von MS-Word künstliche Augen benötigen würde oder neuronale Netze der hat die letzten 30 Jahre auf einem anderen Planeten verbraucht. Aber was ist dann die Voraussetzung damit Software entsteht, insbesondere solche Software mit Künstlicher Intelligenz? Mit einem Wort zusammengefasst kann man diese voraussetzung mit Jira bezeichnen, einem Tool für das kolaborative Arbeiten was als Gattungsbegriff für eine Ganze Palette an Bugtracker, Wikis, Versionskontrollsysteme und integrierte Entwicklungsumgebungen steht. Der Begriff Jira bezeichnet im wesentlichen wie ein moderners Softwaregroßprojekt durchgeführt führt, und zwar dass daran mehrere Leute beteiligt sind, dass diese Leute miteinander kommunzieren, dass Projekttermine überschritten werden und dass Anwender sich über fehlende Features beklagen.

Der Unterschied zwischen SOAR und Jira ist, dass man mit Jira zumindest kleinere Software entwickeln kann, wie z.B. 3D Spiele, kommerzielle Software oder auch Steuerungssoftware für Flugzeuge. Während mit SOAR das leider nicht geht, weil die benötigte Funktionalität dort fehlt.

Im Grunde kann man SOAR als ein weiteres Tool aus dem Werkzeugkasten der AI-Community betrachten, es reiht sich ein in die lange Reihe von Expertensystemen, neuronalen Netzen und Lernalgorithmen. Jedesmal hat man es mit theoretisch gut begründeten Verfahren zu tun, welche dazu führen dass man — wenn man das Verfahren richtig verstanden hat — eine vollständige lernfähige Künstliche Intelligenz erhält, die nicht nur in der Lage ist selbstständig zu denken, sondern zusätzlich auch noch perfekt ist. Nur eines kann man mit neuronalen Netzen und ähnlichen Verfahren leider nicht: mehrere hundertausend Lines of Code erzeugen um damit konkrete Aufgabe zu erfüllen, die im Rahmen eines kommerziellen Softwareprojektes erstellt werden müssen. Die Gemeinsamkeit von nahezu allen größeren Softwareprojekte der letzten 20 Jahre wie z.b. Windows XP, IBM OS/2, Linux, Mac OS X, Adobe Photoshop oder SAP R/3 war, dass keines davon mit SOAR als Entwicklungsumgebung durchgeführt wurde. Sondern dass der Code irgendwie anders entstanden ist, also nicht von einer Künstlichen Intelligenz erstellt wurde. Offenbar scheinen zwei Merkmale vorzuliegen: erstens, große Softwareprojekte werden von Menschen durchgeführt, zweitens, große Softwareprojekte bestehen aus sehr viel Lines of Code.

Inwiefern SOAR dabei helfen kann, solche Projekte effizienter durchzuführen ist derzeit unklar, aber vielleicht wissen es ja die Erfinder von kogntiven Architekturen?

Geschichtlich gesehen ist die Künstliche Intelligenz keineswegs eine sehr alte Wissenschaft wie häufig behauptet wird, sondern das erste Mal auf hohem Niveau Schach haben Computer erst im Jahr 1997 gespielt, und das erste Mal erfolgreich ein Automobil gesteuert hat Software erst im Jahr 2005. Auch das erste Sieg eines Computers in Jeopardy ist erst in den letzten Jahren erfolgt. Insofern zeugt es geradezu von einem Desinteresse für die Künstliche Intelligenz, wenn man behauptet, dass mit LISP schon vor langer Zeit denkende Maschinen realisiert wurden. Sondern richtige Künstliche Intelligenz im Sinne einer konkreten Aufgabe die von einer Maschine gelöst wird, wurde erst möglich als es möglich wurde auch größere Softwareprojekte durchzuführen. Von der IBM Watson „Frage-und-Antworte-Rate-Maschine“ weiß man beispielsweise dass ihr Codeumfang die Marke von 1 Mio LoC überschritten hat und das bei dessen Erstellung vermutlich Jira-ähnliche Vorgehensmodelle eingesetzt wurden, also mehrere Leute an der Entwicklung beteiligt waren und dass Sourcecode ein- und ausgecheckt wurde. Es ist anzunehmen, dass auch die Künstliche Intelligenz der Zukunft an die höhere Anforderungen gestellt wird, diesem Prinzip treu bleiben wird. Anders gesagt, es ist vollkommen ausgeschlossen, dass man die DARPA Robotics Challange als Einzelperson mit einem 100 kb großen Sharewareprogramm wird gewinnen können, sondern vermutlich wird man Software in der Größenordnung von IBM Watson oder mehr benötigen.

Interessanterweise wird über derlei Details in der SOAR Community keinerlei Diskussion geführt, dort steht man auf dem Standpunkt es würde ausreichen, einen von diesen supertollen Reinforcement-Learning Algorithmen zu implementieren der beweisbar zur Mustererkennung in der Lage ist, und damit wäre dann die konkrete Aufgabe (so lächerlich sie auch sein mag) praktisch schon gelöst. Das diese Einstellung im Grunde nichts mit Künstlicher Intelligenz zu tun hat, wissen die Beteiligten selbst am besten. Und sehr zur Verwunderung der Öffentlichkeit spricht beim IBM Waton Softwareteam niemand davon, dass man an Künsticher Intelligenz oder gar an AGI arbeiten würde, weil man ja nur versucht eine Software zu entwickeln, die gut Sprache versteht.

KÜNSTLICHE INTELLIGENZ VS JIRA
Schaut man sich einmal an, wie erfolgreiche KI-Projekte der Vergangeheit nach außen präsentiert werden so findet man Erklärungen über die Funktionsweise folgender Art: Der IBM Schachcomputer aus dem Jahr 1997 wurde angeblich softwareseitig über ein Verfahren namens alpha-beta-pruning den Spielbaum durchsuchen und als Hardware ASIC Chips einsetzen um die Geschindigkeit zu erhöhen. Von der IBM Watson Maschine wird verbreitet, dass dort Prolog zum Einsatz kam als Linguistik-Engine, und über das selbstfahrende Auto Stanley wissen die Reporter zu berichten, dass dort ein SLAM Algorithmus zur Positionsbestimmung eingesetzt wurde (ein kompliziertes mathematisches Verfahren was aus Unsicherheit schlussfolgern kann).

Mit diesen Erläuterungen hat man dann einen ganzen Strauß an Begründungen dafür geliefert, warum das jeweilige Projekt in der Lage war die Aufgabe zu lösen, gegen Menschen zu gewinnen oder sonstwie intelligente Leistungen zu zeigen. Im Kern wurden die Systeme als Künstliche Intelligenz bezeichnet und jeweils mit dem Detail einmal in Form von alpha-beta-pruning, einmal als SLAM und einmal als Prolog Implementierung. Nur war diese Erklärung wirklich die Wahrheit? Das derartige Erklärungen nicht nur unvollständig sondern schlichtweg falsch sind, kann man am besten erkennen, wenn man versucht aufgrund dieser Erklärung die Software einmal zu Hause nachzuprogrammieren. Also dann frisch ans Werk: so ein SLAM Algorithmus ist schnell implementiert und benötigt gerade mal 500 Zeilen C++ Code. Auch ein alpha-beta-pruning Algorithmus findet sich als Codesnippet bei Stackoverflow. Nur, führt man diesen Code dann aus, ist man weit davon entfernt eine vergleichbare Leistung zu zeigen wie es IBM oder das Team um Sebastian Thrun. Offenbar reicht es nicht aus, einfach nur einen SLAM Algorithmus zu programmieren.

Die Wahrheit ist, dass jedes dieser Projekt anders durchgeführt wurden. Nicht mit Methoden der Künstlichen Intelligenz und auch nicht mit Prolog, sondern der eigentliche Motor hinter derartigen Projekten war Jira. Rein formell mag es zwar zutreffen, dass damals im Jahr 1997 im Rahmen des Schachprojektes von IBM innerhalb der Jira-Oberfläche auch eine Kommunikation bezüglich alpha-beta-pruning stattfand, allerdings gab es auch jede Menge anderer Themen die damals diskutiert wurden, beispielsweise zu Fragen von Linux vs. OS/2 oder über Programmiersprachen. Insofern ist es geradewegs Unsinn, wenn man behauptet, dass die damals erstellte Software mit Hilfe von alpha-beta-pruning angetrieben wurde.

All diese Beispiele aus der Vergangenheit der Künstlichen Intelligenz zeigen, dass das Hauptproblem nicht die Künstliche Intelligenz als solche war oder bestimmte Algorithmen, die vermeintlich oder tatsächlich denken können, sondern primär waren solche Großprojekte vor Software-Entwicklungsprojekte. Solche Projekte führt erfolgreich dasjenige Team zu Ende, was in der Lage ist termingerecht ausführbaren Sourcecode zu liefern. Und im Gegenzug kann man sagen, dass all jene Projekte scheitern wo genau das nicht funktioniert. Der Grund warum bis heute die Robotik noch nicht marktreif ist liegt nicht etwa daran, dass bestimmte wichtige Algorithmen aus dem Bereich der inversen Kinematik oder der Bilderkennung noch gar nicht erfunden wurden, sondern der eigentliche Grund ist der, dass die entsprechenden Software nicht termingerecht fertiggestellt wurde. Das also entweder noch gar kein Jira-Projekt erstellt wurde, es viel zu viele offene Bugs gibt oder das Meilensteine nicht eingehalten werden.

Das Scheitern der „symbolic AI“

Obwohl es sich die Protagonisten nicht eingestehen wollen ist es dennoch ein offenes Geheimnis dass kognitive Architekturen wie SOAR, ACT-R oder OpenCOG tod sind. Damit ist nicht gemeint, dass es keinerlei Entwicklung mehr gäbe, sondern damit ist nur gemeint, dass die Musik inzwischen woanders spielt. Weil es mit Sicherheit noch einige Leute gibt, die bereits hier widersprechen dazu einige Fakten: bei keinem nennenswerten Robotik-Wettbewerb sind ACT-R oder OpenCOG auch nur angetreten. Lediglich von SOAR ist bekannt, dass ein Bot unter dem Namen SOAR-SC bei Starcraft AI ins Rennen geschickt wurde. Den dort verwendeten Quelltext kann man sich sogar anschauen und er sieht so aus, als ob irgendwelche Hacker mit LISP versuchen Starcraft zu spielen. Es ist prinzipiell möglich, doch Sinn macht es keinen.

Aber woran liegt es, dass beispielsweise ACT-R noch nicht bei Mario AI, Robocup Rescue, Robocup Soccer oder bei der DARPA Robotics Challange vertreten ist? Liegt es wirklich nur daran, dass die Teilnehmer noch zu unerfahren sind, um sich näher auf kognitive Architekturen einzulassen? Der eigentliche Grund dürfte woanders liegen und zwar in der „symbolic AI“ als solcher. Vom Selbstverständnis her wurden die Fähigkeiten derartiger Systeme am besten derart demonstriert, dass selbst gewählte Problemstellungen wie z.B. das automatische Theorembeweisen, Blocksworld oder Reasoning in Expertensystemen ausgewählt wurden, in denen die Ideen der LISP Community perfekt funktionierten. Und die Vorstellung (besser der Aberglaube) bestand darin, wenn eine Software in der Lage wäre eine Mathematikaufgabe auf Universitätsnievau zu lösen oder den Unterschied zwischen einem Adjektiv und einem Adverb kenne, dass eine derartige Maschine natürlich auch in der Lage wäre Schach zu spielen, den Abwasch zu erledigen oder derlei Banalitäten mehr. Die Wahrheit ist jedoch, die Systeme können es nicht, und sie werden es auch niemals können. Und OpenCOG kann selbst mit erhöhter Anstrengung gar nicht dazu umprogrammiert werden, damit es Mario AI bis ins letzte Level durchspielt von Angrybirds AI ganz zu schweigen.

Die Grenzen von kognitiven Architekturen erkennt man am besten, wenn man sich den Quelltext von ACT-R einmal näher anschaut. Im Kern besteht die aktuelle Java-Version von ACT-R aus einer 780 kb großen jar-Datei welche eine grafische Benutzeroberfläche anzeigt und einen LISP Dialekt, genannt (ACT-R Markup Language) ausführen kann. ACT-R ist demzufolge so eine Art von Texteditor mit integriertem LISP Interpreter, wenn man so will eine moderne Form von Emacs. Und wie soll damit das Erstellen einer Künstlichen Intelligenz erleichtert werden? Das dürften sich in der Tat viele Neulinge fragen, und die nüchterne Antwort lautet gar nicht. ACT-R selber ist keine Künstliche Intelligenz, sondern der Anwender müsste zunächst einmal den verwendeten LISP Dialekt verstehen um darin dann wiederum eine AI zu bauen. Irgendwelche Beispielprogramme die zeigen, das soetwas prinzipiell möglich ist gibt es auch keine, mit Ausnahme von simplen Zahlenrätseln einmal abgesehen, die sich auch mit anderen Programmiersprachen realisieren lassen. Und auch bei SOAR sieht es nicht viel besser aus, so dass man sich verdächtig an ein anderes großes AI Projekt erinnert fühlt und zwar Mindforth. Kein Wunder dass der Erfinder von OpenCOG (Ben Goertzel) Mindforth als Geniestreich bezeichnet hat … Tatsächlich wird dort das Konzept von einer Kognitiven Architektur auf die Spitze getrieben.

Wie man vielleicht bereits ahnt ist symbolic AI eine Art von geschlossenem Kreislauf der spiralartig direkt in ein dunkles schwarzes Loch führt und an dessen Ende keineswegs AGI sondern der Nihilismus wartet. Einer Denkrichtung, die sich mit nichts anderem beschäftigt als dem wegdividieren von jeder Form von Sinn und der hinter seiner zynischen Grundhaltung gar nicht daran interessiert ist, an Robotik-Wettbewerben teilzunehmen oder sonstwie die eigene Unzulänglichkeit offenzulegen. Im Grunde verliert symbolic AI dadurch die Anschlussfähigkeit und war nicht bei dem Schachwettbewerb Kasparov gegen Deep Blue bedeutungslos sondern spielte auch im IBM Watson Projekte keine Rolle mehr. Stattdessen werden solche und ähnliche Wettstreite heute entweder über Brute-Force gewonnen (wer hat den schnellsten Rechencluster) oder über Jira (wer hat das beste Softwarentwicklungsteam, was 1 Mio Codezeilen in kurzer Zeit zusammenhackt?).

Und auch bei gegenwärten Herausforderungen wie der DARPA Robotics Challange welche das Ziel verfolgt, einen humanoiden Laufroboter zu bauen, geht es nicht sosehr um LISP oder um künstliche Intelligenz, sondern primär besteht die Herausforderung darin, die vorhandene Forschungsliteratur zum Thema Robotik auszuwerten und die besten Algorithmen in Software umzusetzen. Denn obwohl das Thema 3D Simulation oder Motion Planning theoretisch bereits seit mehreren Jahrzehnten untersucht wird, gibt es nachwievor keine guten Implementierungen dazu, die mit aktuellen Betriebssystemen zusammenarbeiten oder genügend Plugin-fähig sind. Auch das Team IHMC (Teilnehmer am Darpa Wettbewerb) hat keineswegs die Künstliche Intelligenz oder die Robotik auf wissenschaflicher Ebene neu erfunden, sondern primär bestand ihr Beitrag darin, die 100. Robotersimulationsumgebung in 3D zu schreiben in der Hoffnung, dass diese etwas besser ist als die meisten anderen.

Und so ähnlich ist es auch mit weit weniger ambitionierten Roboterprojekten wie z.B. das Programmieren eines Mindstorms NXT Roboters. Auch hier wieder ist auf theoretischer Ebene grundsätzlich klar, um was es geht: die Sensoren müssen ausgelesen, die Motoren angesteuert und Befehle des Operators müssen verarbeitet werden. Wie der NXT Brick also grundsätzlich zu denken hat und welches Wissen aus den Bereichen Mathematik, Bilderkennung oder Linguistik dafür erforderlich ist ist gar nicht die eigentliche Frage. Sondern im Kern geht es dann eher um die vielen Details, also so simple Fragen, ob die Verbindung zu einem verschlüsselten WLAN oder doch nur zu einem bluetooth Adapter hergestellt wird, ob bei der Bilderkennung ein Meanshift oder ein anderer Segmentierungsalgorithmus angewendet wird usw. Man kann daraus schließen, dass Robotik der Gegenwart nichts mehr mit Künstlicher Intelligenz und ganz besonders nichts mit akademischer Künstlicher Intelligenz zu tun hat. Und selbst die Ziele unterscheiden sich fundamental von dem, was die Leute bei SOAR oder ACT-R erreichen wollen.

Und all diese Gründe zusammengenommen führen dann zu der lapidaren Feststellung dass SOAR tod ist. Es hatte sein Glanzzeit als Künstliche Intelligenz anders gedacht wurde, als es noch nicht darum ging konkrete Probleme zu lösen, sondern man eher an denkenden Maschinen interessiert war. Die heutige Computergeneration hat hingegen keinen Nerv mehr für komplett autonome Systeme. Man kann sagen, die Zeiten sind vorbei wo man UNIX Systeme einmal hochgefahren hat und sie dann mehrere Jahre konstant durchgelaufen sind, und sich währrenddessen auch noch selbstständig aktualisiert haben. Und überhaupt, waren sogenannte Mainframes nicht immer eine Art von Märchen, das so nur in der Phantasie existierte?

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.

Bug: Fehlende Funktionalität in ACT-R

Als Einstieg ein kleiner Exkurs zu Mindforth. Für alle, die noch nie etwas von Mentifex oder Mindforth gehört haben, sei gesagt, dass unter dem Pseudonym „AI has been solved“ in Usenet-Foren und in Programmier-Web-Foren regelmäßig sehr interessante Artikel gepostet werden, die auf Mindforth verweisen. Was Mindforth wiederum ist, erfährt man auf der verlinkten Webseite und dort steht als Selbstbeschreibung dass es eine „unified cognition theory“ wäre, was keineswegs nur als Scherz gemeint ist, sondern die Wahrheit ist. Der Begriff „unified cognition theory“ ist keineswegs eine Erfindung von Mindforth sondern wird auch im Umfeld von SOAR zur Selbstbeschreibung eingesetzt. Soweit zur Vorgeschichte, und was hat das alles mit ACT-R zu tun? Im Grunde ist der Unterschied zwischen Mindforth und ACT-R nicht besonders groß nur mit dem Unterschied dass ACT-R nicht von Mentifex erfunden wurde, sondern von jemand anderem. Aber vielleicht zu den Details.

Möchte man verstehen, was genau die Mindforth Software eigentlich tut, empfielt sich der Blick in den Sourcecode der als Forth-Quelltext verfügbar ist. Darin findet sich z.B. ein Submodul zu „Speech“ oder „Motor“. Wenn man jedoch versucht zu verstehen, was die derartigen Submodule eigentliche tun findet man was? Richtig, keine Antwort auf diese Frage. Was einerseits an Forth als Programmiersprache liegt, andererseits aber auch daran, dass Mindforth ein Mook-up darstellt. Nun sollte man sich jedoch hüten, genau das in alle Wet hinausposaunen, weil man damit dem Projekt unrecht tun würde. Stattdessen ist es viel spannender zu analysieren, was denn die „Speech“ und „Motor“ Module in ACT-R für eine Funktion haben. Hier ist das ganze nicht in Forth programmiert, dafür aber in LISP oder Java. Auch hier kann man Quelltext anschauen. In der Java-Version von ACT-R gibt es die Datei „speech.java“, welche nach der Selbstbeschreibung die Funktion hat

„The speech module representing ACT-R’s vocal speech generation.“

Sie ist exakt 4,1 kb groß und besteht aus 131 Zeilen Java-Quellcode. Inhaltlich besteht der Quellcode aus einer Klasse, die im Kopf 10 Variablen definiert und danach folgen dann noch einige Methoden der Klasse, die im wesentlichen aus set und get Funktionen bestehen und administrativen Charakter haben. Wollte man in einem Satz zusammenfassen, was das „Speech“ Modul von ACT-R tut, so lautet die Antwort „gar nichts“. Eine Funktionalität ist nicht erkennbar und irgendwelche konkreten Anwendungsszenarien wo es sinnvoll eingesetzt wird gibt es auch keine. Insofern fühlt man sich ein wenig an Mindforth erinnert, wobei Mindforth noch wenigstens lustig ist, bei ACT-R ist das ganze einfach nur traurig. Man könnte jetzt noch weitere Codefragmente von Java ACT-R einer näheren Begutachtung unterziehen insbesondere den Bereich der sich um das sogenannte Chunking kümmert, (einer mythisch überhöhten Funktionalität von kognitiven Architekturen welche in der Selbstdarstellung in der Lage ist aus Fehlern zu lernen). Aber vermutlich wird der dortige Sourcecode ebenso bedeutungsfrei sein, wie das „speech.java“ Modul.

Letztlich drängt sich der Verdacht auf, dass ACT-R so ähnlich funktioniert wie die Geschichte „Des Kaisers neue Kleider“ die im wesentlichen mit der Dummheit der Leute spielt.

Damit soll keineswegs ausgedrückt werden, dass es prinzipiell ungmöglich wäre, mit Hilfe eines Computers die Module „speech“ oder „chunking“ zu programmieren und auszufüreh, so dass sich eine sinnvolle Funktionalität ergibt, man kann jedoch annehmen, dass man dafür wesentlich mehr Sourcecode benötigt, als die 4,1 kb welche in ACT-R für „speech“ vorgesehen sind. Nur mal so zum Vergleich: simple Sprachsynthese Software im Umfang von espeak benötigt bereits das 1000 fache an Speicherplatz (4,1 MB). Möchte man hingegen eine natürlich klingende Sprachsoftware haben, sollte man ungefähr 4,1 GB einplanen (1 Mio mal der Codeumfang von ACT-R „speech.java“).

ACT-R ausprobiert

Heute mal ein kleiner unprofessioneller Softwaretest und zwar bezüglich ACT-R, der wohl geheimnisvollsten kognitiven Architektur die es derzeit gibt. Tun wir doch einmal so, als wüssten wir noch gar nichts über das Programm und stellen uns mal vor, es wäre eines von diesen Shareware-Spielen die billig programmiert wurden und dementsprechend mit wenig Aufmerksamkeit bedacht werden können.

Die aktuelle Programmversion von ACT-R gibt es zum Download auf http://cog.cs.drexel.edu/act-r/download.php und zwar gleich in der Java-Version. Klickt man dort auf den Button „Development distribution“ (unter dem Begriff „distribution“ wird normalerweise eine größere Programmsammlung verstanden), wird eine 1,0 MB große Zip-Datei auf die Festplatte heruntergeladen, die weder ein Benutzerhandbuch noch Beispiele enthält. Besser ist, man wählt „Release distribution“ aus, weil es dort gleich mehrere Beispiele gibt. Also los, Download gestartet und die enthaltene .jar Datei direkt auf der Kommandozeile als Java-Applikation gestartet:

Dann gleich über die Menüleiste eines von diesen Beispiel-Programmen ausgewählt und auf „Run“ klicken. Dann entsteht die Ausgabe, die man oben auf dem Screenshot sehen kann. Und was soll das? Tja, das ist schwer zu deuten, aber vielleicht weiß ja die Anleitung mehr. Im Verzeichnis „doc“ findet sich eine pdf-Datei im Umfang von sagenhaften fünf Seiten (von denen Seite 1 bereits durch ein pixeliges JPEG-Bild von einem Gehirn und die Seite 5 nur zur Hälfte bedruckt ist). Und darin findet sich dann die ernüchterne Schreckensmeldung, dass zwar ACT-R in Java erstellt wurde, aber möchte man dafür Modelle entwickeln man wohl oder übel auf LISP zurückgreifen muss:

„The ACT-R model syntax generally follows the same syntax as the canonical LISP version, with a few differences.“

Und hier wird deutlich, was man mit ACT-R machen kann: im Grunde kann man damit LISP Dateien (als ACT-R Modelle bezeichnet) in den Editor laden und auf „Run“ klicken. Das bedeutet, wenn man LISP beherscht wird man ACT-R lieben.

In den zahlreichen weiterführungen Anleitungen rund um ACT-R stand zwar selbstzufrieden drin, dass im Laufe der Jahre mehr als 100 unterschiedliche Modelle publiziert wurden, die sicherlich auch auf irgendwelchen FTP-Servern zum Download bereitstehen, es ist jedoch anzunehmen, dass sie alle ausnahmlos ebenfalls in LISP erstellt wurden und aus heutiger Sicht nicht mehr zeitgemäß sind. Insofern stellt sich die Frage, ob ACT-R heute noch seine Daseinsberechtigung hat, und ob die Portierung nach Java nicht nur Kosmetik darstellt.

LISP
Es ist erstaunlich, dass auch die Java Version von ACT-R mit Lisp-Dateien gefüttert werden will. Scheinbar ist Java ACT-R demnach nur eine Laufzeitumgebung um einen LISP Dialekt auszuführen? Oder anders gesagt, die Grenzen von LISP sind zugleich die Grenzen von ACT-R. Deshalb vielleicht einige Worte zu LISP. Die LISP Community feiert bis heute ihren größten Erfolg auf fast jedem Powerpoint Vortrag, dass nähmlich die Raumfahrtbehörde NASA im Rahmen der Mission „DeepSpace 1“ LISP als Programmiersprache ausgewählt hat, um damit den AI-Agent der Sonde zu programmieren. Was jedoch häufig nicht erwähnt wird ist, dass DeepSpace 1 ein einziger großer Flop war und nicht nur die Software während des Fluges abgestürzt ist und mit hohem manuellem Aufwand neuprogrammiert werden musste, sondern dass auch die Ziele der Mission nicht erfüllt wurden, so dass sich die NASA von LISP verabschiedet hat. Im Grunde war DeepSpace 1 auch die letzte Mission, wo LISP im Weltraum eingesetzt wurde, und seitdem wurde auf die Programmiersprache C++ und neuerdings Java gewechselt. Natürlich könnte man sagen, dass die NASA keine Ahnung hat von Computern und erst Recht nicht von embedded Systemen, nur stellt sich andererseits die Frage, wieviel Knowhow denn erforderlich ist, um mit LISP etwas sinnvolles anzufangen. Keineswegs soll hier verneint werden, dass man mit LISP im Allgemeinen und mit dem ACT-R LISP im besonderen sinnvolle Programme erstellen kann, nur leicht verständlich und mit geringem Aufwand veränderbar sind derartige Programme eher nicht.

Böse formuliert, scheinen mir kognitive Architekturen wie ACT-R und SOAR nach wie vor so eine Art von Leistungsschau der LISP Community zu sein, die keineswegs Artifical General Intelligence anstrebt als vielmehr nach LISP General Intelligence zu streben scheint. Denn mal ehrlich, was soll folgender Programmcode denn bedeuten?

(spp start-report :u -2)
(spp detected-sound  :u 10)
(spp sound-respond-low :u 10)
(spp sound-respond-medium :u 10)
(spp sound-respond-high :u 10)

Dagegen ist PostScript als Sourcecode ja geradewegs simpel zu verstehen. Natürlich steckt in solchen Zeilen eine innere Logik drin, sonst könnte der Code ja nicht ausgeführt werden, aber diese Logik gab es damals im Mission Planner von DeepSpace 1 auch …

Ray Solomonoff

Um Künstliche Intelligenz zu verstehen muss man vor allem ihre Wende, die Nouvelle AI, verstehen. Diese entstand Ende der 1980’er und teilt die KI-Forschung in zwei große Bereiche ein: die GOFAI (auch als Strong AI) bekannt von 1950 bis 1990 und die Nouvelle AI (ab 1990 bis heute). Aber was genau war eigentlich die GOFAI? Darum soll es im folgenden gehen.

Innerhalb der klassischen akademischen Künstlichen Intelligenz gibt es sehr viele unterschiedliche Richtungen, aber wenn man alles mit nur einem Wort beschreiben möchte, dann ist „Ray Solomonoff“ wohl der passende Begriff dafür. Dieser Begriff steht einerseits für die Person selber die 2009 verstorben ist, aber gleichzeitig steht es auch für ein Theoriegebäude, von dem man heute weiß dass es falsch war. Doch zu den Details:

Im Kern hat sich Solomonoff mit dem beschäftigt, was auch Alan Turing angetrieben hat, eine mathematische Theorie der Berechenbarkeit zu entwickeln. Die Idee war es, Computer nicht nur von ihrer praktischen ingenieurmäßigen Seite aus zu beleuchten sondern von dem was später als theoretische Informatik bezeichnet wurde. Konkret geht es um die Frage was ein Algorithmus ist und welche Probleme lösbar sind und welche nicht.

Die Grundannahme von Solomonov lautet ungefähr, dass man topdown anhand einer mathematischen Theorie definieren kann was Computer können und wie man sie programmiert. Das hat den schönen Effekt, dass Programmieren selber zu einer unwichtigen — ja unwissenschaftlichen — Sache wird, und stattdessen die Mathematik den Ton angibt. Und auf diesem Gebiet fühlt sich die akamemische künstliche Intelligenz zu Hause, Mathematik ist etwas was man in Vorlesungen vermitteln kann, was man abfragen kann und was man beweisen kann. Aber ist Mathematik wirklich die geeignete Sprache um über Computerprobleme zu disktuieren? Anfangs scheint es so, beispielsweise trifft die Kolomogorov-Komplexität Aussagen darüber wie die maximale Kompressionsrate für eine Zahlenfolge ist und das Konzept der Gödelnummern formalisiert den Raum aller nur möglicher Programme. Die spannende Frage lautet nun, wie diese Konzepte praktisch umgesetzt werden.

Zum einen dadurch, dass bis heute sogenannte BusyBeaver Wettbewerbe ausgetragen werden, die im wesentlichen darin bestehen, dass man zeigen möchte, dass es unmöglich ist für einen Computer dieses Problem zu lösen weil der Lösungsraum zu groß ist. Weiterhin mündet die Solomonoff-Theorie darin, dass im Bereich der Artifical General Intelligence darüber diskutiert wird ab wann Maschinen schlauer sind als Menschen, und wie man eine Software schreibt, die sich selber programmieren kann.

Ray Solomonoff hat stark dazu beigetragen, den Computer aus der Künstlichen Intelligenz zu entfernen und stattdessen den Fokus auf Berechenbarkeit, np-complete und LISP gelegt. Im Grunde hatte die GOFAI damit über 40 Jahre lang eine Begründung dafür, warum sie keinerlei Resultate erzielt. Weil es nähmlich mathematisch beweisbar absolut unmöglich ist eine denkende Maschine zu konstruieren, und das ist dann auch jene Schlussfolgerung um die es in Wirklichkeit bei der GOFAI geht. Das mag jetzt etwas paradox klingen, dass ausgerechnet eine Wissenschaft, die sich selbst als Künstliche Intelligenz bezeichnet, selbst dieser am meisten im Wege steht aber so ist es. Bis heute bewegen sich in der AGI Community ausschließlich sogenannte Neoludditen, welche den Computereinsatz kritisch sehen und dafür philosophische Gründe liefern.

Der Witz ist, dass man bereits vorher weiß wie ein „Strong AI“ Projekt endet: als kompletter Fehlschlag. Und somit wird dadurch bestätigt, was die GOFAI am liebsten hören möchte: dass es mathematisch beweisbar Grenzen gibt in dem was Computer können. Das es eben doch nur Maschinen sind, welche ein mathematisches Konstrukt namens Turing-Maschine abbilden. Aber wodurch genau ist es unmöglich, dass eine mathematische Theorie zu künstlicher Intelligenz führt? Diese Erklärung ist Solomonoff bis heute schuldig geblieben. Dazu vielleicht ein kleines Beispiel:

Angenommen, man schreibt in der Programmiersprache LISP ein kurzes Programm im Umfang von 100 kb. In diesem LISP Code wird dann eine mathematische Formel implementiert, welche den LISP Code auf wunderbare Weise so abändert, dass dabei eine Kostenfunktion minimiert wird. Ein solches Programmierprojekt ist ungefähr das, was die GOFAI seit 40 Jahren so macht und es gibt dutzende Beispiele dazu. Was erhält man dadurch? Man bekommt eine Software die zu absolut gar nichts in der Lage ist, außer dass sie eben Unsinn produziert auf einem sehr hohen Niveau. Und obwohl das ganze eindeutig als Strong AI bezeichnet wird, hat es das genaue Gegenteil bewiesen. Es wurde dargelegt, dass man so keine künstliche Intelligenz bauen kann, und weil das ganze bereits mit mathematischem Background und damit sehr kompliziert abläuft, ist es ausgeschlossen, dass es irgendwie anders gehen könnte.

Obwohl es vielleicht wie Spott klingt, aber kein einziges AI-Projekt was sich auf Solomonoff beruft (und davon gibt es jede Menge) ist tatsächlich nützliche Software, in dem Sinne dass diese Programme „image parsing“ könnten, Sprachausgabe oder logisches Schließen. Was kann man daraus lernen? Erstens, ist die mathematische Fundierung des Computers als Turing-Maschine absolut korrekt und zweitens ist vollkommen nutzlos.

Und genau an dieser Stelle kommt die Nouvelle AI ins Spiel. Dort wurde der ketzerische Versuch unternommen dieses Zopf an akademischer Künstlicher Intelligenz einfach abzuschneiden. Kurz gesagt interessiert sich die Nouvelle AI nicht für Fragen wie np-complete, turing-mächtig, algorithmische Komplexität oder Permutation von Programmcode. Vielmehr wird Informatik als nicht-mathematisch betrachtet.

Der wesentliche Unterschied zur GOFAI besteht darin, dass man die Zielstellung „Strong AI“ oder „General Intelligence“ als Hinderniss versteht. Als etwas, was der eigentlchen Zielstellung im Wege steht. Denn im Grunde brauchen wir keine denkende Maschinen oder ähnliches, sondern es ist bereits ausreichend wenn man eine Software schreibt, die Schach spielt, die Objekte erkennen kann oder die Spiele spielen kann. Denn solche Software kann man programmieren, das wurde nicht durch Theorien ermitteln sondern hat sich in der Praxis so gezeigt.

Auch heute noch gibt es viele Leute die Ray Solomonoff als Genie verehren. Sie tun dies, weil ihnen Ray erzählt hat, dass es ok ist, wenn man nicht programmieren kann, dass es in Ordnung ist wenn man Angst vor der Maschine hat und auf Distanz geht zu dieser neuen Technik. Und mehr noch, nach Solomonoff ist der Computer eigentlich kein Computer, sondern es ist eine Art von mathematischem Puzzle. Und deshalb kann man es auch mit Formeln und Logik verstehen und dessen Grenzen aufzeigen. Im Grunde gibt es keinen Unterschied zwischen GOFAI und dem Skeptikern der Künstlichen Intelligenz. Beide behaupten, dass die Grenzen des Computers durch die Mathematik gesteckt sind und nicht beliebig erweiterbar. Im Grunde stellt die Singularity-Bewegung welche ebenfalls auf Solomonoff zurückgeht eine Art von Lebenslüge da. Einerseits weiß man dass 50 Jahre LISP Forschung keinerlei Ergebnisse gebracht haben, andererseits stellt man in Aussicht, dass es in 10 Jahren denkende Maschine gibt, welche den Menschen an Intelligenz weit überlegen sind. Und obendrein bezeichnet man Software welche der Narrow AI zugerechnet wird, nicht als echte Künstliche Intelligenz sondern spricht ihr schlichtweg die Leistungsfähigkeit ab.

Interessanterweise war der Moment wo man sich von der GOFAI verabschiedet hat (Ende der 1980’er Jahre) zugleich der Moment wo die Künstliche Intelligenz erfolgreich wurde. Das war jene Zeit ab der Schachprogramme gegen Menschen gewannen, wo Roboterwettbewerbe ausgetragen wurden die tatsächlich in Resultaten mündeten und wo sogenannte Ingame-AI entstand. Man kann also sagen, dass von einem computerzentrierten Standpunkt das Ende der GOFAI ein Glücksfall war, weil dadurch der Ẃeg frei wurde für eine codegetriebene Künstliche Intelligenz. Damit ist gemeint, dass man jedes gewünschte Verhalten der Software in einer der Mainstreamprogrammiersprachen von Hand vorgibt was extrem zeitaufwendig ist, allerdings zu überzeugenden Resultaten führt. Der Witz ist, dass man mit codezentrierter Künstlicher Intelligenz offenbar fast alle Probleme lösen kann und wo Roboter dennoch scheitern (bestes Beispiel ist Honda Asimov der vor Livepublikum von der Treppe gestürzt ist) liegt es nicht etwa daran, dass man auf mathematisch oder kognitionswissenschaftlicher Ebene das Problem des Denkens nicht erfasst hätte, sondern es liegt daran dass in der Asimov Software ein Bug vorhanden war, den man fixen kann und danach wird der Roboter nicht mehr von der Treppe fallen. Deshalb heißt das ganze Verfahren auch Bottom-Up Künstliche Intelligenz weil es keine eigentliche Theorie mehr gibt, an der man sich abarbeitet, sondern eine Software ist dann erfolgreich, wenn sie einen konkreten Wettbewerb gewonnen hat.

Man kann sagen, durch Nouvelle AI hat sich die Künstliche Intelligenz von ihrem früheren künstlerisch-mathematischen Dogma verabschiedet und sich stärker an eine ingineursmäßige hands-on-Mentalität angenähert, wo nicht irgendwelche Professoren in gebügelten Hemden darüber entscheiden was auf dem Microcontroller läuft sondern Arbeiter im ölverschwierten Blaumann.

FAILED ROBOTICS
Das schöne an einer mathematischen Theorie ist, dass man davon ausgehend Vorhersagen über die Wirklichkeit machen kann. Und das ist dann auch die wichtigste Eigenschaft warum GOFAI solange sich halten konnte. In der Zeit bis ca. 1990 war relativ einfach zu sagen, was geht und was nicht geht. Und die gesellschaftliche Funktion von Solomonoff, Minsky und all den anderen war es immer zu zeigen, dass zwar einerseits von selbstdenkenden Maschinen gesprochen wurde, aber konkrete Resultate nicht verfügbar waren. Dieses Spannungsverhältnis besteht bei Nouvelle AI so nicht mehr. Dort gibt es bekanntlich keinerlei philosophische Idee, sondern es gibt konkrete Roboter und konkrete Software die irgendwas macht. Das Problem dabei ist, dass man hier nicht sagen kann, wohin das alles führen wird. Man kann lediglich für die Gegenwart an konkreten Beispielen die Grenzen solcher Systeme aufzeigen, beispielsweise immer dann, wenn ein fußballspielender Roboter am Tor vorbeischießt. Nur die Ursache für diesen Fehlschlag kann man (leider) nicht mehr auf eine bestimmte Theorie zurückführen, sondern dürfte im Programmcode zu suchen sein, der in der nächsten Version das Problem gefixt haben dürfte. Und so kann man seit mehrere Jahren beobachten, dass die Fehler schrittweise immer weniger werden.

Selbst wenn eine konkrete Robotersoftware derzeit nicht in der Lage ist, auf einem Bild ein Objekt zu erkennen kann man diesen Umstand nicht verallgemeinern. Hin dazu, dass es niemals einen Roboter geben wird, der diese Aufgabe bewältigen könnte. Im Gegenteil, der Schwierigkeitsgrad in den Roboterwettbewerben muss jedes Jahr angehoben werden, um es den Teams nicht zu einfach zu machen. Mitlerweile ist man schon soweit, dass sogar selbstfahrende Autos die über Sensoren ihre Umgebung wahrnehmen als nicht mehr anspruchsvoll genug betrachtet werden. Offenbar hat die Nouvelle AI die Büchse der Pandorra geöffnet, und zwar dehingehend dass sogar sehr komplexe Systeme plötzlich denkbar sind. Systeme, die nicht auf mathematischen Prinzipien basieren sondern als Social Robotics bezeichnet werden.

AUTONOMIE
GOFAI war immer eine Erzählung von übermächtigen Computern. Einmal in Form von Dytopien was alles passieren kann, wenn eine Maschine plötzlich zu denken anfängt (siehe Filme wie „The forbin project“) aber auch in der Realität durch die Erforschung von lernfähigen Algorithmen und Expertensystemen. Diese Erzählung hatte die Aufgabe Kontrollverlust zu thematisieren. Im Kern geht es ungefähr um folgendes: ein durchgeknallter Informatiker erfindet eines Tages eine Software die wie ein Virus funktioniert, er startet diese Software und das Programm beginnt sich selbstständig weiterzuentwickeln. So dass es schlauer wird als der ursprünglicher Programmierer und von niemandem mehr gestoppt werden kann. Das ist in aller Kürze der Kern von GOFAI und spielt mit der Angst vor Maschinen die einen eigenen Willen entwickeln und sich gegen ihre Schöpfer wenden.

Im Gegensatz dazu gibt es bei Nouvelle AI, welche gar keine richtige Künstliche Intelligenz darstellt diese Gefahr nicht. Wenn man keine Software entwickelt, die ihren Code zur Laufzeit verändern kann, dann wird dieser Fall folglich auch nicht eintreten. Sondern bei allen Robotersystemen die nach dem Prinzip der Nouvelle AI entwickelt wurden, gab es immer Programmierer die exakt wussten was das Programm gerade tut, insofern kam Kontrollverlust in der Realität gar nicht vor. Es ist fraglich ob Nouvelle AI überhaupt noch das eigentliche Thema von der denkenden Maschine betrifft, oder ob es sich nicht um eine komplett neue Geschichte handelt. Eine Zukunftsvision ohne denkende Maschinen vielleicht?

Erstaunlicherweise wurde diese Vision in der Science-Fiction-Literatur bereits vorgedacht, dort im Schlüsselroman „Gibson/Sterling: The Difference Engine“ aus dem Jahr 1990. Dort wird eine Zukunft beschrieben in der Computer und Roboter weitestgehend abgeschafft wurden und noch noch als Lochkarten-Systeme und primitive Holzandroiden auftreten. Eine Welt, die weder Computer und erst recht nicht Künstliche Intelligenz zu kennen scheint. Und erstaunlicherweise gewinnt diese Utopie des Steampunks breite Anhänger, so dass es mitlerweile schick ist, wenn man seinen Computer im Retrostil mit Dampfkraft betreibt. Diese Idee des „in der Vergangenheit liegt die Zukunft“ besagt unmißverständlich dass die Leute keine Lust mehr haben auf irgendwelche Superintelligenten Maschinen wie sie die GOFAI prognostiziert und welche im Kern die Kontrolle über die Menschen haben.

Das interessante am Steampunk-Zeitalter ist, dass es einerseits etwas mit Technik zu tun hat, anderseits jedoch ohne Künstliche Intelligenz auskommt. Das Steampunk-Universum gilt als Vorläufer des Computerzeitalters und beschreibt eine Zeit wo es noch keine Singularity gab. Aber warum fastziniert Steampunk die Menschen? Ist es wirklich so — wie lange angenommen — eine Gegenbewegung zur Technisierung wo man sich wenigstens im Roman in eine Welt zurückdenken möchte, wo es noch keine Computer gab, oder ist Steampunk nicht eher eine viel genauere Beschreibung der Zukunft weil sich die die Annahmen der GOFAI als falsch herausstellen?

SOLOMONOFF
Auf der Webseite http://world.std.com/~rjs/publications/pubs.html finden sich einige wichtige Arbeiten von Solomonoff, wobei insbesondere die früheren Werke interessant sind. Und zwar deshalb weil man beispielsweise erfährt, dass bereits in den 1950’er die Leute darüber nachgegrübelt haben, wie eine Artifical Intelligence aussieht, wie sie programmiert wird und welche Folgen sich für die Menschheit daraus ergeben. Man kann daraus erkennen, dass AGI keineswegs erst im Internetzeitalter durch Ray Kurzweil erfunden wurde, sondern dass AGI im Grunde eine sehr alte Erzählung ist. So steht in einem Text aus dem Jahr 1956 von Solomonoff beispielsweise drin:

„A machine is described which is designed to operate as human beeings seem to.“

Dann folgen noch einige Erläuterungen zu der verwendeten Methode (inductive inference) und eine komplette mathematische Darstellung des ganzen. Es würde nicht verwundern wenn Solomonoff seine Idee dann als „Skynet“ bezeichnet. Was kann man daraus ableiten? Man kann daraus ableiten, dass innerhalb der GOFAI welche sowohl eine Wissenschaft als auch eine Epoche beschreibt, die Leute tatsächlich geglaubt haben, dass man sich mit denkenden Maschinen näher beschäftigen müsste. Entweder weil die Forschung schon soweit sei oder aber bald das Thema akut wird. Man kann die Zeit von 1950-1990 regelrecht als Paranoia vor Künstlicher Intelligenz klassifizieren die dadurch gespeist wurde, dass es keinerlei praktische Beweise für derartige Software gab, nichts desto trotz die Wissenschaft von nichts anderem geredet hat.

Die Arbeiten von Solomonoff und anderen Vertretern der GOFAI kann mit damit zusammenfassen, dass sie auf der Suche waren nach Sourcecode. Sie haben angenommen, dass es möglich wäre Sourcecode über mathematische Algorithmen zu finden. Das also die Turing-Maschine ihr eigenes Programm alleine programmiert und sich dadurch unabhängig macht von einem externen Programm was ihr von außen zugeführt wird. Man kann sagen, dass GOFAI das genaue Gegenteil von Software-Engineering darstellt, wo es zwar ebenfalls um das Finden von Sourcecode geht hierbei allerdings das manuelle Programmieren im Vordergrund steht. Denn fakt ist eines, und hier unterscheiden sich beide nicht: ohne Sourcecode kann ein Computer nichts tun.

Und hier wird vielleicht auch deutlich, warum GOFAI inzwischen als nicht mehr zeitgemäß gilt: weil es ihr nicht gelungen ist, den Sourcecode tatsächlich zu finden. Eine mathematische Formeln die den kompletten Gödelraum aller Programme durchsucht und als Antwort genau den passenden Sourcecode zurückgibt der wiederum ausgeführt wird existiert nicht. Daraus kann man folgern, dass der mathematische Ansatz des programmierens gescheitert ist. Und die Nouvelle AI hat das als erster begriffen.

Interessant ist auch folgendes Zitat von Solomonoff was aus einer seiner letzten Arbeiten stammt (aus dem Jahr 2011):

„A system incorporating some of the features we have discussed has been pro-
grammed by Schmidhuber (Sch 02). It was able to discover a recursive solution
to the \Tower of Hanoi“ problem, after Ønding a recursive solution to one of its
earlier, easier problems.“

Das sind die Worte eines sehr erfahrenen Wissenschaftlers der sich 60 Jahre lang mit Künstlicher Intelligenz beschäftigt hat und quasi als Höhepunkt seines Lebenswerkes von einem Algorithmus zu berichten weiß, der „Towers of Hanoi“ spielen kann. Wohlgemerkt, es handelt sich dabei um ein Spiel, was Erstsemsterstudenten als Hausaufgabe lösen müssen, und wofür der Quellcode bei Stackoverflow bereitsteht und man ihn einfach per copy und paste als Java-Code verwenden kann.

Es ist natürlich schwer das Lebenswerk von Solomonoff angemessen zu würdigen, angesichts seiner Bedeutung für die AGI-Community. Am ehesten könnte man ihm bescheinigen, dass es ihm gelungen ist eine „True AI“ zu entwickeln, also eine Künstliche Intelligenz die mit Hilfe von mathematischen Formeln denken kann.