few shot learning-小樣本學習入門

參考鏈接:
https://zhuanlan.zhihu.com/p/85277741
https://zhuanlan.zhihu.com/p/99116121
https://blog.csdn.net/weixin_37589575/article/details/92801610
https://blog.csdn.net/weixin_40123108/article/details/89003325

基本概念

小樣本學習(few shot learning,FSL)可以看做每個類別樣本數目遠遠小於類別數目,也就是說每個類別僅僅只有幾個樣本可供訓練。

支持集(support set):包含着少量標註的樣本。

查詢集(query set):包含着未標註的樣本,和支持集的類別空間一致。

N-way K-shot: 表示支持集包含着KK個類別,每個類別有NN個標註樣本

episode training: 訓練在訓練集上進行,採用episode training機制。此機制和test階段是一樣的,即每一個episode 隨機採樣KK個類別,每個類別採樣NN個標註樣本構成支持集,每個類別的剩餘一小部分樣本構成查詢集,怎樣將支持集和查詢集樣本嵌入到合適的空間,使之類內的樣本相似度高,類間的樣本相似度低,是一個構建的問題。

數據集劃分:按照約定,數據集會被劃分爲訓練集,驗證集和測試集,三個集之間的類別是不相交的。

test stage:在測試階段,我們當前拿到的測試集的label當然是已知的。此時也進行類似episode training的機制,每一個episode從測試集中隨機採樣KK個類別,每個類別採樣NN個標註樣本構成支持集,此時支持集的label是已知的也是可用的,之後每個類別的剩餘一小部分樣本構成查詢集,這些樣本是需要模型分類的,label是未知的,通過模型計算得到查詢集樣本的accuracy,此時就模擬了我們在每個類別小樣本label已知的情況下,去預測其他相同label空間樣本。
在測試階段我們要進行多次episode,得到多個accuracy的值,所以此時約定取最終的accuracy爲多個episode的平均值,並report 95%的置信區間。

流行的方法

1.數據增強和正則化

這類方法比較簡單直接,數據增強是針對樣本數量過少來增加樣本,小樣本學習設置下模型非常容易陷入過擬合,因此數據增強和正則化都能作爲正則化來防止過擬合。

2.元學習(Meta Learning)

是目前主流的解決方案,首先介紹什麼是元學習。
概念介紹: 元學習的目標是利用已經學到的知識來解決新的問題。這也是基於人類學習的機制,我們學習都是基於已有知識的,而不像深度學習一樣都是從 0 開始學習的,也稱爲“學會學習” (Learning to learn)。
元學習將學習(訓練)的任務稱爲meta-training task,新的任務稱爲meta-test task。在小樣本學習中, meta training 階段將數據集分解爲不同的 meta task,去學習類別變化的情況下模型的泛化能力,在 meta testing 階段,面對全新的類別,不需要變動已有的模型,就可以完成分類。
例如分類 MiniImagenet,其中有 100 個類,我們用其中 60 個類來學習先驗知識,20個做 validation,剩餘 20 個做測試。注意我們測試的 20 個類和前面 80 個類是完全不同的,也就是新的類、新的概念、新的問題,並且這 20 個類每個類只有很少的幾張已知label的圖片 (few-shot 問題)!然後前面的 80 個類用來訓練模型和確定超參數,也就是學習幫助我們解決新問題的先驗知識。

2.1 學習微調 (Learning to Fine-Tune)

這種方法已被廣泛地應用。首先給定一個預訓練的基礎網絡,通過含有豐富標籤的大規模數據集訓練得到的,比如imagenet,然後根據特定領域的數據進行微調,通常在少量的樣本上訓練一下就可以得到不錯的效果。

數據集

1.Omniglot

介紹:它一共包含1623 類手寫體,每一類中包含20 個樣本。其中這 1623 個手寫體類來自 50 個不同地區(或文明)的 alphabets,如:Latin 文明包含 26 個alphabets,Greek 包含 24 個alphabets。
劃分:train的是 964 類(30個地區的字母),用於test的是 659 類 (20個地區的字母)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章