对比学习必知要点
數據增強
給定訓練樣本,我們需要用數據增強來創建帶有噪聲版本的數據,以作為正樣本反饋到損失函數中。正確的數據增強設置對于學習好的泛化性強的embedding至關重要。它在不修改語義的情況下,將非本質變化引入示例中,從而激發模型學習的本質表達。例如,在SimCLR中的實驗表明,隨機裁剪和隨機顏色失真的組合對于學習圖像視覺表示的良好性能至關重要。
更大的Batch Size
在很多對比學習方法中,使用一個較大的batch size至關重要,例如SimCLR和CLIP.特別是樣本依賴于Batch內負采樣.僅當batch size足夠大才有足夠的負樣本,使得損失函數充分收斂,對模型而言才能充分的學習更好的表達來區分各種各樣的樣本.
困難的負樣本挖掘
hard負樣本指的是與anchor樣本label不同,但是特征與anchor十分接近.在有標簽的數據集上,找到hard負樣本其實還挺容易的.比方說在學習句子表達上,NLI數據集中,句子對中標簽是"contradiction"就是hard的負樣本(SimCSE),再例如DPR中,BM25最接近但標簽不同的樣本就是hard負樣本.
然而在純無監督環境下,找到hard負樣本是很棘手的.增加訓練的batch size或mermory bank會隱式引入更多hard負樣本,但這樣做會給內存帶來嚴重負擔。
這里解釋下memory bank,訓練過程中維護一個Embedding庫,即Memory Bank, 每次訓練完一個batch就把里面的embedding塞到這個庫里,下次訓練從這個庫中隨機抽取部分出來做負樣本.由于采樣問題,不一定能保證庫里面emb的一致性.
Moco就提出Momentum Contrast的方法解決Memory Bank的缺點,該方法使用一個隊列來存儲和采樣 negative 樣本,隊列中存儲多個近期用于訓練的 batch 的特征向量。隊列容量要遠小于 Memory Bank,但可以遠大于 batch 的容量,如下圖所示. 這里momentum encoder可以和encoder完全一致參與梯度下降,也可以是對query encoder的平滑拷貝.
《Debiased Contrastive Learning》這篇論文研究了對比學習中的采樣偏差問題,提出了一個糾偏的loss.在無監督的環境中,由于我們不知道真實的標簽,我們可能會意外地采樣False Negative樣本(從下圖左圖可以看到,給一只狗的圖片采樣了另一只狗做負樣本)。抽樣偏差可能會導致學習的效果顯著下降。
糾偏后的loss如下:
我們可以看到糾偏后用t-SNE可視化后,不同類直接劃分的更加明確了.
總結
- 上一篇: 对比表示学习必知的几种训练目标
- 下一篇: 关于多目标任务有趣的融合方式