Schwache Künstliche Intelligenz


Motivation
Künstliche Intelligenz behandelt die Themen, die etwas mit Zukunft zu tun haben. Genauer gesagt mit der Zukunft von denkenden Maschinen. Deshalb stellt sich zunächst einmal die Frage: „`Was ist Denken?“‚ Allerdings ist diese Frage schonwieder offtopic im Bereich der schwachen KI, vielmehr ist die Frage nach den Grundlagen des Denkens etwas typisches für dessen Gegenteil die „`Strong AI“‚. So muss man zunächst einmal beantworten was „`Starke Künstliche Intelligenz“‚ ist um dann eine Ahnung zu bekommen, was es nicht ist.

Als „`Strong AI“‚ werden jene Verfahren bezeichnet welche in der Informatik-Geschichte von ca. 1950 bis 1990 erforscht wurden. Im Kern ist das die komplette Palette was man sich nur vorstellen kann, angefangen von Expertensysstemen über neuronalen Netzen bis hin zu Maschine Learning ist alles „`Strong AI“‚. Gemeinsames Merkmal dieser Bewegung ist die Erforschung des menschlichen Denkens mit wissenschaftlichen Methoden und so hat die „`Strong AI“‚ einen historisch gewachsenen Background in den Kognitionswissenschaften, die sich ebenfalls mit dieser Frage beschäftigen.

Nur, wenn bereits die „`Strong AI“‚ sich dem Thema Denken angenommen hat, was möchte dann „`Weak AI“‚ erreichen? Im Namen ist ebenfalls das Wörtchen „`intelligence“‚ enthalten aber um welche genau handelt es sich dabei? Die wohl beste Abgrenzung zwischen Strong und Weak AI kann getroffen werden anhand des Wissenschaftsbegriffes: Strong AI ist eine Wissenschaft während Weak AI dem Engineering zugerechnet wird. Wo Strong AI an Metamodellen interessiert ist, möchte Weak AI konkrete Lösungen finden.

Der eigentliche Grund sich mit Weak AI näher zu beschäftigen ist darin zu suchen, dass Strong AI nach Meinung ihrer Kritiiker nicht funktioniert hat. Bis zum heutigen Tage gibt es keine Roboter und es ist nahezu ausgeschlossen, dass mit Methoden der Strong AI in den nächsten Jahrzehnten der Durchbruch gelingen wird. Das Grundproblem besteht darin, dass weder die Biologie noch die Psychologie erklären kann, wie menschliches Denken funktioniert. Man hat im Laufe der Jahre zwar unterschiedliche Theorien aufgestellt, nur ist keine einzige davon geeignet, um menschliches Denken auf einem Computer zu reproduzieren. Insofern ist Weak AI zunächst einmal mit dem Eingeständnis des Scheiterns der Strong AI verbunden.

Die Grundidee von Weak AI besteht darin, nicht so sehr vom Ziel her zu denken, sondern sich lieber mit dem machbaren zu beschäftigen. Die Frage ist dabei simpel: angenommen, wir haben einen Kleinstcomputer wie den Rasberry PI und angenommen wir haben einen Spielzeugroboter der daran angeschlossen ist, was kann man mit geschickter Programmierung aus dem System herausholen? Das ist im Kern die Frage, um die es geht.

Der Erfolg von Weak AI misst sich weniger darin, ob es gelingt einen Menschen nachzubauen, als vielmehr darin ob es gelingt frührere Entwicklungen zu übertrumpfen, also bessere Roboter zu bauen, als zuvor. Besser meint in diesem Kontext vor allem „`bessere Software“‚.

Softwareentwicklung
Der Dreh und Angelpunkt von Schwacher Künstlicher Intelligenz ist die Software. Sie entscheidet darüber, ob eine Maschine eine Aufgabe erfüllt oder nicht. Die entscheidene Frage lautet deshalb wie moderne Softwareentwicklung aussieht. Die Antwort lautet:

Java
Eclipse
SVN
Jira
Linux
Zusatzbibliotheken

Das sind die wichtigsten Zutaten um gute Software zu entwickeln. Nun mögen vielleicht einige einweden, eine solche Liste wäre banal, weil man mit diesen Tools auch normale Software wie z.B. Textverarbeitungsprogramme oder Spiele entwickeln könnte. Nichts desto trotz ist es wichtig, darauf hinzuweisen. Denn gerade im Bereich der Strong AI hält sich der Mythos, dass gänzlich andere Tools eingesetzt werden müssten, weil man nur so intelligente Syssteme erhalten würde. Dieser Mythos entstand in den 1980’er Jahren mit der 5. Computergeneration als explizite Programmiersprachen für KI-Systeme entwickelt wurden (LISP, Prolog) und sogar eigene Hardware nur für Expertensysteme zur Verfügung stand (LISP-Machines).

Im Gegensatz dazu kann man die obige Liste eher dem Bereich der vierten Computergeneration zuordnen, technologisch entstammen sie noch den 1970’er Jahren als Versionsverwaltungssysteme, objektorierntierte Programmierung und UNIX erfunden wurde.

Die bisher offen gebliebene Frage lautet, wie es gelingt mit Hilfe derartiger Tools Roboter und andere intelligente Systeme zu entwickeln. Die Antwort darauf ist ebenfalls simpel: ein intelligentes System ist nicht selbst intelligent, sondern vielmehr muss derartige Software besondere Anforderungen erfüllen. Diese anforderungen wiederum sind dem Bereich der Künstlichen Intelligenz zuzuordnen, wie z.B. Bilderkennung, Sprachinteraktion und komplexe Entscheidungen treffen.

Dazu vielleicht ein kleines Beispiel: Angenommen, die Anforderung lautet einen Roboter zu bauen der ein Labyrinth durchqueren kann. Dann ist das unzweifelhaft eine Anforderung aus dem Bereich der Robotik/Künstliche Intelligenz. Man könnte diese Anforderung noch weiter ausschmücken und sagen, der Roboter muss sich in diesem Labyrinth orientieren, er muss wissen wo er gerade ist und er muss denken um den Ausgang zu finden. Ja mann könnte die Anforderung sogar in eine Richtung verfeinern, in der man den Roboter als menschenähnlich zu beschreiben als fordern, der Roboter soll sich freuen wenn er den Ausgang erreicht.

Im zweiten Schritt gilt es nun zu definieren wie man diese Anforderungen erfüllt. Was nicht funktioniert ist es, die Anforderung so umzusetzen wie sie formulliert wurden, also einen menschlichen Roboter zu bauen der mit einem Gehirn denkt. Es funktioniert deshalb nicht, weil die Weak AI nur in der Lage ist mit einer Programmiersprache technische Abläufe zu realisieren, nicht jedoch das erzeugen kann, was gemeinhin als „`Strong AI“‚ bekannt ist. Anders gesagt, es ist absolut unmöglich mit Java, Eclipse und Jira eine denkende Maschine zu entwickeln, die sich freut wenn sie den Ausgang eines Labyrinth erreicht. Insofern steht die lapidare Feststellung, dass die o.g. Anforderungen sich nicht 1:1 realisieren lassen. Dennoch kann man versuchen, mit aktuellen Entwicklungstools zumindest teilweise die Anforderungen erfüllen so dass am Ende eine technische Lösung für das Problem dabei herauskommt.

Was kann man von einer Lösung konkret erwarten? Man kann ein Java-Programm erwarten, was den Roboter durch ein Labyrinth bewegt, also auf einer sachlichen Ebene ungefähr das ausführt was gewünscht ist. Und man kann erwarten, dass die Software bei Erreichen des Ausgangs eine Melodie abspielt um so auszudrücken dass der Roboter sich freut. Und über diesen Unterschied zwischen Anforderung und erreichbaren Ergebnis sollte man sich klar sein. Und das ist zugleich der Grund warum „`Weak AI“‚ einen besonders schlechten Ruf besitzt, weil offenbar diese Disziplin von Anfang an die Anforderungen ignoriert und nicht wirklich das liefert was gewünscht ist.

Anforderungen definieren
Bei der „`Weak AI“‚ müssen sich die Anforderungen an das Ergebnis anpassen und nicht etwa umgekehrt. Das ist deshalb erforderlich, weil es sehr leicht ist, beliebig schwierige Anforderungen zu definieren es aber nicht immer möglich ist, dafür tatsächlich Software zu entwickeln. Eine Aufgabe wie „`Programmieren Sie einen Roboter der Laufen kann“‚ ist schnell hingeschrieben, um jedoch die passende Software zu entwickeln können Jahre vergehen wenn es denn überhaupt gelingt. Im Grunde muss deshalb schon bei der Anforderungsdefinition Rücksicht genommen werden auf den aktuellen Stand der Technik.

Die spannende Frage lautet derzeit: „`Was ist möglich?“‚ Im Bereich klassischer Robotik relativ wenig. Sehr hoch entwickelte Roboter sind aktuell in der Lage Fußball zu spielen oder Treppen zu steigen. Das ist aber bereits das Maximum. Eine realistische Anforderung für ein neues Projekt muss deshalb unterhalb dieser Obergrenze angesiedelt sein, und zwar deshalb weil es sehr viel wahrscheinlicher ist, das ein Softwareprojekt scheitert als dass es einen Durchbruch ermöglicht. Im Bereich virtuelle Realität können die Anforderungen höher sein, hierbei ist der aktuelle Stand der Technik, dass 3D Charaktere Gefühle ausdrücken, über Sprache interagieren und sich in unebenem Gelände bewegen können.

Allgemein kann man sagen, dass die Anforderungen an ein AI-System nur so hoch sein dürfen, damit halbwegs gute Softwareentwickler damit nicht überfordert sind. Damit ist einerseits der nötige theoretische Background in Sachen Motion Planning, inverse Kinematik usw. gemeint aber auch der Umfang eines Softwareprojektes. Als Obergrenze gilt dabei der Richtwert von 1 Mio Lines of Code, für diesen Codeumfang gibt es bereits Beispiele, dass dieser von einem Team zu handeln ist, für größere Projekte gibt es derzeit keine Beispiele, jedenfalls nicht im Bereich Künstliche Intelligenz.

Ontologien
Viele Jahre gab es in der Informatik die Idee, man könnte Künstliche Intelligenz mit Hilfe von Wissensnetzen (Ontologien) erreichen. Das man also Alltagswissen in einer Datenbank strukturiert speichert um damit dann maschinelles Schlussfolgern zu ermöglichen. Das Cyc Projekt hat sich dieser Idee verschrieben aber auch das Semantic Web basiert darauf. Der Charme von Ontologien besteht darin, dass es sehr viel leichter ist, eine Wissensdatenbank zu erstellen, als wollte man im gleichen Umfang Programmcode schreiben. Auch für Ungeübte ist es möglich, eine 100 Kilobyte Datei mit Wissen zu erstellen und damit einen Ausschnitt aus der Wirklichkeit zu beschreiben. wollte man hingegen eine 100 kb große Java-Datei schreiben, welche Klassen und for-Schleifen enthält ist die Aufgabe ungleich schwieriger.

Leider ist dieses Konzept nicht aufgegangen, Ontologien haben sich in der Praxis nicht bewährt, sie können traditionelle Programmierung nicht ersetzen. Und nützt es auch nichts, wenn sie immer umfangreicher werden. Es bleibt die Problematik bestehen dass Menschen zwar mit natürlichsprachlichen Texten sehr viel anfangen können, der Computer jedoch nicht. Das bedeutet, die einzige Methode um einem Computer zusätzliche Funktionalität einzubauen besteht darin, es in Java-Code zu verpacken. Und das ist sehr aufwendig. Denn Programmieren ist etwas, was nur wenige können und zudem ist einmal erstellter Java-Code nur schwer zu warten. Nichts desto trotz ist Sourcecode die einzige Methode wie man Anforderungen erfüllen kann. Man kann sagen, das Vorhandensein bzw. das Nicht-Vorhandensein von Quellcode macht den eigentlichen Unterschied aus.

Grenzen Künstlicher Intelligenz
Grundsätzlich geht es weniger um die Frage ob Roboter möglich sind, sondern die Frage lautet eher wie intelligent sie werden können. Damit ist nicht ihre innere Funktionsweise gemeint, also die Frage ob sie denken können oder nicht, sondern vielmehr welche äußere Anforderungen Roboter erfüllen können und welche nicht. Beispielsweise ist vom Roboter „`Honda Asimo“‚ bekannt, dass er die Anforderung „`Treppe steigen ohne herunterzufallen“‚ nicht erfüllen kann. Deshalb ist er nicht besonders intelligent. Aber angenommen, und damit ist zu rechnen, man verbessert die Software, bis zu welchem Grad kann man dieses Spiel treiben? Gibt es irgendwo ein Limit das Roboter prinzipiell nicht mehr erfüllen können? Diese Frage ist derzeit nur indirekt zu beantworten. Robotik im Reallife ist dafür ein denkbar schlechter Maßstab, denn die am höchsten entwickelte Robotik befindet sich derzeit im Cyberspace. In Computerspielen und anderen virtuellen Räumen ist es leichter intelligente Software zu entwickeln und man kann deshalb die Grenze des Machbaren weiter ausdehnen.

Das vorstellbare Maximum eines intelligenten Roboters dürfte vermutlich eine Maschine sein, die intelligenter ist als ein Mensch. Wiederum geht es darum, die äußeren Anforderungen zu erfüllen. Im Bereich Jeopardy ist beispielsweise IBM Watson intelligenter als jeder lebende Mensch. In vielen anderen Bereichen ist es umgekehrt. Beispielsweise gibt es derzeit keine Roboter die in der Lage sind, Radiogeräte zusammenzubauen und zwar schneller und präziser als Menschen es vermögen. Es stellt sich hier die Frage, ob sowas prinzipiell nicht möglich ist, weil Roboter immer programmiert werden, während der Mensch die Aufgabe irgendwie anders löst, oder ob es lediglich eine Frage der Zeit ist, bis Roboter diese Aufgabe ebenfalls erfüllen.

Und an dieser Stelle ergibt sich ein grundlegendes philosophisches Problem. Angenommen es gelingt einen Roboter zu bauen, er schneller laufen kann als ein Mensch, der besser Gegenstände greifen kann, der besser Autofahren kann und der besser Singen kann als jeder Mensch, hat damit die Maschine dann den Menschen übertrumpft? Rein ökonomisch muss man das mit Ja beantworten. Ab dem Moment wo Roboter besser Auto fahren können als Menschen werden die Firmen nur noch Roboter einsetzen um LKW zu fahren. Insofern hat der Mensch dann auf dem Arbeitsmarkt den Konkurrenzkampf gegen Roboter verloren. Es ist sogar vorstellbar, dass auf jedem ökonomischem Sektor dieser Fall eintreten wird, und keine Aufgabe in der Wirtschaft noch von Menschen erledigt wird. Aber sind deshalb Roboter auch auf grundsätzlicher Ebene besser als Menschen?

Die Beantwortung dieser Frage hat etwas damit zu tun, als was man Menschen sieht. Sind es Lebewesen die motorische Handlungen ausführen oder gehört zum Menschsein noch einiges mehr wie z.B. Denken und Bewusstsein? Fakt ist, dass man mit „`Weak AI“‚ weder Denken noch Bewusstsein von einer Maschine emulieren lassen kann, man kann ihr also nicht beibringen so zu denken wie ein Mensch es tun würde. Und obwohl IBM Watson zwar formal Jeopardy gespielt und gewonnen hat, hat er es nicht wirklich gespielt. Ihm wurde zwar in der Show die Rolle eines Mitspielers zugewiesen, tatsächlich war Watson jedoch eher eine Art von Schiedsrichter. Im Grunde hatte Watson ungefähr ähnlich viel Intelligenz wie eine Kamera im Fußballstadion die ermittelt ob der Ball ins Tor getroffen hat oder nicht. Daraus jedoch zu folgern, die Kamera würde am Spielgeschehen teilnehmen ist absurd.

Das bedeutet, obwohl realistischerweise Roboter und intelligente Maschinen irgendwann schneller denken werden als Menschen und besserere Motorik besitzen werden als Menschen werden sie jedoch niemals gleichwertige Gegenspieler sein können. Vielmehr ist die Gleichsetzung von Mensch und Maschine eine Hypothese die nur in der „`Strong AI“‚ vertreten wird, nicht jedoch in der „`Weak AI“‚.

Um den Unterschied zwischen Menschen und Roboter stärker herauszuarbeiten empfielt es sich deren Entstehung genauer zu untersuchen. Wie entstehen Menschen? Rein biologisch natürlich, und Menschen lernen durch eine Umwelt und irgendwann sterben sie. Menschsein ist weniger das was man aktuell gerade ist oder kann sondern viel entscheidener ist Historie die dazu geführt hat, wie man zu dem geworden ist was man heute ist. Bei Robotern hingegen ist die Entstehungsgeschichte grundsätzlich eine andere. Ein Roboter entsteht dadurch, dass eine Software gestartet wird und diese Software musste zuvor programmiert werden. Und diese Entstehungsgeschichte wird auch dann noch Relevanz haben, wenn die Roboter der Zukunft wesentlich leistungsfähiger und intelligenter sind als heutige Modelle.

Und hier erkennt man vielleicht, dass die Angst vor übermächtigen Robotern unbegründet ist. Es ist technisch nicht möglich, dass Roboter schlauer sind als ihre Programmierer und auch IBM Watson ist nicht intelligenter als diejenigen die ihn programmiert haben. Sondern die Vorstellung, dass Roboter den Menschen überflügeln könnten und statt seiner sich die Welt untertan machen ist Ausdruck einer tiefen Unkenntnis darüber wie Software funktioniert und wie sie erstellt wird. Fakt ist, dass obwohl bis zum heutigen Tage bereits sehr viele intelligente Programme erstellt wurden, es noch niemals in der Informatik-Geshcichte einen Fall gegegen hat, wo eine Maschine sich selbstständig gemacht hat oder ihren eigenen Quellcode modifzieren konnte ohne dass der Programmierer dies bemerkt hätte. Was es jedoch gibt sind zahlreiche Fälle wo behauptet wird, dass eine Software in der Lage wäre sich von alleine weiterzuentwickeln und aus Fehlern lernen könnte, tatsächlich genau diese Fähigkeit jedoch nicht vorhanden war.

Und das erstaunliche ist, je höher entwickelt eine Software ist, desto weiter entfernt ist sie davon eigenständige Wege zu gehen. Extrem hochentwickelte Software zu Steuerung von driverless Cars ist in der Regel mit expliziten Notaus-Schaltern ausgestattet damit jederzeit das Programm unterbrochen werden kann. Das heißt, diese Programme kann man sogar leichter unterbrechen und leichter die Kontrolle zurückgewinnen als bei simplereren Programmen ohne Künstliche Intelligenz. Vielmehr ist die leichte Zurückerlangung der Kontrolle eine Art von Feature die innerhalb des Programms implementiert ist. Und die Abwesenheit eines Notaus-Schalters ist keineswegs ein Zeichen für einen besonders hochentwickelten Roboter aus der Zukunft, sondern darf als Bug betrachtet werden. Es ist sogar ausgesprochen simpel einen Roboter zu bauen der über einen solchen Schalter nicht verfügt. Man muss ihn einfach vergessen einzubauen und irgendein Programm starten, was sich dann nicht mehr unterbrechen kann. Und schon wird der Roboter anfangen Unsinn zu machen. Aber daraus zu schließen, dies wäre Ausdruck einer besonders hochentwickelten Software ist ein Mythos. Vielmehr wird sich das Maß an Unsinn nicht unterscheiden als würde eine normale Maschine außer Kontrolle geraten und einen Unfall provozieren. In der Tat gibt es nicht nur mit Robotern Unfälle bei denen Menschen verletzt werden sondern auch mit Hämmern, Bohrmaschinen und Kreissägen gibt es derartige Vorkommnisse.

Risiko Menschen
In vielen Science-Fiction Filmen werden intelligente Roboter als Gefahr dargestellt. Nicht nur, dass sie technologisch hochentwickelt sind, sondern parallel dazu gruselt sich der Zuschauer gerne wenn der Roboter auch noch anfängt Jagd auf unschuldige Menschen zu machen. Tatsächlich ist das echte Risiko für sowas nicht vorhanden. Eher im Gegenteil: Roboter sind vermutlich diejenigen Dinge im Leben die sich noch am ehesten vorhersagen lassen. Sie funktionieren zuverlässiger als irgendwas sonst. Und selbst wenn ihre Software Bugs hat, sind diese streng logisch aufgebaut. Es gab in mehr als 50 Jahren Informatikgeschichte noch niemals den Fall dass ein Bug zwar aufgetreten ist, aber weltweit niemand da war, der wusste was die Ursache war.

Sondern wenn es Individuen gibt, die gänzlich unvorhersehbar sind, dann dürften es Menschen sein. Bei Menschen weiß man nie so genau was sie gerade denken. Die Ursache dürfte sein, dass Menschen eben nicht in Java programmiert werden sondern dass sie nach völlig unverstandenen Prinzipien funktionieren. Das geht sogar soweit, dass Menschen selbst nicht wissen warum sie denken oder was sie wollen. Insofern sind Mißverständnisse geradezu vorprogrammiert. Die Annahme, dass Roboter sich gegen ihre Schöpfer wenden oder einen eigenen Willen entwickeln könnten ist eine Vermenschlichung von Technik. Die Vorstellung, dass sich Maschinen gegen einen wenden könnten ist ein Ersatz dafür sich mit den echten Risiken auseinanderzusetzen.

Im Grunde ist ein Roboter-Apokalypse das vermutlich unwahrscheinlichste Ereignis was eintreten kann und eine Vorsorge dagegen ist überflüssig. Der psychologische Effekt ist dennoch nicht zu unterschätzen, weil es umso leichter möglich ist, sich darauf vorzubereiten. Ein Risiko was faktisch nicht eintreten kann, das hat man im Griff, und das erzeugt ein Gefühl von Macht. Weil man dadurch all jene Risiken ausblendet die wesentlich wahrscheinlicher sind, gegen die es jedoch keine Vorsorge gibt.

Die Vorsorge gegen eine Robot-Apokalypse gehört zu einer Form von psychologischem Risikomanagement, bei dem man sich gegen Scheinrisiken absichert und dadurch den eigenen Horizont verkleinert. Das ist so ähnlich, als wenn man mit einem Schlauchboot in die Wüste fährt, aus Angst vor Hochwasser.

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