天天看點

CVPR2019的few-shot的文章

元學習論文總結||小樣本學習論文總結

2017-2019年計算機視覺頂會文章收錄 AAAI2017-2019 CVPR2017-2019 ECCV2018 ICCV2017-2019 ICLR2017-2019 NIPS2017-2019

作者:sisiyou

連結:https://zhuanlan.zhihu.com/p/67402889

來源:知乎

本文主要總結了CVPR2019的few-shot的文章,主要從motivation,具體方法上進行總結。

基于度量的方法 (在原型網絡,圖卷積的基礎上改進)

  • Revisiting Local Descriptor based Image-to-Class Measure for Few-shot Learning

motivation:局部度量對于few-shot任務很重要

方法:對于query的feature map為每個空間特征計算一個相似性

  1. 利用CNN對support set和query set提取特征
  2. 對于一個query feature map,對每個空間特征,找到support feature map中最相近的K(K=1)個特征,計算相似性,這個query的相似性為所有位置相似性的和
  3. 利用最近鄰loss優化網絡
CVPR2019的few-shot的文章
CVPR2019的few-shot的文章

問題:利用局部相似性是對few-shot有效的

  1. 對于不同類,也找到最相似的特征,拉近不同類特征的距離
  2. 相同背景區域,造成高的相似性,産生誤差
  3. 對于非目标物體的局部特征相似性會幹擾最終的相似性
  • Finding Task-Relevant Features for Few-Shot Learning by Category Traversal

motivation:每個task對support set的圖像分别提取特征,忽略了support set的圖像間的語義關系。模型可以通過整合support set所有圖像的資訊,進而找到最具有判别性的特征。

方法:根據support set得到一個channel attention,對所有的圖像應用channel attention

  1. 對于support set圖像提取特征,得到(K*N, c, h, w),經過一個卷積層求得原型(K, c1, h1, w1),将所有類連接配接得到一個特征(K*c1, h1, w1),經過卷積得到一個channel attention(c1, h1, w1)(在channel通道上做attention)
  2. 将support特征和query特征經過一個卷積層,映射到(c1, h1, w1),與上述得到的attention相乘,得到更具有判别性的特征
  3. 對于更新後的特征做度量學習(matching net,protocol net,relation net)
CVPR2019的few-shot的文章

問題:channel attention對度量有用

  1. 為什麼對一個task所有的圖像都經過一個相同的channel attention map,直覺上不同的圖像(或者不同類的圖像)的channel attention map應該不相同。
  • Edge-Labeling Graph Neural Network for Few-shot Learning (CVPR19)

motivation:graph結構非常适合few-shot的問題,對support set和query圖像建立圖模型,将support set的圖像資訊傳遞給query圖像。現有的方法都是對圖的節點進行分類,本文提出了對圖的邊進行分類。(圖的邊的權重天然的表示兩個連接配接的圖像是否為同一類)

方法:對邊進行分類,産生loss,更新網絡。

  1. 利用編碼器提取特征,初始化節點特征,和邊特征。邊特征有兩維,第一維表示同一類的機率,第二維表示不同類的機率。
  2. 更新節點特征,用邊的兩個次元分别更新節點,産生兩個特征:第一個特征為類内特征,第二個特征為類間特征,經過一個MLP得到更新後的特征。
  3. 更新邊的特征,用一個卷積網絡預測邊的值,與前一層邊的值融合,得到更新後的邊的值
  4. 對邊進行0,1分類(二值交叉熵loss),更新整個網絡。
CVPR2019的few-shot的文章

問題:方法與‘FEW-SHOT LEARNING WITH GRAPH NEURAL NETWORK’十分相近,最大的差別是對邊進行分類。

  1. 對于few-shot來說,support set同時具有類間和類内的分布,如何可以更好的利用這兩個資訊?

基于生成分類器的方法(可以歸納到基于度量,分類器的權重可以看做更好的原型特征)

  • Meta-Learning with Differentiable Convex Optimization (oral)

motivation:最近鄰分類的判别性較弱,對于少樣本的分類任務可以利用機器學習學習一個線性分類器(嶺回歸算法;SVM算法)

方法:将最近鄰分類器換成SVM,得到分類器的權重

CVPR2019的few-shot的文章

問題:對于一個新的task,特征并不是線性可分的,是否用一個非線性的分類器會更好?

  • Generating ClassificationWeights with GNN Denoising Autoencoders fo Few-Shot Learning (oral)

motivation:利用去噪自編碼器的思想,并考慮類間的關系,生成分類器的權重。

方法:

  1. 利用所有的訓練資料預訓練一個特征提取器,并得到所有訓練分類層的權重w
  2. 建構few-shot task任務,随機采樣得到base class和novel class;對于base class的分類器初始化為w,對于novel class的分類器初始化為特征均值;對于初始化的w加入高斯噪聲,經過去噪自編碼器,重構出w
  3. 利用下面的loss函數優化去噪自編碼器。(重構損失和query的分類損失)
  4. 對于一個新的task,按照自編碼器的原理,得到更新後的W。
CVPR2019的few-shot的文章
CVPR2019的few-shot的文章
CVPR2019的few-shot的文章

問題:對去噪自編碼器的那個公式不是很了解,為什麼不直接用r(w)呢?

  1. 實驗對于1-shot設為1,等價于用r(w);對于5-shot設為0.5,等價于 (r(w)+w)/2,比較直覺。
  2. 去噪的思想提升大約1個點,圖卷積的思想幾乎沒有提升

基于優化的方法 (幾乎都是在MAML上進行改進)

  • Meta-Transfer Learning for Few-Shot Learning (CVPR19)

motivation:MAML系列的方法存在兩個缺陷:1)訓練需要大量的task才可以收斂;2)一般隻适用于淺層的網絡,無法泛化到深層網絡上,在深層網絡上容易過拟合。

方法:MAML隻學習最後一層分類層(scale和shift的參數?)

  1. 首先用所有訓練資料預訓練一個特征提取器,固定特征提取器。
  2. 利用MAML的思想,初始化scale和shift的參數S1和S2為1和0,随機初始分類器W的參數;對于每個task利用support set優化W,得到新的W1,用得到的S1,S2,W1計算query set的loss,梯度更新S1,S2,W,得到新的S1,S2,W。
  3. 對于測試task,利用support set微調W,計算query的分類精度。(其中S1,S2為訓練最終得到的S1,S2)。
CVPR2019的few-shot的文章
CVPR2019的few-shot的文章

問題:更新整個卷積參數十分困難,将卷積分解為固定的卷積核和自适應的卷積核權重是一種可行的解。

  1. 預訓練的特征提取器已經适應了S1=1,S2=0,繼續優化會改變S1和S2的參數嗎?(底層S1,S2微小的改變就可以造成高層特征巨大的變化,那麼預訓練的特征提取器的作用在哪裡?)
  2. S1和S2在訓練過程中相當于遷移學習,測試時保持固定,為什麼不與W保持一緻,對于不同的task可以自适應學習。
  3. S1和S2在訓練過程中修改有什麼意義呢?最終還是一個固定的特征提取器。
  • LCC: Learning to Customize and Combine Neural Networks for Few-Shot Learning (CVPR19)

motivation:超參數設定十分重要,利用meta-learning對每一層學習一個超參數;一個learner通常不穩定,在MAML的機制上學習如何融合多個learner。

方法:MAML上學習如何整合多個base-learner,以及對每個learner每一層學習一個超參數設定。

  1. MAML内循壞更新初始參數多次,得到M(5)個base-learner
  2. MAML外循環優化初始參數,超參數,多個learner融合系數。其中測試集上的預測類别為多個base-learner預測值得權重求和,利用測試集的loss更新上述參數。
CVPR2019的few-shot的文章

問題:在MAML的基礎上學會如何融合多個base-learner的結果。

  1. 将内循壞更新過程中的base-learner進行融合,直覺是有效的(前期的base-learner欠拟合,後期的base-learner過拟合)
  2. 整合多個base-learner對1-shot提點比較明顯
  3. 論文寫得很簡單易懂,條理清晰。

資料增廣的方法

  • Learning from Adversarial Features for Few-Shot Classification (特征增廣)

motivation:few-shot的一個關鍵是如何得到一個泛化性好的特征提取器。分類網絡通常提取的特征隻關注最具有判别性的區域,而忽略了其他判别性較弱的區域,不利于網絡的泛化。檢測的一個工作是對提取的特征遮擋住關鍵部分的區域,迫使網絡去關注其他不是特别具有判别性的區域。本文相當于把hard attention換成了soft attention。

方法:找到使圖像分類不确定的soft mask M

  1. 對于輸入的圖像,提取特征,經過avgpool,分類得到entropy loss l
  2. l對M求梯度,得到使l最大的更新方向,更新M0得到新的mask Ma
  3. 将提取的特征與更新後的Mask相乘,得到對抗特征,分類得到分類loss l1
  4. 将初始特征再經過多個卷積,得到一維特征對其分類,得到分類loss l2
  5. 兩個分類器共享參數,進而高層特征對底層特征具有一定的指導作用,優化網絡。
CVPR2019的few-shot的文章

問題:相當于一個檢索任務,方法與few-shot關聯不大

  1. 相當于在特征上做資料增廣,進而得到一個更泛化的編碼器。
  2. few-shot的兩個關鍵問題:如何得到判别性的特征,如何分類。
  • Image Deformation Meta-Networks for One-Shot Learning (圖像增廣)

motivation:few-shot中support set隻含有少數樣本,一個很直覺的想法是做資料增廣。是否可以利用訓練集的圖像對support set的圖像進行插值,形成擴充的support set集合。

方法:在原型網絡的基礎上對support set進行擴充

  1. 從meta-train集合中每一類随機選擇幾個樣本,形成一個gallery set G
  2. 對于一個task,提取support set的特征,形成最近鄰分類器,對G所有圖像分類,找到分類機率最高的N個圖像,形成這個support (probe)image對應的gallery image
  3. 對于每對(probe,gallery)圖像,生成一個9維的權重,将對應的圖像權重得到擴充的圖像,圖像标簽與probe保持一緻
  4. 擴充的support set與query image産生最近鄰分類loss,用來優化權重生成子網絡
  5. 擴充的support set産生分類loss。優化編碼網絡。
CVPR2019的few-shot的文章

問題:

  1. 每次疊代一個episode需要對所有gallery圖像提取特征,訓練時間是否過長。
  2. 為了使合成的圖像與probe的标簽一緻,權重是否會趨向于1
  3. 性能提升可能來自:資料增廣得到了更具有判别性的編碼器,資料增廣得到了更好的原型

繼續閱讀