點擊下面卡片關注“AI算法與圖像處理”,選擇加"星標"或“置頂”
重磅乾貨,第一時間送達
導讀
本文是FAIR的陳鑫磊&何愷明大神在無監督學習領域又一力作,目前已收錄於CVPR 2021 Oral!其提出了一種非常簡單的表達學習機制用於避免表達學習中的“崩潰”問題,從理論與實驗角度證實了所提方法的有效性;與此同時,還側面證實了對比學習方法成功的關鍵性因素:孿生網絡。
paper: https://arxiv.org/abs/2011.10566
Abstract
孿生網絡已成爲無監督表達學習領域的通用架構,現有方法通過最大化同一圖像的兩者增廣的相似性使其避免“崩潰解(collapsing solutions)”問題。在這篇研究中,作者提出一種驚人的實證結果:Simple Siamese(SimSiam)網絡甚至可以在無((1) negative sample pairs;(2)large batch;(3)momentum encoders)的情形下學習有意義的特徵表達。
作者通過實驗表明:對於損失與結構而言,“崩潰解”確實存在,但是“stop-gradient”操作對於避免“崩潰解”有非常重要的作用。作者提出了一種新穎的“stop-gradient”思想並通過實驗對其進行了驗證,該文所提SimSiam在ImageNet及下游任務上均取得了有競爭力的結果。作者期望:這個簡單的基準方案可以驅動更多研員重新思考無監督表達學習中的孿生結構。
Method
上圖給出了該文所提SimSiam的示意圖,它以圖像 的兩個隨機變換 作爲輸入,通過相同的編碼網絡 (它包含一個骨幹網絡和一個投影MLP頭模塊,表示爲h)提取特徵並變換到高維空間。此外作者還定義了一個預測MLP頭模塊h,對其中一個分支的結果進行變換並與另一個分支的結果進行匹配,該過程可以描述爲 ,SimSiam對上述特徵進行負cosine相似性最小化:
注:上述公式等價於 規範化向量的MSE損失。與此同時,作者還定義了一個對稱損失:
上述兩個損失作用於每一張圖像,總損失是所有圖像損失的平均,故最小的可能損失爲-1.
需要的是:該文一個非常重要的概念是Stop-gradient
操作(即上圖的右分支部分)。可以通過對上述公式進行簡單的修改得到本文的損失函數:
也就是說:在損失 的第一項, 不會從 接收梯度信息;在其第二項,則會從 接收梯度信息。
SimSiam的實現僞代碼如下,有沒有一種“就這麼簡單”的感覺???
# Algorithm1 SimSiam Pseudocode, Pytorch-like
# f: backbone + projection mlp
# h: prediction mlp
for x in loader: # load a minibatch x with n samples
x1, x2 = aug(x), aug(x) # random augmentation
z1, z2 = f(x1), f(x2) # projections, n-by-d
p1, p2 = h(z1), h(z2) # predictions, n-by-d
L = D(p1, z2)/2 + D(p2, z1)/2 # loss
L.backward() # back-propagate
update(f, h) # SGD update
def D(p, z): # negative cosine similarity
z = z.detach() # stop gradient
p = normalize(p, dim=1) # l2-normalize
z = normalize(z, dim=1) # l2-normalize
return -(p*z).sum(dim=1).mean()
我們再來看一下SimSiam的基礎配置:
-
Optimizer: SGD用於預訓練,學習率爲 , 基礎學習率爲 ,學習率採用consine衰減機制,weight decay=0.0001,momentum=0.9。BatchSize默認512,採用了SynBatchNorm。 -
Projection MLP:編碼網絡中投影MLP部分的每個全連接層後接BN層,其輸出層 後無ReLU,隱含層的 的維度爲2048,MLP包含三個全連接層。 -
Prediction MLP:預測MLP中同樣適用了BN層,但其輸出層 後無BN與ReLU。MLP有2個全連接層,第一個全連接層的輸入與輸出維度爲2048,第二個的輸出維度爲512. -
Backbone:作者選用了ResNet50作爲骨幹網絡。
作者在ImageNet上線進行無監督預訓練,然後採用監督方式凍結骨幹網絡訓練分類頭,最後在驗證集上驗證其性能。
Empirical Study
在該部分內容中,我們將實證研究SimSiam的表現,主要聚焦於哪些行爲有助於避免“崩潰解”。
Stop-gradient
上圖給出了Stop-gradient
添加與否的性能對比,注網絡架構與超參保持不變,區別僅在於是否添加Stop-gradient
。
上圖left表示訓練損失,可以看到:在無Stop-gradient
時,優化器迅速找了了一個退化解並達到了最小可能損失-1。爲證實上述退化解是“崩潰”導致的,作者研究了輸出的
規範化結果的標準差。如果輸出“崩潰”到了常數向量,那麼其每個通道的標準差應當是0,見上圖middle。
作爲對比,如果輸出具有零均值各項同性高斯分佈,可以看到其標準差爲
。上圖middle中的藍色曲線(即添加了Stop-gradient
)接近
,這也就意味着輸出並沒有“崩潰”。
上圖right給出了KNN分類器的驗證精度,KNN分類器可用於訓練過程的監控。在無Stop-gradient
時,其分類進度僅有0.1%,而添加Stop-gradient
後最終分類精度可達67.7%。
上述實驗表明:“崩潰”確實存在。但“崩潰”的存在不足以說明所提方法可以避免“崩潰”,儘管上述對比中僅有“stop-gradient”的區別。
Predictor
上表給出了Predictor MLP的影響性分析,可以看到:
-
當移除預測MLP頭模塊h(即h爲恆等映射)後,該模型不再有效(work);
-
如果預測MLP頭模塊h固定爲隨機初始化,該模型同樣不再有效;
-
當預測MLP頭模塊採用常數學習率時,該模型甚至可以取得比基準更好的結果(多個實驗中均有類似發現).
Batch Size
上表給出了Batch Size從64變換到4096過程中的精度變化,可以看到:該方法在非常大範圍的batch size下表現均非常好。
Batch Normalization
上表比較了投影與預測MLP中不同BN的配置對比,可以看到:
-
移除所有BN層後,儘管精度只有34.6%,但不會造成“崩潰”;這種低精度更像是優化難問題,對隱含層添加BN後精度則提升到了67.4%; -
在投影MLP的輸出後添加BN,精度可以進一步提升到68.1%; -
在預測MLP的輸出添加BN後反而導致訓練變的不穩定。
總而言之,BN有助於訓練優化,這與監督學習中BN的作用類似;但並未看到BN有助於避免“崩潰”的證據。
Similarity Function
所提方法除了與cosine相似性組合表現好外,其與交叉熵相似組合表現同樣良好,見上表。此時的交叉熵相似定義如下:
可以看到:交叉熵相似性同樣可以收斂到一個合理的解並不會導致“崩潰”,這也就是意味着“崩潰”避免行爲與cosine相似性無關。
Symmetrization
儘管前述描述中用到了對稱損失,但上表的結果表明:SimSiam的行爲不依賴於對稱損失:非對稱損失同樣取得了合理的結果,而對稱損失有助於提升精度,這與“崩潰”避免無關。
Summary
通過上面的一些列消融實驗對比分析,可以看到:SimSiam可以得到有意義的結果而不會導致“崩潰”。優化器、BN、相似性函數、對稱損失可能會影響精度,但與“崩潰”避免無關;對於“崩潰”避免起關鍵作用的是stop-gradient
操作。
Hypothesis
接下來,我們將討論:SimSiam到底在隱式的優化什麼?並通過實驗對其進行驗證。主要從定義、證明以及討論三個方面進行介紹。
Formulation
作者假設:SimSiam是類期望最大化算法的一種實現。它隱含的包含兩組變量,並解決兩個潛在子問題,而stop-gradient
操作是引入額外變換的結果。我們考慮如下形式的損失:
其中 分別表示特徵提取網絡與數據增廣方法,x表示圖像。在這裏,作者引入了另外一個變量 ,其大小正比於圖像數量,直觀上來講, 是x的特徵表達。
基於上述表述,我們考慮如下優化問題:
這種描述形式類似於k-means聚類問題,變量 與聚類中心類似,是一個可學習參數;變量 與樣本x的對應向量(類似k-means的one-hot向量)類似:即它是x的特徵表達。類似於k-means,上述問題可以通過交替方案(固定一個,求解另一個)進行求解:
對於
的求解,可以採用SGD進行子問題求解,此時stop-gradient
是一個很自然的結果,因爲梯度先不要反向傳播到
,在該子問題中,它是一個常數;對於
的七屆,上述問題將轉換爲:
結合前述介紹,SimSiam可以視作上述求解方案的一次性交替近似。
此外需要注意:(1)上述分析並不包含預測器h;(2) 上述分析並不包含對稱損失,對稱損失並非該方法的必選項,但有助於提升精度。
Proof of concept
作者假設:SimSiam是一種類似交錯優化的方案,其SGD更新間隔爲1。基於該假設,所提方案在多步SGD更新下同樣有效。爲此,作者設計了一組實驗驗證上述假設,結果見下表。
在這裏, 等價與SimSiam。可以看到:multi-step variants work well。更多步的SGD更新甚至可以取得比SimSiam更優的結果。這就意味着:交錯優化是一種可行的方案,而SimSiam是其特例。
Comparison
前述內容已經說明了所提方法的有效性,接下來將從ImageNet以及遷移學習的角度對比一下所提方法與其他SOTA方法。
上圖給出了所提方法與其他SOTA無監督學習方法在ImageNet的性能,可以看到:SimSiam可以取得具有競爭力的結果。在100epoch訓練下,所提方法具有最高的精度;但更長的訓練所得收益反而變小。
上表給出了所提方法與其他SOTA方法在遷移學習方面的性能對比。從中可以看到:SimSiam表達可以很好的遷移到ImageNet以外的任務上,遷移模型的性能極具競爭力。
最後,作者對比了所提方法與其他SOTA方法的區別&聯繫所在,見上圖。
-
Relation to SimCLR:SimCLR依賴於負採樣以避免“崩潰”,SimSiam可以是作爲“SimCLR without negative”。
-
Relation to SwAV:SimSiam可以視作“SwAV without online clustering”.
-
Relation to BYOL: SimSiam可以視作“BYOL without the momentum encoder”.
全文到此結束,對該文感興趣的同學建議去查看原文的實驗結果與實驗分析。
Conclusion
該文采通過非常簡單的設計探索了孿生網絡,所提方法方法的有效性意味着:孿生形狀是這些表達學習方法(SimCLR, MoCo,SwAR等)成功的關鍵原因所在。孿生網絡天然具有建模不變性的特徵,而這也是表達學習的核心所在。
相關文章
-
SimCLR: A simple framework for contrastive learning of visual representations -
SimCLRv2: Big self-supervised models are strong semi-supervised learners. -
SwAV:Unsupervised learning of visual features by contrasting cluster assignments -
MoCo: Momentum contrast for unsupervised visual representation learning. -
MoCov2:Improved baselines with momentum contrastive learning -
BYOL: Bootstrap your own latten: A new aproach to self-supervised learning. -
CPC: Data efficient image recognition with contrastive predictive coding. -
PIC: Parametric instance classification for unsupervised visual feature learning.
個人微信(如果沒有備註不拉羣!)
請註明:
地區+學校/企業+研究方向+暱稱
下載1:何愷明頂會分享
在「AI算法與圖像處理」公衆號後臺回覆:何愷明,即可下載。總共有6份PDF,涉及 ResNet、Mask RCNN等經典工作的總結分析
下載2:終身受益的編程指南:Google編程風格指南
在「AI算法與圖像處理」公衆號後臺回覆:c++,即可下載。歷經十年考驗,最權威的編程規範!
下載3 CVPR2021
在「AI算法與圖像處理」公衆號後臺回覆:
CVPR
,即可下載1467篇CVPR 2020論文 和 CVPR 2021 最新論文
點亮 ,告訴大家你也在看
本文分享自微信公衆號 - AI算法與圖像處理(AI_study)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。