Verstärktes Lernen ist in jüngster Zeit eines der potenziellen Forschungsfelder von Datenwissenschaftlern. Es ermöglicht, Prozesse, die wir bisher hatten, zu übertreffen, und macht es möglich, die sogenannte künstliche allgemeine Intelligenz (AGI) zu erreichen. In unserem vorherigen Blog haben wir die Theorie des Verstärkungslernens beschrieben und Ihnen vertraut gemacht. Dieser folgende Blog erfordert seine Kenntnis und führt die Prozessgrundlagen des Verstärkungslernens anhand eines praktischen Beispiels ein.
Vor dem Start der praktischen Seite. Wir müssen OpenAi erwähnen, sie sind einer der Hauptforscher im Bereich des Verstärkungslernens und im Bereich künstliche allgemeine Intelligenz. Sie entwickelten ein Toolkit namens Gym, ein kostenloses und benutzerfreundliches Tool für die künstliche Intelligenz. Programmierer und Entwickler können ihre eigenen Verstärkungslernalgorithmen darin vergleichen. Wir können Agenten in Spiele einprogrammieren, von Flanieren bis hin zu Flipper und anderen Spielen.
env = gym.make(‘CartPole-v0’)
Der obige Code definiert die Umgebung CartPole. Diese Umgebung ist im Grunde ein Balancespiel. Im Spiel besteht das Ziel darin, einen instabilen Pol auf einem sich bewegenden Quader auszugleichen. Dieser Quader bewegt sich entlang einer Dimension und ist reibungslos.
Das Spiel beginnt, wenn sich das Auto zu bewegen beginnt und die Stange zu fallen beginnt. Unser Agent gewinnt bei jedem erfolgreichen Zeitschritt +1 Belohnung. Wo erfolgreich heißt die noch ausbalancierte, stehende Stange. Das Spiel ist beendet, wenn der Mast einen Winkel von 15 Grad zur vertikalen Achse einrastet oder das Fahrzeug mehr als 2,4 Einheiten von der Mitte nach links oder rechts fährt.
Welche Aktion in einem bestimmten Bundesstaat zu wählen ist, kann auf unterschiedliche Weise mit unterschiedlichen Richtlinien definiert werden. Eine Möglichkeit besteht darin, für jedes Zustands- / Aktionspaar eine Güte (Q) zu definieren, die die maximale Belohnung aus diesem Zustand für diese Aktion darstellt. Für das Q-Lernen sind diese Werte in einer Tabelle enthalten, und nachdem der Unterricht abgeschlossen ist, wird die Aktion in einem bestimmten Zustand ausgewählt, der zu einer maximalen zukünftigen Belohnung führt.
Wertorientiertes Verstärkungslernen – Q-Learning
Initiieren Sie den Q-Wert: Erstellen Sie eine solche Q-Tabelle, in der die Anzahl der Spalten der Anzahl der möglichen Aktionen entspricht und in der die Anzahl der Zeilen der Anzahl der Status entspricht. Zu Beginn setzen wir alle Q auf 0 (dies ist die erwartete Belohnung für das angegebene Aktions- / Statuspaar).
# Quality init
Qualities = {}
all_states = []
for i in range(MAXSTATES):
all_states.append(str(i).zfill(3)) # Define all the possible states of the game
for state in all_states:
Qualities[state] = {}
for action in range(env.action_space.n):
Qualities[state][action] = 0
# end
Ein Lernzyklus
Wählen Sie eine Aktion aus dem aktuellen Status basierend auf der Q-Tabelle aus. Wenn die Umgebung in eine Richtung entdeckt wird, ist es leicht, lokal optimale Richtlinien zu finden. Um dies zu vermeiden, erweitern wir die Entscheidungsstrategie um einen Erkundungsmechanismus, bei dem unser Agent nicht aus dem bereits erlebten (die maximale Zeile einer bestimmten Tabelle in Q) auswählt, sondern eine Aktion zufällig auswählt. Für diesen Auswahlmechanismus definieren wir einen Parameter: Epsilon, der das Verhältnis festlegt, in dem der Agent auf der erlernten Karte entdeckt, erkundet oder nutzt und ausnutzt. Dieses Verhältnis wird während des Lernens geändert.
eps = 1.0 / np.sqrt(game_idx + 1)
Unsere Q-Tabelle zu Beginn des Lernens ist jedoch aufgrund der zufällig initialisierten Werte, die die Q-Matrix ist, nicht zuverlässig. Bei der Aktionsauswahl wenden wir also die Explorationsstrategie an, weil wir zu diesem Zeitpunkt kaum etwas über unsere Umwelt wissen. In diesem Fall ist das Epsilon in der Nähe. 1. Am Ende des Lernens verwenden wir die Explorationsstrategie nicht mehr, sondern die Ausbeutungsstrategie. Es wird durch den epsilon-Parameter ausgedrückt, der in der Nähe von 0 abfällt, und wir nutzen unsere bereits zuverlässige Q-Tabelle aus.
if np.random.uniform() < eps:
act = env.action_space.sample() # epsilon greedy
else:
act = max_dict(Qualities[state])[0]
Überschreiben und Feedback.
Nachdem der Agent die Aktion ausgeführt hat, finden Sie sich in einem neuen Zustand und erhalten eine neue Belohnung für die Durchführung dieser Aktion, die je nach vorherigem Status und getroffenen Maßnahmen positiv oder negativ sein kann. Mit der Kenntnis des vorherigen Zustands, des neuen Zustands, der ergriffenen Maßnahme und der Belohnung, die der Agent erhalten hat, und der Verwendung der Bellman-Gleichung kann er seine Q-Tabelle aktualisieren und überschreiben.
Wo,
- NewQ (s, a): Wert des neuen Q, wobei die Aktion aus diesem Zustand übernommen wird.
- Q (s, a): Aktueller Q-Wert am Status- und Aktionsort.
- R (s, a): Belohnung dafür, dass diese Aktion aus diesem Zustand ausgeführt wird.
- maxQ ’(s’, a ’): Die größtmögliche künftige Belohnung, wenn man den neuen Zustand und alle möglichen Maßnahmen berücksichtigt.
- α: Lernrate
- γ: Abzinsungssatz
a1, max_q_s1a1 = max_dict(Qualities[state_new])
Qualities[state][act] += ALPHA * (reward + GAMMA * max_q_s1a1 – Qualities[state][act])
state, act = state_new, a1
Der oben beschriebene Prozess verwendet die Ergebnisse des Lernzyklus. Damit der Agent die gesamte Umgebung abbilden kann, müssen wir mehr als ein Spiel ausführen. Diese Menge kann über einen Parameter bestimmt werden.
for game_idx in range(howmanyGames):
Ergebnis
Spielindex Epsilon-Reward
0 1.0000 14.0
10000 0.0100 200.0
20000 0.0071 200.0
30000 0.0058 200.0
40000 0.0050 200.0
50000 0.0045 200.0
Nun sind Sie mit dieser Verstärkungslernschleife und der Bellman-Aktualisierungsgleichung vertraut. Sie haben von wertorientiertem Verstärkungslernen oder Q-Learning gehört. Sie können erkennen, dass dieser Verstärkungslernalgorithmus völlig unabhängig von der Umgebung ist. Es ist nicht auf das System spezialisiert. In unserem folgenden Blog über Verstärkungslernen stellen wir Ihnen das sogenannte Deep Q-Lernen vor, eine Art künstliche allgemeine Intelligenz, die in verschiedenen Umgebungen effektiv sein kann.
Wir sind sicher, dass es in Ihrem Unternehmen viele Aufgaben gibt, die mit AI automatisiert werden können: Wenn Sie die Vorteile der künstlichen Intelligenz genießen möchten, wenden Sie sich an unsere kostenlose Beratung bei einem unserer Ansprechpartner.