Meta-Transfer Learning for Few-Shot Learning 元遷移學習論文解讀

我之前寫過一篇元遷移學習的論文筆記,一種遷移學習和元學習的集成模型
但是本文的元遷移學習方法完全不同於上一篇論文。

Abstract

由於深度神經網絡容易對小樣本過擬合,所以元學習傾向於使用淺層神經網絡,但淺層神經網絡限制了模型的性能。本文提出了meta-transfer learning(MTL)模型,MTL模型可以採用深層神經網絡。其中,meta指的是訓練多個任務,transfer指的是爲深層神經網絡的權重學習出縮放和移動函數(scaling and shifting functions)。同時本文還將hard task meta-batch模式作爲課程學習中的課程引入了MTL。實驗結果表明,MTL在多個任務上實現了最好的性能。

Contributions

  1. 提出了meta-transfer lerning(MTL)方法,該方法綜合應用了遷移學習和元學習的優點。
  2. 將課程學習引入了元訓練過程。

1 引言

通常而言,小樣本學習方法可以被歸爲兩類:數據增強方法和基於任務的元學習。數據增強一般指通過一種策略來增加樣本數。

元學習方法比較典型的就是MAML了,MAML的任務無關的特性使得它可以應用於監督學習和無監督強化學習。但是,本文的作者認爲MAML有一些侷限性:

  • 這些方法往往需要大量的相似任務作爲元學習的輸入,這種代價是很高的
  • 每個任務都只能被複雜度較低的base learner訓練,這樣可以避免過擬合。

基於這些侷限性,作者提出了MTL方法,並將課程學習引入了元訓練中。

2 預備知識

2.1 元學習

元學習包括兩個階段:元訓練和元測試。從任務分佈p(T)p(T)中採樣出一個任務TTTT被劃分爲: 訓練集T(tr)T^{(tr)}用於優化base-learner,測試集T(te)T^{(te)}用於優化meta-learner。一個(模型)未見過的任務TunseenT_{unseen}將被用於meta-test階段,最後的評估將在Tunseen(te)T_{unseen}^{(te)}

meta-training階段,這個階段致力於在多個任務上學習出一個meta-learner。這個階段包含兩個步驟,第一個步驟是對base-learner的參數進行更新,第二個步驟是對meta-learner的參數進行更新。

meta-test階段,這個階段將會測試訓練出的Meta-learner在新任務上的拓展性能。給定TunseenT_{unseen},meta-learner θ~T\tilde{\theta}_T通過某種方法教base-learner θT\theta_T快速地適應新任務TunseenT_{unseen}

3 方法

在這裏插入圖片描述
如上圖所示,MTL模型包括三個階段:

  1. 使用大規模數據訓練一個深層神經網絡,同時將低層固定爲特徵提取器
  2. MTL爲特徵提取神經元學習出縮放和移動參數,爲了提高總的學習效果,作者使用了Hard-task meta-batch策略。
  3. 執行典型的meta-test階段。

3.1 在大規模數據上訓練深層神經網絡

作者將所有類別的數據合併起來一起用於預訓練,比如作者將64個類別每個類別所有600個樣本均作爲輸入進行訓練,從而訓練出一個分64類的分類器。

作者首先將特徵抽取器Θ\Theta(比如ResNets中的卷積層)和分類器θ\theta(比如ResNets最後的全連接層)隨機初始化,然後使用梯度下降法對它們進行優化:
[Θ;θ]=:[Θ;θ]αLD([Θ;θ]), [\Theta;\theta] =: [\Theta;\theta] - \alpha\nabla L_D([\Theta;\theta]),
其中,L指的是下面的經驗損失,
LD([Θ;θ])=1D(x,y)Dl(fΘ;θ(x),y), L_D([\Theta;\theta]) = \frac{1}{|D|}\sum_{(x,y)\in D}l(f_{\Theta;\theta}(x),y),
這個階段將學習出特徵抽取器Θ\Theta。它將在下面的元訓練和元測試階段被固定住,而學習出的分類器θ\theta將被丟棄,因爲接下來的任務中將包含不同的分類目標,比如5-class分類而不是訓練時的64-class分類。

3.2 元遷移學習(MTL)

MTL模型通過Hard-Task meta-batch訓練來優化”縮放和移動“操作(縮放和移動操作,即Scaling and Shifting (SS)可以簡潔的表示爲αX+β\alpha X+\beta)。下圖展示了通過SS和Fine-Tunning操作進行更新的區別。SS操作,表示爲ΦS1\Phi_{S_1}ΦS2\Phi_{S_2},在學習時並沒有改變固定住的Θ\Theta的值,但是Fine-Tuning操作更新的是整個Θ\Theta

在這裏插入圖片描述
下面將詳細介紹SS操作。給定一個任務T,則當前base-learner的參數θ\theta'的更新方法爲:
θθβθLT(tr)([Θ;θ],ΦS{1,2}), \theta' \leftarrow \theta - \beta \nabla_\theta L_{T^{(tr)}}([\Theta;\theta], \Phi_{S_{\{1,2\}}}),
在這個式子中,Θ\Theta沒有被更新。需要注意的是,這裏的θ\theta與前面的大規模分類器中的θ\theta並不相同。

Φ\Phi通過測試損失值TteT^{te}來優化,
ΦSi=:ΦSiγΦSiLT(te)([Θ;θ],ΦS{1,2}). \Phi_{S_i} =: \Phi_{S_i} - \gamma \nabla_{\Phi_{S_i}} L_{T^{(te)}}([\Theta;\theta'], \Phi_{S_{\{1,2\}}}).
在這步中,θ\theta的學習率與式(4)中相同:
θ=:θγθLT(te)([Θ;θ],ΦS{1,2}). \theta =: \theta - \gamma \nabla_\theta L_{T^{(te)}}([\Theta;\theta'], \Phi_{S_{\{1,2\}}}).
與式(3)相比,式(5)中的θ\theta'來自於在T(tr)T^{(tr)}的最後一輪base-learning。

接下來,我們描述一下作者如何將ΦS{1,2}\Phi_{S_{\{1,2\}}}應用於固定的神經元。

給定訓練後的Θ\Theta,它的第ll層包含KK個神經元,我們有KK對參數,分別爲權重和偏置,記作(Wi,k,bi,k){(W_{i,k},b_{i,k})}

假定XX爲輸入,我們在(W,b)(W,b)上應用{ΦS{1,2}}\{\Phi_{S_{\{1,2\}}}\}:
SS(X;W,b;ΦS{1,2})=(WΦS1)X+(b+ΦS2) SS(X;W,b;\Phi_{S_{\{1,2\}}})=(W \bigodot \Phi_{S_1})X + (b + \Phi_{S_2})

4.3 Hard task meta-batch

傳統情況下的meta-batch由隨機採樣的任務組成。作者將模型預測錯誤的樣本收集在一起重新組成一個更難的任務,然後重新訓練。這就是hard task meta-batch。

SS操作的參數通過T(te)T^{(te)}的損失進行優化。我們可以得到模型在T(te)T^{(te)}上分別對MM個類別的準確率,然後根據準確率大小進行排序。作者將學習設置成動態的在線學習,所以我們將從準確率較低的類別中重新對任務進行採樣和訓練。

4.4 算法

算法1總結了大規模深層神經網絡的訓練(第1-5行)和元-遷移學習(第6-22行)。第16-20行展示的是Hard Task meta-batch的重採樣和連續訓練階段。
在這裏插入圖片描述
算法2展示的是在單個任務上的學習過程。

在這裏插入圖片描述

5 實驗

5.1 數據集和實現細節

作者在兩個benchmarks上進行了實驗,miniImageNet 和 Fewshot-CIFAR100數據集。

  • miniImageNet有100個類別,每個類別有600個樣本,這100個類別被劃分爲:64,16,20類,分別用於meta-trianing, meta-validation和meta-test階段。

  • Fewshot-CFAR100包括100個類別,每個類別有600個樣本,每個樣本的尺寸是32×3232 \times 32。這100個類別屬於20個超類。超類的劃分爲12:4:412:4:4,分別用於訓練,驗證和測試。

**特徵抽取器Θ\Theta**使用的是ResNet-12,它包括4個殘差塊,每個殘差塊包含3個3×33 \times 3的卷積層,以及1個2×22 \times 2的最大池化層。

5.2 實驗結果

5.2.1 miniImageNet

在這裏插入圖片描述
上表展示了各個方法在miniImageNet數據集上的實驗結果。可以看到MTL+SS+Hard task meta-batch方法取得了最好的實驗結果。

5.2.2 FC100

在這裏插入圖片描述

6 結論

本文提出了MTL模型,並使用Hard task meta-batch的課程學習策略進行訓練。MTL模型獨立於任何特定的網絡,它可以被很好的進行拓展。而且Hard task meta-batch策略可以很容易地在在線迭代中使用。

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