回到目錄

13-Life Long Learning(終身學習)

1. Basic

Life Long Learning(LLL),期望機器不斷學習新的任務,又稱為 Continual LearningNever Ending Learning、 Incremental Learning

注意:

在 LLL 中,讓機器不斷學習”不同的任務”,實際上是學習類似的任務但”不同的 domain”,只是習慣當成不同的任務

1.1 現實世界的應用

模型上線後蒐集到新的資料,新的資料就可以更新模型的參數

把舊有的資料想成是過去的任務,把新的、來自於使用者 feedback 的資料想成是新的任務

1.2 Catastrophic Forgetting

核心概念機器是學了新的任務(資料)就忘了舊的任務(資料)

1.2.1 Example 1:數字辨識

針對兩個 task,訓練一個模型對不同的數字進行識別

  • 先後利用兩個任務的資料進行訓練,以 task 2 的資料訓練模型後,機器在 task 1 的表現下降許多
  • 同時利用兩個任務的資料進行訓練,機器在兩個 task 上都表現不錯

1.2.2 Example 2:QA 任務

  • 依序學 20 個任務,學到 task 5 時的準確率提升,但自 task 6 後準確率暴跌
  • 同時學 20 個任務

1.3 Multi-Task Training

讓機器同時利用多個任務的資料進行學習的訓練方法稱為 multi-task training

雖然某種程度上可以解決上述 catastrophic forgetting 的問題,但當機器要學新的任務時,都要把之前學過的任務資料也都重新一起帶入訓練,時間和空間難以負荷

multi-task training 雖不切實際,但它確實可以讓機器學會多個任務,因而被視為 LLL 的 upper bound,是 LLL 沒有辦法超越的結果

研究目標會希望 LLL 的技術去逼近 upper bound 的結果

1.4 Train a model for each task

問題:

1.5 Life-long learning vs Transfer Learning

兩者的關注角度不同:

2. Evaluation

先準備一系列的任務

機器依序學習各個不同的任務,每學完一個新任務就在所有任務的測試資料上計算正確率

Ri,jR_{i,j} 表示學完任務 ii,在任務 jj 上的表現

三種評估方法:

3. Why Catastrophic Forgetting?

關鍵:

任務間的 error surface 不同

兩個任務的 error surface 如上圖,顏色越深,代表 loss 越小

  1. 先用 task 1 訓練模型,隨機初始化參數 θ0\theta^0,用 gradient descent 更新參數得到 θb\theta^b
  1. θb\theta^b 作為初始參數用 task 2 訓練模型,使用 gradient descent 更新參數得到 θ\theta^*

問題:

由於兩個任務的 error surface 不同,擁有小的 loss 所對應的參數不同,導致 catastrophic forgetting

解決:

嘗試讓參數往 task 2 的橢圓 error surface 下緣靠近

4. LLL 的三種解法

4.1 Selective Synaptic Plasticity(Regularization based Approach)

每個參數對過去學過的任務的重要性不盡相同
對於舊的任務所學習到的參數有”重要”與”不重要”之別,在學習新的任務時,針對重要的參數盡量維持不變,只要改變不重要的參數

4.1.1 改寫 Loss Function

對模型的每一個參數 θib\theta^b_i 新增參數 guard bib_i

在新的任務原始的 loss L(θ)L(\theta) 後再加上新學到的參數 θi\theta_i 減去過去學到參數 θib\theta^b_i 並取平方,再乘上當前參數的 guard bib_i,最後針對每一個參數的結果做加總

4.1.2 設定 guard b

人工設定 guard bib_i,在 task 1 上訓練完後得到 θb\theta^b,逐一調整 θb\theta^b 的每一個參數,觀察在新任務上 loss 的變化

舉例:

由於 b1b_1 較小、b2b_2 較大,因此參數在 task 2 上更新時,會更傾向於改變 θ1\theta_1 而不改變 θ2\theta_2,如此得到的 θ\theta^* 在 task 1 和 task 2 上都可以有較好的結果

如何計算 bib_i

4.1.3 實驗結果

SGD 表示 bb 皆為 0;L2 表示 b 皆為 1;EWC 表示根據 θi\theta_i 的重要性有不同的 bb

4.1.4 Gradient Episodic Memory(GEM)

不在參數上做限制,而是在 gradient 更新的方向上做限制

在 task 2 算出 gradient gg 更新參數前,先計算該參數在 task 1上的 gradient gbg^b,之後兩者做內積,若 ggb<0g \cdot g^b<0(夾角為鈍角),則修改 gg 變成 gg',讓 ggb>0g \cdot g^b>0(夾角為銳角),且 gg'gg 不可以差太多

4.2 Additional Neural Resource Allocation Memory

改變使用在每一個任務里面的 neural 的 resource

4.2.1 Progressive Neural Network

每一個任務都重新訓練一些額外的 neural,以保證過去的任務的模型參數不會被改變

問題:

當模型大小增長過快時,空間上仍難以負荷

4.2.2 PackNet

先分配一個較大的模型,限制每個任務只允許使用某些參數

4.2.3 CPG(Progressive Neural Network + PackNet)

模型既可以增加新的參數,且每訓練一個新的任務,又都只保留部分的參數可以拿來做訓練

4.3 Memory Reply

針對每個新任務,額外訓練一個可以產出該任務即過去所有任務的資料的 generator

問題:

額外訓練 generator 同樣會佔用空間,但如果這個空間比儲存訓練資料佔用的空間小,那就是一個有效的方法

實際上,此方法往往都可以逼近 LLL 的 upper bound,可以做到跟 multi-task learning 差不多的結果

5. Adding new classes

問題:

不同的任務間的 class 數目不一樣

解決:

Learning without Forgetting(LwF)

iCaRL: Incremental Classifier and Representation Learning

6. Three scenarios for Continual Learning(LLL)

LLL 有三種 scenarios,課程只介紹其中一種,其他兩種可參考論文:Three scenarios for continual learning

7. Curriculum Learning

兩個實驗:

結論:

任務的順序也是關鍵