在訓練樣本極少的狀況下(幾百個、幾十個甚至幾個樣本),現有的機器學習和深度學習模型廣泛沒法取得良好的樣本外表現,用小樣本訓練的模型很容易陷入對小樣本的過擬合以及對目標任務的欠擬合。但基於小樣本的模型訓練又在工業界有着普遍的需求(單用戶人臉和聲紋識別、藥物研發、推薦冷啓動、欺詐識別等樣本規模小或數據收集成本高的場景),Few-Shot Learning(小樣本學習)經過將有限的監督信息(小樣本)與先驗知識(無標記或弱標記樣本、其餘數據集和標籤、其餘模型等)結合,使得模型能夠有效的學習小樣本中的信息。算法
在介紹Few-Shot Learning的基本原理以前,首先須要知道用小樣本訓練模型究竟會致使什麼問題。機器學習的目標就是儘量下降模型結果與真實結果的偏差,而這個偏差能夠進一步分解成兩部分:網絡
在小樣本任務中,用小樣本訓練的模型很容易陷入對小樣本的過擬合以及對目標任務的欠擬合,致使實際訓練的模型h_I的表現與基於現有的特徵和算法能訓練的最優模型h*能達到的表現的差距沒法經過訓練和超參數調整有效的縮小,使模型的總體表現較差(基於足量樣本訓練的模型和基於小樣本訓練的模型分別見fig. 1的a和b)。app
根據機器學習模型在小樣本上難以學習的緣由,Few-Shot Learning從三個角度解決問題,(1)經過增多訓練數據提高h_I(Data)、(2)縮小模型須要搜索的空間(Model)、以及(3)優化搜索最優模型的過程(Algorithm)。機器學習
PS: 上面兩張圖均引自2020年香港科技大學和第四範式的paper「Generalizing from a Few Examples: A Survey on Few-Shot Learning」。ide
下面將逐個介紹第一部分提到的Few-Shot Learning的三大思路下的方法。學習
經過prior knowledge增多訓練數據 (Experience),方法主要分爲3類:測試
(1)數據加強(Data Augmentation)類方法。較初級的數據加強方法是人工制定規則,包括對圖片樣本進行旋轉、翻轉、裁剪、增長噪音等操做,但此類方法不足以有效提高模型的泛化能力,規則的制定也依賴領域知識,一般難以作到在多個數據集之間通用;高階的數據加強方法利用其餘數據集的信息生成更多目標class的樣本,經過模型(多爲encoder-decoder結構)學習樣本內和樣本外的變化分佈並生成新樣本,基於樣本外信息(有監督)的模型能夠將圖片映射爲的不一樣的天氣、景深、角度等,基於樣本內變化(無監督)的模型則學習其餘class的樣本內部變化(如圖片的不一樣視角)並應用於目標的小樣本class上。數據加強類方法可與其餘Few-Shot Learning方法同時使用,廣泛用於計算機視覺場景,但部分高階方法有應用於其餘場景的潛力。關於數據加強類方法的更多介紹和reference見2020年清華和滴滴的paper"Learning from Very Few Samples: A Survey"。優化
(2)基於弱標記樣本或無標記樣本獲得更多目標class樣本,主要包括半監督學習和主動學習兩類。半監督學習的典型例子是Positive-Unlabeled Learning,不少Two-step算法經過正樣本和無標記樣本訓練分類器,直接擴大正樣本規模、或利用分類器權重讓無標記樣本參與到正樣本的學習中(詳見Charles Elkan和Keith Noto 2008發表的"Learning Classifiers from Only Positive and Unlabeled Data");而主動學習選擇對模型訓練最「有用」的樣本進行標註。半監督學習和主動學習適合有大量無標記數據、但樣本標註成本較高的場景。idea
(3)基於目標Class的小樣本數據訓練GAN,直接生成目標class的更多樣本。適用於僅有小樣本、無標記樣本很難收集的場景。spa
經過prior knowledge縮小模型須要搜索的空間(hypothesis space),多爲meta-learning類方法。
用神經網絡同時學習多個任務,使一部分隱藏層關注跨任務的通用信息、一部分隱藏層關注特定任務的信息。在學習過程當中,一個任務的模型參數被其餘任務約束,即任務之間會有相似正則化的效果。分爲直接在不一樣任務間共享部分隱藏層的參數的parameter sharing類方法,和懲罰不一樣任務的參數差別的parameter typing類方法。此類方法的缺點也很明顯,用於訓練的多個任務(包括目標的小樣本在內)若不夠類似(理想情況下各個任務都屬於一個多分類任務)則會影響最終學習效果,且同時訓練多個任務的計算成本很高、速度很慢。詳細介紹和reference見2020年香港科技大學和第四範式的paper「Generalizing from a Few Examples: A Survey on Few-Shot Learning」。
將樣本投影到更易區分不一樣class的低維空間,維度更低、特徵表示更容易區分不一樣class意味着模型須要搜索的空間更小,即降維。用於投影的embedding function一般從prior knowledge中學習,也能夠利用目標class的小樣本的信息。Metric Learning和Meta-Learning中的Learn-to-Measure類算法均屬於這一類別,經過學習embedding function (訓練數據的f(x)和測試數據的g(x)),採用訓練樣本和測試樣本的embedding的類似度做爲測試樣本屬於相應訓練樣本的class的機率,類似度能夠採用類似度指標(Euclidean、Cosine等)或可學習的類似度模型(神經網絡)。此類算法的詳細介紹見2020年香港科技大學和第四範式的paper「Generalizing from a Few Examples: A Survey on Few-Shot Learning」的4.2和4.3.1。
記憶網絡,經常使用於NLP場景和問答系統,從訓練數據中學習key-value pair做爲一個個記憶,與embedding learning類似須要學習一個embedding function f,但須要計算類似度的是樣本的embedding f(x)和記憶庫裏的key,最類似的value做爲該樣本的embedding(或取多個最類似的value的加權平均),隨後輸入一個簡單的分類器(e.g. softmax)。將query樣本的embedding限制爲記憶庫裏的value極大的縮小了模型須要搜索的空間(hypothesis space),但爲了學習和存儲記憶,此類方法一般須要較大的空間佔用和計算成本。
藉助prior knowledge估計樣本機率分佈p(x|y)和p(y),以latent variable的形式參與到小樣本任務的訓練中,縮小模型須要搜索的空間(hypothesis space)。latent variable能夠有三種表現形式,decomposable components(例如人臉識別場景中的鼻子、眼睛、嘴)、group-wise shared prior(小樣本任務可能與其餘任務類似,那麼其餘任務的機率分佈就能夠做爲小樣本任務的先驗機率)、parameters of inference networks(基於大規模數據集訓練推斷網絡並直接用於小樣本任務,基於VAE和GAN的居多),詳細reference見2020年香港科技大學和第四範式的paper「Generalizing from a Few Examples: A Survey on Few-Shot Learning」的4.4.3。
經過prior knowledge優化在hypothesis space中搜索最優模型的過程(即模型訓練過程)。包括refine existing parameters(遷移學習)、refine meta-learned parameters(Meta-Learning中的Learn to fine-tune和learn to parameterize均屬於這個類別,藉助meta-learner幫助base learner更快的收斂)、learn the optimizer(訓練meta-learner指導梯度降低的方向和步長)。此類方法能夠極大加快搜索最優模型的過程,但存在爲了速度犧牲精度的成分、且受元學習領域常見的難題的影響較大(例如如何在不一樣粒度的任務間元學習 e.g. 動物物種和狗的種類,以及如何避免元學習時不一樣任務對參數的影響的相互中和)。
轉載於:
https://zhuanlan.zhihu.com/p/290011942?utm_source=wechat_timeline