【論文】Awesome Relation Extraction Paper(關係抽取)(PART III)

0. 寫在前面

回頭看了一遍之前的博客,好些介紹的論文主要是屬於關係分類的領域,於是就把前幾篇的標題給修改了一下哈哈。關係分類和之前的文本分類,基於目標詞的情感識別還都挺像的,baseline模型也都差不多。首先對之前的關係分類算法做個總結,然後進入今天的關係抽取(relation extraction)部分。

關係分類總結
  • 輸入層標配:word embedding + position embedding
  • 特徵提取層可以選取: CNN/RNN/LSTM/Attention等,效果最好的是加上attention層的模型疊加
  • 損失函數:實驗證明針對該任務margin-based ranking loss比傳統多分類softmax + cross entropy表現要好
  • 可以改進的方向:單純從神經網絡的結構出發,改進的餘地很小了,因爲這個數據集很封閉, 可以利用的信息僅僅是這些sentence 以及 標註的word entity。 在上述的基礎上可能可以考慮的方向,從兩個target word與relation的關係上加約束。

1. A glance at Distant Supervision(DS)

因爲後面的文章中會設計遠程監督的內容,所以就單獨拎出來說明一下。
遠程監督提出來的初衷是爲了解決標註數據量太小的問題,以SemEval 2010 Task 8數據集爲例,訓練數據8000條,測試數據2717條,對於深度學習網絡來說確實有點小。那麼遠程監督是怎麼來做這個增加數據量的工作的呢?第一個將遠程監督運用到關係抽取任務中的是Distant supervision for relation extraction without labeled data

If two entities have a relationship in a known knowledge base, then all sentences that mention these two entities will express that relationship in some way.

基本假設: 如果兩個實體在知識庫中存在某種關係,則包含該兩個實體的非結構化句子均能表示出這種關係。
具體步驟:(1)從知識庫中抽取存在關係的實體對;(2)從非結構化文本中抽取含有實體對的句子作爲訓練樣例,然後提取特徵訓練分類器。
存在問題:假設太強會引入噪音數據,包含兩個實體的句子不一定和數據庫中的關係一致,如下,右側非結構化文本中第一句成立,但是第二句不成立。
在這裏插入圖片描述
改進方法: 提出多示例學習(Multi Instance Learning)的方法

多示例學習可以被描述爲:假設訓練數據集中的每個數據是一個包(Bag),每個包都是一個示例(instance)的集合,每個包都有一個訓練標記,而包中的示例是沒有標記的;如果包中至少存在一個正標記的示例,則包被賦予正標記;而對於一個有負標記的包,其中所有的示例均爲負標記。(這裏說包中的示例沒有標記,而後面又說包中至少存在一個正標記的示例時包爲正標記包,是相對訓練而言的,也就是說訓練的時候是沒有給示例標記的,只是給了包的標記,但是示例的標記是確實存在的,存在正負示例來判斷正負類別)。通過定義可以看出,與監督學習相比,多示例學習數據集中的樣本示例的標記是未知的,而監督學習的訓練樣本集中,每個示例都有一個一已知的標記;與非監督學習相比,多示例學習僅僅只有包的標記是已知的,而非監督學習樣本所有示例均沒有標記。但是多示例學習有個特點就是它廣泛存在真實的世界中,潛在的應用前景非常大。 from http://blog.csdn.net/tkingreturn/article/details/39959931

利用遠程監督技術生成關係抽取訓練實例的噪音數據如何過濾?

2. Distant Supervision for Relation Extraction via Piecewise Convolutional Neural Networks(Zeng/ EMNLP2015)

可以說是作者自己之前的那篇文章的改進版,提出了兩點現存的缺陷以及相對應的改進方式:

  • 遠程監督標註數據的噪音很大,使用多示例學習的方式;
  • 原始方法大都是基於詞法、句法特徵來處理, 無法自動提取特徵。而且句法樹等特徵在句子長度邊長的話,正確率很顯著下降。提出改進的Piecewise Convolutional Neural Networks (PCNNs)

論文提出的整體模型框架如下, 主要包括四個部分:

  • Vector Representation,
  • Convolution,
  • Piecewise Max Pooling
  • Softmax Output
    在這裏插入圖片描述
    網絡的設計就是很簡單的embedding+cnn+pooling。需要提一下的是這裏對pooling層進行了改進,不再使用整個channel的唯一max,而是對卷積後得到的輸出劃分成三塊,分別是兩個實體部分和一個不包含實體的部分,這樣對這三塊做piecewise max pooling,得到三個向量。最終將三個卷積核的輸出做一樣的操作拼接起來後做softmax分類,最終得到輸出向量o。
Multi-instance Learning

首先給出幾個定義:

  • bag:數據中包含兩個entity的所有句子稱爲一個bag
  • M={M1,M2, ,MT}M= \left\{M_{1}, M_{2}, \cdots, M_{T}\right\}:表示訓練數據中的T個bags,每個bag都有一個relation標籤
  • Mi={mi1,mi2, ,miqi}M_{i}=\left\{m_{i}^{1}, m_{i}^{2}, \cdots, m_{i}^{q_{i}}\right\}:表示第i個bag中有qiq_{i}個instance,也就是句子,假設每個instance是獨立的
  • oo便是給定mijm_{i}^{j}的網絡模型的輸出(未經過softmax),其中oro_{r}表示第r個relation的score

這樣,經過softmax就可以計算每一個類別的概率:
p(rmij;θ)=eork=1n1eokp\left(r | m_{i}^{j} ; \theta\right)=\frac{e^{o_{r}}}{\sum_{k=1}^{n_{1}} e^{o_{k}}}
模型的目的是得到每個bag的標籤,所以損失函數是基於bag定義的,這裏採用了“at-least-once assumption”,即假設每個bag內都肯至少有一個標註正確的句子,那麼就找出bag中得分最高的句子來求損失函數:J(θ)=i=1Tlogp(yimij;θ)J(\theta)=\sum_{i=1}^{T} \log p\left(y_{i} | m_{i}^{j} ; \theta\right)其中j=argmaxjp(yimij;θ)1jqij^{*}=\arg \max _{j} p\left(y_{i} | m_{i}^{j} ; \theta\right) \quad 1 \leq j \leq q_{i}
算法步驟總結如下:
在這裏插入圖片描述

3. Neural Relation Extraction with Selective Attention over Instances(Lin/ACL2016)

在上一節的CNN基礎上引入句子級別的Attention機制。也是針對遠程監督過程會引入錯誤標籤的問題,指出在Zeng 2015年的CNN模型中只考慮了每一個bag中置信度最高的instance,這樣做會忽略bag中的其他句子丟失很多的信息。因此提出對一個bag中的所有句子經過CNN處理後再進行Attention操作分配權重,可以充分利用樣本信息。模型整體框架如下:

在這裏插入圖片描述
其中最底層的輸入xix_{i}是某一個bag中的句子,接着對每一個句子都做同樣的CNN操作(這一部分與前一節PCNN相同),最終得到每個句子的表示rir_{i}。然後爲了更好地利用bag內的句子信息,對所有的instance衡量對該bag對應的標籤的權重:
s=iαixis=\sum_{i} \alpha_{i} x_{i}其中alpha爲權重係數,文中給出兩種計算方式:

  • Average: s=1nxis=\sum \frac{1}{n} x_{i},直接做平均,錯誤樣本的噪聲很大;
  • Selective Attention: 就是一般的key-query-value的attention計算。ei=xiAre_{i}=\mathbf{x}_{i} \mathbf{A} \mathbf{r}αi=exp(ei)kexp(ek)\alpha_{i}=\frac{\exp \left(e_{i}\right)}{\sum_{k} \exp \left(e_{k}\right)}
    其中eie_{i}表示attention score,用於計算某個句子與該bag對應的relation之間的匹配程度。

在經過attention就得到了每個bag中所有句子的表示。最後輸出首先將這個向量與relation matrix做一個相似度計算後送入softmax歸一化成概率:o=Ms+d\mathbf{o}=\mathbf{M} \mathbf{s}+\mathbf{d} p(rS,θ)=exp(or)k=1nrexp(ok)p(r | S, \theta)=\frac{\exp \left(o_{r}\right)}{\sum_{k=1}^{n_{r}} \exp \left(o_{k}\right)} J(θ)=i=1slogp(riSi,θ)J(\theta)=\sum_{i=1}^{s} \log p\left(r_{i} | S_{i}, \theta\right)
【注意】 在模型的test階段,由於bag並沒有給出的標籤,因此在attention計算過程與train階段不一樣。處理方式爲:對每一個relation,都做一遍上述的Selective Attention操作得到每個relation的得分,最後預測的結果就是取max就好啦。

試驗分析

數據集選取的是NYT,評價指標使用P@N
在這裏插入圖片描述

CODE HERE


4. Relation Extraction with Multi-instance Multi-label Convolutional Neural Networks(Jiang/Coling 2016)

這篇文章主要是先分析了PCNN模型的缺陷,然後提出了幾點改進方案:

  • at-least-once assumption假設太強,僅僅選取每個bag中的一個句子會丟失很多信息;解決方案是對bag內所有的sentence之間做max-pooling操作,可以提取出instance之間的隱藏關聯;
  • single-label learning problem:在數據集中有大約18.3%的樣本包含多種relation信息,設計了一種多標籤損失函數,即使用sigmoid計算每一個類別的概率,然後判斷該bag是否可能包含該類別。

基於以上兩點提出了multi-instance multi-label convolutional neural network (MIMLCNN), 模型整體框架如下
在這裏插入圖片描述
從上圖可以看出,整個模型主要包括三塊:

Sentence-level Feature Extraction

目的就是將bag中的所有instance表示成向量形式,這裏採取的就是第2節的PCNN模型,一模一樣。

Cross-sentence Max-pooling

這一部分的設計就是爲了解決“at-least-one assumption”,文中提出另一種假設:

A relation holding between two entities can be either expressed explicitly or inferred
implicitly from all sentences that mention these two entities.

做法也很直觀,直接對所有instance的向量每一個維度取最大值:gi=max(pi(1),pi(2), ,pi(m))g_{i}=\max \left(p_{i}^{(1)}, p_{i}^{(2)}, \cdots, p_{i}^{(m)}\right)文中還提出可以使用average-pooling的方式,但是相比max-pooling,ave-pooling會增大錯誤標籤的噪音,效果不如max-pooling。

Multi-label Relation Modeling

上述過程得到的向量gg經過一個全連接層計算每一個relation的score:o=W1g+b1\mathbf{o}=\mathbf{W}_{1} \mathbf{g}+\mathbf{b}_{\mathbf{1}}由於是多個標籤預測,這裏不再採用softmax,而是對於每一個relation做sigmoid,如果結果超過某個閾值(這裏是0.5),則認爲該instance包含該種relation:p(iM,θ)=11+eoi,i={1,2, ,l}p(i | M, \theta)=\frac{1}{1+e^{-o_{i}}}, \quad i=\{1,2, \cdots, l\}接着設計了兩種不同的損失函數作了對比:sigmoid=i=1lyilog(pi)+(1yi)log(1pi)_{\text {sigmoid}}=-\sum_{i=1}^{l} y_{i} \log \left(p_{i}\right)+\left(1-y_{i}\right) \log \left(1-p_{i}\right)squared=i=1l(yipi)2_{\text {squared}}=\sum_{i=1}^{l}\left(y_{i}-p_{i}\right)^{2}

試驗分析

實驗數據集選取的是NYT10,評測標準選取了PR-曲線和P@N矩陣
在這裏插入圖片描述


5. Distant Supervision for Relation Extraction with Sentence-Level Attention and Entity Descriptions(Ji/AAAI2017)

論文的主打的主要有兩點:

  • 第一點依然是針對Zeng的文章中提出的“at-least-one assumption”提出改進方案,採取的措施是對句子級別進行attention操作;
  • 第二點是認爲在知識庫中對實體的描述也能反映很多的信息,建議將Entity Descriptions加入到模型中

模型的整體框架如下
在這裏插入圖片描述

APCNN Module

這一部分跟 Neural Relation Extraction with Selective Attention over Instances的工作非常像,唯一不同的地方在做attention時對query的選擇不同。【Selective Attention】選擇的是bag的真實標籤,這樣在訓練時是沒有問題的,不過在inference階段由於樣本bag沒有標籤,所以需要計算所有relation的得分選取最高的那一類,這樣的話再test過程的計算量會很大。本文【Sentence-level Attention】採用的則是受word embedding特性的啓發,認爲relation的表示可以通過兩個實體之間的運算得到:vrelation=e1e2\boldsymbol{v}_{\text {relation}}=e_{1}-e_{2}

Entity Descriptions

到目前爲止可以說沒什麼創新點,在這部分作者提出了將Entity Descriptions的信息融入模型,可以更好的幫助最後的relation判斷。其實現也很簡單,

  • 輸入爲entity的word embedding,通過一層簡單的CNN+max-pooling得到description的向量表示
  • 文中提出的一個約束是:儘可能使得前面得到的entity的word embedding 與 這裏得到的 entity 的 description embedding 接近,這樣的動機很簡單,就是將entity的描述信息融入到模型中,這部分的LOSS直接使用二範距離Le=eidi22L_e = \sum ||e_i - d_i||_2^2

Loss Function

APCNN階段的損失函數爲:minLA=i=1Nlogp(riBi,θ)\min \mathcal{L}_{A}=-\sum_{i=1}^{N} \log p\left(r_{i} | B_{i}, \theta\right)
Entity Dscriptions階段的損失函數爲:minLe=eidi22\min \mathcal L_e = \sum ||e_i - d_i||_2^2
所以最終整體的損失函數爲:minL=LA+λLe\min \mathcal{L}=\mathcal{L}_{A}+\lambda \mathcal{L}_{e}

試驗分析及小結

數據集和評價指標還是那些
在這裏插入圖片描述

  • 在attention過程對relation embedding的處理採用了TransE的思路,可以說非常具有說服力
  • 另外加入的實體描述建模也可以更有效地爲模型融入更多信息,同時還會加強entity向量表示的準確性。

以上~
2019.05.10

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章