劉相均
(廣東技術(shù)師范大學(xué),廣東 廣州 510665)
近些年,自監(jiān)督學(xué)習(xí)(Self-supervised Learning,SSL)在圖像分類、圖像分割、目標(biāo)檢測等計算機(jī)視覺任務(wù)中表現(xiàn)出了優(yōu)異的表征學(xué)習(xí)能力,廣受研究者們的關(guān)注。而對比學(xué)習(xí)(Contrastive Learning,CL)作為一種極具代表性的SSL 方法,在自然圖像領(lǐng)域取得了進(jìn)一步成功。與全監(jiān)督學(xué)習(xí)不同,CL 方法不需要標(biāo)注數(shù)據(jù),其本身可以利用大量的無標(biāo)注數(shù)據(jù)來學(xué)習(xí)圖像的特征表示。CL 的核心思想是通過數(shù)據(jù)增強(qiáng)構(gòu)造樣本的多樣性,利用損失函數(shù)在投影的嵌入空間中構(gòu)造距離近的相似(正)樣本對,同時構(gòu)建距離相對遠(yuǎn)的不同(負(fù))樣本對,從而學(xué)習(xí)到不同數(shù)據(jù)樣本之間的相對關(guān)系表達(dá)。本文將從CL 的發(fā)展歷程,CL 的基本原理以及不同CL 算法的比較三個方面進(jìn)行闡述,然后進(jìn)行總結(jié),旨在幫助后續(xù)的研究者們能夠快速地對CL算法有一個大致了解。
最早的CL 方法可以追溯到基于Siamese 網(wǎng)絡(luò)和三元組網(wǎng)絡(luò)的方法,這些方法主要應(yīng)用于驗證和檢索任務(wù)。而隨著深度學(xué)習(xí)的發(fā)展,特別是基于深度神經(jīng)網(wǎng)絡(luò)的無監(jiān)督預(yù)訓(xùn)練方法的興起,在計算機(jī)視覺領(lǐng)域中,對比學(xué)習(xí)逐漸受到廣泛關(guān)注,在2018 年Wu 等人[1]提出了InstDisc(Instance Discrimination)模型,采用了Memory bank 來存儲編碼器計算得到的表征向量,由此開啟了基于正負(fù)樣本對的對比學(xué)習(xí)研究思路。隨后,一系列基于對比學(xué)習(xí)的預(yù)訓(xùn)練方法相繼提出,如MoCo[2]、SimCLR[3]、SwAV[4]等。這些方法都通過對數(shù)據(jù)樣本之間的關(guān)系進(jìn)行建模來實現(xiàn)特征學(xué)習(xí),并在多個視覺任務(wù)上取得了優(yōu)異的效果。隨著Transformer 在視覺領(lǐng)域的熱門,研究者嘗試?yán)肨ransformer 的自注意力提取方式進(jìn)行對比學(xué)習(xí)的研究,在2021 年SwAV的作者提出了DINO[5]模型。隨后在2022 年P(guān)eng 等人[6]考慮了隨機(jī)采樣這一增強(qiáng)操作對于視圖質(zhì)量的影響,提出了訓(xùn)練預(yù)熱Grad-CAM 定位ROI 區(qū)域,然后在定位區(qū)域內(nèi)進(jìn)行中心壓制采樣的方法,該方法為CL 算法的增強(qiáng)視圖提供了更加豐富的圖像對比信息,使得CL 算法更具魯棒性。
對比學(xué)習(xí)的學(xué)習(xí)模式可以抽象為通過編碼器-解碼器的架構(gòu)將圖像Embedding 排列到嵌入空間中,通過在嵌入空間中的關(guān)系來判斷圖像間的相似性。其中最優(yōu)特征嵌入是通過實例級判別來學(xué)習(xí)的,如圖1所示,該判別試圖最大限度地將訓(xùn)練樣本的特征分散在單位球面上。假設(shè)輸入一個批次的圖像,首先使用數(shù)據(jù)增強(qiáng)策略得到同批次大小的增強(qiáng)視圖隊列,使用主干CNN網(wǎng)絡(luò)將兩部分批次圖像編碼為特征向量,然后通過投影層計算使得向量均勻分布,最后將其投影到高維空間并通過相似度損失函數(shù)進(jìn)行歸一化聚集。圖1 中示例的三組向量表示組內(nèi)近似,而三組向量相互之間是非近似狀態(tài)。
圖1 CL 算法示意圖
從得到的嵌入表征向量損失計算觀察,對比學(xué)習(xí)旨在通過噪聲對比估計(Noise Contrastive Estimation,NCE)進(jìn)行學(xué)習(xí)比較,其中x、x+以及x-表示輸入,x+與x為正樣本對,x-與x為負(fù)樣本對,f表示編碼器。由于在實際訓(xùn)練過程中可能涉及很多不相似對,而衍生出了InfoNCE 損失函數(shù),其具體公式的表達(dá)形式為:
通過以上的損失函數(shù),CL 模型不斷地將編碼器參數(shù)更新,使得CL 算法所構(gòu)建的相似正樣本對更加接近,而不同的負(fù)樣本對更加遠(yuǎn)離,從而實現(xiàn)無監(jiān)督條件下對圖像的表征學(xué)習(xí)。
目前已經(jīng)發(fā)展出了不少對比學(xué)習(xí)算法,不同對比學(xué)習(xí)算法各有優(yōu)劣,在具體使用時需要根據(jù)任務(wù)和數(shù)據(jù)集的特點進(jìn)行選擇和調(diào)整。在這我們分析極具代表性的三種暹羅網(wǎng)絡(luò)結(jié)構(gòu)的模型MoCo、SimCLR 和BYOL[7](如圖2)。MoCo 提出了使用基于動量對比的表征一致性來實現(xiàn)實例區(qū)分,利用記憶體(memory bank)形式來進(jìn)行編碼存儲。盡管MoCo 取得了很好的效果,但是其采樣方式使得區(qū)分正樣本對過于簡單,需要進(jìn)一步探索更高效的正樣本對采樣策略來提升模型的性能。SimCLR 提出使用多種數(shù)據(jù)增強(qiáng)方法增加輸入圖像的多樣復(fù)雜性,不同于MoCo 模型,SimCLR 直接使用當(dāng)前批次的記憶體內(nèi)負(fù)樣本,但這導(dǎo)致了訓(xùn)練需要使用較大批次的樣本容量。此外,SimCLR 還提供了一些技術(shù)思路,包括在編碼器中添加非線性映射、使用更深的backbone 網(wǎng)絡(luò)等。
圖2 暹羅網(wǎng)絡(luò)體系對比算法結(jié)構(gòu)演化
BYOL 吸收了MoCo 和SimCLR 的特點并改進(jìn),取得了比二者更好的性能。BYOL 只采用了正樣本對,使用隨機(jī)初始化的網(wǎng)絡(luò)作為目標(biāo)編碼器,然后將其逐漸替換為經(jīng)過訓(xùn)練的查詢編碼器來迭代訓(xùn)練。BYOL 還采用了回歸范式的損失計算,使用均方差來度量預(yù)測值和目標(biāo)值之間的差異。通過這些改進(jìn),BYOL 取得了很好的表現(xiàn)。BYOL 的設(shè)計清晰簡潔、方法獨特,為對比學(xué)習(xí)領(lǐng)域的研究提供了一種有效的方法。
一般來說,暹羅結(jié)構(gòu)形式的CL 網(wǎng)絡(luò)適用于小規(guī)模數(shù)據(jù)集和特定領(lǐng)域,而BYOL 和DINO 等方法則更適合大規(guī)模無監(jiān)督學(xué)習(xí)和跨領(lǐng)域表示學(xué)習(xí)。我們在以下列舉了一些CL 算法,見表1。其中主要比較了不同的CL算法的核心思想的轉(zhuǎn)變和隨著新技術(shù)的改進(jìn)。
本文對目前對比學(xué)習(xí)的發(fā)展、原理以及一些CL 算法的設(shè)計創(chuàng)新做出了簡要概括,盡管由于不同的體系結(jié)構(gòu)和實現(xiàn),我們很難詳細(xì)比較這些方法的性能,但根據(jù)這些CL 算法的設(shè)計思路可以總結(jié)出對比學(xué)習(xí)的主要發(fā)展的趨勢。當(dāng)前對比學(xué)習(xí)面臨的挑戰(zhàn)如下:
1.數(shù)據(jù)噪聲:CL 方法都要求使用大量的訓(xùn)練數(shù)據(jù),但這些數(shù)據(jù)往往會存在一定的噪聲和錯誤,這會使模型在學(xué)習(xí)和推斷時產(chǎn)生不良影響。如何消除數(shù)據(jù)噪聲和錯誤,提高數(shù)據(jù)的質(zhì)量和可靠性,是對比學(xué)習(xí)領(lǐng)域需要解決的問題。
2.訓(xùn)練效率:對比學(xué)習(xí)方法往往需要進(jìn)行大量的重復(fù)計算和參數(shù)更新,對計算資源和存儲能力要求很高,這會導(dǎo)致訓(xùn)練和資源成本的增加。如何提高對比學(xué)習(xí)的訓(xùn)練效率,是未來需要面對的挑戰(zhàn)。
3.多模態(tài)學(xué)習(xí):大多數(shù)對比學(xué)習(xí)方法只是在單個模態(tài)上進(jìn)行學(xué)習(xí),如圖像或文本等。但在實際應(yīng)用中,我們需要對不同模態(tài)的數(shù)據(jù)進(jìn)行分析。如何將對比學(xué)習(xí)擴(kuò)展到不同模態(tài)數(shù)據(jù)之間進(jìn)行學(xué)習(xí),也是未來的一個重要方向。
4.泛化性能:對比學(xué)習(xí)方法往往是在特定數(shù)據(jù)集和任務(wù)上進(jìn)行訓(xùn)練和評估的,但這些方法是否具有比較好的泛化性能,即是否可以在不同數(shù)據(jù)集和任務(wù)上進(jìn)行推廣,仍然需要進(jìn)一步的探索。
總的來說,對比學(xué)習(xí)需要解決的挑戰(zhàn)包括數(shù)據(jù)噪聲、訓(xùn)練效率、多模態(tài)學(xué)習(xí)和泛化性能等,在未來通過開展更多的研究和實踐,對比學(xué)習(xí)有望在更廣泛的場景中發(fā)揮重要的作用。