roboShock.de
Home
Worum geht's
RS-Architektur
Meilensteine
Links

These are the remainings of the _old_ roboshock pages.
The new pages can be found here

Die RS-Architektur, eine selbstlernende Software

Ich möchte hier eine von mir überlegte SW-Architektur vorstellen, die ich mangels besserer Ideen die Roboshock-Architektur (RS-Architektur) nenne. Die Grundidee dieser Architektur besteht darin, dass der Roboter (bzw. die KI) durch Beobachtung seiner Situation und der Umwelt über sich und die Welt etwas lernt. Mit Hilfe all dieses Gelernten soll der Roboter dann Wege finden, ein vorgegebenes Ziel zu erreichen.

Allerdings gibt es dabei ein gewisses Start-Problem: Solange die AI noch sehr wenig weiss, weiss sie auch nicht, was sie am besten tuen soll, um die richtigen, für sie wichtigen Dinge zu lernen. In einfachen Welten kann man eine AI auch einfach herumprobieren lassen, damit sie Ihre Welt kennenlernen kann. Die hier zugrundeliegende Welt (also die hier zu berücksichtigen Aspekte der realen Welt) ist für einen solchen Ansatz aber viel zu komplex. Menschen wie Tiere schauen sich deshalb von anderen ab, was sie tuen könnten. (Wären Sie jemals auf die Idee gekommen, Aktien zu kaufen, wenn es nicht andere in Ihrem Umfeld getan hätten?)

Zwar fehlt dem Roboter vorerst jegliche Möglichkeit, um visuell von anderen abzugucken - sein Input über Körperbewegungen beschränkt sich auf sein Wissen über seine eigenen aktuellen Servopositionen. Aber das reicht doch:

Beibringen statt herumprobieren lassen

Als "Teaching" können dem Roboter beispielhafte Bewegungsfolgen gegeben werden, welche er dann "ausarbeitet", also immer wieder versucht, sie trotz seiner nicht vollkommen deterministischen Mechanik und trotz etwaiger Störungen von aussen zu reproduzieren. Sobald ihm dies gut gelingt, wird Langeweile aufkommen, und er wird die Bewegungen immer mehr variieren, und dabei noch mehr über das Situationsumfeld und die Grenzen dieser Bewegungen lernen.

Aktives Beibringen ist nur eine Variante des "abgucken lassens"!


Goal-System und Sensomotorisches Subsystem

Die RS-Architektur ist in zwei Ebenen unterteilt:
- High-Level AI: Goal-System
- Low-Level AI: SeMoSystem (Sensomotorisches Subsystem)

Die High-Level AI wird mit vielen, vielen sich konkurierenden Goals hantieren müssen, wird also insbesondere eine Art Projektmanagement-Modul beinhalten müssen. Das sensomotorische Subsystem hingegen bearbeitet immer nur ein Ziel zu einer Zeit.

Die Schnittstelle zwischen den beiden Systemen sieht sehr einfach aus: Das Goalsystem wählt ein in diesem Moment zu erreichendes Ziel aus, und gibt dieses als Goal-State nach unten weiter. Dort versucht das SeMoSystem, von der aktuellen Situation (current state, Scur) ausgehend einen Weg zu finden, den Goal-State zu erreichen.

Sensomotorisches Subsystem

Zur Zeit arbeite ich nur an der Realisierung des SeMoSystems.
Hier ein Schaubild zur Architektur:


Größer




Lernen kann der Roboter zum einen durch die Beobachtung seiner Selbst und der Umwelt, während er mehr oder weniger zufällige Aktionen ausführt, oder indem er etwas beigebracht bekommt. Dieses Beibringen ist - wie oben schon erwähnt - im einfachsten Fall das "Vormachen eines Bewegungsablaufes" in Form eines TeachingPlan, was letztlich wieder auf die Beobachtung seiner Selbst und der Umwelt zurückführt, nur dass er dabei nicht beobachtet, wie er selbst seinen Körper steuert, sondern wie jemand anderes (konkret der TeachingPlan) seinen Körper steuert. Für die weitere Verarbeitung der dabei entstehenden Beobachtungen ist es aber egal, wie sie zustande kamen.

Der Roboter lernt also, indem er sich und die Welt über die Zeit beobachtet. Durch das Ausführen von Aktionen kann er seine Beobachtungen bereichern.

Ein zentrales Element der RS-Architektur ist somit die Wissens-DB. Dort werden alle Beobachtungen abgespeichert.

In dem Moment, in dem die SW losläuft, beginnt also der Roboter zu lernen: Er beobachtet seine Sensoren und Servostellungen, und lernt - entsprechende Servo-Startwerte vorausgesetzt - als erstes "Wenn ich so stehe, dann bleibe ich so stehen. Die Lot-Sensoren melden keine Veränderung". Ein großer Lernerfolg, der natürlich gleich in die Wissens-DB eingetragen wird!

Anmerkung: Später werde ich die Situation-Aktion-Situation Elemente um eine Zeitangabe erweitern. Es ist die Zeit, die nach der Aktion typischerweise vergeht, bis die Folgesituation eintritt. Die SAS-Tabelle wird dann zur SATS-Datenbank.

Pläne

Wenn eine grundlegende Menge an Wissen gesammelt ist, könnte die Zielvorgabe, eine bestimmte Situation (=Sziel) zu erreichen, folgendermassen erreicht werden:

Wenn zum Beispiel die Zielvorgabe der Folgesituation S(t+1) des Eintrages 3 entspricht, und die aktuelle Situation der Ausgangssituation des Eintrages 2, dann können weitere Einträge gesucht werden, um eine Überführung von S(t+1) der Zeile 2 zu S(t) der Zeile 3 zu finden. Wenn z.B. S(t+1)|2 == S(t)|1 und S(t+1)|1 == S(t)|3, dann kann folgender Plan zur Erreichung des Zieles geschmiedet werden:

Die RS-Architektur beinhaltet also einige sehr interessante Merkmale: Dem Roboter ist es möglich, Wissen zu sammeln. Dem Roboter ist es möglich, mit Hilfe seines gesammelten Wissens Pläne zu machen! Und wer weiss: Für komplexere Aufgaben kann es nötig sein, zu einer ruhigeren Stunde länger nach Lösungswegen zu suchen. Sind wir hier sogar schon beim träumen?

Ein weiterer Moment solcher Pläne ist, dass sie eine "Kommunikations-Schnittstelle zum Entwickler" bieten: Dieser kann dem Roboter nun etwas "beibringen", indem er dem Roboter einen Plan vorstellt, also eine Abfolge von Situationen und Aktionen. Durch Vergleich der Situationen des Planes mit den Sonsordaten kann der Roboter feststellen, ob er noch "auf dem richtigen Weg" ist. Dadurch wird der Plan weit mehr, als eine starre, pseudo-programmierte Bewegungsfolge. Zum Beispiel kann sich der Roboter entscheiden, den Plan zu verlassen, oder einen anderen Plan einzuschieben (etwa einen Plan zum Abfangen eines nicht gewollten Umkippens).

Phantasie

Der hier vorgestellte Ansatz, alle Erfahrungen in die Wissens-DB aufzunehmen, unterscheidet sich übrigens schon von vielen anderen selbstlernenden Architekturen: Oft werden Erfahrungen sofort als "gut" oder "schlecht" eingeordnet, und das Wissen über vermeintlich "schlechtes" mitunter sogar komplett verworfen. Mit einem solchen Ansatz verschenkt man sich viel Potential, denn alles, was zum Erreichen des eines Zieles schlecht ist, kann zur Erreichung eines anderen Zieles durchaus gut sein. Auch das aktuelle Ziel ist vielleicht nur über Umwege erreichbar. Wenn eine Zwischensituation hier zu schnell als "schlecht" eingestuft und alle damit verbundenen Zusatzinformation verworfen werden, kann vielleicht nie der Weg zum Ziel gefunden werden.

In diesem Hinblick kann dann vielleicht Phantasie verstanden werden als die Bereitschaft, einen Teilplan nicht von den weiteren Überlegungen auszuschliessen, nur weil er zunächst vom Ziel weg führt.

Mehr Phantasie erzeugt also mehr genauer zu durchdenkende Pläne, benötigt also auch mehr Rechenzeit. Also können zu nicht aktiven Zeiten ("Schlafzeiten") auch phantasievollere Überlegungen angestellt werden.

Auch passt diese Überlegung mit der verbreiteten Meinung zusammen, dass Phantasie ein Gradmesser der Intelligenz sei.

Aktionen etwas konkreter

Ein einfaches System mit wenig Unterscheidungen spricht oft für einen guten, allgemeingültigen Ansatz. Wenn man sich zu den Aktionen nähere Gedanken macht, bemerkt man aber schnell, dass folgende Unterscheidung nötig ist: Es gibt elementare Aktionen, nämlich das Bewegen der Aktoren (z.B. der Servos). Alle anderen Aktionen müssen letztlich auf diese elementaren Aktionen zurückführbar sein - denn sonst haben wir nichts zum agieren.

Eine Aktion ist also entweder eine Servobewegung, oder ein ganzer Plan. Die Umsetzung eines solchen Planes wird zu weiteren untergeordneten Plänen führen, und diese irgend wann zu einzelnen Servobewegungen.

Situation (State)

Auch der Begriff der Situation bedarf einer genaueren Betrachtung. Es gibt "hard facts", das sind die Daten der Sensoren. Alles andere sind nur Vermutungen, die sich letztlich aus der Beobachtung der Sensoren über die Zeit und in Hinblick auf einen gegebenen Situationskontext ergeben. Allerdings ist der "gegebene Situationskontext" auch wieder nur eine Vermutung! (Ein gefundenes Fressen für Philosophen :-)

Der eigentliche Sinn und Zweck einer Situation besteht darin, sie wiederzuerkennen, wenn sie wieder eintritt.

Ein zentrales Problem besteht darin, dass die Menge der abgeleiteten Situationselemente prinzipiell unendlich sein kann. Es ist eine der entscheidenden Aufgaben der RS-Architektur, hilfreiche Situationselemente zu definieren, sowie vorher definierte, aber wenig hilfreiche, auch wieder aus dem System zu entfernen. Hilfreich sind genau diejenigen, die einen entscheidungsrelevanten Aspekt der Gesamtsituation möglichst zuverlässig darstellen. Entscheidungsrelevant bedeutet, dass aufgrund dieses Situationselementes zu gegebener Zeit für oder gegen einen bestimmten Subplan entschieden werden wird.

Kodierung von Situationselementen - SINs

In der RS-Architektur werden abgeleitete States - also alles ausser primitive States, d.h. Sensorwerte - durch plugable SW-Module, ich nenne sie StateIndicatoren, kurs SINs, zur Verfügung gestellt. (Assoziationen zum deutschen "Sinn" sowie zum englischen "sin" sind natürlich rein zufällig ;-). Jeder SIN signalisiert genau einen State, und kann dafür auf alle primitive States sowie auf andere SINs zurückgreifen.

Wie diese SINs implementiert sind, ist dabei völlig egal. Der eine kann ein NN sein, der nächste eine mathematische Formel, und der nächste ein EM-Algorithmus. Allerdings wäre eine durchgängige Implementierung als NNs recht attraktiv, denn dann könnte das gesamte SIN-Netz als ein großes neuronales Netz aufgebaut sein, und auf möglicherweise bald kommende hochperformante NN-Implementierungen a la CUDA oder opencl aufbauen (aber das sind nur wilde Zufunktsideen).

Dynamischer Situationsraum

Ganz wichtig bei Plänen ist, dass ein untergeordneter Plan nicht jedesmal der gleiche sein wird, obwohl doch die Eingangssituation (= Ausgangssituation des vorigen Schrittes) immer die gleiche ist. Das liegt daran, dass die Eingangssituation nicht wirklich GLEICH der Ausgangssituation des vorigen Schrittes ist. Vielmehr handelt es sich hierbei um eine "is-a"-Beziehung. Die Ausgangssituation des vor-Schrittes ist ein Goal-State, eine endliche Liste von Situationselementen, die zutreffen sollen, eine Wolke in einem Situationsraum endlicher Dimensionen. Die Eingangssituation für den nächsten Schritt hingegen ist die real existierende Situation, in der sich der Roboter befindet. (Well, nicht die reale Situation, sondern das, was der Roboter glaubt, was die reale Situation sei.) Es ist ein Punkt in einem tausend-dimensionalen Situationsraum. Dieser Situationsraum beinhaltet vielleicht Situationselemente, die es beim vorigen mal noch gar nicht gab. Deshalb kann in einer vermeintlich gleichen Situation wie früher, plötzlich zur Erreichung des nächsten Goal-States ein anderer, vermeintlich besserer Subplan ausgewählt werden.






 (c) 2005-2012 Thomas Schütt