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

zeta在機(jī)器學(xué)習(xí)中的應(yīng)用 zeta的優(yōu)缺點(diǎn)分析
RoCE與IB對(duì)比分析(二):功能應(yīng)用篇

評(píng)論