對比學(xué)習(xí)是無監(jiān)督表示學(xué)習(xí)中一種非常有效的方法,核心思路是訓(xùn)練query和key的Encoder,讓這個Encoder對相匹配的query和key生成的編碼距離接近,不匹配的編碼距離遠(yuǎn)。想讓對比學(xué)習(xí)效果好,一個核心點(diǎn)是擴(kuò)大對比樣本(負(fù)樣本)的數(shù)量,即每次更新梯度時,query見到的不匹配key的數(shù)量。負(fù)樣本數(shù)量越多,越接近對比學(xué)習(xí)的實(shí)際目標(biāo),即query和所有不匹配的key都距離遠(yuǎn)。
對比學(xué)習(xí)目前有4種最典型的范式,分別為End-to-End、Memory Bank、Momentum Encoder以及In-Batch Negtive。這幾種對比學(xué)習(xí)結(jié)構(gòu)的差異主要體現(xiàn)在對負(fù)樣本的處理上,4種方法是一種逐漸演進(jìn)的關(guān)系。下面,我們來看看4種對比學(xué)習(xí)結(jié)構(gòu)的經(jīng)典工作。關(guān)于對比學(xué)習(xí)的損失函數(shù),建議參考之前的文章表示學(xué)習(xí)中的7大損失函數(shù)梳理。
End-to-End End-to-End是一種最直接的對比學(xué)習(xí)方法,對于一個query,每次采樣一個正樣本以及多個負(fù)樣本,使用對比學(xué)習(xí)loss計算損失,正樣本和負(fù)樣本都進(jìn)行梯度反向傳播。下面介紹幾篇End-to-End的對比學(xué)習(xí)經(jīng)典論文。
第一篇是Unsupervised Embedding Learning via Invariant and Spreading Instance Feature(2019)。本文的目標(biāo)是學(xué)習(xí)圖像好的表示,滿足相似的圖像embedding離得近,不相似的圖像embedding離得遠(yuǎn)的特點(diǎn)。具體的,希望同一個圖像經(jīng)過不同的數(shù)據(jù)增強(qiáng)方式進(jìn)行轉(zhuǎn)換后,能夠具有embedding的不變性,同時不同圖像的embedding有明顯差異。
這篇文章在原來每個樣本為一個類別的分類基礎(chǔ)上進(jìn)行了優(yōu)化,將每個圖像進(jìn)行一種數(shù)據(jù)增強(qiáng)的轉(zhuǎn)換后,去讓轉(zhuǎn)換前后的圖像的embedding離得更近。首先采樣一個batch的圖像,然后對每一個圖像使用一種數(shù)據(jù)增強(qiáng)方法進(jìn)行轉(zhuǎn)換。優(yōu)化的目標(biāo)是讓每一個圖像xi轉(zhuǎn)換后的圖像xi‘能夠被分為xi這個樣本的類別。模型的訓(xùn)練仍然采用多個二分類的方式,每個樣本的loss可以表示為:
最終采用底層共享參數(shù)的孿生網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行模型訓(xùn)練。在訓(xùn)練階段,每個樣本的會使用該batch內(nèi)其他樣本作為負(fù)樣本進(jìn)行訓(xùn)練,并使用一種隨機(jī)的argumentation策略生成一個正樣本。
LEARNING DEEP REPRESENTATIONS BY MUTUAL INFORMATION ESTIMATION AND MAXIMIZATION(ICLR 2019,DIM)是另一個典型的End-to-End對比學(xué)習(xí)框架。本文提出在Deep InfoMax基礎(chǔ)上進(jìn)行對比學(xué)習(xí),首先介紹一下Deep InfoMax。Deep InfoMax是一種無監(jiān)督圖像表示學(xué)習(xí)方法,目標(biāo)是讓輸入樣本和其經(jīng)過Encoder后的表示互信息最大,互信息越大表明兩個變量相關(guān)性越強(qiáng),互信息可以采用InfoNCE、Jensen-Shannon MI estimator等方法求解。
具體實(shí)現(xiàn)上,隨機(jī)采樣一個圖像,經(jīng)過卷積得到feature map f(x),再經(jīng)過網(wǎng)絡(luò)得到一個圖像的表示向量h(f(x)),整個過程相當(dāng)于取了整個encoder中某一層的表示f(x),以及encoder的最終輸出h(f(x)),讓這兩個表示的互信息盡可能大。同時隨機(jī)選擇其他圖像,生成其feature map f(x’)。這樣f(x)和h(f(x))構(gòu)成正樣本,f(x‘)和h(f(x))構(gòu)成負(fù)樣本,再代入loss進(jìn)行優(yōu)化。基本思路采用了MINE的方法,去求一個下界。使用一個discriminator去判別輸入是配對的feature map和representaion的聯(lián)合概率分布還是不配對的feature map和representaion的邊緣概率分布的乘積。
最終學(xué)習(xí)的是中間表示中某一個部分的信息和最終encoder得到feature的相關(guān)性,互信息可以理解為在是否獲取encoder最終表示的情況下,我們能預(yù)測出的中間層某部分的表示會好多少。這是使用相對的預(yù)估能力而非絕對的預(yù)估能力進(jìn)行評估。
Learning Representations by Maximizing Mutual Information Across Views(2019)擴(kuò)展了DIM,學(xué)習(xí)一個圖像的兩種不同增強(qiáng)方式的互信息最小。DIM使用同一張圖像最終層和中間層的表示計算互信息,而本文采用一個圖像的不同增強(qiáng)后的view計算。
End-to-End方法的主要問題在于,采樣的負(fù)樣本數(shù)量受到GPU內(nèi)存限制,因此這種方法的每次更新能夠使用到的負(fù)樣本數(shù)量非常有限,影響了對比學(xué)習(xí)效果。 Memory Bank 針對End-to-End負(fù)樣本采樣數(shù)量受GPU內(nèi)存限制的問題,基于Memory Bank的方法進(jìn)入人們視野。Memory Bank的核心思路是,將某一輪模型對數(shù)據(jù)集中所有樣本的表示存儲起來,這些樣本在作為負(fù)樣本時,可以不進(jìn)行梯度更新,極大提升了每個batch負(fù)樣本數(shù)量。
Memory Bank對比學(xué)習(xí)的主要論文是Unsupervised feature learning via non-parametric instance discrimination(ICLR 2018)。當(dāng)進(jìn)行圖像分類時,如果兩個類別的圖像相似,那么模型更容易把這兩類的預(yù)測搞混,softmax得分排第二的的類別往往是和待預(yù)測類別比較相似的。這說明模型在學(xué)習(xí)的過程中,能夠從圖像數(shù)據(jù)本身學(xué)出哪些圖片表達(dá)相似的事物,而不需要引入標(biāo)簽。因此本文希望只利用無監(jiān)督的圖片,就學(xué)習(xí)出比較好的圖像表示,將原來的分類問題進(jìn)行一個擴(kuò)展,每個圖片視為一個類別,做多分類任務(wù),這樣無需有監(jiān)督數(shù)據(jù)就能學(xué)習(xí)圖像表示。同時,將softmax中每個類別對應(yīng)的權(quán)重替換為每個樣本的embedding結(jié)果,將原來的softmax去掉每個類別的權(quán)重參數(shù)w后變?yōu)榱?non-parametric softmax,最終表示為:
然而一個圖像為一個類別帶來的問題是計算softmax多分類損失時,分類的類別數(shù)和樣本數(shù)相同。因此本文提出利用InfoNCE loss來近似擬合softmax多分類損失,它與層次softmax、negative sampling都是解決類別較多時多分為問題的高效方法。InfoNCE loss將多分類問題轉(zhuǎn)換為多個二分類問題,原來是預(yù)測當(dāng)前樣本屬于哪個類別,轉(zhuǎn)換成判斷每個樣本(一個正樣本和多個負(fù)樣本)是否和當(dāng)前樣本匹配,或區(qū)分?jǐn)?shù)據(jù)樣本和噪聲樣本。 為了提升運(yùn)行效率,本文采用Model Bank的方法,每個樣本的表示更新后會存儲到model bank中。下次需要負(fù)樣本的時候直接從model bank取該樣本表示,而不會進(jìn)行前向計算和反向傳播。每個類別只有一個樣本會導(dǎo)致模型訓(xùn)練不穩(wěn)定,因此本文在損失函數(shù)中引入平滑項(xiàng),讓模型在t輪迭代計算的表示和t-1輪相似,引入兩輪表示的L2正則。隨著模型不斷收斂,這一項(xiàng)L2正則會逐漸變?yōu)?,整體又變成原來的InfoNCE loss。
Model Bank方法的問題在于,Model Bank中存儲的樣本表示不是最新訓(xùn)練的encoder產(chǎn)出的,和當(dāng)前encoder生成的表示有一定差異,導(dǎo)致模型訓(xùn)練過程存在問題,例如當(dāng)前encoder產(chǎn)出的編碼可能要和n輪迭代之前產(chǎn)出的encoder編碼做比較。同時,Model Bank側(cè)兩次樣本表示更新不具備連續(xù)性,也會導(dǎo)致訓(xùn)練不穩(wěn)定 Momentum Encoder Momentum Encoder主要為了解決Model Bank中每個樣本緩存的表示和Encoder更新不一致的問題。Momentum Encoder的核心思路是,模型在key側(cè)的encoder不進(jìn)行訓(xùn)練,而是平滑拷貝query側(cè)encoder的參數(shù),如下面的公式:
這種更新方式保證了key側(cè)參數(shù)的平滑性,且每次都能用最新的參數(shù)得到key側(cè)樣本的表示結(jié)果。典型的Momentum Encoder工作是Facebook提出的MoCo,論文Momentum Contrast for Unsupervised Visual Representation Learning。
In-Batch Negtive In-Batch Negtive也是對比學(xué)習(xí)中經(jīng)常采用的一種擴(kuò)大負(fù)樣本數(shù)量的方法。對于匹配問題,假設(shè)每個batch內(nèi)有N個正樣本對,那么讓這N個正樣本之間互為負(fù)樣本,這樣每個樣本就自動生成了2*(N-1)個負(fù)樣本。這種技巧提出的很早,在近期對比學(xué)習(xí)中又得到非常廣泛的應(yīng)用。
A Simple Framework for Contrastive Learning of Visual Representations(2020)就采用了In-Btahc Negtive的方法。此外,本文也提出了對比學(xué)習(xí)的一些關(guān)鍵發(fā)現(xiàn),包括對數(shù)據(jù)的argumentation的方式、batch size的大小、生成的embedding進(jìn)行normalize、對對比學(xué)習(xí)loss的temperature進(jìn)行調(diào)節(jié)都對對比學(xué)習(xí)效果有重要影響。融合了上述優(yōu)化,本文提出SimCLR對比學(xué)習(xí)框架,以最大化同一個圖像經(jīng)過不同argumentation后表示的相關(guān)性為目標(biāo)。整個流程分為3個步驟,首先對圖像進(jìn)行兩種不同的增強(qiáng)得到一對正樣本,然后經(jīng)過Encoder得到表示,最后將表示映射后計算對比學(xué)習(xí)loss,采用In-Batch Negtive的方法進(jìn)行學(xué)習(xí)。
在圖像和文本匹配的多模態(tài)領(lǐng)域,In-Batch Negtive也非常常用,例如Learning Transferable Visual Models From Natural Language Supervision提出的CLIP模型。In-Batch Negtive的優(yōu)點(diǎn)是非常簡單,計算量不會顯著增加。缺點(diǎn)是負(fù)樣本只能使用每個batch內(nèi)的數(shù)據(jù),是隨機(jī)采樣的,無法針對性的構(gòu)造負(fù)樣本。
總結(jié) 本文總結(jié)了對比學(xué)習(xí)的4種基本訓(xùn)練結(jié)構(gòu),包括End-to-End、Memory Bank、Momentum Encoder以及In-Batch Negtive,以及各自的優(yōu)缺點(diǎn)。對比學(xué)習(xí)訓(xùn)練方式發(fā)展的核心是,如何實(shí)現(xiàn)量級更大、質(zhì)量更好、更平穩(wěn)的負(fù)樣本表示。通過優(yōu)化負(fù)樣本,可以顯著提升對比學(xué)習(xí)的效果。 審核編輯:郭婷
-
gpu
+關(guān)注
關(guān)注
28文章
4701瀏覽量
128705 -
編碼
+關(guān)注
關(guān)注
6文章
935瀏覽量
54764
原文標(biāo)題:對比學(xué)習(xí)中的4種經(jīng)典訓(xùn)練模式
文章出處:【微信號:zenRRan,微信公眾號:深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論