一:N和K的具體指代git
元學習(Meta learning)引入了一系列的概念,這其中包括N-way K-shot,Meta-training、Meta-testing、Base class和Novel class,Support set和Query set等,如圖一。github
其中Base class是Meta Training階段藉助的源域數據;Novel class是Meta Testing階段要學習的目標域數據,其中Base class和Novel class沒有交集。
具體可參見下面連接中Few-shot learning methods部分。https://annotation-efficient-learning.github.io/學習


N-way K-shot在廣義上來說N表明類別數量,K表明每一類別中樣本數量,可是類別數量N和每一類樣本數量K分別指的是Base class仍是 Novel class中的Support set仍是Query set目前尚未看到一個明確的說明。測試
爲了明確N和K的具體指代,從小樣本學習的源頭探索下:小樣本學習要解決的是Novel class樣本量少的問題,因爲深度學習是吃數據的,沒有辦法直接在Novel class小樣本上進行訓練,因此藉助Base class的數據進行學習(ps:元學習和遷移學習異曲同工過),因爲Novel class的樣本量少,即便在Base class上微調的很好,在Novel class上過擬合也會很嚴重,因此出現了構造episode的想法,統一訓練和測試的標準:Novel class上不是(N-way K-shot)小樣本嘛,在 Base class也構形成多個(N-way K-shot)小樣本任務。優化
這樣一來,再回顧下剛纔N和K具體的指代問題彷佛有了答案。N-way K-shot 問題中N和K一般是指meta testing階段Novel class中Support set下樣本類別數量和每一類的樣本量。一般爲了保持meta training階段和meta testing階段的一致性,meta training階段中Base class的Support set也會相同的設置N和K。(圖一中在meta training和meta testing階段N的不一致狀況也常常存在,在此不作解釋,但願大佬對此進行補充)spa
二:N和K對元學習結果的影響blog
這一內容在論文Meta-Dataset: A Dataset of Datasets for Learning to Learn from Few Examples 中進行了研究。如圖二所示:ci


顯然隨着N的增長,會增長分類任務的難度,從而使預測的準確率降低;隨着K的增長,對於度量學習來講,至關於減少了有偏,下降了指望風險,對於MAML和Reptile等優化二階梯度問題而言,至關於下降了每一個episodes的過擬合程度,都會提升預測的準確率。然而每種模型受K增長的影響狀況不一樣,好比:Prototypical Networks和fo-Proto-MAML隨着K的增長一開始表現很好,但很快就飽和了,當K值超過20後,Finetune baseline成了表現最優秀的。get
總結:當K值小時,使用元學習方法;K值增大,Finetune的結果更好。深度學習
上述內容僅爲我的愚見,歡迎討論交流。