對比loss
對比學(xué)習(xí)的 loss(InfoNCE)即以最 大化互信息為目標(biāo)推導(dǎo)而來。其核心是通過計算樣本表示間的距離,拉近正樣本, 拉遠(yuǎn)負(fù)樣本,因而訓(xùn)練得到的模型能夠區(qū)分正負(fù)例。
具體做法為:對一個 batch 輸入的圖片,隨機用不同的數(shù)據(jù)增強方法生成兩個 view,對他們用相同的網(wǎng)絡(luò) 結(jié)構(gòu)進(jìn)行特征提取,得到 y 和 y’,來自同一張圖像的兩個不同的表示構(gòu)成一對正樣本對,來自不同圖像任意表示對為一對負(fù)樣本對。隨后對上下兩批表示兩兩計算 cosine similarity,得到 N*N 的矩陣,每一行的對角線位置代表 y 和 y’的相似 度,其余代表 y 和 N-1 個負(fù)樣本對的相似度。計算公式如下(T 為超參):
?
MOCO(memory bank)
MOCO 的一個核心觀點是,樣本數(shù)量對于對比學(xué)習(xí)很重要。從 InfoNCE loss 我們可以看出,增加負(fù)例的數(shù)量可以防止過擬合,與此同時,負(fù)例越多,這個任務(wù)的難度就越大,因而通過增加負(fù)例的方式可作為一個優(yōu)化方向。但是純粹的增加 batch size 會使得 GPU 超負(fù)荷。一個可行的方法就是增加 memory bank,把之前編碼好的樣本存儲起來,計算 loss 的時候隨機采樣負(fù)例。但是這樣會存在一個問題,就是存儲好的編碼都是之前編碼計算的,而 Xq 經(jīng)過誤差回傳后一直在更新,樣本缺乏一致性,影響目標(biāo)優(yōu)化。因而在此基礎(chǔ)上 Moco 提出了一種動量對比 (Mometum contrast) 的方法提高每個 mini-batch 的負(fù)樣本數(shù)量。
MOCO的改進(jìn)方法:動量更新,主要是為了解決引入隊列維護(hù)字典之后,字典的編碼器無法通過梯度反傳獲得參數(shù)更新的問題。
Moco就提出Momentum Contrast的方法解決Memory Bank的缺點,該方法使用一個隊列來存儲和采樣 negative 樣本,隊列中存儲多個近期用于訓(xùn)練的 batch 的特征向量。隊列容量要遠(yuǎn)小于 Memory Bank,但可以遠(yuǎn)大于 batch 的容量,如下圖所示。這里momentum encoder可以和encoder完全一致參與梯度下降,也可以是對query encoder的平滑拷貝。
我的疑問:這樣還有類似于memory bank的負(fù)采樣嗎?如果沒有,那么bacthsize豈不是還是不能增大?這只是解決了encoder同步更新的問題。-----》以上下劃線
SimCLR
在 encoder 之后增加了一個非線性映射。研究發(fā)現(xiàn) encoder 編碼后的 h 會保留和數(shù)據(jù)增強變換相關(guān)的信息,而非線性層的作用就是去掉這些信息,讓表示回歸數(shù)據(jù)的本質(zhì)。
自監(jiān)督學(xué)習(xí)速覽 - 搬磚啦姜姜的文章 - 知乎文章來源:http://www.zghlxwxcb.cn/news/detail-521114.html
經(jīng)典論文學(xué)習(xí)筆記——13篇對比學(xué)習(xí)(Contrastive Learning)文章來源地址http://www.zghlxwxcb.cn/news/detail-521114.html
到了這里,關(guān)于【計算機視覺】對比學(xué)習(xí)綜述(自己的一些理解)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!