核心思想
本文在基於度量學習的小樣本算法的基礎上提出了幾點改進方案:度量放縮(Metric Scaling),任務條件(Task Conditioning)以及輔助任務合作訓練(Auxiliary task co-training)。首先,對於度量函數增加一個放縮係數,使得分類概率。作者通過數學的方式證明了,的值越大就能更加直接的降低分類誤差,但是如果的值比較大,隨着訓練的逐步進行,正確分類樣本越來越多,錯誤分類樣本越來越少,訓練過程對於模型效果的提升能力也越來越弱(梯度逐漸趨近於0)。因此作者認爲應該存在一個最優的能夠平衡這一關係,就通過訓練的方式去學習這一參數。然後作者對特徵提取器進行了改進,作者認爲應該引入一個與任務相關的參數,得到一個與任務相關的動態特徵提取器。於是作者引入了任務嵌入網絡(Task Embedding Network,TEN),通過對原有的特徵圖進行放縮和平移的方式引入任務信息,TEN結構如下圖所示
圖中Task encoding就表示需要嵌入的任務信息,本文選擇原型網絡Prototypical Network中的每個類別原型的平均值作爲任務信息,然後分別用兩個帶有殘差結構的全連接網絡和對進行處理,再與對應的L2懲罰項和相乘,得到放縮係數和平移係數,最後將卷積層輸出的特徵圖進行放縮和平移得到。作者文中並未說明和的來源,根據代碼分析可知是兩個初始值爲0的可學習的參數。
作者發現引入TEN結構給網絡增加了額外的複雜度,使得網絡訓練變得困難。因此作者提出了利用輔助任務進行合作訓練的方法,其實就是在原網絡的基礎上增加一個64類的分類器,然後在訓練過程中會隨機的從64類的miniImageNet數據集中抽取樣本,用於訓練該分類器。這與預訓練的方式略有不同,兩個訓練過程共用一個特徵提取網絡,一起進行合作訓練,且從輔助任務數據集中抽取樣本的概率會隨着訓練次數的增加而呈指數下降。這就接近於課程學習(curriculum learning)的概念,一開始訓練時會引入較多的簡單分類任務,引導特徵提取網絡訓練;隨着訓練次數不斷增加,網絡的能力也在不斷增強,以此逐漸降低簡單任務所佔的比重,而增加真正需要學習的任務(小樣本分類)比重。整個網絡的流程如下圖所示
支持集圖片分別利用兩個權重共享的特徵提取器進行處理,上方的是用於獲取類別表徵信息,而下方的則是用於獲取任務表徵信息,並通過TEN結構得到放縮和平移係數,用於改進。查詢集圖片同樣經過的處理得到對應的表徵信息,並與支持集圖片對應的表徵信息進行相似性度量。最後將得到的相似性得分乘以放縮係數,在經過softmax函數得到每個類別的預測概率。
實現過程
網絡結構
特徵提取器採用ResNet-12作爲主幹網絡,TEN網絡的結構如上文所示,普通的卷積塊和殘差塊與TEN的結合方式如下圖所示
損失函數
交叉熵損失函數
訓練策略
主要的增加了輔助任務合作訓練的內容,如上文所述
創新點
- 爲度量函數增加了放縮係數,並通過數學方法和實驗方法證明其有效性
- 設計了TEN結構,將任務相關信息引入到特徵提取網絡之中
- 採用了輔助任務合作訓練的方式,降低了網絡訓練的難度
算法評價
本文提出的對度量函數進行放縮的觀點是本文的核心內容,他看起來非常簡單,只是增加一個可學習的放縮參數,但在實驗過程中卻能有效提升分類的準確率。對於特徵圖進行平移和放縮在之前解讀的文章《Meta-Transfer Learning for Few-Shot Learning》中也有過類似的操作,只不過是對甚至網絡中的權重值進行平移和放縮,起到元學習的效果。最後本文采用的合作訓練算法,在之前的文章中沒有看到過,而且實驗表明該方法的提升作用明顯,可以進行嘗試。
如果大家對於深度學習與計算機視覺領域感興趣,希望獲得更多的知識分享與最新的論文解讀,歡迎關注我的個人公衆號“深視”。