1. 程式人生 > 其它 >對比學習論文(持續更新)

對比學習論文(持續更新)

最近老闆讓我去讀對比學習的論文,我斷斷續續讀了一些。在這裡對讀到的文章做一下整理,因為考試和假期這些論文也是比較久之前讀的了,難免有所不足,請見諒。

目錄

EMNLP 2021-SimCSE: Simple Contrastive Learning of Sentence Embeddings

這篇文章大家已經耳熟能詳了,並且也有很多文章做了很好的分析。可以看這篇部落格

  • 它簡單地用dropout替換了傳統的資料增強方法,將同一個輸入dropout兩次作為對比學習的正例,而且效果甚好。
  • 它簡單地將NLI的資料用於監督對比學習,效果也甚好。
  • 此外文中還分析了對比學習究竟是如何工作的

ACL-2021-ConSERT: A Contrastive Framework for Self-Supervised Sentence Representation Transfer

本篇論文美團已經給出了很詳細的解讀

  • 本文的想法思路也是一樣即對比學習,主要創新點就是試了一些資料增強如對抗攻擊、打亂詞序、裁剪、dropout等等。通過一個數據增強模組,作用於Embedding層,為同一個句子生成兩個不同的增強版本,作為正樣本,一個batch內的其他樣本作為負樣本

  • 首先,作者對Bert的“坍縮”現象進行了說明,即BERT對所有的句子都傾向於編碼到一個較小的空間區域內,這使得大多數的句子對都具有較高的相似度分數,即使是那些語義上完全無關的句子對。作者認為這種現象是由於句子中的高頻詞的影響,即當通過平均詞向量的方式計算句向量時,那些高頻詞的詞向量將會主導句向量,使之難以體現其原本的語義。當計算句向量時去除若干高頻詞時,坍縮現象可以在一定程度上得到緩解。

  • 並對一些資料增強方法進行了比較得出:Token Shuffle > Token Cutoff >> Feature Cutoff ≈ Dropout >> None還對怎麼組合這些資料增強進行了實驗得到:Token Shuffle和Feature Cutoff的組合取得了最優效能。各部分具體如下:

    • 對抗攻擊(Adversarial Attack):這一方法通過梯度反傳生成對抗擾動,將該擾動加到原本的Embedding矩陣上,就能得到增強後的樣本。由於生成對抗擾動需要梯度反傳,因此這一資料增強方法僅適用於有監督訓練的場景。
    • 打亂詞序(Token Shuffling):這一方法擾亂輸入樣本的詞序。由於Transformer結構沒有“位置”的概念,模型對Token位置的感知全靠Embedding中的Position Ids得到。因此在實現上,我們只需要將Position Ids進行Shuffle即可。
    • 裁剪(Cutoff):又可以進一步分為兩種:Token Cutoff:隨機選取Token,將對應Token的Embedding整行置為零。Feature Cutoff:隨機選取Embedding的Feature,將選取的Feature維度整列置為零。
    • Dropout:Embedding中的每一個元素都以一定概率置為零,與Cutoff不同的是,該方法並沒有按行或者按列的約束。
      這四種方法均可以方便地通過對Embedding矩陣(或是BERT的Position Encoding)進行修改得到,因此相比顯式生成增強文字的方法更為高效。

ACL 2021 BOB:BERT over BERT for Training Persona-based Dialogue Models from Limited Personalized Data

開放域對話系統需要在對話過程中儘可能地保持一致的人物角色特徵,但是在應用上受限於人物角色對話資料的有限規模。在現階段下,無論是開放域對話生成模型還是開放域對話系統,面臨的最大挑戰之一就是對話回覆的前後不一致。針對這一問題,相關的研究工作開始在對話中明確地引入角色資訊。角色資訊的引入極大地簡化了對話過程一致性的建模,也使得評價過程更容易。然而,這些工作都依賴於帶有角色資訊的對話資料,但是標註成本高昂,難以獲得大規模的資料。
針對上面的問題,本文設計了一個全新的基於BERT的模型,包含了一個BERT編碼器和兩個BERT解碼器,將理解能力和生成能力的獲取分離開來。這樣,無論是一致性理解還是對話生成,都能夠找到充足的資料資源來進行訓練。對於一致性理解,本文選擇使用大規模的非對話推理資料集(non-dialogue inference dataset),比如MNLI和SNLI;對於對話生成,選擇使用大規模對話語料,比如角色資訊稠密的PersonaChat資料集(英文,眾包,12萬資料量)和角色資訊稀疏的PersonalDialog資料集(中文,社交媒體,1200萬資料量)。該模型由一個基於 BERT 的編碼器和兩個基於 BERT 的解碼器組成,其中一個解碼器用於響應生成,另一個用於一致性理解。

  • 參考1參考2參考3

  • 自迴歸 (Autoregressive) 解碼器:自迴歸解碼器將解碼器自己當前步的輸出加入下一步的輸入,解碼器融合所有已經輸入的向量來輸出下一個向量,所以越往後的輸出考慮了更多輸入。在一定程度上自己預測自己。

  • 模型結構:

  1. 編碼器E。它的工作方式類似於一個標準BERT模型,它雙向地將嵌入的輸入編碼為一個隱藏向量序列,下游的任務將在這個序列上執行。然後嵌入層將輸入資訊轉換為詞向量,這裡E的工作方式和原始的BERT完全一致。

  2. 自迴歸解碼器D1。由BERT初始化,但以自迴歸解碼器方式工作。首先,在E和D1之間插入交叉注意傳遞上下文資訊。其次,為保持自迴歸生成特性,對D1執行詞語自左向右預測掩碼(利用上三角的掩碼矩陣),以確保生成的回覆詞只能依賴已有的資訊。由於BERT模型中不存在交叉注意力機制,因此在訓練過程中對交叉注意力機制進行隨機初始化和更新。D1最後一層的輸出會進一步送到D2中進行一致性理解處理。

  3. 雙向解碼器D2。D2也是從BERT進行初始化的,為了減少推理資料中矛盾資料出現的可能性,使D2能夠獲得一致性理解的能力,D2引入了Unlikelihood目標函式進行訓練。在進行一致性理解訓練時,D2的輸入是資料集N={Premise, Hypothesis, Label},而生成目標同樣資料中的Hypothesis。原因在於模擬對話資料的生成方式,從而讓模型能夠利用非對話的推理資料進行一致性理解訓練。每一層的結果融合了P和 R1 的資訊。D2最後一層的輸出是最終表示R2。在R2上通過輸出層,例如線性層,我們可以得到生成的響應R。

  • 實驗:
  1. 同時在角色資訊稠密的PersonaChat資料集和角色資訊稀疏的PersonalDialog資料集上通過大量的實驗來驗證了BoB模型的有效性。在評價指標方面,同時使用了人工評價和客觀指標,來比較不同模型的角色一致性和回覆質量。對於客觀指標,本文引入了基於不同類別(一致和矛盾)對話回覆的語言模型困惑度指標和基於分類器的一致性得分指標來進行比較。實驗結果證明了BoB模型在保持良好的回覆質量的同時,仍然在角色一致性上優於所有基線模型。

  2. 在PersonaChat資料集上進行消融實驗。結果為:Unlikelihood訓練目標對於一致性理解最為重要;而第二個解碼器則對於多樣性和困惑度貢獻最大;基礎的BERT編碼器也有不錯的效能表現,為BoB模型提供了良好的初始化。

在兩個公開資料集上的實驗表明,本文的模型可以使用更少的角色化對話資料訓練,同時獲得比使用全量資料訓練的強基線方法更好的效果。

ACL 2021 DeCLUTR: Deep Contrastive Learning for Unsupervised Textual Representations

文章研究的問題同樣是:如何利對比學習從大量無標註資料學習更好的通用句子表示?文中的對比體現在兩個方面:

  1. 對比來自不同文件的文字片段(span)的語義。如果兩個文字片段(span)來自同一個文件,那麼他們的語義表示的距離應該相對較近,否則距離遠;
  2. 對比來自同一文件的文字span。當兩個文字片段都來自同一個文件,如果他們在文件中的位置距離比較近,他們的語義表示距離近,否則遠。
    在取樣正例的時候有些講究。具體來講是先從一個文件中取樣N(>=1)個原始文字片段 (錨點span),然後從每個錨點span周圍取樣,作為正例 span。取樣規則是正例span可以與錨點span交疊、相鄰、從屬。負例是從一個batch中隨機取樣得到的。對比學習的損失函式是InfoNCE。模型整體的損失函式是InfoNCE和MLM的加和。
  • 對於正負樣本的選擇:我的理解為每個文件之取樣一個錨點(用i標記),同時在同一個文件中取樣p個正樣本然後取平均值作為最終的正樣本,然後在其他文件中同樣進行(如i+1)。作為負樣本。

  • 模型的流程如下:

  1. 先從無標註的文件中以beta分佈中抽樣anchor片段,在從這一篇相同的文件以不同的beta分佈抽樣出positive樣本對。

  2. 之後分別將anchor片段Si和positive片段Sj經過兩個相同架構共享權值的編碼器,生成對應的token embedding。

  3. 再將token embedding進行pooler操作,即將所有的token embedding平均生成同一維度的sentence embedding。

  4. 計算對比學習的損失函式,計算了兩個片段資訊之間的距離。

  5. 在計算出對比學習的loss之後,再加入MLM的loss,對模型進行反向梯度傳播更新引數。

  • 實驗是在SenEval benchmark(28個數據集)上進行測試的,包含有/半監督任務和無監督任務。有/半監督任務的baseline有InferSent,Universal Sentence Encoder和Sentence Transformers;無監督任務的baseline有QuickThoughts。最顯著的實驗結果是DeCLUTR在大部分的資料集上取得了SOTA,並且在無監督任務上取得了和有監督任務相當的結果。本文的實驗結果如下:

模型:DeCLUTER-small使用DistilRoBERTa預訓練模型引數為基礎,DeCLUTER-base使用RoBERTa-base預訓練模型引數為基礎。

資料集:OpenWebText corpus,有495243個至少長度為2048的文件。

下游使用模型編碼出的句子嵌入來作為分類器的特徵進行分類,來探測評估模型生成的句子嵌入所含有的語義資訊,最後取得了state-of-the-art。

NAACL 2021:Supporting Clustering with Contrastive Learning

這篇文章結合對比學習提出一種簡單且有效的無監督文字聚類方法:SCCL。該模型刷爆了7個短文字聚類任務。

  • 文章致力於解決無監督聚類任務。所謂無監督聚類任務是在表徵空間內通過特定的相似度量方法區分不同的語義簇。可以看出,這涉及2方面,輸入如何表徵和表徵之間相似度如何度量。現有方案所得到的表示空間在各簇樣本上已經重疊,這就使得後續的聚類演算法難以突破其前置天花板。因此本文章結合對比學習提出一種名為SCCL的模型。該模型結合了bottom-up的例項對比學習和top-down的聚類,取得了更好的聚類結果。

  • 該論文其實在對比學習上沒有多大創新,還是前幾周介紹中所學的思想,研究使用了三種資料增強:

  1. Augmenter WordNet:通過用 WordNet 同義詞替換其單詞來轉換輸入文字

  2. Augmenter Contextual:利用預訓練Transformer(論文選用Bert-base和Roberta)對輸入文字找top-n個合適的單詞進行插入或替換。

  3. Paraphrase via back translation:首先將輸入文字翻譯成另一種語言(法語),然後再翻譯回英語,從而生成對輸入文字的釋義。

最後上述三個中第二個效果最好

其比較巧妙的是將其結合到了聚類上面,其框架圖如下:

  • SCCL由3部分組成:神經網路特徵抽取層、clustering head 和 Instance-CL head。特徵抽取層將輸入對映到向量表示空間,SCCL是使用Sentence Transformer 釋出的distilbert-base-nli-stsb-mean-tokens預訓練模型。Instance-CL head 和 clustering head中分別使用contrastive loss 和 clustering loss。Instance-CL head由單層MLP組成,其啟用函式使用的是ReLU。輸入維度是768,輸出維度是128。至於clustering head則是一個線性對映層,維度是768*K,其中K是聚類的類別數量。所以,整體網路結構非常簡潔明瞭。

  • 最後,文章使用了8個短文字資料集驗證SCCL的有效性,評測指標則使用 ACC(Accuracy)和 NMI,從結果展示SCCL幾乎在所有資料集上取得SOTA方法。

本文來自部落格園,作者:xingye_z,轉載請註明原文連結:https://www.cnblogs.com/xyzhrrr/p/15864522.html