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)