袁泉,薛書鑫*
(1.重慶郵電大學 通信與信息工程學院,重慶 400065;2.重慶郵電大學 通信新技術(shù)應(yīng)用研究中心,重慶 400065)
在信息爆炸的時代,海量的數(shù)據(jù)在給人類帶來便捷的同時也讓大家困惑于如何快速有效地從中找到自己想要的信息。信息抽取技術(shù)應(yīng)運而生,關(guān)系抽取是信息抽取中重要的任務(wù)之一。其為下游任務(wù)(如構(gòu)建知識圖譜和問答系統(tǒng))提供了技術(shù)基礎(chǔ),也在文本摘要、語言翻譯、情感分析等自然語言處理任務(wù)中有深遠的意義。
關(guān)系抽取的目的是從非結(jié)構(gòu)化、無序的句子中抽取出兩個實體之間的關(guān)系。如在句子“蘇炳添出生自廣東省”中,選取“蘇炳添”和“廣東省”作為實體,可以在抽取結(jié)束后得到兩者為“出生地”關(guān)系,并構(gòu)成(蘇炳添,出生地,廣東?。┑娜M,如圖1 所示。
因此解析句子的結(jié)構(gòu)特征,明了詞語的語義特征是任務(wù)的關(guān)鍵。人們早期依賴自然語言工具,構(gòu)建人工選擇的特征工程。盡管研究者采取了很多有效的構(gòu)建人工特征方法(如基于核函數(shù)和基于模式識別的方法),但是這些方法并不能保證所需特征的完整性并且會耗費大量時間。因此研究者目前普遍使用Mintz等[1]提出的遠程監(jiān)督的方法自動學習特征,但該方法同樣也被大量的噪聲問題困擾,主要為以下兩種:
1)句子之間因錯誤標記產(chǎn)生的噪聲。遠程監(jiān)督的關(guān)系抽取根據(jù)實體對在知識庫(Knowledge Base,KB)存在的某種關(guān)系將所有含有相同實體對的句子看作一個關(guān)系結(jié)果,然而事實上具有相同實體對的不同句子并不一定有相同的關(guān)系。如在句子“馬云創(chuàng)建了阿里巴巴公司”和句子“馬云在講阿里巴巴的故事”中,同樣選“馬云”和“阿里巴巴”作為實體對,關(guān)系卻不相同,當把其中一個句子的關(guān)系當作正確結(jié)果,則另一個句子將成為噪聲。當選取的句子在KB 中沒有關(guān)系時,即KB 容量不足時,也會產(chǎn)生噪聲。如句子“母親對兒子非常地包容”,應(yīng)該得到(母親,親人關(guān)系,兒子)這樣的關(guān)系結(jié)果,但若KB 中不存在親人關(guān)系,則該句子的抽取結(jié)果將被錯誤地標記為NA(其他結(jié)果)。
2)句子內(nèi)部詞語的噪聲。對于一個較長的句子,句子中的兩個實體是句子的核心,句子中的其他字詞有時可以看作輔助判斷兩個實體關(guān)系的信息,但有時也可以看作影響判斷的噪聲,在包含信息比較多的句子或者是存在語義轉(zhuǎn)折的句子中影響更為明顯。如“小明的鄰居是鎮(zhèn)子上有名的裁縫”,選取“小明”和“鄰居”作為實體本應(yīng)該得到“鄰里”的關(guān)系,但是可能會受到“裁縫”這個詞語的干擾得到“工作職業(yè)”的關(guān)系。又如句子“秦始皇雖然覆滅了其他六國,但創(chuàng)立了秦王朝”,應(yīng)得(秦始皇,創(chuàng)建,秦王朝),但是“覆滅”這個詞與“創(chuàng)建”的意思完全相反,會對模型的關(guān)系判斷造成干擾。
大量諸如上述的句子嚴重影響關(guān)系分類的性能,因此噪聲問題亟待解決。Hoffmann等[2]利用多實例學習(Multiple Instance Learning,MIL)方法對噪聲去強調(diào)。以包為一個整體,每個包里存在一組有相同實體對且未標記的句子,對整個包預測關(guān)系結(jié)果。Zeng等[3]將深度學習的方法和MIL 相結(jié)合,利用分段卷積的網(wǎng)絡(luò)框架預測包中實體對的類別,但是并沒有使用包中全部的句子作為訓練樣本,而僅僅采用包中標簽概率最高的句子,顯然不能獲得全面的樣本分析。Lin等[4]將注意力(attention,att)機制應(yīng)用于關(guān)系抽取模型中,給包內(nèi)不同的句子分配不同的權(quán)重,注意力機制的應(yīng)用大幅度抑制了噪聲對訓練的影響。在此基礎(chǔ)上不斷有人根據(jù)不同的場景和模型添加適合的注意力機制。如Zhang等[5]將注意力機制加入網(wǎng)文關(guān)系分類模型中;Bai等[6]將其加入藥物分類領(lǐng)域;諶予恒等[7]將注意力機制和殘差網(wǎng)絡(luò)相結(jié)合,探索出了更加有效的關(guān)系抽取模型。但隨著數(shù)據(jù)集的不斷擴大、噪聲數(shù)量和種類的增多,研究者嘗試選擇更復雜的算法解決問題。Feng等[8]和Qin等[9]通過強化學習的方法生成標簽,并與句子預測標簽比對,由此來決定是刪除還是保留句子。Chen等[10]從句子被標記的多個關(guān)系中選擇最可靠的標簽后再進行訓練。Yi等[11]通過訓練樣本提取器刪除噪聲,挑選出有用的句子加入訓練。
上述方法都取得了很好的降噪效果,但仍存在兩點弊端:第一,它們丟棄了大量被訓練認定為噪聲的句子,然而這些被認定的“噪聲”可能存在有用的信息;第二,它們僅僅考慮了包內(nèi)句子間錯誤標注帶來的噪聲,而忽視了句子內(nèi)部的噪聲。事實上,大部分研究者對句子內(nèi)部噪聲處理都是強調(diào)已有的重要信息或是增加額外的有用信息,如Zeng等[12]給句子中的每個詞都加入位置向量,謝騰等[13]給輸入的句子加入關(guān)鍵詞信息。這些模型可以在一定程度上通過提高重要信息比重的方式降低句子內(nèi)部的噪聲的比重,但是這種方式不能剔除噪聲且會受到句子多樣性的影響。
為了解決句子內(nèi)部的噪聲問題,本文引用了Zhao等[14]在2020 年提出的殘差收縮網(wǎng)絡(luò)結(jié)構(gòu),該網(wǎng)絡(luò)創(chuàng)新性地將軟閾值化加入深度學習中來解決故障診斷中信號噪聲的問題。本文以此特性為基礎(chǔ),提出使用殘差收縮網(wǎng)絡(luò)解決關(guān)系抽取中句子內(nèi)部噪聲問題的算法。而對于包內(nèi)句子間標注錯誤的噪聲,本文則采用注意力機制處理。實驗結(jié)果表明基于殘差收縮的網(wǎng)絡(luò)模型可以取得更高的預測精度,從而有效地解決遠程監(jiān)督帶來的噪聲問題。
殘差收縮(Residual Shrinkage,RS)模塊由普通的殘差網(wǎng)絡(luò)上、軟閾值化和閾值訓練子模塊組成,如圖2 所示。殘差收縮網(wǎng)絡(luò)[14]本質(zhì)是一種改進的殘差網(wǎng)絡(luò)。在殘差路徑(shortcut 路徑)連接主體之前加入核心是軟閾值化的子模塊。該模塊會在訓練中自動生成閾值給不同的特征通道分配權(quán)重。它由兩個卷積層構(gòu)成,其中第二個卷積層選用Sigmoid 作為激活函數(shù),保證了閾值是個不會太大的正數(shù)。卷積層的輸出與原特征的絕對值乘積得到當前特征的閾值。軟閾值化使用上述閾值對當前通道的特征收縮,包含無用信息的通道特征將會被縮小或者刪除。由于這種算法可以根據(jù)不同的輸入自主生成適合當前輸入的閾值降噪,針對不同類別的輸入語料都能得到不同的閾值,所以非常適合用于解決句子內(nèi)部的噪聲問題。上述的降噪原理類似于Hu等[15]提出的基于通道注意力機制的網(wǎng)絡(luò)模型,通過處理通道間特征實現(xiàn)降噪。不同在于RS 模塊不再使用通道注意力機制中的加權(quán)函數(shù),而是改用軟閾值化。通道注意力機制注重權(quán)重的分配,而RS 模塊則注重無用信息和邊緣信息的處理,更加契合降噪的目的。本章將會從軟閾值模塊和閾值訓練子模塊兩個方面介紹。
軟閾值化在降低信號噪聲的處理中非常常見。首先將信號轉(zhuǎn)換到一個域中,該域接近0 的信號為噪聲信號,然后通過軟閾值化處理這個域中信號。作用原理如式(1)所示,其中y為輸出,x為信號大小,τ為閾值。當信號的絕對值低于閾值時,該較低的部分將會被置零(式(1)中-τ≤x≤τ所示,噪聲置零),而其他的部分也將向零的方向減?。ㄊ剑?)中x>τ和x<-τ所示,影響較小的信號減小)。
顯然軟閾值化存在兩點困難:1)軟閾值模塊需要在其工作的過程中默認噪聲存在于零附近,所以信號降噪前經(jīng)常要使用小波變換或其他方法預處理信號,使得操作更加復雜;2)軟閾值化需要根據(jù)信號收縮的閾值選擇不同的濾波器,這種濾波器的選擇需要專業(yè)的人才,即便如此,當多種信號輪流輸入時濾波器的選擇將會異常復雜。
如果將軟閾值操作移植到深度學習中以上的兩個困難都可以迎刃而解。首先,深度學習的特征值大小可以決定輸入特征的關(guān)鍵程度,不需要對特征進行復雜的處理。類比于卷積網(wǎng)絡(luò)中最大池化選擇最有效的特征值作為代表特征,在軟閾值中可以將較小的特征值,即接近零的特征值當成是噪聲或是沒意義的特征消除,保證了軟閾值化后的模型將會保留主要的信息。不同于線性整流函數(shù)(Rectified Linear Unit,ReLU)那樣將負的特征置零,軟閾值化可以將負的、有用的特征保留下來。其次,深度學習是一個通過訓練學習的算法,在選擇濾波器時,只需要額外增加一個閾值訓練子模塊便能根據(jù)不同的輸入特征學習不同的閾值,避免了濾波器選擇困難的問題。
考慮到軟閾值化和深度學習的兼容性,軟閾值化的導函數(shù)由式(2)給出,其中y′為輸出特征導數(shù)??梢钥闯鍪剑?)結(jié)果都是值為0 或1 的整數(shù),說明軟閾值化深度學習的反向傳播過程中不會引起梯度爆炸或者梯度消失的問題,這一點也契合深度學習的訓練過程。
閾值訓練子模塊需要根據(jù)軟閾值化的特點設(shè)計。模型對于閾值至少有兩點要求:第一,閾值必須是正數(shù),若閾值為負,代入式(1)將會產(chǎn)生錯誤;第二,閾值不能過大,如果閾值即式(1)中τ很大,根據(jù)式(1)可以看出大量的信息x將會被置零,此時用于訓練的特征將被大幅壓縮,若是閾值大到超越了信號量,即式(1)中τ<x時,所有的特征都等于0,模型將無法訓練。
根據(jù)以上要求設(shè)計的閾值訓練子模塊如圖2 的右半部分所示,它由絕對值層、全局池化層和兩個全連接層組成。絕對值層將特征取為正數(shù),全局平均池化將特征轉(zhuǎn)化成一維向量,接著通過兩個全連接層進行學習。需要注意的是第二個全連接層必須使用Sigmoid 作為激活函數(shù),Sigmoid 函數(shù)可以把輸出結(jié)果歸一化到0 和1 之間,由此可以防止閾值(閾值=全連接輸出結(jié)果×求絕對值后的特征)過大的問題。
由于上述所有過程都是在單獨的特征通道內(nèi)完成,所以每個特征通道都會根據(jù)當前通道閾值減少無關(guān)信息的干擾,從而完成了句子內(nèi)部降噪的功能。
本文使用的基于殘差收縮網(wǎng)絡(luò)的模型結(jié)構(gòu)如圖3 所示。模型主要由嵌入層(詞嵌入+位置嵌入)、卷積層、分段池化層、注意力層、全連接層和Softmax 組成。嵌入層負責模型的輸入,卷積層負責特征的提?。ㄓ糜诮档蛦蝹€句子內(nèi)部噪聲的RS 模塊就包含在此層中),注意力層負責處理包內(nèi)句子之間的噪聲問題,最后全連接層和Softmax 則根據(jù)前面提取的特征輸出每種關(guān)系的預測概率。
2.1.1 嵌入層
為了讓深度學習模型能夠識別輸入用于訓練的句子,嵌入層將輸入句子編碼成嵌入矩陣。嵌入矩陣中的每一條向量都是由詞嵌入和位置嵌入構(gòu)成,詞嵌入包含句子語義信息,位置嵌入則包含相對位置信息。
詞嵌入是一種對單詞的分布式表示。通俗來說就是將低維的單詞表示成高維的實值向量。由于詞嵌入從大量文本中預訓練得到,由此捕獲了原單詞的部分語義信息。本文使用Word2vec 作為實驗預訓練模型。
在關(guān)系抽取過程中,相同的實體因在句中位置的不同可能導致不同關(guān)系結(jié)果,因此僅有語義信息并不能完整地反映輸入特征。位置嵌入提供了原句子中的每個單詞和兩個實體相對位置信息。如在句子“Alibaba was founded by Jack Ma in Hangzhou”中,“by”在“Alibaba”后第三個單詞位置,“Jack Ma”前一個單詞位置,所以它的位置映射可以用“3”和“-1”表示。這些位置映射通過隨機化初始向量的方法變?yōu)槲恢孟蛄俊?/p>
設(shè)輸入句子為s={W1,W2,…,Wi},其中Wi表示句子第i個單詞。設(shè)詞向量維度為dw,位置嵌入維度為dp,則輸入通過嵌入層后將得到特征向量qi(qi∈Rd),其中d為輸入向量的維度,d=dw+2 ×dp。
2.1.2 卷積層
卷積運算借助卷積核在輸入矩陣上滑動點積的方式獲得句子多個局部特征。計算過程如式(3)所示:
其中:b為偏置,f為激活函數(shù),qi為通過嵌入層后的特征。
實際卷積過程中,為了更好地捕捉語句特征,通常使用多個大小不同的卷積核,每個卷積核計算后都會得到一個特征通道。本文的軟閾值化便是在特征通道內(nèi)部進行。如式(4)所示:
其中:W為待訓練矩陣。經(jīng)過一層卷積后的特征將被送入多個殘差收縮模塊繼續(xù)訓練。這些特征一方面將會被更高層網(wǎng)絡(luò)繼續(xù)細化學習,另一方面也會在各自的特征通道中學習閾值并利用軟閾值化刪除不重要的部分進而減少句子內(nèi)部噪聲。上述過程可以用式(5)表示:
其中:ci為卷積層后的輸出,F(xiàn)RS為殘差收縮模塊運算。
2.1.3 分段池化層
為了獲取更全面的結(jié)構(gòu)信息,實驗依照實體1 和實體2的位置將句子分成三段:句子開始到實體1 為第一段,實體1到實體2 為第二段,實體2 到句子結(jié)束為第三段。設(shè)實體1的位置為a,實體2 的位置為b,則三段句子經(jīng)過卷積層后的特征 表示為={c1,c2,…,ca},ci2={ca+1,ca+2,…,cb},={cb+1,cb+2,…,cb+n}。
由拼接池化后的三個向量x1、x2、x3得句子的最終特征表示X,如式(9)所示:
2.1.4 注意力層
注意力層主要解決包內(nèi)句子間噪聲問題。由于遠程監(jiān)督的關(guān)系抽取會將所有擁有相同實體對的句子放在一個包中并以包為單位得到這兩個實體的關(guān)系,所以訓練時需要通過分配權(quán)重的方式減少包中句子因錯誤標注帶來的噪聲干擾。
根據(jù)包中每個句子S={s1,s2,…,sn}的權(quán)重計算出整個包的加權(quán)和u,如式(10)所示:
其中:M為包中句子數(shù)量;ai為權(quán)重;Xi為包中第i個句子特征。
此處采用雙線性模型為每種關(guān)系和當前句子的相關(guān)程度打分,如式(11)所示:
其中:r為和關(guān)系種類相關(guān)的查詢矩陣;W為待訓練矩陣。由此權(quán)重ai可以用式(12)表示:
其中:N為關(guān)系數(shù)量。
2.1.5 Softmax層
得到包的加權(quán)和u后,先通過全連接層調(diào)整維度,維度的大小是最終分類的關(guān)系數(shù)量,再利用Softmax 預測每種關(guān)系存在的可能性,在輸入句子Si下預測關(guān)系rj的條件概率為:
本文采用交叉熵作為損失函數(shù)。設(shè)包的加權(quán)和u通過Softmax 后條件概率為p(r|S)。損失函數(shù)將根據(jù)包中句子S={s1,s2,…,sn}和其對應(yīng)的標簽關(guān)系r={r1,r2,…,rn}給出如式(14)所示:
其中:|B|為包的數(shù)量;S為輸入句子;θ為模型的所有參數(shù)。
實驗使用來自于Riedel等[16]的NYT(New York Times)公開數(shù)據(jù)集。該數(shù)據(jù)集共有522 611 個訓練用例,17 448 個測試用例,具體數(shù)據(jù)參數(shù)如表1 所示。
表1 數(shù)據(jù)集參數(shù)Tab.1 Dataset parameters
本文通過精確率P(Precision)、召回率R(Recall)計算得到的F1 值與PR(Precision-Recall)曲線來評估網(wǎng)絡(luò)的優(yōu)劣性,如式(15)~(17)所示:
其中:TP(True Positive)為真正例(預測為正且真實為正);FP(False Positive)為假正例(預測為正且真實為反);FN(False Negative)為假反例(預測為反且真實為正);TN(True Negative)為真反例(預測為反且真實為反)。
每結(jié)束一次循環(huán)記錄F1值,如果當前指標值比記錄的高,則將記錄的指標更新。
設(shè)使用Word2vec 的預訓練模型詞嵌入維度為100,隨機化初始的位置嵌入維度為10。利用暖啟動加上多項式遞減學習率,初始學習率設(shè)為1E-6,學習率逐漸增加到1E-3,再使用多項式衰減,結(jié)束學習率又回到1E-6。使用3、4、5 的卷積窗口每個窗口的卷積核為128(Feature maps),共384 個卷積核,如表2 所示。
表2 實驗參數(shù)設(shè)置Tab.2 Experimental parameter setting
在模型訓練過程中,可以使用一個殘差收縮模塊,也可以增加網(wǎng)絡(luò)的深度,堆疊多個殘差收縮模塊。為了探究多少個殘差模塊性能最好,分別使用了1、3、5、7、9 個殘差收縮模塊(RS-1、RS-3、RS-5、RS-7 和RS-9),實驗結(jié)果如表3 所示。
表3 殘差收縮模塊數(shù)量對性能的影響Tab.3 Influence of number of residual shrinkage modules on performance
從表3 可以看出,使用1 個殘差模塊時的模型F1 值為0.667,使用3 個和5 個殘差模塊模型F1 值為0.681,模型性能提升了約1.40 個百分點;但當殘差模塊更多時,F(xiàn)1 值的變化微乎其微。由此可以表明,在當前數(shù)據(jù)集下,3 個殘差模塊便可使模型達到穩(wěn)定。
為了評估基于殘差收縮網(wǎng)絡(luò)構(gòu)建的模型,本文選擇分段卷積神經(jīng)網(wǎng)絡(luò)(Piecewise Convolutional Neural Network,PCNN)、雙向長短期記憶(Bi-directional Long Short-Term Memory,BiLSTM)網(wǎng)絡(luò)以及殘差網(wǎng)絡(luò)(Residual Network,ResNet)模型作為基線模型。實驗所得的PR 曲線如圖4所示。
在PR 曲線中,曲線下方的面積越大則模型的性能越好。通過觀察圖4 看出,本文模型明顯優(yōu)于其他3 個基線模型,原因是由多個殘差收縮模塊構(gòu)建的模型通過給不同特征通道軟閾值的方式減少了各個通道中干擾信息對特征提取的影響,進而減小了句子內(nèi)部的噪聲影響,大幅提高了關(guān)系抽取模型的準確性。
本文使用的殘差收縮模塊用于解決句子內(nèi)部的噪聲問題,注意力機制用于解決包內(nèi)句子的噪聲問題。為了驗證兩種降噪的方式能否并行,將基線模型+注意力機制、殘差收縮網(wǎng)絡(luò)、殘差收縮網(wǎng)絡(luò)+注意力機制3 組對照又進行了實驗,結(jié)果如表4 所示(其中att 表示注意力機制)。
表4 不同模型結(jié)合注意力機制的F1值對比Tab.4 Comparison of F1 scores of different models combined with attention mechanism
在實驗過程中F1 值穩(wěn)定后會圍繞某數(shù)值產(chǎn)生輕微上下波動。將每個模型選擇實驗過程中能達到的最大F1 值作為數(shù)據(jù)。通過分析結(jié)果得到以下幾點結(jié)論:
1)對比PCNN+att、BiLSTM+att、ResNet+att 這3 個模型可看出,ResNet+att 模型的F1 值比PCNN+att 高4.60 個百分點,比BiLSTM+att 高2.50 個百分點,由此可以看出深層次的網(wǎng)絡(luò)模型在大數(shù)據(jù)集上有較好的效果。
2)對比PCNN+att、BiLSTM+att、ResNet+att 和RS+att 模型可看出,RS+att 模型比其他3 個模型的F1 值分別提高了6.00、3.90 和1.40 個百分點,說明了殘差收縮模塊中的軟閾值化有效地減少了句子內(nèi)部的噪聲,從而獲得了F1 值的提升。
3)對比ResNet+att、RS、RS+att 這3 個模型可以看出,殘差收縮模型和注意力機制是可以共同作用的,在只使用殘差收縮的模型時,F(xiàn)1 值為0.645;在只使用注意力機制時,F(xiàn)1 值為0.667;當模型同時使用兩者時,F(xiàn)1 值高達0.681。兩種降噪方式共同作用取得了最高的F1 值。因為殘差收縮模型處理的是句子內(nèi)部干擾兩個實體的噪聲,而注意力機制處理的是包中標簽錯誤帶來的噪聲問題,兩者并不矛盾,共同使用時可以更全面地去除噪聲從而獲得更好的抽取性能。
本文針對關(guān)系抽取中句子內(nèi)部單詞干擾產(chǎn)生的噪聲問題,提出了一種基于軟閾值模塊的殘差收縮網(wǎng)絡(luò)模型。所提模型從兩方面解決噪聲問題:一方面利用殘差收縮模塊降低句子內(nèi)部的噪聲;另一方面利用注意力機制減少包中錯誤標注的噪聲。實驗結(jié)果證明殘差收縮網(wǎng)絡(luò)的關(guān)系抽取模型效果優(yōu)于基線模型。未來的工作有兩點展望:1)考慮到本文主要針對英文抽取,未來可能會將工作放到中文或者其他小語種的抽取上;2)嘗試在模型中加入更多特征,如同義詞向量表,提高模型魯棒性。