Hallo habr Ich präsentiere Ihnen die Übersetzung des Artikels „Ignorieren Sie nie wieder das Reinforcement Learning“ von Dr. Michel Kana.
Mit einem Lehrer lernen und ohne Lehrer lernen ist nicht alles. Das weiß jeder. Beginnen Sie mit OpenAI Gym.
Wirst du den Schachweltmeister, Backgammon oder Go besiegen?Es gibt eine Möglichkeit, wie Sie dies tun können - Verstärkungstraining.
Was ist Bestärkungslernen?
Verstärktes Lernen ist das Lernen, in einer Umgebung konsistente Entscheidungen zu treffen und dabei die maximale Belohnung zu erhalten, die für jede Aktion gewährt wird.
In ihm ist kein Lehrer, nur ein Zeichen der Belohnung durch die Umwelt. Zeit ist wichtig, und Aktionen wirken sich auf nachfolgende Daten aus. Solche Bedingungen führen zu Schwierigkeiten beim Lernen mit oder ohne Lehrer.
Im folgenden Beispiel versucht die Maus, so viel Nahrung wie möglich zu finden, und vermeidet nach Möglichkeit Stromschläge.
Eine Maus kann mutig sein und eine Entladung bekommen, um an einen Ort mit viel Käse zu gelangen. Es wird besser sein, als nur still zu stehen und nichts zu empfangen.
Die Maus möchte nicht in jeder Situation die besten Entscheidungen treffen. Dies würde einen hohen geistigen Aufwand von ihr erfordern, und es wäre nicht universell.
Das Training mit Verstärkungen bietet einige magische Methoden, mit denen unsere Maus lernen kann, wie man Stromschläge vermeidet und so viel Nahrung wie möglich erhält.
Die Maus ist ein Agent. Ein Labyrinth mit Wänden, Käse und Elektroschocker ist
die Umwelt . Die Maus kann sich nach links, rechts, oben und unten bewegen - das sind
Aktionen .
Die Maus will Käse, keinen Stromschlag. Käse ist eine
Belohnung . Die Maus kann die Umgebung inspizieren - das sind
Beobachtungen .
Eisverstärkungstraining
Lassen wir die Maus im Labyrinth und gehen weiter zum Eis. „Der Winter ist gekommen. Sie und Ihre Freunde haben Frisbee in den Park geworfen, als Sie plötzlich Frisbee in die Mitte des Sees geworfen haben. Grundsätzlich war das Wasser im See gefroren, aber es gab ein paar Löcher, in denen das Eis geschmolzen war. (
Quelle )
„Wenn du auf eines der Löcher trittst, fällst du ins Eiswasser. Außerdem gibt es auf der Welt einen riesigen Mangel an Frisbee, daher ist es unbedingt erforderlich, dass Sie den See umrunden und eine Auffahrt finden. “(
Quelle )
Wie fühlst du dich in einer ähnlichen Situation?
Dies ist eine Herausforderung für das verstärkte Lernen. Der Agent kontrolliert die Bewegungen des Charakters in der Gitterwelt. Einige Gitterplättchen sind passierbar, während andere dazu führen, dass der Charakter ins Wasser fällt. Der Agent erhält eine Belohnung dafür, dass er einen passablen Weg zum Ziel gefunden hat.
Wir können eine solche Umgebung mit
OpenAI Gym simulieren - einem Toolkit zum Entwickeln und Vergleichen von Lernalgorithmen mit Verstärkungen. Es bietet Zugriff auf eine standardisierte Reihe von Umgebungen, wie in unserem Beispiel
Frozen Lake . Dies ist ein Textmedium, das mit ein paar Codezeilen erstellt werden kann.
import gym from gym.envs.registration import register
Jetzt brauchen wir eine Struktur, die es uns ermöglicht, die Probleme des Lernens systematisch mit Verstärkung anzugehen.
Markov Entscheidungsprozess
In unserem Beispiel steuert der Agent die Bewegung des Charakters in der Gitterwelt. Diese Umgebung wird als vollständig beobachtbare Umgebung bezeichnet.
Da die zukünftige Kachel nicht von früheren Kacheln abhängig ist, wird die aktuelle Kachel berücksichtigt
(Wir haben es mit einer Folge von Zufallszuständen zu tun, das heißt mit der
Markov-Eigenschaft. ) Deshalb haben wir es mit dem sogenannten
Markov-Prozess zu tun.
Der aktuelle Status fasst alles zusammen, was für die Entscheidung über den nächsten Schritt erforderlich ist, und nichts, woran man sich erinnern muss.
In jeder nächsten Zelle (d. H. Einer Situation) wählt der Agent mit einer gewissen Wahrscheinlichkeit die Aktion aus, die zur nächsten Zelle führt, d. H. Die Situation, und die Umgebung antwortet dem Agenten mit Beobachtung und Belohnung.
Wir addieren die Belohnungsfunktion und den Rabattkoeffizienten zum Markov-Prozess und erhalten den sogenannten
Markov-Belohnungsprozess . Durch Hinzufügen einer Reihe von Aktionen erhalten wir
den Markov-Entscheidungsprozess (
MDP ). Die Komponenten von MDP werden nachstehend ausführlicher beschrieben.
Zustand
Ein Zustand ist ein Teil der Umgebung, eine numerische Darstellung dessen, was der Agent zu einem bestimmten Zeitpunkt in der Umgebung beobachtet, des Zustands des Seenetzes. S ist der Startpunkt, G ist das Ziel, F ist das feste Eis, auf dem der Agent stehen kann, und H ist das Loch, in das der Agent fallen wird, wenn er darauf tritt. Wir haben 16 Zustände in einer 4 x 4-Grid-Umgebung oder 64 Zustände in einer 8 x 8-Umgebung. Im Folgenden werden wir ein Beispiel für eine 4 x 4-Umgebung mit OpenAI Gym zeichnen.
def view_states_frozen_lake(env = gym.make('FrozenLakeNotSlippery-v0')): print(env.observation_space) print() env.env.s=random.randint(0,env.observation_space.n-1) env.render() view_states_frozen_lake()
Aktionen
Der Agent verfügt über 4 mögliche Aktionen, die in der Umgebung als 0, 1, 2, 3 für links, rechts, unten bzw. oben dargestellt werden.
def view_actions_frozen_lake(env = gym.make('FrozenLakeNotSlippery-v0')): print(env.action_space) print("Possible actions: [0..%a]" % (env.action_space.n-1)) view_actions_frozen_lake()
Zustandsübergangsmodell
Das Statusübergangsmodell beschreibt, wie sich der Status der Umgebung ändert, wenn ein Agent basierend auf seinem aktuellen Status Maßnahmen ergreift.
Das Modell wird normalerweise durch die Übergangswahrscheinlichkeit beschrieben, die als quadratische Übergangsmatrix der Größe N x N ausgedrückt wird, wobei N die Anzahl der Zustände unseres Modells ist. Die folgende Abbildung zeigt ein Beispiel für eine solche Matrix für Wetterbedingungen.
In der Gefrorenen See-Umgebung gehen wir davon aus, dass der See nicht rutschig ist. Wenn wir richtig gehen, dann gehen wir definitiv richtig. Daher sind alle Wahrscheinlichkeiten gleich.
"Links" verschiebt die Zelle von Agent 1 nach links oder belässt sie an derselben Position, wenn sich der Agent am linken Rand befindet.
"Rechts" verschiebt es 1 Zelle nach rechts oder belässt es an derselben Position, wenn sich der Agent am rechten Rand befindet.
"Auf" verschiebt die Zelle von Agent 1 nach oben, oder der Agent bleibt an derselben Stelle, wenn er sich an der oberen Grenze befindet.
"Nach unten" verschiebt die Zelle von Agent 1 nach unten oder bleibt an derselben Stelle, wenn sie sich an der unteren Grenze befindet.
Vergütung
In jedem Zustand F erhält der Agent 0 Belohnungen, in Zustand H erhält er -1, da der Agent in diesem Zustand stirbt. Und wenn der Agent das Ziel erreicht, erhält er eine Belohnung von +1.
Aufgrund der Tatsache, dass beide Modelle, das Übergangsmodell und das Belohnungsmodell, deterministische Funktionen sind, macht dies die Umgebung deterministisch. \
Rabatt
Der Rabatt ist ein optionaler Parameter, der die Wichtigkeit zukünftiger Belohnungen steuert. Sie wird im Bereich von 0 bis 1 gemessen. Mit diesem Parameter soll verhindert werden, dass die Gesamtbelohnung unendlich wird.
Der Rabatt modelliert auch das Verhalten des Agenten, wenn der Agent die sofortige Belohnung der Belohnung vorzieht, die möglicherweise in der Zukunft erhalten wird.
Wert
Der Wert des Vermögens ist das erwartete langfristige Einkommen mit einem Abschlag für das Vermögen.
Richtlinie (π)
Die Strategie, mit der der Agent die nächste Aktion auswählt, wird als Richtlinie bezeichnet. Unter allen verfügbaren Richtlinien ist die optimale die, die die Höhe der während der Episode erhaltenen oder erwarteten Vergütung maximiert.
Folge
Die Episode beginnt, wenn der Agent in der Startzelle erscheint, und endet, wenn der Agent entweder in das Loch fällt oder die Zielzelle erreicht.
Lassen Sie uns alles visualisieren
Nachdem wir alle am Markov-Entscheidungsprozess beteiligten Konzepte überprüft haben, können wir nun mit OpenAI Gym mehrere zufällige Aktionen in einer 16x16-Umgebung modellieren. Der Agent wählt jedes Mal eine zufällige Aktion aus und führt sie aus. Das System berechnet die Belohnung und zeigt den neuen Zustand der Umgebung an.
def simulate_frozen_lake(env = gym.make('FrozenLakeNotSlippery-v0'), nb_trials=10): rew_tot=0 obs= env.reset() env.render() for _ in range(nb_trials+1): action = env.action_space.sample()
Fazit
In diesem Artikel haben wir kurz die grundlegenden Konzepte des verstärkenden Lernens besprochen. Unser Beispiel enthält eine Einführung in das OpenAI Gym-Toolkit, mit dem Sie problemlos mit vorgefertigten Umgebungen experimentieren können.
Im nächsten Teil stellen wir vor, wie Richtlinien entworfen und implementiert werden, die es dem Agenten ermöglichen, eine Reihe von Aktionen durchzuführen, um das Ziel zu erreichen und eine Auszeichnung zu erhalten, z. B. einen Weltmeister zu besiegen.
Vielen Dank für Ihre Aufmerksamkeit.