天天看點

論文解讀丨無監督視覺表征學習的動量對比

摘要:本文提出了一個用于無監督視覺表征學習的動量對比方法(MoCo)。從将對比學習作為字典查詢過程的角度來看,本文建構了一個由隊列和移動平均編碼器組成的動态字典。

本文分享自華為雲社群《論文解讀系列二十九:無監督視覺表征學習的動量對比》,作者:谷雨潤一麥。

論文解讀丨無監督視覺表征學習的動量對比

摘要

本文提出了一個用于無監督視覺表征學習的動量對比方法(MoCo)。從将對比學習作為字典查詢過程的角度來看,本文建構了一個由隊列和移動平均編碼器組成的動态字典。這使得可以實時地建構一個巨大的并且具有一緻性的字典,是以可以促進對比無監督學習。通過MoCo學習到的特征可以很好地在下遊任務完成遷移。MoCo在七個檢測和分割任務上都超越了對應的有監督預訓練模型,這告訴我們在許多視覺任務上有監督和無監督模型之間的差距已經大大地縮小。

背景

GPT和BERT這些模型充分展示了無監督表征學習在自然語言處理領域的成功。但在計算機視覺領域,有監督的預訓練依然占據着主導地位,無監督方法則遠遠落後。這其中的原因可能是他們各自信号空間的差異性。語言任務擁有離散的視覺信号,這有助于建構令牌化的字典,無監督學習正是基于這種字典。相比之下,視覺任務更加關注字典的建構,因為原始的信号位于連續的高維空間,它不像單詞一樣對人類的交流來說是結構化的。

動機

從視覺信号空間角度出發,本文猜想需要建構一個具有以下兩個特征的字典:(1)大容量的(2)在訓練過程中的演變需要具有一緻性。直覺上,一個更大的字典可以更好的采樣底層的連續高維視覺空間。與此同時,字典中的鍵應由相同的或者相似的編碼器表示,以便他們與查詢的比較具有一緻性。

本文提出了Momentum Contrast (MoCo),将其作為為無監督學習建構大型一緻性字典的方法(如圖一)。本文将字典作為一個資料樣本的隊列來進行維護:當目前的小批量資料的編碼表示入隊的時候,時間最久的批次就會出隊。通過這種隊列的方式,将字典大小和小批量大小解耦,讓字典的規模可以變得更大。更重要的是,

論文解讀丨無監督視覺表征學習的動量對比

圖一 動量對比

方法

作為字典查詢的對比學習

對比學習以及它最近的發展,都可以看做是訓練一個用來做字典查詢的編碼器。我們考慮一個待編碼的查詢q和一系列待編碼的樣本{k~0~,k~1~,k~2~,$\ldots$​​​​​​​​},他們構成了字典的鍵。假設字典中有一個鍵(标記為k~+~)正好是查詢q需要比對的,當q和正樣本鍵k~+~非常相似,和其他所有的負樣本鍵都不相似時,損失函數的值應該是非常低的,而對比損失函數正是這樣一個函數。當用點積來度量兩個鍵的相似性時,這就是InfoNCE 這個對比損失函數,也正是本文所采用的對比損失函數:

其中$\tau$​​​​是一個溫度超參數,分母是同時計算了一個正樣本和K個負樣本之和。實際上這個函數的本質是一個基于softmax的(K+1)類分類器的對數損失函數。這個表達式中,分類器試圖将q分類為k~+~。

對比損失函數作為無監督學習方法的目标函數,被用來訓練表征查詢和鍵的編碼網絡。一般情況下,查詢可以被表示為$q=f_q(x^q)$​,其中$f_q$是一個編碼器網絡,$x^q$​是一個查詢樣本(鍵的表示是類似的,$k=f_k(x^k)$)。他們的初始化取決于特定的代理任務,輸入$x^q$​和$x^k$可以是圖像,圖像切片或者由一系列切片構成的上下文。編碼網絡$f_q$和$f_k$可以是相同的,部分共享的或者完全不同的。

動量對比

從上面的描述可以看出,對比學習是一種在高維連續輸入(例如圖像)上建立離散字典的方法。因為輸入鍵是随機采樣的,是以字典也是動态的,并且在推理過程中鍵編碼器會不斷演變。本文假設好的特征表達可以通過一個包含豐富負樣本的大字典學習到,與此同時,盡管鍵編碼器會不斷演變,但對字典的鍵的編碼應最大可能保持一緻。基于上述假設,本文提出了動量對比。

字典作為一個隊列。文本方法的核心在于用資料樣本的隊列來維持字典,這樣可以對來自

前面小批次的編碼鍵進行重用。通過引入隊列,本文将字典的大小與資料批次的大小解耦開來,是以本文的字典大小可以遠大于常用的批次的大小。

字典中的樣本是循序漸進逐漸被替代的。目前批次的資料入隊,最先進入的批次就出隊。這樣字典總是表征了全體資料的一個采樣子集,與此同時維持這個字典的額外開銷也是可管理的。更重要的是,移除掉最先進入隊列的樣本批次也是非常合理和有利的,因為它編碼的鍵是最過時的和目前最新的資料的一緻性是最小的。

動量更新。使用隊列可以讓字典更大,但同時也讓更新鍵編碼器的反向傳播變得困難,梯度需要傳播到隊列中的所有樣本。一個簡單的解決辦法是直接從查詢編碼器$f_q$直接複制鍵編碼器$f_k$,不考慮鍵編碼器的梯度。但是這個方法在實驗中表現非常差,本文猜想導緻這個問題的原因是,快速地改變鍵編碼器降低了鍵表征的一緻性。是以本文提出了動量更新的政策來解決這個問題。

具體來說,用$\theta_k$和$\theta_q$分别表示編碼器$f_k$和$f_q$的參數,然後通過下面的式子對參數$\theta_k$進行更新:

其中$m \in \left[ 0, 1 \right)$​是動量​系數,隻有參數$\theta_q$通過反向傳播進行更新。通過公式(2)的更新方式,$\theta_k$要比$\theta_q$更新的更加平滑。最終,雖然隊列中的鍵是被不同的編碼器進行編碼的,但是這些編碼器之間的差異非常小。從實驗結果來看就是,一個相對更大的動量系數(例如:$m=0.999$)效果要好于更小的值(例如:$m=0.9$),從中我們也可以看出一個變化緩慢的鍵編碼器是利用隊列的核心。

和以往方法的關系。MoCo是一個通用的利用對比損失函數進行學習的機制。本文将它和現有的另外兩種通用機制(如圖二)進行了對比,他們的不同特性主要展現在字典大小和一緻性這兩個方面上。

論文解讀丨無監督視覺表征學習的動量對比

圖二 三種不同對比損失的機制的比較

圖二a展示的通過方向傳播進行梯度更新的端到端的方式是一個非常自然的機制,他利用目前批次的樣本作為字典,是以這些鍵的編碼具有表征具有一緻性。但對應的字典大小就和批量大小發生了耦合,而批量大小又被GPU的顯存大小限制住了。與此同時大批量資料的優化問題也是一個挑戰。

另一個機制就是記憶體池的方法,如圖二b所示。記憶體池由資料中的所有樣本的表征組成,每一個批次的字典都可以不用通過反向傳播直接從記憶體池中随機采樣,是以他可以支援足夠大的字典規模。但記憶體池中的樣本表征在它上次别看見之後就會更新,是以在一個輪次中的不同疊代步數中他們是不具備一緻性的。動量更新的方法從記憶體池方法改進而來,不同的是本文提出的方法是在編碼器上更新而不是直接對樣本的表征進行更新。是以MoCo不需要記錄每一個樣本,更重要的是,MocCo在記憶體利用上更加的有效,而且可以在億級别上的資料進行訓練,這對基于記憶體池的方法來說是不切實際的。

代理任務

對比學習可以驅動各種代理任務,本文關注的交點不是設計一個新的代理任務,是以采用了一個簡單的執行個體區分任務作為代理任務。具體來說,如果一個查詢和一個鍵他們來自同一張圖檔,那麼我們就認為他們是一對正樣本對,反之則是一對負樣本對。和之前的方法一樣,本文對同一張圖檔進行随機的資料增強形成兩張不同視角的圖檔作為正樣本對。然後編碼器$f_q$和$f_k$分别對查詢和鍵進行編碼,編碼器$f_q$和$f_k$可以是任意的卷積神經網絡。

實驗

線性分類方案

首先利用MoCo在ImageNet-1K資料集上進行無監督訓練,然後固定編碼器的參數,再通過有監督的方式訓練一個線性分類器。分類器的輸入為編碼器的輸出特征的平均池化,分類器由線性層和softmax層組成,最後在ImageNet驗證集上進行測試。

本文對比了三種不同對比損失的機制的表現如圖三所示。

論文解讀丨無監督視覺表征學習的動量對比

圖三 三種對比損失機制的結果對比

同時和已有的方法做了對比,在相同參數的情況下準确率都超過了現有方法。

論文解讀丨無監督視覺表征學習的動量對比

圖四 在ImageNet上的線性分類器結果對比

特征遷移方案

無監督學習的主要目标就是學習具有可遷移性的特征,ImageNet監督預訓練在作為下遊任務微調的初始化中的影響是最大的。本文對比了MoCo和ImageNet監督訓練得到的模型,在遷移到不同資料集上不同任務的表現。在大部分情況下,MoCo都得到了優于ImageNet監督訓練的表現。

論文解讀丨無監督視覺表征學習的動量對比

圖五 PASCAL VOC 資料集上微調目标檢測任務和現有方法對比結果

論文解讀丨無監督視覺表征學習的動量對比

圖六 目标檢測和執行個體分割任務在COCO上的微調與ImageNet監督訓練對比

論文解讀丨無監督視覺表征學習的動量對比

圖七 MoCo和ImageNet有監督預訓練在其他任務上的對比

點選關注,第一時間了解華為雲新鮮技術~

繼續閱讀