关系抽取之分段卷积神经网络(PCNN)
文章目錄
- 遠程監督
- PCNN關系抽取
- PCNN方法論
- 向量表達
- 卷積層
- 分段最大池化層
- Softmax層
- 多實例學習
- Reference
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。結合詞嵌入和位置嵌入,句向量表示為
S=Rs×dS=\R^{s\times d} S=Rs×d
其中,sss是句子長度(單詞數),d=dw+dp?2d=d_w+d_p*2d=dw?+dp??2.
卷積層
對于長度為sss的句子,首尾填充w?1w-1w?1長度,則卷積核w\boldsymbol ww的輸出
c∈Rs+w?1,cj=wqj?w+1:j,1≤j≤s+w?1\boldsymbol c\in\R^{s+w-1},\quad c_j=\boldsymbol w\boldsymbol q_{j-w+1:j},\quad 1\leq j\leq s+w-1 c∈Rs+w?1,cj?=wqj?w+1:j?,1≤j≤s+w?1
若使用nnn個卷積核,則卷積操作的輸出為
C={c1,?,cn},cij=wiqj?w+1;j,1≤i≤nC=\{\boldsymbol c_1,\cdots,\boldsymbol c_n\},\quad c_{ij}=\boldsymbol w_i\boldsymbol q_{j-w+1;j}, \quad 1\leq i\leq n C={c1?,?,cn?},cij?=wi?qj?w+1;j?,1≤i≤n
圖3中,卷積核的數目為3。
分段最大池化層
卷積層輸出維度為Rn×(s+w?1)\R^{n\times (s+w-1)}Rn×(s+w?1),輸出維度依賴于句子的長度。為便于應用于下游任務,卷積層的輸出必須獨立于序列長度,一般采用池化操作,主要思想是僅保留每個feature map中的主要的特征。
使用單一最大池化無法捕獲兩個實體的結構信息特征,PCNN使用分段最大池化代替單一最大池化,如圖3所示,每個卷積核的輸出ci\boldsymbol c_ici?被兩個實體劃分為3部分,分段最大池化輸出長度為3的向量:
pi={pi1,pi2,pi3},pij=max?(cij)1≤i≤n,1≤j≤3\boldsymbol p_i=\{p_{i1},p_{i2},p_{i3}\},\ p_{ij}=\max(c_{ij})\quad 1\leq i\leq n,\ 1\leq j\leq 3 pi?={pi1?,pi2?,pi3?},?pij?=max(cij?)1≤i≤n,?1≤j≤3
拼接所有卷積核分段池化層輸出為p1:n\boldsymbol p_{1:n}p1:n?,經非線性函數輸出為(維度與句子長度無關)
g=tanh?(p1:n),g∈R3n\boldsymbol g=\tanh(\boldsymbol p_{1:n}), \quad\boldsymbol g\in\R^{3n} g=tanh(p1:n?),g∈R3n
Softmax層
首先將輸出轉化為類別分數(softmax轉換為類別概率)
o=W1g+b,W1∈Rn1×3n,o∈Rn1\boldsymbol o=W_1\boldsymbol g+b,\quad W_1\in\R^{n_1\times 3n},\ \boldsymbol o\in\R^{n_1} o=W1?g+b,W1?∈Rn1?×3n,?o∈Rn1?
多實例學習
為降低數據標注錯誤的影響,PCNN使用多實例(半監督)學習。
考慮包含TTT個包的訓練集{M1,M2,?,MT}\{M_1,M_2,\cdots,M_T\}{M1?,M2?,?,MT?},其中Mi={mi1,mi2,?,miqi}M_i=\{m_i^1,m_i^2,\cdots,m_i^{q_i}\}Mi?={mi1?,mi2?,?,miqi??},包中qiq_iqi?個不同實例互為獨立。對于實例mijm_i^jmij?,神經網絡Θ\ThetaΘ輸出向量o\boldsymbol oo,其中第rrr個關系對應的概率為
p(r∣mij;θ)=eor∑k=1n1eokp(r|m_i^j;\theta)=\frac{e^{o_r}}{\sum_{k=1}^{n_1}e^{o^k}} p(r∣mij?;θ)=∑k=1n1??eokeor??
將目標函數定義為極小化每個包的損失,從而降低包中部分數據標注錯誤的影響。每個包的標簽已知,包中實例標簽未知,訓練過程中將包中實例在包標簽上的最大概率作為預測輸出,則目標函數定義為
J(θ)=∑i=1Tlog?p(yi∣mij;θ),j?=arg?max?jp(yi∣mij;θ)J(\theta)=\sum_{i=1}^T\log p(y_i|m_i^j;\theta),\quad j^*=\arg\max_jp(y_i|m_i^j;\theta) J(θ)=i=1∑T?logp(yi?∣mij?;θ),j?=argjmax?p(yi?∣mij?;θ)
Reference
1. Distant Supervision for Relation Extraction via Piecewise Convolutional Neural Networks
2. EMNLP 2015 | PCNN實現遠程監督在關系提取中的應用
總結
以上是生活随笔為你收集整理的关系抽取之分段卷积神经网络(PCNN)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PCNN探究实验
- 下一篇: 聚焦和增强卷积神经网络