学习对比学习
對(duì)比學(xué)習(xí)定義
一種無監(jiān)督的圖像/文本的表示學(xué)習(xí)。
Motivation:人類往往是通過對(duì)比來學(xué)習(xí)區(qū)分事物的。模型無需學(xué)習(xí)到過于具體的細(xì)節(jié)(圖像:像素級(jí)別;文本:詞語級(jí)別),只需要學(xué)習(xí)到足以區(qū)分對(duì)象的高層次的特征。
與之前的有監(jiān)督方法/無監(jiān)督方法的區(qū)別:
自然語言處理領(lǐng)域的對(duì)比學(xué)習(xí)
NLP領(lǐng)域的對(duì)比學(xué)習(xí)主要是借鑒自CV,主要在data augmentation方面有所不同。
2020 年的 Moco 和 SimCLR 等,掀起了對(duì)比學(xué)習(xí)在 CV 領(lǐng)域的熱潮,2021 年的 SimCSE,則讓 NLP 也乘上了對(duì)比學(xué)習(xí)的東風(fēng)。
如何去理解對(duì)比學(xué)習(xí),它和度量學(xué)習(xí)的差別是什么?
對(duì)比學(xué)習(xí)的思想是去拉近相似的樣本,推開不相似的樣本,而目標(biāo)是要從樣本中學(xué)習(xí)到一個(gè)好的語義表示空間。
度量學(xué)習(xí)和對(duì)比學(xué)習(xí)的思想是一樣的,都是去拉近相似的樣本,推開不相似的樣本。但是對(duì)比學(xué)習(xí)是無監(jiān)督或者自監(jiān)督學(xué)習(xí)方法,而度量學(xué)習(xí)一般為有監(jiān)督學(xué)習(xí)方法。而且對(duì)比學(xué)習(xí)在 loss 設(shè)計(jì)時(shí),為單正例多負(fù)例的形式,因?yàn)槭菬o監(jiān)督,數(shù)據(jù)是充足的,也就可以找到無窮的負(fù)例,但如何構(gòu)造有效正例才是重點(diǎn)。
對(duì)比學(xué)習(xí)中一般選擇一個(gè) batch 中的所有其他樣本作為負(fù)例,那如果負(fù)例中有很相似的樣本怎么辦?
在無監(jiān)督無標(biāo)注的情況下,這樣的偽負(fù)例,其實(shí)是不可避免的,首先可以想到的方式是去擴(kuò)大語料庫(kù),去加大 batch size,以降低 batch 訓(xùn)練中采樣到偽負(fù)例的概率,減少它的影響。
另外,神經(jīng)網(wǎng)絡(luò)是有一定容錯(cuò)能力的,像偽標(biāo)簽方法就是一個(gè)很好的印證,但前提是錯(cuò)誤標(biāo)簽數(shù)據(jù)或偽負(fù)例占較小的比例。
infoNCE loss 如何去理解,和 CE loss 有什么區(qū)別?
infoNCE loss 全稱 info Noise Contrastive Estimation loss,對(duì)于一個(gè) batch 中的樣本 i,它的 loss 為:
要注意的是,log 里面的分母疊加項(xiàng)是包括了分子項(xiàng)的。分子是正例對(duì)的相似度,分母是正例對(duì)+所有負(fù)例對(duì)的相似度,最小化 infoNCE loss,就是去最大化分子的同時(shí)最小化分母,也就是最大化正例對(duì)的相似度,最小化負(fù)例對(duì)的相似度。
上面公式直接看可能沒那么清晰,可以把負(fù)號(hào)放進(jìn)去,分子分母倒過來化簡(jiǎn)一下就會(huì)很明了了。
CE loss,Cross Entropy loss,在輸入 p 是 softmax 的輸出時(shí):
在分類場(chǎng)景下,真實(shí)標(biāo)簽 y 一般為 one-hot 的形式,因此,CE loss 可以簡(jiǎn)化成(i 位置對(duì)應(yīng)標(biāo)簽 1):
看的出來,info NCE loss 和在一定條件下簡(jiǎn)化后的 CE loss 是非常相似的,但有一個(gè)區(qū)別要注意的是:
infoNCE loss 中的 K 是 batch 的大小,是可變的,是第 i 個(gè)樣本要和 batch 中的每個(gè)樣本計(jì)算相似度,而 batch 里的每一個(gè)樣本都會(huì)如此計(jì)算,因此上面公式只是樣本 i 的 loss。
CE loss 中的 K 是分類類別數(shù)的大小,任務(wù)確定時(shí)是不變的,i 位置對(duì)應(yīng)標(biāo)簽為 1 的位置。不過實(shí)際上,infoNCE loss 就是直接可以用 CE loss 去計(jì)算的。
注:
1)info NCE loss 不同的實(shí)現(xiàn)方式下,它的計(jì)算方式和 K 的含義可能會(huì)有差異;
2)info NCE loss 是基于 NCE loss 的
對(duì)比學(xué)習(xí)的本質(zhì)是通過對(duì)比去學(xué)習(xí)事物的本質(zhì)
學(xué)習(xí)非實(shí)
描述中的一句作為正例,按照對(duì)比學(xué)習(xí)來看,需要數(shù)據(jù)增強(qiáng)進(jìn)行數(shù)據(jù)擴(kuò)充,而數(shù)據(jù)集中天然的另外四句話就是正例的數(shù)據(jù)增強(qiáng)
總結(jié)
- 上一篇: torch.tensor().permu
- 下一篇: 打印show attend and te