Tensorflow2.2實現,見github倉庫。
遠程監督
關係抽取訓練集標註成本高,一般使用遠程監督方法(半監督)自動標註數據。遠程監督假設,若知識庫中兩個實體具有某種關係,則任何包含這兩個實體的句子都具有這種關係。
下圖爲使用遠程監督自動標註數據的實例,其中第一句標註正確,而第二句標註錯誤。
遠程監督是快速獲取關係抽取訓練集的有效方法,但其有 兩個缺點:
- 遠程監督假設過於強烈,易標註錯誤,從而引入噪聲數據,多數遠程監督方法的研究聚焦於降噪;
- 遠程監督多用於使用精細特徵(句法結構等)的監督模型,這些特徵一般使用已有的NLP工具提取,不可避免會引入誤差,使用NLP工具提取的傳統特徵,會造成誤差的傳播或積累,而且,遠程監督語料庫多來源於網絡的非正式文本,句子長度不一,隨着句子長度的增加,傳統特徵提取的正確性會急劇下降;
PCNN關係抽取
Piecewise Convolutional Neural Networks (PCNNs) with multi-instance learning 解決以上兩個難題:
爲解決第一個問題,將遠程監督關係抽取視爲多實例問題。多實例問題中,訓練集由很多包組成,每個包多個實例,每個包的標籤已知,而包中實例的標籤未知。設計目標函數只考慮每一個包的預測標籤,PCNN僅選取每包中預測類別最接近真實類別的一個實例作爲包的輸出,一定程度上可降低包中一些實例標註錯誤的影響。
爲解決第二個問題,使用CNN網絡自動提取特徵,不使用複雜的NLP預處理。對卷積層輸出使用單一最大池化,能一定程度提取文本特徵表達,但難以捕獲兩個實體間的結構信息。PCNN基於兩實體位置信息將卷積層輸出劃分爲3個部分,基於此,PCNN可能表現出更好的性能。
PCNN與Text CNN的主要區別在於輸入層引入position embedding、池化層分爲三段!
PCNN方法論
如圖3所示,PCNNS主要由四部分組成:Vector Representation, Convolution, Piecewise Max Pooling and Softmax Output.
向量表達
句子的向量表達爲兩部分的拼接結果:詞嵌入和位置嵌入。
- 使用skip-gram方法預訓練詞向量;
- 使用Position Embeddings表示句子單詞到兩個實體的相對距離,如下圖,單詞son到實體Kojo Annan和Kofi Annan的相對距離分別爲3和-2。
隨機初始化兩個位置嵌入矩陣,圖3中詞嵌入的維度是4,位置嵌入的維度是1。結合詞嵌入和位置嵌入,句向量表示爲
其中,是句子長度(單詞數),.
卷積層
對於長度爲的句子,首尾填充長度,則卷積核的輸出
若使用個卷積核,則卷積操作的輸出爲
圖3中,卷積核的數目爲3。
分段最大池化層
卷積層輸出維度爲,輸出維度依賴於句子的長度。爲便於應用於下游任務,卷積層的輸出必須獨立於序列長度,一般採用池化操作,主要思想是僅保留每個feature map中的主要的特徵。
使用單一最大池化無法捕獲兩個實體的結構信息特徵,PCNN使用分段最大池化代替單一最大池化,如圖3所示,每個卷積核的輸出被兩個實體劃分爲3部分,分段最大池化輸出長度爲3的向量:
拼接所有卷積核分段池化層輸出爲,經非線性函數輸出爲(維度與句子長度無關)
Softmax層
首先將輸出轉化爲類別分數(softmax轉換爲類別概率)
多實例學習
爲降低數據標註錯誤的影響,PCNN使用多實例(半監督)學習。
考慮包含個包的訓練集,其中,包中個不同實例互爲獨立。對於實例,神經網絡輸出向量,其中第個關係對應的概率爲
將目標函數定義爲極小化每個包的損失,從而降低包中部分數據標註錯誤的影響。每個包的標籤已知,包中實例標籤未知,訓練過程中將包中實例在包標籤上的最大概率作爲預測輸出,則目標函數定義爲
Reference
1. Distant Supervision for Relation Extraction via Piecewise Convolutional Neural Networks
2. EMNLP 2015 | PCNN實現遠程監督在關係提取中的應用