深度學習論文筆記(增量學習)——Incremental Classifier and Representation Learning

什麼是增量學習

增量學習是指一個學習系統能不斷地從新樣本中學習新的知識,並能保存大部分以前已經學習到的知識,就和人類學習知識一樣,學習完新知識後,我們仍然記得舊知識


增量學習存在的問題


災難性遺忘(catastrophic forgetting)

神經網絡在新數據上訓練後,權重發生變化,導致神經網絡遺忘舊數據上學習到的規律,類似於背英語單詞,背了新的忘了舊的


克服災難性遺忘的策略


策略一

凍結當前神經網絡的部分權重,並且增加神經網絡的深度,讓神經網絡能夠保留學習新知識的能力。

以下爲個人對策略一的理解
淺層神經網絡會保留舊數據上學習的知識,而深層神經網絡則在舊知識的基礎上繼續學習新知識,假設利用殘差結構連接深層網絡的輸出與淺層網絡的輸出,對於舊知識,只需要讓深層網絡的輸出近似於0即可完全保留舊知識,這和殘差結構的出發點類似。


策略二

利用舊數據與新數據對網絡進行訓練。

以下爲個人對策略二的理解
策略二更像是一種微調,如果僅僅利用新數據訓練網絡,那麼網絡的確很有可能遺忘舊知識,提供舊數據有助於網絡在學習新知識的前提下抵抗遺忘。


論文主要工作

針對圖像分類網絡的增量學習,即讓網絡在保留舊類別區分能力的基礎上,區分新類別,提出了一種名爲iCaRL的訓練策略,該算法可以讓分類器(例如softmax分類器)與特徵提取器(例如CNN)同時學習。

論文提出的訓練策略並不針對某個CNN框架,因此可以自由選擇CNN框架。另外,CNN框架的不同並不能解決災難性遺忘。


網絡架構細節

可以自由選擇CNN架構,CNN架構之後接一個激活函數爲sigmoidsigmoid的全連接層LL,作爲分類器,全連接層的輸入(特徵向量),均進行了L2L2歸一化,L2歸一化有助於網絡收斂。使用多標籤分類損失函數,多標籤分類損失函數其實就是極大似然估計,具體可查看我是鏈接


算法細節


名詞解釋

  • examplarexamplar:可以看成一個容器,一個examplarexamplar保存了某一類的部分訓練數據
  • KK:K即爲存儲訓練數據的上限,假設目前有mm類,那麼每一個examplarexamplar可以存儲的訓練數據爲Km\frac{K}{m}

總體流程

iCaRL算法的總體流程如下:
在這裏插入圖片描述
每個函數的具體解釋如下:
updaterepresentationupdaterepresentation函數:用於更新CNN與全連接層分類器的參數。
reduceexemplarsetreduceexemplarset函數:用於減少舊類的examplarexamplar的容量。
constructexemplarsetconstructexemplarset函數:用於構造新類的examplarexamplar

整個算法的流程總結一下,即爲:

  1. 添加新類別數據後,訓練CNN與全連接層分類器
  2. 減少舊類別的examplarexamplar的容量,去除部分訓練數據
  3. 構造新類別的examplarexamplar,存儲部分新類別的訓練數據

examplarexamplar存儲數據會用於模型的訓練,幫助模型抵抗遺忘


模型訓練

updaterepresentationupdaterepresentation函數實現
在這裏插入圖片描述
該函數需要的參數爲

  1. 新類別數據
  2. examplarexamplar集合
  3. CNN與全連接層分類器

具體步驟如下:

  1. 合併examplarexamplar集合以及新類別數據集,構造訓練數據集
  2. 存儲訓練前,模型對於訓練數據的預測結果(迷之操作,g(xi)g(x_i)表示CNN+全連接層分類器的輸出向量,gy(xi)g_y(x_i)表示輸出向量的第yy維的值)
  3. 訓練模型

損失函數使用多標籤分類損失函數,分爲分類以及蒸餾兩部分,分類loss儘可能的將含有新類別的圖像分對類,而蒸餾loss儘可能的將含有舊類別的圖像分對類(訓練數據集中包含有舊數據)。

如果不使用蒸餾loss,對於舊類別數據,模型只關注不讓其劃分到新類別,但是不關注其是否分對類,這會在一定程度上造成遺忘,雖說模型不會將舊數據劃分到新類別,但是模型可能逐漸遺忘如何區分舊類別數據,個人認爲蒸餾loss的存在有助於模型抵抗遺忘

同時使用分類loss與蒸餾loss訓練模型,對於新舊數據,模型都會儘可能將其分對類。


examplarexamplar管理

訓練完模型後,需要對examplarexamplar集合進行調整,examplarexamplar集合的作用有兩個

  1. 幫助模型抵抗遺忘(上面已經介紹)
  2. 預測分類(在模型預測模塊介紹)

examplarexamplar的管理由reduceexemplarsetreduceexemplarset函數與constructexemplarsetconstructexemplarset函數實現。


constructexemplarsetconstructexemplarset函數

在這裏插入圖片描述
採樣的標準:每次選擇離訓練數據類別中心最接近的圖像樣本,這和之後的分類有關。
按照採樣的先後順序構建新類別的examplarexamplar(即PP),在PP中越靠前位置的樣本組成的集合,離類別中心越接近


reduceexemplarsetreduceexemplarset函數

在這裏插入圖片描述
examplarexamplar中的樣本要遵循的原則——樣本集合的中心儘可能的接近類別集合,依據進入examplarexamplar的順序,靠前位置樣本組成的集合,比靠後位置樣本組成的集合,離類別中心更接近,因此,每次都去除尾部一定數量的樣本,讓examplarexamplar的大小不超過Km\frac{K}{m}KK爲存儲空間上限,mm爲當前類別數。


模型預測

常見的神經網絡分類模型,都是分類器(例如softmax分類器)與特徵提取器(例如CNN)一起學習,但是iCaRL是分類器與特徵提取器分開學習,這點有點反直覺,iCaRL選擇的分類器爲最近鄰分類器,分類過程如下:
在這裏插入圖片描述
由於使用最近鄰分類器,所以examplarexamplar中,A類別的樣本集合中心應該儘可能接近A類別訓練數據的中心,這也是構建examplarexamplar的出發點。


實驗


與其他方法的比較

論文選取了三個baseline

  1. Finetuning:在之前學習的基礎上添加一個新的類別分支,利用新數據微調網絡
  2. Fixed representation:第一次增量學習訓練完畢後,凍結特徵提取器的權重,只會訓練分類器新分支的權重,新分支訓練完畢後,凍結新分支的權重
  3. Learning without Forgetting模型

iCaRL與上述三個baseline都使用相同的CNN(ResNet),一次增量學習即讓學習器多學習NN類,論文比對了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採取了三個策略

  1. 使用最近鄰分類器
  2. 使用examplarexamplar集合以及新類別數據訓練模型
  3. 使用蒸餾loss

爲了探究上述三個策略在抵抗遺忘方面的作用,論文設計了三個比對實驗

  1. hybrid1hybrid1:使用策略2、3,使用全連接層分類器
  2. hybrid2hybrid2:使用策略1、2,不使用蒸餾loss
  3. hybrid3hybrid3:僅使用策略1
  4. iCaRLiCaRL:使用策略1、2、3

多次增量學習後,模型的平均準確率如下:
在這裏插入圖片描述
iCaRLiCaRL vc hybrid1hybrid1:可以康出使用最近鄰分類器更具有優勢
iCaRLiCaRL vc hybrid2hybrid2:當N取值較小(例如2)時,蒸餾loss似乎無法有效提高模型準確率,當N取值較大(N>2)時,蒸餾loss有助於抵抗遺忘
hybrid3hybrid3 vs LwF.MC:使用examplarexamplar集合與新數據一起訓練模型一定程度上有助於模型抵抗遺忘


個人理解

本論文的分類準確率提升來源於兩個方面

  1. 使用新數據與部分舊數據微調網絡
  2. 使用更爲魯棒的分類算法——最近鄰

從論文結果中可以看到,使用最近鄰進行分類的架構比使用全連接層進行分類的架構準確率提升了幾個百分點,個人認爲這屬於分類器的魯棒性帶來的性能提升。

對新數據進行訓練時,特徵提取器(CNN)的輸出可能與舊數據的輸出發生非常大的改變,如果分類器對於輸入的擾動過於敏感,可能會導致舊數據的遺忘,而最近鄰算法魯棒性恰好非常優越。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章