MoCo的基本原理,包括其歷史來龍去脈在前文中[1,2,3]中已經(jīng)介紹的比較充足了,本文就不再進(jìn)行贅述。本文主要介紹下MoCo v3 [4]中的一些新發(fā)現(xiàn)。MoCo v3中并沒有對(duì)模型或者M(jìn)oCo機(jī)制進(jìn)行改動(dòng),而是探索基于Transformer的ViT(Visual Transformer)模型[5,6]在MoCo機(jī)制下的表現(xiàn)以及一些訓(xùn)練經(jīng)驗(yàn)。作者發(fā)現(xiàn)ViT在采用MoCo機(jī)制的訓(xùn)練過程中,很容易出現(xiàn)不穩(wěn)定的情況,并且這個(gè)不穩(wěn)定的現(xiàn)象受到了學(xué)習(xí)率,batch size和優(yōu)化器的影響。如Fig 1.所示,在batch size大于4096的時(shí)候已經(jīng)出現(xiàn)了明顯的劇烈抖動(dòng),如Table 1.所示,我們發(fā)現(xiàn)在bs=2048時(shí)候取得了最好的測(cè)試性能,繼續(xù)增大batch size反而有很大的負(fù)面影響,這個(gè)結(jié)論和MoCo v1里面『batch size越大,對(duì)比學(xué)習(xí)效果越好』相悖,如Fig 2.所示。這里面的大幅度訓(xùn)練抖動(dòng)肯定是導(dǎo)致這個(gè)結(jié)論相悖的罪魁禍?zhǔn)住_@個(gè)抖動(dòng)并不容易發(fā)現(xiàn),因?yàn)樵赽s=4096時(shí)候,模型訓(xùn)練最終能收斂到和bs=1024,2048相同的水平,但是泛化效果確實(shí)會(huì)存在差別。
Fig 2. 在MoCo v1中,隨著batch size的增大,對(duì)比學(xué)習(xí)的結(jié)果也逐漸變好。不僅僅是batch size,學(xué)習(xí)率也會(huì)導(dǎo)致ViT訓(xùn)練的不穩(wěn)定,如Fig 3.所示,我們發(fā)現(xiàn)在較大的學(xué)習(xí)率下訓(xùn)練曲線存在明顯的抖動(dòng),而最終的訓(xùn)練收斂位置卻差別不大。在測(cè)試結(jié)果上看,則會(huì)受到很大的影響。如果將優(yōu)化器從AdamW更換到LAMB優(yōu)化器,那么結(jié)果也是類似的,如Fig 4.所示,只是可以采用更大的學(xué)習(xí)率進(jìn)行訓(xùn)練了。
Fig 3. ViT以MoCo機(jī)制訓(xùn)練,在不同學(xué)習(xí)率下的訓(xùn)練曲線和對(duì)應(yīng)測(cè)試結(jié)果。
Fig 4. ViT以MoCo機(jī)制訓(xùn)練,在采用LAMB優(yōu)化器的情況下,不同學(xué)習(xí)率下的訓(xùn)練曲線和對(duì)應(yīng)測(cè)試結(jié)果。這種出現(xiàn)訓(xùn)練時(shí)的劇烈抖動(dòng),很可能是梯度劇變導(dǎo)致的,因此作者對(duì)ViT的第一層和最后一層的梯度的無窮范數(shù)進(jìn)行了統(tǒng)計(jì)。注意到無窮范數(shù)相當(dāng)于求所有梯度值中絕對(duì)值的最大值,也即是如(1)所示。結(jié)果如圖Fig 5.所示,我們發(fā)現(xiàn)的確會(huì)存在有梯度的驟變,而且總是第一層先發(fā)生,然后經(jīng)過約數(shù)十個(gè)step之后傳遞給了最后一層。因此,導(dǎo)致訓(xùn)練曲線劇烈抖動(dòng)的原因可能是ViT的Transformer的第一層梯度不穩(wěn)定導(dǎo)致。
Fig 5. ViT在訓(xùn)練過程中第一層和最后一層的梯度無窮范數(shù)。
考慮到在ViT中的第一層是將patch映射到visual token,也就是一層FC全連接層,如圖Fig6.所示。作者在MoCo v3里面的做法也很直接,直接將ViT的第一層,也即是從Patch到Visual Token的線性映射層隨機(jī)初始化后固定住,不參與訓(xùn)練。
Fig 6. 在ViT中通過FC層將圖片patch線性映射到了visual token,從而輸入到Transformer。
這個(gè)做法挺奇怪的,但是實(shí)驗(yàn)結(jié)果表明在固定住了線性映射層之后,的確ViT的訓(xùn)練穩(wěn)定多了,如Fig 7.所示,訓(xùn)練曲線的確不再出現(xiàn)詭異的劇烈抖動(dòng),最主要的是其測(cè)試結(jié)果也能隨著學(xué)習(xí)率的提高而增大了,并且同比learned path proj.的情況還更高。
Fig 7. 在固定住了patch映射到visual token的線性映射層之后,訓(xùn)練曲線不再出現(xiàn)明顯的劇烈抖動(dòng)。
這種現(xiàn)象還是蠻奇怪的,也就是說即便不訓(xùn)練這個(gè)patch projection layer,模型的性能也不會(huì)打折,而且還會(huì)更加穩(wěn)定。作者給出的解釋就是目前這個(gè)映射是完備的(complete),甚至是過完備(over-complete)的,以的patch,768的visual token為例子,那么這個(gè)映射矩陣就是
的。也就是說對(duì)于所有可能的patch來說,可能在隨機(jī)的M \mathbf{M}M?????中就已經(jīng)有著近似的唯一輸出對(duì)應(yīng),即便這個(gè)映射可能不保留太多的視覺語義信息,但是也保留了原始的視覺信息,不至于損失原始信息。但是正如作者最后所說的,這個(gè)『trick』只是緩解了問題,但是并沒有解決問題,顯然這個(gè)問題出現(xiàn)在了優(yōu)化階段,而固定FC層減少了解空間提高了其穩(wěn)定性。在更大的學(xué)習(xí)率下,還是會(huì)受到相同的不穩(wěn)定現(xiàn)象,對(duì)該現(xiàn)象的研究值得繼續(xù)深究。
筆者在大規(guī)模的對(duì)比學(xué)習(xí)訓(xùn)練過程中也遇到過類似的訓(xùn)練曲線抖動(dòng)(雖然沒有那么劇烈),但是筆者發(fā)現(xiàn)可能是溫度系數(shù)的劇烈變化導(dǎo)致的,我們以后再繼續(xù)討論下溫度系數(shù)的影響。
Reference
[1]. https://fesian.blog.csdn.net/article/details/119515146
[2]. https://fesian.blog.csdn.net/article/details/120039316
[3]. https://fesian.blog.csdn.net/article/details/120364242
[4]. Chen, Xinlei, Saining Xie, and Kaiming He. “An empirical study of training self-supervised vision transformers.” arXiv preprint arXiv:2104.02057 (2021).
[5]. https://blog.csdn.net/LoseInVain/article/details/116031656
[6]. Dosovitskiy, Alexey, Lucas Beyer, Alexander Kolesnikov, Dirk Weissenborn, Xiaohua Zhai, Thomas Unterthiner, Mostafa Dehghani et al. “An image is worth 16x16 words: Transformers for image recognition at scale.” arXiv preprint arXiv:2010.11929 (2020).