自然語言十項全能:轉化為問答的多任務學習
來自專欄數據汪6 人贊了文章
大數據文摘出品
編譯:halcyon
NLP領域的十項全能演算法來了。
Salesforce最新論文提出了一個可處理多項自然語言處理的通用模型:decaNLP,處理機器翻譯、文本分類等NLP任務統統不在話下!
在大數據文摘微信公眾號後台回復「問答」可下載本論文~
以下是論文精華內容:
深度學習提升了許多單個自然語言處理任務的性能。但是,一般的NLP模型集中於單個度量、數據集和任務,因此不能形成典範。我們引進了自然語言十項全能(decaNLP)的概念,一個跨越10個任務的挑戰:問答,機器翻譯,總結,自然語言推理,情感分析,語義角色標註,關係抽取,目標驅動對話,語義解析,常識性代詞消解。
我們將所有的問題轉化為一段文本的問答。進一步的,我們提出了一個新的多任務問答網路(MQAN),它可以在沒有任何特定任務的模塊或參數的情況下,共同學習decaNLP中的所有任務。MQAN顯示了機器翻譯和命名實體識別(NER)的遷移學習的改進,情感分析和自然語言推理的領域適應,以及文本分類的零樣本能力。
我們證明了MQAN的多指針編解碼器是這個成功的關鍵,並且通過相反訓練策略(anti-curriculum training strategy)進一步提高了性能。儘管MQAN是為decaNLP設計的,但它也實現了在單任務設置中的WikiSQL語義解析任務的最新結果。我們還發布了獲取和處理數據,訓練和評估模型的代碼,以及重現了decaNLP的所有實驗。
代碼鏈接:
https://github.com/salesforce/decaNLP
介紹
我們介紹了decaNLP,以探索推廣到許多不同類型的NLP任務的模型。decaNLP鼓勵用單一模型同時優化十項任務:問答、機器翻譯、文檔總結、語義解析、情感分析、自然語言推理、語義角色標註、關係抽取、目標驅動對話、代詞消解。
MQAN是針對decaNLP設計的,它利用了一種新的雙關聯注意力和多指針發生器解碼器在decaNLP中對所有任務進行多任務處理。我們的研究結果表明,用正確的相反訓練策略對所有任務的MQAN進行聯合訓練,可以達到與10個獨立的MQANs單獨訓練相同的性能。
在decaNLP上接受過訓練的MQAN在機器翻譯和命名實體識別的遷移學習、情感分析和自然語言推理的領域適應以及文本分類的零樣本能力方面都有改進。雖然沒有為任何一個任務明確地設計,但事實證明,MQAN在單任務設置中也是一個強大的模型,在decaNLP的語義解析上實現了最先進的結果。
我們發布了代碼,用於獲取和預處理數據集、訓練和評估模型,以及通過基於decaScore的十項全能分數(decaScore)的排行榜跟蹤進度。我們希望這些資源的結合能夠促進多任務學習、遷移學習、通用嵌入和編碼器、架構搜索、零樣本學習、通用問答、元學習等NLP相關領域的研究。
任務和指標
decaNLP包含了10個公開的可獲得的數據集,示例被轉換為(問題、上下文、回答)三元組,如圖1所示。
圖1. decaNLP數據集的概覽:其中包含了每一個decaNLP任務的例子。它們展示了如何預先處理數據集,使其成為問答問題。紅色的回答詞是通過指向上下文生成的,綠色的是從問題中生成的,藍色的是輸出辭彙表上的分類器生成的。
問答(QA)。QA模型接收一個問題和一個上下文,其中包含輸出所需答案所需的信息。在這個任務中我們使用斯坦福問答數據集(SQuAD)。
上下文是從英語維基百科中摘取的段落,回答是從上下文中複製的單詞序列。SQuAD使用一種標準化的F1指標,剔除冠詞和標點符號。
機器翻譯。機器翻譯模型以源語言作為輸入文檔,輸出為翻譯好的目標語言。我們使用2016年為國際口語翻譯研討會(IWSLT)準備的英語到德語訓練數據。例子來自轉錄的TED演講,以對話的形式涵蓋了各種各樣的話題。我們在2013年和2014年的測試集上分別以語料級別的BLEU評分作為驗證集和測試集進行評估。
摘要。摘要模型接收一個文檔並輸出該文檔的摘要。關於摘要,最近最重要的進展是CNN/DailyMail(CNN/DM)語料庫轉化為一個摘要數據集。我們在decaNLP中包含這個數據集的非匿名版本。平均而言,這些示例包含了decaNLP中最長的文檔,並強迫模型通過生成新的抽象的單詞序列來平衡從上下文提取的內容。CNN/DM使用ROUGE-1、ROUGE-2和ROUGE-L分數。我們把這三個分數取平均,計算出一個整體的ROUGE分數。
自然語言推理。自然語言推理(NLI)模型接受兩個輸入句子:一個前提和一個假設。模型必須將兩者之間的推理關係歸類為包含關係、中立關係或矛盾關係。我們使用多流派的自然語言推理語料庫(MNLI),提供來自多個領域的訓練示例(轉錄語音、通俗小說、政府報告),以及來自可見和不可見領域的測試對。MNLI使用精確匹配(EM)得分。
情感分析。訓練情感分析模型的目的是,根據輸入的文本對文本表達的情感進行分類。斯坦福情感樹庫(SST),由一些帶有相應情緒(積極的,中性的,消極)的電影評論組成。我們使用未解析的二進位版本。SST也使用EM分數。
語義角色標註(SRL)。SRL模型被給定一個句子和謂詞(通常是一個動詞),然後必須確定「誰對誰做了什麼」、「什麼時候」、「在哪裡」。我們使用一個SRL數據集,將任務視為一種問答,也叫QA-SRL。這個數據集涵蓋了新聞和維基百科領域,但我們只使用後者,以確保decaNLP的所有數據都可以免費下載。我們用SQuAD使用的nF1指標來評估QA-SRL。
關係抽取。關係抽取系統接收到一段非結構化的文本以及要從該文本中提取的關係。在這種情況下,模型需要先識別實體間的語義關係,再判斷是不是屬於目標種類。與SRL一樣,我們使用一個數據集QA-ZRE,將關係映射到一組問題,這樣就可以將關係抽取處理為問答形式。
對數據集的評估是為了對新的關係進行零樣本性能的測量——數據集是被分割的,這樣在測試時看到的關係在訓練時是看不到的。這種零樣本關係的提取,把它轉化成問答,使它有可能推廣到新的關係。QA-ZRE使用一個預料級別的F1指標(cF1)來準確地解釋無法回答的問題。這個F1指標定義精度為真正的正計數除以系統返回非空答案的次數,召回率為真正的正計數除以有答案的實例數。
目標驅動對話。對話狀態跟蹤是目標驅動對話系統的重要組成部分。基於用戶的說話、已經採取的行動和會話歷史,對話狀態跟蹤器會跟蹤用戶對對話系統有哪些預定義目標,以及用戶在系統和用戶交互時發出哪些請求。
我們使用了WOZ餐廳預訂任務的數據集,它提供了一個預定義的食物、日期、時間、地址和其他信息,可以幫助代理商為客戶預訂。WOZ基於回合的對話狀態(dsEM)對客戶的目標進行評估。
語義解析。SQL查詢生成與語義解析相關。基於WikiSQL數據集的模型將自然語言問題轉化成結構化的SQL查詢,以便用戶可以使用自然語言與資料庫進行交互。WikiSQL通過邏輯形式精確匹配(lfEM)進行評估,以確保模型不會從錯誤生成的查詢中獲得正確的答案。
指代消解。我們的最後一個任務是基於Winograd模式,它要求代詞消解:「Joan made sure to thank Susan for the help she had [given/received]. Who had [given/received] help? Susan or Joan?"。我們從Winograd模式挑戰中的例子開始,並對它們進行了修改,以確保答案是來自上下文的單個單詞。這個修改後的Winograd模式挑戰(MWSC)確保了分數不會因上下文、問題和答案之間的措辭或不一致而被誇大或縮小。我們用EM值來評估。
十項全能分數(decaScore)。在decaNLP上競爭的模型將使用每個特定於任務的指標的相加組合進行評估。所有指標都在0到100之間,因此十項任務的decaScore自然會在0到1000之間。使用一個相加組合可以避免因衡量不同的指標而產生的問題。所有指標都不區分大小寫。
表1 decaNLP中公開可用的基準數據集以及用於decoSocre的評估指標。
多任務問答網路
因為每一項任務都被定義為問答並且共同訓練,所以我們稱我們的模型為多任務問答網路(MQAN)。每個示例由上下文、問題和回答組成,如圖1所示。
圖2. MQAN模型概覽:它輸入一個問題和上下文文檔,然後將它們用BiLSTM進行編碼,使用dual coattention對兩個序列的條件進行表示,用另兩個BiLSTMs壓縮所有的這些信息,用self-attention來收集這種長距離依賴,然後使用兩個BiLSTMs的問題和上下文環境進行最終的表示。多指針生成器解碼器使用對問題、上下文和先前輸出的詞次的關注來決定是從問題中複製、從上下文中複製還是從有限的辭彙表中生成。
在訓練過程中,MQAN將三個序列作為輸入:具有l個詞次的文本c,具有m個詞次的問題q,具有n個詞次的回答a。它們都用矩陣表示,矩陣的第i列與d_emb維的嵌入向量一致,作為序列中的第i個詞次:
編碼器將這些矩陣作為輸入,使用重複的、coattentive的和self-attentive層的深層堆棧來產生最終的表示。設計作為上下文和問題的C_fin和Q_fin,來捕捉局部和全局的相互依賴。
回答表示
在訓練過程中,解碼器開始把回答潛入向量投影到d維的空間中:
接下來是一個self-attentive層,它在編碼器中有一個相應的self-attentive層。因為它既沒有遞歸,又沒有卷積,我們給A_poj添加位置編碼PE,其中PE為:
多頭解碼機制
我們使用self-attentive,這樣解碼器就可以知道以前的輸出(或者在沒有先前輸出的情況下,可以使用一個特殊的初始化詞次),並且可以關註上下文來準備下一個輸出。
中間解碼器狀態
接下來,我們將使用標準的LSTM來獲取時間步t時的循環上下文狀態c_t。首先,讓LSTM通過使用先前的回答詞A_self和循環上下文狀態產生一個中間狀態h_t:
上下文和問題機制
這個中間狀態被用於獲得注意力權重
和
,以使解碼器集中於與時間步t有關的編碼信息。
循環上下文狀態
上下文表示與這些權重相結合,通過tanh激活的前饋網路輸入,形成重複的上下文狀態和問題狀態:
多指針生成器
我們的模型必須能夠生成不在上下文或問題中的詞次。我們讓它訪問v個額外的辭彙詞次。分別得到在上下文中、問題和這個外部辭彙表中詞次的分布:
這些分布通過將缺失的條目設置為0以使每個分布都在R_l+m+v中來擴展,以覆蓋上下文、問題和外部辭彙表中的詞次的聯合。兩個標量開關調節每個分布在決定最終輸出分布的重要性。
我們在整個時間步中使用一個詞次級別的負對數似然損失:
實驗和分析
基線和MQAN
表2 decaNLP基線的驗證指標:單任務和多任務實驗對不同模型和訓練策略的驗證結果。
在我們的框架中,訓練示例是(問題,上下文,回答)三元素。我們第一個基線是指針生成器S2S模型,S2S模型只接受一個輸入序列,因此我們將該模型的上下文和問題連接起來。
在表格2中,驗證指標顯示在SQuAD上表現得並不是很好,在WikiSQL上,它相比於之前的S2S基線包含了更高的分數,但是相比於MQAN(+Qptr)和其他基線則更低。
使用self-attentive編碼器和解碼器層擴展S2S模型(w/SAtt),增加了模型集成來自上下文和問題的信息的能力。這讓SQuAD上的表現性能提高了20個nF1,QA-SRL上的表現性能提高4個nF1,WikiSQL上的表現性能提高了12個LFEM。對於WikiSQL,這個模型在沒有使用結構化方法的情況下,幾乎達到了先前的最先進的驗證結果72.4%。(見表格中紅色箭頭標註)
接下來,我們將研究如何將上下文和問題分割為兩個輸入序列,並使用coattentive擴展S2S模型(+CAtt)。SQuAD和QA-SRL上的表現增加了5個nF1。不幸的是,這不能改進其他任務,並且會嚴重影響MNLI和MWSC上的性能。
對於這兩個任務,可以直接從問題中複製答案。由於兩個S2S基線都將問題連接到上下文,所以指針生成器機制能夠直接從問題中複製。當上下文和問題被分成兩個不同的輸入時,模型就失去了這種能力。
為了解決這個問題,我們在前面的基線上添加了一個問題指針(+QPtr),這提高了MNLI和MWSC在先前基線之上的性能。它還將陣容性能提高到75.5 nF1,這使它成為了在SQuAD數據集上訓練的最高效的問答模型。
最後一個模型在WikiSQL上達到了一個新的最先進的測試結果,達到了72.4%的lfEM和80.4%的資料庫執行精度,超過了之前最先進的71.7%和78%的水平。
在多任務設置中,我們看到了類似的結果,但我們也注意到一些額外的顯著特性。QA-ZRE的性能比最高的單任務模型提高了11個F1點,這支持了多任務學習可以更好地推廣零樣本學習的假設。
需要大量使用外部辭彙表的任務的性能從S2S基線下降了50%以上,直到問題指針添加到模型中。除了參與的上下文之外,這個問題指針還使用參與的問題,它允許來自問題的信息直接流到解碼器中。我們假設更直接地訪問這個問題使模型更容易決定何時生成輸出詞次比複製更合適。
圖3 對MQAN如何選擇輸出回答詞的分析。當p(generation)最高時,MQAN對外部辭彙的權重最大。當p(context)最高時,MQAN將最大的權重放在上下文上的指針分布上。當p(question)最高時,MQAN將最大的權重放在問題的指針分布上
分析
多指針生成器和和任務識別。在每個步驟中,MQAN在三個選項中進行選擇:從辭彙表生成、指向問題和指向上下文。雖然模型沒有接受過對這些決策進行明確監督的培訓,但它學會了在這三個選項之間進行切換。圖3顯示了最終模型選擇每個選項的頻率。
對於SQuAD、QA-SRL和WikiSQL,模型大部分是從上下文複製的。這很直觀,因為正確回答來自這些數據集的問題所需的所有詞次都包含在上下文中。這個模型通常也會複製CNN/DM的上下文,因為答案摘要主要是由上下文中的辭彙組成的,而很少有辭彙是在上下文之外產生的。
對於SST、MNLI和MWSC,模型更喜歡問題指針,因為問題包含可接受類的詞次。因為模型學慣用這種方法來使用問題指針,所以它可以做零樣本分類。對於IWSLT和WOZ,該模型更喜歡從辭彙表中生成,因為德語辭彙和對話狀態欄位很少出現在上下文中。該模型還避免了對QA-ZRE的複製。
對新任務的適應性。在decaNLP上訓練的MQAN學會了泛化,而不是局限於特定領域,同時也學習表示,使學習完全新的任務更容易。對於兩項新任務(英語對捷克語翻譯和命名實體識別),在decaNLP上完成的一個MQAN訓練需要更少的迭代,並且比從隨機初始化(圖4)獲得更好的最終性能(圖4)。
對文本分類的零樣本域適應性。因為MNLI包含在decaNLP中,所以它是能夠適應相關的SNLI。在decaNLP上對MQAN進行微調,達到了87%的精確匹配分數,這比目前最好的隨機初始化的訓練增加了2個點。更值得注意的是,在沒有對SNLI進行任何微調的情況下,在decaNLP上接受過訓練的MQAN仍然能夠獲得62%的精確匹配分數。
這些結果表明,在decaNLP上訓練的模型有潛力同時對多個任務的域外上下文和問題進行模擬推廣,甚至可以適應文本分類的不可見類。這種輸入和輸出空間中的零樣本域適應表明,decaNLP中的任務寬度鼓勵了泛化,超出了對單個任務的訓練所能達到的範圍。
圖4. 在decaNLP上預先訓練的MQAN在適應新環境時和學習新任務時優於隨機初始化。左:在一個新的語言對上訓練,英語-捷克語,右:在一個新任務-命名實體識別(NER)上訓練。
在大數據文摘微信公眾號後台回復「問答」可下載本論文~
推薦閱讀:
※如何使用手機遠程控制電腦?
※計算方法(數值分析)複習大綱(一)
※一個計科小白的每日編程打卡18.7.23
※Win7系統32位與64位的區別,該如何選擇?
※Z語言實現基本原理