先經過CNN獲得目標特徵,而後與參考目標的特徵進行比較. 不一樣在於比較的方法不一樣而已.網絡
模型能夠分解成特徵提取器和比較器:其中特徵提取器中的權重是共享.以下圖所示:機器學習
一路是support(已經知道到標籤), 一路是query.比較二者的類似度.(直接相減取絕對值,而後接sigmoid激活,再接全鏈接層和sigmoid,表示類似程度)函數
每次迭代從訓練集中隨機的選擇20個類, 從每一個類中的20個樣本採樣5個做爲support set, 5個做爲query set. 選取的個數影響batch_size的大小. 從上面選取的樣本中組成一個mini_batch(輸入是成對出現的),一半是相同class,一半是不一樣類別.同時batch_size也收到硬件的限制,通常取32.性能
從測試集中隨機選取m個類,每一個類提供k個樣本做爲support Set.這就是N-way k-shot.每一個query與 個樣本進行比較,獲得類似分數,而後同類取平均值, 找出類別最高的分數即爲這個query的類別.學習
在編碼中引入set和注意力的概念, 將全部類別的編碼當作一個總體看待,這樣能夠加強類間差別.同時做者也對訓練過程進行的改進, 同時保證了傳統機器學習的一個原則, 即訓練和測試集要在一樣的條件下進行的, 學習的目標由 變成 .最終是一個權重式的最鄰近分類器.測試
1. 對支持集和測試集的樣本進行encode,函數分爲 ,獲得 , 表明的query樣本, 表明的是支持集裏面的樣本. 圖中的虛線表示的是這兩部分編碼是能夠共享的.優化
2. 再對 的編碼進一步處理,處理方法是基於雙向的LSTM對support set進行總體embedding(full Context Embedding):編碼
經過如上的編碼咱們能夠發現support set的樣本編碼產生了相互影響的效果,從而更有利於區分出類別之間的差別.對類似卻不一樣的類別的編碼具備好處.spa
3. 基於attention-LSTM來對測試樣本embedding:prototype
計算詢問樣本特徵與support set的特徵類似性. 具體計算以下:
根據類似性來計算獲得reuse的特徵
須要注意的是K是能夠隨便定的, 最終的 即爲最終測試樣本的編碼.分析能夠這裏的過程能夠理解爲一個可學習的增強特徵器, 用於增強那些與support set類似可是不明顯的特徵(若是某個樣本的特徵與support set中某個樣本稍微類似,可是不足以斷定類別, 這裏就會循環向原始特徵中加入可以加強其判別的信息).
4. 獲得 的編碼後,利用下式獲得最終的結果.
其中a的表達式以下:
須要說明的是上式中的 一個N-way大小的向量(通常是one-hot),若是是K-shot,編碼處也會發生變化,同時取的是最終y值最大對應的標籤.
選擇少數幾個類別(5類),在每一個類別中選擇少許的樣本(5個),將選出的集合劃分紅參考集和測試集,利用本次迭代的參考集,計算測試集的偏差,計算梯度,更新參數.這樣的一個流程稱爲episode.與孿生網絡不一樣,在一次計算中能夠直接獲得最終的label, 可是基於比較的思想沒有變化.
步驟與訓練同樣,只是再也不更新梯度,同時計算正確率.
加入適當且合適的偏置概括,來減輕或者消除過擬合問題.這裏的假設是存在一個特徵空間使得對於每一類都有一個point cluster圍繞一個單一的prototype representation. 分類問題就變成尋找最近原型的問題.對每一個類而言模型也能夠當作是一個線性模型.
1.計算原型表達
其中 表明的是第k類原型表達, 表明的是support set中第k類的集合.
2. 在類別維度上歸一化距離,獲得類別標籤
若是隻從分類器的角度看,當問題是one-shot時,matchnet和當前模型等效.
前文說網絡學習的是比較能力,主要是體如今對特徵的學習和約束上(這些特徵容易經過線性或者最最近鄰的方法進行區分),這裏將其延伸至比較器,比較方式也是經過網絡本身來學習,而不是人工指定,這也符合咱們一向的認識,能讓網絡作的, 儘可能讓網絡去作. 本身學習了一個非線性比較器.在zero-shot learning中,relation module是學習比較query圖像和描述之間關係.
上面公式輸出的是一個在[0,1]之間的值,做者使用的是以下結構來表示 :
經過上面的公式咱們能夠看出,不一樣參考樣本鏈接query樣本特徵以後在relation module中的權重是共享的,因此在實現的時候,維度變化以下C((S,H,W,D), (Q,H,W,D))-->(Q*S, H,W, D) 而後作卷積,再reshape.須要注意的是做者在K-shot,是將support中相同類別的圖像特徵相加後,而後於query的特徵相鏈接,這樣又變成了上述的one-shot問題.
轉載於:
知乎:基於比較的少樣本(one/few-shoting)分類
注: 5way1shot是指:測試集有5類,每類只有1張是有標記樣本,其他樣本都是無標記的。咱們須要根據用已有的訓練樣本(訓練樣本比較理想,就是類別數不少,都有標籤等)來模仿測試過程。具體而言,就拿5way1shot來講(假設訓練集有1000類,都有大量有標籤數據),每次,個人訓練樣本是隨機選5類,每類選1張圖,這5張圖通過網絡獲得5個特徵向量,而後怎麼計算loss?我須要從這5類裏面每類再挑出一些樣本也通過網絡獲得他們的特徵向量,而後去和以前那5個向量計算距離(relation),但願他們同一類的距離儘量小。這樣的話,個人網絡其實就是學的是relation,而不是簡單的分類。那測試的時候,我把有標籤的這5張圖算個特徵向量,其他全部測試集中的圖像也都提個特徵向量,去和這5個比,看看誰近,近的話就認爲是同一個label。
相比之下,藉助於以前豐富的知識積累,人類只需看一次就能輕鬆識別出新的類別。受到人類這種利用少許樣本便可識別新類能力的啓發,研究者們開始研究小樣本學習問題。 在小樣本學習問題中,咱們假設有一組基類,以及一組新類。每一個基類具備足夠的訓練樣本,而每一個新類只有少許標記樣本。 小樣本學習的目的是經過從基類轉移知識來學習識別具備少許標註樣本的新類別。咱們提出一種基於全局類別表徵的小樣本學習方法,能夠應用於: