- Time: 2019年10月27日
- Author:Veagau
在看講Repitle的論文【On First-Order Meta-Learning Algorithm】時,實驗環節對N-Way K-Shot分類問題的SetUp進行的描述引起了我的二度思考,以前對這個問題的理解感覺沒摸透,以此為貧訓,重新思考得出了一種理解,
所謂N-Way K-Shot 分類問題 就是指用少量樣本構建分類任務,主要應用于少樣本學習(Few-Shot Learning)領域樣本資料不足的情況,后來逐漸延伸到元學習(Meta-Learning)領域,
元學習需要通過在大量的任務上進行學習,學習到泛化能力強大的模型演算法,以快速適應新的任務,即
學會學習,因為元學習是以一個個的任務(如分類任務)作為自己的訓練資料的,傳統的基于大量資料的訓練任務顯然不適用于目前的研究(算力約束),
從字面上理解,N-Way就是N-路或N-類,K-Shot就是K-次或K-個,
每次在構建分類任務時,從資料集里抽取N-類的資料,每一類資料由K-個樣本構成,這樣就形成了一個小型分類任務的資料集,實際上就是原始資料集的一次采樣,
那這個小型分類任務的訓練集和測驗集具體是怎么劃分的呢?
其實這個問題也是困擾我很久的,看了幾篇文獻都沒明白,訓練程序中用的是什么資料?測驗程序中呢?直到我看到這篇論文中的描述:
If we are doing K-shot, N-way classification, then we sample tasks by selecting N classes from C and then selecting
K + 1 examplesfor each class. We split these examples into a training set and a test set, where the test set contains a single example for each class.
其中關鍵的一點就是,在取資料時對于N類資料,每一類其實取了K+1個樣本,而不是K個!
然后就是這個+1引出了我的理解,
以5-Way 5-Shot分類問題為例,在構建一個任務的資料集時的具體流程應該如下:
從元資料集(Meta-dataset)中隨機抽取5類(Way)樣本,每一類樣本隨機抽取5+1個(Shot)實體
元資料集:也就是整體資料集中,可以理解為傳統的大型資料集,其中的資料類別>>N-Way,每一類的實體數量>>K-Shot.從這5類樣本的6個實體中,每類樣本隨機抽取5個實體一起作為Training Set(→
Support Set),每一類剩下的一個實體一起組成Testing Set(→Query Set),由于元學習是以任務(Task)作為自己的訓練資料的,即元學習的實際訓練集和測驗集是由一個個的Task組成的,所以為了進行區分,每個任務內部的訓練集(Training Set)更名為支持集(Support Set)、測驗集更名為查詢集(Query Set),
訓練:從Support Set中每一類隨機選取一個實體,一起夠成一組訓練資料,輸入到模型中,進行訓練,
測驗:從Query Set中隨機抽取一個實體,用模型判斷其屬于哪一類,
這個判斷程序其實可以視為一種查詢程序,給定了支持集,只要讓模型能夠準確的查詢到其屬于支持集中的哪一類即可證明模型性能較好,
重復幾輪,最終得出該任務模型的準確率,實際上即是
元學習引數確定的模型在該任務上的損失,損失梯度反向傳播到元學習引數,對其進行更新,也即元學習程序,
圖示如下:
| Way 1 (C1) |
Way 2 (C2) |
Way3 (C3) |
Way 4 (C4) |
Way5 (C5) |
|
|---|---|---|---|---|---|
| C~11~ | C~21~ | C~31~ | C~41~ | C~51~ | Support |
| C~12~ | C~22~ | C~32~ | C~42~ | C~52~ | Support |
| C~13~ | C~23~ | C~33~ | C~43~ | C~53~ | Support |
| C~14~ | C~24~ | C~34~ | C~44~ | C~54~ | Support |
| C~15~ | C~25~ | C~35~ | C~45~ | C~55~ | Support |
| C~16~ | C~26~ | C~36~ | C~46~ | C~56~ | Query |
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/65620.html
標籤:其他
上一篇:機器學習筆記(一)
