20251007 筆記,內容可能有錯,請參考來源影片。
[李宏毅機器學習2021影片](https://www.youtube.com/playlist?list=PLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J)
今天影片內容
[【機器學習2021】機器終身學習 (Life Long Learning, Life Long Learning) (一) - 為什麼今日的人工智慧無法成為天網?災難性遺忘(Catastrophic Forgetting)](https://youtu.be/rWF9sg5w6Zk?si=e8KKGYWKqYeJBRiT)
[【機器學習2021】機器終身學習 (Life Long Learning, Life Long Learning) (二) - 災難性遺忘(Catastrophic Forgetting)的克服之道](https://youtu.be/Y9Jay_vxOsM?si=TfvpMYb8N3ZKoxBK)
### 【機器學習2021】機器終身學習 (Life Long Learning) (一) - 為什麼今日的人工智慧無法成為天網?災難性遺忘(Catastrophic Forgetting) 大綱
### I. 終身學習 (Lifelong Learning) 概述
A. Life Long Learning 的定義與目標:持續學習新任務而不遺忘。
B. Life Long Learning 的應用與想像:達成人類對 AI 的期待。
C. 相關術語:Continuous, Endless, Incremental Learning。
D. 現實應用場景:模型上線後的線上資料收集與參數更新。
### II. 終身學習的核心挑戰:災難性遺忘 (Catastrophic Forgetting)
A. 實驗一:手寫數字辨識 (有雜訊 vs. 無雜訊)。
1. 順序學習結果:學完任務二後,任務一的準確度從 90% 降至 80%。
2. 核心問題:模型有足夠能力同時學好兩個任務,但依序學習時會遺忘舊任務。
B. 實驗二:自然語言處理 (Babi QA 任務)。
1. Babi 任務的特性:由 Facebook 定義的 20 個簡單 QA 任務。
2. 災難性遺忘表現:學完任務五後準確度達 100%,但學完任務六後,任務五的準確度直接跌至 0%。
### III. 多任務訓練 (Multi-task Training) 的限制與比較
A. Multi-task Training 的優勢:同時學習多個任務可避免災難性遺忘。
B. Multi-task Training 的實務問題 (不切實際):
1. 記憶體問題:學習第 1000 個任務時,必須儲存並使用前 999 個任務的所有資料。
2. 計算成本:將所有資料倒在一起訓練,所需時間太長,效率低。
C. Multi-task Training 作為 Life Long Learning 的評估上限 (Upper Bound):Multi-task Training 的結果通常視為 Life Long Learning 系統無法超越的上限。
D. Life Long Learning 與其他概念的區別:
1. 與獨立模型:浪費儲存空間,且任務間無法互通有無。
2. 與遷移學習 (Transfer Learning):Transfer Learning 關注新任務(任務二)表現,Life Long Learning 關注舊任務(任務一)表現。
### IV. 終身學習的評估方法與基準
A. 常用基準任務:
1. Permuted MNIST 或旋轉角度 (Rotation):將手寫數字以固定規則打亂或旋轉角度作為新任務。
2. 分類別任務:將數字 0, 2, 4 分為第一個類別,1, 3, 5 分為第二個類別,依序訓練。
B. 評估矩陣 $R_{I, J}$:代表訓練完任務 I 後,模型在任務 J 上的正確率。
C. 核心評估指標:
1. 最終平均準確度:將學完所有任務的模型,在之前所有任務上測試準確度並取平均。
2. **向後遷移 (Backward Transfer)**:用來評估遺忘的嚴重程度。計算 $R_{T, J} - R_{J, J}$(即學完所有任務後的表現減去剛學完該任務時的最佳表現)。此值通常是負的。
3. 向前遷移 (Forward Transfer):衡量模型在未見過的新任務上的泛化能力,非 Life Long Learning 關注重點。
---
### I. 終身學習 (Lifelong Learning, Life Long Learning) 概述
* **定義與目標**:終身學習(Lifelong Learning)指的是機器不斷學習新任務、新技能,最終變得越來越強大,直到超越人類的程度。
* **與人類對 AI 的想像一致**:Life Long Learning 非常接近人類對 AI 的想像,即機器先學會語音辨識,再學會圖像辨識,然後學會翻譯,最終累積數百萬個技能。
* **現實應用**:在真實應用中,Life Long Learning 也是實用且必要的。例如,模型上線後會收集到來自使用者的 **feedback**,我們希望用這些新資料來更新模型的參數,形成一個讓系統不斷進步的循環。
* **其他名稱**:Life Long Learning 也被稱為 **Continuous Learning**、**Ending Learning** 或 **Incremental Learning**。
### II. 災難性遺忘 (Catastrophic Forgetting)
* **難點**:Life Long Learning 的核心難點在於,機器在學習新任務時,很容易**忘記**過去學過的技能。
* **手寫數字範例**:
* 假設任務一 (Task 1) 是有雜訊的手寫數字辨識,任務二 (Task 2) 是無雜訊的簡單辨識。
* 模型先學任務一,正確率 90%,此時在任務二上已達到 96%(顯示有很好的遷移學習效果)。
* 模型接著用任務二的資料繼續更新參數,任務二的準確度提高到 97%,但**任務一的正確率卻暴跌至 80%**。
* **問題的本質**:並非模型能力不足。若將任務一和任務二的資料**倒在一起同時訓練**(Multi-task Training),模型可以同時在任務一和任務二上得到 89% 和 98% 的高準確率。這顯示模型有足夠的能力學好兩個任務,但依序學習時就會遺忘,這種現象被稱為 **Catastrophic Forgetting**。
* 這個形容詞 "Catastrophic"(災難性)強調遺忘的程度非常嚴重,因為機器幾乎學不會新技能。
* **QA 任務範例**:
* 使用 Babi 任務(Facebook 設計的 20 個簡單 QA 任務,比作業七的資料簡單得多)進行依序學習。
* 模型學到任務五時準確率衝到 100%,但當它繼續學任務六時,任務五的準確率馬上暴跌到 **0%**。
* 若同時學習 20 個任務,模型可以學會多個任務,但依序學時就會「學了新東西,忘了舊東西」。
### III. 多任務訓練 (Multi-task Training) 的限制與比較
* **Multi-task Training 的困境**:雖然 Multi-task Training 可解決 Catastrophic Forgetting 問題,但如果機器需要學第 1000 個任務,就必須將前 999 個任務的資料全部拿出來,與第 1000 個任務的資料**倒在一起訓練**。
* **實務限制**:
* **儲存空間**:機器需要把一輩子看過的所有資料都存下來,這在實務上不可行。
* **計算成本**:訓練 1000 個任務的資料會讓訓練時間變得太長,效率極低。
* 這就像一個人要學習新課程,必須把他這輩子讀過的所有教材都重讀一遍。
* **Multi-task Training 作為上限**:因此,Multi-task Training 雖然能讓機器學會多個任務,但它不是 Life Long Learning 的最終解決方案。在文獻中,Multi-task Training 通常被視為 **Life Long Learning 的理論上限 (Upper Bound)**,Life Long Learning 研究目標是逼近這個上限。
### IV. Life Long Learning 與其他概念的區別
* **獨立模型**:若每個任務都用一個獨立的模型訓練,雖然避免了 Catastrophic Forgetting,但會造成巨大的記憶體浪費,且不同任務的資料間無法**互通有無**,限制了知識的擷取與學習。
* **遷移學習 (Transfer Learning)**:
* Transfer Learning 關注的是在任務一學到的技能,能對新任務(任務二)有多少幫助。
* Life Long Learning 關注的是學完新任務後,舊任務(任務一)是否還能被正確解決。
### V. 終身學習的評估方法與基準
* **任務序列 (Task Sequence)**:Life Long Learning 研究通常需要一系列依序學習的任務。常見的基準任務包括:
* **Permuted MNIST**:將手寫數字的像素用固定的規則打亂,每一次打亂算作一個新任務。
* **旋轉或角度變化**:將數字圖片旋轉不同的角度,每一次旋轉算作一個新任務。
* **類別劃分**:將數字 0, 2, 4 設為 Class 1,1, 3, 5 設為 Class 2,然後依序訓練不同的數字組合。
* **評估矩陣 $R_{I, J}$**:用來評估一個 Life Long Learning 演算法的表現。
* $R_{I, J}$ 表示模型在**訓練完任務 I 之後**,於**任務 J** 的測試集上的正確率。
* 如果 $I > J$,則表示我們在觀察模型在訓練新任務 I 後,對舊任務 J 的遺忘程度。
* 如果 $I < J$,則表示在訓練任務 I 後,模型對尚未訓練的任務 J 的**遷移能力**。
* **核心指標**:
* **最終平均準確度**:將模型依序學完所有任務後,計算它在所有舊任務上的正確率平均值。
* **向後遷移 (Backward Transfer)**:計算 $R_{T, J} - R_{J, J}$ 的平均值($T$ 是最終任務)。它評估了模型在學了更多任務後,相比於剛學完該任務時的性能下降程度。由於機器通常會遺忘,這個值通常是**負的**(小於 0)。若某個 Life Long Learning 方法能讓這個值是正的,代表機器在新任務學習後能舉一反三,讓舊任務做得更好,將是非常厲害的。
* **向前遷移 (Forward Transfer)**:衡量機器在還沒看到任務 T 時,只看過 T-1 個任務後,是否已學到能處理任務 T 的程度。
### 【機器學習2021】機器終身學習 (Life Long Learning, Life Long Learning) (二) - 災難性遺忘(Catastrophic Forgetting)的克服之道 大綱
### I. 災難性遺忘 (Catastrophic Forgetting, Catastrophic Forgetting) 的發生機制
A. 透過參數空間與損失函數 (Loss Function) 視覺化說明 Catastrophic Forgetting。
B. Catastrophic Forgetting 本質:學習新任務的參數 (Z*) 可能導致舊任務的損失 (Loss) 升高。
### II. 終身學習的三大解法與核心:正則化方法 (Regularization-Based)
A. 解法一:**選擇性突觸可塑性 (Selective Synaptic Plasticity)**
1. 概念:只允許部分神經元連接或參數變動。
2. 機制:引入守衛 $B_i$ 限制重要舊參數的變動。
3. 權衡:遺忘 (Forgetting) vs. 頑固 (Intransigence)。
4. $B_i$ 的計算:基於參數對舊任務損失的敏感度。
5. 實驗結果:EWC 方法能有效防止遺忘並保持新任務表現。
6. 進階方法:EWC, SI, NAS 等。
B. 解法二:**基於梯度限制的方法 (Gradient Modification)**
1. 技術:Gradient Episodic Memory, GEM)。
2. 限制:需要儲存少量過去的任務資料。
C. 解法三:**增量神經元資源分配 (Additional Neural Resource Allocation)**
1. 漸進式神經網路 (Progressive Neural Network, PNN)。
2. PackNet (PN):預先分配資源。
### III. 數據生成與 Life Long Learning 的評估
A. 生成模型 (Generative Model) 的應用:即時生成舊任務資料以避免遺忘。
B. 效果:能逼近多任務訓練 (Multi-task Learning) 的理論上限。
C. 任務順序的重要性:Curriculum Learning。
### I. 災難性遺忘 (Catastrophic Forgetting) 的發生機制
* **參數空間與損失函數**:模型通常有數百萬個參數 ($Z_1, Z_2, ...$)。
* Catastrophic Forgetting 的發生可以透過參數空間 (Parameter Space) 和損失函數 (Loss Function) 來解釋。
* **參數更新的過程**:
1. 模型從隨機初始化 $Z_0$ 開始。
2. 訓練任務一 (Task 1),使用梯度下降 (Gradient Descent) 更新參數至 $Z_B$ (Best parameter)。$Z_B$ 在任務一的損失曲面 (Error Surface) 上處於低點。
3. 將 $Z_B$ 用於訓練任務二 (Task 2),繼續更新參數,得到 $Z_{star}$。
4. $Z_{star}$ 在任務二上表現良好,但在任務一的損失曲面上可能處於高損失(高 $Loss$)的位置,導致任務一的表現變差,這就是遺忘。
* **解決思路**:對於一個任務而言,可能存在許多組不同的參數都能達到低損失。我們的目標是找到一條參數移動的路徑,使得 $Z_B$ 往 $Z_{star}$ 移動時,能**同時**讓任務一的損失影響最小。
### II. 終身學習的三大解法
#### A. 解法一:選擇性突觸可塑性 (Selective Synaptic Plasticity)
* **基本概念**:基於**正則化 (Regularization-based)** 的方法。目標是讓類神經網路中**只有某些連接或神經元具有可塑性 (Plasticity)**,而其他連接則被**固化**,使其數值不能改變。
* **參數重要性**:每個參數對過去學過的任務重要性不同。Selective Synaptic Plasticity 試圖在學習新任務時,**盡量不要改變**那些對舊任務重要的參數,只去修改對過去任務不重要的參數。
* **守衛 $B_i$ (Guardian/Importance Weight)**:為每個參數 $Z_i$(例如網路中的權重或偏差)設置一個守衛 $B_i$。
* $B_i$ 代表該參數 $Z_i$ 對過去任務的**重要性**。
* 如果 $B_i$ 值很大,表示該參數很重要,我們強烈希望 $Z_i$ 的值保持接近舊的參數 $Z_i^B$。
* 如果 $B_i$ 值很小或為零,表示該參數不重要,可以任意改變。
* **修改後的損失函數 (Loss Function)**:為了解決 Catastrophic Forgetting,我們最小化一個新的 Loss Function $L'$:
$$L' = L_{new\_task} + \sum_i B_i \cdot (Z_i - Z_i^B)^2$$
其中:
* $L_{new\_task}$ 是新任務的原有損失。
* 右邊的項是**正則化項**,用來懲罰 $Z_i$ 偏離舊參數 $Z_i^B$ 的程度。
* **權衡的兩極**:
1. **遺忘 (Forgetting)**:如果所有 $B_i$ 都設為零,則沒有任何限制,就會發生災難性遺忘。
2. **頑固 (Intransigence)**:如果所有 $B_i$ 都設為非常大的值,模型參數無法變動,雖然不會遺忘舊任務,但會導致**新任務學不好**。
* **$B_i$ 的計算**:
* $B_i$ 通常是**人為設定或計算**出來的,不能讓模型自己學習(否則 $B_i$ 會被學成 0 以最小化 Loss)。
* 概念上,可以透過觀察參數 $Z_i$ 對舊任務的損失函數 $L$ 的影響程度來決定 $B_i$。
* 如果改變 $Z_i$ 的值對 $Loss$ 影響很小,則 $Z_i$ 不重要,給予較小的 $B_i$。
* 如果改變 $Z_i$ 的值對 $Loss$ 影響很大,則 $Z_i$ 很重要,給予較大的 $B_i$。
* 這允許模型在新任務訓練時,只在對舊任務**不敏感**的方向上移動。
* **實驗案例 (EWC Paper)**:紅線代表使用不同 $B_i$ 限制的結果,相較於無限制(藍線)的 Catastrophic Forgetting 情況,紅線能顯著維持舊任務(Task A)的準確度,並且不像所有 $B_i$ 都設為 1(綠線)那樣導致新任務(Task B, C)學不好。
* **文獻方法**:常見的 $B_i$ 計算方法包括 **EWC (Elastic Weight Consolidation)**、**SI**、**MAS**。
#### B. 解法二:基於梯度限制 (Gradient Modification)
* **(Gradient Episodic Memory, GEM)**:這類方法**不對參數本身施加限制**,而是限制新任務的梯度更新方向。
* **運作方式**:
1. 計算新任務的梯度 $G$。
2. 同時回頭計算舊任務的梯度 $G_B$。
3. 如果 $G$ 和 $G_B$ 的內積 (inner product) 小於 0(即更新方向不一致,會傷害舊任務),則修改 $G$ 成 $G'$。
4. $G'$ 必須滿足與 $G_B$ 的內積大於等於 0 的條件,同時 $G'$ 與 $G$ 的差異不能太大。
* **主要缺點**:GEM 需要儲存**過去任務的資料**才能計算 $G_B$。雖然可能只需要存少量資料,但這與 Life Long Learning 避免儲存過去所有資料的初衷有所違背。
#### C. 解法三:增量神經元資源分配 (Additional Neural Resource Allocation)
* **(Progressive Neural Network, PNN)**:
* 當訓練新任務二時,**不動**任務一的模型參數。
* 新增一個新的網路給任務二,並讓任務二的網路**接收**任務一的隱藏層 (hidden layer) 輸出作為輸入。
* 優勢:完全避免 Catastrophic Forgetting,因為舊參數沒有被動到。
* 缺點:每新增一個任務,模型都會長大一點,最終會耗盡記憶體空間。
* **PackNet (PN)**:
* PNN 的反向思路。先開一個較大的網路,每個任務只被允許使用其中**部分的參數**。
* 優勢:參數總量不會隨任務增加而持續增加。
* 限制:相當於提早用完記憶體空間。
* **組合方法**:PNN 與 PN 可結合,稱為 **CPG (Continual P_ing and Growing)**。
### III. 數據生成與 Life Long Learning 的評估
* **生成數據的方法**:訓練一個 **Generator** 來產生過去任務的數據。
* 流程:在訓練任務一的同時,訓練一個 Generator 來產生任務一的數據。當訓練任務二時,將**任務二的數據**與 **Generator 產生的任務一數據**混合後,訓練任務二的分類器。
* 效果:實驗室經驗顯示,這種方法**非常有效**,能讓 Life Long Learning 系統的表現逼近 Multi-task Learning 的理論上限 (Upper Bound)。
* **進階情境與挑戰**:
* **不同類別數目**:如果不同任務的類別數量不同 (例如任務一有 10 個類別,任務二有 20 個類別),則需要增量地增加新的類別。相關文獻包括 LwF (Learning Without Forgetting)
* **終身學習情境**:影片提到 Life Long Learning 屬於持續學習 (Continul Learning),只是 Life Long Learning 領域中**最簡單**的一種情境。
* **任務順序的重要性**:
* **實驗發現**:改變任務的學習順序會對結果造成極大差異。例如,先學有雜訊的圖片再學無雜訊的圖片會導致 Catastrophic Forgetting;反之,先學無雜訊再學有雜訊則可能**不會**出現 Catastrophic Forgetting。
* **研究方向**:探究什麼樣的順序對學習最有效,這稱為 Curriculum Learning。
[【機器學習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)