Prototypical Network — 原型網絡

Outline:

Sharon Peng
Jan 3, 2024
  • 使用場景
  • 相關用語
  • 精神
  • 流程
  • 應用
  • 論文出處

使用場景:

原型網路是一種用於小樣本學習(few-shot learning)的方法,訓練場景是在只有很少訓練數據的類別。

相關用語:

5 way 5 shot

  • 5 way: 五種類別。
  • 5 shot: 每個類別有五筆資料。
  • 支持集(support set):在每個 N-way K-shot 任務中,支持集包含從每個類別選擇的 K 個樣本。支持集用於訓練模型,並計算每個類別的原型。
  • 查詢集(query samples):查詢樣本會從N個類別中選擇,查詢集的主要目的是用來測試模型對於未知樣本的歸類能力。和支持集相同類別沒關係,重點是不能和支持集使用相同的「樣本」。

因此5 way 5 shot: 訓練資料,需要25筆資料。當然還要需要其他的驗證集跟測試集。下面會有更詳細的說明。

精神:

量化並比較「輸入樣本」和「各類別原型」之間的距離

原型的話,可以想成是一個空間中的vector會比較好理解(下面有圖可以參考)

訓練流程:

  1. 將原始資料轉換成電腦看得懂的向量格式
  2. 收集少量資料。
  3. 假設我的資料共有5種類別,
    — 每一個類別有幾個參考點(以下面的範例來看會有五個vector,因為是5-shot)。
    — 計算每一種類別裡面「向量的平均值」,也就是把5個vector相加起來再除以五,計算平均值的概念。
    — 最後將計算出來的平均vector當作該類別的中心點,即是途中的c1, c2, c3。

4. 先將查詢樣本map到跟原型相同的空間中。

5. 計算「原型」(平均vector)和查詢樣本之間的距離。(Euclidean distance),目的是要去評估目前模型對於新樣本的泛化能力如何。

6. 將查詢樣本歸類到某一個類別。

7. 歸類正確,太棒了!
— 歸類錯誤,模型會得到較高的loss值,並且調整模型更新力度。

8. 不斷重複,值得得到比較低的loss值。

9. 模型訓練完成!

source

不知道大家會不會有個疑問是,請問要取多少個查詢樣本?

一般來說比query samples會比support set要來得多。例如,你可以從每個類別中選擇15個不同的樣本,總共75個樣本作為查詢集。

應用:

論文中使用了兩個資料及來進行驗證,而我們這邊就只用他所提到的miniImageNet資料集來做說明。資料包含 60,000 張 84×84 像素的彩色圖像,圖像又被劃分成 100 個類別,每個類別有 600 張圖片。

資料集的分割方式:
訓練資料:64 個類別
驗證資料:16 個類別
測試資料:20 個類別

如果之前有訓練過相關的模型,應該還會覺得哪邊怪怪的,訓練使用到5個類別,那驗證跟測試呢?以下會說明到底什麼是5-way 1-shot的訓練方法。

其實主要的想法就是5-way 1-shot不侷限在在訓練資料集裡面,而是同樣包含「驗證」跟「測試」資料集。因此,用上面的範例,我們可以知道在

訓練階段中,5-way會從64個類別裡面,隨機取得5個類別。1-shot則是從每個類別中取出一張圖片。
而在驗證階段,也會從16個驗證類別中,隨機取五個類別,從每個類別中取出一張圖片。來進行測試,並調整模型。
最後的測試階段,也是從20個類別中,隨機取5個類別來進行測試,從每個類別中取出一張圖片。

可能在這邊也會有疑問說:那query sample跟驗證集之間的關係是什麼?

  • 查詢樣本(Query Samples):

主要用來評估模型目前的泛化能力如何,直接餐數模型參數的調整。

  • 驗證集(Validation Set):

主要用來評估模型在訓練過程中的進展,並沒有直接訓練模型參數,可以幫助的部分是調整「超參數」避免模型過擬合

--

--

Sharon Peng
Sharon Peng

No responses yet