AAAI 2020論文解讀:關注實體以更好地理解文本
- 2019 年 11 月 26 日
- 筆記

作者 | 梁晨 編輯 | 唐里

下面要介紹的論文選自AAAI 2020,題目為:「Attendingto Entities for Better Text Understanding」,axriv地址為:https://arxiv.org/abs/1911.04361。
關注實體以更好理解文本
摘要:NLP最新進展是基於Transformer的大規模預訓練語言模型(GPT,BERT,XLNet等)的開發,並且該模型在一系列任務中取得了最佳的結果。這清楚的體現了當足夠多的層與大量的預訓練數據配對時self-attention堆疊結構的強大功能。然而,在需要處理複雜且遠距離推理任務時,表面層級的內容是往往不夠的,預訓練模型與人類表現之間仍然存在很大差距。Strubell等人最近表明,通過監督的self-attention可以將句法的結構知識注入模型。我們認為將語義知識類似的注入到現有模型中,將會提高模型在此類複雜問題上的表現。在LAMBADA任務上,我們發現從零開始訓練並同時作為self-attention的輔助監督的模型優於最大的GPT-2模型。與GPT-2相比,該模型包含的參數很小。我們還對模型架構和監督設置的不同變體進行了全面分析,為以後將類似技術應用於其他問題提供了建議。
1.相關介紹
什麼時候才能明確考慮語言結構有助於NLP任務的執行?
諸如ELMo,GPT,BERT和XLNet之類的大規模預訓練模型最近在各種任務上都取得了最新的成果。這些模型大多基於Transformer中的self-attention結構,沒有經過明確的經過語言結構的訓練,但是無論如何,它們已經顯示出可以編碼一些語言知識,特別是與語法結構相關的知識。
但是,在某些需要複雜且遠距離推理任務,包括需要更廣泛的論述、共指解析或者識別有效推理的任務時,預訓練模型與人類表現之間仍然存在較大差距。特別是對於基於語言結構的顯式信息是否有用,應該如何注入語言結構,是否對現有的語言模型有幫助這樣的任務,仍然是一個很有意思的問題。
Strubell等人研究了如何通過self-attention權重的監督將語法知識注入Transformer模型。有趣的是,他們將ELMo嵌入應用於語義角色標註,比使用嵌入但沒有監督self-attention的基準有所提高。
在本文中,我們考慮了一項需要遠距離知識的任務,即LAMBADA任務。LAMBADA是一種針對敘述文本段落的語言建模任務,在給定幾個句子的較多上下文時,對於人類來說很容易解決,但在僅給出一個句子的情況下,人類是很難解決的。在最初引入LAMBADA的論文中,Paperno等人的模型準確性僅為7.3%。較新的模型(GPT-2)提高到63.24%,而人類性能超過80%。因此,在LAMBADA數據集上預訓練模型與人類性能之間仍存在較大差距。
我們實驗中與Strubell等類似的方式注入語言知識,在現有的非Transformer模型上添加self-attention,以提高此複雜任務的性能。由於LAMBADA專註於敘事文本,因此我們假設有關段落中提到的實體的語義知識對於解決任務是非常有用的(比如在圖一中,知道「you」代表「Jon」,「he」代表「Tony」對做出正確的預測是很重要的)。我們將實體知識描述為關於段落中共指鏈的知識。我們發現,基於BIDAF的模型經過共指作為輔助監督訓練,僅使用最佳模型(GPT-2)的參數的一小部分,即可實現最佳的性能。我們將進一步詳細分析結果,表明輔助監督可以使模型更好地捕獲文本中的共指信息。為了提供有關如何將類似技術應用於其他問題的一些見解,我們嘗試使用不同的模型變體來測試將監督插入系統的最佳位置,並且我們還測試將不同類型的語言知識作為監督。
2.背景及相關工作
2.1預訓練模型
預訓練模型在為下游任務提供上下文嵌入方面取得了飛速的發展,在諸如word2vec或Glove之類的傳統固定矢量詞嵌入上建立了新的技術水平。Peters等人首次引入了ELMo,這是一種在1B Word Benchmark上進行了預訓練的雙向LSTM語言模型,當時在許多任務上包括閱讀理解,語義角色標註,共指解析以及許多其他任務上都達到了最佳效果。
2.2預訓練模型中的語言結構
隨着NLP中Transformer的日益流行,後來的工作重點轉移到了預訓練的Transformer模型上。Radford等人引入了GPT,通過在BooksCorpus上預培訓12層transformer模型作為生成語言模型。在所研究的12項任務中,有9項任務GPT的表現優於以往的技術。BERT通過允許雙向self-attention與新的「掩蓋語言模型」預訓練目標來增強GPT模型,並取得了比GPT更好的結果。GPT-2直接擴展GPT,具有10倍更大的預訓練語料庫和更複雜的模型體系結構(多達15億參數),並在許多語言建模任務上設置了新的技術狀態。通過引入新的預訓練和優化策略,XLNet和RoBERTa模型比BERT有了進一步改善。
預訓練模型中的語言結構前面提到的預訓練模型沒有考慮任何語言結構,因為預訓練目標是預測下一個隨機掩蓋的單詞或句子。儘管這些經過預訓練的模型在許多任務上都取得了最新的成果,但在很大程度上尚不清楚語言結構的隱式知識(例如句法結構或共指)在多大程度上改進這些任務。Tenney等人設計了一系列探測任務,以測試從ELMo/GPT/BERT獲得的上下文表示在某些核心NLP pipeline上的表現如何,並發現上下文嵌入在語法任務(例如部分詞性標記和解析)上有很大的改進,但在語義任務(例如共指)上則沒有那麼多進步。Strubell等人最近通過將語法知識注入Transformer模型,在語義角色標註方面取得了最新的成果。在他們的LISA模型中,一個self-attention被引導通過輔助監督信號來學習依賴關係,該輔助信號鼓勵每個標註只關注其父項語法。他們還表明,這種語法的自注意力可以與ELMo嵌入結合使用,從而在僅具有ELMo和自注意力但沒有輔助監督的情況下進一步提高基線的性能。本文旨在研究語義結構的語言知識能否以類似的方式注入。

圖1
2.3 LAMBADA 任務
Paperno等人引入了LAMBADA數據集,這是一種經過特殊設計的語言建模任務,其中每個數據點都是由上下文(平均4到5個句子)和目標句子組成的段落,任務是預測目標句子的最後一個單詞。數據來源於書籍語料庫,並被人工主題過濾,這樣當提供整個段落時,人類很容易猜出目標單詞,但僅給出目標句子則無法猜出。示例如圖1所示。
Paperno等人。還記錄了有關該任務的一些標準語言模型的結果,這些結果都非常低,沒有一個達到1%的準確率,而以從段落中選擇隨機大寫單詞為基準,得出的準確度僅為7.3%,體現了該項任務的難度。
從那時起Chu等人建議將LAMBADA視為閱讀理解,句子作為上下文,以目標句子不包含最後一個單詞作為查詢。然後要求模型從上下文中選擇一個單詞作為答案。儘管這種設置下模型在有19%的目標詞不在上下文中的測試用例中肯定會錯誤,但這樣做仍然大大提高了性能,使得準確率達到了49%。Dhingra等人通過結合Gated-AttentionReader,將準確率提高至55.69%,Hoang、Wiseman和Rush將Attention-SumReader與多任務目標相結合,跟蹤上下文中的實體,從而結果進一步提高到59.23%。這兩個實驗都證明了在任務中使用共指的有效性。
在將Transformer模型應用於任務中也做了一些努力。Dehghani等人使用Transformer其準確率達到56.25%。最近,Radford等人報告中使用GPT-2模型(15億個參數)將準確率提高到了63.24%,為目前的最高水平。儘管如此,它仍然與Chu等人估計的86%的人類表現相差甚遠。
3.方法
3.1任務
我們採用與LAMBADA上大多數工作相同的設置,即將任務視為閱讀理解。形式上,我們將上下文語句中的所有標記連接起來以獲得上下文輸入

。我們將目標句子中除最後一個單詞以外的所有單詞表示為查詢輸入

,a表示目標句子中最後一個單詞。
該模型計算出上下文中每個單詞的正確答案的概率

。因為a可能在上下文中多次出現,所以在訓練時,我們對所有正確標記的概率求和,並將損失計算為求和概率的負對數似然:

在實驗中使用pointer-sum機制來預測上下文中所有不同單詞類型中總概率最高的單詞類型。
3.2模型
本文旨在測試語義結構的語言知識是否可以通過監督下的self-attention注入到現有模型中,以及該模型在LAMBADA任務上的性能是否可以與大規模預訓練模型(如GPT-2)相匹配。
如第2節所述,在先前的工作中已經測試了一系列不同的閱讀理解模型,這些模型在該任務上均有相當強的表現;因此我們決定從傳統的閱讀理解模型入手,並將其融合到一個更簡單,更淺顯的self-attention中。選擇另一個廣泛使用的閱讀理解模型BiDAF模型作為出發點。BiDAF在許多閱讀理解任務基線中一直優於上述模型。

圖2
3.2.1 BIDAF基線
如圖2a所示,原始的BIDAF模型主要包括以下結構:
1.嵌入層:通過Glove嵌入和Character-CNN嵌入的串聯表示上下文和查詢中的每個標記。
2.上下文層:使用雙向LSTM編碼器對上下文和查詢序列進行編碼。
3.雙向注意層:計算query-to-context和context-to-query兩個方向的的attention,然後將它們用於合併查詢和上下文表示,獲取每個上下文單詞的query-aware表示。
4.建模層:使用另一個雙向LSTM編碼對query-aware的上下文表示進行編碼,以捕獲以查詢為條件的上下文詞之間的交互信息。
5.輸出層:通過前饋層,softmax層,預測每個上下文詞是正確答案的概率。
同時使用LSTM替換GRUs,添加了一個規範化層,我們的基線模型基本上與原始BIDAF相同。
3.2.2 帶有Self-Attention的BiDAF
為了通過監督注意力將語義知識注入模型,我們需要將堆疊的多頭注意力編碼融合到BIDAF模型中。直觀地講,self-attention編碼器的適用於兩個選項:
a)使用編碼器替換上下文層,如圖2b所示。
這是受到在許多NLP問題中使用self-attention編碼器取代傳統的基於RNN的編碼器的趨勢的啟發。另外,使用BERT的常見做法是,首先用BERT對原始輸入進行編碼,然後將輸出傳遞到更高級別的任務特定層,這與我們在此處所做的類似。我們將此變體命名為BIDAF-SA-EARLY。
b)在雙向注意層之後添加編碼器,如圖2c所示。
這受BIDAF++模型的啟發,在雙向注意層之後添加了一個標準的self-attention層,以幫助對多個段落進行推理。在這裡,我們使用多頭self-attention,因為在僅具有一個注意頭的注意層上應用輔助監督導致在初步實驗中表現不佳。我們將此變體命名為BIDAF-SA-LATE。
我們還將探索結合了這兩種選擇的另一個變體,稱為BIDAF-SA-BOTH模型。
3.3 self-Attention的輔助監督
與Strubell等人類似。我們希望在self-attention編碼器上應用輔助監督,以指導模型學習特定的語言結構。我們的模型接收上下文以及查詢輸入,即文章段落與目標句子去掉最後一個單詞。我們專註於研究上下文輸入的輔助監督,因為在上下文輸入中平均有4到5個句子,應該比查詢輸入這一個句子有更豐富的語言結構。為了檢查哪種語言結構對該問題有益,我們嘗試了三種類型的監督信號:

圖3
DEPPARSE:這類似於Strubell等人使用的輔助監督。只是我們有多個句子而不僅僅是一個句子。如果使用這種語法監督來訓練注意頭,我們會通過句子邊界來約束self-attentio窗口,即每個標記只能關注同一句子中的其他標記,從而使模型更容易接近目標self-attention權重。
CoreferenceSupervision:給定上下文中的共指鏈列表(每個共指鏈包含一組對同一實體的引用),我們通過將相同共指中每對引用頭之間的權重設置為1來構造目標self-attention權重,其餘的則為0,如圖3b中間一欄所示。我們將其命名為COREFALL。
我們還測試了共指監督的其他變體,即引導每個引用的僅關注最近一次引用或緊隨其後的引用。我們將這兩個變體分別稱為COREFPREV和COREFNEXT。
NarrativeSupervision:由於LAMBADA數據集是根據敘事小說集構建的,因此我們敘事假設結構(即事件的順序及其參與者)對於預測缺失的單詞可能也很重要。單個事件的謂詞和參數之間的交互在很大程度上由上述語法監控捕獲。因此,我們將依賴關係解析和共指鏈相結合,以構建另一種反映高級敘事知識的self-attention目標,如圖3b的右列所示:對於每個事件參數a,我們在a和所有與a有共同引用的論據的謂詞之間的權重加上1。我們將這種監督敘述命名為NARRATIVE。
注意,雖然需要一些額外的信息(即依賴性解析和關聯引用鏈,如圖3a所示)來構造輔助監督信號,但是我們不依賴於訓練集或測試集上的任何評註。所有的信息都可以從運行現有的NLP工具獲得。我們將在第4節中詳細討論預處理步驟。
如果將任何輔助監督應用於self-attention頭,則我們根據監督矩陣

和attention權重

計算出損失:

其中k是S中的行數,因此行中至少有一個非零元素。為了說明這一點,對於每一個至少有一個監督目標的標記,我們計算其所有監督目標的負對數似然損失,然後計算其平均值。不管是否應用了輔助監督,該模型以end-to-end的方式進行訓練。對於與輔助監督s1,s2,…相結合的模型,優化的總損失是:

其中λ是在最終預測損失和輔助損失之間進行平衡的超參數。
4.實驗結果
4.1數據集和預處理
引入LAMBADA數據集時,Paperno等人將語料庫隨機分為2個部分,僅對下半部分使用人工過濾過程來創建開發/測試集,而將上半部分的原始數據保留為訓練集。通過Chu等人介紹的閱讀理解設置。他們還通過要求目標句子中的最後一個詞必須存在於上下文中,從原始數據中構造了一個約160萬個實例的新訓練集。後續工作中Dhingra等人通過刪除目標詞為停用詞的所有實例進一步過濾產生了新訓練集,其中大約有70萬個實例。我們在這裡遵循相同的設置,總結如表1所示。
表1

正如第3節所述,我們還需要從數據中得到依賴關係樹和共指鏈,以便構造輔助監督的目標attention權重。我們使用了斯坦福CoreNLP工具包中的神經依賴性解析器和統計共指系統對整個數據集進行預處理。將在第5節中進一步討論關於預處理的可替代選擇。
4.2實驗細節
我們構建模型並使用AllenNLP進行所有實驗。對於基線BIDAF模型,我們主要遵循原始模型的超參數,我們對模型進行了10個epochs的訓練,並在驗證集精度連續兩個epoch都沒有提高的情況下早停。使用驗證集準確性來選擇最佳epoch,並對測試集進行評估。
對於BIDAFSA-*變體中的多頭注意編碼器,我們在每層使用4個注意頭。在BIDAF-SA-EARLY中,我們使用了4層堆棧式self-attention編碼器,初步實驗表明,僅使用1層或2層使得性能嚴重下降,而使用超過4層對結果沒有顯著改善。對於BIDAF-SA-LATE,我們只添加了1個多頭self-attention層,同樣顯示使用兩個或更多層沒有進一步的提高結果。在一些實驗中,我們還嘗試用預先訓練好的ELMo替換嵌入層。
我們發現,模型性能對初始的隨機狀態非常敏感,這可能是因為訓練集和開發/測試集之間存在較大的統計差異。我們在復現文獻中的現有模型中時觀察到了類似的效果。因此,對於每個模型變體,我們用不同的隨機種子訓練4次,並記錄這4個模型的平均和最佳性能。
4.3 實驗結果
將我們的方法與之前兩種沒有使用大規模預訓練語言以及GPT-2的最佳模型在LAMBADA上進行了比較。需要注意的是,我們不與其他預訓練LMs進行比較,是因為BERT以及XLNet都將書籍語料庫作為預訓練數據。由於LAMBADA任務是由書籍語料庫構建的,BERT等模型在訓練前已經使用了所有的數據實例,因此這些模型在任務上獲得了不公平的優勢。
我們在表2中列出主要結果。我們首先關注BIDAF-SA-EARLY模型和COREFALL監督,因為從直覺上講,關於段落中的共指鏈知識可能是解決任務的最有利因素。將在第5節中討論其他變體的結果。
可以看出BIDAF基線已經表現出與GPT-2之前的最佳結果相似的性能。添加COREFALL輔助監督可以不斷提高準確性,但與不使用ELMo嵌入相比,使用ELMo嵌入的COREFALL得到了更大的改進。這些結果證實了除了最近的預訓練模型之外,通過監督的self-attention來注入語義知識同樣對結果有所幫助。同樣,ELMo本身僅帶來不足1個點的改進而沒有COREFALL的事實也強調了這項任務的難度。在藉助ELMo嵌入和COREFALL監督下,我們的平均準確度達到63.71%(最佳運行達到64.62%),優於最大的GPT-2模型。考慮到我們的模型僅包含260萬個可調參數,遠遠小於GPT-2(15億)的參數,這是相當令人驚訝的。
表2

5.分析
在本節中,我們旨在理解共值監督為什麼有幫助,什麼是應用輔助監督的最佳使用方式,以及不同類型的監督信號該如何比較。
5.1 預處理質量會影響性能嗎?
我們從中構造監督信號的斯坦福CoreNLP統計共值系統並不是當前基於基準的最佳共值模型。我們還試驗了更新的end-to-end神經共指模型該模型具有更高的基準評分,作為BIDAF-SA-EARLY+COREFALL模型的監督信號,令人驚訝的是,這產生了較差的性能(平均為61.13%,而斯坦福大學的結果為61.51%)。
我們在某些數據點上手動檢查了兩個共指系統的輸出,發現神經共指中經常產生錯誤的輸出,這可能是因為它已針對新聞中心訓練數據OntoNotes數據集進行了優化而LAMBADA由敘述文本組成。圖4顯示了一個示例,其中來自神經系統的共指鏈導致錯誤的預測。此示例與圖3a中的示例相同,該示例顯示了斯坦福系統的共指輸出。在此示例中,很難在不知道「you「指「Jon」而「he」指「Tony」的情況下預測出正確的答案,斯坦福系統都正確地預測了這兩種情況。這表明更好的共值信息可能會使得任務獲得更好的結果。鑒於最近Joshi等人進一步提高了共值性能,我們將在未來的工作中討論共值信息對結果的提升。
表3


圖4
5.2 COREFALL真的學到了共指知識嗎?
我們想知道COREFALL的改進是因為監督實際上將使模型更好地學習共指結構,還是由於一些未知的混雜因素。Chu等人手動分析了LAMBADA DEV數據集中的100個隨機實例,以確定人做出正確預測所需的推理類型,並發現100個實例中有21個需要共指解析。我們在這21個實例上測試我們的模型。為了獲得更大的實例集,我們還比較了DEV集中的目標詞是名詞的與目標詞是代詞的實例,同時我們將目標詞是PERSON但不是命名實體的情況與其進行比較。(最常見的命名實體類型是PERSON,其他類型很少出現,因此我們更加關注PERSON)。
表4

表3中的結果表明,COREFALL監督不僅可以提高手動分類需要共指的21個實例的準確性,而且與"Noun"和"Not NE"對應的對應部分相比,它極大地提高了"Pronoun"和"PERSON"子集的性能。雖然這不是直接證據,但直觀地支持輔助監督確實使模型能夠更好地捕獲共指信息的說法,這尤其有助於對代詞和命名實體進行推理。
5.3 應該在哪裡實施監督?
在模型的早期階段(即BIDAF-SAEARLY模型中的上下文層)或後期(即BIDAF-SA-LATE模型中的雙向attention層之後)應用輔助監督是否更有利?此外,為了消除結構變化的影響,我們在不同階段添加監督的情況下嘗試使用BIDAF-SA-BOTH模型。
表4顯示,在沒有監督的情況下,BIDAF-SA-EARLY與BIDAF-SA-LATE相比,EARLY有着更好的結果。儘管在BIDAF-SA-LATE上增加監督可以帶來較大的相對改進,但在早期階段應用監督仍然比在後期階段進行監督具有更好的性能,這也得到了BIDAF-SA-BOTH上得到了確認。這並不奇怪,因為與上下文輸入有關的共指信息有助於獲得更好的query-aware表示。
5.4 其他類型的監督也有用嗎?
到目前為止,我們專註於COREFALL監督。在表5中,我們記錄了應用其他類型的輔助監督的結果。除NAR-RATIVE之外,所有其他類型的輔助監督都比CORE-FALL表現差。如預期的那樣,因為LAMBADA任務是專門為要求更廣泛的語境而設計的,所以句內句法結構(DEPPARSE)並沒有發揮出作用。共指信息的COREFPREV和COREFNEXT變體僅提供對同一共指鏈中緊接在前或在後引用的指導。當長共指鏈上的推理對做出預測至關重要時,此類知識是往往不足的。
表5

因為NARRATIVE信號是從依賴解析和共指鏈派生,所以NARRATIVE監督的性能比COREFALL略好。從理論上講,這種類型的監管應該從COREFALL和DEPPARSE兩者中獲取有用的語言結構,COREFALL對性能的提高做出了主要貢獻,而DEPPARSE則可以提供一些額外的動力。我們通過計算DEV集上兩個模型的預測之間的一致性驗證了假設,平均而言,僅使用COREFALL和僅使用NARRATIVE結果的在一致性為89.3%,從而確認在NARRATIVE監督下,主要是由於共指提高了最終的成績。
6.總結
在本文中,我們研究了通過監督的self-attention將語義知識注入現有模型(BIDAF)是否可以在需要複雜和遠距離推理的任務上實現更好的性能。在LAMBADA數據集上,當前GPT-2的最佳結果仍遠低於人工結果,我們證明了以共指作為輔助監督訓練的BIDAF模型僅僅只需要GPT-2中很小一部分參數就能達到最新的水平,同時進一步嘗試模型變體,以測試在BIDAF模型中最適合在何處添加帶有監督的self-attention層,以及如何比較作為監督信號的不同類型的語言知識。
本文邁出了第一步,即顯式地使用結構語義知識來告知self-attention,從而引出了許多有趣的未來方向。首先,我們要測試其他類型的語言知識,例如語義角色標註或AMR解析。我們還希望了解如何將當前方法應用於其他任務,例如新的QUOREF數據集,該數據集需要解決實體間的共同引用才能回答問題。在本文中,我們從現有的NLP pipeline工具中提取監督信息,而這些信息實際上是非常嘈雜的(尤其是在共指時)。當預訓練語言模型時,在遠距離的監督下(例如,在維基百科文檔中,具有指向同一維基百科頁面鏈接的標記應被視為共指)觀察這樣的語義結構是否可以聯合學習是很有意思的。