【NLP】文本分类还停留在BERT?对偶比学习框架也太强了
論文簡介:對偶對比學習:如何將對比學習用于有監督文本分類?
論文標題:Dual Contrastive Learning: Text Classification via Label-Aware Data Augmentation?
論文鏈接:https://arxiv.org/pdf/1905.09788.pdf?
代碼鏈接:https://github.com/hiyouga/dual-contrastive-learning?
論文作者:{Qianben Chen}
1
論文摘要
對比學習在無監督環境下通過自我監督進行表征學習方面取得了顯著的成功。然而,有效地使對比學習適應于監督學習任務在實踐中仍然是一個挑戰。在這項工作中,作者提出了一個對偶對比學習(DualCL)框架,在同一空間內同時學習輸入樣本的特征和分類器的參數。具體來說,DualCL將分類器的參數視為關聯到不同標簽的增強樣本,然后利用其進行輸入樣本和增強樣本之間的對比學習。對5個基準文本分類數據集及對應低資源版本數據集的實驗研究表明,DualCL分類精度明顯得到提高,并證實了DualCL能夠實現樣本判別表示的效果。
2
DualCL簡介
表示法學習是當前深度學習的核心。在無監督學習的背景下,對比學習最近已被證明是獲得下游任務的通用表征的有效方法。簡單地說,無監督對比學習采用了一個損失函數,它迫使同一樣本的不同“視角”的表示向量相似,而不同樣本的表示向量則不同。最近對比學習的有效性方面被證明是由于同時實現了“對齊性”【alignment】和“一致性”【uniformity】。
對比學習方法也適用于監督表示學習 ,以往研究中也使用了類似的對比損失,基本原理是堅持同一類中樣本的表示是相似的,不同類的樣本表示是相似的。 清楚的。 然而,盡管取得了成功,但與無監督對比學習相比,這種方法的原則性似乎要差得多。 例如,表示的統一性不再有效; 也不是必需的,通俗來講就是特征的在空間分布不再均勻,所以我們認為標準的監督對比學習方法對于監督表示學習來說并不自然。 另外存在一個事實就是,即這種對比學習方法的結果并沒有直接給我們一個分類器,需要開發另一種分類算法來解決分類任務。
接下來我們講講DualCL提出的動機,作者為了旨在開發一種更自然的方法來實現在監督任務下的對比學習。作者關鍵動機是監督表示學習應該包括學習兩種參數:一個是輸入在適當的空間特征,用來滿足分類任務需求,另一個是分類器的參數,或者作用于分類器空間的參數;我們將這個分類器稱為的“one example”分類器。在這種觀點下,自然將樣本聯想到兩種參數:一個為維度為的,用來表示特征;一個是分類器參數,其中代表樣本中分類總數。那么有監督的表示學習可以認為是為輸入樣本生成。
為了保證分類器對于特征有效,只需要保證與樣本的標簽保持對齊,可以通過softmax歸一化的概率與交叉熵進行約束。除此之外,在對比學習方法可以用來強制對這些,θ表示進行約束,具體來講,我們將記為樣本的真實標簽對應分類器的理想參數,這里我們可以設計兩種對比損失。第一個loss用來對比與多個,其中代表與樣本不同類別的樣本特征;第二個loss用來對比與多個,其中代表樣本的不同類別對應分類器參數,作者將這種學習框架叫做dual contrastive learning(DualCL),對偶對比學習。
在對比學習基礎之上,正如論文標題,DualCL可以認為是一種獨特的數據增強方法。具體來說,對于每個樣本,其θ的每一列都可以被視為“標簽啟發的輸入表示”,或者是在特征空間中注入了標簽信息的的增強視圖。表1中說明了這種方法的強大之處,從左邊的兩個圖片可以看出,標準的對比學習不能利用標簽信息。相反,從右邊的兩個圖來看,DualCL有效地利用標簽信息對其類中的輸入樣本進行分類。
在論文實驗中,作者在5個基準文本分類數據集上驗證了DualCL的有效性。通過使用對偶比損失對預先訓練好的語言模型(BERT和RoBERTa)進行微調,DualCL與現有的對比學習監督基線相比獲得了最好的性能。作者還發現,DualCL提高了分類精度,特別是在低資源的場景下。此外通過可視化所學習的表征和注意力圖,對DualCL給出了一些可解釋性分析。
論文貢獻可以總結如下:
1)提出了雙對比學習(DualCL),自然地將對比損失與有監督任務相結合;
2)引入標簽感知數據增強來獲得輸入樣本的多個視圖,用于DualCL的訓練;
3)在5個基準文本分類數據集上實證驗證了DualCL框架的有效性;
3
DualCL原理
“對偶”表示有監督的對比學習方法目的就是:第一個是在適當空間中對分類任務的輸入進行判別表示,第二個是構建監督任務的分類器,學習到分類器空間中分類器的參數。接下來我們看看DualCL的核心部分。
標簽啟發式的數據增強
為了獲得訓練樣本的不同視圖(views)表示,作者利用數據增強的思想來獲得特征和分類器的表示。具體來講就是將分類器每個類別的對應參數作為的獨特表示,記為,稱為標簽感知輸入表示,將標簽信息注入到的,作為額外增強視圖。
在實踐中,將標簽集合插入到輸入序列,可以得到一個新的輸入序列,然后通過PLMS(Bert或者Roberta)模型作為編碼器,來獲取輸入序列的每個token特征,其中[CLS]特征作為樣本的特征,插入的標簽對應為標簽啟發的輸入表示。標簽的名稱作為標記,形成序列,如“positive”、“negative”等。對于包含多個單詞的標簽,我們采用token特征的平均池化來獲得具有標簽感知的輸入表示。這個操作和之前一篇論文很相似,大家可以有興趣可以閱讀:Bert還可以這么用:融合標簽向量到BERT
對偶對比損失
利用輸入樣本的特征表示和分類器θ,DualCL作用就是將θ的softmax歸一化概率與的標簽對齊。將θ表示θ的某一列,對應于的真實標簽索引,DualCL期望θ點積是最大化的。為了學習更好的和θ,DualCL利用不同訓練樣本之間的關系定義了對偶對比損失,如果與有相同的標簽,那么試圖最大化θ,而如果與有不同的標簽,則最小化θ。
給定一個來自輸入樣本的錨點,是正樣本集合,是負樣本集合,關于z的對比損失可以定義如下:
同理,給定一個來自輸入樣本的錨點,是正樣本集合,是負樣本集合,關于z的對比損失可以定義如下:
對偶比損失是上述兩個對比損失項的組合:
對比訓練和有監督預測
為了充分利用監督信號,DualCL還期望θ是一個很好的分類器。因此作者使用一個改進版本的交叉熵損失來最大化每個輸入樣本的θ:
最后,最小化這兩個訓練目標來訓練編碼器。這兩個目標同時提高了特征的表示質量和分類器的表示質量。總體損失應為:
其中,λ是一個控制雙對比損失項權重的超參數。
在分類過程中,我們使用訓練好的編碼器來生成輸入句子的特征表示和分類器θ。這里的θ可以看作是一個“one-example”的分類器,例如,我們將θ的argmax結果作為模型預測:
圖1說明了對偶對比學習的框架,其中是特征表示,和是分類器表示。在這個具體的例子中,我們假設具有“positive”類的目標樣本作為錨點,并且有一個正樣本具有相同的類標簽,而有一個具有不同的類標簽的負樣本。對偶對比損失旨在同時將特征表示吸引到正樣本之間的分類器表示上,并將特征表示排斥到負樣本之間的分類器上。
表示之間的對偶性
對比損失采用點積函數作為表示之間相似性的度量,這就使得DualCL中的特征表示和分類器表示θ之間存在雙重關系。在線性分類器中,輸入特征與參數之間的關系也出現了類似的現象。然后我們可以將θ看作是一個線性分類器的參數,這樣預先訓練好的編碼器就可以為每個輸入樣本生成一個線性分類器。因此,DualCL很自然地學習如何為每個輸入樣本生成一個線性分類器來執行分類任務。
4
實驗設置
數據集
論文采用了SST-2、SUBJ、TREC、PC和CR四種數據集,數據集相關統計如下:
實驗結果
從結果中可以看出,除了使用RoBERTa的TREC數據集外,同時使用BERT和RoBERTa編碼器在幾乎所有設置中都取得了最好的分類性能。與具有完整訓練數據的CE+CL相比,DualCL對BERT和RoBERTa的平均改善率分別為0.46%和0.39%。此外,我們觀察到,在10%的訓練數據下,DualCL的性能明顯大于CE+CL方法,在BERT和RoBERTa上分別高出0.74%和0.51%。同時,CE 和 CE+SCL 的性能無法超越 DualCL。 這是因為CE方法忽略了樣本之間的關系,CE+SCL方法不能直接學習分類任務的分類器。
此外論文發現雙重對比損失項有助于模型在所有五個數據集上實現更好的性能。 它表明利用樣本之間的關系有助于模型在對比學習中學習更好的表示。
案例分析
為了驗證DualCL是否能夠捕獲信息特征,作者還計算了[CLS]標記的特征與句子中每個單詞之間的注意得分。首先在整個訓練集上微調RoBERTa編碼器。然后我們計算特征之間的距離,并可視化圖4中的注意圖。結果表明,在對情緒進行分類時,所捕獲的特征是不同的。上面的例子來自SST-2數據集,我們可以看到我們的模型更關注表達“積極”情緒的句子“predictably heart warming”。下面的例子來自CR數據集,我們可以看到我們的模型對表達“消極”情緒的句子更關注“small”。相反,CE方法沒有集中于這些鑒別特征。結果表明DualCL能夠成功地處理句子中的信息性關鍵詞。
5
論文總結
在本研究中,從文本分類任務的角度,提出了一種對偶對比學習方法DualCL,來解決監督學習任務。
在DualCL中,作者使用PLMs同時學習兩種表示形式。一個是輸入示例的鑒別特征,另一個是該示例的分類器。我們引入了具有標簽感知的數據增強功能來生成輸入樣本的不同視圖,其中包含特征和分類器。然后設計了一個對偶對比損失,使分類器對輸入特征有效。
對偶對比損失利用訓練樣本之間的監督信號來學習更好的表示,通過大量的實驗驗證了對偶對比學習的有效性。
6
核心代碼
關于Dual-Contrastive-Learning實現,大家可以查看開源代碼:
https://github.com/hiyouga/Dual-Contrastive-Learning/blob/main/main_polarity.py
def?_contrast_loss(self,?cls_feature,?label_feature,?labels):normed_cls_feature?=?F.normalize(cls_feature,?dim=-1)normed_label_feature?=?F.normalize(label_feature,?dim=-1)list_con_loss?=?[]BS,?LABEL_CLASS,?HS?=?normed_label_feature.shapenormed_positive_label_feature?=?torch.gather(normed_label_feature,?dim=1,index=labels.reshape(-1,?1,?1).expand(-1,?1,?HS)).squeeze(1)??#?(bs,?768)if?"1"?in?self.opt.contrast_mode:loss1?=?self._calculate_contrast_loss(normed_positive_label_feature,?normed_cls_feature,?labels)list_con_loss.append(loss1)if?"2"?in?self.opt.contrast_mode:loss2?=?self._calculate_contrast_loss(normed_cls_feature,?normed_positive_label_feature,?labels)list_con_loss.append(loss2)if?"3"?in?self.opt.contrast_mode:loss3?=?self._calculate_contrast_loss(normed_positive_label_feature,?normed_positive_label_feature,?labels)list_con_loss.append(loss3)if?"4"?in?self.opt.contrast_mode:loss4?=?self._calculate_contrast_loss(normed_cls_feature,?normed_cls_feature,?labels)list_con_loss.append(loss4)return?list_con_lossdef?_calculate_contrast_loss(self,?anchor,?target,?labels,?mu=1.0):BS?=?len(labels)with?torch.no_grad():labels?=?labels.reshape(-1,?1)mask?=?torch.eq(labels,?labels.T)??#?(bs,?bs)#?compute?temperature?using?masktemperature_matrix?=?torch.where(mask?==?True,?mu?*?torch.ones_like(mask),1?/?self.opt.temperature?*?torch.ones_like(mask)).to(self.opt.device)#?#?mask-out?self-contrast?cases,?即自身對自身不考慮在內#?logits_mask?=?torch.scatter(#?????torch.ones_like(mask),#?????1,#?????torch.arange(BS).view(-1,?1).to(self.opt.device),#?????0#?)#?mask?=?mask?*?logits_mask#?compute?logitsanchor_dot_target?=?torch.multiply(torch.matmul(anchor,?target.T),?temperature_matrix)??#?(bs,?bs)#?for?numerical?stabilitylogits_max,?_?=?torch.max(anchor_dot_target,?dim=1,?keepdim=True)logits?=?anchor_dot_target?-?logits_max.detach()??#?(bs,?bs)#?compute?log_probexp_logits?=?torch.exp(logits)??#?(bs,?bs)exp_logits?=?exp_logits?-?torch.diag_embed(torch.diag(exp_logits))??#?減去對角線元素,對自身不可以log_prob?=?logits?-?torch.log(exp_logits.sum(dim=1,?keepdim=True)?+?1e-12)??#?(bs,?bs)#?in?case?that?mask.sum(1)?has?no?zeromask_sum?=?mask.sum(dim=1)mask_sum?=?torch.where(mask_sum?==?0,?torch.ones_like(mask_sum),?mask_sum)#?compute?mean?of?log-likelihood?over?positivemean_log_prob_pos?=?(mask?*?log_prob).sum(dim=1)?/?mask_sum.detach()loss?=?-?mean_log_prob_pos.mean()return?loss7
參考資料
ICML 2020: 從Alignment 和 Uniformity的角度理解對比表征學習 https://blog.csdn.net/c2a2o2/article/details/117898108
往期精彩回顧適合初學者入門人工智能的路線及資料下載(圖文+視頻)機器學習入門系列下載中國大學慕課《機器學習》(黃海廣主講)機器學習及深度學習筆記等資料打印《統計學習方法》的代碼復現專輯 AI基礎下載機器學習交流qq群955171419,加入微信群請掃碼:總結
以上是生活随笔為你收集整理的【NLP】文本分类还停留在BERT?对偶比学习框架也太强了的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android rxjava2 简书,R
- 下一篇: Java中switch参数传null会引