<Reinforcement Learning for Relation Classification from Noisy Data>閱讀筆記
引言
關係分類(Relation classification)是指在文本中提取實體之間的語義信息,在NLP中是一個很重要的問題。目前的工作一般集中於利用監督學習的方法,需要高質量的標註數據。
人工標註數據需要耗費很大的人力物力,所以利用遠程監督(distant supervision)來獲取訓練數據非常流行。遠程監督方法認為若在某個知識庫里兩個實體間有某種關係,那麼非結構化文本里所有包含這兩個實體的的句子都會表示這種關係,這種方法可以高效自動標註數據,但會帶來比較嚴重的噪音問題,例如,如果Obama和United States在知識庫中的關係是 BornIn,那麼「Barack Obama is the 44th President of the United States.」這樣的句子也會被標註為BornIn關係。
為了解決標註噪音問題,之前的工作用multi-instance learning的思想來解決實例的噪音問題,它們的訓練和測試都是在bag level上進行的,這樣的方式有一定效果但會受到兩個限制:
- 不能在sentence-level上進行預測。
- 對所有句子都是錯誤的bag比較敏感。
為了解決這兩個問題,本文提出了一個由一個instance selector和relation classifier新型關係分類模型,其中instance selector用於從sentence bag中篩選高質量的sentence,然後relation classifier在sentence-level上進行預測。
強化學習Reinforcement Learning
這是強化學習的基本模型,在每一步t
- agent從environment獲取state
- agent根據獲取的state 按照policy function執行action
- agent從environment處獲取reward
- environment轉化到新的state
模型的目標就是選擇actions使最大化total future rewards,其中actions可以會有長期的影響而reward也可能是delayed reward。
policy是控制agent行動的function,它把state映射到action上,分為兩類
- deterministic policy ,在某個state下做出確定的action。
- stochastic policy ,在某個state下可能做出多種action(a或b),實際上是一個概率分布。
模型
模型結構如圖,左邊是基於強化學習的instance selector,右邊是經典的基於CNN的relation classifier。instance selector根據policy function對noisy data逐個進行篩選,對每個樣本都可以執行「選」或「不選」兩種action,篩選完畢之後會形成一個新的數據集cleaned data作為relation classifier的輸入,RC會評估這個數據集的好壞計算出reward返回給IS,並利用這個cleaned data更新自己的參數,再使用 policy gradient 來更新 policy function 的參數,這裡的 reward 採用的是數據集中所有樣本的平均 likelihood。
本文將關係分類問題分解成了兩個子問題:instance selection 和 relation classification。數據集X={( ),( ),....,( )},其中 是一個用實體對( )的句子,對應的帶有噪音的關係是 ,instance selection的目標就是篩選哪些句子是真的描述關係 因此可以被選入訓練集的。而relation classification的目標則是給定句子 和實體對 ,計算 。
Instance Selector
每個句子 都有一個對應的action (選或不選),state 由目前的句子 ,已選的句子{ }以及句子里包含的實體對 所表示,instance selector在state 下根據stochastic policy做出action。
對應強化學習模型,instance selector就是一個agent,它與由raw data以及relation classifier組成的environment進行交互,並在所有selection都完成後的terminal state獲取relation classifier返回的delayed reward,這就意味著instance selector每次都要篩選完整個數據集才能更新自己的policy function,這樣顯然效率太低。因此本文將數據集X分解成N個bags { },每完成一個bag的selection就計算一次reward,其中每個bag對應一個實體對以及相應的有噪音的關係。在所有 bag 訓練完以後,再用篩選出的cleansed dataset 來更新 Relation Classifier 的參數。
State
作者用一個實值向量 來表示當前state,這個向量編碼了以下信息:
- 從relation classifier的CNN的非線性層獲取的當前句子的向量表示(vector representation)。
- 所有已選句子的向量表示的均值。
- 從預訓練好的embedding table獲取的實體對的向量表示。
Action
作者用 來表示instance selector是否會選擇當前bag的第i個句子,其中policy function是
Reward
只有噹噹前bag處理完畢後才能獲取relation classifier反饋的delayed reward,因此只有在state 時reward才存在,因此reward的表達式為
其中 是已選句子的集合,也是當前B的子集, 則是當前bag 對應的關係, 是由relation classifier所計算的,若 ,則當前reward設置為所有句子的均值,這樣可以有效的排除全是噪音的bag。
Optimization
對於bag ,我們是要最大化其total reward的期望,因此目標函數為
其中 , ,其中 由於 完全由state 和action 決定,因此 。 是從state 開始所獲得的expected future total reward的value function。
因為只有在最後一步reward才不為0,所以從 到 所有的value function都一樣,即 ,所以我們可以用以下方式更新policy
Relation Classifier
relation classifier用了一個CNN來提取句子的語義關係,以instance selector輸出的cleansed data作為輸入並計算一個reward返回給instance selector讓它完善自己的policy function。CNN網路包括一個input layer,一個convolution layer,一個max pooling layer和一個非線性層。
本文的relation classifier的主要特點是在sentence-level上進行relation classification,其它relation classifier的輸入是一個sentence bag,而本文的輸入是一個sentence。
Input Layer
對於每個句子 ,作者用一列向量來表示 , 由word embedding和position embedding組成,
CNN
卷積操作作用於3個連續詞,共有230個卷積核,則卷積層的參數為 輸出 。
其中 是全連接層的參數, 是總的關係數,並且
Loss Function
交叉熵函數,沒啥好講的
Model Training
本文用了在強化學習中非常熱門的預訓練法來訓練模型,即先在整個數據集上預訓練relation classifier的CNN Model,再固定CNN Model的參數來預訓練instance selector,最後再一起訓練。為了讓網路參數更新更加穩定,本文還利用了目標網路(target network)思想。
Sentence-Level Relation Classification
本文採用了三種state-of-the-art模型來作為對比:
- CNN是個sentence-level模型,它不考慮噪音問題。
- CNN+Max是個bag-level模型,它會選取每個bag中最正確的句子。
- CNN+ATT是個bag-level模型,它對bag中的句子採用sentence-level attention機制,以此來減小noise的權重。
結果表明:
- CNN+RL的性能強於CNN,證明了去除噪音的效果。
- sentence-level models的性能強於bag-level models,證明了sentence-level prediction的效果。
Instance Selection
Relation classification on selected data
本文分別在原始數據集和經過instance selector篩選過的數據集上訓練CNN和CNN+ATT模型,並用Mintz 2009提出的held-out evaluation對模型進行評估
可以看出篩選過的數據集可以訓練出更好的模型。
Accuracy of instance selection decision
作者從訓練集里抽取了300個句子作為instance selector的輸入,instance selector選擇了64個句子,其中45個是正確的,拒絕了236個句子,其中177個是噪音,因此準確率為
Different instance selection strategies
為了證明強化學習框架的必要性,本文比較了強化學習和greedy selection兩種方法
Noisy bag filtering
最後本文證明了這個模型篩選noisy bag的能力,作者隨機選擇了100個被篩掉的bag,發現86個bag全是噪音。
結論
- 應用強化學習框架
- sentence-level prediction
推薦閱讀:
※最酷的深度學習聊天機器人資源集合
※決策樹與隨機森林
※Hulu機器學習問題與解答系列 | 第七彈:非監督學習演算法與評估
※Andrew Ng機器學習week 2(Linear Regression)編程作業詳解
※「機器學習之父」Michael I. Jordan:人工智慧——一場尚未發生的革命