---
# System prepended metadata

title: 【機器學習2021】34~35 機器終身學習
tags: [機器學習]

---

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)
