研讀何凱明大作Momentum contrast for unsupervised representation learning

Abstract

本文提出Momentum ContrastMoCo)用於無監督視覺表徵學習。從contrastive learning的角度,通過一個隊列和移動平均的encoder構建動態詞典。在線構建一個大的且一致性詞典,靈活適配於contrastive unsupervised learning

Introduction

無監督表徵在NLP領域獲得極大成功,例如GPTBERT。但是,在計算機視覺領域,有監督預訓練依然佔據主導地位,無監督方法進展緩慢。可以從它們所對應的信號空間進行理解。語言任務採用離散信號空間(詞,子詞單元等)來構建標記化詞典,無監督學習真是基於此。與之相反,計算機視覺的原始信號是連續的高維空間,且不是結構化的。

無監督學習的一個主要目的是預訓練表徵(如特徵),使得具體任務可以通過finetune進行優化。

Related work

         Unsupervised/self-supervised learning通常包含兩部分:pretext taskloss function。何爲pretext任務,指的並不是真實的任務,而是一種好的數據表徵。

Method

Contrastive learning as dictionary look-up

Contrastive learning可以認爲是爲字典查找任務訓練一個編碼器。

         考慮一個query q和字典的key集合{k0,k1,k2,…}。希望字典中有一個和q匹配。Contrastive loss就是一個函數,使得在q匹配且和其它key不相似值時值較小。可以採用點乘形式來表達inforNCE

下面的累和是一個正例和K個反例。

 

Momentum contrast

好的特徵表示可以通過較大字典學習獲得。

本文方案的核心在於將字典維護成一個數據採樣隊列。從而重複利用中間過程的mini-batches編碼的keys。這樣字典的大小就不用受限於mini-batch的大小,可以做到遠大於。字典中的樣本是持續更新的,最近的mini-batch數據入隊列,最久遠的mini-batch數據出隊列。

Momentum update

使用隊列可以使字典足夠大,但是它也存在不足,不能通過bp來更新編碼器(梯度將傳遞給隊列中的所有樣本)。一種簡單的做法是忽略梯度,將query encoder拷貝給key encoder。這種方案的結果不好。本文推測這是由於編碼器更新過快,降低了key表徵的一致性。

 

 

上圖展示了三種方案,展示了三種不同的字典大小和一致性。

End-to-end:採用當前mini-batch數據建立字典,確保了key編碼的一致性。字典的大小受制於mini-batch的大小,受制於GPU顯存大小。

Memory bank:一個memory bank中包含數據庫中所有樣本的特徵。每個mini-batch的字典從memory bank中隨機採樣,無梯度傳遞,可以支持較大尺寸字典。但是,memory bank中的樣本表示,採樣key的一致性較弱。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章