從因果關系來看小樣本學習

本文主要介紹一篇被NeurIPS 2020接受的論文《Interventional Few-Shot Learning》。
這篇工作根據(jù)小樣本學習當中的因果關系,提出了一種新的基于因果干預的分類器IFSL,去除了預訓練帶來的摻雜效果,在各種方法上取得了穩(wěn)定的提升。
主要的優(yōu)勢有:
廣泛適用于各種基于微調(diào)(fine-tune)或是元學習(meta-learning)的方法,即插即用;
無需額外的訓練步驟,原來模型咋訓練,加上IFSL還是咋訓練;
如果預訓練數(shù)據(jù)集不公開,比如一些商用數(shù)據(jù)集只公開分類器和特征提取器,那么元學習的方法就不適用了,只能用微調(diào)。在這種情況下,IFSL還是可以大幅提高性能。

論文鏈接:https://arxiv.org/pdf/2009.13000.pdf
Github開源地址:https://github.com/yue-zhongqi/ifsl
論文第一作者:岳中琪,目前是阿里巴巴和新加坡南洋理工大學聯(lián)合博士項目在讀2年級,在MReal實驗室進行遷移學習和因果關系方面的研究,導師是張含望老師。本科是由新加坡企業(yè)獎學金全額贊助、在南洋理工大學畢業(yè)。
小樣本學習的介紹
2019年,Open AI Five以碾壓的表現(xiàn)戰(zhàn)勝了Dota2世界冠軍戰(zhàn)隊OG,然而在這令人驚嘆的表現(xiàn)背后,是12.8萬個CPU和256塊P100數(shù)個月訓練的結果,相當于不間斷練習了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訓練的結果,能夠在query set上面取得好的表現(xiàn)。
其實這種學習策略在我們身邊隨處可見,例如準備考試的時候,我們會提前做一些模擬測試,了解題型,規(guī)劃答題節(jié)奏等等,這就是一種元學習。在小樣本學習的實際操作中,我們可以使用元學習訓練一個模型的初始化參數(shù)(MAML),或是一個分類器參數(shù)的生成網(wǎng)絡(LEO)等等。
通過元學習得到的知識,就構成了一種學習方法的先驗知識,在預訓練的網(wǎng)絡之上,進一步提升小樣本學習的表現(xiàn)。
綜上所述,小樣本學習的解決思路,可以用下面這張圖來概括:
我們先在一個大的數(shù)據(jù)集
上面預訓練一個特征提取網(wǎng)絡
,之后我們既可以直接使用
在每一個小樣本任務中微調(diào)(紅色方塊的Fine-Tuning);
也可以進一步使用元學習(Meta-Learning),將
拆成一個個由support set
和query set
組成的沙盒任務
,訓練高效的學習方法
;
元學習結束以后,我們就可以用這種高效的學習方法,在小樣本學習的任務中進行微調(diào)(綠色方塊的Fine-Tuning)。

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

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

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

我們的這篇工作使用后門調(diào)整(backdoor adjustment)來實現(xiàn)
,我們的因果圖對應的后門調(diào)整是:

進行分層(見圖中的
),每一層有自己的分類器
,然后把每層分類器的結果通過先驗概率
平均起來。基于干預的去混雜
預訓練在帶來特征表達的先驗知識的同時,也成為了混雜因子而迷惑了分類器的訓練,而我們打算通過對預訓練知識分層,然后用后門調(diào)整來找到
和
之間真實的因果關系。下面講具體如何實現(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)以及兩種結合起來(combined adjustment)。具體這三種調(diào)整是如何對應后門調(diào)整公式的,大家可以參考論文第三章,這里我只是講一下具體的實現(xiàn)。
基于特征的調(diào)整:將特征向量
劈成
等份,在每一份對應的維度里學一個分類器,最終
是把
個分類器softmax后的概率算個平均。例如把ResNet-10的512維分成4份,每128維為一份,學習4個分類器;基于類別的調(diào)整:首先我們在預訓練的
個類中,各自算一個平均特征
,即把所有屬于這個類的圖片特征平均一下;對于任務當中的一個樣本特征
,我們用預訓練的分類器算出這個樣本屬于
個類的概率
,使用
和
,我們能算出來一個新的特征向量
;然后我們把原始特征
和這個
拼起來,用來訓練分類器,注意這里只訓練了一個分類器,不過分類器輸入的維度是
維度的二倍;結合調(diào)整:相當于先做基于類別的調(diào)整,再做基于特征的調(diào)整。還是以ResNet-10和N=4為例子,對于每一個樣本
,我們算出
以后,把
和
各自劈成4份,然后一一對應的拼起來(比如
的前128維拼上
的前128維),然后訓練4個分類器,
同樣是把4個分類器的輸出概率算個平均。
可以看到,我們基于干預的這個方法只改變了分類器的架構,因此可以普遍的加入基于微調(diào)或元學習的小樣本學習方法,并且無需增加額外的訓練步驟。
實驗結果
4.1?普遍適用,漲點明顯
因為我們的方法是在分類器層面的改動,所以可以普遍的加入到各種微調(diào)和元學習的方法當中。我們在常用的微調(diào)方法(linear,cosine和k-NN),以及5種不同思路的元學習方法上面做了大量的驗證,在miniImageNet和tieredImageNet上面取得了普遍的提高。

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

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

結語
預訓練的先驗知識,是近些年來小樣本學習分數(shù)快速提升的重要原因。
我們的這篇工作,其實是從因果的角度分析了預訓練對于學習一個分類模型的影響,揭示了基于
的分類器會被先驗知識混雜,想當然的做出預測;
而基于干預
的去混雜方法,就是在一個不熟悉的小樣本學習任務中,平衡先驗知識的影響,做到三思而后行。在這個思路下,我們提出了IFSL分類器,簡單、普適且有效。
事實上,這種對先驗知識的處理方法,可以被應用于任何使用預訓練的任務當中,因為下游任務中的訓練數(shù)據(jù),比起大規(guī)模預訓練來說,都相當于小樣本學習了。
來源:https://zhuanlan.zhihu.com/p/260876366

