Deep Q-Network (DQN) to przełomowy algorytm łączący Q-learning z głębokimi sieciami neuronowymi, który w 2015 roku nauczył się grać w gry Atari na nadludzkim poziomie — bezpośrednio z pikseli ekranu, bez żadnej wiedzy o regułach gry. Opublikowany przez DeepMind w Nature, DQN zdefiniował nową erę uczenia ze wzmocnieniem i utorował drogę do AlphaGo i nowoczesnego deep RL.
Od Q-learning do DQN
Problem z tabelarycznym Q-learning
Klasyczny Q-learning przechowuje wartości Q(s, a) w tabeli — jeden wiersz per stan, jedna kolumna per akcja. Działa doskonale w małych środowiskach (np. GridWorld z kilkudziesięcioma stanami).
Ale gra Atari ma obraz 210×160 pikseli × 3 kolory → ponad 10^30 000 możliwych stanów. Tabela Q-values nie zmieści się w żadnej pamięci. Ponadto: tabela nie generalizuje — wiedza o jednym stanie nie pomaga w podobnych stanach.
Rozwiązanie: aproksymacja funkcją
Zamiast tabeli, używamy funkcji aproksymującej Q(s, a; θ) — sieci neuronowej z parametrami θ. Sieć przyjmuje stan s (np. obraz gry) i zwraca wartości Q dla wszystkich akcji jednocześnie.
Q(s, a; θ) ≈ Q*(s, a)
Sieć uczy się przez minimalizację błędu między przewidywaną wartością Q a targetem (r + γ · max_a' Q(s', a')).
Architektura DQN
Wejście
4 ostatnie klatki gry (210×160 → preprocessowane do 84×84, grayscale, stacked). 4 klatki dostarczają informację o ruchu (prędkość, kierunek — z jednej klatki nie da się ich odczytać).
Sieć neuronowa
Konwolucyjna sieć neuronowa (CNN):
- Conv 32 filtry 8×8, stride 4 → ReLU
- Conv 64 filtry 4×4, stride 2 → ReLU
- Conv 64 filtry 3×3, stride 1 → ReLU
- Warstwa w pełni połączona 512 → ReLU
- Warstwa wyjściowa → |A| neuronów (jeden per akcję)
Wyjście
Wektor wartości Q — np. Q(s, lewo), Q(s, prawo), Q(s, strzał), Q(s, nic) — po jednej wartości na każdą możliwą akcję.
Polityka
ε-greedy: z prawdopodobieństwem ε wybierz losową akcję (eksploracja), w przeciwnym razie wybierz akcję z najwyższym Q (eksploatacja). ε maleje z czasem (np. od 1.0 do 0.01 przez 1M kroków).
Kluczowe innowacje DQN
1. Experience Replay
Zamiast uczyć się na bieżących doświadczeniach (które są skorelowane — kolejne klatki gry są podobne), DQN przechowuje przejścia (s, a, r, s') w buforze replay i trenuje na losowych mini-batchach z bufora.
Bufor replay: D = {(s₁, a₁, r₁, s₁'), (s₂, a₂, r₂, s₂'), ...} (typowo 1M ostatnich przejść)
Korzyści:
- Dekorelacja danych — losowe próbkowanie łamie sekwencyjne zależności
- Efektywność danych — jedno doświadczenie używane wielokrotnie
- Stabilność treningu — gradient nie oscyluje z powodu korelacji
Bez experience replay, trening DQN jest niestabilny i często diverguje.
2. Target Network
DQN używa dwóch sieci: online network Q(s, a; θ) i target network Q(s, a; θ⁻).
Problem bez target network: Target do treningu to: y = r + γ · max_a' Q(s', a'; θ)
Sieć trenowana jest ku celowi, który sam zależy od wag sieci — to ruchomy cel (moving target). Prowadzi do niestabilności i oscylacji.
Rozwiązanie: Target obliczany z zamrożoną kopią sieci (target network θ⁻). Wagi target network aktualizowane co C kroków (np. C = 10 000):
y = r + γ · max_a' Q(s', a'; θ⁻)
Korzyści:
- Target jest stabilny przez C kroków — sieć goni stały cel
- Redukcja oscylacji i dywergencji
- Znaczna poprawa stabilności treningu
Algorytm DQN krok po kroku
Inicjalizuj replay buffer D o pojemności N
Inicjalizuj online network Q z losowymi wagami θ
Inicjalizuj target network Q⁻ z wagami θ⁻ = θ
Dla każdego epizodu:
Obserwuj stan s₀
Dla każdego kroku t:
Wybierz akcję a z ε-greedy na Q(s, ·; θ)
Wykonaj a, obserwuj nagrodę r i nowy stan s'
Zapisz (s, a, r, s') do D
Próbkuj losowy mini-batch z D
Oblicz target: y = r + γ · max_a' Q(s', a'; θ⁻)
Gradient descent na (y - Q(s, a; θ))²
Co C kroków: θ⁻ ← θ
Wyniki DQN
W 2015 roku DeepMind przetestował DQN na 49 grach Atari 2600 — z tym samym algorytmem, tą samą architekturą sieci, tymi samymi hiperparametrami. Wyniki:
- 29 z 49 gier: DQN lepszy od profesjonalnych testerów
- Breakout: DQN odkrył strategię „tunelowania" — wbijanie piłki za mur cegieł
- Pong: perfekcyjna gra
- Space Invaders: nadludzki wynik
Słabsze wyniki w grach wymagających długoterminowego planowania (Montezuma's Revenge — praktycznie 0 punktów).
Rozszerzenia DQN
Double DQN (DDQN)
Klasyczny DQN ma bias optymistyczny — max_a' Q(s', a') systematycznie przeszacowuje wartości, bo ten sam model wybiera i ocenia akcję.
DDQN rozdziela: online network wybiera akcję, target network ją ocenia:
y = r + γ · Q(s', argmax_a' Q(s', a'; θ); θ⁻)
Znaczna redukcja przeszacowania, lepsza stabilność.
Dueling DQN
Architektura sieci z dwoma strumieniami:
- Value stream V(s) — wartość stanu (niezależna od akcji)
- Advantage stream A(s, a) — przewaga danej akcji nad średnią
Q(s, a) = V(s) + A(s, a) - mean(A(s, ·))
Intuicja: w wielu stanach wartość jest niezależna od akcji (np. gdy nie ma wrogów na ekranie). Rozdzielenie pozwala sieci uczyć się wartości stanu niezależnie.
Prioritized Experience Replay (PER)
Zamiast losowego próbkowania z bufora, priorytetyzuj przejścia z dużym błędem TD — te, gdzie model się najbardziej myli. Efekt: efektywniejsze uczenie na trudnych przejściach.
Noisy DQN
Zastępuje ε-greedy parametrycznym szumem w wagach sieci — sieć sama uczy się, ile eksploracji jest potrzebne. Lepsza eksploracja niż ε-greedy.
Rainbow DQN
Łączy wszystkie 6 rozszerzeń (Double, Dueling, PER, Noisy, C51 distributional, n-step returns) w jeden agent. Stan sztuki na Atari do momentu pojawienia się metod opartych na modelach.
DQN vs Policy Gradient
| Cecha | DQN (Value-based) | Policy Gradient (Policy-based) | |
|---|---|---|---|
| Uczy się | Wartości Q(s,a) | Polityki π(a | s) |
| Akcje | Dyskretne | Dyskretne i ciągłe | |
| Stabilność | Experience replay + target net | Wysoka wariancja gradientów | |
| Efektywność danych | Off-policy (lepsze) | On-policy (gorsze) | |
| Przykłady | DQN, Rainbow | REINFORCE, PPO, A3C |
DQN dominuje w zadaniach z dyskretnymi akcjami (gry, decyzje binarne). Dla ciągłych akcji (robotyka, jazda) stosuje się policy gradient (DDPG, SAC, PPO).
Zastosowania DQN poza grami
- Sterowanie robotami — decyzje dyskretne w środowisku symulowanym
- Optymalizacja sieci — routing, scheduling w sieciach komputerowych
- Personalizacja rekomendacji — wybór z dyskretnego zbioru itemów
- Handel algorytmiczny — decyzje kup/sprzedaj/trzymaj
- Sterowanie HVAC — optymalizacja zużycia energii w budynkach
Podsumowanie
DQN połączył Q-learning z głębokimi sieciami neuronowymi, udowadniając że uczenie ze wzmocnieniem skaluje się do złożonych problemów. Experience replay i target network rozwiązały problemy stabilności treningu. Rozszerzenia (Double, Dueling, PER, Rainbow) systematycznie poprawiały wyniki. DQN to fundament nowoczesnego deep RL i inspiracja dla AlphaGo, AlphaStar i współczesnych agentów AI.