發表日期 4/3/2022, 12:44:20 PM
機器之心轉載
作者: 思��
隨著統計機器學習的逐漸成熟, 現在已經是時候打破孤立學習地傳統模式,轉而研究終身學習, 將機器學習推嚮嶄新的高度。
一、什麼是終身學習(Life-Long Machine Learning)?
終身機器學習(或稱終身學習)是一種高級的機器學習範式, 它通過不斷學習,從過去的任務當中積纍知識,並用這些知識幫助未來的學習。在這樣的過程中,學習者的知識越來越豐富,學習效率也越來越高。這種學習能力的特質是人類智力的重要標誌。
然而, 當前主流的機器學習範式是孤立學習的:給定訓練數據集, 算法直接通過該訓練集來生成模型(從假設空間中搜索最優或近似最優的假設)。它不會試圖保留所學的知識,來提高未來的學習效率。雖然這種孤立學習範式已經取得瞭很大的成功, 但它需要大量的訓練實例,並且隻適用於定義明確而且範圍狹窄的極其有限任務。相比之下, 我們人類則可以通過幾個例子有效地學習, 這是因為我們在過去積纍瞭如此多的知識。這種積纍的先驗知識使我們能夠通過很少的數據或者付齣較小的努力來高效地學習新的事物。終身學習旨在使機器學習模型具備這種能力。
隨著統計機器學習的逐漸成熟, 現在已經是時候打破孤立學習地傳統模式,轉而研究終身學習, 將機器學習推嚮嶄新的高度。智能助手、聊天機器人和物理機器人等應用也都在迫切地需要這種終身學習能力。果沒有積纍所學知識並使用它來逐步學習更多知識的能力, 一個係統可能永遠不會是真正的智能係統。[1]
Life Long Learning
近年來, 終身學習(LLL)在深度學習界引起瞭極大的關注, 它通常被稱為持續學習(Continual Learning)。雖然度神經網絡(DNNs)在許多機器學習任務中取得瞭最好的性能, 但基於聯結主義的深度學習算法存在著災難性的遺忘的問題, 這使得實現持續學習的目標變得非常睏難。當使用神經網絡學習序列任務時, 模型在學習新的任務後可能因為災難性遺忘的問題而導緻模型在舊任務的錶現變得很差。然而,我們的人腦卻有這種非凡的能力, 能夠學習大量不同的任務, 而不會齣現任何負麵的相互乾擾。 持續學習(Continual Learning)算法試圖為神經網絡實現同樣的能力, 並解決災難性的遺忘問題。 因此, 從本質上講, 持續學習執行的是對新任務的增量學習(Incremental Learning)。
然而與許多其他Life Long Learning技術不同, 當前持續學習算法的重點並不是如何利用在以前任務中學到的知識來幫助更好地學習新任務。而是重點在於解決災難性遺忘的問題。
二、什麼是災難性的遺忘[2]?
災難性的遺忘指的是,模型學習瞭新的知識之後,幾乎徹底遺忘掉之前訓練的內容。
這樣一個問題簡言之,關注的是在Sequential Learning過程中,模型在每個學習階段,都會接觸到新的不同的數據或任務,而對於舊類數據失去或者僅有有限的訪問權限。在這樣的一個場景下,以神經網絡為代錶的聯結主義模型在舊的任務上的性能會大大降低。
例如在傳統的圖像分類模型的訓練過程中,我們同時在所有數據上進行訓練 (盡管目前流行的優化方法都是以Batch的形式分批優化,但是每個epoch我們仍然會在所有數據上進行訓練,相當於每個epoch都會對所有的數據進行溫習)。但是在continual learning的情況下,學習的任務是分task依次訓練的,當我們在新的task上進行訓練時,舊的task中的訓練數據是不可獲得(或者獲得受限的)。
舉個簡單的例子:小明是一名大學生,現在需要參加期末考試,考試科目有數字信號處理、機器學習、近代史。
眾所周知,因為小明是一個大學生的原因,他的記憶能力非常古怪。他可以兩個小時速成一門學科,但是如果他復習瞭新的學科,他就會忘記舊的學科。
第一天,小明復習瞭數字信號處理,他高興地走齣考場。
第二天,小明復習瞭機器學習,他高興地走齣考成。
第三天,小明復習瞭近代史,但是學校發現有人泄露瞭題目,於是決定三門考試同時重考。於是,小明高興地把近代史的內容“精準地”寫在瞭數字信號處理與機器學習的捲子上麵,留下閱捲老師一臉疑惑。
盡管上麵的故事非常荒唐,但是在目前研究的場景中經常會齣現類似的問題,比如在分類任務中,我們首先使用一些預定類彆的樣本訓練一個模型,之後再使用一些新類彆的樣本來finetune這樣一個網絡,這會使網絡識彆初始類彆的性能大幅度下降;再比如,在增強學習任務中,單獨訓練後續的任務,會使agent在前序任務的性能下降嚴重。
如下圖所示,當我們使用神經網絡模型訓練新的任務魚和老虎時,模型卻錯誤的將舊任務當中的狗分類成瞭魚。
Catastrophic Forgetting
三、Continual Learning 有哪些場景?
場景一:Task-IL
任務增量學習,是最簡單的Continual Learning的場景。在這種場景下,無論是訓練階段還是測試階段,模型都被告知瞭當前的任務ID。
這種特性導緻瞭一些task specific component的方法齣現,如packNet[3]提前為每個任務確定捲積的filter的掩碼圖。再如HAT會動態的根據任務為捲積訓練掩碼圖。當給定任務ID後,則選擇相應的掩碼進行預測。
PackNet
場景二:Domain-IL
Domain-IL相較於Task-IL在測試階段增加瞭新的限製,即在預測階段並不會告知任務的ID。模型需要在不知道任務ID的情況下,將數據正確的分類。
Domain-IL的場景,常常用來處理標簽空間相同,但輸入分布不同的問題。例如動漫中的老虎和現實中的老虎(虎年彩蛋)。
domain(一):真實世界中的老虎
domain(二):動畫老虎
場景三:Class-IL
在Class-IL中新的類彆不斷地到來,模型需要正確地將輸入分類到其對應地類彆當中去。這是更為嚴格的場景,模型在接受輸入後,需要正確的識彆輸入對應的task-ID,然後將數據粉到正確的類彆當中去。
舉例[4]
下圖展示瞭一個形象的例子,模型依次在task1、2、3、4、5上進行訓練。
在預測階段
Task-IL會告知task-ID,模型根據task-ID將數據分為第一類或者第二類。例如當告知task-ID為1時,模型隻需要在0和1之間進行辨彆。
Domain-IL無法獲得task-ID, 但是它需要判斷輸入的標簽是屬於集閤(0,2,4,6,8)還是(1,3,5,7,9).
而Class-IL需要給齣具體的數字標簽,即從0-9之間選擇一個進行輸齣。
MNIST上的Incremental Learning的三種不同setting
此外,目前還有更為嚴格地data-IL, 我們在訓練時就並不顯示的告知task的階段,希望模型能夠適應這種類彆不穩定不均衡的數據流。此處我們不展開討論。
四、什麼是類增量學習?
一個簡單的例子
Class-Incremental Learning 舉例
模型首先在任務 1 上進行訓練, 學習分類鳥類和水母。之後,需要基於當前模型分彆在任務 2 中學習鵝類和北極狐,在任務 3 中學習狗類和螃蟹。在順序化地完成訓練後,模型需要在所有已經見過的類彆上進行評估,一個好的類彆增量模型應該能既學得新類知識,又不遺忘舊類知識。
形式化定義
類彆增量學習旨在從一個數據流中不斷學習新類。假設存在B個不存在類彆重閤的訓練集, 其中錶示第 b 個增量學習訓練數 據集, 又稱作訓練任務 (task)。 是來自於類彆的一個訓練樣本, 其中是第b 個任務的標記空間。不同任務間不存在類彆重閤, 即對於 有: 。在學習第 b 個任務的過程中,隻能使用當前階段的訓練數據集 更新模型. 在每個訓練階段, 模型的目標不僅是學得當前 數據集 中新類的知識,同時也要保持不遺忘之前所有學過類彆的知識. 因此, 我們基於模型在所 有已知類集閤 上的判彆能力評估其增量學習能力. 將增量學習模型對樣本 的輸齣 記作 , 則模型要優化的期望風險描述為:
其中 錶示第 b 個任務的樣本分布。 評估輸入之間的差異, 在分類任務中一般使用交叉熵損 失函數。由於模型需要同時在見過的所有分布上最小化期望風險,能夠滿足公式 1 的模型能夠在學習 新類的同時不遺忘舊類的知識。進一步地, 可以將深度神經網絡按照特徵提取和綫性分類器層進行解耦, 則模型 由特徵提取模塊 和綫性分類器 組成,即 。為瞭錶述方便, 我們將綫性分類器 進一步錶示成對於每個類分類器 的組閤:。
五、論文方法解讀
模型解耦
為瞭方便之後的說明,我們首先對神經網絡模型進行解耦。
模型 由特徵提取模塊 和綫性分類器 組成, 即 。為瞭錶述方便, 我們將綫性分類器 進一步錶示成對於每個類分類器 的組閤: 。
5.1 LwF: Learning without Forgetting[5]
核心摘要
LwF(Learning without Forgetting) 是Incremental Learning領域早期發錶的一篇文章,論文的核心要點包括:
除瞭LwF本身外,還提齣瞭Fine-tunine, Feature Extraction, Joint Training三種基本的對比方法,並對不同方法進行瞭分析與實驗對比。
提齣瞭使用知識蒸餾(Knowledge Distillation)的方法提供舊類的“軟監督”信息來緩解災難性遺忘的問題。並且發現,這種監督信息即使沒有舊類的數據仍然能夠很大程度上提高舊類的準確率。
對參數偏移的正則懲罰係數、正則形式、模型拓展方式等等因素進行瞭基本的實驗對比。(不過具論文中結果這些因素的影響並不明顯)。
方法比較
Learning Without Forgetting
如圖中所示:
(a) 中為傳統的多分類模型,它接受一張圖片,然後通過綫性變換、非綫性激活函數、捲積、池化等運算操作符輸齣該圖片在各個類彆上的概率。
(b) 中為Fine-tuning方法,即訓練新類時,我們保持舊的分類器不變,直接訓練前麵的特徵提取器和新的分類器權重。
(c) 稱為Feature Extraction,保持特徵提取器不變,保持舊的分類器權重不變,隻訓練新的任務對應的參數。
(d) 中為Joint Training的方法,它在每個訓練任務時刻都同時接受所有的訓練數據進行訓練。
(e) 中為LwF方法,他在Fine-tuning的基礎上,為舊類通過知識蒸餾提供瞭一種“軟”監督信息。
知識蒸餾(Knowledge Distillation)[6]
知識蒸餾(Knowledge Distilling)最初是模型壓縮的一種方法,是指利用已經訓練的一個較復雜的Teacher模型,指導一個較輕量的Student模型訓練,從而在減小模型大小和計算資源的同時,盡量保持原Teacher模型的準確率的方法。
其基本的形式為:
其中為第i類的logits輸齣, 為溫度係數。知識蒸餾的損失函數可以看作是最小化Teacher模型和Student模型在已有數據集上數據似然的KL散度。這種監督信息相較於一般的標簽分布一方麵更加的平滑,另外一方麵能夠一定程度上反應不同類彆之間的相似關係。
在LwF的模型中,我們使用額外的內存開銷保存舊的模型,當訓練新的模型時,使用舊的模型作為舊類的Teacher模型。
訓練流程
對於新的任務的訓練集,LwF的損失函數包括:
新類的標簽監督信息:即新類對應的logits與標簽的交叉熵損失(KL散度)
舊類的知識蒸餾:新舊模型在舊類上的的logits的交叉熵損失(包含溫度係數:設置溫度係數大於一,來增強模型對於類彆相似性的編碼能力)
參數偏移正則項,對於新模型參數關於舊模型參數偏移的正則項。
具體的僞代碼如下:
5.2 iCaRL: Incremental Classifier and Representation Learning[7]
核心摘要
iCaRL可以視為Class-Incremental Learning方嚮許多工作的基石。文章的主要貢獻包括:
給Class-Incremental Learning的設定一個規範的定義:
模型需要在一個新的類彆不斷齣現的流式數據中進行訓練。
模型在任意階段,都應該能夠對目前見到的所有類彆進行準確的分類。
模型的計算消耗和存儲消耗必須設置一個上界或者隻會隨著任務數量緩慢增長。
第一次闡明瞭我們可以在將來的訓練階段保留一部分典型的舊類數據,這極大地提高瞭模型能夠實現的準確率上限,並提齣瞭一種有效的典型樣本挑選策略herding:貪心的選擇能夠使得exemplar set 的特徵均值距離總的均值最近的樣本。
Herding
提齣瞭使用保留的舊類數據來進行nearest-mean-of-exemplars的分類方式,而非直接使用訓練階段的到的綫性分類器。這是因為使用交叉熵損失函數在不平衡的數據集上直接進行訓練,很容易齣現較大的分類器的偏執。而模型提取的特徵則能夠很大程度上緩解這個問題。
訓練流程
當新的任務到來時:
將新來的類彆數據集與保留的舊類數據的exemplar set閤並得到當前輪的數據集。
使用sigmoid將模型輸齣的logits轉化為0-1之間。將目標標簽轉化為one-hot嚮量錶示。
對於新類的分類,我們使用binary cross entropy來計算損失。這裏的binary cross entropy的計算僅僅考慮瞭所有的新的類彆的計算,這種方式能夠使得我們在學習新的樣本的時候,不會更新舊的綫性分類器中的權重嚮量,從而減少不均衡的數據流對樣本分類的影響。
對於舊類的分類,則仿照LwF的模式,計算新舊模型在舊類上的概率輸齣的binary cross entropy的損失來訓練模型。
iCaRL
iCaRL對後來的方法的影響頗深。在此之後,相當數量的類彆增量學習方法都仿照這一範式。創建一個exemplar set來存儲典型的舊類樣本。使用知識蒸餾來提供舊類的監督信息。
5.3 BiC[8]
核心摘要
BiC基本遵循瞭iCaRL的訓練範式,但仍然使用綫性分類器作為預測階段的分類器。BiC指齣,類彆增量學習中齣現的災難性的遺忘,很重要的一個因素是由於訓練集樣本不均衡導緻的分類器偏執。文中抽象地解釋瞭這種訓練樣本不均衡導緻的分類器的偏執的原因。如下圖所示,圖中的藍色虛綫是所有的舊類特徵無偏的分布(Unbiased Distribution),綠色實綫為新類樣本的無偏分布,圖中的藍色實現則對應瞭無偏的分類器。而由於在學習新的類彆的時候,我們僅僅保有一部分的舊類樣本。這就導緻實際訓練過程中我們遇到的特徵分布,可能是如藍色實綫一樣的狹窄尖銳的分布,這就導緻我們學習得到的分類器也會相對無偏的分類器嚮右偏移,導緻有很大一部分舊類樣本被分為新類瞭。
BiC
依照這種思路,BiC設置瞭一種Bias Correction的階段,我們使用綫性偏移來將新類的分布進行拉平與平移,從而使得實現與虛綫重疊,得到無偏的分類器,具體的:
在使用類似於iCaRL的訓練模式訓練完成後,我們使用預先保留的新舊類平衡的訓練集來訓練兩個參數,分彆控製分類器的平移於縮放,即:
將舊類的輸齣乘上並加上, 其中由Bias Correction的訓練階段得到。
5.4 WA[9]
核心摘要
WA 中指齣,直接在新的數據上對模型進行finetune導緻模型性能下降的原因主要有兩個:
沒有足夠的舊類樣本來進行訓練,導緻模型不能夠保持舊類內部之間的分辨能力。
舊類樣本顯著少於新類樣本,導緻模型齣現瞭極大的分類偏執,這種bias導緻模型無論遇到舊類樣本還是新類樣本,都會在新類的概率輸齣上給齣一個較大的值。
問題剖析
因此,WA將該過程分為兩個目標:
保持舊類之間的相對大小:即Maintaining Discrimination
處理新舊類的公平問題,即實現新舊類分類偏好的對齊:Maintaining Fairness
目標
對於第一個目標,基於iCaRL模式的知識蒸餾能夠很好的實現舊類的之間的Discrimination的問題。對於第二個目標,WA中發現,在不平衡的訓練集上訓練之後,新類所對應的的綫性分類器往往具有相較於舊類綫性分類器更大的權值。比較新舊類分類器權值的L2範數可以發現,新類的L2範數顯著大於舊類。
分類器權重比較
而WA所做的則是將該L2範數拉平。
其中:
最終的實驗結果證明這種簡單的策略性能提升非常顯著。
實驗結果
我們在這裏需要指明的一點是,這種解決思路其實並沒有那麼完備。因為分類器權值的大小,並不總與最終輸齣的logits的大小正相關。這是因為如果一個分類器對應的權值很大,那麼如果一個特徵與其是同嚮的,那麼logits的大小顯然與該分類器權值為正相關,但是如果一個樣本的特徵是與該分類器的方嚮是反嚮的,則特徵與分類器的內積將會是一個很小的負值,此是則權值為負相關。因此,分類器權值很大,並不總意味著模型輸齣的logits很大。那麼為什麼這種解決方案能夠很好的解決新舊類的calibration的問題呢?作者在文中給瞭intuitive的解釋:由於現在模型結構中往往使用瞭非負的激活函數,典型的如relu,導緻模型的特徵輸齣,分類器的權值往往都是正值,這意味著分類器權值嚮量與特徵嚮量在大多數情況下的夾角都是銳角,其內積為正數,因此是正相關的。
5.5 DER[10]
基於動態特徵結構的方法已經被廣泛應用於解決在Task-IL中,DER是首個將動態特徵結構方法應用於Class-IL的場景下,並取得優異性能的嘗試。
核心摘要
DER中說明,傳統的方法會陷入穩定性-可塑性睏境 (stability-plasticity dilemma): 對於一個單骨架的模型,如果不施加任何限製,給它足夠的可塑性,那麼它在舊類樣本上的錶現就會産生大幅度降低;但是如果施加過多的限製則又會導緻模型沒有足夠的可塑性來學習新的任務。而DER則實現瞭相較於傳統方法更好的穩定性可塑性的trade-off。DER保留並凍結舊的特徵提取器來保留舊的知識,同時創建一個新的可訓練的特徵提取使模形具有足夠的可塑性來學習新的任務。
DER
訓練流程
具體的,當新的任務到來時:
DER固定住原有的特徵提取器,並創建新的特徵提取器,將兩特徵拼接得到總的特徵提取器。
將提取得到的特徵送入新創建的分類器,並計算與目標的交叉熵損失。
為瞭更好地提取特徵,DER另外使用瞭一個輔助分類器,僅僅使用新的特徵,並要求新的特徵空間能夠良好的實現新類之間的辨彆。而對於所有的舊類樣本,輔助分類器會將他們分類到同一個標簽上麵。
DER還設計瞭一種剪枝的方式,能夠在盡可能保持模型性能的基礎上實現大幅度的參數削減。這種剪枝策略從Task-IL的經典方法HAT[11]中藉鑒而來,將HAT的以filter的權值的掩碼,轉變成整個channel的掩碼。
最終模型訓練的損失函數為:
每個損失分彆為:總的交叉熵損失、輔助分類器交叉熵損失、剪枝策略對應的稀疏解損失。
5.6 COIL[12]
經典的學習係統往往被部署在封閉環境中,學習模型可以利用預收集的數據集對固定類彆的數據進行建模。然而,在開放動態環境中這種假設難以滿足――新的類彆會隨時間不斷增長,模型需要在數據流中持續地學習新類。例如,在電商平台中,每天都會新增多種産品;在社交媒體上,新的熱點話題層齣不窮。因此,類彆增量學習模型需要在學習新類的同時不遺忘舊類彆的特徵。COIL觀察到在增量學習的過程中,新類和舊類間存在相關性,因此可以利用它來進一步地輔助模型在不同階段的學習。因此,COIL提齣利用協同運輸輔助類彆增量學習過程,並基於類彆間的語義相關性將不同的增量學習階段聯係起來。協同運輸分為兩方麵:嚮前運輸(prospective transport)旨在利用最優運輸獲得的知識增廣分類器,作為新類分類器的初始化;嚮後運輸(retrospective transport)旨在將新類分類器轉化為舊類分類器,並防止災難性遺忘。因此模型的知識可以在增量學習過程中雙嚮流動,從而在學習新類的同時保持對舊類的判彆能力。
COIL的特徵層麵說明
如上圖所示,COIL嘗試基於類彆間的語義關係進行分類器遷移。例如,老虎和貓很相似,因此用於判彆二者的特徵也高度重閤,甚至可以重用大量老虎的分類器權重作為類彆貓的分類器初始化;老虎和斑馬不相似,因此用於判彆二者的特徵也無法重用。COIL考慮在統一的嵌入空間下度量類彆中心的相似關係,並以此構造類彆間的距離矩陣。之後,藉助最優運輸算法,將類彆之間的距離作為運輸代價,最小化所有新類和舊類集閤之間的分類器重用代價,從而基於類彆之間的語義關係指導分類器重用。最後,如下圖所示,分彆將舊類分類器復用為新類分類器,和將新類分類器復用為舊類分類器,構造兩個不同方嚮的知識遷移,並以此設計瞭損失函數用於約束模型,防止災難性遺忘。
COIL方法實現
分類邊界可視化:
COIL分類邊界
六、PyCIL: A Python Toolbox for Class-Incremental Learning
我們開源瞭一個基於pytorch的Class-IL框架:PyCIL。
其中不僅包含瞭如EWC、iCaRL等一批早期的fundamental的方法,還包含瞭一些現在state-of-the-art的Class-IL算法,希望能夠幫助一些希望瞭解和研究相關領域的學者。
項目地址:PyCIL[13]
Methods Reproduced
FineTune: Baseline method which simply updates parameters on new task, suffering from Catastrophic Forgetting. By default, weights corresponding to the outputs of previous classes are not updated.
EWC: Overcoming catastrophic forgetting in neural networks. PNAS2017 [paper]
LwF: Learning without Forgetting. ECCV2016 [paper]
Replay: Baseline method with exemplars.
GEM: Gradient Episodic Memory for Continual Learning. NIPS2017 [paper]
iCaRL: Incremental Classifier and Representation Learning. CVPR2017 [paper]
BiC: Large Scale Incremental Learning. CVPR2019 [paper]
WA: Maintaining Discrimination and Fairness in Class Incremental Learning. CVPR2020 [paper]
PODNet: PODNet: Pooled Outputs Distillation for Small-Tasks Incremental Learning. ECCV2020 [paper]
DER: DER: Dynamically Expandable Representation for Class Incremental Learning. CVPR2021 [paper]
Coil: Co-Transport for Class-Incremental Learning. ACM MM2021 [paper]
部分實驗結果
實驗結果(一)
實驗結果(二)
參考
Zhiyuan Chen; Bing Liu; Ronald Brachman; Peter Stone; Francesca Rossi, Lifelong Machine Learning: Second Edition , Morgan & Claypool, 2018. https://ieeexplore.ieee.org/document/8438617
Catastrophic forgetting in connectionist networks https://www.sciencedirect.com/science/article/pii/S1364661399012942
PackNet: Adding Multiple Tasks to a Single Network by Iterative Pruning https://arxiv.org/abs/1711.05769
Three scenarios for continual learning https://arxiv.org/abs/1904.07734
Learning without Forgetting https://arxiv.org/abs/1606.09282
Distilling the Knowledge in a Neural Network https://arxiv.org/abs/1503.02531
iCaRL: Incremental Classifier and Representation Learning https://arxiv.org/abs/1611.07725
Large Scale Incremental Learning https://arxiv.org/abs/1905.13260
Maintaining Discrimination and Fairness in Class Incremental Learning https://arxiv.org/abs/1911.07053
DER: Dynamically Expandable Representation for Class Incremental Learning https://arxiv.org/abs/2103.16788
https://arxiv.org/abs/1801.01423 https://arxiv.org/abs/1801.01423
Co-Transport for Class-Incremental Learning https://arxiv.org/abs/2107.12654
PyCIL: A Python Toolbox for Class-Incremental Learning https://arxiv.org/abs/2112.12533