首頁>技術>

自然語言處理領域有很多序列對序列任務,比如我們常見的機器翻譯、語義解析、文字摘要等。目前最基本的解決方案是收集大量成對的資料,然後訓練一個編碼器解碼器架構的模型。但是近兩年來,研究者們注意到一個非常嚴重的問題,就是這樣訓練出的序列對序列網路不具備組合泛化能力。本文介紹北大碩士郭一諾在這方面的兩篇工作:第一篇是從方法的角度,提出層次化偏序解碼模型,來提高語言的組合泛化能力;第二篇是從資料的角度,探究單語言資料能給模型的組合泛化能力帶來怎樣的幫助。

郭一諾,北京大學計算語言所碩士三年級,主要關注語言解析,自然語言生成,組合泛化等話題。目前以第一作者的身份在AAAI, NeurIPS等會議發表多篇論文。

一、背景

什麼是組合泛化能力?

從一個簡單的序列對序列任務看起:把一個自然語言句子轉換成動作序列,比如輸入run twice,希望轉換出RUN RUN這樣的動作序列。輸入jump and walk,輸出JUMP WALK序列。給定前面兩個例子,人類很容易推理出對應的動作序列JUMP JUMP RUN,但現有的序列對序列模型很難做到。

這個例子背後的本質是現有模型缺乏組合泛化能力。如果訓練資料中存在a和b這兩個原子,但沒出現它們的組合,那麼遇到a和b組合的情況,人類也能給出答案。組合泛化能力是人類智慧非常基礎的能力,即喬姆斯基說的有限資源的無窮利用。但是現有模型不具備這種能力,這就帶來了極大的困擾,也是近幾年來備受關注的研究點。

衡量模型的組合泛化能力

為了衡量模型的組合泛化能力,一些研究工作也隨之出現。研究員們提出讓訓練集和測試集來自不同的分佈,以這此劃分資料。比如有個問題模板是who do something,在訓練資料中和direct之類的動詞同時出現,但在測試過程中問題模板只和produce之類的動詞出現,這就保證了測試集和訓練集包含相同的原子,但組合方式的分佈完全不同。

我們使用了2020年 Google提出的CFQ資料集,這是一個大規模的真實的自然語言問答資料集,是用來衡量組合泛化能力的benchmark。具體的資料形式是將輸入的自然語言轉化成spark查詢語句,spark是Free base知識圖譜上的結構化查詢語句。下圖是一個隨機劃分的資料集,它能達到約98%的準確率。

但是當我們按照組合性的準則來劃分我們的資料集,它的準確率就只掉到了17%、18%左右。因此,現有的語義解析任務用到的模型並不具有組合泛化能力的,或者說具有較弱的組合能力。

二、兩篇研究工作

今天介紹我們在這方面的兩篇工作:第一篇是從方法的角度,提出層次化偏序解碼模型;第二篇是從資料的角度,探究單語言資料能給模型的組合泛化能力帶來怎樣的幫助。

1. 方法:層次化偏序解碼

第一篇是今年發表在nips上的工作,這篇工作的原理是基於語義具有置換無關性的顯著特徵。

我們認為,目前的語義解析模型忽略了語義具有潛在置換環境(potential permutation environments)的特點。事實上,一些成分的不同排列所表達的是相同語義。比如給出如下的檢索語句,我們可以在資料庫中檢索到相同的答案。儘管不同的三元組之間順序有所變化,但進行任意置換都不會影響最終檢索出來的結果。這種特性叫部分置換無關,在語義中其實扮演非常重要的角色。

舉個例子,圖中給出的seq2seq和seq2tree模型,紅色的虛線指向produce和found,我們可以看到found是在 produce解碼之後才去解碼,但是本身這兩個條件是平行的。由於在解碼過程中將它們建模成了一個序列,使得兩者具有一種無須模型學習的額外的順序關係,被模型強制擬合。這其實是我們訓練資料中不必要的統計的偏置,會增加模型訓練的難度,導致無法很好地學習到模型的子結構,從而限制模型的組合泛化能力。

為了解決這個問題,我們提出在解碼的過程中,將語義建模為一個偏序集(poset,partially ordered set),對於這種置換無關的成分,採用一種平行解碼的方式。

我們可以把語義看成偏序集,也就是一個DAG圖或者拓撲圖。底下有person、edit、produce這三個token,屬於一種相對獨立的關係。因此,在解碼的過程中,由於置換無關性,它們應該是用一種平行的方式解碼,從而更好地建模每個相對獨立的結構,讓模型更好地理解語義本身。

具體來說,我們提出層次化的偏序解碼方式(Hierarchical Poset Decoding),主要包括三個部分:左上的部分是原子預測,右上的部分是骨架預測,最底下的是鏈路預測。給定一個自然語言的句子,我們首先進行上面兩部分的預測,這樣自然而然地就利用了偏序解碼的方式,這裡面會進行原子的抽象,這就是hierarchical的機制。也就是說,一方面,我們會對一些具體的謂詞、實體等進行抽象,從而預測偏序的骨架;另一方面,根據我們輸入的自然語言進行原子成分的預測,比如預測可能出現哪些謂詞和實體,最後得到一些候選的原子。

第三步是鏈路預測,將預測出來的骨架和原子進行拼接,這其實是一個分類任務,對可以組成的多條候選路徑進行二分類,預測哪些鏈路和輸入的自然語言是一致的。

最後我們相當於得到若干條預測出來的可行路徑,再把這些鏈路進行拼接,可以叫做一條條葉子,每條葉子都可以拆出一條單獨的路徑,也就是我們在第三步預測出來的每條可行的鏈路。相當於對它們進行一個字首的合併,最終得到目標偏序集合,這就是我們模型的整體框架。

我們在CFQ資料集上評估我們提出的HPD模型,實驗結果表明該模型顯著優於現有的解碼器。

總結一下,這篇工作其實主要是從模型的角度,利用語義中偏置無關的特性,來提高語言的組合泛化能力。我們將語言的部分置換不變的特點融入模型結構中,從而避免模型過擬合於訓練資料中的順序偏置資訊。另外,我們使用了層次化機制,對不同粒度的謂詞、實體等變數進行多層化建模,讓模型更好地理解偏序集的高層語義結構。

2. 資料:單語言資料的潛力

第二篇工作是從資料的角度探究了單語言資料的潛力,對組合泛化能力的幫助。這篇工作發表於今年的AAAI。

這篇工作的思路其實非常簡單,我們知道平行資料的標註成本很高、數量也有限,單語料資料則相對容易獲得。在資料資源短缺的時候,半監督學習是一種非常高效的學習方式。

因此,我們引入更多的單語言資料,利用迭代回譯(Iterative Back-Translation,IBT)的技術,來提高模型的組合泛化效能。

我們訓練一個從源端到目標端的正向模型,同時訓練一個從目標端到源端的反向模型,反向模型和正向模型互相為對方生成偽平行資料。利用IBT在迭代過程中不斷更新平臺數據,質量不斷提高。

這篇工作更偏向於實驗分析,去探究IBT背後的一些關鍵影響因素。

有三個研究問題:

(1)IBT到底能否提高模型的組合泛化能力?

(2)基於實驗結果,探究背後的關鍵因素是什麼?

(3)基於探究到的關鍵因素,能否基於這些關鍵因素去進一步提高我們IBT的效能?

我們的資料集主要是前面已經介紹過的CFQ和組合泛化領域的經典測試基準SCAN。第一步的實驗結果可以看右下角的這張圖,結論是IBT確實可以提高模型的組合泛化能力。

第二步是探究背後的關鍵因素。在這之前,我們首先對迭代過程生成的尾平行資料的質量做了分析,可以看到生成的資料質量是隨著訓練的不斷進行而不斷提高的。在迭代過程中,模型會不斷修復最開始的噪音和錯誤,最終達到收斂的結果。在大概3萬個step之後,無論是Accuracy還是BLEU,都上升到較高的值,說明平行資料的質量在不斷提高。

我們進一步做了兩個對比實驗,首先我們在這裡對比了一個標準的去掉迭代過程的back-translation,使用的是一開始質量較差的偽平行資料,直接和平行資料進行混合,來訓練我們的模型。第二個實驗想探究隨機性給模型帶來的影響,因為我們知道在迭代過程中,每輪都會有新資料的生成,這其實涉及到了一個隨機性的引入。我們只用平行語料去訓練反向模型,持續為正向模型生成偽平行資料,這裡面其實保留了迭代的過程,但是生成資料的質量是一樣的,也就是用相同質量但不完全一樣的資料去訓練模型。

具體得到了兩個實驗結果,我們可以看到第一個藍色BT是用標準的back-translation得到的結果。第二個深藍色是隨機性實驗得到的結果。無論哪個實驗,都會相比於baseline也就是用平行資料去直接訓練模型有所提升,當然隨機性帶來的提升是更大的。

我們分析,背後的第一個原因主要是即使資料中有很多錯誤,但是帶給模型更多的unseen combinations,即模型中本來沒有的組合,這種正向效應大於資料本身包含的錯誤,所以整體還是會提升模型的組合泛化能力。

第二點關於隨機性,儘管資料質量不是很高,但每一輪的資料是動態生成的,也就是說每輪生成的資料儘管都有很多錯誤,但這些錯誤並不相同,這就幫助模型不去擬合那些具體的錯誤偏置,而是更多地關注這些資料中共有的部分,這就會提高模型的表現。

我們提出了一種基於課程學習的IBT,幫助模型更高效地改正資料中的錯誤。具體做法是把資料按照難度分為k等,然後在整個訓練過程中依次按照難度去增加資料,最開始加入的是最簡單的資料。

我們知道簡單的資料,對於模型而言,生成的資料錯誤也相對較少,隨著訓練過程的不斷繼續,模型的能力不斷提升,就能夠解決一些更難的問題。其實相比於直接去加入資料來說,它會在這種錯誤修正上更有效率,這是一種上臺階似的不斷累積的過程。

實驗結果可以看出,左邊的這張圖代表基於課程學習的方式,能夠給迭代回譯技術帶來很大的幫助。右邊是我們劃分的資料的不同難度,可以看出對於較難的資料它的幫助是更大的,這也是符合我們預期的。

最後,總結這篇關於資料部分的、偏實驗分析性質的工作。第一,實驗表明迭代回譯技術是能夠顯著提高模型的泛化能力的。第二,我們歸納出背後的三個原因:一是加入了很多未出現的組合,擴大了模型對資料分佈的認識;二是整個迭代的過程中,IBT能夠持續不斷地提高生成偽平行資料的質量,從而更好地幫助模型提高表現;三是隨機性的引入可以幫助模型不去過擬合錯誤偏置,從而帶來較好的效果提升。基於我們分析的關鍵因素,我們提出了一種更高效的幫助模型修正錯誤的方式,基於課程學習的迭代回憶技術,幫助模型進一步提升表現。

論文連結:

https://arxiv.org/pdf/2012.04276.pdf

https://arxiv.org/pdf/2010.07792.pdf

7
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • LiteOS核心原始碼分析系列二自旋鎖及LockDep死鎖檢測