对比学习效果差?谷歌提出弱语义负样本,有效学习高级特征!
文 | jxyxiangyu
編 | 小軼
對比學習是 2021 年幾大研究熱點之一了。如果說預(yù)訓(xùn)練模型解決了機器學習對大規(guī)模標注數(shù)據(jù)的需求問題,那么,對比學習可以說是將無監(jiān)督/自監(jiān)督學習推廣到更一般的應(yīng)用場景,為苦于標注數(shù)據(jù)不多的煉丹師們又帶來了福音。
一般來說,對比學習的重點在于:使同類樣本的特征表示盡可能接近,而異類樣本的特征表示之間的距離盡可能變大。在實際應(yīng)用場景下,正樣本數(shù)量通常小于負樣本的數(shù)量。在對比學習的工作中,提出的也多是正樣本的增強操作。比如在 SimCSE 中,就是對樣本原本的特征表示 dropout 操作獲取增強的正樣本。而對比學習中的負樣本,則往往直接使用數(shù)據(jù)集中的其他樣本(或者異類樣本)作為對比學習的負樣本。
▲無監(jiān)督 SimCSE 中的正負樣本如果我們將對比學習應(yīng)用到負樣本對上,又會產(chǎn)生怎樣的火花呢?最近,Maryland大學和谷歌聯(lián)合研究了對比學習在負樣本對上的應(yīng)用,下面,讓我們一起來看看吧!
論文題目:
Robust Contrastive Learning Using Negative Samples with Diminished Semantics
論文鏈接:
https://arxiv.org/pdf/2110.14189.pdf
對比學習
在解讀今天這篇論文之前,先簡單介紹下對比學習。
為解決標注數(shù)據(jù)不足的問題,對比學習提供了這樣一種思路:分別構(gòu)造相似樣本對(正樣本對)和不相似樣本對(負樣本對),并通過區(qū)分正樣本對和負樣本對來達到訓(xùn)練模型的目的。訓(xùn)練期間,模型會縮短正樣本對之間的距離,而拉大負樣本對的距離。
▲打住達咩,一些研究表明,基于CNN的模型會過多地關(guān)注數(shù)據(jù)的低級特征,比如圖片的局部 patch、紋理、甚至是人為添加的后期特征(換言之,就是模型找到了某些可以提升效果的 shortcut)。這些特征的微小變動可能會直接改變模型最終的預(yù)測。而站在人類視角來看,人們多是通過物體的形狀這種更高級的特征來識別和區(qū)分物體的。谷歌最近就提出了一種方法,可以通過增強弱語義負樣本,大大提升模型對比學習的魯棒性。
弱語義負樣本
傳統(tǒng)的對比學習只是粗暴地將正負樣本對區(qū)分開,實驗證明,這種方法構(gòu)造的負樣本對會驅(qū)使模型過度地依賴數(shù)據(jù)的底層特征,而忽略了底層特征組合產(chǎn)生的高級語義,畢竟,當我們在觀看一張狗的圖片的時候,更多地關(guān)注的是狗的外形、毛發(fā),而不是其中幾個patch反映出來的顏色和質(zhì)感。
弱語義負樣本的對比學習
文章的作者針對目前對比學習存在的問題,提出了用弱語義負樣本的對比學習。給定編碼模型 和圖片 ,模型的輸出為 ,原始樣本(query sample)記作 ,相應(yīng)的模型輸出為 。傳統(tǒng)的對比學習是從同一個原始樣本 通過保留語義信息的數(shù)據(jù)增強方法得到正樣本 ,而負樣本的生成方式并不固定,以 為例,該方法是從當前 batch 的其他樣本中選擇得到負樣本 ,正負樣本的模型輸出特征分別是 、。為了減少模型對底層特征的依賴,作者引入了弱語義負樣本 ,其模型輸出特征為 。顧名思義,弱語義負樣本指的是在輸入樣本中我們不希望模型學到底層非語義的低級特征。作者還給出了帶噪對比估計損失函數(shù)(noise-contrastive estimation, NCE):
402 Payment Required
其中,是超參,是調(diào)節(jié)弱語義負樣本比例的縮放因子
考慮到某些對比學習方法在loss函數(shù)設(shè)計上僅考慮了原始樣本和正樣本的相似度,類似的,作者也給出了相應(yīng)的帶弱語義負樣本的loss函數(shù):
通過最小化 或 ,模型可以學習到正樣本中含有的但弱語義負樣本中沒有的高級語義特征。
那么,我們應(yīng)該怎樣構(gòu)建弱語義的負樣本呢?作者給出了兩種構(gòu)造方案:基于紋理的負樣本生成方法和基于patch的負樣本生成方法,下圖展示了這兩種方法生成的負樣本。
▲弱語義負樣本生成方法基于紋理的負樣本生成
為了生成的弱語義負樣本可以很好地表示圖片中諸如紋理的局部低級特征,作者首先從輸入圖片(query sample)采樣出兩個patch,一個patch取自圖片的中心位置,表示圖片中目標的局部特征,另一個patch取自圖片中的隨機位置,表示圖片中其余的紋理特征,譬如目標對象的背景、輪廓等。具體地,實驗中在圖片大小允許的前提下,作者提取的是大小的patch,否則提取大小的patch;之后,用現(xiàn)有的紋理合成工具根據(jù)采樣的兩個patch生成大小的紋理圖片,為 ImageNet 數(shù)據(jù)集中的每個樣本重復(fù)上述操作,可以得到 ImageNet-Texture 紋理數(shù)據(jù)集。
基于patch的負樣本生成
給定圖片和采樣的patch大小,從圖片的個非重疊的隨機位置中采樣大小為的patch,之后,將這些patch平鋪并裁剪成的樣本。與基于紋理的負樣本生成方法相比,基于patch的方法運算速度快,耗時短;另外,基于patch的方法可以做到在每次迭代訓(xùn)練時采用不同的patch對生成負樣本,與基于紋理的方法相比,更具有隨機性。
當然,這并不意味著基于patch的方法是完美的,如上圖(e),所示,基于patch的方法會人為的引入一些分界線,這些分界線是由于patch間像素變化劇烈導(dǎo)致的,為緩解這一問題,作者先從先驗分布中采樣出patch大小,然后再基于此生成負樣本,以期望模型可以學到不同尺度下的紋理特征。
兩種負樣本生成方法的區(qū)別
介紹完上面兩種方法,相必會有小伙伴有疑問:既然兩種方法都可以生成弱語義負樣本,那么它們之間有什么區(qū)別呢?
作者使用官方給定的 MoCo-v2 模型在 ImageNet-1K 數(shù)據(jù)集上預(yù)訓(xùn)練200輪得到的模型,計算 ImageNet 訓(xùn)練集不同樣本對之間的余弦相似度,相似度分布如下所示:
▲弱語義負樣本生成方法對比可以看到,大部分正樣本對和負樣本對的相似度都接近1和0,平均相似度分別為0.94257和0.00018,而基于紋理和基于patch方法生成的負樣本對,其相似度分布并沒有像前兩者那么集中于某個點,而是分布在0~1之間,用作者的話來說,呈現(xiàn)出“heavy tail”的分布,平均相似度分別為0.35248和0.29503。
實驗
作者在 ImageNet 和 ImageNet-100 數(shù)據(jù)集上分別用兩種對比學習模型 MoCo 和 BYOL 對上述兩種生成方法生成的弱語義負樣本做了實驗,用在域外數(shù)據(jù)集(out-of-domain, OOD包括ImageNet-C(orruption)、ImageNet-S(ketch)、Stylized-ImageNet和ImageNet-R(endition))上的準確度(accuracy)作為評估模型在領(lǐng)域偏移(domain shift)的魯棒性。基于patch的負樣本生成方法中,patch大小服從的均勻分布。實驗結(jié)果如下:
▲弱語義負樣本實驗結(jié)果1可以看到,在 MoCo-v2 模型上,無論是基于紋理還是基于patch的弱語義負樣本生成方法,都可以提升在域外數(shù)據(jù)集上的泛化性。在域內(nèi)數(shù)據(jù)集(ImageNet)上,當超參選擇合適()時,基于patch的方法也能帶來準確率的提升。此外,基于紋理的方法帶來的性能提升不如基于patch的方法的明顯,可能的原因也在前面做弱語義負樣本相似度對比了相應(yīng)的分析。
▲弱語義負樣本相似度對比和圖2類似,作者給出了是否使用基于patch的方法生成的負樣本參與模型訓(xùn)練的樣本相似度分布情況。藍色曲線表示的是沒有使用弱語義負樣本訓(xùn)練的結(jié)果,紅色和綠色曲線表示的是使用不同的下弱語義負樣本訓(xùn)練的結(jié)果。可以看到,在模型訓(xùn)練過程中加入弱語義負樣本,可以降低原始樣本和弱語義樣本的相似度,說明模型降低了對底層特征的依賴,學到了更多高級語義特征,此外,隨著的增大,無論是基于紋理還是基于patch生成的弱語義負樣本,兩者的平均相似度也隨之降低,但整體來看,基于patch的方法降低程度更為明顯。
眾所周知,基于負樣本的對比學習方法存在對負樣本的挖掘效率低下的問題,前人多使用大 batch size 或 memory bank 來解決這一問題。作者分別在 STL-10 和 ImageNet-100 數(shù)據(jù)集上研究了弱語義負樣本是否可以緩解這一問題。實驗結(jié)果如下所示:
▲弱語義負樣本實驗結(jié)果2可以看到,無論 memory bank 大小如何改變,基于patch生成的弱語義負樣本訓(xùn)練的模型都有較好的準確率,證明了弱語義負樣本可以有效緩解上述問題。
作者還研究了損失函數(shù)中對平衡高級語義和底層紋理特征的影響,在 ImageNet-100 數(shù)據(jù)集上分別用不同的訓(xùn)練 MoCo-v2 模型,實驗結(jié)果如下,其中圖 c 展示的是在 ImageNet 驗證集和 ImageNet-Sketch 數(shù)據(jù)集上不同的值對準確率的影響:
▲弱語義負樣本實驗結(jié)果3可以看到,控制著模型中關(guān)于紋理(底層特征)和形狀(高級語義)的權(quán)重比例,隨著的增大,損失函數(shù)加大了對原始樣本和弱語義負樣本的相似度的懲罰,模型會學到更多的語義信息,相應(yīng)地,模型的預(yù)測準確率也與沒有使用弱語義負樣本相比有所提高。
關(guān)于形狀-紋理的初步討論表明,人類更多地依賴于形狀特征,而CNN更多地依賴于紋理特征,增加形狀這種高級語義信息可以提高模型的準確性和魯棒性,然而增大形狀并不總是能夠提升模型的魯棒性。因此,作者從不同的分類粒度的角度研究了ImageNet數(shù)據(jù)集中狗的圖片粗粒度和細粒度下的準確率(圖 d ),對于粗粒度分類,只關(guān)注圖像是否為狗類,而不關(guān)心具體是哪個種類的狗,而對于細粒度分類而言,只有預(yù)測為目標種類的狗的樣本才被視為預(yù)測正確。從圖 d 可以看到,隨著形狀特征的增加,細粒度預(yù)測準確率出現(xiàn)更為明顯的下降趨勢,因此,像 ImageNet 這種細粒度分類的數(shù)據(jù)集而言,偏好紋理這種底層特征的模型能夠有較高的準確度。在論文附錄中,作者也展示出了僅靠幾個紋理特征就可以實現(xiàn)模型較高的準確度。
總結(jié)
作者提出了用負樣本丟棄掉模型不需要學習的特征,從而提高對比學習模型的泛化性的思路和方法,也為因為對比學習的火熱就無腦對比學習的煉丹師們(比如我╮(╯▽╰)╭)給予了告誡:在模型訓(xùn)練之前,需要想清楚我們希望模型學到哪些特征。
除此之外,作者只在cv領(lǐng)域作了相關(guān)研究,而這些研究成果是否可以推廣到其他領(lǐng)域,比如nlp呢?仔細想想,這豈不又是一個水論文(bushi)的方向了嗎?
▲狂喜萌屋作者:jxyxiangyu
人工智障、bug制造者、平平無奇的獨臂俠、在某廠工作的初級程序員,從事對話交互方向,堅持每天寫一點bug,時常徘徊在人工智能統(tǒng)治未來和if-else才是真正的AI的虛擬和現(xiàn)實之間,希望有朝一日學術(shù)界的研究成果可以真正在工業(yè)界實現(xiàn)落地。
作品推薦
誰說發(fā) paper 一定要追快打新?2021年,研究 word2vec 也能中頂會!
一訓(xùn)練就顯存爆炸?Facebook 推出 8 比特優(yōu)化器,兩行代碼拯救你的顯存!
后臺回復(fù)關(guān)鍵詞【入群】
加入賣萌屋NLP/IR/Rec與求職討論群
后臺回復(fù)關(guān)鍵詞【頂會】
獲取ACL、CIKM等各大頂會論文集!
?
[1] 對比學習(Contrastive Learning)在CV與NLP領(lǐng)域中的研究進展(https://zhuanlan.zhihu.com/p/389064413)
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的对比学习效果差?谷歌提出弱语义负样本,有效学习高级特征!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 吴恩达:机器学习应以数据为中心
- 下一篇: 中文BERT上分新技巧,多粒度信息来帮忙