---
# System prepended metadata

title: Reinforcement Learning
tags: [名詞解釋]

---

# Reinforcement Learning
## 什麼是RL
Reinforcement Learning（強化學習）是一種機器學習方法，通過試錯和獎勵機制來學習最佳行為。以下是強化學習的幾個應用面向，以及一些相關論文的參考：
遊戲：強化學習在遊戲領域中取得了顯著成就，例如AlphaGo和AlphaZero等。
機器人控制：用於控制機器人完成複雜任務，如行走、抓取物體等。
股票預測：應用於股票交易、投資策略等金融領域。
交通：用於優化交通信號控制、路線規劃等。
## 基本概念
強化學習（Reinforcement Learning）是一種機器學習方法，通過試錯和獎勵機制來學習最佳行為:
1. **代理（Agent）**：在環境中採取行動的實體，可以是機器人、軟件程序等。
2. **環境（Environment）**：代理所處的外部世界，提供狀態和反饋給代理。
3. **狀態（State）**：環境在某一時刻的描述，通常用$s$ 表示。
4. **行動（Action）**：代理在環境中採取的動作，通常用$a$ 表示。
5. **獎勵（Reward）**：環境對代理行動的反饋，用於引導學習，通常用$r$ 表示。
6. **策略（Policy）**：代理根據狀態選擇行動的方法，通常用$\pi(a|s)$ 表示。
7. **價值函數（Value Function）**：評估在某一狀態下遵循特定策略的預期累積獎勵，用於評估狀態的好壞。
8. **Q函數（Q-Function）**：評估在某一狀態下採取特定行動後遵循特定策略的預期累積獎勵。
### 基本過程
1. **初始化**：代理開始與環境交互。
2. **觀察狀態**：代理觀察環境的當前狀態。
3. **選擇行動**：根據策略選擇行動。
4. **執行動作**：在環境中執行動作。
5. **獲得獎勵**：環境給予獎勵。
6. **更新知識**：更新價值函數或Q函數，以改善未來的決策。
### 常見算法
- **Q-learning**：使用Q函數學習最佳行動。
- **SARSA**：使用價值函數學習最佳行動。
- **Deep Q-Networks (DQN)**：使用深度神經網絡來近似Q函數。
- **Policy Gradient Methods**：直接學習策略而非價值函數。

## Value Function VS Q-Function
在強化學習（Reinforcement Learning, RL）中，**Value Function（價值函數）** 和 **Q-Function（Q 值函數）** 都是用來評估策略 $\pi$ 的好壞，但它們的側重點不同。

| **函數** | **定義** | **描述** |
|----------|---------|----------|
| **State Value Function（狀態價值函數）$V(s)$** | $V^\pi(s) = \mathbb{E} \left[ \sum_{t=0}^{\infty} \gamma^t R_t \mid S_0 = s, \pi \right]$ | 表示 **在狀態 $s$ 下，根據策略 $\pi$ 所能期望獲得的累積回報**。 |
| **Action-Value Function（行動價值函數）$Q(s, a)$** | $Q^\pi(s, a) = \mathbb{E} \left[ \sum_{t=0}^{\infty} \gamma^t R_t \mid S_0 = s, A_0 = a, \pi \right]$ | 表示 **在狀態 $s$ 下執行動作 $a$，並按照策略 $\pi$ 行動後，所能期望獲得的累積回報**。 |
* Value Function
    $$
    V^\pi(s) = \mathbb{E}_\pi \left[ \sum_{t=0}^\infty \gamma^t r_t \mid s_0 = s \right]
    $$

    其中：
    - $\mathbb{E}_\pi$ 表示在策略$\pi$下取期望。
    - $r_t$ 是在時間步$t$獲得的獎勵。
    - $\gamma$ 是折扣因子，控制未來獎勵的重要性。
    - $s_0 = s$ 表示初始狀態為$s$。
* Q-Function
    $$
    Q^\pi(s, a) = \mathbb{E}_\pi \left[ r + \gamma V^\pi(s') \mid s, a \right]
    $$

    或更一般地：

    $$
    Q^\pi(s, a) = \mathbb{E}_\pi \left[ \sum_{t=0}^\infty \gamma^t r_t \mid s_0 = s, a_0 = a \right]
    $$

    其中：
    - $s'$ 是採取行動$a$後的下一狀態。
    - 其他符號與價值函數的表達式中相同。

    在Q-learning等算法中，Q函數通常使用以下更新規則來學習：

    $$
    Q(s, a) \leftarrow Q(s, a) + \alpha \left[ r + \gamma \max_{a'} Q(s', a') - Q(s, a) \right]
    $$

    其中：
    - $\alpha$ 是學習率。
    - $\max_{a'} Q(s', a')$ 是下一狀態中所有可能行動的最大Q值。

- **$V(s)$ 只考慮當前狀態的價值，適合評估當前策略的整體表現。**
- **$Q(s, a)$ 則考慮特定動作的價值，適合用於決策選擇最佳動作（policy improvement）。**

---

### **舉例：自駕車停車**
假設我們在訓練一輛 **自動駕駛車** 停進停車位的策略。

#### **1. 狀態價值函數 $V(s)$**
假設 **狀態 $s$** 表示車輛目前的位置，我們有：
- $V(s_1) = 0.8$ 代表在停車場入口時，預計可以獲得 0.8 的回報（可能是停好車的成功率）。
- $V(s_2) = 0.9$ 代表在更接近停車位的位置時，回報變高。

這表示 **越接近停車位的狀態，價值越高**，但這裡沒有考慮具體的行動選擇。

#### **2. Q 值函數 $Q(s, a)$**
假設 **動作 $a$** 包括：
- **$a_1$ = 前進**（move forward）
- **$a_2$ = 左轉**（turn left）
- **$a_3$ = 右轉**（turn right）

我們可以有：
- $Q(s_1, a_1) = 0.6$（在入口時，選擇前進的預期回報是 0.6）
- $Q(s_1, a_2) = 0.2$（在入口時，直接左轉可能導致撞牆，所以回報較低）
- $Q(s_2, a_1) = 0.9$（更接近停車位時選擇前進，回報較高）

這表示 **Q 值函數不僅考慮當前狀態，還考慮具體的行動對未來回報的影響**。

---

### **總結**
- **$V(s)$ 只告訴我們當前狀態好不好，但不告訴我們該做什麼動作。**
- **$Q(s, a)$ 告訴我們在當前狀態 $s$ 下，選擇不同動作 $a$ 的好壞，可以用來決策選擇最好的動作（如 Q-Learning）。**

🚗 **自駕車例子：**
- **$V(s)$** 只是說「這個位置靠近停車位，所以好」，但 **不告訴我們該轉向還是前進**。
- **$Q(s, a)$** 具體說明「這裡左轉不好，前進較好」，幫助我們選擇最佳動作。

在 **Q-Learning** 和 **Deep Q-Networks（DQN）** 等方法中，**主要學習 $Q(s, a)$，然後選擇最大 Q 值的動作來更新策略**。

## On-Policy VS Off-Policy
在強化學習（Reinforcement Learning, RL）中，**On-Policy** 和 **Off-Policy** 的區別主要在於**學習時使用的策略（policy）與執行時的策略是否相同**。

如果用一句話概括：
- **On-Policy（內部策略學習）**：學習與執行同一個策略。
- **Off-Policy（外部策略學習）**：學習時使用與執行不同的策略。

---

### **1. On-Policy（內部策略學習）**
#### **定義**
- **在收集數據時，使用的策略（行動選擇）與學習時的策略相同。**
- 也就是說，演算法只能學習當前策略 $\pi$，並依賴 $\pi$ 產生的經驗來改進自身。

#### **代表性演算法**
- **SARSA**（State-Action-Reward-State-Action）
  - 依據當前策略 $\pi$ 來選擇動作並更新 Q 值。
  - 例如，如果使用 $\epsilon$-貪婪策略（$\epsilon$-greedy），則學習的 Q 值也會考慮這種策略下的行動。

#### **特點**
✅ **適合策略改進（policy improvement）**，因為它直接學習當前策略的行為。
✅ **收斂性較穩定**，因為學到的價值估計與執行行為相匹配。
❌ **探索能力有限**，因為只能學習自己當前策略的數據，難以學習更好的行動。

---

### **2. Off-Policy（外部策略學習）**
#### **定義**
- **學習時的策略與執行時的策略不同**，即可以用**不同的策略來收集數據**，然後用這些數據來學習更好的策略。
- 這允許模型透過**試探性策略（exploration policy）** 來收集數據，但學習一個更優的**目標策略（target policy）**。

#### **代表性演算法**
- **Q-Learning**
  - 無論探索時是否選擇了最佳動作，更新 Q 值時都**假設每個狀態都會選擇最優動作（max Q）**，這使得它可以學習最優策略。

- **Deep Q-Networks（DQN）**
  - 使用 **經驗回放（experience replay）**，存儲過去的數據並從中抽樣來訓練 Q 網絡，使得學習與數據收集分離，這本質上是一種 Off-Policy 方法。

#### **特點**
✅ **探索能力更強**，因為可以使用不同的策略來收集更多多樣的數據。
✅ **可以利用過去經驗數據**，例如 DQN 的**經驗回放（experience replay）**。
❌ **收斂可能不穩定**，因為學習的策略與數據來源可能不匹配。

---

### **3. 直觀舉例**
#### **例子 1：自駕車**
假設你在訓練**自動駕駛車輛**，你的目標是讓車學習到最安全的駕駛方式：
- **On-Policy（SARSA）**：
  - 車輛根據當前駕駛策略行駛，然後學習基於這種駕駛風格的價值函數。例如，如果車輛**偶爾**違規變道，學習到的策略仍然會保留這種行為。
  - 缺點是如果當前策略不夠優秀，學到的內容可能也不夠優秀。

- **Off-Policy（Q-Learning）**：
  - 你讓不同車輛**嘗試各種駕駛風格**（包括安全駕駛和激進駕駛），然後學習**最安全的駕駛策略**。
  - 這樣，即使有些車輛的行為不理想，演算法仍能學習到更好的策略。

---

#### **例子 2：小朋友學騎腳踏車**
- **On-Policy（SARSA）**：
  - 小朋友根據自己當前的學習方式練習，例如**只嘗試自己能做的動作**，然後根據這些嘗試來調整策略。
  - 如果他害怕摔倒，不會嘗試太多冒險的動作，因此學習速度可能較慢。

- **Off-Policy（Q-Learning）**：
  - 小朋友可以**看別人騎腳踏車**，學習到最好的技巧，然後用來改善自己的策略。
  - 這樣，即使自己還沒嘗試某些行動，也可以學習到這些行為的價值。

---

### **4. 總結：On-Policy vs. Off-Policy**
| **比較項目** | **On-Policy（內部策略）** | **Off-Policy（外部策略）** |
|--------------|----------------|----------------|
| **學習策略** | 只能學習自身策略的數據 | 可以從不同策略的數據中學習 |
| **探索能力** | 受限於當前策略的行為 | 可以透過不同策略收集更多數據 |
| **代表演算法** | SARSA, REINFORCE | Q-Learning, DQN |
| **應用場景** | 策略梯度（Policy Gradient）、安全性較高的應用 | 需要長期探索、大量數據的應用 |
| **穩定性** | 通常比較穩定 | 可能會收斂較慢或不穩定 |

**結論：**
- **On-Policy（如 SARSA）適合需要安全性與穩定性的學習場景**，但可能學不到最優策略。
- **Off-Policy（如 Q-Learning）可以利用更多數據來學習更好的策略**，但可能會不穩定或過度偏向最大 Q 值的選擇。

如果你想讓模型學到**最好的策略（最優解）**，通常會選擇 **Off-Policy（如 Q-Learning）**。如果你想要學習穩定且不會意外做出危險決策的策略，則會選擇 **On-Policy（如 SARSA）**。

## What is SARSA & Q-Learning
:::info
詳細數學推導可以參考: [深度強化學習 Ch3.1 : TD learning](https://hackmd.io/@RL666/SkNJdfhn9)
:::
**SARSA（State-Action-Reward-State-Action）** 和 **Q-Learning** 都是強化學習（Reinforcement Learning, RL）中的**值基方法（Value-Based Methods）**，它們的主要目標是**學習動作-價值函數（Q-Function）**，以選擇最佳動作來最大化累積回報。

它們的核心區別在於**策略選擇方式**：
- **SARSA 是 On-Policy（內部策略學習）**，學習當前策略的行為。
- **Q-Learning 是 Off-Policy（外部策略學習）**，學習最優策略，即使數據來自不同的行為策略。

---

### **1. SARSA（On-Policy）**
#### **核心概念**
SARSA 是**On-Policy** 強化學習方法，意味著**它學習的是當前正在執行的策略（policy）**，即它的 Q 值更新是基於實際選擇的動作，而不是理論上的最優動作。

#### **更新公式**
$$
Q(s_t, a_t) \leftarrow Q(s_t, a_t) + \alpha \left[ r_t + \gamma Q(s_{t+1}, a_{t+1}) - Q(s_t, a_t) \right]
$$
其中：
- $s_t, a_t, r_t$：當前狀態、動作和獎勵。
- $s_{t+1}, a_{t+1}$：下一個狀態及根據當前策略選擇的下一個動作。
- $\alpha$（學習率）：控制更新步伐。
- $\gamma$（折扣因子）：決定未來回報的重要性。

#### **SARSA 的特點**
✅ **學習當前策略的行為**，不會過於激進地選擇最優解，較穩定。
✅ **策略與學習方式一致**，不會突然變成極端的貪婪策略，適合安全性要求高的環境。
❌ **可能學不到最優策略**，如果策略不是最優的，那學習結果也可能不是最優的。

#### **舉例**
**🛵 例子：學騎腳踏車**
- 小朋友用 SARSA 來學習騎腳踏車，他會根據自己的學習風格來選擇動作（如小心慢騎）。
- 當他遇到坑洞時，他會根據自己當前的策略決定是慢慢避開還是稍微加速躲開。
- 這代表他學習的是一種「安全但可能不是最快的騎車方式」。

---

### **2. Q-Learning（Off-Policy）**
#### **核心概念**
Q-Learning 是**Off-Policy** 強化學習方法，這意味著它**學習的是最優策略，而不管數據來自哪種策略**。
- 即使當前的行為策略（例如隨機選擇動作）不是最優的，Q-Learning 依然會學習最優的行動選擇方式。

#### **更新公式**
$$
Q(s_t, a_t) \leftarrow Q(s_t, a_t) + \alpha \left[ r_t + \gamma \max_{a} Q(s_{t+1}, a) - Q(s_t, a_t) \right]
$$
與 SARSA 唯一的區別是：
- SARSA 用的是「**實際選擇的下一個動作**」$Q(s_{t+1}, a_{t+1})$。
- Q-Learning 直接選擇「**下一個狀態的最優動作**」$\max_{a} Q(s_{t+1}, a)$ 來更新 Q 值。

#### **Q-Learning 的特點**
✅ **能學到最優策略**，因為它總是選擇最好的 Q 值來學習。
✅ **可以利用 Off-Policy 數據**，例如過去的經驗來更新學習結果（像 DQN 的經驗回放）。
❌ **可能學習不穩定**，如果環境變化大，它可能會過度偏向最優動作而忽略探索。

#### **舉例**
**🚗 例子：自駕車找停車位**
- 假設 Q-Learning 訓練一輛**自動駕駛車**來找停車位。
- 雖然車輛一開始可能亂選路線，但最終它會學到「**最短最快的停車路線**」。
- 即使一開始的數據來自於人類駕駛或隨機行為，Q-Learning 仍然會學習出**最優的停車策略**。

---

### **3. SARSA vs. Q-Learning（比較）**
| **比較項目** | **SARSA（On-Policy）** | **Q-Learning（Off-Policy）** |
|--------------|----------------|----------------|
| **學習策略** | 學習當前執行的策略 | 學習最優策略 |
| **更新方式** | 依據實際選擇的行動更新 | 依據最大 Q 值更新 |
| **穩定性** | 收斂較穩定，但不一定最優 | 可能不穩定，但學習結果更好 |
| **探索能力** | 受限於當前策略的行為 | 可以從不同策略的數據中學習 |
| **代表性應用** | 需要安全性高的應用，如醫療機器人 | 需要找到最優解的應用，如自駕車 |
| **適用場景** | 策略梯度、保守決策環境 | 需要大量探索、目標最優化的環境 |

#### **核心區別**
1. **SARSA 是 On-Policy，學習的是「當前策略」，適合安全性較高的情境（如自駕車減速避讓行人）。**
2. **Q-Learning 是 Off-Policy，學習的是「最優策略」，適合追求最優解的環境（如最快找到停車位）。**

---

### **4. 何時用 SARSA？何時用 Q-Learning？**
✅ **SARSA（On-Policy）適用情境**
- 需要安全性較高的場景，例如：
  - **醫療機器人**（避免風險操作）
  - **自駕車避障**（減少風險行為）
  - **教育 AI**（確保不過於極端行為）
- 主要用於「**學習當前策略的行為**」。

✅ **Q-Learning（Off-Policy）適用情境**
- 需要找到全局最優解，例如：
  - **遊戲 AI**（學到最佳策略）
  - **自駕車尋找最佳路徑**（找最短停車路線）
  - **金融交易策略**（學到最賺錢的投資方式）
- 主要用於「**學習最優策略，而不管數據來源**」。

---

### **5. 總結**
- **SARSA：On-Policy，學當前策略，較安全但可能不是最優解。**
- **Q-Learning：Off-Policy，學最優策略，探索能力強但可能學習不穩定。**
- **如果你希望 AI 探索最優解，選 Q-Learning；如果你希望 AI 行為穩定，選 SARSA。**