從因果關(guān)系來看小樣本學習丨NeurIPS 2020

極市導讀
?本文提出了一種因果干預的新分類器,它具有應用廣泛、無需額外訓練步驟、在缺少預訓練數(shù)據(jù)集時仍然大幅提高性能等三大優(yōu)勢。>>加入極市CV技術(shù)交流群,走在計算機視覺的最前沿
本文主要介紹我們組被NeurIPS 2020接受的論文Interventional Few-Shot Learning。論文的代碼會在Github上開源:
yue-zhongqi/ifslgithub.com
我們的這篇工作,根據(jù)小樣本學習當中的因果關(guān)系,提出了一種新的基于因果干預的分類器IFSL,去除了預訓練帶來的摻雜效果,在各種方法上取得了穩(wěn)定的提升。主要的優(yōu)勢有:
廣泛適用于各種基于微調(diào)(fine-tune)或是元學習(meta-learning)的方法,即插即用; 無需額外的訓練步驟,原來模型咋訓練,加上IFSL還是咋訓練; 如果預訓練數(shù)據(jù)集不公開,比如一些商用數(shù)據(jù)集只公開分類器和特征提取器,那么元學習的方法就不適用了,只能用微調(diào)。在這種情況下,IFSL還是可以大幅提高性能。
接下來我會具體的來介紹小樣本學習和我們的IFSL。章節(jié)導視:
想看小樣本學習介紹的請戳一 因果關(guān)系分析的請戳二 直接看實現(xiàn)方法的請戳三 看結(jié)果的請戳四
一、小樣本學習的介紹
2019年,Open AI Five以碾壓的表現(xiàn)戰(zhàn)勝了Dota2世界冠軍戰(zhàn)隊OG,然而在這令人驚嘆的表現(xiàn)背后,是12.8萬個CPU和256塊P100數(shù)個月訓練的結(jié)果,相當于不間斷練習了45000年的游戲。很顯然,目前一個魯棒的機器學習模型還難以離開大量的數(shù)據(jù)、長時間的訓練以及高昂的訓練成本。而小樣本學習就致力于通過極少的訓練數(shù)據(jù)(1-5個樣本/類)來實現(xiàn)模型的泛化。
那么,如何進行小樣本學習呢?這一點我們可以觀察人是如何快速學習的。例如一個人玩策略游戲帝國時代很厲害,那么如果去學習諸如星際爭霸的其他策略游戲,就比較容易上手,因為可以運用以前的游戲經(jīng)驗,一通百通。同樣的,對于機器而言,在少量樣本上快速泛化的核心,就是借助先驗知識。
預訓練是(Pre-training)大家都熟悉且非常有效的獲取先驗知識的方法。具體就是在大型數(shù)據(jù)集上,學習一個強大的神經(jīng)網(wǎng)絡作為特征提取器,例如CV里面常見的在ImageNet上預訓練的ResNet網(wǎng)絡,或是NLP里面在Wikipedia上訓練的BERT,都代表一種特征表達的先驗知識。在預訓練基礎上,我們只需在樣本數(shù)量少的目標任務中,微調(diào)部分(例如只訓練最后一層fc分類器)或者全部網(wǎng)絡的參數(shù),便得到了一個可以解決小樣本學習問題的模型。
預訓練相當于給了小樣本學習一個好的起點,就像一個人在上課前預習了大量的知識點。不過想要更上一層樓,還需要有效的學習方法。元學習(meta learning)的目的就是找到這種方法。具體來說,我們可以從預訓練集中,每次采樣出來一個“沙盒”版小樣本任務,例如選5個類,每個類選5張圖片作為訓練集(support set),再選15張作為測試集(query set),然后我們要求模型在support set訓練的結(jié)果,能夠在query set上面取得好的表現(xiàn)。其實這種學習策略在我們身邊隨處可見,例如準備考試的時候,我們會提前做一些模擬測試,了解題型,規(guī)劃答題節(jié)奏等等,這就是一種元學習。在小樣本學習的實際操作中,我們可以使用元學習訓練一個模型的初始化參數(shù)(MAML),或是一個分類器參數(shù)的生成網(wǎng)絡(LEO)等等。通過元學習得到的知識,就構(gòu)成了一種學習方法的先驗知識,在預訓練的網(wǎng)絡之上,進一步提升小樣本學習的表現(xiàn)。
綜上所述,小樣本學習的解決思路,可以用下面這張圖來概括:我們先在一個大的數(shù)據(jù)集 上面預訓練一個特征提取網(wǎng)絡 ,之后我們既可以直接使用 在每一個小樣本任務中微調(diào)(紅色方塊的Fine-Tuning); 也可以進一步使用元學習(Meta-Learning),將 拆成一個個由support set 和query set 組成的沙盒任務 ,訓練高效的學習方法 ;元學習結(jié)束以后,我們就可以用這種高效的學習方法,在小樣本學習的任務中進行微調(diào)(綠色方塊的Fine-Tuning)。

二、亦正亦邪的預訓練
從上一章的介紹中不難看出,預訓練是小樣本學習中一個核心的環(huán)節(jié),無論是基于微調(diào)的,還是基于元學習的方法,都以預訓練為開始。那么從常理來說,更強的預訓練,應該會帶來更好的小樣本學習的表現(xiàn),例如在現(xiàn)有文獻中,使用更深層的神經(jīng)網(wǎng)絡架構(gòu)WRN-28-10的微調(diào)結(jié)果,往往會比相對較淺的ResNet-10表現(xiàn)好很多。然而我們在微調(diào)的實驗中發(fā)現(xiàn)(見左邊的直方圖),雖然平均WRN-28-10(strong )更好,但當query set和support set區(qū)別很大的時候,結(jié)果是恰恰相反的,淺層的ResNet-10反而表現(xiàn)更佳!這是為什么呢?

這張圖的右邊是一個 和 區(qū)別很大的例子,其中預訓練時候見過的草的顏色是support set里的一個誤導因素,分類器容易踩坑,以草的顏色(見過)而非動物本身(沒見過)作為分類依據(jù)。而越強的預訓練模型,這些見過的草,相比于沒見過的動物,就會產(chǎn)生越魯棒的特征,對于分類器就更加誤導了,聰明反被聰明誤。為什么這個問題一直沒有被發(fā)現(xiàn)呢?其實就是因為被現(xiàn)有方法基于隨機取樣后平均的評估策略所掩蓋了。我們的工作也首次為這個現(xiàn)象提供了解釋。
具體來說,剛才講的這個悖論是由小樣本學習當中的因果關(guān)系造成的。預訓練在帶來豐富的先驗知識的同時,也成了學習過程中的一個混雜因子(confounder),使得分類器難以找到樣本特征和樣本標注之間真實的因果關(guān)系。我們用一張因果圖來具體說明。

: 這里 代表預訓練的先驗知識, 代表圖片的特征表示,箭頭的意思是,我們用預訓練得到的特征提取器,獲得樣本的特征. : 其中C代表一個樣本X在預訓練數(shù)據(jù)流形上面的投影;一個例子是eigenface,我們將高維的訓練集(),通過PCA找到這些圖片的基(也就是eigenface),這樣一張人臉圖片(),就可以被表示成這些基的線性組合,而線性組合的系數(shù)就是 。類似的現(xiàn)象在深度學習的訓練中也會出現(xiàn),具體可以參考我們論文里面的引用。 : 當我們用特征 訓練一個分類器預測標簽 的時候,分類器會不可避免的使用 里面的信息;也就是說 是特征里面低維度信息的影響,而 是 里沒有包含的冗余信息帶來的影響。
在這個因果圖中,注意到 是 和 的共因( ),這樣 被叫做 和 的混雜因子,從而導致觀測到的 ,被混雜的關(guān)系 污染,而不能反映 和 間真實的因果關(guān)系了,剛才分類器被草的顏色迷惑的原因,其實就是分類器使用了 里“草”的語義信息,作為分類獅子的依據(jù)。
那么當存在混雜因子的時候,我們應該如何學習 真實的因果關(guān)系呢?這就要用到干預(intervention),即 。干預 會切斷因果圖中所有指向 的箭頭(如下圖),這樣之前產(chǎn)生混雜的這條路 被堵住了,我們就能安全的學習想要的因果關(guān)系了。

我們的這篇工作使用后門調(diào)整(backdoor adjustment)來實現(xiàn) ,我們的因果圖對應的后門調(diào)整是:
具體來說,就是對預訓練的知識 進行分層(見圖中的 ),每一層有自己的分類器 ,然后把每層分類器的結(jié)果通過先驗概率 平均起來。關(guān)于混雜因子、干預和后門調(diào)整的具體介紹,大家可以參考一下我們組王譚寫的:
https://zhuanlan.zhihu.com/p/111306353
三、基于干預的去混雜
上一章講到預訓練在帶來特征表達的先驗知識的同時,也成為了混雜因子而迷惑了分類器的訓練,而我們打算通過對預訓練知識分層,然后用后門調(diào)整來找到 和 之間真實的因果關(guān)系。這一章我們會來講具體如何實現(xiàn)分層和后門調(diào)整。
我們是從預訓練的神經(jīng)網(wǎng)絡所自帶的兩個屬性來尋找分層的靈感的:
1)特征維度,例如ResNet-10是512維的特征,每一個維度代表CNN里面的一個通道,對應了圖片中的一些視覺信息;
2)預訓練的類別,例如在miniImageNet上預訓練所使用的64個類,那么預訓練所得到的64類分類器,就可以看作對預訓練數(shù)據(jù)集知識的一種蒸餾(knowledge distillation)。
基于這些靈感,我們提出了三種不同的實現(xiàn)方案,分別是基于特征的調(diào)整(feature-wise adjustment),基于類別的調(diào)整(class-wise adjustment)以及兩種結(jié)合起來(combined adjustment)。具體這三種調(diào)整是如何對應后門調(diào)整公式的,大家可以參考論文第三章,這里我只是講一下具體的實現(xiàn)。
可以看到,我們基于干預的這個方法只改變了分類器的架構(gòu),因此可以普遍的加入基于微調(diào)或元學習的小樣本學習方法,并且無需增加額外的訓練步驟。
四、實驗結(jié)果
【普遍適用,漲點明顯】因為我們的方法是在分類器層面的改動,所以可以普遍的加入到各種微調(diào)和元學習的方法當中。我們在常用的微調(diào)方法(linear,cosine和k-NN),以及5種不同思路的元學習方法上面做了大量的驗證,在miniImageNet和tieredImageNet上面取得了普遍的提高。

【去除預訓練的混雜】我們提出了一種新的Hardness-specific Acc來診斷小樣本學習。對于每一個測試樣本,根據(jù)它和訓練集support set的相似程度,我們定義了一個難度系數(shù),這樣我們可以觀察模型在不同測試樣本難度下的表現(xiàn),而越難的樣本就越容易在上面被預訓練的知識誤導。下圖展示了微調(diào)當中baseline和ifsl的hardness-specific acc,可以看到IFSL(實線)在各個難度下都超過了baseline(虛線),說明起到了去除混雜的作用。更詳細的分析可以參考論文。

【幫助模型聚焦物體】模型在做預測的時候,是根據(jù)圖片上的哪一部分呢?因此我們提出了CAM-Acc:在一張圖片上先計算Grad-CAM分數(shù)(越高代表模型越關(guān)注這一部分),CAM-Acc是Grad-CAM分數(shù)高于0.9的區(qū)域中,在物體bounding box內(nèi)部的比重。我們來看一下Grad-CAM可視化的結(jié)果,以及CAM-Acc的表現(xiàn)。通過可視化和CAM-Acc的分數(shù),可以看到IFSL的模型的確能夠多注意物體本身。當然也有失敗的時候,比如看到當物體太小的時候(螞蟻),baseline和IFSL都只能依賴背景中的context去做預測了。

結(jié)語
預訓練的先驗知識,是近些年來小樣本學習分數(shù)快速提升的重要原因。我們的這篇工作,其實是從因果的角度分析了預訓練對于學習一個分類模型的影響,揭示了基于 的分類器會被先驗知識混雜,想當然的做出預測;而基于干預 的去混雜方法,就是在一個不熟悉的小樣本學習任務中,平衡先驗知識的影響,做到三思而后行。在這個思路下,我們提出了IFSL分類器,簡單、普適且有效。
事實上,這種對先驗知識的處理方法,可以被應用于任何使用預訓練的任務當中,因為下游任務中的訓練數(shù)據(jù),比起大規(guī)模預訓練來說,都相當于小樣本學習了。也歡迎大家參考我們搭建的因果框架,在使用到預訓練的不同場景中,嘗試去除預訓練知識所帶來的摻雜。
最后附上我們論文的引用:
@inproceedings{yue2020interventional,
??title={Interventional?Few-Shot?Learning},
??author={Yue,?Zhongqi?and?Zhang,?Hanwang?and?Sun,?Qianru?and?Hua,?Xian-Sheng},
??booktitle=?{NeurIPS},
??year={2020}
}
也推薦一波我們組凱爺在因果關(guān)系上非常solid的研究:
推薦閱讀

