TAFE-Net: Task-Aware Feature Embeddings for Low Shot Learning 論文筆記

前言

在目前一些零樣本或小樣本學習任務中,通常將圖像映射到embedding空間,然後利用feature embedding進行後續的操作。這樣就存在一個問題,任務間共享的是通用的feature embedding,那麼就會存在feature embedding可能並不適用於某些任務這樣的情況,就會導致不好的結果。

本文基於這一點,提出了一種task-aware feature embedding network(TAFF-Net),它的基本思想是特徵的動態表示,利用一個基於元學習的參數生成器將通用圖像特徵轉換爲task-ware feature embedding(TAFEs)。
在這裏插入圖片描述
上圖是對TAFE的說明,TAFE的意思其實就是,同樣的圖像在不同的任務中可能會有不同的embedding,TAFE與給定任務的語義是相適應的,因此在測試時能夠滿足新任務的需要。特徵轉換是通過一個task-aware元學習器實現的,它爲feature embedding層生成參數,這樣的話生成的embedding也是task-aware。通過使用TAFE,可以採用一個簡單的二值分類器來學習一個獨立於任務的線性邊界,從而將正樣本與負樣本分隔開,並泛化到新任務中。

本文還提出了兩種方法以解決遇到的挑戰:

  • 訓練任務的數量有限。爲了解決這個問題,本文利用基於元學習的embedding loss將task embedding和TAFE結合起來,由此提升了跨任務的泛化能力;
  • 參數生成的複雜性。在生成參數時需要從低維task embedding中預測大量的權值,這是非常複雜的。因此,利用因式分解將權值分解爲低維的特定於任務的權值,和高維的在所有任務間共享的靜態權值。

方法實現

1. TAFE-Net模型

在這裏插入圖片描述
上圖是TAFE-Net模型的結構,它由兩個子網構成:task-aware元學習器GG和預測網絡FFGG以任務描述tTt \in T(word2vec編碼或圖像樣本)作爲輸入,然後爲FF中的特徵層生成權值。對於一個輸入圖像xXx \in XFF的輸出爲:
在這裏插入圖片描述
yYy \in Y是一個二值標籤,它說明輸入圖像xx是否與tt相兼容,也就是說判斷xx是否屬於任務tt

具體來說就是,採用一個在ImageNet上經過預訓練的特徵提取器,用它生成輸入圖像的通用特徵,然後將這些通用特徵送入一系列動態特徵層(dynamic featur layer)中(動態特徵層的參數θt\theta_t是由G(t)G(t)生成的),那麼動態特徵層的輸入就是TAFE(task-aware feature embedding),也就是說同樣一個圖像,它的feature embedding在不同的tt中可能是是不同的。可以看到,雖然沒有直接將tt作爲FF的輸入,但tt卻控制着FF中特徵層的參數,從而進一步將任務信息與圖像的feature embedding結合起來。

FF中有一個二值分類器,它以TAFE作爲輸入,進而學習一個獨立於任務的決策邊界。當需要多個類的預測值時,就可以利用F(x)F(x)在不同tt上的預測值作爲概率分數。

GGη\eta進行參數化,它包括一個embedding網絡T(t)T(t)和一系列權值生成器gig_iT(t)T(t)是爲了生成task embedding ete_t;而gi,i={1...K}g_i,i=\lbrace1...K\rbrace是用來在相同的task embedding ete_t的條件下,爲FF中的KK個動態特徵層生成參數。

2. 權值的分解

生成TAFE的特徵層可以是卷積層也可以是全連接層,爲了生成特徵層的權值,需要將gig_i的輸出維度與第ii個特徵層的權值尺度相匹配。但是,通常來說權值的數量比任務數要多得多,因此很難從少量任務樣本中學習權值生成。而且,gg的參數化會消耗很大一部分存儲空間。由此,本文提出一種權值分解機制,即沿着每個全連接層的輸出維度和卷積層的輸出通道維數進行權值分解。

卷積層的權值分解

給定FF中第ii個特徵層的輸入張量xiRw×h×cinx^i \in \Bbb R^{w\times h\times c_{in}},它的權值是WiRk×k×cin×coutW^i \in \Bbb R^{k\times k\times c_{in}\times c_{out}}kk是卷積核大小,cinc_{in}coutc_{out}分別是輸入和輸出的通道數),偏差是biRcoutb^i \in \Bbb R^{c_{out}},那麼卷積層的輸出xi+1Rw×h×coutx^{i+1}\in \Bbb R^{w^{'}\times h^{'} \times c_{out}}就爲:
在這裏插入圖片描述
其中*代表卷積操作。Wi=gi(t)W^i=g^i(t)是是GG中第ii個權值生成器的輸出,它可以被分解爲:
在這裏插入圖片描述
其中WsiRk×k×cin×coutW^i_s \in \Bbb R^{k\times k\times c_{in}\times c_{out}}是一個在所有任務間共享的權值,而WtR1×1×coutW_t \in \Bbb R^{1\times 1 \times c_{out}}是特定於任務tt的權值。cout*_{c_{out}}表示沿着輸出通道維數的分組卷積,即xcoutyx*_{c_{out}}y的每個通道只是xxyy中相應通道的卷積。

這樣的話,gig^i就只需要生成WtiW^i_t即可,它將gig^i的輸出維數由k×k×cin×coutk\times k\times c_{in}\times c_{out}減少到coutc_{out}

全連接層的權值分解

全連接層的權值WiRm×nW^i \in \Bbb R^{m\times n}可以被分解爲:
在這裏插入圖片描述
其中WsiRm×nW^i_s \in \Bbb R^{m\times n}是一個在所有任務間共享的權值,而WtiRnW^i_t \in \Bbb R^{n}是特定於任務tt的參數。其實這個分解與特徵激活調製(feature activation modulation)是等價的:
在這裏插入圖片描述
經過以上權值分解,權值生成器就只需要爲每個任務生成低維的特定於任務的參數,而高維參數是在任務間共享的。

3. 元學習器的embedding loss

用於訓練元學習器的任務數量遠遠少於用於訓練預測網絡的圖像數量,因此,本文爲元學習器添加一個embedding loss LembL_{emb},以及一個用於預測網絡的分類損失LclsL_{cls}。在預測網絡FF中有一個二值分類器,用來預測任務描述tt和輸入圖像xx之間的兼容性。爲了分辨輸入圖像屬於哪個任務(即類別),本文采用多類別交叉熵損失:
在這裏插入圖片描述
其中xix_i是數據集中的第ii個樣本,yi{0,1}y_i \in \lbrace 0,1\rbrace是對gt標籤的one-hot編碼,TT是任務數量。

接下來,對於embedding loss,本文的想法是將task embedding et=T(t)e_t=T(t)和TAFE投影到一個聯合embedding空間中。這裏用到了度量學習的方法,對於給定任務的正樣本,對應的TAFE應該和ete_t離得很近,而如果是負樣本,對應的TAFE就因該和ete_t離得很遠。使用hinged cosine similarity作爲距離度量,那麼embedding loss就是:
在這裏插入圖片描述
那麼整個模型的loss就是:
在這裏插入圖片描述
β\beta是超參數,用於控制兩個loss的貢獻。


結論

本文提出的TAFE是一種能夠對不同的任務進行自適應的feature embedding,也就是說,同樣的圖像在不同的任務中可能會有不同的feature embedding。先由一個元學習器根據給定的任務爲預測網絡中的特徵層生成權值,然後再由這些特徵層生成TAFE,也就是說不同的任務對於TAFE的控制是間接的。在生成權值時,利用權值分解機制使得權值的生成更有效率;此外還添加embedding loss來提升元學習器的泛化能力。

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