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