輕量級持續(xù)學(xué)習(xí): 0.6%額外參數(shù)把舊模型重編程到新任務(wù)
持續(xù)學(xué)習(xí)的目的是模仿人類在連續(xù)任務(wù)中持續(xù)積累知識的能力,其主要挑戰(zhàn)是在持續(xù)學(xué)習(xí)新任務(wù)后如何保持對以前所學(xué)任務(wù)的表現(xiàn),即避免災(zāi)難性遺忘(catastrophic forgetting)。持續(xù)學(xué)習(xí)和多任務(wù)學(xué)習(xí)(multi-task learning)的區(qū)別在于:后者在同一時間可以得到所有任務(wù),模型可以同時學(xué)習(xí)所有任務(wù);而在持續(xù)學(xué)習(xí)中任務(wù) 一個一個出現(xiàn),模型在某一時刻只能學(xué)習(xí)一個任務(wù)的知識,并且在學(xué)習(xí)新知識的過程中避免遺忘舊知識。
南加州大學(xué)聯(lián)合 Google Research 提出了一種解決持續(xù)學(xué)習(xí)(continual learning)的新方法通道式輕量級重編碼(Channel-wise Lightweight Reprogramming [CLR]):通過在固定任務(wù)不變的 backbone 中添加可訓(xùn)練的輕量級模塊,對每層通道的特征圖進行重編程,使得重編程過的特征圖適用于新任務(wù)。這個可訓(xùn)練的輕量級模塊僅僅占整個backbone的0.6%,每個新任務(wù)都可以有自己的輕量級模塊,理論上可以持續(xù)學(xué)習(xí)無窮多新任務(wù)而不會出現(xiàn)災(zāi)難性遺忘。文已發(fā)表在 ICCV 2023。
- 論文地址: https://arxiv.org/pdf/2307.11386.pdf
- 項目地址: https://github.com/gyhandy/Channel-wise-Lightweight-Reprogramming
- 數(shù)據(jù)集地址: http://ilab.usc.edu/andy/skill102
通常解決持續(xù)學(xué)習(xí)的方法主要分為三大類:基于正則化的方法、動態(tài)網(wǎng)絡(luò)方法和重放方法。
- 基于正則化的方法是模型在學(xué)習(xí)新任務(wù)的過程中對參數(shù)更新添加限制,在學(xué)習(xí)新知識的同時鞏固舊知識。
- 動態(tài)網(wǎng)絡(luò)方法是在學(xué)習(xí)新任務(wù)的時候添加特定任務(wù)參數(shù)并對舊任務(wù)的權(quán)重進行限制。
- 重放方法假設(shè)在學(xué)習(xí)新任務(wù)的時候可以獲取舊任務(wù)的部分數(shù)據(jù),并與新任務(wù)一起訓(xùn)練。
本文提出的CLR方法是一種動態(tài)網(wǎng)絡(luò)方法。下圖表示了整個過程的 pipeline:研究者使用與任務(wù)無關(guān)的不可變部分作為共享的特定任務(wù)參數(shù),并添加特定任務(wù)參數(shù)對通道特征進行重編碼。與此同時為了盡可能地減少訓(xùn)練每個任務(wù)的重編碼參數(shù),研究者只需要調(diào)整模型中內(nèi)核的大小,并學(xué)習(xí)從 backbone 到特定任務(wù)知識的通道線性映射來實現(xiàn)重編碼。在持續(xù)學(xué)習(xí)中,對于每一個新任務(wù)都可以訓(xùn)練得到一個輕量級模型;這種輕量級的模型需要訓(xùn)練的參數(shù)很少,即使任務(wù)很多,總共需要訓(xùn)練的參數(shù)相對于大模型來說也很小,并且每一個輕量級模型都可以達到很好的效果。
研究動機
持續(xù)學(xué)習(xí)關(guān)注于從數(shù)據(jù)流中學(xué)習(xí)的問題,即通過特定的順序?qū)W習(xí)新任務(wù),不斷擴展其已獲得的知識,同時避免遺忘以前的任務(wù),因此如何避免災(zāi)難性遺忘是持續(xù)學(xué)習(xí)研究的主要問題。研究者從以下三個方面考慮:
- 重用而不是重學(xué):對抗重編碼(Adversarial Reprogramming [1])是一種通過擾動輸入空間,在不重新學(xué)習(xí)網(wǎng)絡(luò)參數(shù)的情況下,"重編碼" 一個已經(jīng)訓(xùn)練并凍結(jié)的網(wǎng)絡(luò)來解決新任務(wù)的方法。研究者借用了 “重編碼” 的思想,在原始模型的參數(shù)空間而不是輸入空間進行了更輕量級但也更強大的重編程。
- 通道式轉(zhuǎn)換可以連接兩個不同的核:GhostNet [2] 的作者發(fā)現(xiàn)傳統(tǒng)網(wǎng)絡(luò)在訓(xùn)練后會得到一些相似的特征圖,因此他們提出了一種新型網(wǎng)絡(luò)架構(gòu) GhostNet:通過對現(xiàn)有特征圖使用相對廉價的操作(比如線性變化)生成更多的特征圖,以此來減小內(nèi)存。受此啟發(fā),本文方法同樣使用線性變換生成特征圖來增強網(wǎng)絡(luò),這樣就能以相對低廉的成本為各個新任務(wù)量身定制。
- 輕量級參數(shù)可以改變模型分布:BPN [3] 通過在全連接層中增加了有益的擾動偏差,使網(wǎng)絡(luò)參數(shù)分布從一個任務(wù)轉(zhuǎn)移到另一個任務(wù)。然而 BPN 只能處理全連接層,每個神經(jīng)元只有一個標量偏置,因此改變網(wǎng)絡(luò)的能力有限。相反研究者為卷積神經(jīng)網(wǎng)絡(luò)(CNN)設(shè)計了更強大的模式(在卷積核中增加 “重編碼” 參數(shù)),從而在每項新任務(wù)中實現(xiàn)更好的性能。
方法敘述
通道式輕量級重編碼首先用一個固定的 backbone 作為一個任務(wù)共享的結(jié)構(gòu),這可以是一個在相對多樣性的數(shù)據(jù)集(ImageNet-1k, Pascal VOC)上進行監(jiān)督學(xué)習(xí)的預(yù)訓(xùn)練模型,也可以是在無語義標簽的代理任務(wù)上學(xué)習(xí)的自監(jiān)督學(xué)習(xí)模型(DINO,SwAV)。不同于其他的持續(xù)學(xué)習(xí)方法(比如 SUPSUP 使用一個隨機初始化的固定結(jié)構(gòu),CCLL 和 EFTs 使用第一個任務(wù)學(xué)習(xí)后的模型作為 backbone),CLR 使用的預(yù)訓(xùn)練模型可以提供多種視覺特征,但這些視覺特征在其他任務(wù)上需要 CLR 層進行重編碼。具體來說,研究者利用通道式線性變化(channel-wise linear transformation)對原有卷積核產(chǎn)生的特征圖像進行重編碼。
圖中展示了 CLR 的結(jié)構(gòu)。CLR 適用于任何卷積神經(jīng)網(wǎng)絡(luò),常見的卷積神經(jīng)網(wǎng)絡(luò)由 Conv 塊(Residual 塊)組成,包括卷積層、歸一化層和激活層。
研究者首先把預(yù)訓(xùn)練的 backbone 固定,然后在每個固定卷積塊中的卷積層后面加入通道式輕量級重編程層 (CLR 層)來對固定卷積核后的特征圖進行通道式線性變化。
給定一張圖片 X,對于每個卷積核 ,可以得到通過卷積核的特征圖 X’,其中每個通道的特征可以表示為
;之后用 2D 卷積核來對 X’的每個通道
進行線性變化,假設(shè)每個卷積核
對應(yīng)的線性變化的卷積核為
,那么可以得到重編碼后的特征圖
。研究者將 CLR 卷積核的初始化為同一變化核(即對于的 2D 卷積核,只有中間參數(shù)為 1,其余都為 0),因為這樣可以使得最開始訓(xùn)練時原有固定 backbone 產(chǎn)生的特征和加入 CLR layer 后模型產(chǎn)生的特征相同。同時為了節(jié)約參數(shù)并防止過擬合,研究者并不會在的卷積核后面加入 CLR 層,CLR 層只會作用在的卷積核后。對于經(jīng)過 CLR 作用的 ResNet50 來說,增加的可訓(xùn)練參數(shù)相比于固定的 ResNet50 backbone 只占 0.59%。
對于持續(xù)學(xué)習(xí),加入 CLR 的模型(可訓(xùn)練的 CLR 參數(shù)和不可訓(xùn)練的 backbone)可以依次學(xué)習(xí)每個任務(wù)。在測試的時候,研究者假設(shè)有一個 task oracle 可以告訴模型測試圖片屬于哪個任務(wù),之后固定的 backbone 和相對應(yīng)的任務(wù)專有 CLR 參數(shù)可以進行最終預(yù)測。由于 CLR 具有絕對參數(shù)隔離的性質(zhì)(每個任務(wù)對應(yīng)的 CLR 層參數(shù)都不一樣并且共享的 backbone 不會變化),因此 CLR 不會受到任務(wù)數(shù)量的影響。
實驗結(jié)果
數(shù)據(jù)集:研究者使用圖像分類作為主要任務(wù),實驗室收集了 53 個圖像分類數(shù)據(jù)集,有大約 180 萬張圖片和 1584 個種類。這 53 個數(shù)據(jù)集包含了 5 個不同的分類目標:物體識別,風(fēng)格分類,場景分類,計數(shù)和醫(yī)療診斷。
基線:研究者選擇了 13 種基線,大概可以分成 3 個種類
- 動態(tài)網(wǎng)絡(luò):PSP,SupSup,CCLL,Confit,EFTs
- 正則化:EWC,online-EWC,SI,LwF
- 重放:ER,DERPP
還有一些不屬于持續(xù)學(xué)習(xí)的基線,比如 SGD 和 SGD-LL。SGD 學(xué)習(xí)每個任務(wù)時對整個網(wǎng)絡(luò)進行微調(diào);SGD-LL 是一個變體,它對所有任務(wù)都使用一個固定的 backbone 和一個可學(xué)習(xí)的共享層,其長度等于所有任務(wù)最大的種類數(shù)量。
實驗一:第一個任務(wù)的準確率
為了評估所有方法在克服災(zāi)難性遺忘的能力,研究者跟蹤了學(xué)習(xí)新任務(wù)后每個任務(wù)的準確性。如果某個方法存在災(zāi)難性遺忘,那么在學(xué)習(xí)新任務(wù)后,同一任務(wù)的準確率就會很快下降。一個好的持續(xù)學(xué)習(xí)算法可以在學(xué)習(xí)新任務(wù)后保持原有的表現(xiàn),這就意味著舊任務(wù)應(yīng)受到新任務(wù)的影響最小。下圖展示了本文方法從學(xué)完第 1 到第 53 個任務(wù)后第 1 個任務(wù)的準確率??傮w而言,本文方法可以保持最高的準確率。更重要的是它很好地避免了災(zāi)難性遺忘并保持和原始訓(xùn)練方式得到的相同準確率無論持續(xù)學(xué)習(xí)多少個任務(wù)。
實驗二:學(xué)習(xí)所有任務(wù)后的平均準確率
下圖所有方法在學(xué)完全部任務(wù)后的平均準確率。平均準確率反映了持續(xù)學(xué)習(xí)方法的整體表現(xiàn)。由于每個任務(wù)的難易程度不同,當(dāng)增加一項新任務(wù)時,所有任務(wù)的平均精確度可能會上升或下降,這取決于增加的任務(wù)是簡單還是困難。
分析一:參數(shù)和計算成本
對于持續(xù)學(xué)習(xí),雖然獲得更高的平均準確率非常重要,但是一個好的算法也希望可以最大限度地減少對額外網(wǎng)絡(luò)參數(shù)的要求和計算成本。"添加一項新任務(wù)的額外參數(shù)" 表示與原始 backbone 參數(shù)量的百分比。本文以 SGD 的計算成本為單位,其他方法的計算成本按 SGD 的成本進行歸一化處理。
分析二:不同 backbone 的影響
本文方法通過在相對多樣化的數(shù)據(jù)集上使用監(jiān)督學(xué)習(xí)或自監(jiān)督學(xué)習(xí)的方法來訓(xùn)練得到預(yù)訓(xùn)練模型,從而作為與任務(wù)無關(guān)的不變參數(shù)。為了探究不同預(yù)訓(xùn)練方法的影響,本文選擇了四種不同的、與任務(wù)無關(guān)的、使用不同數(shù)據(jù)集和任務(wù)訓(xùn)練出來的預(yù)訓(xùn)練模型。對于監(jiān)督學(xué)習(xí),研究者使用了在 ImageNet-1k 和 Pascal-VOC 在圖像分類上的預(yù)訓(xùn)練模型;對于自監(jiān)督學(xué)習(xí),研究者使用了 DINO 和 SwAV 兩種不同方法得到的預(yù)訓(xùn)練模型。下表展示了使用四種不同方法得到預(yù)訓(xùn)練模型的平均準確率,可以看出來無論哪種方法最后的結(jié)果都很高(注:Pascal-VOC 是一個比較小的數(shù)據(jù)集,所以準確率相對低一點),并且對不同的預(yù)訓(xùn)練 backbone 具有穩(wěn)健性。