A Multi-task Ensemble Framework for Emotion, Sentiment and Intensity Prediction
文章目錄
- 前提
- Motivation
- 方法概述
- 方法詳述
- Datasets
- Evaluation Benchmark Datasets
- Evaluation Transfer Learning Datasets
- Approach
- Encoder with Category Name Embedding
- Multi-Task Decoders
- Type 1
- Type 2
- Type 3
- Experiments
- 非增量學習
- 增量學習
- 想法
前提
- 這一篇論文的很大一部分關注點在于多任務學習方法應用于 (T)ACSA incremental learning tasks。
- 我對于 targeted aspectcategory sentiment analysis(TACSA) 任務的理解是,其與 ACSA 的不同在于,后者中的 aspect 都是針對某個 target 的;而前者中的 aspect 可能是針對不同的 target 的。
- TACSA 任務中每個 aspect 需要指明其對應的 target,所以正常需要預定義 target 和 aspect 及 target-category 對,英文中為 predefined target-category pairs,作者為了簡明這部分的表達,將其簡稱為 predefined categories。
Motivation
-
目前的多任務學習模型在(T)ACSA任務的輸入中缺少 “category name” 的特征。
-
根據(T)ACSA 任務中的預定義類別訓練得到的模型在新應用遇到新類別時不靈活。示意圖如下:
例如,我們源領域是中餐館的評論,評論里只包含“服務”和“味道”,基于此我們訓練了一個模型 A。但是可能因為快餐館的評論不多,沒辦法用數據訓練得到一個好的模型,所以我們希望用模型 A 來對快餐館進行屬性級情感分析,而快餐館顧客多了一個“營業時間”類別,使得直接用模型 A 不現實。
為了解決這部分,作者用了增量學習。
-
遷移學習中比較常見也比較難解決的問題,即 catastrophic forgetting problem(災難性遺忘問題)。
作者對于這部分的解決思路基于遷移學習中的正則化方法。那這個方法究竟做了什么呢?如下圖:
這個方法的原理可以看成,新任美國總統上來,其他重要職務的人不要輕易地換,否則像特朗普這樣大膽地人指不定將原來穩定的政治生態糟蹋成什么樣。這個方法放到具體的任務中就如下圖:
即在引入新任務時,要在原本的目標函數中加入一項正則化項,這個正則化項主要用來約束“新”模型與“舊”模型的差異性,讓模型不要修改“舊”模型太多(即像圖中所示一樣,將“新”、“舊”綁在一起)。
因為對于 (T)ACSA 任務增加的任務是增加新類別的情感分類,按剛剛說的正則化方法的思路,解決思路應該是“新”與“舊”差別別太大。而 (T)ACSA 多任務的做法之前都是 encoder 共享,decoder 按各個類別獨立,所以想讓差別變小,就應該讓 decoder 之間別差太多,由此作者提出了 decoder 也共享的做法來解決災難性遺忘問題。其變化如下圖。
- 如果按作者共享 decoder 的做法,則會引起一個新的問題,即如何識別 encoder 和 decoder 共享網絡中的每個類別?在作者的方法中,作者通過輸入 category name feature 來解決類別識別問題。(這一點也變相解釋了 Motivation 中的第一點)。方法的思路就如下圖所示,我們很難分辨出韓國明星,所以我們給其加上名字就難不住啦。
方法概述
本文為了使多任務學習對增量學習可行,作者提出了 Category Name Embedding network(CNE-net)。作者在所有類別之間設置編碼器和解碼器均共享,以削弱災難性的遺忘問題。除了輸入句子外,作者還加入了另一個輸入特征,即類別名稱來取分不同任務(即預測不同的 categories 的情感極性)。
方法詳述
Datasets
Evaluation Benchmark Datasets
作者用兩個數據集來評價 CNE-net 模型的性能,即用 SemEval-2014 Task4 來評價 ACSA 任務以及 SentiHood 來評價 TACSA 任務。
(PS:作者是用一個 joint model(連接 ACD model 和 ACSA model)來完成 ACSA 任務的。)
Evaluation Transfer Learning Datasets
將 SemEval-2014 Task4 和 SentiHood 改動一下之后分別用于評價 ACSA 和 TACSA 的增量學習任務。改動方法為將原本的數據集劃分為 sorce 和 target 兩部分,具體如下圖:
作者分別將 SemEval-2014 Task4 和 SentiHood 數據集中 aspect category 里的 “service” 和 “price" 作為 target domain 的 aspect category,剩下的作為 source domain 的 aspect category。
作者將處理后的數據集分別命名為 SemEval14-Task-inc 和 Sentihood-inc。下面為這個數據集中的一個具體的例子:
作者構造的數據集怎么用呢?其實就是先在 source data 上訓練出 model,之后再在 target data 上微調即可。
Approach
作者提出的模型是要利用 BERT 的。BERT 最經典的分類做法是輸入 “[CLS] tokens in sentence [SEP]”,之后利用 [CLS] 的隱狀態得到分類結果,而因為作者需要模型的輸入加入 category name 來區別不同任務,并且要同時分析每個 category 的情感極性,所以作者要修改一下經典 BERT 的 encoder 和 decoder 部分。
整個模型的框架圖如 Figure 1 所示:
Encoder with Category Name Embedding
與原始的 BERT 的做法不同,作者為了利用 category name 這一特征在增量學習中,在 input 中加入了 category name,形式為 “[CLS] sentence words input [SEP] category1 input [SEP] category2 input [SEP]…[SEP] categoryN input[SEP]”。
- ACSA 任務中 category name 為 “{food, service, price, ambiance, and anecdotes/miscellaneous}”。
- TACSA 任務中 category name 為 “{location-1 general, location-1 price, location-1 transit-location, location-1 safety, location-2 general, location-2 price, location-2 transit-location, and location-2 safety}”。
將 input 送入 encoder 之后得到隱狀態,作者將各部分的隱狀態分別標記如下:
- [CLS]:h?[CLS]∈Rd\vec{h}_{[CLS]} ∈ R^dh[CLS]?∈Rd
- sentence:Hsent∈RLsent×d\Eta_{sent} ∈ R^{L_{sent}×d}Hsent?∈RLsent?×d,LsentL_{sent}Lsent? 代表 sentence 中 word 的個數。
- [SEP]:HSEP∈Rncat×d\Eta_{SEP} ∈ R^{n_{cat}×d}HSEP?∈Rncat?×d
- category:Hcat?i∈RLcat?i×d\Eta_{cat-i} ∈ R^{L_{cat-i}×d}Hcat?i?∈RLcat?i?×d,其中 i 代表第 i 個 category(0<i<ncat0 < i < n_{cat}0<i<ncat?),ncatn_{cat}ncat? 為 categories 的個數,Lcat?iL_{cat-i}Lcat?i? 為第 i 個 category 的 word 的個數。
其中 ddd 為隱狀態的維數。
Multi-Task Decoders
作者提出了三種類型的 decoder,見 Figure 1 中的①、②、③。
Type 1
CNE-net-SEP,這個 decoder 就是直接利用 [SEP] 的隱狀態得到其后跟著的 category 的情感極性。示意圖如下:
公式如下:
fi?=Wi?h?+b?i;pi?=softmax(f?i)(1)\vec{f_i} = W_i·\vec{h} + \vec{b}i;\vec{p_i} = softmax(\vec{f}_i) \tag1 fi??=Wi??h+bi;pi??=softmax(f?i?)(1)
其中 fi?,pi?∈Rs\vec{f_i}, \vec{p_i} ∈ R^sfi??,pi??∈Rs,sss 為情感類別數(用于 ACSA 的 SemEval14-Task4 中,sss 為 5,5類具體為 {positive, neutral, negative, conflflict and none};用于 TACSA 的 Sentihood 中,sss 為 3,3 類具體為 {positive, negative and none})。
注意:作者設置 W1=W2=?=WncatW_1 = W_2 = \dots = W_{n_{cat}}W1?=W2?=?=Wncat?? 以及 b1?,b2?,…,bncat?\vec{b_1},\vec{b_2},\dots,\vec{b_{n_{cat}}}b1??,b2??,…,bncat???
Type 2
CNE-net-CLS-att,Type 1 沒有考慮上下文對 aspect 的影響,所以 Type 2 加入了基于內容的注意力機制,示意圖如下:
如圖所示,針對每個 category 該模型都要用一次注意力機制,其中 [CLS] 的隱狀態作為 query,待情感分類的 category 對應的 category words 的隱狀態作為 key 和 value。公式如下:
e?cati=softmax(h?[CLS]?Hcat?i)?Hcat?i(2)\vec{e}_{cat_i} = softmax(\vec{h}_{[CLS]}·\Eta_{cat-i})·\Eta_{cat-i} \tag2 ecati??=softmax(h[CLS]??Hcat?i?)?Hcat?i?(2)
e?cati\vec{e}_{cat_i}ecati?? 為 category embedding vector,將其當成公式(1)中的 h?\vec{h}h,之后按公式(1)計算就可得到該 category 的情感極性。
Type 3
CNE-net-SEP-sent.-att,之前 ABSC 的論文中提到,context 對考慮 aspect 有幫助,同樣 aspect 也對考慮 context 有幫助,所以除了 Type 2 中做的利用 content 來得到 category embedding 以外,Type 3 還利用了 category name 來得到 sentence embedding。所以 Type 3 其實是對 content 和 category 都利用 attention 機制。示意圖如下:
同樣,利用 attention 也是針對每個 category 的情感分類的。
對于第 iii 個 category,首先根據這個 category name 得到 sentence vector h?sent?i\vec{h}_{sent-i}hsent?i?,即 h?[SEP?i]\vec{h}_{[SEP-i]}h[SEP?i]? 作為 query,Hsent\Eta_{sent}Hsent?作為 key 和 value,公式如下:
h?sent?i=softmax(h?[SEP?i]?Hsent)?Hsent(3)\vec{h}_{sent-i} = softmax(\vec{h}_{[SEP-i]}·\Eta_{sent})·\Eta_{sent} \tag3 hsent?i?=softmax(h[SEP?i]??Hsent?)?Hsent?(3)
之后將 h?sent?i\vec{h}_{sent-i}hsent?i? 當作 Type 2 中的 h?[CLS]\vec{h}_{[CLS]}h[CLS]?,計算得到 category embedding vector e?cati\vec{e}_{cat_i}ecati??,公式如下:
e?cati=softmax(h?sent?i?Hcat?i)?Hcat?i(4)\vec{e}_{cat_i} = softmax(\vec{h}_{sent-i}·\Eta_{cat-i})·\Eta_{cat-i} \tag4 ecati??=softmax(hsent?i??Hcat?i?)?Hcat?i?(4)
之后同 Type 2 的做法。
Experiments
非增量學習
首先實驗結果如下:
-
非增量學習時,QA-B(單任務模型) 和 MTL(多任務模型) 的結果差距不大,證明設計得好的單任務模型其效果也是不弱的。
-
ACSA task 中 CNE-net-SEP-sent.-att 的 Precision 和 Recall 分別大于和小于 CNE-net-CLS-att.,我認為這是因為前者在 SemEval-14-Task4 這個比較簡單的數據集上想多了(比如,明明這句話沒提到某個 category,但是其模型“想”得有點兒多,反而判斷失誤了。這就像司馬懿中諸葛亮的空城計一般,是自己多疑造成的結果。)
而在更復雜一點兒的 Sentihood 數據集上 CNE-net-SEP-sent.-att 的 Precision 和 Recall 都大于了 CNE-net-CLS-att.,這也印證了我的猜想。
增量學習
實驗結果如下:
其實從兩個表中可以看到 QA-B 和 CNE-net-SEP-sent.-att. 差別沒有特別大,我認為這是因為作者提出的這種多任務方法其實本質上與單任務方法類似。
想法
- 其實我認為作者提出的這個方法的思想過程是一個雞生蛋蛋生雞的問題。為什么這么說呢,先看下面的示意圖:
首先在前些年提出的解決 ACSC 問題的 model 中是不能同時預測多個 category 的情感極性,所以其實這些模型可以看成對一個 category 共享 decoder 的模型。之后為了同時預測多個 category 提出了多個 decoder 的 model。
之后根據該文的 Motivation 作者提出了共享 decoder 的思想,但是我們可以從上圖看到,其實作者的這種做法與將多個 category 多次送入只預測一個 category 的 model 的做法區別不大,其做法僅僅是改變了輸入的內容(即加上了多個 category name,但事實上,即使不加這些 name,而是額外地依次給每個 category 的信息也是可以的)。
我認為作者這種做法是拋棄了多個 decoder 的優勢,所以我認為可以試著增加不同任務(預測不同 category 情感極性)之間的交互。
- 作者設計的共享 decoder 部分還是比較簡單,所以我認為可以對這部分進行一些改進,舉個簡單的例子:
可以在 decoder 部分模仿 IAN 的方法(如上圖所示)或其他更有效的方法。
總結
以上是生活随笔為你收集整理的A Multi-task Ensemble Framework for Emotion, Sentiment and Intensity Prediction的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab 混沌分叉图,如何做出poi
- 下一篇: 2018阿里巴巴春招面试