首頁>技術>

1. 增量學習的概念1.1 什麼是增量學習

人類有終身不斷獲取、調整和轉移知識的能力,雖然在我們的一生中,我們確實傾向於逐漸忘記之前學習過的知識,但只有在極少的情況下,對新知識的學習會災難性地影響已經學到的知識,這樣的學習能力被稱為增量學習的能力。

具體來講,「增量學習的能力就是能夠不斷地處理現實世界中連續的資訊流,在吸收新知識的同時保留甚至整合、最佳化舊知識的能力。」

增量學習(Incremental Learning)已經有20多年的研究歷史,但增量學習更多地起源於認知神經科學對記憶和遺忘機制的研究,因此不少論文的idea都啟發於認知科學的發展成果,本文不會探討增量學習的生物啟發,關於面向生物學和認知科學的增量學習綜述可見 Continual lifelong learning with neural networks: A review[1]。

1.2 為什麼要增量學習

在機器學習領域,增量學習致力於解決模型訓練的一個普遍缺陷:「災難性遺忘(catastrophic forgetting)」 ,也就是說,一般的機器學習模型(尤其是基於反向傳播的深度學習方法)在新任務上訓練時,在舊任務上的表現通常會顯著下降。

造成災難性遺忘的一個主要原因是「傳統模型假設資料分佈是固定或平穩的,訓練樣本是獨立同分布的」,所以模型可以一遍又一遍地看到所有任務相同的資料,但當資料變為連續的資料流時,訓練資料的分佈就是非平穩的,模型從非平穩的資料分佈中持續不斷地獲取知識時,新知識會干擾舊知識,從而導致模型效能的快速下降,甚至完全覆蓋或遺忘以前學習到的舊知識。

為了克服災難性遺忘,我們希望模型一方面必須表現出從新資料中整合新知識和提煉已有知識的能力(可塑性),另一方面又必須防止新輸入對已有知識的顯著干擾(穩定性)。這兩個互相沖突的需求構成了所謂的「穩定性-可塑性困境(stability-plasticity dilemma)」

解決災難性遺忘最簡單粗暴的方案就是使用所有已知的資料重新訓練網路引數,以適應資料分佈隨時間的變化。儘管從頭訓練模型的確完全解決了災難性遺忘問題,但這種方法效率非常低,極大地阻礙了模型實時地學習新資料。而增量學習的主要目標就是在計算和儲存資源有限的條件下,在穩定性-可塑性困境中尋找效用最大的平衡點。

1.3 增量學習的特點

增量學習和持續學習(Continual Learning)、終身學習(Lifelong Learning)的概念大致是等價的,它們都是在連續的資料流中訓練模型,隨著時間的推移,更多的資料逐漸可用,同時舊資料可能由於儲存限制或隱私保護等原因而逐漸不可用,並且學習任務的型別和數量沒有預定義(例如分類任務中的類別數)。

但增量學習目前還沒有一個特別清晰的定義,因此比較容易與線上學習,遷移學習和多工學習等概念混淆,「尤其要注意增量學習和線上學習的區別,線上學習通常要求每個樣本只能使用一次,且資料全都來自於同一個任務,而增量學習是多工的,但它允許在進入下一個任務之前多次處理當前任務的資料」。上圖表現了增量學習和其他學習正規化的區別,一般來說,增量學習有如下幾個特點:

學習新知識的同時能夠保留以前學習到的大部分知識,也就是模型在舊任務和新任務上均能表現良好。計算能力與記憶體應該隨著類別數的增加固定或者緩慢增長,最理想的情況是一旦完成某一任務的學習,該任務的觀測樣本便被全部丟棄。模型可以從新任務和新資料中持續學習新知識,當新任務在不同時間出現,它都是可訓練的。

由於增量學習問題的複雜性和挑戰的多樣性,人們通常只討論特定設定下的增量學習。以一個影象分類模型為例,我們希望模型具有增量學習新的影象和新的類別的能力,但前者更多地與遷移學習有關,因此任務增量學習(Task-incremental Learning)和難度更高一點的類增量學習(Class-incremental Learning)是深度學習社群當前主要考慮的增量學習正規化。

2. 增量學習的實現方式

增量學習是一個連續不斷的學習過程,在這個過程中,我們假設模型已經學習了前 個任務:,當面對任務 和對應的資料 時,我們希望可以利用從舊任務中學習到的先驗知識幫助 的學習,然後更新模型所學習到的知識。這個過程要求我們在當前任務 中尋找引數 最小化下面的損失函式:

其中舊資料 是部分可見或完全不可見的。

增量學習方法的種類有很多種劃分方式,本文將其劃分為以下三種正規化:

正則化(regularization)回放(replay)引數隔離(parameter isolation)

其中基於正則化和回放的增量學習正規化受到的關注更多,也更接近增量學習的真實目標,引數隔離正規化需要引入較多的引數和計算量,因此通常只能用於較簡單的任務增量學習。關於其他劃分方式和不同類別的增量學習的優缺點對比可見A Comprehensive Study of Class Incremental Learning Algorithms for Visual Tasks[3],下面僅介紹基於正則化和回放的增量學習的經典方法以及相關進展。

2.1 基於正則化的增量學習

基於正則化的增量學習的主要思想是「透過給新任務的損失函式施加約束的方法來保護舊知識不被新知識覆蓋」,這類方法通常不需要用舊資料來讓模型複習已學習的任務,因此是最優雅的一類增量學習方法。Learning without Forgetting (ECCV 2016)[4]提出的LwF演算法是基於深度學習的增量學習的里程碑之作,在介紹LwF演算法之前,我們先了解一些最簡單的增量學習方法。

上圖展示了一個具有多頭網路結構的模型學習新任務的不同策略,其中(a)為已經訓練好的基於CNN的原始模型, 表示不同任務共享的CNN引數, 表示與原始任務相關的MLP引數,當加入一個新的分類任務時,我們可以增加一個隨機初始化的MLP引數 。基於 來學習 的方法包括如下幾類:

微調(Fine-tuning):微調沒有舊任務引數和樣本的指導,因此模型在舊任務上的表現幾乎一定會變差,也就是發生災難性遺忘。聯合訓練(Joint Training):聯合訓練相當於在所有已知資料上重新訓練模型,效果最好,因此通常被認為是「增量學習的效能上界」,但訓練成本太高。特徵抽取(Feature Extraction):特徵抽取只訓練 ,共享引數 沒有得到更新,雖然不影響模型在舊任務上的表現,但不能有效捕獲新任務獨有的特徵表示,在新任務上的表現通常不如人意。

LwF演算法是介於聯合訓練和微調訓練之間的訓練方式,LwF的特點是它不需要使用舊任務的資料也能夠更新 。LwF演算法的主要思想來自於knowledge distillation[5],也就是使新模型在新任務上的預測和舊模型在新任務上的預測相近。

具體來說,LwF演算法先得到舊模型在新任務上的預測值,在損失函式中引入新模型輸出的蒸餾損失,然後用微調的方法在新任務上訓練模型,從而避免新任務的訓練過分調整舊模型的引數而導致新模型在舊任務上效能的下降。演算法流程如下圖所示,其中 用於權衡模型的穩定性和可塑性。

但是,這種方法的缺點是高度依賴於新舊任務之間的相關性,當任務差異太大時會出現任務混淆的現象(inter-task confusion),並且一個任務的訓練時間會隨著學習任務的數量線性增長,同時引入的正則項常常不能有效地約束模型在新任務上的最佳化過程。

不少研究者圍繞著LwF演算法的思想提出了很多改進策略,比較有名的包括Encoder Based Lifelong Learning (ICCV 2017)[6]提出的基於低維特徵對映的EBLL演算法,以及Overcoming catastrophic forgetting in neural networks (PNAS 2017)[7]提出的基於貝葉斯框架的EWC演算法,EWC演算法實際上對應了一個通用的「引數約束」方法,它引入了一個額外的和引數有關的正則損失:

該損失會根據不同引數的重要性來鼓勵新任務訓練得到的新模型引數儘量靠近舊模型引數。後續對EWC作出改進了論文也很多,比如Rotate your Networks: Better Weight Consolidation and Less Catastrophic Forgetting (ICPR 2018)[8]。

概括起來,基於正則化的增量學習方法透過引入額外損失的方式來修正梯度,保護模型學習到的舊知識,提供了一種緩解特定條件下的災難性遺忘的方法。不過,雖然目前的深度學習模型都是過引數化的,但模型容量終究是有限的,我們通常還是需要在舊任務和新任務的效能表現上作出權衡。近幾年,不少研究者也提出了各種型別的正則化手段,有興趣的話可以參考下面的論文:

Learning without Memorizing (CVPR 2019)[9]Learning a Unified Classifier Incrementally via Rebalancing (CVPR 2019)[10]Class-incremental Learning via Deep Model Consolidation (WACV 2020)[11]2.2 基於回放的增量學習

從字面意思上來看,基於回放的增量學習的基本思想就是"溫故而知新",在訓練新任務時,一部分具有代表性的舊資料會被保留並用於模型複習曾經學到的舊知識,因此「要保留舊任務的哪部分資料,以及如何利用舊資料與新資料一起訓練模型」,就是這類方法需要考慮的主要問題。

iCaRL: Incremental Classifier and Representation Learning (CVPR 2017)[12]是最經典的基於回放的增量學習模型,iCaRL的思想實際上和LwF比較相似,它同樣引入了蒸餾損失來更新模型引數,但又放鬆了完全不能使用舊資料的限制,下面是iCaRL設計的損失函式:

LwF在訓練新資料時完全沒用到舊資料,而iCaRL在訓練新資料時為每個舊任務保留了一部分有代表性的舊資料(iCaRL假設越靠近類別特徵均值的樣本越有代表性),因此iCaRL能夠更好地記憶模型在舊任務上學習到的資料特徵。

另外Experience Replay for Continual Learning (NIPS 2019)[13]指出這類模型可以動態調整舊資料的保留數量,從而避免了LwF演算法隨著任務數量的增大,計算成本線性增長的缺點。基於iCaRL演算法的一些有影響力的改進演算法包括End-to-End Incremental Learning (ECCV 2018)[14]和Large Scale Incremental Learning (CVPR 2019)[15],這些模型的損失函式均借鑑了知識蒸餾技術,從不同的角度來緩解災難性遺忘問題,不過災難性遺忘的問題還遠沒有被滿意地解決。

iCaRL的增量學習方法會更新舊任務的引數 ,因此很可能會導致模型對保留下來的舊資料產生過擬合,Gradient Episodic Memory for Continual Learning (NIPS 2017)[16]針對該問題提出了梯度片段記憶演算法(GEM),GEM只更新新任務的引數而不干擾舊任務的引數,GEM以不等式約束的方式修正新任務的梯度更新方向,從而希望模型在不增大舊任務的損失的同時儘量最小化新任務的損失值。

GEM方向的後續改進還有Efficient Lifelong Learning with A-GEM (ICLR 2019)[17]和Gradient based sample selection for online continual learning (NIPS 2019)[18]。

另外,也有一些工作將VAE和GAN的思想引入了增量學習,比如Variational Continual Learning (ICLR 2018)[19]指出了增量學習的貝葉斯性質,將線上變分推理和蒙特卡洛取樣引入了增量學習,Continual Learning with Deep Generative Replay (NIPS 2017)[20]透過訓練GAN來生成舊資料,從而避免了基於回放的方法潛在的資料隱私問題,這本質上相當於用額外的引數間接儲存舊資料,但是生成模型本身還沒達到很高的水平,這類方法的效果也不盡人意。

總體來說,基於回放的增量學習的主要缺點是需要額外的計算資源和儲存空間用於回憶舊知識,當任務種類不斷增多時,要麼訓練成本會變高,要麼代表樣本的代表性會減弱,同時在實際生產環境中,這種方法還可能存在「資料隱私洩露」的問題。

3. 增量學習的應用

增量學習的優點是可以隨時訓練新資料,不需要保留大量訓練資料,因此儲存和計算開銷都比較小,同時還能夠有效避免使用者的隱私洩露問題,這在「移動邊緣計算的場景」下是非常有價值有意義的。「但目前的增量學習依舊是一個很開放的研究問題,很大程度上還處於理論探索階段,在很多方面學界都沒有達成統一的共識,不少論文給出的結論常常會相互衝突,因此增量學習還沒有在細分領域中得到大規模的應用和落地。」

3.1 計算機視覺

大部分增量學習研究都是面向影象分類任務的,近幾年也有不少論文將增強學習推廣到了更復雜目標檢測和語義分割任務上,下面列舉了一些有代表性的工作。

影象分類A comprehensive, application-oriented study of catastrophic forgetting in DNNs (ICLR 2019)[21]A Comprehensive Study of Class Incremental Learning Algorithms for Visual Tasks[22]目標檢測Incremental Few-Shot Object Detection (CVPR 2020)[23]Incremental Learning of Object Detectors without Catastrophic Forgetting (ICCV 2017)[24]語義分割Modeling the Background for Incremental Learning in Semantic Segmentation (CVPR 2020)[25]Incremental Learning Techniques for Semantic Segmentation (ICCV workshop 2019)[26]Incremental Learning for Semantic Segmentation of Large-Scale Remote Sensing Data[27]3.2 自然語言處理

目前增量學習的研究主要還是面向計算機視覺,在自然語言處理領域還沒有得到太多關注。一個主要原因是目前自然語言處理社群的注意力主要集中在以BERT為代表的自監督表示學習上,在大規模預訓練模型的推廣下,增量學習的應用價值就不是太明顯了。

LAMOL: LAnguage MOdeling for Lifelong Language Learning (ICRL 2020)[28]Episodic Memory in Lifelong Language Learning (NIPS 2019)[29]Continual Learning for Sentence Representations Using Conceptors (NAACL 2019)[30]Neural Topic Modeling with Continual Lifelong Learning (ICML 2020)[31]Incremental Natural Language Processing: Challenges, Strategies, and Evaluation (COLING 2018)[32]3.3 機器人

機器人是增量學習天然的應用場景,因為機器人必須學會透過連續的觀察來適應環境並與之互動,增量學習正好能夠很好地刻畫真實世界的環境,不過機器人領域本身有很多更重要的問題需要解決,因此增量學習的應用也不太多。

Continual Learning for Robotics: Definition, Framework, Learning Strategies, Opportunities and Challenges[33]Efficient Adaptation for End-to-End Vision-Based Robotic Manipulation (ICML workshop 2020)[34]4. 增量學習面臨的問題和挑戰4.1 定量評估指標

增量學習的一些常見評估指標包括「準確率、記憶能力和遷移能力」等,其中記憶能力和遷移能力是衡量模型可塑性和穩定性的指標,但這些指標具體的公式定義卻是有爭議的。雖然人們已經提出了各種各樣的增量學習方法,但是在基準資料集的選取和評估演算法有效性的指標上還沒有達成廣泛的共識。

其中一點是增量學習通常需要引入額外的超引數來平衡模型的穩定性和可塑性,這些超引數通常在驗證集上被最佳化,「但這本質上違反了增量學習不能獲取未來資料的因果律,從而會導致人們作出過於樂觀的結論,在真實的生產環境中常常無法重現實驗結果。」

針對超引數選取的問題,A continual learning survey: Defying forgetting in classification tasks (2020)[35]提出了一種通用的增量學習超引數搜尋框架,並設計了一系列相對公平的指標來比較增量學習演算法,彙報了一些SOTA增量學習演算法的表現。

在此基礎上,Class-incremental learning: survey and performance evaluation (2020)[36]在多個數據集上對最新的一些增量學習方法進行了綜合對比,作者發現在基於正則化的增量學習中,最早提出的LwF演算法的表現是相當穩健的,許多後續改進的方法在一些條件下反而不如LwF演算法,另外基於資料約束的方法(LwF)實際上通常比基於引數約束的方法(EWC)表現得更好,然而目前人們的研究注意力是偏向後者的。下面是另外一些討論和提出增量學習評估指標和模型對比的論文,這裡不再一一介紹:

A comprehensive, application-oriented study of catastrophic forgetting in DNNs (ICLR 2019)[37]Don’t forget, there is more than forgetting: new metrics for Continual Learning (ICML workshop 2020)[38]Towards robust evaluations of continual learning[39]4.2 真正的增量學習

增量學習本身是一個很開放的概念,目前人們研究的基於深度學習的增量學習大多限制在「有監督分類、任務式增量和多頭網路結構的框架」下,這種特定領域的訓練方案通常不能直接應用於高度動態化和非結構化的真實環境中,Towards Robust Evaluations of Continual Learning[40]指出「多頭設定下的增量學習隱藏了增量學習問題真正的難度」。另外,雖然目前人們主要研究的是有監督學習,但探索更接近真實環境的無監督增量學習,以及其他型別的增量方式也是非常有意義的。

目前的增量學習方法通常「隱式地要求任務的性質差異不能太大」,當任務的性質和難度差異太大時,大部分增量學習方法的效能都會嚴重下降,甚至低於簡單的基線模型。另外,有不少研究表明「目前還沒有任何一種增量學習方法在任何條件下都能表現良好」,大部分增量學習方法「對模型結構,資料性質、超參設定都比較敏感」,因此探索在所有任務設定中表現更穩健的增量學習方法也是很有意義的。

26
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 數字記憶翻牌遊戲:python-turtle