更新於 2024/12/16閱讀時間約 6 分鐘

淺談Few-Shot Learning:(1): 初步認識

前言

這系列是關於 Few-Shot Learning,主要因為我最近在一個影像分類專案中遇到了資料稀缺的狀況。在尋找解決方案時,survey 了許多關於 Few-Shot Learning 的知識,並想在這裡紀錄與分享學習內容。由於專案的關係需要快速 implement,所以文章將主要集中在實作的部分。如果你對這個主題感興趣,歡迎繼續閱讀~那我們開始囉!

Photo by David Travis on Unsplash

Photo by David Travis on Unsplash

一句話說明 Few shot learning

Few-Shot Learning 是一種機器學習方法,它使模型能夠從非常少量的訓練數據中學習並作出有效的預測或分類。

Few-Shot Learning 的應用價值

我們已知 Few shot 擅長用在 small data(這裡的 small data 是與 big data 相比),所以首先先探討 small data 的應用價值有哪些:

  1. 模擬人類的快速學習: 更接近人類的學習方式,如同舉一反三,人類在學習一件事情的時候,例如在看一個貓咪的圖片,可能看三張就有能力辨識照片中的貓咪,反倒不需要看過100或是上千張才獲得該能力。
  2. 處理稀有資料:會這樣需要是因為真實世界有很多情境上資料是非常稀有的,但同時它又是重要的預測目標。
  3. 降低標註成本: 那是因為人類在標注花很多時間,文章舉例,分類問題人類就需要針對圖片進行分類標註,而且隨著模型能夠偵測與似乎看得更加仔細後,進展到 bounding box 和 segementation ,那這就需要花費很多的時間。

Few-Shot Learning 的目標與核心實施方法

目標

Few-Shot Learning的主要目標是利用有限的數據(source data)快速學習,並能適應從未見過的新任務。

為了達成目標,N-way-K-shot 是一個核心的實作與評估框架。

N-way-K-shot 的功能

  • 實作方法:通過選擇特定的「N」類別和「K」樣本,可以創建一個定制的學習任務,使模型學習如何從少量數據中識別和分類這些類別。這種設定使模型能夠在有限的資訊下迅速適應。
  • 評估方法:過測試模型在一組全新的、只有K個樣本的類別中的表現,可以評估模型的Few-Shot Learning能力。這不僅展示了模型對新類別的快速適應能力,也反映了其泛化能力。

了解這些實作和評估方法的重要性後,我們自然會好奇這些方法相比於傳統的大數據訓練模型會有何不同。

實驗觀察與結論

根據Google Meta dataset的研究,當進行 Few-Shot Learning 的 N-way-K-shot 實驗時發現:

  1. 類別數量增加時,準確率降低:實驗顯示,當「N-way」(類別數)增加時,模型的準確率往往會下降,這可能是因為類別間的區分難度增加。
  2. 樣本數量增加時,識別能力提高:同時,「K-shot」(每類樣本數)增加時,模型的鑒別度會提高,顯示出更多的數據能夠幫助模型更好地學習和區分不同的類別。

從這些觀察可以推論:當資料不足時,N-way-K-shot 提供了一種有效的數據利用和學習方法。因此,在數據有限的情況下,適當選擇「N」和「K」的值,可以最大化學習效率和效果。而當資料充足時,使用大數據訓練模型通常能達到更好的效果。

為什麼 Few-Shot Learning 能有效學習

Few-Shot Learning 之所以能有效進行學習,關鍵在於它不僅學習特定的任務,還學習如何更好地學習。在探討之前,我們先了解為什麼傳統機器學習不適合小數據應用:

  1. 參數初始化和學習率:傳統方法通常從隨機參數開始,使用固定學習率進行梯度下降,這在面對未知的新任務時可能難以適應,因為模型對新數據的反應不夠靈活。
  2. 任務間的轉換困難:當模型需要從一個任務切換到另一個極具差異的任務時,原先針對特定任務訓練過的模型可能無法適應新的任務要求。

Few-Shot Learning的策略

Few-Shot Learning採用了關鍵策略克服這些挑戰,主要通過以下兩種面向:

  1. 學習初始參數:
  • MAML (Model-Agnostic Meta-Learning):此方法不僅學習解決特定任務,還學習如何設置最佳的初始參數配置,使得模型可以在少數梯度更新後迅速適應新任務。
  • Reptile(MAML的變形):這是MAML的一種變形,它透過反復訓練多個不同的任務來尋找一個通用的初始參數設置,從而使模型能更好地適應多種任務。

2. 學習調整學習率:

  • 動態梯度下降(利用RNN):這種方法使用遞歸神經網絡(RNN)來動態調整學習率和其他參數。RNN的適應性允許學習過程根據任務的具體需求實時調整,提高了模型對新任務的快速適應能力。

因為這樣的關鍵核心技術,才使得 few shot learning 在處理小數據具備能力,且能特別快速適應新環境。

小心得

這篇篇幅稍微比較短一些,內容主要參考與整理來自: 小資料系列初篇-Few-Shot Learning簡介,擷取當中重點並且重新架構,僅保留與本主題有關的部分,那下一篇會使用資料集做一個簡單的實作,預計這系列三到五篇。

我們下次見~

附上在 Heptabase 白板整理的 snapshot (一起紀錄白板的成長過程?)

有需要的話~ 🎁 Heptabase 折扣碼:https://join.heptabase.com?invite-acc-id=889dbd70-632c-446d-b7f8-ffa41b27e716

Heptabase 白板 snapshot

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.