Bestärkendes Lernen
Beim Bestärkenden Lernen lernt ein Agent durch Interaktion mit einer Umgebung, Handlungen so zu wählen, dass er langfristig seine Belohnungen maximiert. Auf dieser Seite wird dazu ein einfaches, dreischichtiges neuronales Netz verwendet, um das Prinzip stark vereinfacht zu veranschaulichen. Das Netz besitzt Eingabeneuronen, die als Sensoren dienen, und Ausgabeneuronen, die verschiedene mögliche Aktionen darstellen. Beim Training wird in jedem Schritt zufällig ein Sensormuster ausgewählt, zu dem bekannt ist, welche Aktion eine Belohnung bringt. Mit einer bestimmten Zufallsrate (Epsilon) entscheidet das System (auch Agent genannt), ob es eine Aktion zufällig auswählt (Exploration) oder diejenige mit dem höchsten Q-Wert wählt (Exploitation). Der Q-Wert entspricht dabei der Aktivierung des jeweiligen Ausgabeneurons und steht für die aktuelle Einschätzung, wie gut eine Aktion ist. Nach der Ausführung erhält das System eine Rückmeldung, ob die gewählte Aktion richtig oder falsch war. Anschließend wird ein kurzer Trainingsschritt durchgeführt: Die aktuellen Q-Werte werden erneut als Eingabe verwendet, und der Wert des ausgeführten Ausgabeneurons wird durch 1 ersetzt, wenn die Aktion richtig war, oder durch 0, wenn sie falsch war. So lernt das Netz nach und nach, die Aktionen mit höherer Belohnung zu bevorzugen. Im Unterschied zu einem echten Bestärkenden Lernen gibt es hier keine Zustandsübergänge oder Folgen von Aktionen. Außerdem schätzt das Netz keine zukünftigen Belohnungen, sondern lernt direkt aus der aktuellen Rückmeldung und zeigt daher eher die Grundidee des Lernens durch Belohnung ohne die komplexen Mechanismen eines vollständigen Reinforcement-Learning-Systems. Weiter unten können zum tieferen Verständnis einige Beispiele geladen und ausprobiert werden.
1. Konstruktion des neuronalen Netzes
Das neuronale Netz wird automatisch anhand der Sensor- und Aktionsdaten erstellt, die im Feld Sensoren und Aktionen eingetragen werden müssen. Hier können jeweils maximal 8 Bezeichnungen eingetragen werden, die durch Leerzeichen getrennt sein müssen. Im Anschluss können Sensoren und Aktionen miteinander verknüpft werden. So kann festgelegt werden, welches Verhalten zu welchem Kommando passt, was der Agent durch Ausprobieren und Rückmeldung herausfinden muss.
2. Training
Das Training kann im Anschluss Schritt für Schritt durchgeführt werden (Trainingsschritt) oder mit der eingetragenen Anzahl an Epochen auf einmal absolviert werden (Train). Ein Trainingsschritt besteht dabei aus zwei Einzelschritten: zunächst wählt der Agent entweder eine zufällige Aktion oder nimmt die seiner Erfahrung nach am besten geeignete Aktion, deren zugeordnetes Ausgabeneuron den höchsten Q-Wert hat. So kann berechnet werden, mit welchen Daten der eigentliche, zweite Trainingsschritt mit dem nächsten Klick auf den Button durchgeführt werden muss, um die Gewichte und Schwellwerte ein wenig mehr in die richtige Richtung zu verschieben. Die Lernrate ist ein Wert, der üblicherweise zwischen 0.01 und 10.0 liegen kann. Je größer der Wert ist, desto schneller aber auch ungenauer ist das Training und desto größer werden die Gewichts- und Schwellwerte. Die Anzahl an Epochen bestimmt wiederum die Trainingslänge. Eine Epoche ist um, wenn alle Zeilen der Trainingsdaten einmal zum Trainieren benutzt wurden. Epsilon ist ein Wert zwischen 0 und 1, der angibt, wie stark der Agent eine zufällige Aktion oder die bis dato am besten geeignete Aktion wählt. Das Netz zeigt auf einer Skala von blau (negative Werte) bis rot (positive Werte) an, wie sich die Gewichte und Schwellwerte im Laufe des Trainings verändern. Die Werte der Gewichte und Schwellwerte lassen sich anzeigen, wenn man mit der Maus über sie fährt.
3. Test
Um zu testen, ob der Agent alles richtig gelernt hat, können die Testdaten nach dem Training durch Auswählen der Sensoren und Klicken auf Test durch das neuronale Netz geschickt werden. Die gewählte Aktion wird dann grafisch angezeigt mitsamt der Wahrscheinlichkeit für die gewählte Aktion.
Beispieldaten
Im Folgenden können Beispieldaten geladen werden, mit denen ein neuronales Netz zu Demonstrationszwecken trainiert und getestet werden kann. Zum Durchprobieren der Beispiele den jeweiligen Button klicken und danach auf die Buttons Trainingsschritt oder Train bzw. Test drücken, um zu sehen, wie das Netz trainiert wird und wie es die gelernten Trainingsdaten im Anschluss umsetzen kann. Wie bei neuronalen Netzen üblich kann es passieren, dass das Training nicht zum Erfolg führt. Dann kann es helfen, das Beispiel neu zu laden oder evtl. auch weiter zu trainieren bzw. die Werte für die Lernrate, die Epochen oder für Epsilon experimentell zu ändern.
(1) Als einfacher Einstieg soll folgendes Szenario betrachtet werden: Ein soll lernen, auf die Kommandos "Sitz!" und "Platz!" richtig zu reagieren. Der Hund kann aus mehreren möglichen Aktionen wählen – er kann sich hinsetzen, hinlegen, springen oder weglaufen. Wenn der Hund bei "Sitz!" tatsächlich sitzt oder bei "Platz!" tatsächlich liegt, bekommt er eine Belohnung. Wählt er eine andere Aktion, bleibt die Belohnung aus. Es bietet sich an, zunächst "Sitz!" und "Platz!" ohne vorheriges Training zu testen, dann schrittweise zu trainieren, um zu verstehen, was während des Trainings vor sich geht und abschließend das gesamte Training durchführen zu lassen. Ein weiterer Test zeigt dann, dass der "Hund" nun immer die richtigen Aktionen wählt.
(2) Im nächsten Beispiel soll der Agent lernen, dass er Hunde und Katzen streicheln kann, aber Mäuse nicht. Diese sollen gejagt werden. Hunde und Katzen hingegen sollen nicht gejagt werden. Das Szenario kann selbstverständlich noch um Raubtiere oder Meerestiere erweitert werden.
(3) In diesem Beispiel soll ein autonomes mit drei Sensoren bestückt sein, die anzeigen, ob links, mittig oder rechts die Durchfahrt frei ist. Der Agent (das Auto) soll selbst herausfinden, dass es links fahren muss, wenn links frei ist, geradeaus, wenn die Mitte frei ist und rechts, wenn am rechten Rand kein Hindernis ist.
(4) Die Aufgabe lässt sich auch , indem die Sensorik umgedreht wird. Der Agent (das Auto) soll nun zwei Sensoren besitzen, die anzeigen, ob links und/oder rechts Hindernisse sind. Nun gilt es, selbst herauszufinden, dass das Auto rechts fahren muss, wenn links ein Hindernis ist und links, wenn rechts ein Hindernis ist. Sind sowohl rechts und links Hindernisse, muss das Auto stoppen. Neben den drei sinnvollen Aktionen gibt es in diesem Beispiel zudem mehr Handlungsspielraum durch weitere Aktionsmöglichkeiten, die jedoch durch das Training eliminiert werden sollen.
(5) Im letzten Beispiel sollen die Sensoren eine einfache Grafik mit 3x2 einfangen (drei Reihen mit jeweils zwei Pixeln pro Reihe). Muster 1 ist ein Pfeil nach rechts während Muster 2 ein Pfeil nach links ist. Der Agent soll herausfinden, welches Muster zu welchem Pfeil gehört.