praca_magisterska/pytania/odpowiedzi/36-uczenie-ze-wzmocnieniem.md

298 lines
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Pytanie 36: Uczenie się ze wzmocnieniem (Reinforcement Learning)
## Pytanie
**"Omówić ogólny algorytm, elementy składowe oraz własności uczenia się ze wzmocnieniem."**
Przedmiot: SIU (Systemy Inteligentne i Uczące się)
---
## 📚 Odpowiedź główna
### 1. Model uczenia ze wzmocnieniem
```
┌─────────────────────────────────────────────────────────────────┐
│ REINFORCEMENT LEARNING LOOP │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ │
│ action aₜ │ │ reward rₜ │
│ ──────────→ │ ENVIRONMENT │ ──────────→ │
│ │ │ │ │ │
│ │ └─────────────┘ │ │
│ │ │ │ │
│ │ state sₜ₊₁ │ │
│ │ │ │ │
│ │ ↓ ↓ │
│ │ ┌─────────────┐ │
│ └────────── │ AGENT │ ←─────────┘ │
│ │ (policy π) │ │
│ └─────────────┘ │
│ │
│ Cel: Maksymalizacja skumulowanej nagrody E[Σ γᵗrₜ] │
└─────────────────────────────────────────────────────────────────┘
```
---
### 2. Elementy składowe
| Element | Symbol | Opis |
|---------|--------|------|
| **State** | s ∈ S | Obserwacja środowiska |
| **Action** | a ∈ A | Decyzja agenta |
| **Reward** | r ∈ | Sygnał zwrotny |
| **Policy** | π(a\|s) | Strategia wyboru akcji |
| **Value function** | V(s), Q(s,a) | Oczekiwana nagroda |
| **Discount factor** | γ ∈ [0,1] | Ważność przyszłych nagród |
| **Transition** | P(s'\|s,a) | Dynamika środowiska |
### Markov Decision Process (MDP)
```
MDP = (S, A, P, R, γ)
S: Zbiór stanów
A: Zbiór akcji
P: P(s'|s,a) - prawdopodobieństwa przejść
R: R(s,a,s') - funkcja nagrody
γ: Współczynnik dyskontowania
Właściwość Markowa:
P(sₜ₊₁|s₀,a₀,...,sₜ,aₜ) = P(sₜ₊₁|sₜ,aₜ)
Przyszłość zależy tylko od obecnego stanu!
```
---
### 3. Funkcje wartości
#### State Value Function V(s)
$$V^\pi(s) = \mathbb{E}_\pi \left[ \sum_{t=0}^{\infty} \gamma^t r_t \mid s_0 = s \right]$$
#### Action Value Function Q(s,a)
$$Q^\pi(s,a) = \mathbb{E}_\pi \left[ \sum_{t=0}^{\infty} \gamma^t r_t \mid s_0 = s, a_0 = a \right]$$
#### Równania Bellmana
```
V*(s) = max_a [R(s,a) + γ Σ_s' P(s'|s,a) V*(s')]
Q*(s,a) = R(s,a) + γ Σ_s' P(s'|s,a) max_a' Q*(s',a')
Rekurencyjne równania - podstawa algorytmów DP
```
---
### 4. Algorytmy
#### 4.1 Value-based methods
```
┌─────────────────────────────────────────────────────────────────┐
│ Q-LEARNING (off-policy, model-free) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Q(s,a) ← Q(s,a) + α[r + γ max_a' Q(s',a') - Q(s,a)] │
│ └────────────────────────────────┘ │
│ TD target │
│ │
│ Algorytm: │
│ 1. Obserwuj stan s │
│ 2. Wybierz akcję a (ε-greedy) │
│ 3. Wykonaj a, obserwuj r, s' │
│ 4. Zaktualizuj Q(s,a) │
│ 5. s ← s', goto 1 │
│ │
│ ε-greedy: │
│ Z prawdop. ε: losowa akcja (exploration) │
│ Z prawdop. 1-ε: argmax Q(s,a) (exploitation) │
└─────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ SARSA (on-policy) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Q(s,a) ← Q(s,a) + α[r + γ Q(s',a') - Q(s,a)] │
│ ↑ │
│ Rzeczywista następna akcja (nie max!) │
│ │
│ Różnica od Q-learning: │
│ - Używa akcji faktycznie wybranej przez policy │
│ - Bardziej "ostrożny" (uwzględnia exploration) │
└─────────────────────────────────────────────────────────────────┘
```
#### 4.2 Deep Q-Network (DQN)
```
┌─────────────────────────────────────────────────────────────────┐
│ DQN - Q-learning z siecią neuronową │
├─────────────────────────────────────────────────────────────────┤
│ │
│ State s → [Neural Network] → Q(s,a₁), Q(s,a₂), ..., Q(s,aₙ) │
│ │
│ Innowacje: │
│ 1. Experience Replay: bufor (s,a,r,s'), losowe próbkowanie │
│ 2. Target Network: osobna sieć do obliczania targetów │
│ (aktualizowana co N kroków) │
│ │
│ Loss: L = (r + γ max Q_target(s',a') - Q(s,a))² │
│ │
│ Przełom: Atari games (2015) │
└─────────────────────────────────────────────────────────────────┘
```
#### 4.3 Policy-based methods
```
┌─────────────────────────────────────────────────────────────────┐
│ POLICY GRADIENT │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Bezpośrednia optymalizacja parametrów θ policy π_θ(a|s) │
│ │
│ Gradient: │
│ ∇_θ J(θ) = E_π [∇_θ log π_θ(a|s) · Q(s,a)] │
│ │
│ REINFORCE algorithm: │
│ 1. Generuj trajektorię τ = (s₀,a₀,r₀,s₁,...) │
│ 2. Oblicz return: Gₜ = Σ_{k=0}^{T-t} γᵏ r_{t+k} │
│ 3. Update: θ ← θ + α ∇_θ log π_θ(aₜ|sₜ) · Gₜ │
│ │
│ Zalety: ciągłe akcje, stochastic policies │
│ Wady: wysoka wariancja, wolna zbieżność │
└─────────────────────────────────────────────────────────────────┘
```
#### 4.4 Actor-Critic
```
┌─────────────────────────────────────────────────────────────────┐
│ ACTOR-CRITIC - łączy value-based i policy-based │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────┐ ┌─────────┐ │
│ │ ACTOR │ ←───── │ CRITIC │ │
│ │ π_θ(a|s)│ │ V_w(s) │ │
│ └────┬────┘ └────┬────┘ │
│ │ │ │
│ ↓ │ │
│ action value estimate │
│ │
│ Actor: wybiera akcje (policy) │
│ Critic: ocenia jak dobre są akcje (value function) │
│ │
│ Advantage: A(s,a) = Q(s,a) - V(s) │
│ Actor update: θ ← θ + α ∇_θ log π_θ(a|s) · A(s,a) │
│ Critic update: minimize (r + γV(s') - V(s))² │
│ │
│ Algorytmy: A2C, A3C, PPO, SAC │
└─────────────────────────────────────────────────────────────────┘
```
---
### 5. Klasyfikacja algorytmów
```
┌─────────────────────────────────────────────────────────────────┐
│ │
│ ┌── Model-based (zna/uczy się P, R) │
│ RL Methods ─┤ │
│ └── Model-free (nie zna środowiska) │
│ │ │
│ ├── Value-based (Q-learning, DQN) │
│ ├── Policy-based (REINFORCE) │
│ └── Actor-Critic (A2C, PPO, SAC) │
│ │
│ ┌── On-policy (SARSA, A2C) - używa obecnej π │
│ RL Methods ─┤ │
│ └── Off-policy (Q-learning, DQN) - używa innej π │
│ │
└─────────────────────────────────────────────────────────────────┘
```
---
### 6. Exploration vs Exploitation
| Strategia | Opis |
|-----------|------|
| **ε-greedy** | Z prawdop. ε losowa akcja |
| **Softmax/Boltzmann** | P(a) ∝ exp(Q(s,a)/τ) |
| **UCB** | a = argmax[Q(s,a) + c√(ln N / n(a))] |
| **Thompson Sampling** | Próbkowanie z posterior |
| **Curiosity-driven** | Bonus za nowość |
---
### 7. Własności i wyzwania
```
┌─────────────────────────────────────────────────────────────────┐
│ WŁASNOŚCI: │
│ ✓ Uczenie przez interakcję (nie supervised) │
│ ✓ Delayed rewards (kredyt za sekwencję akcji) │
│ ✓ Generalizacja (do nowych stanów) │
│ ✓ Online learning (ciągłe doskonalenie) │
│ │
│ WYZWANIA: │
│ ✗ Sample inefficiency (wymaga wielu interakcji) │
│ ✗ Credit assignment (która akcja odpowiada za reward?) │
│ ✗ Exploration-exploitation tradeoff │
│ ✗ Partial observability (POMDP) │
│ ✗ Non-stationarity (środowisko się zmienia) │
│ ✗ Reward shaping (sparse rewards problem) │
└─────────────────────────────────────────────────────────────────┘
```
---
## 🧠 Mnemoniki
### "SARSA = State Action Reward State Action":
Sekwencja w algorytmie SARSA
### "Q = Quality of action":
Q(s,a) mierzy jakość akcji a w stanie s
### "Actor-Critic = Action + Advice":
Actor wybiera akcje, Critic doradza (ocenia)
---
## ❓ Pytania dodatkowe
### Q1: "Jaka jest różnica między Q-learning a SARSA?"
**Odpowiedź:** Q-learning (off-policy): używa max Q(s',a') - optymistyczne. SARSA (on-policy): używa Q(s',a') gdzie a' to rzeczywista następna akcja - bardziej ostrożne, uwzględnia policy exploration.
### Q2: "Po co Experience Replay w DQN?"
**Odpowiedź:** Łamie korelację między kolejnymi próbkami (iid requirement), efektywniejsze wykorzystanie danych (wielokrotne uczenie z jednej próbki), stabilizuje trening.
### Q3: "Kiedy model-based jest lepszy?"
**Odpowiedź:** Gdy środowisko jest przewidywalne, samples są drogie (robotyka), potrzebne planowanie. Model-free lepszy gdy środowisko złożone, trudne do modelowania, dużo samples dostępnych.
---
## 🎯 Kluczowe punkty
1. **MDP:** (S, A, P, R, γ) - formalizacja problemu
2. **Bellman:** V*(s) = max[R + γ·ΣP·V*]
3. **Q-learning:** off-policy, max Q update
4. **Policy Gradient:** ∇J = E[∇log π · Q]
5. **Actor-Critic:** policy + value function
---
## 📖 Źródła
1. Sutton, Barto - "Reinforcement Learning: An Introduction"
2. Silver - DeepMind RL lectures
3. Mnih et al. - "Playing Atari with Deep RL" (2015)