Reinforcement Learning mit Tensorflow-Agenten [2022]
Veröffentlicht: 2021-01-01Reinforcement Learning hat mit dem relativ neuen Erfolg von DeepMinds AlphaGo-Methode, den Weltmeister im Go-Spieler zu schlagen, wertvolle Popularität erlangt. Die AlphaGo-Methode wurde teilweise durch Verstärkungslernen in tiefen neuronalen Netzen erzogen.
Dieser Lernstil unterscheidet sich beim maschinellen Lernen von den klassischen überwachten und nicht überwachten Paradigmen. Beim Reinforcement Learning reagiert das Netzwerk auf Umgebungsdaten (den so genannten Zustand) unter Verwendung von tiefen neuronalen Netzwerken und beeinflusst das Verhalten eines Agenten, um zu versuchen, eine Belohnung zu optimieren.
Diese Technik hilft einem Netzwerk zu lernen, wie man Sport treibt, wie Atari oder andere Videospiele, oder eine andere Herausforderung, die als Spielform umgeschrieben werden kann. In diesem Tutorial, einem gängigen Modell des verstärkenden Lernens, werde ich die allgemeinen Prinzipien des Q-Lernens vorstellen und demonstrieren, wie man tiefes Q-Lernen in TensorFlow integriert.
Inhaltsverzeichnis
Einführung in das bestärkende Lernen
Wie oben erwähnt, besteht Reinforcement Learning aus einigen wenigen grundlegenden Einheiten oder Prinzipien. Sie sind: eine Umgebung, die eine Bedingung und Belohnung schafft, und eine Entität, die Aktionen in der gegebenen Umgebung ausführt. Im folgenden Diagramm sehen Sie diese Interaktion:
Die Aufgabe des Agenten in einer solchen Umgebung besteht darin, den Zustand und die Anreizinformationen, die er erhält, zu analysieren und ein Verhalten auszuwählen, das den Input, den er von der Belohnung erhält, maximiert. Der Agent lernt durch wiederholten Kontakt mit der Welt, oder mit anderen Worten, durch wiederholtes Spielen des Spiels.
Um erfolgreich zu sein, muss der Agent:

1. Lernen Sie den Zusammenhang zwischen Zuständen, Verhalten und daraus resultierenden Anreizen kennen
2. Bestimmen Sie den besten Zug zur Auswahl (1)
Die Umsetzung (1) erfordert die Definition einer bestimmten Reihe von Prinzipien, die zur Benachrichtigung von (2) verwendet werden können, und (2) wird als Betriebsstrategie bezeichnet. Eine der gebräuchlichsten Methoden zur Anwendung von (1) und (2) mit Deep Q ist das Deep Q-Netzwerk und die Epsilon-Greedy-Richtlinie.
Lernen: Die beliebtesten 5 TensorFlow-Projekte für Anfänger
Q lernen
Q-Learning ist eine wertbasierte Methode zur Bereitstellung von Daten, um festzustellen, welche Maßnahmen ein Agent ergreifen kann. Das Erstellen einer Tabelle, die die Vorteile des Ergreifens von Maßnahmen über mehrere Spielzüge in einem Zustand zusammenfasst, ist ein ursprünglich intuitives Konzept zur Generierung von Prinzipien, auf denen Maßnahmen basieren. So behalten Sie den Überblick darüber, welche Bewegungen am vorteilhaftesten sind. Betrachten wir für den Anfang ein einfaches Spiel in jedem Zustand mit 3 Zuständen und zwei möglichen Aktionen – eine Tabelle kann die Belohnungen für dieses Spiel darstellen:
Aktion 1 | Aktion 2 | |
Zustand 1 | 0 | 10 |
Staat 2 | 10 | 0 |
Zustand 3 | 0 | 10 |
Sie können in der obigen Tabelle sehen, dass für dieses einfache Spiel, wenn der Agent in Zustand 1 ist und Aktion 2 ausführt, er eine Belohnung von 10, aber keine Belohnung erhält, wenn er Aktion 1 ausführt. In Zustand 2 ist die Bedingung umgekehrt, und Zustand 3 ähnelt schließlich Zustand 1. Wenn ein Agent dieses Spiel willkürlich erforscht und das Verhalten zusammenzählt, erhält er die größte Belohnung in einem der drei Zustände (wenn er dieses Wissen beispielsweise in einem Array speichert), somit ist die praktische Form der obigen Tabelle effektiv bekannt.
Mit anderen Worten, wenn der Agent tatsächlich das Verhalten ausgewählt hätte, das er in der Vergangenheit gelernt hatte und das die höchste Belohnung geliefert hatte (irgendeine Form der obigen Tabelle effektiv lernen), hätte er gelernt, wie man das Spiel effektiv spielt. Wenn es angebracht ist, Tabellen einfach durch Summierung zu erstellen, warum brauchen wir dann ausgefallene Ideen wie Q-Learning und dann neuronale Netze?
Aufgeschobene Belohnung
Nun, die erste offensichtliche Antwort ist, dass das obige Spiel einfach sehr einfach ist, mit nur 3 Zuständen und 2 Akten pro Zustand. Echte Spiele sind wesentlich komplexer. Das Prinzip der verzögerten Belohnung im obigen Fall ist das andere wichtige Konzept, das fehlt. Ein Agent muss lernen, Schritte zu unternehmen, um die realistischsten Spiele richtig zu spielen, was nicht unbedingt zu einer Belohnung führen muss, aber später zu einer erheblichen Belohnung führen kann.
Aktion 1 | Aktion 2 | |
Zustand 1 | 0 | 5 |
Staat 2 | 0 | 5 |
Zustand 3 | 0 | 5 |
Zustand 4 | 20 | 0 |
Wenn Aktion 2 in allen Zuständen des oben erwähnten Spiels ausgeführt wird, geht der Agent zurück zu Zustand 1, dh er geht zurück zum Anfang. In den Zuständen 1 bis 3 bekommt er dafür sogar 5 Punkte gutgeschrieben. Wenn daher Aktion 1 in allen Staaten 1-3 durchgeführt wird, reist der Agent in den nächsten Staat, erhält aber keine Belohnung, bis er Staat 4 betritt, an welchem Punkt er eine Belohnung von 20 erhält.
Mit anderen Worten, ein Agent ist besser dran, wenn er nicht Aktion 2 ausführt, um eine sofortige Belohnung von 5 zu erhalten, sondern stattdessen Aktion 1 wählen kann, um kontinuierlich durch die Zustände zu gehen, um eine Belohnung von 20 zu erhalten. Der Agent möchte in der Lage sein Handlungen auszuwählen, die zu einer verzögerten Belohnung führen, wenn der Wert der verzögerten Belohnung zu hoch ist.
Lesen Sie auch: Tensorflow-Bildklassifizierung
Die Q-Lernregel
Dies ermutigt uns, die Q-Lernregeln zu präzisieren. Beim tiefen Q-Lernen muss das neuronale Netzwerk den aktuellen Zustand s als Vektor nehmen und einen Q-Wert für jedes potenzielle Verhalten a in diesem Zustand zurückgeben, dh es ist notwendig, Q(s, a) für beide zurückzugeben s und a. Diese Q(s, a) müssen im Training durch die folgende Regel überarbeitet werden:
Q(s,a) = Q(s,a) + alp[r+γmax Q(s',a ') – Q(s,a)] + alp[r+ γmax Q(s',a')
Dieses Gesetz erfordert ein wenig Auspacken für das Upgrade. Zweitens können Sie sehen, dass der neue Wert von Q(s, a) eine Änderung seines vorhandenen Werts erfordert, indem Sie einige zusätzliche Bits auf der rechten Seite der obigen Gleichung einfügen. Von links nach rechts wechseln. Vergiss das Alpha für eine Weile. Innerhalb der eckigen Klammern sehen wir das erste Wort r, das für die Auszeichnung steht, die für das Handeln in Staaten verdient wurde.

Dies ist die sofortige Belohnung; es handelt sich noch nicht um eine aufgeschobene Befriedigung. Das nächste Wort ist die verzögerte Anreizschätzung. Zunächst einmal haben wir den γ-Wert, der den verzögerten Belohnungseffekt diskontiert, der immer zwischen 0 und 1 liegt. Mehr dazu gleich. Der nächste Term maxa'Q(s, 'a') ist der maximale Q-Wert, der in der nächsten Bedingung verfügbar ist.
Lassen Sie uns die Dinge etwas einfacher machen – der Agent beginnt in Zuständen, führt Aktion a aus, endet in Zuständen, und dann spezifiziert der Code den maximalen Wert von Q in Zuständen, dh max a 'Q(s',a'). Warum wird dann beim Max ein 'Q(s',a')-Sinn berücksichtigt? Wenn es wirksam wird und sich im Zustand s befindet, ist es bekannt, dass es die volle mögliche Belohnung darstellt, die an den Handler geht.
γ diskontiert diesen Wert jedoch, um zu berücksichtigen, dass es für den Agenten nicht wünschenswert ist, ewig auf einen möglichen Anreiz zu warten – es ist besser für den Agenten, den größten Preis mit der geringsten Zeit zu erzielen. Beachten Sie, dass der Q(s',a)'-Wert auch implizit den höchsten diskontierten Anreiz für die Wirtschaft danach behält, dh Q(s',a)', weil er die diskontierte Motivation für den Zustand Q(s',a) beibehält. ' und so weiter.
Dies liegt daran, dass der Agent die Aktion nicht nur auf der Grundlage der unmittelbaren Belohnung r auswählt, sondern auch auf der Grundlage potenzieller zukünftiger diskontierter Anreize.
Tiefes Q-Lernen
Deep Q Learning folgt dem Q-Learning-Aktualisierungsgesetz während der gesamten Trainingsphase. Mit anderen Worten, es wird ein neuronales Netzwerk erstellt, das den Zustand s als seine Eingabe nimmt, und dann wird das Netzwerk darauf trainiert, geeignete Q(s, a)-Werte für jedes Verhalten im Zustand s zu erzeugen. Die Aktion des Agenten wird dann ausgewählt, indem die Aktion mit dem größten Q(s, a)-Wert ausgeführt wird (indem ein argmax aus der Ausgabe des neuronalen Netzwerks genommen wird). Dies ist im ersten Schritt des folgenden Diagramms zu sehen:
Aktionsauswahl und Trainingsschritte – Deep Q-Lernen

Sobald diese Übertragung erfolgt ist und eine Aktion ausgewählt wurde, führt der Agent die Aktion aus. Der Agent erhält dann eine Rückmeldung darüber, welcher Anreiz gegeben wird, um die Aktion von diesem Zustand aus durchzuführen. Gemäß der Q Learning Guideline wollen wir nun im nächsten Schritt das Netzwerk schulen. Im zweiten Teil ist dies im Diagramm oben zu sehen.
Der Zustandsvektor s ist das x-Eingangsarray für das Netzwerktraining, und das y-Ausgangstrainingsmuster ist der Q(s, a)-Vektor, der während des Auswahlprozesses der Aktion gesammelt wurde. Einer der Q(s,a)-Werte, der der Aktion a entspricht, ist jedoch so eingestellt, dass er ein Ziel von r+γQ(s',a') hat, wie in der obigen Abbildung zu sehen ist. Indem das Netzwerk auf diese Weise trainiert wird, dem Agenten mitzuteilen, welches Verhalten für seinen langfristigen Nutzen am besten auszuwählen ist, wird der Q(s, a)-Ausgangsvektor des Netzwerks mit der Zeit stärker.
Vorteile des bestärkenden Lernens:
- Reinforcement Learning kann verwendet werden, um sehr herausfordernde Herausforderungen zu lösen, die mit herkömmlichen Ansätzen nicht bewältigt werden können.
- Diese Strategie wird gewählt, um langfristige Ergebnisse zu erzielen, die sehr schwer zu erreichen sind.
- Dieses Lernmuster ist dem Lernen von Menschen etwas ähnlich. Daher ist es nahe daran, Perfektion zu erreichen.
- Das Modell würde die Fehler korrigieren, die während der Testphase aufgetreten sind.
- Wenn ein Fehler vom Modell korrigiert wird, ist die Wahrscheinlichkeit, dass derselbe Fehler auftritt, etwas geringer.
- Es würde das beste Paradigma für ein bestimmtes zu lösendes Problem schaffen.
Nachteile von Reinforcement Learning
- Reinforcement Learning als Schema ist in vielerlei Hinsicht falsch, aber gerade diese Qualität macht es nützlich.
- Zu viel Reinforcement Learning kann dazu führen, dass Zustände überfordert werden, was die Ergebnisse schmälern kann.
- Reinforcement Learning ist dem Einsatz zur Lösung grundlegender Probleme nicht vorzuziehen.
- Reinforcement Learning erfordert viel Intelligenz und viel Rechenleistung. Es ist datenhungrig. Deshalb passt es so gut in Videospiele, sodass Sie das Spiel immer wieder spielen können und es möglich scheint, viele Details zu erhalten.
- Reinforcement Learning geht davon aus, dass das Universum Markovian ist, was es nicht ist. Das Markovsche Modell beschreibt eine Abfolge möglicher Ereignisse, bei denen die Eintrittswahrscheinlichkeit nur von der im vorangegangenen Ereignis erreichten Bedingung abhängt.
Was als nächstes?
Wenn Sie maschinelles Lernen beherrschen und lernen möchten, wie man einen Agenten trainiert, um Tic Tac Toe zu spielen, einen Chatbot zu trainieren usw., sehen Sie sich den PG-Diplomkurs für maschinelles Lernen und künstliche Intelligenz von upGrad an.
Was ist TensorFlow?
Python, die Programmiersprache, die häufig beim maschinellen Lernen verwendet wird, verfügt über eine umfangreiche Funktionsbibliothek. TensorFlow ist eine solche von Google gestartete Python-Bibliothek, die schnelle und effiziente numerische Berechnungen unterstützt. Es handelt sich um eine von Google erstellte und gepflegte Open-Source-Bibliothek, die umfassend zur Entwicklung von Deep-Learning-Modellen verwendet wird. TensorFlow wird auch zusammen mit anderen Wrapper-Bibliotheken verwendet, um den Prozess zu vereinfachen. Im Gegensatz zu einigen anderen numerischen Bibliotheken, die auch im Deep Learning verwendet werden, wurde TensorFlow sowohl für die Forschung und Entwicklung von Anwendungen als auch für die Funktionen der Produktionsumgebung entwickelt. Es kann auf Maschinen mit einzelnen CPUs, mobilen Geräten und verteilten Computersystemen ausgeführt werden.
Welche anderen Bibliotheken wie TensorFlow gibt es beim maschinellen Lernen?
Früher haben Ingenieure für maschinelles Lernen den gesamten Code für verschiedene maschinelle Lernalgorithmen manuell geschrieben. Jetzt war es nicht nur zeitaufwändig, sondern auch ineffizient und mühsam, jedes Mal die gleichen Codezeilen für ähnliche Algorithmen, statistische und mathematische Modelle zu schreiben. Als Problemumgehung wurden Python-Bibliotheken eingeführt, um Funktionen wiederzuverwenden und Zeit zu sparen. Pythons Sammlung von Bibliotheken ist umfangreich und vielseitig. Einige der am häufigsten verwendeten Bibliotheken von Python sind Theano, Numpy, Scipy, Pandas, Matplotlib, PyTorch, Keras und Scikit-learn, abgesehen von TensorFlow. Python-Bibliotheken sind auch problemlos mit C/C++-Bibliotheken kompatibel.
Welche Vorteile bietet die Verwendung von TensorFlow?
Die vielen Vorteile von TensorFlow machen es zu einer äußerst beliebten Option zur Entwicklung von Rechenmodellen für Deep Learning und maschinelles Lernen. Erstens ist es eine Open-Source-Plattform, die mit ihrer grafischen Darstellung erweiterte Datenvisualisierungsformate unterstützt. Programmierer können es auch einfach zum Debuggen von Knoten verwenden, was Zeit spart und die Notwendigkeit beseitigt, den gesamten Code des neuronalen Netzwerks zu untersuchen. TensorFlow unterstützt alle Arten von Operationen, und Entwickler können auf dieser Plattform jede Art von Modell oder System erstellen. Es ist problemlos mit anderen Programmiersprachen wie Ruby, C++ und Swift kompatibel.