ICLR2021 Oral |9行代码提高少样本学习泛化能力
文 | 楊朔@知乎
本文已獲作者授權,禁止二次轉載
介紹一篇我們剛剛發表在ICLR2021 Oral上的一篇少樣本學習工作,簡單有效。
題目:
Free Lunch for Few-shot Learning: Distribution Calibration
鏈接:
https://openreview.net/forum?id=JWOiYxMG92s
代碼:
https://github.com/ShuoYang-1998/ICLR2021-Oral_Distribution_Calibration
簡介
從極少量樣本中學習到泛化性能良好的模型是很困難的,因為極少的樣本形成的數據分布往往與真實數據分布相差較大,在偏斜的數據分布上訓練模型會導致嚴重的過擬合現象并嚴重破壞模型的泛化能力(見圖1)。在本文中我們嘗試從數據分布估計的角度去緩解少樣本學習中的過擬合現象。我們嘗試利用一個樣本去估計該類別的整體數據分布,如果該分布估計足夠準確,也許可以彌合少樣本學習和傳統多樣本學習的差距。
方法
直接從一個樣本中估計整體數據分布是非常困難的,需要很強的先驗去約束分布估計的過程。我們觀察到如果假設每一個類別的特征都服從高斯分布,那么相似類別的分布統計量相似度非常高,如表1。
從直觀的角度理解,一個類別的mean代表該類別的general appearance,variance代表該類別某屬性的變化范圍(顏色、形狀、姿勢等)。而相似的類別(如貓和老虎)具有相似的整體外觀和相似的屬性變化范圍。受此啟發,我們提出了通過遷移基類(base class)的分布統計量的方式對少樣本類別的數據分布做‘矯正’(calibration)。具體來說,我們首先為每一個base class i計算一個mean和covariance:
計算好的 和 儲存起來當作base class分布先驗。然后在進行少樣本分類時我們利用base class的分布先驗去修正少樣本類別的數據分布:
得到修正后的少樣本類別的分布 和 后,我們便可以從修正后的分布中直接采樣:
然后利用采樣得到的數據和support set共同訓練分類器:
至此,該算法結束。流程如圖:
實驗
我們的算法無需任何可訓練參數,可以建立在任何已有的特征提取器和分類器之上,并極大的提高模型的泛化能力。代碼已開源,核心代碼只有9行(evaluate_DC.py中的第10-19行)。我們的方法搭配最簡單的線性分類器便可以達到非常高的1-shot分類性能。實驗結果如圖:
我們分布估計的可視化如圖:
總結
在本工作中我們思考了少樣本學習和多樣本學習的核心差距,并提出通過分布矯正(估計)的方式彌合這種差距。在該工作的后續期刊拓展版本中我們從generalization error bound的角度為‘基于數據分布估計的少樣本學習’這一類方法建立了理論框架,并證明了當數據分布足夠準確時,少樣本學習和多樣本學習的泛化誤差等價。
后臺回復關鍵詞【入群】
加入賣萌屋NLP/IR/Rec與求職討論群
后臺回復關鍵詞【頂會】
獲取ACL、CIKM等各大頂會論文集!
總結
以上是生活随笔為你收集整理的ICLR2021 Oral |9行代码提高少样本学习泛化能力的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 专心做搜索也能登顶CLUE分类榜?在快手
- 下一篇: 训练神经网络时如何确定batch的大小?