[PYTHON] Verstärkungslernen 2 Markov-Entscheidungsprozess, Belman-Gleichung

Aidemy 2020/11/15

Einführung

Hallo, es ist ja! Ich bin eine knusprige Literaturschule, aber ich war an den Möglichkeiten der KI interessiert, also ging ich zur AI-spezialisierten Schule "Aidemy", um zu studieren. Ich möchte das hier gewonnene Wissen mit Ihnen teilen und habe es in Qiita zusammengefasst. Ich freue mich sehr, dass viele Menschen den vorherigen zusammenfassenden Artikel gelesen haben. Vielen Dank! Dies ist der zweite Beitrag zur Stärkung des Lernens. Freut mich, dich kennenzulernen.

Was diesmal zu lernen ・ Komponenten des verbesserten Lernens ・ Über den Markov-Entscheidungsprozess ・ Wert, Gewinn, Zustand ・ Über die beste Politik ・ Über die Bellman-Gleichung

Komponenten des verstärkenden Lernens

N-Arm-Problem und nächste Schritte

-Das in Kapitel 1 behandelte Problem mit dem N-Arm-Band ist ein einfacheres Problem als das allgemeine Problem, da es __ "sofortige Belohnung" __ Punkte und __ "Status ändert sich nicht in Abhängigkeit von der Aktion des Agenten" . Getroffen. - Status__ steht für __Was ist der aktuelle Status der Umgebung. Es ist leicht zu verstehen, wenn man ein Brettspiel in Betracht zieht. Wenn der Spieler, der ein Agent ist, einen Zug des Gegners in der Umgebung von Shogi ausführt, hat sich das Spielfeld gegenüber seinem vorherigen Zug geändert, sodass sich auch die nächste Aktion ändert. Zu diesem Zeitpunkt kann gesagt werden, dass sich der Status von __ "board" __ geändert hat.

Über das Modell des verstärkenden Lernens

・ Intensiviertes Lernen ist __ "(1) Der Agent erhält den Status $ s_ {t} $ und bewirkt, dass die Aktion $ a_ {t} $ auf die Umgebung einwirkt." "Übergang" "③ Umgebung gibt dem Agenten $ r_ {t + 1} $" "④ Der Agent entscheidet die nächste Aktion $ a_ {t + 1} $ basierend auf dem Ergebnis von ②③" __ Es wird mit weitergehen. -__ "T" __ ist __ "Zeitschritt" __ und gibt an, wie oft die Operation ausgeführt wird. Dies ist die grundlegende Zeiteinheit für intensives Lernen.

Formulierung von Zuständen, Aktionen und Belohnungen

-Das Folgende ist eine Reihe von __Zuständen, die von der Umgebung übernommen werden können. S={s_{0},s_{1},s_{2},...}

・ Wenn die Belohnung nach der obigen Formel berechnet wird, wird $ R_ {t + 1} $ als __Bewilligungsfunktion __ bezeichnet. Wie Sie aus dieser Belohnungsfunktion ersehen können, wird der zukünftige Zustand wahrscheinlich nur durch den aktuellen (t, t + 1) Zustand / Verhalten bestimmt und hat nichts mit dem früheren Verhalten zu tun. __ "Markov-Eigenschaft" genannt __.

Markov Entscheidungsprozess

Was ist der Markov-Entscheidungsprozess?

-Die folgende Abbildung zeigt die diesmal verwendete Umgebung __ "Umgebung 1" __. Es wird gezeigt, dass es, wenn es von StateA ausgeht und Aktion X ausführt, mit einer Wahrscheinlichkeit von "0,7" zu StateB wechselt und mit einer Wahrscheinlichkeit von "0,3" zu StateA zurückkehrt. Wenn Sie in StateB "0.8" von actionX ziehen, erreichen Sie schließlich das Ziel (Ende).

スクリーンショット 2020-11-12 16.36.51.png

・ In jedem Fall die oben genannten 5 Elemente__[s,s',a,p(s'|a,s),r(s,a,s')]Wie ausgedrückt wird"Zustandsübergangsdiagramm"__Das ist.(Welcher Zustand ist s jetzt, s'Welcher Zustand als nächstes zu gehen ist, a ist actionX oder Y, p(s'|a,s)Ist seine Wahrscheinlichkeit, r(s,a,s')Ist die Belohnung)

-Der folgende Code ist eine Zusammenfassung aller Zustandsübergangsdiagramme dieser Umgebung 1 als Array. Ersetzen Sie ein Array durch numerische Werte wie StateA = 0, StateB = 1, End = 2.

スクリーンショット 2020-11-12 23.23.50.png

Einführung in das Konzept von Zeitzustand und Verhalten

スクリーンショット 2020-11-12 23.49.03.png

-__ "action ()" __ Der an die Funktion übergebene __ "Status" __ ist der Status "$ S_ {t} ", und der __ "state_transition" __, auf den A verweist, ist der __state-Übergang. Zahl __. Da diese 0. Spalte " S_ {t} $" ist, beschreiben Sie, dass sich dieser Teil auf den Teil bezieht, der sich im selben Zustand wie der übergebene Zustand befindet, und __ "A [:, 2]" __ in der 2. Spalte Gibt eine Liste möglicher Aktionen $ A_ {t} $ zu diesem Zeitpunkt zurück, indem auf verwiesen wird. Zu diesem Zeitpunkt ist der Rückgabewert eine mögliche Aktion, daher darf er nicht dupliziert werden, dh er muss ein __Einzigartiges Element __ sein. Verwenden Sie dazu __ "np.unique ()" __.

-Für den Ausführungsteil ist der aktuelle Status __ "state = [1]" __, was anzeigt, dass er sich in Status B befindet. Wenn Sie sich den s-Teil (aktuellen Status) von state_transition ansehen, dh die zweite Spalte der Zeile, in der Spalte 0 [1], 0 oder 1 ist, wird gespeichert, sodass diese als Ergebnis der Funktion zurückgegeben werden.

Einführung in das Konzept der Zeit-andere

・ Hier werden die Anfangszustandsverteilung, die Zustandsübergangswahrscheinlichkeit und die Belohnungsfunktion durch Einbeziehung des Zeitkonzepts neu definiert. -Die Verteilung des Anfangszustands ist einfach und Sie können den Zustand $ S_ {0} $ definieren, wenn t = 0. -Die Zustandsübergangswahrscheinlichkeit wird nur durch den Markov-Bestimmungsprozess __ bestimmt, und der Zustand $ S {t + 1} $ zum Zeitpunkt $ t + 1 $ wird nur durch $ S {t} $ und $ A_ {t} $ bestimmt. , $ P (s '| s_ {t}, a_ {t}) $. -Für Belohnung __ $ R {t + 1} $ beim Übergang in den Zustand $ S {t + 1} $, $ R_ {t + 1} = r (s_ {t}, a_ {t}, Es kann durch s_ {t + 1}) $ dargestellt werden. Der folgende Code definiert diese Belohnungsfunktion.

スクリーンショット 2020-11-13 11.38.57.png

-Für diese Funktion __ "R" __ übergeben Sie die oben genannten $ s_ {t}, a_ {t}, s_ {t + 1} $ als Argumente. Wenn __ bereits am Terminal ist, wird 0 zurückgegeben, da keine Belohnung vorhanden ist.

スクリーンショット 2020-11-13 12.20.13.png

-Für den Definitionsteil von T wird __ [(0, Terminals)] __ zurückgegeben, wenn sich __ bereits an den Endpunkten (Terminals) befindet, da sich der Status nicht ändert. -Für X werden die Zeilen, die den übergebenen Argumenten entsprechen, wie im vorherigen Abschnitt extrahiert. Speichern Sie __ "3. Spalte (Zustandsübergangswahrscheinlichkeit)" __ und __ "1. Spalte (Zustand nach Übergang)" __ in dieser Zeile in A und __ "Tupel (Tupel) für alle möglichen Fälle. A [i,:]) ”__ zum Tupeln und Zurückkehren.

Wert / Gewinn / Staat

Belohnungen und Einnahmen

・ Bis zu diesem Punkt haben wir das Lernen der Verstärkung modelliert und definiert. Von hier aus betrachten wir __ "Was ist die Grundlage für die Suche nach der optimalen Richtlinie?" __. ・ Wenn Sie erwägen, __reward __ als Index zu verwenden, wird dies durch __ nur die Aktion unmittelbar vor __ bestimmt. __ "Auch wenn die Aktion zu diesem Zeitpunkt von geringem Wert ist, ist sie danach von großem Wert. Ich übersehen _. -Die Lösung hierfür ist __ "Gewinn" . Da das Einkommen aus __ der Summe der in einem bestimmten Zeitraum erzielten Belohnungen __ berechnet wird, können die Belohnungen nach __ berücksichtigt werden . ・ Wenn die Belohnung, die durch die Aktion $ a {t} $ zum Zeitpunkt t erhalten wird, __ "$ R {t} " __ ist, ist die Summe der Belohnungen innerhalb eines bestimmten Zeitraums der Gewinn __ " G {t}" $ " Kann nach folgender Formel berechnet werden. $ G_{t} =R_{t+1} + \gamma R_{t+2}+ \gamma^2 R_{t+3}+....= \displaystyle\sum_{\tau=0}^{\infty} \gamma^{\tau} R_{t+1+\tau} $

スクリーンショット 2020-11-13 14.12.02.png

-Für __ "take_single_action ()" __ ist dies die __ "Funktion zum Bestimmen des nächsten Zustands basierend auf der Übergangswahrscheinlichkeit" __. Als Code generiert zuerst __ "random.uniform (0,1)" __ eine Zufallszahl von 0 bis 1. Außerdem ist __cumulative Wahrscheinlichkeit "cumlative_probability" __ definiert. -In der for-Anweisung werden die mögliche Wahrscheinlichkeit __ "Wahrscheinlichkeit" __ und der nächste Zustand __ "next_state" __ aus dem übergebenen Zustand und der Aktion für jede Episode "T" und die kumulative Wahrscheinlichkeit "cumlative_probability" extrahiert. Fügen Sie "Wahrscheinlichkeit" für jede Episode hinzu, und wenn diese größer als "x" wird, beenden Sie die for-Anweisung und geben Sie an diesem Punkt "next_state" zurück.

-Für eine andere Funktion __ "berechne_Wert ()" __ ist dies die Funktion, die __ "Rabattprämiensumme" __ berechnet. Zunächst werden "state" und "action" sowie __discount belohnungssumme "sumg" __ definiert.

・ Ausführungsteil![Screenshot 2020-11-14 12.12.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/bf1eac93-f500-a799 -9cdc-b692f5ad0f0f.png)

Wertfunktion / Zustandswertfunktion

・ Bei der Methode wie der Methode im vorherigen Abschnitt, bei der __Reward als Bewertungsstandard der Richtlinie verwendet wird, wird R basierend auf der Wahrscheinlichkeit bestimmt. Je mehr __state-Zweige vorhanden sind, desto komplizierter wird die Berechnungsformel. Es gibt einen Nachteil, dass es __ endet. ・ Wenn Sie den erwarteten Wert von __reward __ verwenden, können die oben genannten Nachteile beseitigt werden. Der erwartete Wert der Belohnung, der alle Aktionen nach __ ab einem bestimmten Status berücksichtigt, wird als "Wert" oder __ "Statuswert" __ bezeichnet. __ Je besser die Richtlinie, desto größer der Statuswert __. ・ Durch die Einführung dieses Konzepts können "in einer bestimmten Richtlinie __ welcher Zustand besser ist __ verglichen werden" und "wenn ein bestimmter Zustand am Startpunkt steht, ist es möglich, das Gute und das Schlechte jeder __ Richtlinie __ zu vergleichen" Zwei Dinge sind möglich.

Suche nach der besten Politik

Optimale Politik

Wenn diese beiden gelten, können wir sagen, dass __ "$ \ pi_ {1} eine bessere Strategie ist als \ pi_ {2} $" __.

Aktionswert

-Die Statuswertfunktion ist __ "erwarteter Wert der Belohnung, wenn ein bestimmter Status gestartet wird" , aber in Wirklichkeit " Belohnung, wenn ein bestimmter Status gestartet wird und eine bestimmte Aktion ausgeführt wird". In vielen Fällen ist es besser, den Wert zu berücksichtigen, der action berücksichtigt, z. B. "erwarteter Wert". Der Wert zu diesem Zeitpunkt heißt __ "Aktionswert" __, und die Funktion, die den Aktionswert unter einer bestimmten Kennzahl angibt, heißt __ "Aktionswertfunktion" __. -Die Aktionswertfunktion kann als eine Funktion bezeichnet werden, die bestimmt, __ wie gut jede "Aktion" ist.

・ Die Aktionswertfunktion kann mit "a" als Belohnung und "r" als Gamma berechnet werden. Der Code dafür sieht folgendermaßen aus:

スクリーンショット 2020-11-14 14.52.38.png

Optimale Zustandswertfunktion / optimale Aktionswertfunktion

Bellman-Gleichung

Optimaler Zustandswert

-Für __, um die optimale Zustandswertfunktion zu finden, __ um jede Zustandswertfunktion zu finden und __ zu vergleichen. Gleiches gilt für die Aktionswertfunktion, daher fahren wir hier mit der Statuswertfunktion fort.

Q^{\pi}(s,a) =\displaystyle\sum_{s' \in S}^{} (P(s'|s,a) (r(s,a,s') + \displaystyle\sum_{a' \in A(s')}^{} \gamma \pi(a'|s') Q^{\pi}(s',a')))

-Hier steht $ \ pi (a | s) $ für __ die Wahrscheinlichkeit, dass eine Aktion ausgewählt wird __.

・ Umgebung 1![Screenshot 2020-11-14 16.34.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/16c41c13-0b25-965d -b127-389bf3dfccb4.png)

Bellman optimale Gleichung

スクリーンショット 2020-11-14 16.34.19.png

-__ Q_optimum__ repräsentiert den maximalen Gewinn zu diesem Zeitpunkt und Q_pi repräsentiert die Richtlinie zu diesem Zeitpunkt. Da Q_pi [0 0] ist, ist es besser, _measure $ \ pi {1} $ zu nehmen, was immer ActionX erfordert.

Zusammenfassung

-Die Belohnung "R_ {t + 1}" im Zeitschritt "t + 1" wird ausgedrückt als $ r (S_ {t}, A_ {t}, S_ {t + 1}) $. Zu diesem Zeitpunkt wird die Tatsache, dass der zukünftige Zustand (t + 1) nur durch den aktuellen Zustand und das Verhalten (t) bestimmt wird, als "Markov-Eigenschaft" bezeichnet, und der Prozess des Verstärkungslernens, der dies erfüllt, wird als Markov-Bestimmungsprozess bezeichnet. ・ Bei der Bestimmung von Markov werden die Komponenten durch ein Array wie [s, s ', a, p (s' | a, s), r (s, a, s ')] im "Zustandsübergangsdiagramm" dargestellt. ". Wenn das Konzept der Zeit eingeführt wird, wird es durch $ [S_ {t}, S_ {t + 1}, A_ {t}, S_ {0}, R_ {t + 1}] $ dargestellt. -Die Zeit vom Anfang bis zum Ende einer Aufgabe wird als "Episode" bezeichnet. Beim intensiven Lernen wird diese Episode wiederholt gelernt, indem "die Umgebung initialisiert und basierend auf den Belohnungen der Aktionen des Agenten optimiert wird". ・ Berücksichtigen Sie bei der tatsächlichen Stärkung des Lernens die optimale Politik, die auf "Gewinn" basiert und nicht nur eine sofortige, sondern auch eine verspätete Entschädigung umfasst. Der Umsatz wird anhand der "Rabattprämiensumme" berechnet, die die Summe der Prämien zu jedem Zeitschritt multipliziert mit dem "Diskontsatz $ \ gamma $" ist.

Diese Zeit ist vorbei. Vielen Dank, dass Sie so weit gelesen haben.

Recommended Posts

Verstärkungslernen 2 Markov-Entscheidungsprozess, Belman-Gleichung
[Einführung] Stärkung des Lernens
Zukünftiges Verstärkungslernen_2
Zukünftiges Verstärkungslernen_1
Erweitertes Lernen 1 Python-Installation
Stärkung des Lernens 3 OpenAI-Installation
Stärkung des Lernens der dritten Zeile
[Lernen stärken] Banditenaufgabe
Python + Unity Enhanced Learning (Lernen)
Stärkung des Lernens 1 Einführungsausgabe