从ACL2021看对比学习在NLP中的应用
本文首發于微信公眾號”夕小瑤的賣萌屋“
文 | 花小花Posy
源 | 夕小瑤的賣萌屋
最近關注對比學習,所以ACL21的論文列表出來后,小花就搜羅了一波,好奇NLPers們都用對比學習干了什么?都是怎么用的呀?效果怎樣呀?
接收列表中有21篇論文題目包含了關鍵詞“contrastive”。下圖是題目的詞云,其中最顯著的是使用對比學習去學習表示或者幫助語義理解,還有機翻、摘要、關系抽取。
小花選擇了10篇有意思的論文跟大家分享,方向包括句子表示[1-3],自然語言理解[4-6], 生成式摘要[7],意圖檢測[8],多模態理解[9], 機器翻譯[10]。當然還有其它的,比如用于事件抽取[12]、QA[13]等等,大家感興趣可以自行補充!
為了大家快速get到跟對比學習最相關的部分,主要涉及論文中哪里用了對比,對比的對象是誰。
對比學習最重要的原料就是正例和負例的對比,以及在不同的應用場景下應該如何構造合理的正例和負例,如何設計對比損失函數。正負例的構造,可以分為利用顯式的數據增強方式構造正負例[3-5,8-10],或者通過在語義空間/模型層面采樣/生成正負例[1-2,6]。從對比損失函數的使用上來講,可以分為與原始的MLM損失加和一起進行joint訓練[1,5,10],或者進行pipeline訓練[7-8]。
下面有請今天的主角們登場,大家開心食用!
從BERT中提取出句子向量的easy模式,想必大家都超熟了,使用[CLS]的表示或者使用不同的pooling操作。但這就夠了嘛?當然不夠!
從預訓練語言模型中提取出句子表示的最優方法是什么,仍是研究者們在不斷探索的問題。除了之前推送過的強者SimCSE以外,下面前三篇的主題都是如何利用對比學習去學習到更好的句子/文本片段表示。
[1] 自我引導的對比學習(一個BERT不夠,那就兩個)
Self-Guided Contrastive Learning for BERT Sentence Representations
https://arxiv.org/pdf/2106.07345.pdf
來自首爾大學,討論的問題是如何在不引入外部資源或者顯示的數據增強的情況下,利用BERT自身的信息去進行對比,從而獲得更高質量的句子表示?
文中對比的是:BERT的中間層表示和最后的CLS的表示。模型包含兩個BERT,一個BERT的參數是固定的,用于計算中間層的表示,其計算分兩步:(1) 使用MAX-pooling獲取每一層的句子向量表示 (2)使用均勻采樣的方式從N層中采樣一個表示;另一個BERT是要fine-tune的,用于計算句子CLS的表示。同一個句子的通過兩個BERT獲得兩個表示,從而形成正例,負例則是另一個句子的中間層的表示或者最后的CLS的表示。
文中還對比了不同負例組合的方式,最后發現只保留CLS的表示和隱藏層的表示之間的對比,忽略CLS和CLS以及中間層和中間層之間的對比是最優的,即保留(1)(3)。
這篇論文沒有選擇直接從底層數據增強角度出發,是稍微偏模型方法的改進的,側重挖掘模型內部的信息。主實驗是在STS和SentEval任務上測試的,從結果來看的話,仍然是SimCSE要好很多,而且SimCSE操作起來是更簡單的。不過本文也是提供了一個不一樣的思路。
[2] 花式數據增強
ConSERT: A Contrastive Framework for Self-Supervised Sentence Representation Transfer
https://arxiv.org/pdf/2105.11741.pdf
來自北郵的工作,也是研究如何在無監督的模式下,學習更好的句子表示。該工作主要對比了使用4種不同的數據增強方式進行對比對句子表示的作用。
模型是在STS任務上進行評估的。和SimCSE一樣也用了NLI做監督,整體性能比SimCSE低1-2個點。
[3] 無監督文本表示
DeCLUTR: Deep Contrastive Learning for Unsupervised Textual Representations
https://arxiv.org/pdf/2006.03659.pdf
DeCLUTR來自多倫多大學,是NLP領域使用對比學習中較早的一篇,去年6月份就放到arxiv上面了。
文章研究的問題同樣是:如何利對比學習從大量無標注數據學習更好的通用句子表示?文中的對比體現在兩個方面:
1. 對比來自不同文檔的文本片段(span)的語義。如果兩個文本片段(span)來自同一個文檔,那么他們的語義表示的距離應該相對較近,否則距離遠;2. 對比來自同一文檔的文本span。當兩個文本片段都來自同一個文檔,如果他們在文檔中的位置距離比較近,他們的語義表示距離近,否則遠。
在采樣正例的時候有些講究。具體來講是先從一個文檔中采樣N(>=1)個原始文本片段 (錨點span),然后從每個錨點span周圍采樣,作為正例 span。采樣規則是正例span可以與錨點span交疊、相鄰、從屬。負例是從一個batch中隨機采樣得到的。對比學習的損失函數是InfoNCE。模型整體的損失函數是InfoNCE和MLM的加和。
實驗是在SenEval benchmark(28個數據集)上進行測試的,包含有/半監督任務和無監督任務。有/半監督任務的baseline有InferSent,Universal Sentence Encoder和Sentence Transformers;無監督任務的baseline有QuickThoughts。最顯著的實驗結果是DeCLUTR在大部分的數據集上取得了SOTA,并且在無監督任務上取得了和有監督任務相當的結果。
接下來兩篇文章是關于如何利用對比學習提升自然語言理解任務的性能。
[4] 論負例對對比學習的重要性
CLINE: Contrastive Learning with Semantic Negative Examples for Natural Language Understanding
https://arxiv.org/pdf/2107.00440.pdf
來自清華大學,文章探討的是如何利用對比學習提高模型的魯棒性。在初步實驗中發現用探針對句子語義進行輕微擾動,模型就會預測錯誤。之前的對抗訓練確實能夠從擾動的樣本中學習,但是主要側重于語義相似的擾動,忽略了語義不同或者相反的擾動。這樣的語義改變無法被對抗學習無法檢測到。本文提出CLINE,使用無監督的方法構造負樣本。通過同時利用語義相似和相反的樣例和原始樣例進行對比,模型可以偵測到擾動導致的語義的改變。
正負例的構造:
正例是將句子中的詞(名詞、動詞、形容詞)替換為其同義詞. 負例是將句子中的詞替換為其反義詞或者隨機選擇的詞。文中的損失函數由三部分構成:掩碼語言模型的MLM損失 + 檢測當前詞是否是被替換的詞 的損失RTD + InfoNCE對比正例和負例。有個小細節不太一樣的是對比InfoNCE中并沒有引入溫度參數τ。
實驗是在NLU任務上進行的,包括NLI(SNLI, PERSPECTRUM,) 情感分析(IMDB,MB) 閱讀理解 (BoolQ), 新聞分類(AG)。實驗結果表明使用CLINE訓練的模型可以同時在對抗測試集和對比測試集上提升性能。
[5] 對比實例學習+遠距離監督關系抽取
CIL: Contrastive Instance Learning Framework for Distantly Supervised Relation Extraction
https://arxiv.org/pdf/2106.10855.pdf
來自阿里巴巴-浙江大學前沿技術聯合研究中心,研究如何利用對比學習提高遠距離監督的關系抽取任務的性能。
從對比角度講,正例是同一關系下的實例對,負例是不同關系的實例對。文中的重點是在有噪聲的情況下,如何構造正負例。CIL的baseline是多實例對比學習,是將多個屬于同一關系的實例放在一個bag中,一起訓練得到一個關系的表示。每個實例都被假設是表達了一個實體對之間的關系。
正例:直覺上講,對于一個實例的正例只要從同一個bag中隨機sample一個就好,或者使用bag的整體表示。但因為是遠距離監督,無法保證任意兩個實例之間都一定表達了同一種關系,同樣也無法保證樣例和bag的整體表示一定關系相同。如果這樣強行構造正負例的話,必然會引入噪聲。文中采用的一種方式是,對于插入/替換掉中不重要的詞語(還是數據增強)。負例:同樣因為是遠距離監督,不能隨便從一個別的bag中采樣一個實例作為的負例,那樣噪聲會比較大。因此文中采用了使用整個別的bag的表示作為負例,能相對更好地降噪。
模型的損失函數是InfoNCE對比損失和MLM損失的加權和。CIL在NYT10,GDS和KBP三個數據集上取得較大提升。
[6] Post-training中使用對比學習
Bi-Granularity Contrastive Learning for Post-Training in Few-Shot Scene
https://arxiv.org/pdf/2106.02327
來自中山大學,本文主要針對樣本量稀少的場景,如何使用對比學習先在無標注數據集進行post-training, 然后再在有標注數據集上fine-tuning。
對比方法:互補的mask方法,將一個輸入進行多次mask,第一次的mask的比例是, 第二次mask的時候只針對第一次mask中沒被選擇的token以的比例進行mask,所以兩個句子被mask的部分是互補的,第三次以此類推。 對比是在多個被mask的輸入上進行的。這樣做的好處是既可以避免太小時,兩個句子太相似導致對比損失迅速降到0,也可以避免太大而導致模型無法恢復mask的內容。(和SimCSE的直接兩次dropout相比復雜了點,但有異曲同工之妙)。
實驗是在少樣本GLUE上進行的,只有20個樣例的時候提升不是很明顯,樣本100和1000的時候相比之前SOTA有輕微提升。
[7] 對比學習+生成式摘要
SimCLS: A Simple Framework for Contrastive Learning of Abstractive Summarization
https://arxiv.org/pdf/2106.01890
來自CMU,蠻有意思的一篇文章。核心點是利用對比學習將文本生成看作是reference-free的評價問題。
生成式摘要典型的框架是Seq2Seq,之前也有工作將對比學習損失作為MLE損失的增強。不同的是,這篇文章將兩個損失用在了不同的階段。文中將摘要生成分解為兩個過程:生成 和 評分+選擇。從而提出了two-stage的框架,stage1是Seq2Seq模型,仍然利用MLE損失生成候選摘要,stage2引入對比學習,利用參數化的評估模型對stage1中生成的候選進行排序。兩個階段是分開優化的,都是有監督的。這里對比的是生成的候選摘要和原始文檔。引入了一個raking loss, 希望預測值和真實值接近;希望每個候選值之間有差距。
[8] 對比學習 + 意圖檢測
Modeling Discriminative Representations for Out-of-Domain Detection with Supervised Contrastive Learning
https://arxiv.org/pdf/2105.14289.pdf
來自北郵模式識別實驗室,研究的問題是:在Task-oriented的對話系統中,如何檢測用戶query中的跟task/domain不相關的問題。比如你問一個銀行的app語音助手,我有多少余額,它檢測該問題為in-domain (IND) 的問題,并給出回答;但你如果問它,我們一起健身的小伙伴都怎樣呀?我們不希望模型“不懂裝懂”,而是希望它可以檢測該問題為out-of-domain (OOD),并引導用戶提出domain相關的問題。下圖是來自數據集[11]中的一個樣例。
OOD的檢測方法分為有監督和無監督的兩種。有監督的方式在訓練時已知哪些數據OOD的,所以在訓練時可以將OOD的數據當成一個類型;無監督方式訓練的時候只有標注的IND數據。常用的方法是先利用IND數據學習類別的特征 (分類器),然后使用檢測算法計算IND樣本和OOD樣本的相似度。
本文的先驗假設是:
一個OOD檢測模型依賴于高質量IND類別表示模型。之前的IND分類器雖然在IND數據上表現好,應用到OOD時性能不高,原因是類別間的間隔很模糊。所以該工作的核心是利用對比學習減小類內距離,增大類間距離。更好的IND聚類促使更好的OOD分類。本文主要針對的是無監督OOD進行訓練,策略是先用有監督對比學習在IND數據上訓練,然后用cross-entropy損失對分類器fine-tune,有監督對比學習的目標是拉近IND中屬于拉近同一類別的意圖,推遠不同類別的意圖。因此:
正例對來自同一個類別的數據 負例是不同類別的數據文中也使用了對抗攻擊生成hard正例來做數據增強。文中的實驗是比較全面的,對比了不同scale的數據集,不同的encoder,不同的OOD檢測算法。
小花覺得這篇有意思主要是因為OOD檢測的思路,不僅可以用在意圖檢測領域,還可以直接擴展到別的領域,比如用于關系抽取中檢測新的關系。
接下來的兩篇論文都利用了任務本身的屬性將對比擴展到了多對多上,同時包含單個模態/語言的對比和跨模態/跨語言的對比。
[9] 對比學習 + 多模態學習
UNIMO: Towards Unified-Modal Understanding and Generation via Cross-Modal Contrastive Learning
https://arxiv.org/pdf/2012.15409.pdf
來自百度的UNIMO,利用跨模態的對比學習將文本和視覺信息對齊到一個統一的語義空間。之前也有統一訓練文本和視覺的模型,比如ViLBERT, VisualBERT,但是它們只能利用有限的文本-圖像對齊的數據,且無法有效的適應到單模態的場景。本文要解決的是問題是:如何通過對比學習同時利用單模態和多模態的數據來實現更好的圖像-文本對齊?
對比部分核心的點是,通過花式重寫原始的caption來生成正例和負例。對于一對對齊的圖像-文本數據,通過文本重寫的方式構造多模態的正負例樣本,同時通過文本/圖像檢索的方式構造單模態的正例樣本。 正負例樣本又分為多個level,包括句子級別、短語級別、詞級別。比如句子級別的多模態的正例是通過back-translation生成的,負例是利用當前圖片的字幕從其它圖片的字幕中找相似的得到的。
UNIMO的優勢在于可以同時利用單模態數據和多模態對齊數據進行訓練,測試時在單模態的理解和生成任務上都表現很好。
[10] 對比學習 + 機器翻譯
Contrastive Learning for Many-to-many Multilingual Neural Machine Translation
https://arxiv.org/pdf/2105.09501.pdf
看到這篇文章的時候,腦子里想的是,“一生二,二生三,三生萬物”。在對比學習中,只要存在一個對象,我們就可以給它找到或者造一個對比對象,讓它們去自我對比,自己進化;當多個對象成立的時候,我們都不需要造了,只需要利用就好。
多對多機翻就是典型的例子。這篇文章來自字節跳動AI Lab,研究的問題是:如何學習更好的通用跨語言表示,來獲得更好的多語言翻譯效果?尤其是當源語言或者目標語言不是English的時候。
本文的先驗假設是,如果兩句話說的是同一個意思,即使它們使用的語言不相同,那么它們在語義空間中的表示也應該接近。所以本文的訓練目標是:減少相似句子表示之間的距離,增大不相關句子表示之間的距離。文中使用了fancy的數據增強,同時使用單語和多語的數據進行對比。
方法簡單,效果好,實驗solid,值得細品。
本文首發于微信公眾號”夕小瑤的賣萌屋“
文 | 花小花Posy
源 | 夕小瑤的賣萌屋
參考文獻
[1] DeCLUTR: Deep Contrastive Learning for Unsupervised Textual Representations https://arxiv.org/pdf/2006.03659.pdf
[2] Self-Guided Contrastive Learning for BERT Sentence Representations https://arxiv.org/pdf/2106.07345.pdf
[3] ConSERT: A Contrastive Framework for Self-Supervised Sentence Representation Transfer https://arxiv.org/pdf/2105.11741.pdf
[4] CLINE: Contrastive Learning with Semantic Negative Examples for Natural Language Understanding https://arxiv.org/pdf/2107.00440.pdf
[5] CIL: Contrastive Instance Learning Framework for Distantly Supervised Relation Extraction https://arxiv.org/pdf/2106.10855.pdf
[6] Bi-Granularity Contrastive Learning for Post-Training in Few-Shot Scene https://arxiv.org/pdf/2106.02327
[7] SimCLS: A Simple Framework for Contrastive Learning of Abstractive Summarization https://arxiv.org/pdf/2106.01890
[8] Modeling Discriminative Representations for Out-of-Domain Detection with Supervised Contrastive Learning https://arxiv.org/pdf/2105.14289
[9] UNIMO: Towards Unified-Modal Understanding and Generation via Cross-Modal Contrastive Learning https://arxiv.org/pdf/2012.15409.pdf
[10] Contrastive Learning for Many-to-many Multilingual Neural Machine Translation https://arxiv.org/pdf/2105.09501.pdf
[11] An Evaluation Dataset for Intent Classificationand Out-of-Scope Prediction https://aclanthology.org/D19-1131.pdf
[12] CLEVE: Contrastive Pre-training for Event Extraction https://arxiv.org/pdf/2105.14485.pdf
[13] KACE: Generating Knowledge Aware Contrastive Explanations for Natural Language Inference (not public yet)
[14] xMoCo: Cross Momentum Contrastive Learning for Open-Domain Question Answering (not public yet)
總結
以上是生活随笔為你收集整理的从ACL2021看对比学习在NLP中的应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 部门直推!百度大搜索招聘NLP、搜索方向
- 下一篇: Facebook大公开:解决NLG模型落