2021年8月29日 星期日

Visual Self-Supervised Learning 論文整理(一)

Self-Supervised Learning 想解決的問題是從所有的圖片中學到一組類神經網路,使得任何一張圖片經過此類神經網路以後能變成一組向量,而此向量即為圖片的特徵向量,可以很輕鬆地用於其他的機器學習問題,像是分類、物體偵測等等。本文將大致介紹近幾年來最熱門的 Visual Self-Supervised Learning 的論文。

MoCo

MoCo [1] 設計的精神是 Contrastive Learning,也就是說對於一個特徵向量 query \(q\) 來說,假設一個字典裡有 k 個特徵向量 \(k_0, ... k_{k-1}\) 是從其他隨機圖片中產生的負樣本,以及一個特徵向量 \(k_{+}\) 是從同一張圖的 augmentation 產生的正樣本,則在訓練完成的結果之下 \(q\) 會與 \(k_+\) 最為接近,也就是以下的 InfoNCE loss function:\[L_q = -log \frac{exp(q \cdot k_+ / \tau)}{\sum exp(q \cdot k_i / \tau)}\] MoCo 的文章中討論了三種可能性,如下圖:

MoCo

第一個可能性是分別訓練 q 及 k 的模型,但這種方法的缺點是負樣本的數目受到 batch size 的限制,也就是說一組樣本無法跟太多組負樣本來比較學習。第二種可能性是從一個預先的 memory bank 取樣本來得到 k,而此方法的問題是每次取樣本的過程中可能會產生不一致的結果,因此本文作者提出的方法為介於兩者之中的方法:momentum encoder,也就是說右半邊的 momentum encoder 為左半邊 encoder 的加權平均,而 back propagation 只更新 encoder 的參數不更新 momentum encoder 的參數。Momentum encoder 的參數由以下式子來更新:\[\theta_k = m\ \theta_k + (1-m)\ \theta_q\]

SimCLR

SimCLR [2] 利用了能夠跑巨大 batch size 的特性,使用的方法與上圖 (a) 非常相似。以下為論文中的架構圖:

SimCLR

以下為一些本文用到的技巧:

  1. 更多類型的 data augmentation
  2. 利用 \(g\) (projection head) 將 representation 向量 \(h\) 轉換成 \(z\) 再求 loss function。實驗結果指出一個 hidden layer 的 MLP 即非常有效。

MoCo v2

MoCo v2 [3] 將 SimCLR 用到的技巧與 MoCo 相結合,在大為縮小 batch size 的條件下仍然比 SimCLR 的表現更佳。以下為架構圖:

MoCo v2

參考資料

[1] Momentum Contrast for Unsupervised Visual Representation Learning

[2] A Simple Framework for Contrastive Learning of Visual Representations

[3] Improved Baselines with Momentum Contrastive Learning 

沒有留言:

張貼留言