Matching Networks for One Shot Learning[1] 這篇文章是谷歌的DeepMind團隊提出的,被李飛飛高徒Andrej Karpathy點贊過,成為之后相關研究中經(jīng)常被對比的參照,該文章在不改變網(wǎng)絡模型的前提下能對未知類別生成標簽,其主要創(chuàng)新體現(xiàn)在兩個方面:建模過程和訓練過程。對于建模過程的創(chuàng)新,文章提出了基于memory和attention的matching nets,使得可以快速學習。對于訓練過程的創(chuàng)新,文章基于傳統(tǒng)機器學習的一個原則,即訓練和測試是要在同樣條件下進行的,提出在訓練的時候不斷地讓網(wǎng)絡只看每一類的少量樣本,這將和測試的過程是一致的。上圖所示為Matching Networks的主要結(jié)構(gòu),這是一個明顯的 4-way,1-shot 模型,左邊4張小狗的圖片形成一組,每類狗一張圖片,稱為support set;右下1個單身狗,稱為test example。全部5個圖片稱為1個task。 該模型用函數(shù)可表示為??,即模型有兩個輸入。該模型用概率可表示為??,其中??,k表示support set中樣本的個數(shù)。上圖support set有4個圖片,k=4。Matching Networks作者把該模型表示為:??預測值??被看做是support set中樣本的labels的線性組合,組合的權重是test example和support set中1個樣本的關??本文??賦予新的形式,將它看做attention kernel。此時,模型的預測結(jié)果就是support set中attention最多的圖片的label。常見的attention kernel是cosine距離上的softmax:其中f,g是兩個嵌入函數(shù)(可由神經(jīng)網(wǎng)絡實現(xiàn),如:VGG or Inception)。訓練策略的創(chuàng)新:
一個batch包括多個task;
一個task包括一個support set和一個test example;
一個support set包括多個sample(image & label);
support set中有且只有一個樣本與test example同類。
模型在Omniglot數(shù)據(jù)集上進行了測試,Omniglot數(shù)據(jù)集包含來自 50個不同字符的 1623個不同手寫字符。每一個字符都是由 20個不同的人通過亞馬遜的Mechanical Turk 在線繪制的。測試過程中,將這些分成一組包含 30個字母的背景(background)集和一組包含 20個字母的評估(evaluation)集。測試結(jié)果如下:
03
原型網(wǎng)絡Prototypical Networks[2] 這篇論文提出的方法思想十分簡單,效果也非常好。它學習一個度量空間, 通過計算測試樣本和每個類別的原型表達之間的距離來進行分類。文章基于這樣的想法:每個類別都存在一個原型表達embedding,這個embedding可以代表這個類別的表征,該類的原型是support set在embedding空間中的均值。然后,分類問題變成在embedding空間中的最近鄰。如圖所示,c1、c2、c3分別是三個類別的均值中心(稱Prototype),將測試樣本x進行embedding后,與這3個中心進行距離計算,從而獲得x的類別。算法的偽代碼如下,非常的簡單清晰: 作者在miniImageNet的數(shù)據(jù)集上進行了測試,miniImageNet數(shù)據(jù)集包含了100個類別的圖片,每類600張,共60000張圖片。其中64個類別作為訓練集,16個類別作為驗證集,20個類別作為測試集,測試結(jié)果如下:從上圖中的實驗結(jié)果可以看出,squared Euclidean距離比cosine距離要好14到17個點。另外,文章在訓練時采用相對測試時更多的類別數(shù),即訓練時每個episodes采用20個類(20 way),而測試對在5個類(5 way)中進行,其效果相對訓練時也采用5 way的提升了2.5個點。Prototypical Networks與Matching Networks十分相似,在one shot的場景下,他倆是一樣的,但也有幾個不同點:1.距離度量方式不同,Matching Networks采用的是cosine度量距離,Prototypical Networks中使用的是基于Bregman的歐幾里得距離; 2.網(wǎng)絡結(jié)構(gòu)上,Prototypical Networks相比Matching Networks將編碼層和分類層合一,參數(shù)更少,訓練起來也更加方便。參考文獻:[1] Oriol Vinyals, Charles Blundell, Tim Lillicrap, Daan Wierstra, et al. Matching networks for one shot learning. In Advances in Neural Information Processing Systems, pages 3630–3638, 2016.[2] Jake Snell, Kevin Swersky, and Richard S Zemel. Prototypical networks for few-shot learning. arXiv preprint arXiv:1703.05175, 2017[3] Allen, Kelsey R, Shelhamer, Evan, Shin, Hanul, et al. Infinite Mixture Prototypes for Few-Shot Learning[J]. 2019.[4] Li C, Wang G, Melo G D. Context-Based Few-Shot Word Representation Learning[C]// IEEE International Conference on Semantic Computing. 2018.[5] Wang, Yaqing, Yao, Quanming, Kwok, James, et al. Generalizing from a Few Examples: A Survey on Few-Shot Learning[J]. 2019.