Czym jest Q-learning?
Q-learning to jeden z fundamentalnych algorytmów uczenia ze wzmocnieniem, zaproponowany przez Christophera Watkinsa w 1989 roku. Jest to algorytm model-free (nie wymaga znajomości modelu środowiska) i off-policy (polityka eksploracji może być inna niż polityka optymalna, której się uczy).
Q-learning uczy się funkcji wartości działania Q(s, a) — „jak dobre jest wykonanie działania a w stanie s?". Optymalna polityka to po prostu: „w każdym stanie wybierz działanie z najwyższym Q". Algorytm gwarantuje zbieżność do optymalnego Q* pod warunkiem wystarczającej eksploracji i odpowiednich warunków technicznych.
Intuicja: labirynt
Wyobraź sobie robota w labiryncie. Na początku nie zna mapy — nie wie, które korytarze prowadzą do wyjścia. Każdy ruch to próba: idzie w losowym kierunku, trafia w ścianę (kara -1), cofa się, próbuje inaczej. Gdy w końcu dotrze do wyjścia (nagroda +100), zapamiętuje: „w tym stanie, to działanie było dobre".
Przy kolejnych próbach, informacja o „dobrej ścieżce" propaguje się wstecz — stany na drodze do nagrody też zyskują wartość. Po wielu epizodach robot zna Q(s, a) dla każdej pary stan-działanie i zawsze znajduje najkrótszą drogę do wyjścia.
Algorytm Q-learning krok po kroku
Formalizacja
Reguła aktualizacji Q-learning:
Q(s, a) ← Q(s, a) + α · [r + γ · max_{a'} Q(s', a') - Q(s, a)]
Gdzie:
- Q(s, a) — aktualna wartość Q dla stanu s i działania a
- α ∈ (0, 1] — learning rate (szybkość uczenia)
- r — natychmiastowa nagroda
- γ ∈ [0, 1] — discount factor (ważność przyszłych nagród)
- max_{a'} Q(s', a') — najlepsza wartość Q w następnym stanie s'
- r + γ · max Q(s', a') - Q(s, a) — TD error (Temporal Difference error)
Algorytm
Inicjalizuj Q(s, a) = 0 dla wszystkich s, a
Dla każdego epizodu:
Zainicjalizuj stan s
Powtarzaj (dla każdego kroku):
Wybierz działanie a za pomocą polityki (np. ε-greedy)
Wykonaj a, obserwuj nagrodę r i nowy stan s'
Aktualizuj: Q(s, a) ← Q(s, a) + α · [r + γ · max Q(s', a') - Q(s, a)]
s ← s'
Aż s jest stanem terminalnym
TD Error — serce algorytmu
TD error = r + γ · max Q(s', a') - Q(s, a)
To różnica między oczekiwaną wartością (Q(s, a)) a lepszą estymacją (r + γ · max Q(s', a')). Jeśli TD error > 0 → działanie było lepsze niż oczekiwano → zwiększ Q. Jeśli TD error < 0 → gorsze niż oczekiwano → zmniejsz Q.
TD learning łączy bezpośrednie doświadczenie (nagrodę r) z dotychczasową wiedzą (max Q(s', a')). To bootstrap — estymacja oparta na innej estymacji — kluczowa idea odróżniająca TD od Monte Carlo (które czeka na koniec epizodu).
Hiperparametry
Learning rate (α)
Kontroluje, jak szybko nowe doświadczenie zastępuje stare:
- α = 1 — nowe doświadczenie całkowicie zastępuje stare Q
- α = 0.1 — wolna aktualizacja; uśrednianie wielu doświadczeń
- Typowe: 0.01–0.1; można zmniejszać w trakcie treningu
Discount factor (γ)
Kontroluje horyzont planowania:
- γ = 0 — agent jest krótkowzroczny; liczy się tylko natychmiastowa nagroda
- γ = 0.99 — agent planuje daleko w przyszłość
- Wybór γ zależy od zadania: krótkie epizody → niższe γ; długie → wyższe
ε-greedy (eksploracja)
Z prawdopodobieństwem 1-ε wybierz najlepsze znane działanie (eksploatacja), z prawdopodobieństwem ε wybierz losowe (eksploracja).
Decay ε: Start z ε=1.0 (czysta eksploracja), stopniowo zmniejszaj do ε_min=0.01 (głównie eksploatacja). Typowy decay: ε ← ε · 0.995 po każdym epizodzie.
Bez eksploracji agent może „utknąć" w suboptymialnej polityce — znalazł dobrą ścieżkę i nigdy nie odkrył lepszej. Z nadmierną eksploracją — ciągle próbuje losowo i nie konwerguje.
Off-policy vs. On-policy
Q-learning jest off-policy
Q-learning używa max Q(s', a') w aktualizacji — przyjmuje, że w następnym stanie agent wybierze optymalne działanie. Ale polityka eksploracji (ε-greedy) wybiera losowe działania! To nie przeszkadza — Q-learning uczy się optymalnej polityki niezależnie od tego, jak agent eksploruje.
SARSA jest on-policy
SARSA aktualizuje: Q(s, a) ← Q(s, a) + α · [r + γ · Q(s', a') - Q(s, a)], gdzie a' to faktycznie wybrane następne działanie (w tym losowe). SARSA uczy się wartości aktualnej polityki (z eksploracją), nie optymalnej.
Konsekwencja: Q-learning jest bardziej agresywny (zakłada optymalne przyszłe decyzje), SARSA bardziej ostrożny (uwzględnia fakt, że agent czasem działa losowo). Przy ryzykownych środowiskach (np. klif z karą -100) SARSA uczy się bezpieczniejszych ścieżek.
Zbieżność Q-learning
Q-learning gwarantuje zbieżność do optymalnego Q* pod warunkami:
- Każda para (s, a) odwiedzana nieskończenie wiele razy
- Learning rate spełnia: Σα_t = ∞ i Σα_t² < ∞ (maleje, ale nie za szybko)
- Nagrody są ograniczone
W praktyce: wystarczająco dużo epizodów + malejący learning rate + eksploracja (ε > 0) → Q konwerguje.
Tablica Q vs. Deep Q-Network
Tablica Q (tabular)
Dla małych, dyskretnych przestrzeni stanów i działań, Q przechowywana jest jako tablica 2D: wiersze = stany, kolumny = działania, wartości = Q(s, a).
Przykład: Frozen Lake (4×4 siatka, 16 stanów, 4 działania) → tablica 16×4 = 64 wartości.
Ograniczenie: Gra Atari ma ~10⁹ możliwych klatek, Go ~10^{170} stanów. Tablica nie mieści się w pamięci i nie da się odwiedzić każdego stanu.
Deep Q-Network (DQN)
DQN (Mnih et al., DeepMind, 2015) zastępuje tablicę siecią neuronową aproksymującą Q: Q(s, a; θ) ≈ Q*(s, a).
Architektura DQN (Atari):
- Wejście: 4 ostatnie klatki gry (84×84×4 piksele)
- 3 warstwy konwolucyjne → 2 warstwy FC
- Wyjście: Q dla każdego z ~18 możliwych działań
Kluczowe innowacje:
Experience Replay:
- Przechowuj przejścia (s, a, r, s') w buforze (np. 1M ostatnich)
- Przy aktualizacji, losuj mini-batch z bufora
- Łamie korelację czasową danych (kolejne klatki są skorelowane → niestabilny trening)
Target Network:
- Kopia sieci (θ⁻) aktualizowana co C kroków
- Cel optymalizacji: r + γ · max Q(s', a'; θ⁻) — stabilny cel zamiast „ruchomego"
- Zapobiega oscylacjom i dywergencji
Warianty DQN
- Double DQN — oddziela wybór działania (sieć główna) od ewaluacji (target network), redukując przeszacowanie Q
- Dueling DQN — osobne ścieżki dla V(s) i Advantage A(s,a); lepsze w stanach, gdzie wybór działania nie ma znaczenia
- Prioritized Experience Replay — próbkuj przejścia z dużym TD error częściej (uczenie się z zaskakujących doświadczeń)
- Rainbow DQN — kombinacja 6 ulepszeń w jednym modelu
Przykłady zastosowań Q-learning
Gry Atari
DQN nauczył się grać w 49 gier Atari (Breakout, Space Invaders, Pong) na poziomie ludzkim — z samych pikseli, bez wiedzy o zasadach. W Breakout odkrył strategię „tunelowania" (przebicie przez bok bloczków), której ludzie rzadko używają.
Sterowanie robotem
Q-learning (tabelaryczny lub DQN) uczy robota nawigacji w nieznanym terenie, balansowania, unikania przeszkód.
Zarządzanie zasobami
Optymalizacja zużycia energii w data centers (Google: 40% redukcja kosztów chłodzenia), zarządzanie portfelem inwestycyjnym, planowanie produkcji.
Gry planszowe
Q-learning na małych grach (kółko-krzyżyk, Connect Four). Większe gry (szachy, Go) wymagają głębszych metod (MCTS + DQN, AlphaZero).
Q-learning vs. inne algorytmy RL
| Cecha | Q-learning | SARSA | Policy Gradient | Actor-Critic |
|---|---|---|---|---|
| Typ | Value-based | Value-based | Policy-based | Hybrid |
| Policy | Off-policy | On-policy | On-policy | On-policy |
| Działania | Dyskretne | Dyskretne | Dyskretne/ciągłe | Dyskretne/ciągłe |
| Prostota | Wysoka | Wysoka | Średnia | Średnia |
| Wariancja | Niska | Niska | Wysoka | Średnia |
Kiedy Q-learning: Dyskretne, małe przestrzenie działań. Kiedy chcesz prostoty i gwarancji zbieżności.
Kiedy DQN: Duże przestrzenie stanów (obrazy, tekst), dyskretne działania.
Kiedy Policy Gradient / PPO: Ciągłe przestrzenie działań (robotyka, sterowanie), gdy Q-learning nie da się zastosować.
Implementacja w Pythonie
Biblioteki
- Gymnasium (OpenAI Gym) — środowiska do testowania RL (CartPole, FrozenLake, Atari, MuJoCo)
- Stable-Baselines3 — implementacje DQN, PPO, SAC, A2C gotowe do użycia
- CleanRL — minimalistyczne, edukacyjne implementacje algorytmów RL
- RLlib (Ray) — produkcyjny framework do skalowalnego RL
Typowy workflow
- Wybierz środowisko (Gymnasium)
- Zaimplementuj Q-learning/DQN lub użyj Stable-Baselines3
- Trenuj przez N epizodów, monitoruj reward
- Ewaluuj politykę na zbiorze testowym
- Wizualizuj krzywą uczenia i tablicę Q / politykę
Podsumowanie
Q-learning to fundament uczenia ze wzmocnieniem — prosty, elegancki algorytm uczący się optymalnych decyzji z doświadczenia. Od tablic Q dla małych problemów po Deep Q-Network dla gier Atari, zasada pozostaje ta sama: obserwuj stan → działaj → otrzymaj nagrodę → aktualizuj wiedzę. Zrozumienie Q-learninga otwiera drzwi do zaawansowanych metod RL: PPO, SAC, AlphaZero i RLHF.