【論文筆記】SelfORE: Self-supervised Relational Feature Learning for Open Relation

SelfORE: Self-supervised Relational Feature Learning for Open Relation

導讀:

4月6號掛在arXiv上,要投哪個會不用我多說了8。

閱讀原因:

方向match,掛出來了總得引他。

Abstract

OpenRE是開放場景下的關係抽取,目前的工作主要是用一些啓發式的方法去訓練監督分類器,或者設定一些假設上使用無監督的方法。本文提出一種自監督的OpenRE,使用預訓練語言模型抽取弱監督,自監督的信號,用於自適應聚類,並且在自監督過程中增加上下文特徵用於關係分類,三個數據集上的實驗證明了SelfORE的有效性和魯棒性。

Introduction

第一段介紹了RE是什麼
第二段介紹了標註數據繁瑣,Distant Supervision的提出和作用(這段的意義應該是爲強調自監督的有效性做一個鋪墊)
第三段說明了OpenRE的作用,Yao 認爲OpenRE是完全無監督的,Simom在無監督條件下訓練了關係抽取表達式,但仍然需要預先抽取一定數量的關係。(這段的意義是描述了現有的一些OpenRE的問題,需要預先準備一些 prototype的relation坐scheme
第四段,引出了自己的論文:

爲了進一步減輕手工標註
獲取高質量的監督

提出一種自監督框架:

  • 從數據中自己獲取監督
  • 提升特徵表徵
  • 進一步提高監督質量

以上三步是一個迭代式的過程。

提出的模型主要有三個模塊:

  1. Contextualized Relation Encoder
  2. Adaptive Clustering
  3. Relation Classification

簡單來說需要的模塊:

  • 一個encoder(深度學習方法,是個人那都是要的)
  • 一個聚類(OpenRE,是個人那還是要的)
  • 關係分類器,不算特別新穎,具體還要往下看看是怎麼一個分類形式。

看到這裏感覺有點Neural Snowball + Open RE那味
在這裏插入圖片描述
如圖1,
首先1用BERT坐entity pair去encode句子和entity,生成feature representation
然後2通過representation進行聚類。聚類的結果會生成假標籤
最後3讓關係分類器模塊去進行分類,輸入當然應該是BERT生成的特徵表徵了,標籤就是2中生成的假標籤。

分類器的誤差會幫助Encoder部分進行訓練,這樣會導致生成的representation更優秀,然後優化聚類結果,聚類結果重新再此再次生成假標籤,再優化。達到一個iterative的過程。

筆者:假不假標籤無所謂,能區分出他們之間的類別就行,畢竟OpenRE本身就沒有標籤的。但是聚類的結果作爲類別,那麼聚類的效果如何保證呢?聚類出來的結果完全按照語義空間中的相似度的話,那麼這樣的結果再作爲label,不會起到一個非常有效的監督吧,因爲本身就是通過BERT產生的特徵,然後利用特徵的距離度量出他們屬於哪些類別。個人感覺這樣沒有一個很強的有效的監督性,如果是我,應該會在聚類那個地方做一些處理,讓其對後續的結果產生影響,這樣纔能有效的起到訓練的作用。
目前還沒有發現讓人覺得特別合理的地方。下面的解釋應該會讓我眼前一亮。

Contribution:

  1. 開發SelfORE
  2. 使用預訓練語言模型去調整representation(其實講的還是SelfORE的內容
  3. 結果不錯

Proposed Model

BERT就不講了,自適應聚類這一塊,不像以往的傳統聚類會賦值一個hard label
(hard label就是多類別中,僅屬於某一個單類別
即使預測爲label1 概率0.7,label2概率0.3
按照hard label,則其屬於label1。
但是按照soft label,他應該是多個label單獨計算概率:
例如label1 概率0.7, label2 概率0.65 所以這個instance就屬於 label1也屬於label2概率超過0.5就賦值上去。
自適應聚類使用軟賦值,鼓勵高概率的賦值並且與類別數量無關。

(筆者:我不太明白他說的軟賦值有沒有什麼特殊的地方,但是按照與類別數量無關這句話來看,應該是我上面解釋的soft label賦值的方法。

2.1 Encoder

這塊還是BERT,暫時略過不表,在token的標註上做了一些非常常規的處理

2.2 Adaptive Clustering 自適應聚類

在這一處講述的和之前是一樣的。
具體內容包括:

    1. 將representation映射爲一個新的表徵(具體代碼表現應該就是用一些全連接)
    1. 學習一堆的聚類中心(注意這裏是學習出來的)
      (筆者:這個idea挺有道理的,之前我去思考這個的時候,是覺得這個中心爲其中句子向量的某種加權和,其實用個attn去做更好,因爲某些句子更標準之類的。)

上述的表徵和聚類中心的向量維度相同,上述全連接的初始化是用是預訓練auto encoder的參數筆者:預訓練是自己去訓練的
AE的訓練方式是使用的最小化重建loss,AE學習的就是分佈,因此會對其映射產生一定的有效性。(但是如何保證AE的輸入就是滿足某些分佈呢,應該與bert連接起來吧?

聚類的核心就是標準的K-means算法

使用自由度爲1的學生t分佈去進行相似度的度量。
具體公式爲:
qnk=(1+znμk2/α)α+12k(1+znμk2/α)α+12 q_{nk} = \frac{(1+||\textbf{z}_{n} - \mu_k||^2/\alpha)^{-\frac{\alpha+1}{2}}}{\sum_{k'}(1+||\textbf{z}_{n} - \mu_{k'}||^2/\alpha)^{-\frac{\alpha+1}{2}}}

其中μk\mu_k爲聚類中心,zn\textbf{z}_{n} 爲經過mapping的representation。

計算二者的距離平方,以其所爲參數通過學生t分佈。
筆者:公式下方的距離,難道不是與中心數量,聚類數量有關的嗎qnkq_{nk}可以理解爲第nn個sample屬於第kk個聚類的概率。這是soft的
實驗中自由度α\alpha設定爲1.

通過頻率normalize每個cluster作爲分佈的目標。

pnk=qnk2/fkkqnk2/fk p_{nk} = \frac{q_{nk}^2/f_k}{\sum_{k'}q_{n{k'}}^2/f_{k'}}
上述的兩個ppqq分佈,可以用於計算自適應聚類的loss,也就是LACL_{AC}爲KL散度的loss

筆者:這邊看上去非常的nb,其實和2016年ICML Unsupervised Deep Embedding for Clustering Analysis 這篇文章中DEC的特點也是一樣的。值得注意的是代碼也是從那邊抄的,nb

然後將最大概率的cluster,賦值一個樣例爲這個cluster的假label。

2.3 關係分類

使用假label作爲關係分類,cross entropy,沒什麼新穎的
loss記爲LRCL_{RC}

2.4 循環迭代優化

更新完了LRCL_{RC}, 用更新好了的encoder,再去編碼relation,循環的優化。停止的條件是:假label和分類預測的差距小於10
筆者:這挺正常的,甚至我覺得這個條件可能還會導致過擬合,上一輪分類的結果導致的假標籤居然和此時的一模一樣,只要label數據隨便標錯一個順序,都會導致誤差巨大無比的

實驗

做了NYT+FB, T-REx SPO, T-REx DS數據集上的信息。

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