淺聊對(duì)比學(xué)習(xí)(Contrastive Learning)
點(diǎn)擊上方“視學(xué)算法”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時(shí)間送達(dá)
導(dǎo)讀
本文通過解讀對(duì)比學(xué)習(xí)的經(jīng)典論文和綜述,介紹對(duì)比學(xué)習(xí)的概念,主流方法和優(yōu)勢(shì)。對(duì)于不同方法的算法設(shè)計(jì)和實(shí)驗(yàn)結(jié)果,作者提供了他的深入思考。
什么是對(duì)比學(xué)習(xí)?
對(duì)比學(xué)習(xí)在解決什么問題?
如何學(xué)習(xí)representation
解決數(shù)據(jù)稀疏的問題
如何更好的利用沒有l(wèi)abel的數(shù)據(jù)
未打標(biāo)的數(shù)據(jù)遠(yuǎn)遠(yuǎn)多于打標(biāo)的數(shù)據(jù),不用簡(jiǎn)直太浪費(fèi)了,但是要打標(biāo)又是一個(gè)耗時(shí)耗力耗錢的事兒 有監(jiān)督學(xué)習(xí)的缺點(diǎn):
泛化能力 Spurious Correlations偽相關(guān) (https://www.zhihu.com/question/409100594) Adversarial Attacks對(duì)抗攻擊 (https://zhuanlan.zhihu.com/p/104532285)
為什么現(xiàn)有的方法解決不了這個(gè)問題?
有監(jiān)督學(xué)習(xí)天然所帶來的問題:泛化能力、過擬合、對(duì)抗攻擊等等 有監(jiān)督學(xué)習(xí)本身就無法使用無標(biāo)簽的數(shù)據(jù)
現(xiàn)有的對(duì)比學(xué)習(xí)方法
Noise-contrastive estimation: A new estimation principle for unnormalized statistical models
知乎:https://zhuanlan.zhihu.com/p/58369131 CSDN:https://blog.csdn.net/littlely_ll/article/details/79252064

但是這里會(huì)出現(xiàn)一個(gè)問題,如果我們的noise分布選的不好,效果可能并不一定會(huì)好,所以在這篇paper里作者也提到了在增加noise的時(shí)候,盡量和現(xiàn)有的數(shù)據(jù)分布相似,這樣能最大程度上提高訓(xùn)練的效果。
Intuitively, the noise distribution should be close to the data distribution, because otherwise, the classification problem might be too easy and would not require the system to learn much about the structure of the data. As a consequence, one could choose a noise distribution by first estimating a preliminary model of the data, and then use this preliminary model as the noise distribution.
這個(gè)方法在推薦里的應(yīng)用,個(gè)人觀點(diǎn)是可以在召回里來嘗試,畢竟現(xiàn)在的召回面臨著很大的selection bias問題(有朋友在召回里嘗試過,效果一般,只能說明老paper時(shí)間比較久了,已經(jīng)被現(xiàn)在的SOTA beat掉了,不過這篇文章的idea很有意思,數(shù)學(xué)證明也很不錯(cuò),可以學(xué)習(xí)下)
Representation Learning with Contrastive Predictive Coding




從而將一個(gè)生成模型 轉(zhuǎn)變成了分類模型
訓(xùn)練出來的 和 可以用于下游的任務(wù):比如分類任務(wù)等等
文章比較有意思的點(diǎn):證明了互信息的下界和總樣本數(shù)是有關(guān)的,N越大,互信息越大


Learning Deep Representations by Mutual Information Estimation and Maximization
我對(duì)這一點(diǎn)有點(diǎn)concern,什么樣的編碼空間是 更好的空間呢?這個(gè)先驗(yàn)也只能去拍,怎么去拍,只能不斷的去嘗試嗎,是不是可以學(xué)成一個(gè)動(dòng)態(tài)的空間,如果我們的數(shù)據(jù)是多峰的,可能一個(gè)分布就不太能擬合,混合高斯分布會(huì)不會(huì)更優(yōu)?感覺都是可以改進(jìn)的方向)


global MI/local MI: 這倆沒啥好介紹的,global是拿輸入和全局的feature去做MI的計(jì)算,local是拿中間的feature和全局的feature去做MI的計(jì)算(多的這部分local的loss,我個(gè)人的理解其實(shí)也是換了種方式來增大樣本數(shù)量,進(jìn)而帶來了收益)
Prior matching(adversarial autoencoders):拍了一個(gè)feature的先驗(yàn)分布,訓(xùn)練一個(gè)discriminator,然后讓這個(gè)discriminator和模型學(xué)到的全局feature進(jìn)行battle(對(duì)抗學(xué)習(xí)的min-max方式),編碼器的輸出更符合先驗(yàn)的分布,感覺這個(gè)就有點(diǎn)玄學(xué)了~

Loss:前面兩項(xiàng)分別對(duì)應(yīng)global和local,最后一項(xiàng)對(duì)應(yīng)Prior matching

SimCLR-A Simple Framework for Contrasting Learning of Visual Representations
loss就是softmax loss + temperature 這里有個(gè)需要注意的點(diǎn),他在學(xué)到的 后面加了一個(gè) ,然后進(jìn)行l(wèi)oss的計(jì)算和梯度的回傳,最后真正在使用的時(shí)候用的只有 ,這里作者的猜想和實(shí)驗(yàn)確實(shí)很有意思,很值得借鑒。(雖然在SimCLRV2中這個(gè)結(jié)論有變的很不一樣了哈哈哈,后面會(huì)講到) 框架圖:模型訓(xùn)練的時(shí)候 和 同時(shí)訓(xùn)練,但是訓(xùn)練完后,就把 扔掉了,只保留 ,這里是我覺得這篇論文最有意思的點(diǎn),一般的思路其實(shí)應(yīng)該是直接用 的輸出去計(jì)算對(duì)比學(xué)習(xí)的loss~

代表data augmentation方式的集合:比如旋轉(zhuǎn),灰度,裁剪等等 batch_size = N,對(duì)每個(gè)batch內(nèi)的每張圖片,隨機(jī)從 中選擇兩種data augmentation,得到兩張圖片,這兩張圖片就是一個(gè)正樣本對(duì),總共可以生成2N個(gè)樣本,每個(gè)樣本有一個(gè)樣本和自己是正樣本對(duì),剩下的2N-2都是負(fù)樣本,這里是用了一個(gè)softmax+temperature的loss

實(shí)驗(yàn)圖太多就不貼了,想看detail的可以直接看我的「paper_reading記錄:https://bytedance.feishu.cn/docx/doxcn0hAWqSip1niZE2ZCpyO4yb」,只對(duì)個(gè)人認(rèn)為有意思的點(diǎn)說下
實(shí)驗(yàn)證明對(duì)比學(xué)習(xí)可以從更大的batch size和更長(zhǎng)的訓(xùn)練時(shí)間上受益
作者自己在這里也說:效果的提升是來自于batch_size越大,訓(xùn)練時(shí)間越久,見過的負(fù)樣本越多,所以效果越好,這里其實(shí)和batch_softmax也有異曲同工之妙,在推薦里其實(shí)也有類似的經(jīng)驗(yàn)~

驗(yàn)證在對(duì)比學(xué)習(xí)loss計(jì)算之前加入一個(gè)非線性的映射層會(huì)提高效果
作者認(rèn)為是g被訓(xùn)練的能夠自動(dòng)去掉data transformation的噪音,為了驗(yàn)證這個(gè)猜想,作者做了這個(gè)實(shí)驗(yàn):用h和g(h)來區(qū)分做了哪種data transformation,從下面第二張實(shí)驗(yàn)結(jié)果圖看出,h確實(shí)保留了data transformation的信息


其他貢獻(xiàn)
實(shí)驗(yàn)證明「組合不同的data augumentation」的重要性
實(shí)驗(yàn)證明對(duì)比學(xué)習(xí)需要比有監(jiān)督學(xué)習(xí)需要更強(qiáng)的data agumentation
實(shí)驗(yàn)證明無監(jiān)督對(duì)比學(xué)習(xí)會(huì)在更大的模型上受益
實(shí)驗(yàn)證明了不同loss對(duì)效果的影響
SimCLRV2-Big Self-Supervised Models are Strong Semi-Supervised Learners

Pretraining:用了SimCLR,然后用了更深的projection head,同時(shí)不是直接把projection head丟了,而是用projection head的1st layer,來做后面的fine tune。(這也太trick了吧) Fine-tune:用SimCLR訓(xùn)練出來的網(wǎng)絡(luò),接下游的MLP,做classification任務(wù),進(jìn)行fine-tune disitill:用訓(xùn)好的teacher network給無label的數(shù)據(jù)打上標(biāo)簽,作為ground truth,送給student network訓(xùn)練。這個(gè)地方作者也嘗試了加入有標(biāo)簽的(樣本+標(biāo)簽),發(fā)現(xiàn)差距不大,所以就沒有使用有監(jiān)督樣本的(樣本+標(biāo)簽)


實(shí)驗(yàn)圖就不全貼了,想看detail的可以直接看我的「paper_reading記錄:https://bytedance.feishu.cn/docx/doxcn9P6oMZzuwZOrYAhYc5AUUe」

Distillation Using Unlabeled Data Improves Semi-Supervised Learning
這個(gè)實(shí)驗(yàn)很有意思的點(diǎn)是,無論是self-distillation還是distill small model,效果都比teacher model效果好,這里的解釋可以看這里:
知乎:https://zhuanlan.zhihu.com/p/347890400;
原文:https://arxiv.org/pdf/2012.09816.pdf
很有趣~主要在說:distill能讓student學(xué)到更多的視圖,從而提升了效果~

Bigger Models Are More Label-Efficient
Bigger/Deeper Projection Heads Improve Representation Learning
Mutual Information Neural Estimation
給定一個(gè)batch內(nèi)的數(shù)據(jù) ,其中 就是我們的訓(xùn)練集,batch_size = b 然后從訓(xùn)練集中隨機(jī)sample b個(gè)z,作為負(fù)樣本 計(jì)算loss,并回傳梯度

實(shí)驗(yàn)圖就不全貼了,想看detail的可以直接看我的「paper_reading記錄:https://bytedance.feishu.cn/docx/doxcnMHzZBeWFV4HZV6NAU7W73o」
捕獲非線性的依賴的能力

GAN上的應(yīng)用:

Bi-GAN上的應(yīng)用:

對(duì)比學(xué)習(xí)在推薦里的應(yīng)用場(chǎng)景
負(fù)采樣邏輯優(yōu)化:現(xiàn)在很多推薦系統(tǒng)里的負(fù)采樣都是隨機(jī)采樣的,雖然隨機(jī)采樣已經(jīng)能拿到不錯(cuò)的效果了,但是一定還有優(yōu)化空間,比如InfoNce文章中提到的增大負(fù)采樣的個(gè)數(shù)能夠提升互信息的下界,同時(shí)在工業(yè)界的best practice中,往往也能發(fā)現(xiàn)batch_softmax的效果也很不錯(cuò) i2i召回:基于item2item召回的時(shí)候,往往是基于item1的embedding去召回與item1相似的items,這時(shí)候embedding的相似性就顯得尤為重要,但是這里有個(gè)問題,如何選擇構(gòu)造與item1相似的item作為正樣本?(用戶點(diǎn)擊過的作為item作為相似的樣本也不合理,畢竟用戶的興趣是多維的,點(diǎn)過的每個(gè)樣本不可能都屬于同一個(gè)類別或者相似的,雖然通過推薦的大量數(shù)據(jù),協(xié)同過濾可能可以在全局找到一個(gè)還不錯(cuò)的結(jié)果,但是直接拿用戶序列作為正樣本來做一定是不合理的)
一點(diǎn)小思考
可以比較好的單獨(dú)優(yōu)化representation,和下游任務(wù)無關(guān),能夠最大程度上的保留meta-information,如果一旦做有監(jiān)督的學(xué)習(xí),那抽取出來的信息就是和當(dāng)前目標(biāo)相關(guān)的,不排除可能學(xué)到一些噪音特征 在做data augumentation,模型見到了更多的樣本,記憶的東西更全,效果好也是預(yù)期之中的 去噪
Reference
Gutmann M, Hyv?rinen A. Noise-contrastive estimation: A new estimation principle for unnormalized statistical models[C]//Proceedings of the thirteenth international conference on artificial intelligence and statistics. JMLR Workshop and Conference Proceedings, 2010: 297-304. Oord A, Li Y, Vinyals O. Representation learning with contrastive predictive coding[J]. arXiv preprint arXiv:1807.03748, 2018. Hjelm R D, Fedorov A, Lavoie-Marchildon S, et al. Learning deep representations by mutual information estimation and maximization[J]. arXiv preprint arXiv:1808.06670, 2018. Hjelm R D, Fedorov A, Lavoie-Marchildon S, et al. Learning deep representations by mutual information estimation and maximization[J]. arXiv preprint arXiv:1808.06670, 2018. GitHub - asheeshcric/awesome-contrastive-self-supervised-learning: A comprehensive list of awesome contrastive self-supervised learning papers. (https://github.com/asheeshcric/awesome-contrastive-self-supervised-learning) 張俊林:對(duì)比學(xué)習(xí)(Contrastive Learning):研究進(jìn)展精要 (https://zhuanlan.zhihu.com/p/367290573) 極市平臺(tái):深度學(xué)習(xí)三大謎團(tuán):集成、知識(shí)蒸餾和自蒸餾:https://zhuanlan.zhihu.com/p/347890400 Chen T, Kornblith S, Norouzi M, et al. A simple framework for contrastive learning of visual representations[C]//International conference on machine learning. PMLR, 2020: 1597-1607. Chen T, Kornblith S, Swersky K, et al. Big self-supervised models are strong semi-supervised learners[J]. Advances in neural information processing systems, 2020, 33: 22243-22255. Belghazi M I, Baratin A, Rajeshwar S, et al. Mutual information neural estimation[C]//International conference on machine learning. PMLR, 2018: 531-540. Allen-Zhu Z, Li Y. Towards understanding ensemble, knowledge distillation and self-distillation in deep learning[J]. arXiv preprint arXiv:2012.09816, 2020.

點(diǎn)個(gè)在看 paper不斷!
