文章目錄
什麼是增量學習
增量學習是指一個學習系統能不斷地從新樣本中學習新的知識,並能保存大部分以前已經學習到的知識,就和人類學習知識一樣,學習完新知識後,我們仍然記得舊知識
增量學習存在的問題
災難性遺忘(catastrophic forgetting)
神經網絡在新數據上訓練後,權重發生變化,導致神經網絡遺忘舊數據上學習到的規律,類似於背英語單詞,背了新的忘了舊的
克服災難性遺忘的策略
策略一
凍結當前神經網絡的部分權重,並且增加神經網絡的深度,讓神經網絡能夠保留學習新知識的能力。
以下爲個人對策略一的理解
淺層神經網絡會保留舊數據上學習的知識,而深層神經網絡則在舊知識的基礎上繼續學習新知識,假設利用殘差結構連接深層網絡的輸出與淺層網絡的輸出,對於舊知識,只需要讓深層網絡的輸出近似於0即可完全保留舊知識,這和殘差結構的出發點類似。
策略二
利用舊數據與新數據對網絡進行訓練。
以下爲個人對策略二的理解
策略二更像是一種微調,如果僅僅利用新數據訓練網絡,那麼網絡的確很有可能遺忘舊知識,提供舊數據有助於網絡在學習新知識的前提下抵抗遺忘。
論文主要工作
針對圖像分類網絡的增量學習,即讓網絡在保留舊類別區分能力的基礎上,區分新類別,提出了一種名爲iCaRL的訓練策略,該算法可以讓分類器(例如softmax分類器)與特徵提取器(例如CNN)同時學習。
論文提出的訓練策略並不針對某個CNN框架,因此可以自由選擇CNN框架。另外,CNN框架的不同並不能解決災難性遺忘。
網絡架構細節
可以自由選擇CNN架構,CNN架構之後接一個激活函數爲的全連接層,作爲分類器,全連接層的輸入(特徵向量),均進行了歸一化,L2歸一化有助於網絡收斂。使用多標籤分類損失函數,多標籤分類損失函數其實就是極大似然估計,具體可查看我是鏈接。
算法細節
名詞解釋
- :可以看成一個容器,一個保存了某一類的部分訓練數據
- :K即爲存儲訓練數據的上限,假設目前有類,那麼每一個可以存儲的訓練數據爲。
總體流程
iCaRL算法的總體流程如下:
每個函數的具體解釋如下:
函數:用於更新CNN與全連接層分類器的參數。
函數:用於減少舊類的的容量。
函數:用於構造新類的。
整個算法的流程總結一下,即爲:
- 添加新類別數據後,訓練CNN與全連接層分類器
- 減少舊類別的的容量,去除部分訓練數據
- 構造新類別的,存儲部分新類別的訓練數據
存儲數據會用於模型的訓練,幫助模型抵抗遺忘
模型訓練
由函數實現
該函數需要的參數爲
- 新類別數據
- 集合
- CNN與全連接層分類器
具體步驟如下:
- 合併集合以及新類別數據集,構造訓練數據集
- 存儲訓練前,模型對於訓練數據的預測結果(迷之操作,表示CNN+全連接層分類器的輸出向量,表示輸出向量的第維的值)
- 訓練模型
損失函數使用多標籤分類損失函數,分爲分類以及蒸餾兩部分,分類loss儘可能的將含有新類別的圖像分對類,而蒸餾loss儘可能的將含有舊類別的圖像分對類(訓練數據集中包含有舊數據)。
如果不使用蒸餾loss,對於舊類別數據,模型只關注不讓其劃分到新類別,但是不關注其是否分對類,這會在一定程度上造成遺忘,雖說模型不會將舊數據劃分到新類別,但是模型可能逐漸遺忘如何區分舊類別數據,個人認爲蒸餾loss的存在有助於模型抵抗遺忘
同時使用分類loss與蒸餾loss訓練模型,對於新舊數據,模型都會儘可能將其分對類。
管理
訓練完模型後,需要對集合進行調整,集合的作用有兩個
- 幫助模型抵抗遺忘(上面已經介紹)
- 預測分類(在模型預測模塊介紹)
的管理由函數與函數實現。
函數
採樣的標準:每次選擇離訓練數據類別中心最接近的圖像樣本,這和之後的分類有關。
按照採樣的先後順序構建新類別的(即),在中越靠前位置的樣本組成的集合,離類別中心越接近
函數
中的樣本要遵循的原則——樣本集合的中心儘可能的接近類別集合,依據進入的順序,靠前位置樣本組成的集合,比靠後位置樣本組成的集合,離類別中心更接近,因此,每次都去除尾部一定數量的樣本,讓的大小不超過,爲存儲空間上限,爲當前類別數。
模型預測
常見的神經網絡分類模型,都是分類器(例如softmax分類器)與特徵提取器(例如CNN)一起學習,但是iCaRL是分類器與特徵提取器分開學習,這點有點反直覺,iCaRL選擇的分類器爲最近鄰分類器,分類過程如下:
由於使用最近鄰分類器,所以中,A類別的樣本集合中心應該儘可能接近A類別訓練數據的中心,這也是構建的出發點。
實驗
與其他方法的比較
論文選取了三個baseline
- Finetuning:在之前學習的基礎上添加一個新的類別分支,利用新數據微調網絡
- Fixed representation:第一次增量學習訓練完畢後,凍結特徵提取器的權重,只會訓練分類器新分支的權重,新分支訓練完畢後,凍結新分支的權重
- Learning without Forgetting模型
iCaRL與上述三個baseline都使用相同的CNN(ResNet),一次增量學習即讓學習器多學習類,論文比對了N=2,5,10,20,50的情況,論文在CIFAR100以及ImageNet數據集上比對了這幾個方法
CIFAR-100數據集的結果如下:
在ImageNet數據集的結果如下:
學習次數的越多,網絡的性能表現越糟糕,這在一定程度上表明模型存在遺忘現象,從上圖可知,iCaRL訓練的網絡,性能最號,但是無法判斷相比於baseline,iCaRL是否可以更好的抵抗遺忘。
爲了進一步顯示模型是否出現遺忘,作者還比較了iCaRL與三個baseline在CIFAR-100上的混淆矩陣(一次增量學習多學習10類),結果如下:
iCaRL存在一個明顯的對角線,分類性能最好,LwF.MC偏向於預測新的類別,這在一定程度上說明模型出現了遺忘,fixed representation偏向於預測舊的類別,這很好理解,因爲特徵提取器一次增量學習後就被固定了,對於新類別,很難提取出足夠區分度的特徵,finetuning
的遺忘現象最爲嚴重。
其他實驗
iCaRL採取了三個策略
- 使用最近鄰分類器
- 使用集合以及新類別數據訓練模型
- 使用蒸餾loss
爲了探究上述三個策略在抵抗遺忘方面的作用,論文設計了三個比對實驗
- :使用策略2、3,使用全連接層分類器
- :使用策略1、2,不使用蒸餾loss
- :僅使用策略1
- :使用策略1、2、3
多次增量學習後,模型的平均準確率如下:
vc :可以康出使用最近鄰分類器更具有優勢
vc :當N取值較小(例如2)時,蒸餾loss似乎無法有效提高模型準確率,當N取值較大(N>2)時,蒸餾loss有助於抵抗遺忘
vs LwF.MC:使用集合與新數據一起訓練模型一定程度上有助於模型抵抗遺忘
個人理解
本論文的分類準確率提升來源於兩個方面
- 使用新數據與部分舊數據微調網絡
- 使用更爲魯棒的分類算法——最近鄰
從論文結果中可以看到,使用最近鄰進行分類的架構比使用全連接層進行分類的架構準確率提升了幾個百分點,個人認爲這屬於分類器的魯棒性帶來的性能提升。
對新數據進行訓練時,特徵提取器(CNN)的輸出可能與舊數據的輸出發生非常大的改變,如果分類器對於輸入的擾動過於敏感,可能會導致舊數據的遺忘,而最近鄰算法魯棒性恰好非常優越。