1. 程式人生 > 實用技巧 >無監督學習 MoCo: Momentum Contrast for Unsupervised Visual Representation Learning

無監督學習 MoCo: Momentum Contrast for Unsupervised Visual Representation Learning

用於視覺表示學習的動量對比。

作者:Kaiming He 以及FAIR的一眾大佬

Summary

這篇文章主要解決的是無監督視覺表示學習問題。作者從將對比學習看做字典查詢(dictionary look-up)出發,使用佇列(queue)和滑動平均編碼器(moving-averaged encoder)構建動態字典。這一做法使得通過線上構建大容量且協調的字典來實現對比無監督學習成為可能。作者表示,該方法在7種檢測和分割任務上超過了有監督學習方法。

目前,已經有一些方法藉助對比損失(contrastive loss)在無監督視覺表示學習領域取得了可觀的成果,這些方法都可以被視作構建動態字典。字典中的鍵值從資料中取樣得到(圖片或patches),並使用編碼網路對這些資料進行表示。無監督學習訓練編碼器進行字典查詢:被編碼的查詢集應該與其所匹配的鍵值相似,而與其他的鍵值具有較大的差距。學習過程被表示為最小化對比損失。

從這一觀點出發,作者認為所構建的字典應該具有以下的特點:

  • 具有大容量;
  • 在訓練過程中保持前後一致。
    原因在於:更大容量的字典有利於更好地對連續且高維度的視覺空間進行取樣;同時字典中的鍵值應該使用相同或類似的編碼特徵進行表示,因而這些鍵值與查詢集的對比是連續的。然而,當前使用對比損失的方法在這兩點中的一點存在限制。

如上圖所示,作者將字典表示為資料取樣的佇列:當前mini-batch的編碼表示特徵被入隊,舊的mini-batch的編碼表示特徵被出隊。佇列的使用使得字典的大小和mini-batch的大小無關,因而字典可以有很大的容量;同時,字典的鍵值來自於先前的幾個mini-batches的融合,使用查詢集編碼特徵的基於動量的滑動平均值計算得到,保證了字典的持續性。

  • 提出了Momentum Contrast(MoCo)的無監督視覺表示學習方法;
  • 把對比學習比作查字典過程,把字典當作佇列,引入動量更新;
  • 對end-to-end、Memory Bank、MoCo三種對比學習方式進行了比較;
  • 在ImageNet和Instagram 資料集上進行大規模的訓練和對比實驗,並將訓練後的特徵遷移至下游任務進行實驗。

Problem Statement

  • 無監督表示學習在NLP領域中取得巨大的成功如GPT、BERT,但有監督預訓練仍是計算機視覺主流方法。

Methods

在這裡插入圖片描述

1.Contrastive Learning as Dictionary Look-up

在這裡插入圖片描述

2.Momentum Contrast

從上述分析來看,對比學習是一種在高維連續輸入(如圖片)中建立離散字典的方法,字典是動態的,鍵值是隨機取樣得到的,並且key encoder在訓練中進行更新。假設好的特徵可以通過包含大量negative樣本的字典中學習而來,並且key encoder能夠在更新中儘可能保持一致,基於這種思想作者提出了MoCo演算法。
Dictionary as a queue. 方法的核心是將詞典保持為資料樣本佇列。這樣可以重新利用當前mini-batch中已編碼的鍵值。同時佇列能夠將字典大小和mini-batch大小進行解耦,字典大小可以遠遠大於mini-batch的大小,可被當作超引數。由於mini-batch遵循先進先出的準則,字典總是表示一個所有資料的子集。

Momentum update. 使用佇列可以擴充字典的大小,但是對鍵值編碼器key encoder進行反向傳播變得更難(梯度會在佇列中的所有資料進行傳播)。
Relations to previous mechanisms.
在這裡插入圖片描述
以上三種方法的不同之處在於對鍵值的保持方式以及鍵值編碼器的更新方法的不同。

左側第一種:使用當前mini-batch實時更新查詢集編碼器和鍵值編碼器;

中間:構造memory bank,所有樣本的編碼特徵都被儲存在memory bank中;

右側:本論文提出的方法,使用動量法實時更新鍵值編碼器的引數。

a方法,字典大小和mini-batch大小相同,受限於GPU視訊記憶體,對大的mini-batch進行優化也是挑戰,有些pretexts進行了一些調整,能夠使用更大的字典,但是這樣不方便進行遷移使用。

b方法,Memory Bank包含資料集所有資料的特徵表示,從Memory Bank中取樣資料不需要進行反向傳播,所以能支援比較大的字典,然而一個樣本的特徵表示只在它出現時才在Memory Bank更新,因此具有更少的一致性,而且它的更新只是進行特徵表示的更新,不涉及encoder。
在這裡插入圖片描述

3.Pretext Task

在這裡插入圖片描述
Technical details. 使用ResNet作為編碼器,最後一層輸出為128D向量,即查詢query和鍵值key的表示。
Shuffling BN. 在實驗中發現Batch Norm會阻止模型學到良好的特徵表示。模型似乎會欺騙pretext task並容易找到低損失的解決方案。可能是因為由BN導致的intra-batch communication among samples洩露了資訊。
在這裡插入圖片描述

Experiment

ImageNet-1M (IN-1M)、Instagram-1B (IG-1B)10億圖片資料集。

訓練:使用ResNet-50,SGD優化器,weight_decay=0.0001,momentum=0.9

對於(1N-1M):mini-batch size=256,8GPUs,初始學習率為0.03,訓練200epochs,在120~160epoch時將學習率乘以0.1,花費72小時;

對於(1G-1B):mini-batch size=1024,64GPUs,初始學習率為0.12,指數衰減(每62.5k iterations乘以0.9)訓練1.25M iterations,花費6天。
在這裡插入圖片描述
上圖為end-to-end、memory bank、MoCo三種對比損失方法在ImageNet線性分類評價下的對比結果。
在這裡插入圖片描述
上圖為ImageNet上,MoCo和其它方法線上性分類評價下的對比結果

在這裡插入圖片描述
上圖為PASCAL VOC trainval07+12上進行微調的目標檢測結果。

在這裡插入圖片描述
上圖為end-to-end、memory bank、MoCo三種對比損失方法在PASCAL VOC目標檢測的結果。

相關工作

  • Pretext tasks. The term “pretext” implies that the task being solved is not of genuine interest, but is solved only for the true purpose of learning a good data representation.
    術語“pretext”表示要解決的任務不是真正意義上的,而是僅出於學習良好資料表示的真正目的。
  • loss functions. 常被用來研究pretext task的獨立性,包括但不限於
    • Contrastive losses [1] measure the similarities of sample pairs in a representation space
    • Adversarial losses [2] measure the difference between probability distributions,GAN和NCE有著相關聯絡

部分論文引用情況

  • Dimensionality reduction by learning an invariant mapping. In CVPR, 2006.[1] (Contrastive Learning)

  • Generative adversarial nets. In NIPS, 2014.[2]

  • Unsupervised feature learning via non-parametric instance discrimination. In CVPR, 2018. [3]

Notes

  • 本文受[3]的啟發挺多的。
  • [3]的作者在Improving Generalization via Scalable Neighborhood Component Analysis這篇文章裡提到了動量更新Memory Bank的方法。
  • 作者在文章實驗部分"Shuffling BN"中寫道"batch norm prevents the model from learning good representations"。