Q-Learning und DQN: den Wert von Aktionen lernen, von der Tabelle bis zum neuronalen Netz
Temporal-Difference-Lernen, Q-Learning und SARSA beim Klippenlauf, ε-gierige Erkundung, on-policy und off-policy, DQN mit Erfahrungsspeicher und Zielnetz am inversen Pendel auf dem Wagen von Grund auf geschrieben, und warum das Lernen von DQN so leicht zusammenbricht.
Serie KI-Grundlagen Teil 48 von 52
- Landkarte der künstlichen Intelligenz: was was ist und wie alles zusammenpasst
- Eine kurze Geschichte der künstlichen Intelligenz: von Turing bis zu Sprachmodellen
- Daten, Modell, Training, Inferenz: die Grundbegriffe an einem einzigen Beispiel
- Mathematische Notation lesen: Symbole, Indizes, Summen und Quantoren
- Mengen und Relationen: der Baukasten, aus dem Definitionen in der KI bestehen
- Funktionen und Abbildungen: warum jedes KI-Modell eine Funktion ist
- Logik und Beweise: die Regeln, nach denen KI schließt
- Graphen und Bäume: die Struktur, auf der Suche und neuronale Netze stehen
- Lineare Algebra für maschinelles Lernen: Vektoren, Matrizen und warum KI vor allem multipliziert
- Ableitungen, Gradient und Kettenregel: wie ein Modell herausfindet, in welche Richtung es lernen soll
- Gradientenabstieg: wie ein Modell lernt
- Was ist Wahrscheinlichkeit: vom Würfelwurf zu den Kolmogorow-Axiomen
- Bedingte Wahrscheinlichkeit und der Satz von Bayes: wie du deine Einschätzung änderst, wenn du etwas Neues erfährst
- Zufallsvariable und Verteilungsfunktion: eine Funktion, die alles über eine Verteilung verrät
- Dichtefunktion und Wahrscheinlichkeitsfunktion: warum eine stetige Zufallsvariable in einem Punkt die Wahrscheinlichkeit null hat
- Erwartungswert, Varianz und Kovarianz: wo eine Verteilung liegt, wie breit sie ist und was womit zusammenhängt
- Überblick über Wahrscheinlichkeitsverteilungen: Bernoulli-, Binomial-, Poisson-, Gleich-, Normal- und Exponentialverteilung
- Gesetz der großen Zahlen und zentraler Grenzwertsatz: Warum sich Durchschnitte so vorhersagbar verhalten
- Statistik und Parameterschätzung: Maximum Likelihood, MAP und Konfidenzintervalle
- Informationstheorie: Entropie, Kreuzentropie und KL-Divergenz — woher Verlustfunktionen kommen
- Zustandsraumsuche: BFS, DFS, UCS und A* mit Animationen
- Spiele und Gegner: Minimax, Alpha-Beta-Suche und Monte Carlo Tree Search
- Constraint Satisfaction: Backtracking, Constraint-Propagierung und AC-3 an Sudoku und einer Karte tschechischer Regionen
- Logik und wissensbasierte Systeme: Vorwärts- und Rückwärtsverkettung, Resolution und Expertensysteme
- Planung: STRIPS, die Blockwelt, Heuristiken aus Relaxierung und Planung in KI-Agenten
- Lokale Suche und simulierte Abkühlung: ein Handlungsreisender durch die tschechischen Regionalhauptstädte
- Genetische Algorithmen: Population, Kreuzung, Mutation und Selektion am Rucksack für die Wanderung
- Evolutionsstrategien und genetische Programmierung: von der 1/5-Erfolgsregel zum Keplerschen Gesetz
- Ameisenkolonieoptimierung: wie eine Pheromonspur einen kurzen Weg findet
- Partikelschwarmoptimierung: Trägheit, eigene Erfahrung und die Erfahrung des Schwarms
- Neuroevolution: Evolution der Gewichte und der Gestalt neuronaler Netze und der Algorithmus NEAT
- Fuzzy-Mengen und Zugehörigkeitsfunktionen: wie man „etwas warm“ aufschreibt
- Fuzzy-Logik und Wahrscheinlichkeit: warum „etwas warm“ nicht „wahrscheinlich warm“ bedeutet
- Fuzzy-Logik: t-Normen, Implikationen und WENN–DANN-Regeln
- Fuzzy-Regelung: Mamdani und Sugeno vom Ventilator bis zum Pendel auf dem Wagen
- Fuzzy-Clustering: der Algorithmus fuzzy c-means und Punkte zwischen den Clustern
- Neuro-Fuzzy-Systeme (ANFIS): Fuzzy-Regeln, die aus Daten lernen
- Markow-Ketten: Übergangsmatrix, stationäre Verteilung und PageRank
- Hidden-Markov-Modelle: der Viterbi-Algorithmus und das unehrliche Kasino
- Bayessche Netze: warum das Gras nass ist und was das für den Rasensprenger bedeutet
- Der Kalman-Filter: wie man aus ungenauen Messungen schätzt, wo ein Auto ist und wie schnell es fährt
- Arten des maschinellen Lernens: überwacht, unüberwacht, halbüberwacht und mehr
- Prompts, Kontext und RAG: wie man einem Modell die richtigen Informationen gibt
- Variational Autoencoder (VAE): neue Bilder aus einem stetigen latenten Raum
- Generative Adversarial Networks (GAN): der Fälscher gegen den Detektiv
- Diffusionsmodelle: wie aus reinem Rauschen ein Bild wird
- Markow-Entscheidungsprozesse: Zustände, Aktionen, Belohnungen und Bellman-Gleichungen
- Q-Learning und DQN: den Wert von Aktionen lernen, von der Tabelle bis zum neuronalen Netz
- Policy Gradient und PPO: die Strategie direkt lernen
- Wie ein KI-Agent funktioniert: ein Sprachmodell in einer Schleife mit Werkzeugen
- Programmieren mit KI-Agenten: Auftrag, Tests und Kontrolle
- Bewertung und Sicherheit von KI-Systemen: wie man misst und wie man überwacht
Der ganze Lehrplan der Serie 52 von 83 Themen fertig
- Wie ein Agent die Werte von Aktionen lernt, ohne die Regeln der Welt zu kennen.
- Warum Q-Learning und SARSA an der Klippe einen anderen Weg wählen.
- Was Erfahrungsspeicher und Zielnetz in DQN tun und warum DQN launisch ist.
Vorher gut zu wissen: Markow-Entscheidungsprozesse: Zustände, Aktionen, Belohnungen und Bellman-Gleichungen, Neuroevolution: Evolution der Gewichte und der Gestalt neuronaler Netze und der Algorithmus NEAT
Im letzten Teil haben wir die beste Strategie exakt berechnet, weil wir die Regeln der Welt kannten: wohin welche Aktion mit welcher Wahrscheinlichkeit führt und was der Agent dafür bekommt. Ein echter Agent kennt sie nicht. Ein Roboter weiß nicht genau, wie sein Rad durchrutscht, ein Programm, das ein Spiel spielt, kennt das Innere des Spiels nicht. Er muss ausprobieren und aus dem lernen, was passiert ist. In diesem Teil schreiben wir zwei solche Algorithmen: Q-Learning mit einer Tabelle und DQN, bei dem ein neuronales Netz die Tabelle ersetzt — genau die Kombination, mit der DeepMind 2015 einem Computer beibrachte, Dutzende Atari-Spiele vom Bildschirm aus zu spielen.
Er baut auf den Teilen Markow-Entscheidungsprozesse und Ein neuronales Netz von Grund auf auf.
1. Lernen aus Erfahrung
Definition — Temporal-Difference-Lernen (TD)
Sei (S, A, P, R, γ) ein MDP (Bezeichnungen aus dem letzten Teil), π die Strategie, nach der der Agent handelt, V : S → ℝ die bisherige Schätzung der Wertfunktion Vπ und α ∈ (0, 1] die Lernrate. Sei (s, a, r, s′) ∈ S × A × ℝ × S ein tatsächlich erlebter Übergang: Der Agent war im Zustand s, wählte die Aktion a, bekam die Belohnung r = R(s, a, s′) und gelangte nach s′. Wir definieren
- das TD-Ziel y = r + γ V(s′) (ist s′ ein Endzustand, so ist V(s′) = 0, also y = r);
- den TD-Fehler δ = y − V(s);
- den TD-Schritt (Methode TD(0)): Die neue Schätzung V′ : S → ℝ ist V′(s) = V(s) + α δ, V′(u) = V(u) für alle u ∈ S, u ≠ s.
Statt des Mittels ∑s′ P(s′ | s, a) […] über alle möglichen Folgezustände (wie in der Bellman-Gleichung) wird also ein einziger erlebter Übergang verwendet; P und R müssen wir nicht kennen. Das Ziel y enthält die eigene Schätzung V(s′) — eine Schätzung wird anhand einer anderen Schätzung korrigiert (Bootstrapping).
Morgens schätzt du, dass du in 30 Minuten bei der Arbeit bist. Nach zehn Minuten stehst du im Stau, und das Navi behauptet, es seien noch 35. Du musst nicht warten, bis du ankommst — du weißt schon jetzt, dass die Schätzung vom Morgen um 15 Minuten danebenlag, und nächstes Mal setzt du sie etwas höher an. Du lernst aus dem Unterschied zwischen zwei aufeinanderfolgenden Schätzungen.
V(s) ← V(s) + α [r + γ V(s′) − V(s)]
- V(s)
- die bisherige Schätzung des Werts des Zustands, von dem wir ausgegangen sind — sie korrigieren wir; in der Klammer wird sie abgezogen, damit die Korrektur proportional zum Fehler ist, nicht zum ganzen Wert
- α
- Lernrate, 0 < α ≤ 1 — wie großes Stück des Fehlers wir übernehmen; ein einzelner Übergang ist eine Zufallsstichprobe, also trauen wir ihm nicht ganz
- r
- die tatsächlich erhaltene Belohnung — der einzige Teil des Ziels, der gemessen und nicht geschätzt ist
- γ
- Diskontfaktor — der Wert des nächsten Zustands kommt einen Schritt später, genau wie in der Bellman-Gleichung
- V(s′)
- die Schätzung des Werts des Zustands, in dem wir tatsächlich gelandet sind — sie vertritt die ganze restliche Zukunft, die wir noch nicht erlebt haben (Bootstrapping); statt des Mittels ∑ P(s′ | …) eine einzige Stichprobe
Beispiel — der Weg zur Arbeit in Zahlen
Die Schätzung von zu Hause ist V(zu Hause) = 30 Minuten. Nach r = 10 Minuten Fahrt stehst du im Stau, und die Schätzung von dort ist V(Stau) = 35. Zeit wird nicht diskontiert (γ = 1), und statt Belohnungen addieren wir Minuten, also ist das TD-Ziel 10 + 1 · 35 = 45 und der TD-Fehler 45 − 30 = 15 (Farben wie in der Formel oben).
- mit α = 0,5: neue Schätzung 30 + 0,5 · 15 = 37,5 Minuten,
- mit α = 0,1: 30 + 0,1 · 15 = 31,5 Minuten,
- mit α = 1: direkt 45 — die letzte Erfahrung würde alle früheren komplett überschreiben.
Satz — mit festem α ist die Schätzung ein gleitender Mittelwert der Ziele
Seien α ∈ (0, 1], n ∈ ℕ, n ≥ 1, Q0 ∈ ℝ und c1, …, cn ∈ ℝ (Ziele). Für k = 1, …, n sei
Qk = Qk−1 + α (ck − Qk−1).
Dann gilt
Qn = (1 − α)n Q0 + ∑k=1n α (1 − α)n−k ck,
und die Gewichte sind nichtnegativ mit der Summe (1 − α)n + ∑k=1n α (1 − α)n−k = 1 — Qn ist ein gewichteter Mittelwert von Q0 und den Zielen.
Beweis. Die Regel lässt sich als Qk = (1 − α) Qk−1 + α ck umschreiben und wiederholt einsetzen (Induktion nach n). Die Summe der Gewichte folgt aus der Formel für die geometrische Reihe: ∑k=1n α (1 − α)n−k = α · 1 − (1 − α)n/α = 1 − (1 − α)n. ∎
Die Gewichte fallen geometrisch: Mit α = 0,5 hat das letzte Ziel das Gewicht 0,5, das vorletzte 0,25, das davor 0,125… Ältere Erfahrungen werden also nach und nach vergessen — das hilft, wenn sich die Ziele ändern (und beim TD-Lernen ändern sie sich, weil sie aus Schätzungen berechnet werden, die selbst gerade gelernt werden), aber in einer zufälligen Welt schwankt die Schätzung. Deshalb verlangt die Theorie für sichere Konvergenz, α allmählich zu verkleinern.
2. Q-Learning
Definition — Q-Learning und SARSA
Sei (S, A, P, R, γ) ein MDP, Q : S × A → ℝ eine Tabelle der bisherigen Schätzungen der Aktionswerte (am Anfang etwa überall 0), α ∈ (0, 1] die Lernrate und (s, a, r, s′) ein erlebter Übergang wie in der Definition von TD. Für einen Endzustand s′ setzen wir Q(s′, a′) = 0 für alle a′ ∈ A.
- Q-Learning (Christopher Watkins, 1989) ändert nach jedem Übergang ein einziges Feld der Tabelle: Q(s, a) ← Q(s, a) + α [r + γ · maxa′ ∈ A Q(s′, a′) − Q(s, a)]; die übrigen Felder Q(u, b), (u, b) ≠ (s, a), bleiben unverändert.
- SARSA braucht zusätzlich die Aktion a′ ∈ A, die der Agent in s′ nach seiner Strategie wirklich wählt (daher der Name: s, a, r, s′, a′), und ersetzt das Maximum durch ihren Wert: Q(s, a) ← Q(s, a) + α [r + γ · Q(s′, a′) − Q(s, a)].
Q-Learning lernt also den Wert des besten Verhaltens Q*, SARSA den Wert Qπ dessen, wie sich der Agent tatsächlich verhält, samt Ausprobieren. Für Q-Learning gilt (Watkins und Dayan, 1992): Ist γ < 1, sind die Belohnungen beschränkt, wird jedes Paar (s, a) unendlich oft korrigiert und erfüllen die Lernraten αk(s, a) bei der k-ten Korrektur des Feldes (s, a) ∑k αk = ∞ und ∑k αk2 < ∞, dann konvergiert Q mit Wahrscheinlichkeit 1 gegen Q*.
Eine Tabelle „wie gut ist es, hier das zu tun“. Nach jedem Schritt wird das Feld nach dem korrigiert, was direkt danach kam: Belohnung plus wie gut es vom neuen Ort aus aussieht. Q-Learning rechnet so, als würde es von dort an perfekt spielen; SARSA rechnet damit, dass es ab und zu eine Dummheit macht.
Q(s, a) ← Q(s, a) + α [r + γ · maxa′ Q(s′, a′) − Q(s, a)]
- Q(s, a)
- das Tabellenfeld für die eben ausprobierte Aktion — nur es wird korrigiert; die anderen Aktionen in s ändern sich nicht, weil dieser Schritt nichts über sie gesagt hat
- α
- Lernrate — bei uns 0,5: Die Welt an der Klippe ist deterministisch, wir müssen uns also vor dem neuen Ziel nicht fürchten
- r
- Belohnung für den Schritt: −1, oder −100 für einen Sturz
- γ
- Diskontfaktor — an der Klippe γ = 1, weil eine Episode immer endet und jeder Schritt −1 kostet, sodass ein kürzerer Weg auch ohne Diskont besser ist
- maxa′ Q(s′, a′)
- der Wert der besten Aktion im neuen Zustand — Q-Learning nimmt an, dass es von dort an optimal spielt, obwohl es in Wirklichkeit ab und zu eine zufällige Aktion probiert; in den Diagrammen unten ist Q-Learning bernsteinfarben
# Q-Learning (und SARSA) beim Klippenlauf
Q(s, a) = 0 für alle Zustände und Aktionen
für jede Episode:
s = Start
a = ε-gierige Aktion nach Q in s
solange s nicht das Ziel ist:
führe a aus, beobachte r und s′ # Sturz: r = −100, s′ = Start
a′ = ε-gierige Aktion nach Q in s′
ziel = max über b Q(s′, b) # Q-Learning
ziel = Q(s′, a′) # SARSA (statt der Zeile darüber)
wenn s′ das Ziel ist: ziel = 0
Q(s, a) = Q(s, a) + α · (r + γ · ziel − Q(s, a))
s = s′; a = a′
Beispiel — die ersten Stürze (α = 0,5, γ = 1, die Tabelle beginnt bei Nullen)
Der Agent probiert gleich am Start einen Schritt nach rechts und stürzt: r = −100, s′ = Start, wo bisher alle Werte 0 sind. Der neue Wert ist Q(Start, →) = 0 + 0,5 · (−100 + 1 · 0 − 0) = −50 (Farben wie in der Formel oben).
Dann probiert er einen Schritt nach oben: r = −1, das neue Feld hat lauter Nullen, Q(Start, ↑) = 0 + 0,5 · (−1 + 1 · 0 − 0) = −0,5.
Stürzt er am Start ein zweites Mal, ist der größte Wert am Start immer noch 0 (die Aktionen ↓ und ← hat er noch nicht probiert), also Q(Start, →) = −50 + 0,5 · (−100 + 1 · 0 − (−50)) = −75. Mit jedem weiteren Sturz nähert er sich −100 und mehr.
Beachte die Nebenwirkung: Alle echten Belohnungen sind negativ, also sehen unprobierte Aktionen mit null besser aus als probierte. Eine Tabelle, die bei Nullen beginnt, treibt den Agenten hier von selbst dazu, Neues auszuprobieren (sogenannter Optimismus gegenüber dem Unbekannten) — schon bei der gierigen Wahl, bevor der Zufall ε an die Reihe kommt.
Definition — ε-gierige Strategie (ε-greedy)
Sei S eine Menge von Zuständen, A eine endliche nichtleere Menge von Aktionen, Q : S × A → ℝ und ε ∈ [0, 1]. Für jedes s ∈ S sei a*(s) ∈ argmaxa ∈ A Q(s, a) die gierige Aktion (bei mehreren Maxima eines davon). Die ε-gierige Strategie bezüglich Q ist die stochastische Strategie
π(a | s) = 1 − ε + ε/|A| für a = a*(s), π(a | s) = ε/|A| für a ≠ a*(s).
Äquivalent: Wähle mit Wahrscheinlichkeit 1 − ε die Aktion a*(s), mit Wahrscheinlichkeit ε eine gleichverteilt zufällige Aktion aus ganz A (auch die gierige). Für ε = 0 ist es die gierige Strategie. Ohne zufällige Aktionen würde der Agent nie etwas ausprobieren, das ihm bisher nicht als das Beste erscheint, und er könnte am ersten ordentlichen Weg hängen bleiben, den er findet. Es ist die einfachste Lösung des Dilemmas Erkunden oder Ausnutzen (exploration vs. exploitation).
In dein Lieblingsrestaurant gehst du neunmal von zehn. Ab und zu probierst du ein neues aus — sonst erfährst du nie, dass man eine Straße weiter besser kocht.
Beispiel — Wahrscheinlichkeiten der Aktionen bei ε = 0,1
Die zufällige Aktion wird aus allen |A| = 4 Aktionen gewählt, also auch aus der besten. Deshalb
π(a | s) = 1 − ε + ε/|A| = 1 − 0,1 + 0,1/4 = 0,925 für die beste Aktion und ε/|A| = 0,1/4 = 0,025 für jede der drei anderen.
Jede bestimmte „schlechte“ Aktion — etwa ein Schritt nach unten in die Klippe — kommt also in einem von 40 Schritten vor.
3. Klippenlauf: Q-Learning gegen SARSA
Ein klassisches Experiment aus dem Lehrbuch von Richard Sutton und Andrew Barto (cliff walking). Ein Gitter 12 × 4, Start links unten, Ziel rechts unten und dazwischen eine Klippe. Jeder Schritt kostet −1, ein Sturz in die Klippe −100 und die Rückkehr zum Start. Ohne Diskont. Der kürzeste Weg führt direkt an der Klippe entlang (13 Schritte). Beide Algorithmen lernen 500 Episoden mit ε = 0,1 und α = 0,5, jeder in 50 unabhängigen Läufen.
Q-Learning hat in allen 50 von 50 Läufen den kürzesten Weg an der Klippe entlang gelernt. SARSA wählte in 41 Läufen einen Weg am oberen Rand des Gitters, so weit wie möglich von der Klippe entfernt (17 Schritte), in einem einen noch zwei Schritte längeren, und in 8 Läufen erreicht die gierige Strategie nach 500 Episoden das Ziel noch nicht — sie dreht sich im Kreis an Stellen, an die der Agent beim Lernen kaum kam.
Und jetzt ein Paradox: Während des Lernens steht SARSA besser da. In den letzten hundert Episoden bekommt es im Mittel −25,1, Q-Learning −51,1. Q-Learning geht am Rand der Klippe, und weil jeder zehnte Schritt zufällig ist, stürzt es im Mittel 0,34-mal pro Episode; SARSA nur 0,04-mal. Q-Learning hat gelernt, was ohne Ausprobieren am besten ist; SARSA, was mit Ausprobieren am besten ist. Was wir wollen, hängt davon ab, ob der Agent auch im Echtbetrieb ausprobieren wird — ein Roboter, der an einer echten Maschine lernt, sollte wie SARSA denken.
Beispiel — wie oft Q-Learning stürzt (vereinfachte Abschätzung)
Der gelernte Weg von Q-Learning führt vom Start nach oben und dann zehn Felder direkt über der Klippe entlang. Am Start und auf jedem dieser zehn Felder führt ein Schritt nach unten in die Klippe (am Start ein Schritt nach rechts), also eine bestimmte Aktion — bei ε = 0,1 mit Wahrscheinlichkeit 0,025. 11 solche Felder ohne Sturz durchqueren:
0,97511 = 0,757, ein Sturz während eines Durchgangs hat also die Wahrscheinlichkeit q = 1 − 0,757 = 0,243.
Nach einem Sturz beginnt der Agent wieder am Start, die Zahl der Stürze bis zu einem erfolgreichen Durchgang ist also geometrisch verteilt mit dem Erwartungswert q/1 − q = 0,243/0,757 = 0,32 Stürze pro Episode. Gemessen: 0,34 — etwas mehr, weil die Abschätzung zufällige Schritte nach links vernachlässigt, nach denen der Agent noch weitere Schritte über der Klippe verbringt. SARSA geht am oberen Rand, drei Reihen über der Klippe: Dort brächten sie erst mehrere zufällige Schritte nach unten hintereinander in die Klippe. Ein Risiko geht es vor allem am Start ein, und das allein ergibt 0,025/0,975 = 0,026 Stürze pro Episode; gemessen: 0,04.
Definition — Lernen nach eigener und fremder Strategie (on-policy / off-policy)
Eine Lernmethode schätze die Wertfunktion Vπ oder Qπ einer Strategie π (Zielstrategie) aus Übergängen, die entstehen, wenn der Agent nach der Strategie b handelt (Verhaltensstrategie).
- Die Methode ist on-policy genau dann, wenn Ziel- und Verhaltensstrategie identisch sind, π = b. Beispiel: SARSA mit ε-gieriger Strategie — es schätzt Qπ genau der ε-gierigen Strategie, nach der es handelt.
- Die Methode ist off-policy genau dann, wenn sie π ≠ b zulässt. Beispiel: Q-Learning — es handelt ε-gierig, schätzt aber dank des Maximums im Ziel Q* der gierigen (optimalen) Strategie.
Off-policy-Methoden können deshalb auch aus Erfahrungen lernen, die früher (mit einer anderen, älteren Strategie) oder von jemand anderem gesammelt wurden.
On-policy: Ich lerne aus meinen eigenen Fahrten und bewerte sie so, wie sie sind. Off-policy: Ich schaue mir auch fremde Fahrten an (oder meine alten) und leite daraus ab, wie der beste Fahrer fahren würde.
4. Wenn die Tabelle nicht reicht: DQN
Eine Tabelle braucht eine Zeile für jeden Zustand. Das inverse Pendel auf einem Wagen aus dem Teil über Neuroevolution hat einen Zustand aus vier reellen Zahlen (Position und Geschwindigkeit des Wagens, Winkel und Winkelgeschwindigkeit des Stabs); ein Atari-Spiel hat einen Zustand aus einem Bildschirm mit 210 × 160 Pixeln. Keine Tabelle. Stattdessen wird Q(s, a) von einem neuronalen Netz geschätzt.
Definition — Deep Q-Network (DQN)
Gegeben sei ein MDP mit einer endlichen Menge von Aktionen A und mit durch Vektoren beschriebenen Zuständen, S ⊆ ℝd (die Zustandsmenge muss hier nicht endlich sein; Summen über s′ in den Definitionen des letzten Teils werden dann durch Erwartungswerte ersetzt). Sei Q(·, ·; θ) : S × A → ℝ ein neuronales Netz mit Parametern θ ∈ ℝm, das für einen Zustand s den Vektor (Q(s, a; θ))a ∈ A ∈ ℝ|A| zurückgibt. DQN (Volodymyr Mnih u. a., DeepMind, 2015) hat zusätzlich
- einen Erfahrungsspeicher (replay buffer) D — eine endliche Liste von höchstens N letzten Übergängen (s, a, r, s′, k), wobei k ∈ {0, 1} angibt, ob s′ ein Endzustand ist;
- ein Zielnetz — Parameter θ− ∈ ℝm, die nur einmal alle C Schritte aus θ kopiert werden (θ− ← θ).
Für einen Übergang aus D ist das Ziel y = r + (1 − k) γ maxa′ ∈ A Q(s′, a′; θ−), und DQN minimiert bezüglich θ (bei festem θ−) den Verlust
L(θ) = E(s, a, r, s′, k) ~ D [(y − Q(s, a; θ))²],
wobei ~ D eine gleichverteilt zufällige Auswahl eines Übergangs aus dem Speicher bedeutet; in der Praxis wird der Erwartungswert durch den Mittelwert über einen zufälligen Stapel von Übergängen geschätzt. Der Agent handelt also in jedem Schritt (ε-gierig bezüglich Q(·, ·; θ)), speichert den Übergang in D, macht einen Gradientenschritt auf L und erneuert alle C Schritte θ−. Der Erfahrungsspeicher sorgt dafür, dass das Netz aus zufälligen Stapeln lernt, nicht aus den letzten Schritten hintereinander; das Zielnetz dafür, dass sich das Ziel nicht mit jedem Lernschritt verschiebt.
Erfahrungsspeicher: Statt nur aus den letzten paar Minuten zu lernen, sieht sich der Agent zufällige Erinnerungen aus seiner ganzen Geschichte an, damit er nicht vergisst, was er gestern konnte. Zielnetz: Wenn du lernst, eine Zielscheibe zu treffen, hilft es nicht, wenn sie sich bei jedem Schuss verschiebt. Wir lassen sie eine Weile an ihrem Platz.
L(θ) = E(s, a, r, s′) ~ D [(r + γ maxa′ Q(s′, a′; θ−) − Q(s, a; θ))²]
- E… ~ D
- Mittel über zufällige Übergänge aus dem Erfahrungsspeicher D — er mischt alte und neue Erfahrungen, sodass aufeinanderfolgende, sehr ähnliche Schritte das Netz nicht in eine Richtung ziehen
- r
- Belohnung — beim Pendel auf dem Wagen +1 für jeden Schritt, in dem der Stab steht
- γ
- Diskontfaktor 0,99 — das Netz „sieht“ ungefähr 1/1 − γ = 100 Schritte voraus
- max Q(s′, a′; θ−)
- das Ziel aus dem Zielnetz mit eingefrorenen Parametern θ− — dasselbe Maximum wie beim tabellarischen Q-Learning, nur bewegt es sich beim Lernschritt nicht; wenn der Zustand s′ einen Sturz bedeutet, ist dieser Term 0
- Q(s, a; θ)
- die Schätzung des gelernten Netzes für die Aktion, die wirklich ausgeführt wurde — das Einzige, was sich beim Lernschritt ändert (der Gradient läuft nur über θ)
Definition — Huber-Verlust
Der Huber-Verlust (mit Schwelle 1) ist die Funktion H : ℝ → ℝ,
H(d) = d2/2 für |d| ≤ 1, H(d) = |d| − 1/2 für |d| > 1.
Sie ist stetig differenzierbar mit der Ableitung H′(d) = d für |d| ≤ 1 und H′(d) = sgn d = ±1 für |d| > 1. Unser DQN setzt d = Q(s, a; θ) − y ein und minimiert statt des Quadrats des Fehlers E[H(d)] (wie der ursprüngliche Artikel, der den Fehler auf ±1 beschneidet): Kleine Fehler werden wie beim Quadrat korrigiert, ein großer Fehler (etwa wenn das Ziel nach dem Kopieren des Zielnetzes springt) gibt höchstens einen Gradienten der Größe eins, und ein einzelner seltsamer Übergang bringt das Netz nicht durcheinander.
# DQN beim Pendel auf dem Wagen
Netz Q(·; θ) 4 → 64 → 64 → 2, Zielnetz θ⁻ = θ, Speicher D leer
s = zufälliger Start
für t = 1 … 30 000:
ε = max(0,05; 1 − 0,95 · t / 10 000)
a = zufällige Aktion mit Wahrscheinlichkeit ε, sonst argmax Q(s, ·; θ)
führe a aus, beobachte s′ und ob der Stab fiel
speichere (s, a, r = 1, s′, fiel) in D # über 20 000 fällt der älteste heraus
s = neuer Start, wenn der Stab fiel oder 500 Schritte hielt, sonst s′
ziehe aus D einen zufälligen Stapel von 32 Übergängen, für jeden:
ziel = r, wenn er fiel
ziel = r + γ · max Q(s′, ·; θ⁻), sonst
ein Adam-Schritt auf dem mittleren Huber-Verlust (Q(s, a; θ) − ziel)
alle 500 Schritte: θ⁻ = θ
Beispiel — Erkundung und Größe der Werte
Die Erkundung fällt linear: ε0 = 1 (nur zufällige Aktionen), bei Schritt 5 000 ist ε = 1 − 0,95 · 0,5 = 0,525, und ab Schritt 10 000 bleibt es bei 0,05.
Wie große Werte muss das Netz lernen? Stünde der Stab ewig, wäre der Wert 1 + 0,99 + 0,99² + … = 1/1 − 0,99 = 100; für eine auf 500 Schritte begrenzte Episode ist es 1 − 0,99500/1 − 0,99 = 99,3. Am Anfang gibt das Netz Zahlen nahe null zurück, die Ziele müssen während des Lernens also um zwei Größenordnungen wachsen — und verschieben sich dabei ständig mit.
Unser DQN: ein Netz 4 → 64 → 64 → 2 (zwei Aktionen: nach links oder nach rechts schieben), Belohnung +1 für jeden Schritt, in dem der Stab steht, γ = 0,99, Speicher für 20 000 Übergänge, Stapel 32, das Zielnetz wird alle 500 Schritte kopiert, ε fällt in den ersten 10 000 Schritten von 1 auf 0,05. Insgesamt 30 000 Schritte. Alle 2 500 Schritte messen wir, wie viele Schritte die gierige Strategie durchhält (Mittel aus vier Starts, höchstens 500, also 10 Sekunden).
| Variante | beste Messung | wann | am Ende |
|---|---|---|---|
| volles DQN, Seed 1 | 500 | Schritt 17 500 | 110 |
| volles DQN, Seed 2 | 500 | Schritt 12 500 | 217 |
| ohne Erfahrungsspeicher | 192 | Schritt 7 500 | 124 |
| ohne Zielnetz | 9 | Schritt 2 500 | 9 |
Das volle DQN lernt, den Stab ganze 500 Schritte zu halten — im Lauf mit Seed 1 zum ersten Mal bei Schritt 17 500. Aber gleich darauf vergisst es das wieder: Am Ende des Lernens hält es nur 110 Schritte. Der zweite Lauf schwankt ähnlich. Ohne Erfahrungsspeicher (es lernt nur aus den letzten 32 Schritten) kommt das Netz nicht über 192 hinaus. Und ohne Zielnetz bricht das Lernen völlig zusammen: Die Strategie hält die ganze Zeit nur 9 Schritte durch — genau so lange wie ein Wagen, den du immer nach rechts schiebst. Das Netz hat eine einzige Aktion „gelernt“.
5. Warum DQN so launisch ist
Definition — tödliche Triade (deadly triad)
So bezeichnen Sutton und Barto die Situation, in der eine Methode zum Lernen von Werten gleichzeitig alle drei Eigenschaften hat:
- Funktionsapproximation: Die Schätzung ist keine Tabelle, sondern eine Funktion mit Parametern θ ∈ ℝm (etwa ein Netz), und es gibt weniger Parameter als Zustände, sodass eine Änderung von θ wegen eines Zustands auch die Schätzungen in anderen Zuständen ändert;
- Bootstrapping: Das Ziel enthält die eigene Schätzung, z. B. y = r + γ maxa′ Q(s′, a′; θ);
- Off-policy-Lernen: Die Übergänge, aus denen gelernt wird, stammen von einer anderen Strategie als der Zielstrategie (siehe die Definition oben).
Fehlt irgendeine der drei Eigenschaften, lässt sich die Instabilität vermeiden; sind alle drei vorhanden, gibt es keine allgemeine Konvergenzgarantie, und die Schätzungen können schwingen oder ins Unendliche divergieren (bekannt ist Bairds Gegenbeispiel). DQN enthält alle drei — Erfahrungsspeicher und Zielnetz mildern die Gefahr nur.
Das Netz lernt nach seinen eigenen Schätzungen. Steigt die Schätzung in einem Zustand, steigt sie (weil das Netz verallgemeinert) auch in ähnlichen Zuständen, einschließlich dessen, aus dem das Ziel berechnet wird. Das steigt, die Schätzung zieht hinterher… Ein Hund, der seinen eigenen Schwanz jagt.
In der Praxis kommt deshalb eine Reihe von Erweiterungen hinzu: Double DQN (Hado van Hasselt u. a., 2015) trennt die Wahl der besten Aktion von ihrer Bewertung und dämpft die systematische Überschätzung, die das Maximum im Ziel mit sich bringt; weiter priorisierter Erfahrungsspeicher, die Aufteilung in Wert und Vorteil (Dueling) und weitere — ihre Kombination heißt Rainbow (2017). Und ein ganz praktischer Rat: Speichere beim Lernen das Netz aus der besten Messung, nicht das letzte.
y = r + γ Q(s′, argmaxa′ Q(s′, a′; θ); θ−)
- r
- Belohnung, unverändert
- γ
- Diskontfaktor, unverändert
- argmax Q(s′, a′; θ)
- die Wahl der Aktion durch das gelernte Netz — welche Aktion wir in s′ wählen würden
- Q(s′, …; θ−)
- die Bewertung dieser Aktion durch das Zielnetz — eine andere Schätzung mit anderen Fehlern, sodass eine Aktion, die das gelernte Netz zufällig überschätzt hat, nicht automatisch auch einen überschätzten Wert bekommt
Beispiel — warum das Maximum überschätzt (vereinfacht)
Zwei Aktionen haben den wahren Wert 0, aber die Schätzung jeder von ihnen ist mit einem unabhängigen Fehler +1 oder −1 behaftet (beides mit Wahrscheinlichkeit 1/2). Vier gleich wahrscheinliche Fälle ergeben als Maximum der Schätzungen 1, 1, 1 und −1, also
E[max(Q̂1, Q̂2)] = 1 + 1 + 1 − 1/4 = 0,5 > 0 = max(Q1, Q2).
Das Maximum über verrauschte Schätzungen ist im Mittel größer als das Maximum der wahren Werte, und weil das Ziel mit dem Maximum immer wieder eingesetzt wird, breitet sich die Überschätzung aus. Wählt eine Schätzung die Aktion und bewertet sie eine zweite, unabhängige, ist der Erwartungswert der Bewertung 0 — der Fehler der zweiten Schätzung hat mit der Wahl nichts mehr zu tun.
Wertbasierte Methoden wie DQN funktionieren gut, wenn es wenige Aktionen gibt (nach links oder rechts schieben; die Tasten am Controller). Für kontinuierliche Aktionen — mit welcher Kraft ein Robotergelenk drehen — ist es günstiger, direkt die Strategie zu lernen. Das ist das Thema des nächsten Teils über Policy Gradient und PPO.
6. Zusammenfassung
- Ohne Kenntnis der Regeln der Welt werden Werte aus erlebten Übergängen gelernt: Die Schätzung rückt zum Ziel r + γ · Schätzung des nächsten Zustands.
- Q-Learning lernt den Wert des besten Verhaltens (off-policy), SARSA den Wert des Verhaltens mit Ausprobieren (on-policy).
- An der Klippe: Q-Learning findet den kürzesten Weg (13 Schritte), stürzt aber bei ε = 0,1 0,34-mal pro Episode; SARSA geht sicherer und bekommt während des Lernens mehr (−25,1 gegen −51,1).
- DQN ersetzt die Tabelle durch ein Netz; ohne Erfahrungsspeicher bzw. ohne Zielnetz lernt es nicht (höchstens 192 bzw. 9 Schritte).
- Auch das volle DQN schwankt: Es hält den Stab 500 Schritte und vergisst es dann wieder — die tödliche Triade.
Willst du es selbst ausprobieren? Lass einen KI-Agenten ein DQN auf der Umgebung CartPole aus der Bibliothek Gymnasium trainieren und die Lernkurve für fünf Seeds zeichnen. Dann soll er Double DQN hinzufügen und vergleichen.
Siehst du das anders? Schreib an support@coden-app.com.