1.SKEP是百度研究團隊提出的基於情感知識增強的情感預訓練算法,此算法采用無監督方法自動挖掘情感知識,然后利用情感知識構建預訓練目標,從而讓機器學會理解情感語義。SKEP為各類情感分析任務提供統一且強大的情感語義表示。SKEP采用RoBERTa作為基線模型。RoBERTa相對於BERT的改進之處如下:
(1)去除了BERT中的NSP任務
(2)增加了batch size的大小,並且增加了訓練的數據
(3)采用了動態mask的方式,在Bert中進行Mask是采用靜態編碼的方式,在進行預訓練任務之前將所有向量都進行了掩碼處理,之后送入Bert模型進行預訓練,每次epoch mask的方式都是相同的,但是在RoBert中是動態編碼的方式,把訓練的數據復制10份,然后一句話就會有10種不同的mask方法,在訓練過程中序列的mask方式是會變化的,就實現了動態mask的方式。
(4)BERT使用的是字符級編碼方式,但是RoBERTa使用的是byte-level text encoding 見BEP概述
(5)在更長的序列上進行訓練,不會對序列進行截斷。
tokenizers小結(https://zhuanlan.zhihu.com/p/360290118)
2.模型分析
SKEP模型包含兩部分,(1)情感掩蓋,通過無監督的方式自動挖掘情感知識來識別輸入句子中的情感詞,情感詞的極性和方面情感對,然后掩蓋這些情感詞和方面情感對生成一個損壞的版本,RoBERTa模型是隨機掩蓋的,SKEP模型掩蓋的是之前挖掘的情感知識,由此可見,SKEP就是對RoBERTa模型的掩蓋機制進行了更改。(2)情感預訓練的目標是從損壞的序列中恢復這些情感詞,情感詞極性和方面情感對。通過x9預測情感詞,通過x6和x9來預測情感詞極性,通過x1來預測方面情感對,值得注意的是x9既預測了情感詞又預測了情感詞極性,但是x6只預測了情感詞的極性,但是沒有預測情感詞,這是因為x1預測的方面情感對已經包含了fast這個情感詞。
情感知識庫
通過無監督方式挖掘的情感知識構成了情感知識庫,文中只提到了挖掘的情感知識庫包含一組具有極性的情感詞和一組方面情感對,並沒有給出情感知識庫的具體形式。
3.SKEP在BERT的預訓練過程中加入了情感知識,這樣更有利於情感分類任務。
通用語言理解評估基准(GLUE)是用於評估和分析多種已有自然語言理解任務的模型性能的工具。模型基於在所有任務的平均准確率進行評估。
SOTA全稱是state of the art,是指在特定任務中目前表現最好的方法或模型。
SKEP通過PMI方法從句子中自動挖掘情感知識,情感知識包括情感詞、詞的極性和方面-情感對,其中方面-情感對的提取是通過簡單的約束完成的(情感詞和它所描述的名詞之間的距離不會超過3).
情感掩蔽(刪除這些識別出來的情感信息,產生一個損壞的版本),屏蔽序列的過程按照如下過程:(1)最多隨機選擇兩個方面-情感對被mask (2)對於沒有被屏蔽的情感詞,隨機選擇其中的一部分,將它的標記替換成mask,被屏蔽的token總數不超過10%。(3)如果第二步中情感詞的token比例不足10%,那么就隨機去mask其他的字。
情感預訓練
情感預訓練的目標優化函數 (Sentiment Pre-training Objectives)有3個目標優化函數組成,分別為Sentiment Word Objectives(
)、Word Polarity Objectives(
)和Aspect-sentiment Pair Objectives(
)。
Sentiment Word Objectives( )情感詞預測,恢復被mask的情感詞標記,它的目標是將在整個詞匯表中生成的規范化向量中原始情感詞的概率最大化。情感詞目標函數中X指的是輸入的序列的向量表示,里面的一個xi是序列里面一個詞的向量表示,將這個xi送入預訓練模型,就會得到一個i的向量,i被送入一個輸出softmax層,該層生成一個基於整個詞匯表的歸一化概率向量i 。情感詞預測的目標Lsw是最大化原始情感詞xi的概率,Lsw是目標函數,如果第i個位置是輸入序列掩蓋的詞,則mi=1,否則就為0。yi是原始情感詞xi基於整個詞匯表的one-hot表示。
Word Polarity Objectives( )詞極性預測 對於被mask的情感詞,預測它的極性。
上圖是方面情感對的目標函數,Aspect-sentiment Pair Objectives( )方面-情感對預測 是為了捕捉方面和情感之間的關系,成對的詞之間並不相互排斥,但是在BERT里面,每個詞是被獨立預測的,並不存在依存關系。在方面-情感對預測中使用的是多標簽分類,通過[CLS]標記來預測方面-情感對。
通過多標簽分類對方面情感對進行預測,使用預訓練模型輸出的[CLS]向量1預測方面情感對。因為進行情感掩蓋的時候序列會掩蓋多個方面情感對,所以經過sigmoid激活函數之后會有多個向量a輸出。A是輸入序列被掩蓋的方面情感對的數量,a是經過sigmoid標准化的單詞概率,ya是目標方面情感對的稀疏表示,ya中的每一個元素對應詞匯表中的一個token,如果目標方面情感對包含相應的token,則等於1.因為方面情感對的預測是多標簽分類,所以ya會有多個元素等於1.
多標簽分類是在網絡的最后一層,針對每一個標簽,使用一個全連接層,經過sigmoid激活函數,然后在每一個標簽上就是一個二分類問題。
多標簽分類任務就是將一個模型輸出的向量分到不同的類別中,比如一個L碼的短袖,他就屬於兩個類別,尺碼:L碼,類型:夏裝。
利用 BERT 模型解決多標簽分類問題時,其輸入與普通單標簽分類問題一致,得到其 embedding 表示之后(也就是 BERT 輸出層的 embedding),有幾個 label 就連接到幾個全連接層(也可以稱為 projection layer),然后再分別接上 softmax 分類層,這樣的話會得到 ,最后再將所有的 loss 相加起來即可。這種做法就相當於將 n 個分類模型的特征提取層參數共享,得到一個共享的表示(其維度可以視任務而定,由於是多標簽分類任務,因此其維度可以適當增大一些),最后再做多標簽分類任務。
4.對於模型的分析
(1)情感知識的作用 通過對目標的比較,我們認為情緒知識是有幫助的,且知識的多樣性有利於提高績效。這也鼓勵我們在未來使用更多類型的知識,使用更好的方法。
(2)多標簽優化的效果 提出了多標簽分類方法來處理方面-情感對中的依賴關系。在方面級分類和意見角色標注方面,多標簽分類效率較高,最多可提高0.6個點。這表明多標簽分類確實更好地捕捉了方面和情感之間的依賴關系,也說明了處理這種依賴關系的必要性。
(3)在方面-情感對預測中有兩種方式,一種是通過[CLS]來進行對句子的預測,這種方法成為sent-vector方法。另一種是將兩個單詞的最終向量 串聯成一對,成為Pair-vector方法,這兩種方法的性能差不多,但是使用單個向量進行預測效率更高,因此在SKEP模型中采用了sent-vector方法進行了方面-情感對的預測。
5.數據集介紹
(1)SST-2
GLUE的全稱是General Language Understanding Evaluation,在2018年,由紐約大學、華盛頓大學以及DeepMind的研究者們共同提出。這個基准由一系列自然語言理解數據集/任務組成,最主要的目標是鼓勵開發出能夠在任務之間共享通用的語言知識的模型。SKEP模型在GLUE中的SST-2數據集上驗證了在句子級情感分類的有效性,SST-2(The Stanford Sentiment Treebank,斯坦福情感樹庫),單句子分類任務,包含電影評論中的句子和它們情感的人類注釋。這項任務是給定句子的情感,類別分為兩類正面情感(positive,樣本標簽對應為1)和負面情感(negative,樣本標簽對應為0),並且只用句子級別的標簽。也就是,本任務也是一個二分類任務,針對句子級別,分為正面和負面情感,數據集鏈接:https://gluebenchmark.com/tasks 數據集形式如下:
(2)Sem-L
Sem-L數據集是英文評價對象級情感分類數據集,主要由描述筆記本電腦類別某個屬性的商品用戶評論構成。數據集鏈接:https://alt.qcri.org/semeval2014/task4/index.php?id=data-and-tools 數據集形式如下:
(3)MPQA
MPQA數據集是英文互聯網評論數據集,數據集使用例子如下,為了方便模型使用需要將文本進行分詞處理,標簽BIO標記評論內容、評論實體和實體內容表達主體。B_H I_H代表實體內容表達主體,B_T I_T代表評論實體,B_DS I_DS代表評論內容。數據集鏈接:https://mpqa.cs.pitt.edu/corpora/mpqa_corpus/mpqa_corpus_2_0/ 數據集形式如下: