Exploring Simple Siamese Representation Learning【閱讀筆記】


arxiv上23號新放出的何凱明大神的新作。針對Siamese Network中的collapsing問題進行了分析,並指出,目前避免這個問題的一些方法:負樣本,大batch,momentum encoder其實都是不必要的。在避免collapsing問題中,stop-gradient操作非常重要,同時他的重要性說明了他可能解決的是另一個潛在的優化問題。

 

  Siamese Network是近年來自監督/無監督任務中非常常用的網絡,他是應用於兩個或更多輸入的一個權值共享的網絡,是比較兩個實體天然的工具。目前的大部分方法都是用一個圖像的兩種augmentation作為輸入,在不同的條件下來最大化他們的相似度。但是Siamese Network會遇到的一個問題是,他的解可能會collapse至一個常量。目前常用的解決這個問題的方法有:Contrastive Learning,引入負樣本,負樣本會把constant 輸出排除到解空間以外;Clustering;momentum encoder。

  在本文中作者就指出,一個簡單的Siamese 網絡不需要以上方法也可以有效避免collapsing問題,並且不依賴於large-batch訓練。作者將他們的方法稱為“SimSiam”,並指出其中的stop-gradient操作才是在避免collapsing中非常重要的。這可能是由於有一個潛在的優化問題被解決了。作者推測實際上這里有兩組變量,SimSiam實際上是在交替優化每一組變量。

  SimSiam和其他很多方法(SimCLR,SwAV,BYOL)都有聯系,這應該是這些相關方法有效的關鍵原因。Siamese網絡在建模不變性時引入了歸納偏置(inductive bias,或者說是先驗)。這里的不變性(invariance)指的時同一個概念的兩個觀測應該產生相同結果。這其實和卷積是類似的。卷積實際上是一個成功的歸納偏置,他是通過在建模變換不變性時使用權值共享。而共享權值的Siamese網絡則是針對更加復雜的變換(比如,augmentation)建模不變性。

 

Method

  SimSiam結構如圖1,輸入是$x$的兩個隨機增強后的views $x_1, x_2$。通過一個包含一個主干網絡(如ResNet)的encoder網絡$f$和一個projection MLP head$h$。$f$在兩個view之間是共享權值的,$h$的作用則是將一個view的輸出變換到可以和另一個view匹配。

兩個輸出向量記為$p_1$和$z_2$,我們需要最小化他們的負余弦相似度:$D(p_1, z_2)=-\frac{p_1}{||p_1||_2}\cdot\frac{z_2}{||z_2||_2}$。如果考慮兩個view的對稱,在此基礎上構造一個對稱的loss:$L=\frac{1}{2}D(p_1, z_2)+\frac{1}{2}D(p_2, z_1)$,最小值是-1.

  本文中非常重要的一個部分是stop-gradient操作:$D(p_1, stopgrad(z_2))$。這表示在這一項中$z_2$被視為一個常數。同樣的,有$L=\frac{1}{2}D(p_1, stopgrad(z_2))+\frac{1}{2}D(p_2, stopgrad(z_1))$

 

  網絡設計部分這里就不詳細介紹了。實驗部分在ImageNet上進行無監督預訓練得到表征,再用表征訓練一個有監督線性分類器,用分類器的准確率來說明這些表征的質量。

Empirical Study

  

 

 

   首先來看stop-gradient的作用。在沒有stop-gradient的情況下,optimizer很快找到了一個退化的解並達到了loss的最小值-1.為了說明這個退化是collapsing造成的,作者研究了L2規范化后的輸出的std。如果輸出collapse成了一個常數向量,那么輸出在每個channel上的std都會是0,正如圖2中展示的那樣。

  這說明collapsing solutions是存在的,並且單靠網絡結構(如predictor,BN,l2-norm)來預防是不夠的。stop-gradient的有效性說明,可能有另外一個優化問題被潛在解決了。作者在之后針對這一問題提出了一個假設並加以驗證。

  此外作者還對Predictor,Batch_Size,BN,SimilarityFunc,Symmetrization的作用進行了研究。

  如果去掉Predictor,表現會非常差,不論loss是對稱的還是非對稱的。這里的表現差並不是collapsing造成的,因為訓練並沒有收斂,loss始終很高。這說明predictor應該要能夠適應表征,這樣的效果才好。同時作者還發現,如果訓練h時lr不減小,得到的表現會更好。作者推測這是因為h應該要與最新的表征相適應,在表征還沒有完全訓練好之前沒有必要強迫h收斂。

  本文的方法適用於非常各種batch-size。雖然在batch過大時,標准的SGD optimizer表現不好。作者認為一個specialized optimizer可能可以緩解這個問題,但是並不能解決collapsing問題。

  當去掉了所有的BN層時,表現雖然很差,但是並不會造成collapse。這里表現差可能是由於優化上的困難。總得來說,BN如果使用得當對於優化是有幫助的,這和其他監督學習場景下的結論一致。但是並沒有證據表明BN可以幫助避免collapsing問題。

  如果將D改為:$D(p_1, z_2)=-softmax(z_2)\dot logsoftmax(p_1)$,他也能收斂到一個合理的結果並沒有collapsing。這說明避免collapsing的發生不是余弦相似度造成的。同樣,loss的對稱性也不是避免collapsing的原因。對稱實際上是對每一個圖片多進行了一次預測,可以提升准確率。

 

Hypothesis

   通過前面的實驗,作者分析了避免collapsing問題的關鍵在於stop-gradient,並推測這里有另外的一個潛在優化問題。他推測SimSiam實際上是一個類似於Expectation-Maximization(EM)的算法。他隱含兩組變量,解決兩個潛在的子問題。而stop-gradient的作用正是引入額外的一組變量。

  考慮這樣一個損失函數:$L(\theta, \eta)=\mathbb{E}_{x,\mathcal{T}}[||\mathcal{F}_\theta(\mathcal{T}(x))-\eta_x||^2_2]$, $\mathcal{T}$是augmentation,$\mathcal{F}$是以$\theta$為參數的網絡。這里使用MSE,實際上和L2規范化后的余弦先四度是等價的。這里暫時先不考慮predictor。在這條式子中引入了一組新的變量$\eta$,$\eta_x$是圖像$x$的表征。考慮最小化$L(\theta, \eta)$,那么這個式子就和k-means聚類非常相似。$\theta$相當於聚類中心,是encoder的一個可學習參數。$\eta_x$相當於樣本$x$的assignment 向量(在k-means中是one-hot向量)。那么同樣類似k-means,也可以alternating算法來解決這個優化問題,固定一組變量解決另一組變量。即在一下兩個子問題中交替:

 

 

   求解$\theta$時,$\eta^{t-1}$時常量,需要用stop-gradient讓梯度不反向傳播。求解$\eta$時,相當於是對於每一個圖像$x$,最小化$\mathbb{E}_{\mathcal{T}}[||\mathcal{F}_\theta^t(\mathcal{T}(x))-\eta_x||^2_2]$.

  接下來考慮加入predictor $h$。$h$的優化目標是最小化$\mathbb{E}_z[||h(z_1)-z_2||^2_2]$.他的解為:$h(z_1)=\mathbb{E}_z[z_2]=\mathbb{E}_\mathcal{T}[f(\mathcal{T}(x))]$,這就類似於上面的式(9)。predictor$h$的作用就相當於嘗試學習預測這個期望。

  而作者推測,SimSiam實際上是在一次SGD update中在式(7)和(8)交替。作者進行實驗,讓式(7)在k次SGD更新一次。首先與計算全部k個SGD step所需的$\eta_x$,再進行k次SGD更新$\theta$。得到如下結果。這說明SimSiam確實式alternating optimization的一個特例。之后實驗證實了predictor的作用確實式估計$\mathbb{E}_\mathcal{T}[\cdot]$,這里就不詳細介紹了。

 

 

Comparisons

 

 

 

  在一些任務上的比較就不詳細講了,這里主要介紹一些和其他Siamese結構相關的工作的比較。SimSiam可以看作是其他的工作去掉某些部分。

 

 

   SimCLR without negatives:SimCLR是通過負樣本來避免collapsing問題的。如果給SimCLR加入predictor和stop-grad,可以看到表現並沒有提升。這是因為predictor和stop-grad實際上解決的是另一個優化問題,和對比學習不同,因此添加這些額外的部分並不一定有幫助。

 

  SwAV without online clustering:由於SwAV本身就是基於聚類的方法,去掉stop-grad會造成發散

 

  BYOL without the momentum encoder:momentoum encoder雖然可以提升表現,但並不能解決collapsing問題。此外,momentum encoder可能可以提供一個更smooth的$\eta$

 

  感覺這篇文章還是非常insightful的。說明目前方法中,Siamese結構應該是他們有效性的關鍵,Siamese網絡是建模不變性的一個很好的工具。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM