September 27, 2024

Das State space Problem innerhalb der Robotik

 Bis zum Jahr 2010 war das Forschungsgebiet der Robotik leicht zu überschauen weil es zwischen Anspruch und Wirklichkeit einen unüberwindlichen Graben gab. Der Ausgang von dezidierten KI und Robotikforschungsprojekten zu dieser Zeit konnte man mit einem simplen Wort beschreiben: Scheitern. Egal ob die Forscher versuchen 4 beinige Laufroboter zu programmieren, eine Roboterhand die einen Apfel greifen sollte oder auch nur eine ingame AI die in einem Computerspiel Punkte sammelt, kamen die Forscher mit den vorhandenen Methoden niemals zum Ziel. Konkret hieß dass, dass es zwar möglich war, die Roboterhardware zu bauen aber es fehlte dann an einer Software die die Bewegung erzeugte. Auch gelang es zwar Computerspiele selber zu erstellen, inkl. 3d Grafik und Soundausgabe, aber sobald eine AI innerhalb eines Spiels benötigt wurde, gab es dafür weder Algorithmen noch Bibliotheken.

Im wesentlcihen scheiterte die Entwicklung an einem Phänomen, dass bereits James Lighthill im Jahr 1973 beschrieben hat und zwar die kombinatorische Explosion. Selbst eine simple Roboterhand die einfach nur ein Objekt greifen soll hat bereits Millionen von Millionen unterschiedliche Servomotor Einstellungen und selbst Supercomputer sind nicht im Stande diesen Gametree in Echtzeit zu durchsuchen. Laienhaft ausgedrückt ist es unmöglich eine Software zu entwickeln die Roboter autonom steuert.

Obwohl diese Feststellung nicht dezidiert in jedem Einzelnen Paper zu Robotik beeschrieben wurde, war es doch die gemeinsame Ansicht zur damaligen Zeit. Jedenfalls gibt es vor 2010 kein einziges Paper in dem erläutert wird, wie man das P=NP problem oder die kombinatorische Explosion lösen könnte, also muss man unterstellen, dass damals das Problem ungelöst blieb. Und das bedeutete, dass die Gesammte KI Community im Grunde nur Fehlschläge, Rückschläge oder nicht eingelöste Versprechungen produzierte. Ganz im Gegensatz zur restlichen Informatik die im Bereich Hardwareentwicklung, Entwicklung neuer Programmiersprachen oder Netzwerk-Protokolle laufend Fortschritte feierte. Mit der normalen Nicht-KI Informatik konnte man immerhin das Internet betreiben und Anwendersoftware programmieren, während die KI Sparte keine praktische Relevanz hatte.

Die einzige Ausnahme bis zum Jahr 2010 wo Künstliche Intelligenz einen Teilerfolg vermelden konnte war Computerschach. Die Bewältigung dieses Brettspiels mit Hilfe von Computer war ein wiederkehrendes Thema seit den 1960er Jahren und im Laufe der Jahre wurden Computer darin immer besser. In 2010 waren selbst Desktop PCs im Stande den amtierenden Menschlichen Großmeister klar und wiederholbar zu besiegen. Allerdings gab es mit dieser technischen Leistung mehrere Probleme: erstens, war der rechenaufwand dafür hoch, typische Schachprogramme haben alle Kerne einer CPU auf 100% ausgelastet und selbst dann mussten sie mehrere minunten Rechnen um den nächsten Zug zu ermitteln, und zweitens ließen sich Schachalgorithmen nicht auf andere Probleme wie der Robotik übertragen. Das heißt, die Schach AI konnte nur schach spielen und sonst gar nichts.

Selbst geringfügig andere Brettspiele wie Backgammon oder Go waren bereits extrem schwierig für eine Schach-KI zu meistern. Man musste den kompletten Quellcode umschreiben und selbst dann war ungewiss ob es gelang menschliche Spieler zu besiegen. Insofern waren schachspielende Computer eher ein Beweis dafür, dass KI nicht realisierbar war.

Obwohl KI bis 2010 utopisch war, haben die Forscher weiterhin die Thematik untrsucht. Und zwar mit einer modifizierten Fragestellung. Wenn es offenbar nicht möglich war, Roboter zu programmieren, wollte man wenigstens wissen woran es genau scheitert. Das führte dazu dass sich die Richtung der Forschung änderte. Anstatt Roboter zu programmieren hat man zunächst versucht, in der Simulation Roboter zu steuern. Wo es also keine Hardware gibt sondern nur eine virtuelle Realität und wo die Aktionsmöglichkeiten des Roboters kleiner sind. Weiterhin wurde besonders von 2000 bis 2010 stark das Gebiet des Deep learning erforscht. Man glaubte durch ein besseres Verständnis von neuronalen Netzen vielleicht etwas über Künstliche Intleligenz im Allgemeinen zu verstehen. Eine weitere Antwort auf gescheiterte KI Projekte war die Fokussierung auf synthetische Probleme wie Robocup oder Micromouse. Damit wurde der Schwierigkeitsgrad gesenkt was bedeutete die Chance auf Erfolg zu erhöhen.

Speziell der Micromouse Wettbewerb ist aus technischer Sicht ein überschaubares Problem. Es gibt nur einen simplen Roboter der nochdazu Räder, und dieser muss einen Weg finden wobei man auf einen Blick sieht ob dieser Weg zum Ziel führt oder nicht. Selbst wenn der Roboter zufällig im Labyrinth herumfährt, wird er irgendwann von ganz allein am Ziel ankommen.

Auch die beschriebenen veränderten Fragestellungen wie synthetische Probleme, Deep Learning und Simulationen vermochten nicht das Problem der kombinatorischen Explosion zu lösen. Selbst bei einem simplen Maze roboter enthält der gametree mehrere Millonen möglicher Systemzustände. Dieses eine Problem des übergroßen Suchbaumes ist der rote Faden der seit den 1950er Jahren verhinderte, dass Robotik und Künstliche Intelligenz realisiert werden konnte. In der theoretischen informatik wird es manchmal als P=NP Problem bezeichnet und gilt nach übereinstimmender Aussage als unlösbar.

Selbstverständlich gab es auch vor 2010 ernstgemeinte Versuche trotzdem Algorithmen zu entwerfen die dezidierte np harte Probleme lösen können. Nur die Ansätze waren unausgereift und verfolgten sehr unterschiedliche Ansätze, es gab beispielsweise Rapidly exploring random tree algorithmen, heuristische Algorithmen, Bewertungsfunktionen, reinforcement learning, probabilistische Suchalgorithmen oder simulated annealing. In manchen Fällen wie dem traveling salesman problem oder dem 15 puzzle problem lässt sich damit tatsächlich eine Lösung finden. In diesem Fall muss der Spielbaum nicht komplett traversiert werden, sondern heuristische Algorithmen finden die optimale Route zum Ziel sehr viel effizienter. Das Problem war jedoch, dass sich diese Verfahren nicht verallgemeinern ließen und das es keine generalierten Lösungen gab die auf mehrere Probleme insbesondere im Bereich Robotik anwendbar waren.

Das einzige was bis 2010 halbwegs zuverlässig funktionierte waren Pfadplanungsalgorithmen mit einer Evaluationsfunktion, also A* und ähnliche Verfahren. Diese wurden sowohl in Computerspielen als auch in der Robotik eingesetzt um auf einer 2d Karte den kürzesten Weg zu planen. Nur A* ist für die Planung einer Roboter hand nutzlos und kann auch nicht für biped walking eingesetzt werden.

Man kann die Kernproblematik der Robotik vor 2010 in einem simplen Satz zusammenfassen: "Mit welchem Algorithmus lässt sich ein sehr großer Zustandsraum schnell durchsuchen?" Schon die Frage offenbart, dass das Problem quasi unlösbar ist. Einerseits gibt es einen Zustandsraum, der aus Millionen von States besteht, gleichzeitig soll dieser Zustandsraum in kurzer Zeit also in realtime durchwandert werden. Dies schließt sich gegenseitig aus. Es gibt mehrere Paper aus der theoretischen Informatik die sogar mathematisch begründen dass so ein Algorithmus unmöglich existieren kann. Im Grunde läuft es auf das altbekannte P=NP Problem hinaus, also der Fragestellung wie man komplexe Probleme auf einem langsamen Computer lösen will.

Die Antwort auf die Probleme ist banal. Keineswegs bedarf es Quantencomputer um np harte Probleme zu lösen, sondern es reicht aus die Prioritäten zu verschieben. Bei einem Schachcomputer fokussiert man auf die Bewertungsfunktion und vernachlässigt die Suche im Gametree. Im Extremfall nutzt man eine optimierte Bewertungsfunktion die auf die Nachkommastelle genau ermittelt ob Weiß oder Schwarz im Vorteil ist und senkt den Suchhorizont ab auf 1 Zug in die Zukunft. Wenn man dann beschreibt, wie sich Bewertungsfunktionen im Allgemeinen mittels Feature engineering erzeugen lassen lässt sich das Paradigma auf andere Aufgaben aus der Robotik ausdehnen und man erhält eine mächtige Methode zur Lösung komplexer Optimierungsaufgaben.

Eine moderne KI die Schach spielen kann besteht weniger darin, irgendwelche neue Algorithmen zu entwickeln sondern als modern gilt eine Chess engine dann, wenn sie bestimmte Dinge einfach weglässt. Im einfachsten Fall nehme man einfach einen Schachcomputer aus den 1980er der durchschnittlich Schach spielt, deaktiviert dort die Suche im Spielbaum und lässt die vorhandene Bewertungsfunktion als einziges Softwareelement aktiviert. Und schon erhält man eine erstaunlich Leistungsfähiges Beispiel für eine heuristisches KI die in der Lage ist, die aktuelle Spielsituation in eine Punktzahl überführen.