Learning with Noise: Enhance Distantly Supervised Relation Extractionwith Dynamic Transition Matrix
來自專欄 西土城的搬磚日常
轉載請註明出處:西土城的搬磚日常
來源:SemEval 2018
http://www.aclweb.org/anthology/P/P17/P17-1040.pdf
ABSTRACT
本文提出使用dynamic transition matrix對基於遠程監督的數據集中的噪音數據進行描述。並使用了一種curriculum learning(自主學習,課程學習)的方式訓練模型。
INTRODUCTION
本文中,作者使用一種對噪音數據顯式建模的方法。儘管噪音數據是不可避免的,但是用一種統一的框架對噪音數據模式進行描述是可能的。作者的出發點是,遠程監督數據集中通常會有對噪音模式有用的線索。比如說,一個人的工作地點和出生地點很有可能是同一個地點,這種情形下遠程監督數據集就很有可能把born-in和work-in這兩個關係標籤打錯。本文使用的方法是,對於每一個訓練樣本,對應一個動態生成的躍遷矩陣(transition matrix)。這個矩陣的作用是
- 對標籤出錯的概率進行描述
- 標示噪音模式
由於對於噪音模式沒有直接的監督,作者使用一種課程學習的訓練方法逐漸訓練模型的噪音模式,並使用跡正則(trace regularization)來控制transition matrix在訓練中的行為。本文的方法很靈活,它不對數據質量做任何假設,但可以在這樣的線索存在的時候,有效利用數據質量先驗知識來指導學習的過程。
本文主要創新點:
- 使用dynamic transition
- 使用課程學習訓練模型
METHODOLOGY
模型如圖所示,1,2跟以前的方法一致:對一個句子encode, 然後分類,得到一個句子的關係distribution。同時,3為模型動態地產生一個transition matrix T, 用來描述噪音模式。4就是將2,3的結果相乘,得到最終結果。
換句話說,在訓練階段,使用4的輸出結果,作為加噪輸出和標籤匹配,也就是training loss使用的是4的輸出結果和訓練數據的標籤進行計算。而在泛化階段,使用的是2的輸出結果。
句子級別的模型
句子embedding和prediction
本文使用PCNN作為sentence encoder, 也就是CNN + piesewise max pooling (PCNN) + FC + softmax 輸出p。
噪音建模(本文的重點 描述的是上圖中3的過程)
對於一個句子embedding x, 通過PCNN + FC 得到xn, 然後使用softmax計算得到T,
C是關係集合,xn是句子表示,w是權重向量,表示關係i, j 的混淆可能性,b是個標量。i表示句子的真實關係,j表示遠程監督數據集標註的關係。
最終觀察到的分布(上圖中4的過程)
這樣一來,sentence encoder學到的是句子真實的語義,而後面的transition matrix 學到的是噪音信息。
Bag級別的模型
將Bag內的句子同一表示有兩種方法,一個是將每個句子的表示進行平均,還有一個是使用句子級別的attention機制。之前的文獻討論的很多了,這裡就不說了。後面的處理和句子級別的模型高度相似,這裡省略。
課程學習 (Curriculum learning based training) (本文重點)
在訓練過程中,參考大家普遍的做法是,對於模型輸出o, 直接計算o和label的loss, 也就是CrossEntrophy (CE) + l2 正則作為損失函數。這樣做不能保證p能表示真實分布。原因在於在訓練的初始階段,我們對於噪音模式沒有先驗知識,這樣T和p都不太可靠,這樣會使得訓練陷入局部最優。因此我們需要一種技術來保證我們的模型能夠逐步適應訓練噪音數據。(這裡是想說利用課程學習的特點,先學習簡單的知識,再逐漸學習複雜的知識)
課程學習可以引入先驗知識,我們可以人為地將訓練樣本分為兩部分,第一部分相對可靠,第二部分相對不可靠。
跡正則(trace regularization )
當噪音很少的時候,transition matrix會比較接近單位矩陣(因為ij之間混淆性很小,同類之間的轉移概率很大,接近1,這樣轉移矩陣就會接近單位矩陣)。於是transition matrix和單位矩陣的相似性就可以用trace(T)來表示。 trace(T)越大,表明T和單位矩陣越接近,也就是噪音越少。對於可靠的數據trace(T)比較大,不可靠的數據trace(T)比較小。
跡正則的另一個好處是降低模型複雜度,減小過擬合。
訓練
一開始,不考慮噪音,直接使用p計算training loss, 然後在訓練過程逐漸增加o的重要性,降低p的重要性。樣,在模型能夠描述噪音之前, sentence encoder已經大致訓練了一些。
最終的訓練loss由三個部分組成,第一部分是o的loss, 第二部分是p的loss, 第三部分是跡正則。alpha, beta分別表示o,p的相對重要程度和跡正則的參數。
一開始,讓alpha=1。隨著訓練的進行,sentence encoder 分支有了基本的預測能力。並逐漸減小beta, alpha。逐漸減小對於trace的限制,允許更小的trace來學到更多噪音。
隨著訓練的進行,越來越關注於學習噪音模式。
加入對於數據質量的先驗知識
另一方面,如果我們已經有了對於數據集的先驗知識,我們可以利用這些知識進行課程學習。具體來說就是將數據集分成相對可靠和相對不可靠兩部分,先用可靠的數據集訓練幾個epoch, 再加入不可靠的數據集繼續訓練。同時利用跡正則,對於可靠數據集,trace(T)可以適當地大一些,對於不可靠的數據集,則要讓trace(T)小一些。
加入先驗知識的訓練loss, m是數據集的子集的索引,Nm指的是數據子集中的樣本數量。
這裡跟上面公式的區別在於去掉了p的loss部分,這是因為由於引入了先驗知識,一開始訓練使用的訓練子集可以認為是噪音很少的,所以o, p 分布可以認為是一致的。
Bag級別的模型的訓練loss和上面的公式有所不一樣,但是很相似,這裡略(原文就是略了)。
EXPERIMENTS
本文分別對句子級別,Bag級別,無數據集先驗知識,有先驗知識進行了實驗。
數據集
TIMERE
278141個句子,12種關係(所有樣本都是跟時間有關係的)。時間實體粒度越細,數據越可靠。例如:
如果一句話Alphabet含有October-2-2015則很有可能描述了inception-time of(創立)這種關係。如果一句話含有Alphabet和2015,那麼描述的關係可能性就會變多,例如發布財報,聘用新的CEO等等。利用這種啟發式想法,本文將該數據集根據時間詳細粒度分為三部分,分別代表三個不同可靠性的數據集。
分數據集的方式是:帶有年月日,帶有年月,帶有年,以及其他時間(Wikidata中沒有的三元組)的樣本作為負樣本。
共有負樣本184579個,正樣本77777(22214+2094+53469, 分別是三個可靠級別的數據)個。
validation set, test set 分別有2776, 2771個正樣本,5143, 5095個負樣本。
ENTITYRE 就是 NYT+Freebase
在TIMERE上進行Bag級別和sentence級別evaluation, 在ENTITYRE上進行Bag級別evaluation。Evaluation 方式跟以前一樣:PR curve。
模型命名方式:
sent_ bag_開頭的分別表示句子級別和Bag級別。
_mix 表示用TIMERE三個數據集一起訓練
_reliable表示只使用TIMERE中可靠數據集訓練
-PR表示使用先用可靠數據集,再加入不可靠數據集
_TM表示使用dynamic transition matrix
_GTM 表示使用global transition matrix (也就是計算T的時候,沒有xn項,全局共享同一個matrix)
_avg表示將bag內的句子表示平均,_att表示使用attention機制
顯示,本文提出的matrix和課程學習都是非常有效的。
證明本文使用的各種方法都是有效的。接下來是重頭戲:在NYT上的表現結果。
CONCLUSION
- 出發點很好,因為本task最重要也最困難的問題在於數據集中含有大量噪音。
- 實驗嚴謹完整
- 但是在NYT上效果並沒有太大改進,尤其是recall較低的時候,precision下降很嚴重。AUC值目測是有一些小的提高。主要原因是對於NYT並沒有先驗知識加入。
推薦閱讀:
※Effectively Combining RNN and CNN for Relation Classification and Extraction