【NLP】文本分类还停留在BERT?对偶对比学习框架也太强了
論文簡介:對偶對比學(xué)習(xí):如何將對比學(xué)習(xí)用于有監(jiān)督文本分類?
論文標(biāo)題:Dual Contrastive Learning: Text Classification via Label-Aware Data Augmentation?
論文鏈接:https://arxiv.org/abs/2201.08702
代碼鏈接:https://github.com/hiyouga/dual-contrastive-learning?
論文作者:{Qianben Chen}
1
論文摘要
對比學(xué)習(xí)在無監(jiān)督環(huán)境下通過自我監(jiān)督進(jìn)行表征學(xué)習(xí)方面取得了顯著的成功。然而,有效地使對比學(xué)習(xí)適應(yīng)于監(jiān)督學(xué)習(xí)任務(wù)在實(shí)踐中仍然是一個挑戰(zhàn)。在這項(xiàng)工作中,作者提出了一個對偶對比學(xué)習(xí)(DualCL)框架,在同一空間內(nèi)同時學(xué)習(xí)輸入樣本的特征和分類器的參數(shù)。具體來說,DualCL將分類器的參數(shù)視為關(guān)聯(lián)到不同標(biāo)簽的增強(qiáng)樣本,然后利用其進(jìn)行輸入樣本和增強(qiáng)樣本之間的對比學(xué)習(xí)。對5個基準(zhǔn)文本分類數(shù)據(jù)集及對應(yīng)低資源版本數(shù)據(jù)集的實(shí)驗(yàn)研究表明,DualCL分類精度明顯得到提高,并證實(shí)了DualCL能夠?qū)崿F(xiàn)樣本判別表示的效果。
2
DualCL簡介
表示法學(xué)習(xí)是當(dāng)前深度學(xué)習(xí)的核心。在無監(jiān)督學(xué)習(xí)的背景下,對比學(xué)習(xí)最近已被證明是獲得下游任務(wù)的通用表征的有效方法。簡單地說,無監(jiān)督對比學(xué)習(xí)采用了一個損失函數(shù),它迫使同一樣本的不同“視角”的表示向量相似,而不同樣本的表示向量則不同。最近對比學(xué)習(xí)的有效性方面被證明是由于同時實(shí)現(xiàn)了“對齊性”【alignment】和“一致性”【uniformity】。
對比學(xué)習(xí)方法也適用于監(jiān)督表示學(xué)習(xí) ,以往研究中也使用了類似的對比損失,基本原理是堅(jiān)持同一類中樣本的表示是相似的,不同類的樣本表示是相似的。 清楚的。 然而,盡管取得了成功,但與無監(jiān)督對比學(xué)習(xí)相比,這種方法的原則性似乎要差得多。 例如,表示的統(tǒng)一性不再有效; 也不是必需的,通俗來講就是特征的在空間分布不再均勻,所以我們認(rèn)為標(biāo)準(zhǔn)的監(jiān)督對比學(xué)習(xí)方法對于監(jiān)督表示學(xué)習(xí)來說并不自然。 另外存在一個事實(shí)就是,即這種對比學(xué)習(xí)方法的結(jié)果并沒有直接給我們一個分類器,需要開發(fā)另一種分類算法來解決分類任務(wù)。
接下來我們講講DualCL提出的動機(jī),作者為了旨在開發(fā)一種更自然的方法來實(shí)現(xiàn)在監(jiān)督任務(wù)下的對比學(xué)習(xí)。作者關(guān)鍵動機(jī)是監(jiān)督表示學(xué)習(xí)應(yīng)該包括學(xué)習(xí)兩種參數(shù):一個是輸入在適當(dāng)?shù)目臻g特征,用來滿足分類任務(wù)需求,另一個是分類器的參數(shù),或者作用于分類器空間的參數(shù);我們將這個分類器稱為的“one example”分類器。在這種觀點(diǎn)下,自然將樣本聯(lián)想到兩種參數(shù):一個為維度為的,用來表示特征;一個是分類器參數(shù),其中代表樣本中分類總數(shù)。那么有監(jiān)督的表示學(xué)習(xí)可以認(rèn)為是為輸入樣本生成。
為了保證分類器對于特征有效,只需要保證與樣本的標(biāo)簽保持對齊,可以通過softmax歸一化的概率與交叉熵進(jìn)行約束。除此之外,在對比學(xué)習(xí)方法可以用來強(qiáng)制對這些,θ表示進(jìn)行約束,具體來講,我們將記為樣本的真實(shí)標(biāo)簽對應(yīng)分類器的理想?yún)?shù),這里我們可以設(shè)計(jì)兩種對比損失。第一個loss用來對比與多個,其中代表與樣本不同類別的樣本特征;第二個loss用來對比與多個,其中代表樣本的不同類別對應(yīng)分類器參數(shù),作者將這種學(xué)習(xí)框架叫做dual contrastive learning(DualCL),對偶對比學(xué)習(xí)。
在對比學(xué)習(xí)基礎(chǔ)之上,正如論文標(biāo)題,DualCL可以認(rèn)為是一種獨(dú)特的數(shù)據(jù)增強(qiáng)方法。具體來說,對于每個樣本,其θ的每一列都可以被視為“標(biāo)簽啟發(fā)的輸入表示”,或者是在特征空間中注入了標(biāo)簽信息的的增強(qiáng)視圖。表1中說明了這種方法的強(qiáng)大之處,從左邊的兩個圖片可以看出,標(biāo)準(zhǔn)的對比學(xué)習(xí)不能利用標(biāo)簽信息。相反,從右邊的兩個圖來看,DualCL有效地利用標(biāo)簽信息對其類中的輸入樣本進(jìn)行分類。
在論文實(shí)驗(yàn)中,作者在5個基準(zhǔn)文本分類數(shù)據(jù)集上驗(yàn)證了DualCL的有效性。通過使用對偶比損失對預(yù)先訓(xùn)練好的語言模型(BERT和RoBERTa)進(jìn)行微調(diào),DualCL與現(xiàn)有的對比學(xué)習(xí)監(jiān)督基線相比獲得了最好的性能。作者還發(fā)現(xiàn),DualCL提高了分類精度,特別是在低資源的場景下。此外通過可視化所學(xué)習(xí)的表征和注意力圖,對DualCL給出了一些可解釋性分析。
論文貢獻(xiàn)可以總結(jié)如下:
1)提出了雙對比學(xué)習(xí)(DualCL),自然地將對比損失與有監(jiān)督任務(wù)相結(jié)合;
2)引入標(biāo)簽感知數(shù)據(jù)增強(qiáng)來獲得輸入樣本的多個視圖,用于DualCL的訓(xùn)練;
3)在5個基準(zhǔn)文本分類數(shù)據(jù)集上實(shí)證驗(yàn)證了DualCL框架的有效性;
3
DualCL原理
“對偶”表示有監(jiān)督的對比學(xué)習(xí)方法目的就是:第一個是在適當(dāng)空間中對分類任務(wù)的輸入進(jìn)行判別表示,第二個是構(gòu)建監(jiān)督任務(wù)的分類器,學(xué)習(xí)到分類器空間中分類器的參數(shù)。接下來我們看看DualCL的核心部分。
標(biāo)簽啟發(fā)式的數(shù)據(jù)增強(qiáng)
為了獲得訓(xùn)練樣本的不同視圖(views)表示,作者利用數(shù)據(jù)增強(qiáng)的思想來獲得特征和分類器的表示。具體來講就是將分類器每個類別的對應(yīng)參數(shù)作為的獨(dú)特表示,記為,稱為標(biāo)簽感知輸入表示,將標(biāo)簽信息注入到的,作為額外增強(qiáng)視圖。
在實(shí)踐中,將標(biāo)簽集合插入到輸入序列,可以得到一個新的輸入序列,然后通過PLMS(Bert或者Roberta)模型作為編碼器,來獲取輸入序列的每個token特征,其中[CLS]特征作為樣本的特征,插入的標(biāo)簽對應(yīng)為標(biāo)簽啟發(fā)的輸入表示。標(biāo)簽的名稱作為標(biāo)記,形成序列,如“positive”、“negative”等。對于包含多個單詞的標(biāo)簽,我們采用token特征的平均池化來獲得具有標(biāo)簽感知的輸入表示。這個操作和之前一篇論文很相似,大家可以有興趣可以閱讀:Bert還可以這么用:融合標(biāo)簽向量到BERT
對偶對比損失
利用輸入樣本的特征表示和分類器θ,DualCL作用就是將θ的softmax歸一化概率與的標(biāo)簽對齊。將θ表示θ的某一列,對應(yīng)于的真實(shí)標(biāo)簽索引,DualCL期望θ點(diǎn)積是最大化的。為了學(xué)習(xí)更好的和θ,DualCL利用不同訓(xùn)練樣本之間的關(guān)系定義了對偶對比損失,如果與有相同的標(biāo)簽,那么試圖最大化θ,而如果與有不同的標(biāo)簽,則最小化θ。
給定一個來自輸入樣本的錨點(diǎn),是正樣本集合,是負(fù)樣本集合,關(guān)于z的對比損失可以定義如下:
同理,給定一個來自輸入樣本的錨點(diǎn),是正樣本集合,是負(fù)樣本集合,關(guān)于z的對比損失可以定義如下:
對偶比損失是上述兩個對比損失項(xiàng)的組合:
對比訓(xùn)練和有監(jiān)督預(yù)測
為了充分利用監(jiān)督信號,DualCL還期望θ是一個很好的分類器。因此作者使用一個改進(jìn)版本的交叉熵?fù)p失來最大化每個輸入樣本的θ:
最后,最小化這兩個訓(xùn)練目標(biāo)來訓(xùn)練編碼器。這兩個目標(biāo)同時提高了特征的表示質(zhì)量和分類器的表示質(zhì)量。總體損失應(yīng)為:
其中,λ是一個控制雙對比損失項(xiàng)權(quán)重的超參數(shù)。
在分類過程中,我們使用訓(xùn)練好的編碼器來生成輸入句子的特征表示和分類器θ。這里的θ可以看作是一個“one-example”的分類器,例如,我們將θ的argmax結(jié)果作為模型預(yù)測:
圖1說明了對偶對比學(xué)習(xí)的框架,其中是特征表示,和是分類器表示。在這個具體的例子中,我們假設(shè)具有“positive”類的目標(biāo)樣本作為錨點(diǎn),并且有一個正樣本具有相同的類標(biāo)簽,而有一個具有不同的類標(biāo)簽的負(fù)樣本。對偶對比損失旨在同時將特征表示吸引到正樣本之間的分類器表示上,并將特征表示排斥到負(fù)樣本之間的分類器上。
表示之間的對偶性
對比損失采用點(diǎn)積函數(shù)作為表示之間相似性的度量,這就使得DualCL中的特征表示和分類器表示θ之間存在雙重關(guān)系。在線性分類器中,輸入特征與參數(shù)之間的關(guān)系也出現(xiàn)了類似的現(xiàn)象。然后我們可以將θ看作是一個線性分類器的參數(shù),這樣預(yù)先訓(xùn)練好的編碼器就可以為每個輸入樣本生成一個線性分類器。因此,DualCL很自然地學(xué)習(xí)如何為每個輸入樣本生成一個線性分類器來執(zhí)行分類任務(wù)。
4
實(shí)驗(yàn)設(shè)置
數(shù)據(jù)集
論文采用了SST-2、SUBJ、TREC、PC和CR四種數(shù)據(jù)集,數(shù)據(jù)集相關(guān)統(tǒng)計(jì)如下:
實(shí)驗(yàn)結(jié)果
從結(jié)果中可以看出,除了使用RoBERTa的TREC數(shù)據(jù)集外,同時使用BERT和RoBERTa編碼器在幾乎所有設(shè)置中都取得了最好的分類性能。與具有完整訓(xùn)練數(shù)據(jù)的CE+CL相比,DualCL對BERT和RoBERTa的平均改善率分別為0.46%和0.39%。此外,我們觀察到,在10%的訓(xùn)練數(shù)據(jù)下,DualCL的性能明顯大于CE+CL方法,在BERT和RoBERTa上分別高出0.74%和0.51%。同時,CE 和 CE+SCL 的性能無法超越 DualCL。 這是因?yàn)镃E方法忽略了樣本之間的關(guān)系,CE+SCL方法不能直接學(xué)習(xí)分類任務(wù)的分類器。
此外論文發(fā)現(xiàn)雙重對比損失項(xiàng)有助于模型在所有五個數(shù)據(jù)集上實(shí)現(xiàn)更好的性能。 它表明利用樣本之間的關(guān)系有助于模型在對比學(xué)習(xí)中學(xué)習(xí)更好的表示。
案例分析
為了驗(yàn)證DualCL是否能夠捕獲信息特征,作者還計(jì)算了[CLS]標(biāo)記的特征與句子中每個單詞之間的注意得分。首先在整個訓(xùn)練集上微調(diào)RoBERTa編碼器。然后我們計(jì)算特征之間的距離,并可視化圖4中的注意圖。結(jié)果表明,在對情緒進(jìn)行分類時,所捕獲的特征是不同的。上面的例子來自SST-2數(shù)據(jù)集,我們可以看到我們的模型更關(guān)注表達(dá)“積極”情緒的句子“predictably heart warming”。下面的例子來自CR數(shù)據(jù)集,我們可以看到我們的模型對表達(dá)“消極”情緒的句子更關(guān)注“small”。相反,CE方法沒有集中于這些鑒別特征。結(jié)果表明DualCL能夠成功地處理句子中的信息性關(guān)鍵詞。
5
論文總結(jié)
在本研究中,從文本分類任務(wù)的角度,提出了一種對偶對比學(xué)習(xí)方法DualCL,來解決監(jiān)督學(xué)習(xí)任務(wù)。
在DualCL中,作者使用PLMs同時學(xué)習(xí)兩種表示形式。一個是輸入示例的鑒別特征,另一個是該示例的分類器。我們引入了具有標(biāo)簽感知的數(shù)據(jù)增強(qiáng)功能來生成輸入樣本的不同視圖,其中包含特征和分類器。然后設(shè)計(jì)了一個對偶對比損失,使分類器對輸入特征有效。
對偶對比損失利用訓(xùn)練樣本之間的監(jiān)督信號來學(xué)習(xí)更好的表示,通過大量的實(shí)驗(yàn)驗(yàn)證了對偶對比學(xué)習(xí)的有效性。
6
核心代碼
關(guān)于Dual-Contrastive-Learning實(shí)現(xiàn),大家可以查看開源代碼:
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,?即自身對自身不考慮在內(nèi)#?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的角度理解對比表征學(xué)習(xí) https://blog.csdn.net/c2a2o2/article/details/117898108
往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載(圖文+視頻)機(jī)器學(xué)習(xí)入門系列下載中國大學(xué)慕課《機(jī)器學(xué)習(xí)》(黃海廣主講)機(jī)器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印《統(tǒng)計(jì)學(xué)習(xí)方法》的代碼復(fù)現(xiàn)專輯 AI基礎(chǔ)下載機(jī)器學(xué)習(xí)交流qq群955171419,加入微信群請掃碼:總結(jié)
以上是生活随笔為你收集整理的【NLP】文本分类还停留在BERT?对偶对比学习框架也太强了的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阮一峰的JavaScript 的 thi
- 下一篇: MySQL保存或更新 saveOrUpd