預訓練
視覺化和理解 BERT 的有效性
Visualizing and Understanding the Effectiveness of BERT
論文連結:https://arxiv.org/abs/1908.05620
預訓練語言模型 BERT 等在很多 NLP 任務上取得了顯著提升,但大家對其有效性的原因尚未充分理解。本文透過視覺化模型微調過程的損失表面和最佳化軌跡來嘗試理解 BERT 的有效性,發現預訓練過程可以使模型在下游任務上達到一個較好的初始點,並且微調 BERT 所得到的模型有更強的泛化能力。
首先我們在不同任務上對比了微調 BERT 和從隨機初始化這兩種訓練方式,透過視覺化它們的一維和二維訓練損失表面,可以看出微調 BERT 相對於從隨機初始化有著更廣闊且更平坦的最佳化區域。
之後透過視覺化微調 BERT 和從隨機初始化的最佳化軌跡,可以看出微調 BERT 可以更直接地找到最佳化方向,並且最佳化路徑更加平緩,這使其可以更快收斂。另外,我們發現即使在小資料(如 MRPC)上對模型微調更多的輪數,最佳化軌跡顯示其並未發生明顯的過擬合現象。
此外,本文還視覺化了針對不同層的訓練損失表面,可以發現 BERT 較低層的損失表面有更廣闊的區域性最優區域。說明了 BERT 網路底層可遷移性更強,而高層則更多學習了和下游任務相關的知識。
文字生成
利用規則和預訓練網路進行文字正式性風格遷移
Harnessing Pre-Trained Neural Networks with Rules for Formality Style Transfer
論文連結:https://aka.ms/AA6h0mm
文字正式性(Formality)的研究對於廣泛的自然語言處理應用都有著重要的作用,例如輔助非母語者的寫作助手和兒童教育等。隨著深度學習技術在自然語言領域的不斷髮展,研究人員已經可以進行初步的非正式到正式文字的改寫。
本文從監督學習的角度對文字正式性改寫進行研究,主要關注由非正式文字到正式文字的改寫。傳統的基於監督學習的方法多從機器翻譯領域借鑑模型,例如直接使用 Seq2Seq 模型或 Transformer 模型基於平行語料進行訓練。研究人員的進一步研究表明使用經過規則處理的非正式文字與原始正式文字進行訓練可以得到更好的結果。我們發現引入規則的流水線式方法雖然有效降低了資料的複雜性,使模型能夠更容易地學習到一些複雜的模式,但由於規則自身的侷限性,難免引入一些噪聲。如圖5所示,R & B 作為一個實體,應該保持大寫。
我們希望能夠既引入規則的優點,也能剔除部分規則所帶來的噪聲。因此我們提出了三種利用原始非正式文字與基於規則的結果共同生成正式文字的方法,如圖6所示:Concatenate Fine-tuning 使用一個編碼器編碼拼接後的兩個輸入文字,並使用一個解碼器進行解碼;Decoder Ensemble 使用兩個編碼器和解碼器訓練兩個模型,並在推斷階段取兩個模型預測的機率分佈的平均值;Separate Encoding with Hierarchical Attention 使用兩個編碼器對兩個輸入文字分別編碼,使用一個解碼器結合 Hierarchical Attention 進行解碼。
本文采用了先進的預訓練語言模型——GPT2 來分別構建編碼器和解碼器。本文的編碼器-解碼器模型和 Transformer 的結構略有不同,如圖7所示,編碼器和解碼器都使用 GPT2 的 block 結構且不共享引數。
本文在 GYAFC 資料集上進行了實驗,在 F&R 和 E&M 兩個 domain 上的結果如表1和表2所示:
可以看到本文提出的 GPT-CAT(Concatenate Fine-tuning)方法在不同的場景下(domain 是否合併)都表現出了一致的最優結果,我們認為很可能是因為使用同一個編碼器進行編碼,使得兩個輸入文字在編碼階段得到了更多的互動,因此得到了更好的編碼表示。
開放域對話的無監督上下文改寫
Unsupervised Context Rewriting for Open Domain Conversation
論文連結:https://arxiv.org/abs/1910.08282
在聊天機器人中,多輪對話理解一直是一個非常困難的問題。目前,如果輸入是單輪對話,模型往往可以生成較好的回覆,然而如果輸入是多輪對話,機器所給出的回覆往往不盡如人意。為了解決這個問題,我們提出利用改寫的方法來幫助對上下文進行建模,將多輪對話輸入改寫為單輪對話輸入,如圖8所示。
在這裡,我們使用多輪對話中的上下文資訊來改寫最後一輪的句子(query),在壓縮了上下文資訊的同時,也保留了對 query 最有用的資訊。利用改寫機制的好處在於:(1)改寫後的句子具有很好的可解釋性;(2)改寫後的 query 不依賴於下游任務,因此可以分別提升檢索式對話模型和生成式對話模型的效果;(3)改寫後的 query 可以使用單輪對話的模型,該類模型的效果相對於傳統的多輪對話模型較好,且計算量較小,適合線上系統。
利用改寫機制需要解決以下問題:(1)如何從上下文中抽取出有用的資訊;(2)如何將該部分資訊注入 query 中。為解決以上問題,我們採用無監督的方法來構造被改寫的語料,首先使用 Pointwise-Mutually-Information(PMI)演算法根據 query 和 response(回覆的句子),抽取上下文中與其共現機率最大的若干詞作為關鍵資訊。再使用語言模型將這些資訊插入 query 中,計算不同插入位置的得分,進而得到被改寫的 query。但是在實際的應用場景中,我們無法得到 response 的資訊,所以我們採用一個基於複製網路(copy-net)的深度模型來學習這部分先驗知識,並使用這些構造好的資料作為訓練集,利用該訓練集進行多輪對話上下文改寫模型訓練(Context Rewriting Network)。
語義分析
利用多工學習解決基於大規模知識圖譜的對話問答
Multi-Task Learning for Conversational Question Answering over a Large-Scale Knowledge Base
論文連結: https://arxiv.org/abs/1910.05069
基於大規模知識圖譜的對話問答在智慧私人助理系統(例如Cortana、Google Now、Siri、Alexa等)中起重要作用。近年來基於神經網路的語義解析(Semantic Parsing)方法在這個領域中取得了很大的進展。這種方法透過神經網路將自然語言轉化為機器可執行的邏輯表示式(Logical Form),然後透過在知識圖譜上執行邏輯表示式來獲得最終答案。
然而,大部分已有的工作主要採用一種分步的方法來解決這個問題。一種典型的方法是,首先進行實體識別並連結到知識圖譜中(Entity detection and linking),然後對謂詞進行分類(Predicate classification), 最後生成機器可執行的邏輯表示式(Logical form generation)。這種方法的缺陷是受 error propagation 影響較大,並且由於各個模組獨立進行訓練,不能充分利用監督資訊。
為了解決這些問題,本文提出一種基於多工學習的方法。具體來說,我們將語義解析問題分解為兩個子問題:(1)實體識別;(2)帶實體位置的邏輯表示式生成。前者對帶有上下文的自然語言問句進行序列標註,每個 word 都被分類為{O, {B, I} X NT}, 其中 O 表示非 entity,B、I分別表示 entity 的開始和中間,NT 代表 entity 型別個數,透過這種帶有 entity 型別的實體識別,我們可以很好地解決實體連結(entity linking)過程中的歧義問題。後者透過 sequence to sequence with pointer network 來實現,將自然語言問句翻譯為帶實體位置的邏輯表示式,其中的實體由其在輸入中的位置來表示。最後透過多工學習同時對兩個子問題進行學習。
機器翻譯
大規模利用單語資料進行神經機器翻譯
Exploiting Monolingual Data at Scale for Neural Machine Translation
論文連結:https://aka.ms/AA6i2nr
在機器翻譯中,目標語言端的無標資料被廣泛的利用,例如反向翻譯技術(back-translation)。相比之下,源語言端的無標資料並沒有被廣泛利用。本文系統地研究瞭如何同時利用源語言和目標語言端的無標資料,並提出了一種有效的資料使用流程。我們在 WMT 英德互譯和 WMT 德法互譯上驗證了演算法的有效性,並取得了非常優越的效能。
假設我們關注的是 X 和 Y 語言之間的互譯。我們要在給定的有標雙語資料集 B 上訓練 X->Y 和 Y->X 兩個翻譯模型,分別記做 f 和 g。同時,我們需要準備兩份無標資料 Mx 和 My,分別對應 X 和 Y 兩種語言。我們提出的演算法包括三步:
(1)無標註資料翻譯:我們將 Mx 中的每一個句子用 f 翻譯到 Y 語言,對 My 中的句子用 g 翻譯到 X 語言,得到兩個新的資料集合 Bs={(x, f(x))|x∈Mx}, Bt={(g(y),y)|y∈My}
(2)有噪聲訓練:我們給資料集 B、Bs 和 Bt 的源語言端都加上噪聲,包括隨機將單詞替換為<UNK>,隨機丟棄和隨機打亂單詞。在有噪聲的資料集上,我們訓練對應的模型 f1:X->Y 和 g1:Y->X。在此階段,我們建議使用大規模無標資料。
(3)微調:得到 f1 和 g1 之後,我們用在不同雙語資料上訓練得到的新的雙語模型f' 和 g' 來重新翻譯 Mx 和 My 無標資料得到 Bs' 和 Bt',在這份資料上再將 f1 和 g1 微調成最終的模型。
我們的實驗結果如表7所示。在第二階段,我們選用了120M(兩邊分別60M)無標資料。第三階段,使用40M(兩邊分別20M)無標資料。具體結果如下:
在文章中,我們對不同的資料使用方案也進行了詳細的討論和對比。簡單來說,我們驗證了:(1)源端和目標端的無標資料都是有用的;(2)有噪聲訓練這一階段對提升最終效能有幫助;(3)只使用源端或者目標端無標資料,效果不會隨著資料的增加而增加。如果同時使用上述兩種資料,在我們的實驗中,實驗效果會隨著資料的增多而得到提升。
利用訓練好的自迴歸模型來最佳化非自迴歸模型
Hint-Based Training for Non-Autoregressive Machine Translation
基於語言聚類的多語言機器翻譯
Multilingual Neural Machine Translation with Language Clustering
論文連結:https://arxiv.org/pdf/1908.09324.pdf
多語言機器翻譯通常使用一個模型支援多種語言的翻譯,對於簡化模型訓練過程、降低線上維護成本、提升低資源以及零資源翻譯有著極其重要的作用。然而,無論是用一個翻譯模型支援世界上數千種語言,還是每種語言都用各自的翻譯模型,代價都非常高。所以,比較實用的做法是用少數幾個模型支援所有的語言。在資源(比如模型的數量)給定的情況下,如何決定哪些語言可以同時被一個模型支援,對於多語言機器翻譯非常重要。在這個工作中,我們提出的方法將語言聚類到不同的類別中,每個類別分別用一個多語言翻譯模型來支援。我們研究了兩種聚類方法:
(1)利用先驗知識來聚類;(2)利用語言向量來聚類。
在第一種基於先驗知識的聚類中,我們使用了語系(Language Family)的知識。一個語系代表一組有著共同祖先的相似語言組成的語言類別。我們選用了比較權威並且廣泛使用的 Ethnologue 語系分類法。在這個分類體系中,全球7472種語言被分類成152個語系。圖12展示了我們實驗中使用的23種語言所屬的語系分類。
首先看語言的聚類結果。基於先驗知識的聚類結果如上圖12所示。基於語言向量的聚類結果如圖14所示。我們有幾點發現:(1)語言向量能很好的捕獲語言的語系關係;(2)語言向量也能反映語言的形態學資訊;(3)語言向量還能捕獲語言的一些由於區域、文化以及歷史因素的影響形成的關係。具體分析可見論文。