天天看點

基于PyTorch,集合17種方法,南京大學等提出小樣本算法庫LibFewShot

近日,南京大學推理與學習研究組(Reasoning and Learning Research Group, R&L Group)聯合澳洲伍倫貢大學、美國羅徹斯特大學開源了一個小樣本學習算法庫 LibFewShot。該庫包含了 17 個 2017 年到 2020 年具有代表性的小樣本學習算法,為小樣本學習領域中算法對比采用統一架構、統一設定、實作公平對比等提供便利。關于 LibFewShot 的文章已經釋出在 arXiv。

基于PyTorch,集合17種方法,南京大學等提出小樣本算法庫LibFewShot

近年來,小樣本學習,特别是小樣本圖像分類問題引起了學界越來越多的關注。最近的一些研究表明,許多通用的技術或者技巧,如資料增強、預訓練、知識蒸餾和自監督可能會極大地提高小樣本學習方法的性能。此外,不同的算法可能由于使用不同的深度學習架構,不同的訓練方式,不同的嵌入網絡,甚至不同的輸入圖像大小,使得對這些算法進行公平對比變得困難,而且初學者也往往難以複現相關算法。

為了解決這些問題,我們提出了一個統一的小樣本學習算法庫 LibFewShot,該庫基于 PyTorch 深度學習架構,統一重新實作了 17 種小樣本學習方法。此外,基于 LibFewShot 提供了基于四層卷積、ResNet12、ResNet18 這三種 backbone 在 miniImageNet、tieredImageNet 兩個資料集上的評估結果以及在 CUB-Birds、StanfordDog、StanfordCar 三個資料集上的跨域結果,用以綜合評估不同算法的效果。

另外,鑒于一些最新工作開始重新思考 meta 或 episodic 訓練機制的必要性,我們也在這個方向上,基于 LibFewshot 架構進行了一些探索和研究,并從實驗結果中發現 meta 或 episodic 訓練機制還是有效的,特别是在與預訓練相結合時,這樣的訓練機制仍然能夠顯著提升模型的表現。我們希望 LibFewShot 不僅能夠降低小樣本學習的使用門檻,還能夠消除一些常用深度學習技巧的影響,以促進小樣本學習領域的發展。

小樣本總覽

小樣本任務通常包含兩部分資料,一部分是用來學習的有标簽的支撐集(support set),另一部分是待分類的無标簽的查詢集(query set)。為了獲得對每個任務快速學習的能力,通常還有一個大的輔助集(auxiliary set),通常支撐集和查詢集的實際類别是一緻的,而輔助集的類别和它們是不相交的。小樣本學習中 「小」 的概念來自于支撐集,支撐集有 C 類圖像,每類圖像有 K 張,稱為 C-way K-shot 小樣本問題,C 通常取 5 或 10,K 通常取 1 或者 5。小樣本學習任務的重點是如何通過在輔助集上的進行學習,使得在面對新的任務時,僅僅通過支撐集的少量樣本,就能夠完成對查詢集的識别和分類。

根據在輔助集上以及支撐集上訓練政策的不同,将小樣本學習分為三類,分别是基于微調的方法、基于元學習的方法、基于度量的方法,圖 1 中給出了三類方法的代表性架構圖。

  • 基于微調的方法:基于微調的方法和遷移學習有着相似的過程,一般可分為使用輔助集的預訓練階段和使用支撐集的微調階段。代表方法有 Baseline[1],Baseline++[1],RFS[2],SKD[3]等;
  • 基于元學習的方法:基于元學習的方法在訓練階段采用元訓練的方式來在輔助集上進行訓練,通常采用二階段的優化,一個階段是支撐集更新基學習器,另一階段用查詢集更新元學習器、适應新的任務。代表方法有 MAML[4],R2D2[5]等;
  • 基于度量的方法:基于度量的方法通常在輔助集上的訓練采用的是 episodic training 的方式,即在這個階段從輔助集中采樣相似的小樣本學習任務,使用大量相似任務來訓練網絡,使得網絡能夠學習到快速适應新任務的能力。代表方法有 ProtoNet[6],RelationNet[7],DN4[8]等。
基于PyTorch,集合17種方法,南京大學等提出小樣本算法庫LibFewShot

圖 1. 小樣本學習方法分類,(a) 基于微調的方法;(b) 基于元學習的方法;(c) 基于度量的方法.

複現代碼

基于以上三個種類的分類,LibFewShot 實作了 17 個具有代表性的算法,從上到下依次是基于微調的方法、基于元學習的方法和基于度量的方法,複現結果如下:

基于PyTorch,集合17種方法,南京大學等提出小樣本算法庫LibFewShot

此外,由于各個方法所使用的技巧、網絡結構等存在一定的差别。為了公平比較不同方法在各個資料集上的表現,LibFewShot 統一了一些變量,在 miniImageNet 和 tieredImageNet 上做了如下實驗:

基于PyTorch,集合17種方法,南京大學等提出小樣本算法庫LibFewShot

從表中可以看出,RFS 和 SKD 這樣的基于微調的方法,表現要明顯優于其他的方法,但是也用了更多的技巧,例如,預訓練(pre-train)、自監督(self-supervised,SS)和知識蒸餾(knowledge distillation,KD)都能夠明顯提高模型的表現。當基于元學習的方法和基于度量學習的方法在使用了預訓練等技巧後,如 MTL 和 CAN,表現也接近于 RFS 和 SKD。由此可見,預訓練加上 episodic training 的微調是一種很有潛力的訓練方法。

另外,論文中也比較了這些方法在 ResNet12 網絡結構下的跨域表現,結果如下表所示:

基于PyTorch,集合17種方法,南京大學等提出小樣本算法庫LibFewShot

從表中可以看出,從 miniImageNet 和 tieredImageNet 資料集泛化到 StanfordDog 和 CUB-Birds 資料集是比較簡單的,因為它們都是相似的自然圖像資料集。而當遷移到 StanfordCar 資料集上,所有方法的表現都會急劇下降,這表明,目前 SOTA 的方法并不能很好處理域偏移較大的跨域情況。

讨論

通過對比以上實驗結果,我們提出了兩個問題:(1)在訓練階段,使用支撐集進行 episodic training 是否真的不重要,(2)在測試階段,使用測試任務的支撐集進行微調是否真的對小樣本測試很有效。為了回答這兩個問題,我們選取了具有代表性的 RFS、ProtoNet 以及 MTL 做了對比實驗。對于問題 1,我們選取了 ProtoNet 和 MTL 兩個方法,這兩個方法的結果從上述表格中結果來看都是不如 RFS 的。但是當使用了 RFS 的預訓練模型,并在此基礎上使用 episodic training 微調預訓練網絡之後,從圖 2 柱狀圖可以看出,兩種方法的結果都要比 RFS 高上許多。是以,我們認為訓練階段的 episodic training 還是有必要的,特别是在結合預訓練的情況下,能夠更進一步提升模型的性能。對于問題 2,我們發現如果使用和 RFS 相同預訓練的網絡,在測試時直接采用使用歐氏距離的 ProtoNet,RFS 的效果的确是更好一些的。但是當 ProtoNet 使用了 L2 歸一化後,即改成使用餘弦距離後,結果反而要比 RFS 高,是以得出一個有意思的結論:在測試階段進行微調可能并沒有那麼重要,相反 L2 歸一化可能起了更加重要的作用。

基于PyTorch,集合17種方法,南京大學等提出小樣本算法庫LibFewShot

圖 2. ProtoNet-cosine 和 MTL-protonet 在預訓練模型基礎上進行微調的結果

LibFewShot 是一個內建了多個代表性小樣本學習方法的統一架構,為小樣本學習領域的方法進行公平的實驗可以帶來巨大的便利。同時,我們也對小樣本學習中預訓練和 episodic training 的作用進行了深入的思考,肯定了預訓練的價值,也證明了 episodic training 的必要性,同時也強調了 L2 歸一化在小樣本學習中的作用。

參考文獻:[1] Chen, Wei-Yu, Yen-Cheng Liu, Zsolt Kira, Yu-Chiang Frank Wang, and Jia-Bin Huang. "A Closer Look at Few-shot Classification." In International Conference on Learning Representations. 2018.[2] Tian, Yonglong, Yue Wang, Dilip Krishnan, Joshua B. Tenenbaum, and Phillip Isola. "Rethinking few-shot image classification: a good embedding is all you need?" In European Conference on Computer Vision 2020, Part XIV 16, pp. 266-282. 2020.[3] Rajasegaran, Jathushan, Salman Khan, Munawar Hayat, Fahad Shahbaz Khan, and Mubarak Shah. "Self-supervised knowledge distillation for few-shot learning." arXiv preprint arXiv:2006.09785. 2020.[4] Finn, Chelsea, Pieter Abbeel, and Sergey Levine. "Model-agnostic meta-learning for fast adaptation of deep networks." In International Conference on Machine Learning, pp. 1126-1135. PMLR, 2017.[5] Bertinetto, Luca, Joao F. Henriques, Philip Torr, and Andrea Vedaldi. "Meta-learning with differentiable closed-form solvers." In International Conference on Learning Representations. 2018.[6] Snell, Jake, Kevin Swersky, and Richard Zemel. "Prototypical Networks for Few-shot Learning." Advances in Neural Information Processing Systems 30 (2017): 4077-4087. 2017.[7] Sung, Flood, Yongxin Yang, Li Zhang, Tao Xiang, Philip HS Torr, and Timothy M. Hospedales. "Learning to compare: Relation network for few-shot learning." In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pp. 1199-1208. 2018.[8] Li, Wenbin, Lei Wang, Jinglin Xu, Jing Huo, Yang Gao, and Jiebo Luo. "Revisiting local descriptor based image-to-class measure for few-shot learning." In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pp. 7260-7268. 2019.

繼續閱讀