Technische Artikel

Reinforcement Learning: eine kurze Einführung

Von Emmanouil Tzorakoleftherakis, MathWorks


Reinforcement Learning kann genutzt werden, um schwierige Entscheidungsprobleme in vielen Anwendungen zu lösen, darunter Industrieautomatisierung, autonomes Fahren, Videospiele und Robotik. 

Reinforcement Learning ist eine Form von Machine Learning, mit der ein Computer durch wiederholte Interaktionen mit einer dynamischen Umgebung lernt, eine Aufgabe auszuführen. Mit diesem Trial-and-Error-Lernansatz kann der Computer eine Reihe von Entscheidungen treffen, ohne dass ein Mensch eingreift und ohne dass der Computer explizit für diese Aufgabe programmiert ist. Ein bekanntes Beispiel für Reinforcement Learning in der Praxis ist AlphaGo, das erste Computerprogramm, das einen Weltmeister im Go-Spiel besiegt hat.

Reinforcement Learning arbeitet mit Daten aus einer dynamischen Umgebung – also mit Daten, die sich durch äußere Bedingungen wie Wetter oder Verkehrsaufkommen ändern. Das Ziel eines Reinforcement-Learning-Algorithmus ist es, eine Strategie zu finden, die zum optimalen Ergebnis führt. Reinforcement Learning erreicht dieses Ziel, indem es einer sogenannten Agenten-Software ermöglicht, eine Umgebung zu erkunden, mit ihr zu interagieren und von ihr zu lernen. 

Beispiel: automatisiertes Fahren

Ein wichtiger Aspekt des automatisierten Fahrens ist das eigenständige Parken. Sein Ziel besteht darin, dass der Fahrzeugcomputer (der Agent) das Auto in der richtigen Parklücke und in der richtigen Richtung positioniert. In diesem Beispiel ist die Umgebung alles, was den Agenten umgibt, etwa die Dynamik des Fahrzeugs, andere Fahrzeuge in der Nähe, die Wetterbedingungen usw. Während des Trainings verwendet der Agent Messwerte von Kameras, GPS, LiDAR und anderen Sensoren, um Lenk-, Brems- und Beschleunigungsbefehle (Aktionen) zu erzeugen. Um zu lernen, wie er aus den Beobachtungen die richtigen Aktionen erzeugen kann (Strategieoptimierung), versucht der Agent durch Trial and Error immer wieder, das Fahrzeug zu parken. Die richtige Aktion wird mit einem numerischen Signal belohnt (verstärkt, engl. „reinforced“) (Abbildung 1).

Abbildung 1: Überblicksdiagramm für Reinforcement Learning.

Abbildung 1: Überblicksdiagramm für Reinforcement Learning.

In diesem Beispiel wird das Training durch einen Trainingsalgorithmus überwacht. Der Trainingsalgorithmus optimiert die Strategie des Agenten anhand der erfassten Sensormesswerte, der Aktionen und der Belohnungen. Nach dem Training sollte der Computer des Fahrzeugs in der Lage sein, es nur anhand der optimierten Strategie und der Sensormesswerte zu parken.

Algorithmen für Reinforcement Learning

Es sind schon viele Trainingsalgorithmen für Reinforcement Learning entwickelt worden. Einige der beliebtesten basieren auf tiefen neuronalen Netzen. Der größte Vorteil neuronaler Netze besteht darin, dass sie komplexe Verhaltensweisen darstellen können. Dies ermöglicht den Einsatz von Reinforcement Learning für Anwendungen, die mit herkömmlichen Algorithmen sehr schwer zu bewältigen wären.

So kann beispielsweise beim autonomen Fahren ein neuronales Netz den Fahrer ersetzen und entscheiden, wie das Lenkrad gedreht werden soll, indem es gleichzeitig Eingangssignale von mehreren Sensoren betrachtet, wie Kamera-Frames und LiDAR-Messungen (Abbildung 2). Ohne neuronale Netze würde das Problem in kleinere Teile zerlegt: ein Modul, das Eingangssignale von der Kamera analysiert, um nützliche Merkmale zu identifizieren, ein weiteres Modul, das die LiDAR-Messwerte filtert, möglicherweise eine Komponente, die die gesamte Umgebung des Fahrzeugs durch Zusammenführen der Sensorausgaben darstellen soll, ein „Fahrer“-Modul usw.

Abbildung 2: Neuronales Netz für autonomes Fahren.

Abbildung 2: Neuronales Netz für autonomes Fahren.

Workflow für Reinforcement Learning

Das Training eines Agenten durch Reinforcement Learning umfasst fünf Schritte:

  1. Erstellen der Umgebung: Definieren Sie die Umgebung, in der der Agent lernen kann, einschließlich der Schnittstelle zwischen dem Agenten und der Umgebung. Die Umgebung kann entweder ein Simulationsmodell oder ein reales physisches System sein. Simulierte Umgebungen sind in der Regel gut für die ersten Schritte geeignet, da sie sicherer sind und Experimente ermöglichen.
  2. Definieren der Belohnung: Geben Sie das Belohnungssignal an, mit dem der Agent seine Leistung in Bezug auf die Aufgabenziele misst, und legen Sie fest, wie dieses Signal aus der Umgebung berechnet wird. Die richtige Gestaltung der Belohnung kann einige Iterationen erfordern.
  3. Erstellen des Agenten: Der Agent besteht aus der Strategie und dem Trainingsalgorithmus. Gehen Sie daher wie folgt vor:
    • Wählen Sie eine Möglichkeit, die Strategie darzustellen (z. B. durch neuronale Netze oder Look-Up-Tables). Überlegen Sie, wie Sie die Parameter und die Logik strukturieren wollen, die den Entscheidungsfindungsanteil des Agenten ausmachen.
    • Wählen Sie den richtigen Trainingsalgorithmus aus. Die meisten modernen Reinforcement-Learning-Algorithmen basieren auf neuronalen Netzen, da diese gute Kandidaten für große Zustands-/Aktionsräume und komplexe Probleme sind.
  4. Trainieren und Überprüfen des Agenten: Legen Sie Trainingsoptionen fest (z. B. Stoppkriterien), und trainieren Sie den Agenten, um die Strategie zu optimieren. Die einfachste Methode, eine trainierte Strategie zu überprüfen, ist eine Simulation.
  5. Bereitstellen der Strategie: Stellen Sie die Darstellung der trainierten Strategie z. B. in Form von generiertem C/C++- oder CUDA-Code bereit. Sie müssen sich an diesem Punkt keine Sorgen um Agenten und Trainingsalgorithmen machen – die Strategie ist ein eigenständiges Entscheidungssystem.

Ein iterativer Prozess

Zum Training eines Agenten durch Reinforcement Learning gehört viel Trial and Error. Für Entscheidungen und Ergebnisse in späteren Phasen kann es notwendig sein, zu einer früheren Phase des Lern-Workflows zurückzukehren. Wenn der Trainingsprozess beispielsweise nicht innerhalb eines angemessenen Zeitraums zu einer optimalen Strategie konvergiert, müssen Sie möglicherweise einige der folgenden Elemente verändern, bevor Sie den Agenten erneut trainieren:

  • Trainingseinstellungen
  • Konfiguration des Lernalgorithmus
  • Darstellung der Strategie
  • Definition des Belohnungssignals
  • Aktions- und Beobachtungssignale
  • Umgebungsdynamik

Wann ist Reinforcement Learning der richtige Ansatz?

Zwar ist Reinforcement Learning ein großer Fortschritt im Machine Learning, aber es ist nicht immer der beste Ansatz. Beachten Sie die folgenden drei Punkte, wenn Sie es ausprobieren möchten:

  • Es ist nicht stichprobeneffizient. Das bedeutet, dass viel Training erforderlich ist, um eine akzeptable Leistung zu erreichen. Selbst für relativ einfache Anwendungen kann das Training Minuten, Stunden oder Tage dauern. AlphaGo wurde trainiert, indem es einige Tage lang pausenlos Millionen von Spielen spielte und damit so viel Wissen sammelte wie ein Mensch in Tausenden von Jahren.
  • Die richtige Vorbereitung des Problems kann schwierig sein: Viele Entwurfsentscheidungen müssen getroffen werden. Sie zu optimieren, kann mehrere Iterationen erfordern. Zu diesen Entscheidungen gehören die Auswahl der passenden Architektur für das neuronale Netz, die Feinabstimmung von Hyperparametern und die Gestaltung des Belohnungssignals.
  • Die Strategie eines trainierten tiefen neuronalen Netzes ist eine „Black Box“. Dies bedeutet, dass die interne Struktur des Netzes so komplex ist (häufig mit Millionen Parametern), dass es fast unmöglich ist, seine Entscheidungen zu verstehen, zu erklären und zu bewerten. Daher ist es schwierig, die Leistung von Strategien neuronaler Netze formal zu garantieren.

Wenn Sie an einem zeit- oder sicherheitskritischen Projekt arbeiten, sollten Sie vielleicht eine andere Methode ausprobieren. Zum Beispiel wäre es beim Entwurf von Steuerungen sinnvoll, eine herkömmliche Steuerungsmethode zu verwenden.

Reales Beispiel: Ein Roboter lernt, zu gehen

Forscher im Valero Lab der University of Southern California haben ein einfaches Roboterbein gebaut, das mit einem in MATLAB® geschriebenen Reinforcement-Learning-Algorithmus in wenigen Minuten eigenständig die richtigen Bewegungsabläufe erlernt hat (Abbildung 3).

Abbildung 3: Der neue Roboter-Körperteil von Valero Lab. Bildquelle: USC.

Abbildung 3: Der neue Roboter-Körperteil von Valero Lab. Bildquelle: USC.

Der Körperteil mit drei Sehnen und zwei Gelenken lernt autonom, zuerst durch Modellierung seiner eigenen dynamischen Eigenschaften und dann durch Reinforcement Learning.

Für das physische Design dieses Roboterbeins wurde eine Sehnenarchitektur verwendet, ähnlich der Struktur aus Muskeln und Sehnen, mit der sich Tiere bewegen. Dann nutzte Reinforcement Learning ein Verständnis der Dynamik, um das Ziel zu erreichen, auf einem Laufband zu gehen.

Reinforcement Learning und „Motor Babbling“

Durch die Kombination von Motor Babbling und Reinforcement Learning probiert das System zufällige Bewegungen aus und erlernt Eigenschaften seiner Dynamik durch die Ergebnisse dieser Bewegungen. Bei dieser Forschungsarbeit begann das Team damit, das System zufällig herumspielen zu lassen. Diese kleinkindähnlichen, erkundenden Bewegungen werden als Motor Babbling („motorisches Gebrabbel“) bezeichnet. Die Forscher geben dem System jedes Mal eine Belohnung, wenn es eine bestimmte Aufgabe richtig erfüllt – in diesem Fall, wenn sich auf dem Laufband vorwärts bewegt.

Der resultierende Algorithmus, der als G2P (General to Particular, vom Allgemeinen zum Spezifischen) bezeichnet wird, repliziert das allgemeine Problem, das biologische Nervensysteme bei der Steuerung von Körperteilen lösen müssen, indem er aus der Bewegung lernt, die entsteht, wenn eine Sehne den Körperteil bewegt (Abbildung 4). Dann wird das Verhalten, das spezifisch für die Aufgabe geeignet ist, verstärkt (belohnt). In diesem Fall besteht die Aufgabe darin, das Laufband erfolgreich zu bewegen. Das System verschafft sich durch Motor Babbling ein allgemeines Verständnis seiner Dynamik und meistert dann eine gewünschte „spezifische“ Aufgabe, indem es aus jeder Erfahrung lernt, daher der Name G2P.

Abbildung 4: Der G2P-Algorithmus. Bildquelle: Marjaninejad et al.

Abbildung 4: Der G2P-Algorithmus. Bildquelle: Marjaninejad et al.

Das neuronale Netz, das mit MATLAB und der Deep Learning Toolbox™ erstellt wurde, nutzt die Ergebnisse des Motor Babbling, um eine inverse Zuordnung zwischen Eingängen (Bewegungskinematik) und Ausgängen (motorischen Aktivierungen) herzustellen. Das Netz aktualisiert das Modell während der Reinforcement-Learning-Phase anhand jedes Versuchs, um die gewünschten Ergebnisse zu ermitteln. Es merkt sich jedes Mal das beste Ergebnis, und wenn eine neue Eingabe zu einem besseren Ergebnis führt, überschreibt es entsprechend Einstellungen im Modell.

Der G2P-Algorithmus kann mit 5 Minuten unstrukturierten Spielens eine neue Gehaufgabe selbstständig erlernen. Dann kann er sich ohne zusätzliche Programmierung an andere Aufgaben anpassen.

Veröffentlicht 2019

Artikel für ähnliche Einsatzgebiete anzeigen

Artikel für verwandte Branchen anzeigen