【深度學(xué)習(xí)】SimSiam:孿生網(wǎng)絡(luò)表征學(xué)習(xí)的頂級(jí)理論解釋
及時(shí)獲取最優(yōu)質(zhì)的CV內(nèi)容

之前太菜了,SimSiam最精彩的理論解釋沒(méi)完全看懂,元旦重新讀了一遍,太牛逼了,我原本以為SimSiam就是BYOL的一個(gè)簡(jiǎn)化版本,實(shí)則是孿生網(wǎng)絡(luò)表征學(xué)習(xí)的頂級(jí)理論解釋?zhuān)饰龀?span style="font-weight: 700;">帶stop-gradient孿生網(wǎng)絡(luò)表征學(xué)習(xí)的本質(zhì)是EM算法。
為了講清楚SimSiam和EM算法以及k-means算法有什么內(nèi)在聯(lián)系,本文先簡(jiǎn)單闡述一下EM算法和k-means算法的思想,然后從EM算法出發(fā)推導(dǎo)出SimSiam的優(yōu)化目標(biāo),并且通過(guò)推導(dǎo)結(jié)果解釋predictor和momentum encoder(EMA)的作用。
EM
EM算法的全稱(chēng)是Expectation-Maximization,是機(jī)器學(xué)習(xí)中最為經(jīng)典的算法之一。EM算法可以認(rèn)為是一種算法思想,其實(shí)很多機(jī)器學(xué)習(xí)算法中都用到了EM思想,比如非常經(jīng)典的k-means聚類(lèi)算法,等下也會(huì)講到k-means是如何應(yīng)用EM的。
EM算法可以認(rèn)為是極大似然估計(jì)的拓展,極大似然估計(jì)只估計(jì)一個(gè)變量,而EM算法需要同時(shí)估計(jì)兩個(gè)變量。學(xué)過(guò)概率統(tǒng)計(jì)的都知道,直接估計(jì)兩個(gè)變量是很困難的問(wèn)題,所以EM算法實(shí)際上是為了解決多個(gè)變量估計(jì)困難提出來(lái)的算法思想,通過(guò)一個(gè)迭代的方式,先固定其中一個(gè)變量,估計(jì)另一個(gè)變量,然后交替迭代更新,循環(huán)往復(fù)直至收斂。一個(gè)迭代有兩個(gè)步驟(分別估計(jì)兩個(gè)變量),先E步,然后M步(M步其實(shí)就是極大似然估計(jì))。
有關(guān)EM算法的詳細(xì)解釋可以看文章鏈接:
https://zhuanlan.zhihu.com/p/36331115
k-means
一個(gè)最直觀了解 EM 算法思路的是 k-means 算法(一個(gè)變量是如何得到聚類(lèi)中心,另一個(gè)變量是如何劃分?jǐn)?shù)據(jù))。在 k-means 聚類(lèi)時(shí),每個(gè)聚類(lèi)簇的中心是隱含數(shù)據(jù)。我們會(huì)假設(shè) K 個(gè)初始化中心(初始化中心隨機(jī)得到,后續(xù)迭代中心通過(guò)聚類(lèi)平均進(jìn)行更新),即 EM 算法的 E 步;然后計(jì)算得到每個(gè)樣本最近的中心,并把樣本聚類(lèi)到最近的這個(gè)中心,即 EM 算法的 M 步。重復(fù)這個(gè) E 步和 M 步,直到中心不再變化為止,這樣就完成了 k-means 聚類(lèi)。
SimSiam

圖片來(lái)源:https://zhuanlan.zhihu.com/p/367290573
SimSiam也可以用EM算法解釋。SimSiam實(shí)際上隱式的包含了兩個(gè)變量,并且同時(shí)解決了兩個(gè)潛在的子問(wèn)題。實(shí)際上stop-gradient操作引入了其中一個(gè)變量。
我們可以把SimSiam的損失函數(shù)定義成以下形式(這里先不考慮SimSiam的predictor):
?
其中?
?
這個(gè)優(yōu)化目標(biāo)的形式就類(lèi)似于EM和k-means算法。其中變量?
?
其中t表示迭代輪次,?
可以通過(guò)SGD來(lái)求解?
求解完?
?
通過(guò)期望公式可得:
?
這個(gè)式子表示第t個(gè)迭代輪次的圖片x表征由該圖片所有數(shù)據(jù)增強(qiáng)期望計(jì)算得到。
One-step alternation
上述兩個(gè)子問(wèn)題的一次step可以近似為SimSiam。
1. 首先,可以用一次采樣的數(shù)據(jù)增強(qiáng)?
?
然后把上式代入第一個(gè)子問(wèn)題中:
?
其中?
2. 如果上式用一個(gè)SGD來(lái)降低loss,那么就可以得到接近SimSiam的算法(這里沒(méi)有考慮SimSiam的predictor,等下解釋predictor的作用):一個(gè)使用stop-gradient的孿生網(wǎng)絡(luò)。
Multi-step alternation
如果把上面一次step拓展到多次step,就可以得到多次step的SimSiam。
多次step的SimSiam可以設(shè)計(jì)成將t作為迭代的外循環(huán)次數(shù),第一個(gè)子問(wèn)題設(shè)計(jì)成一次迭代k個(gè)step SGD(k個(gè)step SGD的所有?

上述實(shí)驗(yàn)中n-step表示SimSiam一次迭代的step數(shù),1-epoch表示一個(gè)epoch中一次迭代總的step數(shù)??梢园l(fā)現(xiàn),適當(dāng)?shù)脑黾覵imSiam的一次迭代的step數(shù),可以提升精度(可以認(rèn)為在一次迭代中變相的增加數(shù)據(jù)量,從k-means的角度考慮聚類(lèi)效果會(huì)更好)。
Predictor
上述推導(dǎo)為了簡(jiǎn)便起見(jiàn),省略了predictor h,如果增加一個(gè)predictor h,第二個(gè)子問(wèn)題就變成了:
?
通過(guò)期望公式可得:
?
前面的一次step近似推導(dǎo)可以省略掉期望E,但是由于predictor h的存在,可以不進(jìn)行一次step近似,predictor h可以彌補(bǔ)?
Symmetrization
上述推導(dǎo)沒(méi)有考慮對(duì)稱(chēng)計(jì)算loss的情況,實(shí)際上,對(duì)稱(chēng)loss相當(dāng)于一次SGD密集采樣數(shù)據(jù)增強(qiáng)?

上述實(shí)驗(yàn)驗(yàn)證了這個(gè)結(jié)論,對(duì)稱(chēng)loss優(yōu)化效率大大提高,非對(duì)稱(chēng)loss即使使用兩倍訓(xùn)練時(shí)間,效果也不如單倍對(duì)稱(chēng)loss,猜測(cè)因?yàn)閷?duì)稱(chēng)loss下數(shù)據(jù)量更多,從k-means的角度考慮聚類(lèi)效果會(huì)更好。
EMA
SimSiam進(jìn)一步發(fā)現(xiàn)predictor h用來(lái)預(yù)測(cè)期望E不是必須的,還有其他的替代方案。SimSiam又做了一個(gè)對(duì)比實(shí)驗(yàn),去掉predictor h的SimSiam其實(shí)就是上面推導(dǎo)的一次step近似,使用momentum encoder(EMA)來(lái)得到?
并且EMA和predictor的實(shí)驗(yàn)同時(shí)說(shuō)明了SimSiam和BYOL沒(méi)有負(fù)樣本對(duì)也能work的原因,因?yàn)镾imSiam雖然沒(méi)有EMA但是有predictor,BYOL既有predictor也有EMA。
總結(jié)
SimSiam的理論解釋意味著所有帶stop-gradient的孿生網(wǎng)絡(luò)表征學(xué)習(xí)都可以用EM算法解釋。stop-gradient起到至關(guān)重要的作用,并且需要一個(gè)預(yù)測(cè)期望E的方法進(jìn)行輔助使用。但是SimSiam仍然無(wú)法解釋模型坍塌現(xiàn)象,SimSiam以及它的變體不坍塌現(xiàn)象仍然是一個(gè)經(jīng)驗(yàn)性的觀察,模型坍塌仍然需要后續(xù)的工作進(jìn)一步討論。
看懂了SimSiam對(duì)孿生網(wǎng)絡(luò)表征學(xué)習(xí)的解釋?zhuān)倏雌渌麘?yīng)用孿生網(wǎng)絡(luò)的算法就清爽了許多,SimSiam值一個(gè)best paper(雖然只拿了2021 CVPR Best Paper Honorable Mention)。
Reference
[1] Exploring Simple Siamese Representation Learning
[2]?https://zhuanlan.zhihu.com/p/36331115
[3]?https://zhuanlan.zhihu.com/p/367290573
往期精彩回顧 本站qq群955171419,加入微信群請(qǐng)掃碼:
