---
# System prepended metadata

title: 【機器學習2021】29-30 強化學習-1
tags: [機器學習]

---

20251005 筆記，內容可能有錯，請參考來源影片。

[李宏毅機器學習2021影片](https://www.youtube.com/playlist?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J)


今天影片內容

[【機器學習2021】概述增強式學習 (Reinforcement Learning, RL) (一) – 增強式學習跟機器學習一樣都是三個步驟](https://youtu.be/XWukX-ayIrs?si=68Z4N-_Z1hJj8GzU)


[【機器學習2021】概述增強式學習 (Reinforcement Learning, RL) (二) – Policy Gradient 與修課心情](https://youtu.be/US8DFaAZcp4?si=pwnzmWWMEZ7jyI5U)




### I. 強化學習 (Reinforcement Learning, RL) 簡介
A. 定義：RL 與監督式學習 (Supervised Learning) 的根本區別。
B. RL 的動機：應用於人類不知最佳答案的場景 (e.g. 下圍棋)。
C. 核心概念：Actor、Environment 與 Reward 的互動。

### II. RL 的基本框架與範例
A. Actor 的運作：Function 接收 Observation (S)，輸出 Action (A)。
B. 例子：Space Invader 遊戲。
C. Actor 的目標：最大化從環境中獲得的 Reward 總和。

### III. RL 框架的機器學習三步驟解析
A. 步驟一：定義 Function (Actor Network)

    1. Actor 作為一個 Policy Network，輸出 Action 的分數或機率分佈。
    2. Action 選擇機制：通常是按機率隨機取樣。
B. 步驟二：定義 Loss (Total Reward)

    1. Reward (即時好處) 與 Return (Total Reward/累積回報) 的區別。
    2. 訓練目標：最大化 Total Reward R (相當於最小化負的 R 作為 Loss)。
C. 步驟三：優化 (Optimization) 的挑戰

    1. 挑戰一：Environment 與 Reward 是黑盒子，且不是神經網路。
    2. 挑戰二：系統具有高度隨機性。

### IV. Policy Gradient 基礎概念
A. Policy Gradient 核心：將 Action 選擇視為分類問題。
B. 透過 Loss 函數控制 Actor 採取的行為。
C. 引入分數 $A$：評估和控制對特定 Action 的期望強度。

---

### I. 強化學習 (Reinforcement Learning, RL) 簡介

*   **RL 的應用**：強化學習 (Reinforcement Learning, RL) 廣泛應用於 AlphaGo 等熱門領域。
*   **與監督式學習 (Supervised Learning) 的區別**：
    *   目前課程中討論的大多數技術都是基於監督式學習，需要明確告知機器輸入是什麼以及它**應該輸出什麼** (Label)。
    *   在 RL 中，當機器獲得輸入時，我們**不知道最優的輸出**（Action）應該是什麼。例如，在下圍棋中，人類可能不知道哪一步是「神之一手」。
*   **RL 的核心機制**：雖然 RL 場景中沒有正確答案，但機器可以透過與環境**互動**，獲得一個稱為 **Reward** 的東西，從而知道它的輸出是好還是不好。
*   **RL 框架**：RL 框架圍繞著 **Actor** 和 **Environment** 之間的互動。

### II. RL 的基本框架與範例

*   **Actor 與 Environment**：
    *   **Environment** (環境) 會給 Actor 一個 **Observation** (S, 觀察) 作為輸入。
    *   **Actor** (行動者) 看到 Observation 後，會輸出一個 **Action** (A, 行為)。
    *   這個 Action 會去**影響** Environment。
    *   在互動過程中，Environment 會不斷地給予 Actor Reward，告訴它當前採取的 Action 是好還是不好。
*   **Actor 即 Function**：Actor 本身就是一個 Function，它接收 Observation 作為輸入，輸出 Actor 應採取的 Action。
*   **Actor 的目標**：Actor 的目標是找到一個 Function，使其與環境互動時，最終能**最大化** 從環境中獲得的 **Reward 總和**。
*   **Space Invader 範例**：
    *   **Action**：左移、右移、開火三種行為。
    *   **Observation**：遊戲的畫面。
    *   **Reward**：殺死外星人會獲得分數，分數被定義為 Reward。
    *   **Episode**：從遊戲開始到結束的整個過程。

### III. RL 框架的機器學習三步驟解析

RL 框架實際上可以被視為與一般機器學習一樣，遵循**三個步驟**：定義 Function、定義 Loss、執行 Optimization。

#### A. 步驟一：定義 Function (Actor Network)

*   **Policy Network**：Actor 通常是一個 Network，這在 RL 中常被稱為 Policy Network。
*   **輸入與輸出**：
    *   輸入：Observation (例如，遊戲畫面的像素)。
    *   輸出：每個可以採取的 Action 的**分數**。
*   **分數轉機率**：這個輸出通常會通過 **Softmax** 轉化成**機率分佈**，所有 Action 的分數總和為一。
*   **Action 採樣**：機器通常會根據這些分數的機率分佈進行**隨機取樣 (Sample)** 來決定採取哪個 Action。
    *   這樣做的好處是即使看到同樣的遊戲畫面，機器採取的行為也會略有不同，這在許多遊戲中是很重要的隨機性來源。

#### B. 步驟二：定義 Loss (Total Reward)

*   **Reward 與 Return**：
    *   **Reward** 指的是採取單一 Action 時立即可得到的**好處**。
    *   **Return** 或 **Total Reward** 是指整個 Episode 中所有 Reward 的**總和**。
*   **訓練目標**：我們的目標是找到一組 Actor 參數，使得 $R$ **越大越好**。
*   **Loss 定義**：可以將**負的 Total Reward ($-R$)** 定義為 RL 中的 Loss，然後目標是讓這個 Loss 越小越好。

#### C. 步驟三：優化 (Optimization) 的挑戰

*   RL 的優化過程與一般深度學習訓練**不同**，主要有兩個挑戰：
    1.  **黑盒子與非 Network**：Environment 和 Reward Function 大多是**黑盒子**，**不是神經網路**。因此，不能像訓練分類器那樣直接使用梯度下降 (Gradient Descent)。
    2.  **隨機性**：RL 系統具有高度隨機性。這種隨機性不僅發生在訓練時，在 **Testing Time** 也存在（即使 Actor 參數固定，與環境互動的結果也可能不同）。
*   **與 GAN 的相似性**：RL 與生成對抗網路 (GAN) 有異曲同工之妙。Actor 類似 Generator，而 Environment 和 Reward 類似 Discriminator。但在 GAN 中，Discriminator 也是 Network，而在 RL 中 Environment/Reward 不是 Network。

### IV. Policy Gradient 基礎概念

*   **Policy Gradient** 是用來解決 RL 優化問題的常用演算法。
*   **將 RL 視為分類問題**：我們可以將訓練 Actor 視為一個**分類問題**（或監督式學習）來處理。
    *   **鼓勵行為**：若希望 Actor 看到 Observation (S) 時採取 Action ($A_{hat}$)，我們將 $A_{hat}$ 作為 Label，最小化 Cross Entropy Loss。
    *   **懲罰行為**：若希望 Actor 不採取 Action ($A_{hat}$)，則最小化負的 Cross Entropy Loss (即讓 Cross Entropy 越大越好)。
*   **引入分數 A (Action Advantage)**：為了控制對特定 Action 的期望程度，可以為每個 (S, A) 對賦予一個分數 $A$。
    *   $A$ 代表我們期望機器在該狀態下執行該 Action 的**強度**。
    *   Loss 函數被修改為 $L = A_{hat} \times \text{Cross Entropy}$。
    *   如果 $A_{hat}$ 為正，則鼓勵該行為；如果 $A_{hat}$ 越正，則鼓勵程度越強烈 (例如 1.5 比 0.5 更強烈)。
    *   如果 $A_{hat}$ 為負，則懲罰該行為。

*   **訓練資料的來源**：訓練 Policy Gradient 仍需要 (S, A) Pairs 及其對應的 $A$ 分數。這些訓練資料是透過一個 Actor (一開始可以是隨機 Actor) **與環境互動** (Interact) 所收集的。然後，再對收集到的 S 與 A 進行評估，賦予 $A$ 分數。

### 【機器學習2021】概述增強式學習 (Reinforcement Learning, RL) (二) – Policy Gradient 與修課心情 大綱

### I. 動作分數 (A) 的定義與演進
A. 動作 (Action) 選擇機制：基於 Actor 輸出的機率分佈進行隨機取樣。
B. 數據收集：透過 Actor 與環境互動收集狀態 ($S$) 與動作 ($A$) 序列。
C. **Version 0：即時獎勵 (Immediate Reward $R_t$)**
    1.  定義：$A_t = R_t$ (單次行動的即時回饋)。
    2.  缺陷：導致短視的 Actor，忽視長期規劃和獎勵延遲 (Reward Delay)。
D. **Version 1：累積獎勵 (Cumulative Reward $G_t$)**
    1.  定義：$A_t = G_t$ (該動作之後所有 $R$ 的總和)。
    2.  優勢：解決了短視問題，考慮了瞄準等零獎勵的必要動作。
E. **Version 2：折扣累積獎勵 (Discounted Cumulative Reward $G'_t$)**
    1.  定義：$A_t = G'_t$ (未來 $R$ 乘以折扣因子 $\gamma < 1$ 後的總和)。
    2.  優勢：讓較近的獎勵獲得較大權重，避免遙遠的獎勵影響早期動作。
F. **Version 3：引入基準線 (Baseline $B$) 進行標準化**
    1.  動機：獎勵的好壞是相對的，需要標準化 (Normalization)。
    2.  定義：$A_t = G'_t - B$ (確保 $A_t$ 有正有負)。

### II. 策略梯度 (Policy Gradient) 的優化與挑戰
A. 訓練流程：數據收集（與環境互動）必須在訓練迴圈內重複進行。
B. 資料重複使用的限制：**同策略學習 (On-Policy Learning)**
    1.  問題本質：舊 Actor 的經驗 (Trajectory) 不適合訓練新 Actor。
    2.  對比：訓練 Actor 與跟環境互動的 Actor 必須是**同一個**。
C. 異策略學習 (Off-Policy Learning)：
    1.  目標：讓新 Actor 學習舊 Actor 收集的數據。
    2.  範例：PPO (Proximal Policy Optimization)，優勢為不需一直重複收集數據，訓練更快。

### III. 探索 (Exploration) 的重要性
A. 隨機性必要：Actor 必須透過隨機性嘗試新的行動，才能評估其獎勵。
B. 增加探索性的方法：刻意加大輸出分佈的**熵** (Entropy) 或在參數上**加雜訊** (Noise)。

---


### I. 動作分數 (A) 的定義與演進

*   **動作選擇機制**：Actor 輸出的分數會透過 **Softmax** 轉化為**機率分佈**。Actor 會根據此機率分佈進行**隨機取樣 (Sample)** 來決定要採取的 Action。動作的分數決定了它出現的可信性。
    *   即使在訓練過程中，Action 也會是隨機取樣的。
    *   「不希望 Actor 做 $A$」的意思是希望它做其他的 Action，將 $A$ 的機率分數降低。
*   **數據收集**：訓練 Policy Gradient 需要收集 $S$（Observation，狀態）與 $A$（Action，動作）的配對。這需要一個 Actor (最初可以是**隨機的 Actor**) 去跟環境互動 (Interact)。
*   **評估標準**：使用分數 $A$ (Action Advantage) 來評估在某個狀態 $S$ 下執行動作 $A$ 的好壞程度。

#### A. Version 0：即時獎勵 (Immediate Reward, $R_t$)
*   **定義**：$A_t = R_t$。
*   **缺陷**：
    1.  這會訓練出一個**短視盡利**的 Actor (只知道會一時爽)。
    2.  忽略了**獎勵延遲 (Reward Delay)** 的問題。例如，在 Space Invader 遊戲中，**向左或向右移動**的即時 $R$ 為 $0$，但這些動作對於後續成功射擊 ($R>0$) 是必要的。
    3.  結果：模型只會學到**瘋狂開火**，因為只有開火能得到即時獎勵。

#### B. Version 1：累積獎勵 (Cumulative Reward, $G_t$)
*   **定義**：$A_t = G_t$，其中 $G_t$ 是從時間點 $t$ 執行 $A_t$ **之後**直到遊戲結束所有 Reward 的**總和**（累加）。
*   **優勢**：解決了短視問題。如果向右移動（$R_t=0$）之後能成功瞄準並射擊，累積獎勵 $G_t$ 就會是**正的**，因此向右移動也被認為是好的 Action。

#### C. Version 2：折扣累積獎勵 (Discounted Cumulative Reward, $G'_t$)
*   **動機**：如果遊戲非常長，一個非常遠的獎勵 $R_N$ 不應該完全歸功於早期的動作 $A_1$。
*   **定義**：$A_t = G'_t$，其中 $G'_t$ 是將所有未來 $R$ 乘以**折扣因子 $\gamma$**（小於 1 的值，如 $0.9$ 或 $0.99$）後再累加的總和。
    *   公式為 $G'_t = \sum_{n=t}^{N} R_n \cdot \gamma^{n-t}$。
*   **優勢**：使**距離 $A_t$ 越遠**的 Reward，其權重和影響力**越小**。

#### D. Version 3：引入基準線 (Baseline $B$) 進行標準化
*   **動機**：Reward 是相對的。如果一個遊戲的所有 Action 都會得到正的 Reward，即使是較差的 Action 也會被鼓勵。
*   **定義**：$A_t = G'_t - B$。
    *   目標：讓 $G'_t$ 減去一個基準線 $B$ 後，**特別高**的 $G'_t$ 會是正的，**特別低**的 $G'_t$ 會是負的。
*   **合理的 $B$ 選擇**：一個合理的基準線 $B$ 是**價值函數 $V(S)$**。$V(S)$ 代表在狀態 $S$ 下，Actor 接下來會得到的累積獎勵的**期望值 (Expectation)**。
    *   若 $G'_t > V(S)$，表示執行的 $A_t$ 比隨機採樣到的平均 Action 表現更好，應給予正的 $A_t$。
    *   若 $G'_t < V(S)$，表示執行的 $A_t$ 比平均表現差，應給予負的 $A_t$。
*   **Advantage Actor-Critic 定義**：將 $G'_t$ 替換為 $R_t + V(S_{t+1})$（這代表在 $S_t$ 執行 $A_t$ 後預期的獎勵），然後減去 $V(S_t)$。
    *   $A_t = R_t + V(S_{t+1}) - V(S_t)$。

### II. 策略梯度 (Policy Gradient) 的優化與挑戰

*   **訓練迴圈的特殊性**：在 RL 中，**收集資料**的步驟（與環境互動）必須在 **Training Iteration** 的迴圈**裡面**。
    *   每更新一次參數，Actor 的行為就發生變化，需要**重新收集一次**資料。
    *   這使得 RL 訓練**非常耗時**。
*   **同策略學習 (On-Policy Learning)**：Policy Gradient 屬於同策略學習。
    *   定義：用於收集資料的 Actor 必須與被訓練的 Actor **是同一個**。
    *   **限制**：一個 Actor ($Z_{t-1}$) 收集的經驗（Trajectory）可能**不適合**用來訓練一個參數已經更新過的 Actor ($Z_t$)。
    *   例子取自於動漫《棋靈王》的劇情。主角阿光與佐為在下棋時的對話。
- **動作定義**：
    - **小馬步飛**：在棋盤上是斜放一格的走法。
    - **大馬步飛**：是斜放好幾格的走法。
- **情境**：在某個盤勢下，阿光採取了小馬步飛的走法。佐為則指正他，認為這個時候**不應該**下小馬步飛，而應該下大馬步飛。
- 動作價值隨 Actor 變化，這個例子的核心在於說明**同一個 Action**，對於不同能力的 Actor 來說，其好壞程度（價值）是完全不同的。

| Actor 的能力 / 階段 | 動作 (Action) | 評價 (Value) | 原因 |
| --- | --- | --- | --- |
| **較弱的阿光** | 小馬步飛 | **好的** | 因為小馬步飛的**後續比較容易預測**，也**比較不容易出錯**。對於能力較弱的棋士是合適的走法。 |
| **變強後的阿光** | 大馬步飛 | **好的** | 大馬步飛的下法會**比較複雜**，但若阿光想變強，他就應該學習下大馬步飛。 |
| **變強後的阿光** | 小馬步飛 | **不好的** | 對於變強後的阿光來說，下小馬步飛反而是一個比較不好的走法。 |

這說明了**同一個行為**，對不同棋力的棋士來說，它的「好」是**不一樣的**。

*   **異策略學習 (Off-Policy Learning)**：
    *   目標：允許訓練中的 Actor 根據**其他 Actor**（如舊的 $Z_{t-1}$）或**其他來源**收集的資料進行學習。
    *   優勢：可以**重複使用**舊資料，避免每次更新參數都必須重新收集資料，從而加速訓練。
    *   範例：**PPO (Proximal Policy Optimization)** 是常見的 Off-Policy 方法。
    *   精神：訓練的 Actor 必須知道自己和收集資料的 Actor 之間的**能力差異**。

### III. 探索 (Exploration) 的重要性

*   **隨機性的必要性**：如果 Actor 從未執行某個 Action (例如開火)，它就**無法得知**該 Action 的好壞。
*   **目的**：訓練時，與環境互動的 Actor 需要有足夠的隨機性，才能收集到**豐富的資料**。
*   **實作技巧**：
    1.  **加大 Entropy**：刻意增加 Actor 輸出 Action 分佈的熵，使其更容易取樣到低機率的 Action。
    2.  **加入雜訊**：直接在 Actor 的參數上加入雜訊 (Noise)。


[【機器學習2021】01~02 機器學習和深度學習基本概念簡介](https://hackmd.io/@JuitingChen/SyoNXkdslx)
[【機器學習2021】03~08 機器學習任務攻略和最佳化技巧](https://hackmd.io/@JuitingChen/BJ6mXy_slg)
[【機器學習2021】09~11 CNN 和 Self attention](https://hackmd.io/@JuitingChen/r1ahLgUngl)
[【機器學習2021】12~13 Transformer](https://hackmd.io/@JuitingChen/H1tfXy_ige)
[【機器學習2021】14~17 GAN](https://hackmd.io/@JuitingChen/S1adiwvhxg)
[【機器學習2021】18~21 自監督式學習](https://hackmd.io/@JuitingChen/ryQG7J_sgl)
[【機器學習2021】22~23 Auto-encoder](https://hackmd.io/@JuitingChen/r1sLPr92ge)
[【機器學習2021】24~25 Adversarial Attack ](https://hackmd.io/@JuitingChen/HJ6jJIq3ge)
[【機器學習2021】26~28 Explainable ML 和 Domain Adaptation](https://hackmd.io/@JuitingChen/SJZzQkdslg)
[【機器學習2021】29-30 強化學習-1](https://hackmd.io/@JuitingChen/HJYziZR3gx)
[【機器學習2021】31~33 強化學習-2](https://hackmd.io/@JuitingChen/Sy5DoWA3xl)
[【機器學習2021】34~35 機器終身學習](https://hackmd.io/@JuitingChen/BytWmyuilg)
[【機器學習2021】36~37 神經網路壓縮 ](https://hackmd.io/@JuitingChen/Bk7-m1_jlx)
[【機器學習2021】37~40 Meta Learning](https://hackmd.io/@JuitingChen/SkkC6rT2gl)
