?

細粒度情感和情緒分析中損失函數的設計與優化

2024-03-26 02:39葉施仁AliMDRinku
中文信息學報 2024年1期
關鍵詞:梯度標簽損失

葉施仁,丁 力,Ali MD Rinku

(常州大學 計算機與人工智能學院,江蘇 常州 213164)

0 引言

情感分析[1]是自然語言處理領域的重要問題,廣泛應用于輿情分析和內容推薦等方面。早期的情感分析任務,僅要求輸出句子或者文章的正面或者負面的兩種情感極性,近年來,出現了一些多樣化的任務,如細粒度情感分析[2],方面級情感分析[3]等,使預測的難度顯著提升。

與用極性表示的情感分析相比,情緒分析[4]任務擁有更多多樣化的標簽。如Ekman[5]將情緒劃分為六種基本情緒;Plutchik[6]將情緒劃分為八種基本情緒,并通過情感輪盤將更多情緒來插入這八種基礎情緒中。近年來,很多情緒分析的數據集逐步擴展到多標簽任務[7],即一個樣本可以有多個標簽,也可以沒有標簽。這種改變是合理且必要的,因為一段文字可以表現出多種情緒,也可以不帶情緒。

對文本分類問題,深度學習模型常見的方法是使用預訓練的上游模型,在下游任務中進行微調,并通過獨熱向量計算多分類交叉熵損失(對于多分類任務)或多個二分類交叉熵損失(對于多標簽任務)。然而這種方式在細粒度分類任務上顯得過于粗糙了。獨熱向量計算多分類交叉熵損失時,損失值事實上只與正確標簽有關(因為僅有正確標簽對應的概率被計算)。在多標簽任務中,獨立計算每個標簽的二分類交叉熵。它們都忽略了標簽間的相關信息。

在細粒度情感分析中,正例和負例標簽往往不是正交的,如非常積極的樣本錯誤地標記成積極,其錯誤的程度顯然應該比標記成消極,或者非常消極小許多,同時區分非常積極與積極的難度也遠大于區分非常積極與非常消極。對情緒分析問題,如圖1所示,這11類情緒標簽之間存在顯著的正相關和互相關。因此,我們應該考慮設計適當的損失函數把類別標簽之間的相關性體現出來。在計算機視覺領域,流行的方式是通過Ranking loss[8]、Margin loss[9]、Contrastive loss[10]、Triplet loss[11]等成對優化方式度量樣本之間的距離。

圖1 SemEval18數據集中標簽的相關性

情感分析和情緒分析數據集的另一特點是不同類別的樣本數差別非常大。如廣泛使用的SemEval18數據集[12],在其包含的6 838條推特文本中,頻率最高的3個標簽累計出現7 623次,頻率最低3個標簽累計出現1 418次,其最低和最高的平均頻次相差5.4倍,如圖2所示。在GoEmotions數據集[13]中,在其包含的58 011條推特文本中,頻率最高的3個標簽累計出現54 713次,頻率最低3個樣本標簽出現2 773次,其最低和最高的平均頻次相差19.7倍。

數量龐大的頭部標簽往往主導了訓練過程,甚至導致頭部標簽上的過度學習。相比之下,尾部標簽占比很低,難以得到足夠的訓練,導致尾部標簽上的分類準確率往往不及頭部標簽。

針對情感分析和情緒分析中普遍存在的標簽不獨立、分布不均衡的問題,我們借鑒計算機視覺領域中的Circle loss[14]方法。將梯度衰減(Automatically Down-weight)、成對優化(Pair Optimization)、添加余量(Margin)三種深度學習模型優化的損失函數。通過衰減因子平衡數據集中標簽的長尾分布,并根據標簽的情感/情緒距離,調整超參數余量(Margin),使模型能夠學習標簽間的距離信息。在不對學習模型進行任何改變的前提下,僅僅通過損失函數的優化,在細粒度情感分析和情緒分析數據集上多個評價指標獲得了性能提升,從而驗證本文提出的損失函數優化是有效的。

1 相關工作

1.1 深度學習在情感分析與情緒分析方面的進展

基于大規模預訓練模型[15],下游任務中通過修改模型結構、調整學習目標、多任務學習[16]等方式來處理細粒度情感/情緒分析任務是當前的主流方法。

Balikas等人[17]使用基于循環神經網絡(Recurrent Neural Network,RNN)的多任務模型,同時在二分類和多分類任務上訓練模型。在兩個任務上都取得了性能提升。Yang等人[18]提出了基于方面的情感分析的多任務學習模型(LCF-ATEPC),該模型同步學習提取方面詞和推斷方面詞極性。結果顯示,在常用的方面級情感分析數據集SemEval-2014 task4 Restaurant和Laptop數據集中實現了方面術語提取(Aspect Term Extraction,ATE)和方面極性分類(Aspect Polarity Classification,APC)的性能提升。

Yin等人[19]提出了SentiBERT,在BERT模型的基礎上結合了上下文表示法和二元依存解析樹來捕捉語義構成。Park等人[20]提出一種多維度的情緒探測模型,模型學習從 NRC-VAD 詞典(Mohammad等人[21])獲得的標簽詞的 VAD (Valence, Arousal, and Dominance)分數,并同時預測句子的情緒標簽。

Tian等人[22]修改了語言模型的預訓練目標,引入了情感知識增強預訓練(Sentiment Knowledge Enhanced Pre-training,SKEP),借助自動挖掘的知識,SKEP 進行情感掩蔽并構建三個情感知識預測目標,從而將詞、極性和方面級別的情感信息嵌入到預訓練的情感表示中,在細粒度情感分析中表現出改進的性能。Suresh等人[23]提出知識嵌入注意 (Knowledge-Embedded Attention,KEA),使用來自情感詞典的知識來增強 ELECTRA 和 BERT 模型的上下文表示。

1.2 文本分類中樣本標簽不均衡

對于數據集標簽的不平衡,常用的方法有對數據集進行重采樣和調整損失函數的權重。

重采樣可分為欠采樣和重采樣兩個方向。對數據集中出現頻率較高的標簽樣本,欠采樣方法是隨機刪除部分樣本。但深度學習模型通常需要更多的訓練樣本。因此,多數工作中對數據集中出現頻率較低的樣本進行重采樣。

簡單的重采樣直接把數據集中出現頻率較低的樣本復制多次,來擴充和平衡數據集。更加流行的做法是在重采樣中對數據進行一定的變換。圖像領域常對圖像進行裁剪、縮放、鏡像、拼接等操作[24]。自然語言處理領域一般使用同義詞替換、隨機插入、使用深度學習模型翻譯后再回譯等[25]。

針對這一問題,深度學習常用的方法是根據樣本比例對損失函數的權重進行調整。與簡單重采樣類似,簡單的梯度調整也存在一定的缺陷,如過大的梯度會影響模型的收斂。

在計算機視覺領域,Lin等人[26]提出了Focal loss損失函數,提出了一種損失函數的設計思路。

Focal loss會根據模型輸出概率的大小,動態地調節損失函數中的權重,對易分樣本的權重進行衰減,從而令模型更關注于難分、未充分學習的樣本。

FL(pt)=-(1-pt)γlog(pt)

(1)

其中,

(2)

γ為超參數。實驗表明,γ取2時,模型性能最好。

當樣本標簽y=1時,模型的輸出p接近于真值(ground truth),系數(1-p)γ接近于0,對梯度的衰減力度就比較大,從而抑制模型在易分樣本上的過度學習。

Focal-loss提出后,獲得了廣泛的關注與研究,不少文章也提出了自己的Focal loss變體。如Cui等人[27]提出類平衡損失(Class Balanced Focal Loss),根據類平衡項(Class Balanced Term)進一步加權Focal loss,以平衡數據集中樣本分布的不均衡。Wu等人[28]更進一步地提出分布平衡損失(Distribution Balanced Loss),聚焦于多標簽中的標簽共現,首先去除標簽共現的冗余信息,再將更低的權重分配給益于分類的實例。Huang等人[29]將多個Focal loss變體應用在多個多標簽文本分類數據集上。在尾部標簽的分類上,取得了顯著的成果。

多標簽學習中除了標簽種類的分布不均衡,跨數據集間標簽數量也有巨大差異。如SemEval18數據集中,41.80%的樣本有兩個標簽,31.87%的樣本有3個標簽,14.80%的樣本有1個標簽。而在GoEmotions數據集中,82.68%的樣本有1個標簽,15.00%的樣本有兩個標簽,2.1%的樣本有3個標簽。

Li等人[30]將醫學圖像領域的Dice Loss應用于自然語言處理任務,在廣泛的數據不平衡自然語言處理任務上性能提升顯著。Dice Loss基于索倫森-骰子系數(Sorensen-Dice Coefficient)或特沃斯基索引(Tversky Index),對誤報和漏報的重要性相似,并且不易受數據不平衡問題的影響。

Bénédict等人[31]提出的SigmoidF1-loss是一個近似于Macro-F1分數的損失函數。其首先對模型輸出使用Sigmoid函數處理,然后計算F1分數。結果顯示SigmoidF1-loss在訓練時對于隨機梯度下降是平滑且易于處理的,自然地近似于多標簽度量,能夠很好地估計標簽的分布。在多個指標上,SigmoidF1-loss在一個文本和三個圖像數據集上的表現優于其他損失函數。

1.3 標簽間的相關性

在情感分析和情緒分析中,將標簽間的相關性引入模型也是一個重要的研究方向。Alhuzali等人[32]將多標簽問題轉換為跨度預測問題(Span-Prediction),通過BERT模型學習標簽間的相關性。Suresh等人[33]通過引入對比學習損失,與不太相似的負例相比,對容易混淆的負例加權。Wang等人[34]提出了一個通用框架,用于從給定的情感分類數據集中學習情感空間中情感類別的分布式表示,情感空間表示比語義空間中的詞向量能更好地表達情感關系。

Diera等人[35]使用了一個簡單的多層感知機(Multi-Layer Perceptron,MLP)模型,在多個多標簽任務上取得了與BERT、DistilBERT、HiAGM等先進模型相當的結果,但在GoEmotions數據集上多層感知機的性能大幅度落后于基于BERT的模型。這表明在細粒度分類領域,標簽間關系是模型設計中不可忽視的因素。

度量學習常用于樣本間具有相似性的數據集。比如在人臉識別領域中,人臉照片之間具有較高的相似度,但任務需要辨別出照片中不同人臉所屬的人。常見做法是假設特征分布在超球面上如式(3)所示。

(3)

其中,x和μ都經過單位化處理,并且不添加線性層中常見的偏置項。x和μ計算內積,即在計算高維空間中單位向量的相似度。對不同分類的樣本,球面上分布有不同的特征中心。大部分工作在此基礎上添加超參數余量(Margin),使得類內分布更加緊湊,類間距離更大。如SphereFace[36]、CosFace[37]、ArcFace[38]。

2 損失函數設計

2.1 Circle loss取值的調整

在細粒度情感和情緒分類中,引入適當的梯度衰減和余量是有必要的。Sun等人[14]提出的Circle loss不僅統一了多分類損失和多標簽損失,還僅通過引入一個參數,同時將梯度衰減和余量加入到了損失函數中。本文在損失函數設計方案中使用Circle loss在訓練階段引入梯度衰減和余量,并在實驗過程中根據研究領域的特點微調了Circle loss的取值范圍和取值方式。

Sun等人從統一的相似度配對優化角度出發,使用類別標簽學習和樣本對標簽學習兩種基本學習范式,提出了統一的損失函數如式(4)所示。

(4)

其目標是最大化類內相似度sp和最小化類間相似度sn,式中K和L分別為正標簽和負標簽的數量。

當正標簽K取1,縮放系數γ取1時,損失函數退化如式(5)所示。

(5)

即為基于相似度度量的多分類交叉熵損失函數。

而當有多個正標簽、多個負個標簽時,則式(3)與Yeh等人[39]提出的LCA(Label-Correlation Aware)損失相類似如式(6)所示。

(6)

本文在式(3)的基礎上引入梯度衰減和余量如式(7)、式(8)所示。

(7)

其中,

(8)

與文獻[14] 中Circle loss不同的是,本文將優化目標從sp→1和sn→0擴大到sp→1和sn→-1。Circle loss應用在計算機視覺問題,相似度為0表示兩張圖片是不相似的,但很難說兩張圖片是相反的(相似度為-1)。而在情感和情緒分類中,是完全可以描述標簽間的對立關系(如非常積極和非常消極,開心和生氣),優化目標設計為sp→1和sn→-1更為合理。對文本分類問題,盡管常見的向量空間模型中相似性只在0與1之間,但是對類別標簽,我們可以把這種對立關系的標簽考慮成相似性為-1,則有優化目標擴展到-1。

同時,本文選擇用Sigmoid函數作為衰減函數,與文獻[14]中Circle loss使用的線性衰減方式相比,在優化目標sp→1和sn→-1時,如圖3~圖5所示。

圖3 兩種損失函數的優化梯度對比

圖3(a)為原始的Circle loss梯度圖,橫軸為sn,縱軸為sp,參數m取0.75,箭頭方向表示梯度的優化方向,長短表示梯度的大小。

圖3(b)為使用Sigmoid函數作為衰減函數的圓形決策邊界梯度圖,橫軸為sn,縱軸為sp,參數d取0.25,箭頭方向表示梯度的優化方向,長短表示梯度的大小。

在這樣的參數選擇下,它們擁有同樣的優化目標sp>0.25和sn<-0.25。

圖4 兩種損失函數的梯度曲面對比

圖5 兩種損失函數的梯度曲線對比

2.2 損失函數的推廣和討論

通常,機器學習中把正確或者錯誤分類的正例和反例分別稱為TP(True Positive)、TN(True Negative)、FP(False Negative)和FN(False Negative)。損失函數的設計原則是TP和TN盡可能多,而FP和FN盡可能少。損失函數包含的項應該與正確分類或者錯誤分類數量具有單調性的,并且是平滑的。

我們將式(3)改寫為如式(9)所示。

(9)

此時,可將式(3)簡記如式(10)所示。

(10)

與準確率的計算公式對照,可認為Circle Loss是在優化準確率。

更一般地,只要TP′、TN′、FP′、FN′是恰當定義的(正比于模型在TP、TN、FP、FN四個指標上的輸出),可以設計出與各種評價指標同形的損失函數。如式(11)~式(13)所示。

? 召回損失:

(11)

?F1損失:

(12)

? Jaccard損失:

(13)

更進一步,我們甚至可以不依照現有的公式,只要優化目標單調保序,令TP′、TN′更大,FP′、FN′更小,如式(14)、式(15)所示。

都是有意義的組合。

本文使用如下公式作為損失函數,在實驗中取得了最優結果如式(16)所示。

(16)

其中,

在多標簽任務中,僅用準確率作為評價指標是不夠的,更優的做法是讓模型學習接近Jaccard系數和F1值。如式(16)所示,本文通過在損失函數中加入的FP′、FN′項,令模型學習到的分布更接近與真實數據集的分布。

3 實驗

我們選擇三個常用的情感分析和情緒分析語料庫來驗證本文提出的損失函數的有效性,分別為細粒度情感分類數據集SST-5[40],細粒度情緒分類數據集GoEmotions和SemEval18。實驗旨在驗證本文的損失函數能夠在多個復雜數據集上提升主干網絡的性能。

我們使用RoBERTa[41]作為模型的主干網絡,它是基于BERT模型的改進模型。我們通過Python中的HuggingFace庫[42]加載和實例化預訓練完成的RoBERTa-base和RoBERTa-large模型。

本文實驗所用機器配置為處理器AMD Ryzen 3600,顯卡NVIDIA RTX 3090,內存32 GB,操作系統windows 10。Python版本3.8.5,Pytorch版本1.9.0+cu111。

3.1 SST-5數據集

SST-5是一個細粒度的情感分析任務,數據集由句子和情感極性組成。情感極性分為非常消極,消極,中性,積極,非常積極五類。任務是由給出的句子預測出正確的情感極性。

在我們的實驗中,使用AdamW優化器,模型的參數r=d,d=0.3,學習率設置為1.5e-6,RoBERTa的最大句子長度設置為256,RoBERTa-base模型詞向量長度為768,RoBERTa-large模型詞向量長度為1 024。準確率為多次實驗結果中驗證集上損失函數值最小的模型在測試集上的平均值(取隨機種子為2 022遞減)。

如表1所示,文獻[19] 把RNN當作基準,長短時記憶網絡(Long Short Term Memory Network, LSTM)的工作,基于BERT的模型的準確率提高了很多。表中第(8)、第(11)項來自文獻[41],是骨干網絡RoBERTa的結果;此前的最好結果是來自文獻[43]的第(12)項,其使用一個復雜度為O(N2D)的下游模型鏈接骨干網絡來抽取情感信息。結果表明對于細粒度情感分析任務,Circle loss能夠有效提升模型的準確率。

表1 sst-5上不同模型的準確率 (單位: %)

3.2 SemEval18數據集

SemEval18數據集來自于SemEval-2018 Task 1。任務是給定一個推特文本,對其標注若干個情緒標簽,而這種情緒標簽總計有11種。

我們按照SemEval18給定的訓練集、驗證集和測試集來評估我們的模型。評價標準有三個指標,Jaccard系數,micro-F1(MiF1),macro-F1(MaF1)。其中,Jaccard系數被定義為預測標簽和真實標簽交集與它們的并集之比。F1值的計算由精確率和召回率組成,micro-F1給予每個樣本相同的權重,而macro-F1給予每個類別相同的權重。

實驗使用AdamW優化器,模型的參數r=12,d=0,學習率設置為1e-5,RoBERTa最大句子長度設置為128,各個評價指標為多次實驗結果中驗證集上損失函數值最小的模型在測試集上的平均值(取隨機種子為2 022遞減)。

如表2所示,編號(1)~(8)的實驗列出了這個測試集上的經典結果和最新的結果。在骨干網絡RoBERTa-base 上使用uni-loss損失函數(9)得到的結果比最新的結果(8)要差一些,已經具有不錯的結果。這是由于uni-loss在優化過程中是正例和負例成對優化的。我們在骨干網絡RoBERTa-base上使用帶有衰減和余量的sig-loss(10),實驗顯示優于最新的結果(8)。

表2 SemEval18評價指標 (單位: %)

對比標準的uni-loss損失函數(9),我們提出的損失函數sig-loss在Jaccard系數、micro-F1、macro-F1值上均取得了顯著的提升[(如(10)和(11)],其中Jaccard系數和macro-F1的假設檢驗p<0.05,micro-F1的假設檢驗p<0.01,均在統計學上顯著。由于sig-loss中梯度衰減和余量是一同出現的,形成圓形的決策邊界。假如只考慮其中一項,就會破壞其設計結構。如果兩項一起去掉,sig-loss將退化成uni-loss。

多分類中常用的二元交叉熵(Binary Cross Entropy,BCE)損失,將每個標簽看成一個二分類問題,輸出“是”或者“不是”。這種優化方式忽略了標簽之間聯系的學習。最新的結果[表2中的(8)]來自文獻[32],使用了二元交叉熵損失和文獻[39]提出的LCA損失聯合訓練。其使用的LCA損失,正是基于正例和負例成對優化來學習標簽間的聯系。

如文獻[29]所示,Focal loss引入的梯度衰減能夠動態調節梯度的分配,在標簽長尾分布的情況下,能夠有效地提升模型的性能。

Circle loss中同樣帶有梯度衰減,實驗結果也顯示在更加重視類別均衡的macro-F1分數上,RoBERTa-base+sig-loss領先于基線模型RoBERTa-base+uni-loss。

此外,如果使用規模更大的RoBERTa-large作為主干網絡,維度從768維提升到1024維,會取得更好的效果。

3.3 GoEmotions數據集

與SemEval18數據集相比,GoEmotions含有更多樣本、更多的標簽種類。其樣本數量達到5萬條,共有27個情緒標簽和1個中性標簽,并已被開發者劃分為訓練集、驗證集和測試集。我們仍然使用Jaccard系數,micro-F1,macro-F1三個指標來評價結果。

實驗使用AdamW優化器,模型的參數γ=12,d=0.2,學習率設置為1e-5,RoBERTa最大句子長度設置為128,各個評價指標為多次實驗結果中驗證集上損失函數值最小的模型在測試集上的平均值(取隨機種子為2 022遞減)。

如表3所示,我們使用帶有衰減和余量的RoBERTa-base+sig-loss和作為基線模型的RoBERTa-base+uni-loss與其他相關工作中的結果進行比較。結果在Jaccard系數、Micro-F1、Macro-F1值上均取得了顯著的提升,其中Jaccard系數、Micro-F1、Macro-F1的假設檢驗p<0.01 ,在統計學上顯著。

基于二元交叉熵損失的模型最終的閾值確定依賴于在驗證集上取不同的閾值對模型進行測試。在模型的訓練過程中,閾值對模型沒有任何影響。而在sig-loss中,可以將余量取為閾值。假設基于二元交叉熵損失的模型最終閾值選定為0.2而不是0,而模型事實上訓練時的決策邊界是0,這恰恰說明在決策邊界上,模型并不能很好地區分正例和負例,將閾值取為0時,會出現大量誤判,導致評價指標降低。sig -loss中引入的余量參數,把閾值作為模型訓練中的一個超參數,參與到模型的訓練中來。模型取更大的閾值,不僅僅是最后的判定上更嚴格,在訓練時,正例和負例會獲得更大的類間距離和更小的類內距離,這有利于模糊樣本的判定。

3.4 消融實驗

我們選取了SemEval18數據集中兩對高相關性的標簽,計算在選定其中一個標簽的情況下,模型在另一個標簽上的準確率。如表4中anger-disgust列,表示選擇測試集中有anger標簽的數據,計算模型在disgust標簽上的準確率。結果顯示,用本文2.2節中的方式調整后的損失函數能夠有效提升標簽相關時的準確率。

表4 相關標簽間的準確率 (單位: %)

表5中,我們計算了模型在SemEval18數據集中出現頻率最低的5個標簽上的Jaccard系數,micro-F1,macro-F1。結果顯示,與基線模型相比,用本文2.2節中的方式調整后的損失函數能夠有效提升模型在尾部標簽上的性能。

表5 尾部標簽的評價指標 (單位: %)

4 結論

考慮到情感和情緒分析數據集中標簽廣泛存在的分布不均衡、標簽之間具有相關性的現象,我們使用Circle Loss針對性地引入了梯度權重衰減、配對優化、度量學習的方法,并推廣了Circle Loss的計算公式。其中,梯度權重衰減動態地調節梯度的分配,在標簽長尾分布的情況下,能夠有效地引導模型學習稀少、難分的樣本;配對優化與二分類交叉熵相比,能夠隱式地學習標簽之間的相關性;針對難分標簽,使用度量學習中的余量,加寬決策邊界,令正例和負例獲得更大的類間距離和更小的類內距離,使樣本更容易區分。Cirlce Loss可視為優化模型的準確率,在多標簽分類中,僅優化準確率還不足以使模型達到最優,我們的推廣公式可以靈活地優化各種指標,如召回值、F1值、Jaccard系數等。

在多個測試集上的實驗表明,僅僅通過改進損失函數,獲得的結果比最新的經典方法有所提升,說明了本文構造的損失函數是有效的。

特別地,我們設計的損失函數沒有使用多目標優化的方式,而是將多種優化方式在一個損失函數中體現,減少了超參數的數量。該損失函數的框架與具體學習任務無關,可能適用各種深度學習模型。在多分類任務上驗證本文所提出的損失函數的有效性和性能,是我們將來工作的重點。

猜你喜歡
梯度標簽損失
一個改進的WYL型三項共軛梯度法
胖胖損失了多少元
一種自適應Dai-Liao共軛梯度法
一類扭積形式的梯度近Ricci孤立子
玉米抽穗前倒伏怎么辦?怎么減少損失?
無懼標簽 Alfa Romeo Giulia 200HP
不害怕撕掉標簽的人,都活出了真正的漂亮
標簽化傷害了誰
一般自由碰撞的最大動能損失
基于多進制查詢樹的多標簽識別方法
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合