1. 介紹
機器閱讀理解旨在根據給定上下文來回答相關問題,近年來在工業界與學術界均得到了廣泛的關注,目前最先進的系統都是基于預訓練模型構建的。即便如此,仍然需要大量標注數據才能達到比較理想的結果,對于一些缺乏大規模有標注數據領域和場景,現有模型的遷移效果往往并不令人滿意。相關工作[1,2]探索利用無標注的目標領域文本進行領域遷移,但這種方法無法使模型對目標領域的問題進行有效建模。在本文中,我們利用少量的標注數據,通過對在大規模有標注領域上訓練過的模型進行遷移,來提高在目標領域上的表現。另一方面,基于Transformer的預訓練模型通常包含至少上億個參數,如BERT Base的大小為110M。鑒于目標領域只有少量的標注數據,調整全部參數以適應目標領域非常困難,而且也是不必要的。另外,有研究[6]表明大規模稠密的神經網絡模型有過參數化(over-parameterized)的趨勢。我們探索只利用一小部分參數進行領域遷移,這些參數對應原稠密神經網絡模型中的一個稀疏子網絡。此外,我們還引入對自注意力模塊的分析,來找到更具遷移性的稀疏子網絡。最后,我們在多個目標領域上進行了實驗,取得超過多種基線方法的效果,我們還對提出的方法進行了仔細的分析。
圖1. 基于稀疏子網絡的領域遷移方法
2. 背景
2.1 Transformer架構
如圖2所示,Transformer模型一般由輸入嵌入層、輸出層和若干結構相同的Transformer層堆疊組成。更具體地,每層由一個多頭自注意力模塊和前饋模塊組成,共包含6個參數矩陣。
圖2. Transformer模型
2.2 自注意力分析
有許多工作[3,4]嘗試分析解釋Transformer模型的行為,最近,Hao[5]等人提出一種新的分析方法AttAttr可以估計每個自注意力頭對模型輸出的貢獻。本文采用此方法對在不同閱讀理解領域數據集上微調過的BERT模型進行分析,如圖3所示,我們發現重要的注意力頭在不同的領域上呈強正相關分布,即在一個領域上重要的自注意力頭,也極有可能在其它領域上也非常重要。基于這一發現,我們提出了本文的面向閱讀理解任務的少樣本領域遷移方法。
圖3. (a)在SQuADv1.1上的自注意力頭重要性分布。(b)-(d)不同領域上的自注意力頭相關性分析。每個點對應同一個自注意力頭在兩個對應的領域上的重要性。
3. 方法
我們在大規模標注數據的源領域上訓練過的Transformer模型遷移到只有少量標注數據的目標領域上。在遷移時,我們通過減枝來識別只包含少量參數的稀疏子網絡,并只對子網絡的參數進行更新來適應目標領域,在尋找子網絡時,通過引入自注意力歸因,來同時考慮參數的結構化與非結構化的重要性。
3.1 子網絡識別
Magnitude Pruning是一種簡單有效的非結構化減枝方法,這個方法根據參數的絕對值大小進行減值。我們以該方法為基礎,通過迭代的方式分若干步來逐漸刪減參數到目標數量,并且每次刪減部分參數后,都會對網絡進行一定步數的訓練,恢復模型在源領域上的效果,然后再進行下一步的參數刪減。在本文中,我們只對每層Transformer層中的6個參數矩陣進行刪減,其余的參數矩陣和偏置完全保留。
此外,在進行參數的重要性比較以選擇要刪減的參數時,通常有兩種策略,一種是所有參數一起進行全局比較,另一種是只在參數矩陣內部進行局部比較。在我們對參數矩陣的分析中發現,不同的參數矩陣的絕對值均值分布有較大的差異,若采用全局減枝,最后的結果會很大程度上被均值差異影響,而局部比較則最后所有參數矩陣具有相同的稀疏度,并且忽略了參數矩陣本身的所在模塊的重要性。所以,我們提出一種分組比較策略,根據不同參數矩陣的均值進行分組,在組內進行全局比較,具體地,將均值相當的參數矩陣分為一組,最后劃分為三組。
根據之前對閱讀理解任務的自注意力分析發現,Transformer中的不同自注意力頭對于模型最后的預測并不是同等重要的,并且重要性的分布在不同的領域上高度正相關。所以,我們引入自注意力歸因來補充Magnitude Pruning,以期得到能夠更好的遷移到目標領域的子網絡。具體地,在進行每一步減枝時,我們先估計出當前模型中不同注意力的重要性得分并進行歸一化,以此作為對參數絕對值進行縮放,需要注意的是,同一個注意力頭中的參數矩陣共享同一個重要性得分。此外,還通過超參數來控制歸因得分對最后參數重要性的影響。總體來說,通過這種方式,我們同時考慮到了參數的非結構化與結構化重要性,整體算法如圖4所示。
圖4. 稀疏子網絡識別算法
3.2 子網絡遷移
通過上述步驟后,最后剩下的參數即為找到的子網絡的結構,在進行領域適應時,我們保留得到的結構,但將參數回滾到減枝前,即源領域模型上的狀態,在后續的參數更新時只更新子網絡對應的參數,其余參數不進行梯度更新。但需要注意的是,所有的參數均參與前向計算過程。
4. 實驗及分析
4.1 數據集
在我們的實驗中,以SQuAD為源領域數據集,通過對五個目標領域數據集采樣來模擬少樣本領域遷移的場景,具體的領域數據集信息如表1所示。
表1. 數據集特征及統計信息
4.2 基線方法
Zero-Shot 不進行遷移,直接在目標領域上進行預測。
Fine-tuning 微調源領域模型的全部參數進行領域適應。
EWC(Elastic Weight Consolidation) 一種正則化算法,使得參數在更新時不至大幅偏離原始參數。
Layer Freeze 只調整Tranformer模型接近輸出層的若干層的參數,其余參數則保持不動。
Adapter 保持源領域模型的參數不動,通過添加并調整額外的adapter模塊來進行領域適應。
4.3 實驗結果與分析
如表2所示,當使用1024條目標領域標注數據,并將用于領域遷移的參數數量限定在21M時,本文提出的Alter在4個目標領域上取得了超過基線方法的效果。其中,我們的方法和Layer Freeze還有Adapter調整數量相當的參數量來進行領域適應。在NQ數據集上,當使用42M參數時,我們的方法與Fine-tuning表現相當。進一步地,當不對參數數量進行限制時的實驗結果如圖5-8所示,除NQ外我們的方法也均取得了超過基線方法的效果,并且通常只需要完整模型的20%-30%的參數即可。
表2. 使用1024條目標領域標注數據時的EM與F1得分
圖5. NewsQA實驗結果
圖6. TriviaQA實驗結果
圖7. TweetQA實驗結果
圖8. NQ實驗結果
圖9展示了引入自注意力頭來幫助尋找稀疏子網絡的結果,通過對比可以發現,在使用不同數量的目標領域標注數據及不同規模的參數進行領域遷移時,自注意力頭均能夠幫助找到遷移效果更好的子網絡。
圖9. 引入自注意力歸因與否的領域遷移結果
為了探究不同的子網絡識別方法得到的結構對遷移效果的影響,我們進行嘗試了以下四種候選方法:
Random 隨機選取目標數量的參數
Magnitude 只根據參數的絕對值大小進行選擇
Salvage 采用與本文提出的相同的流程,但采用相反的策略選擇參數,即使用原本被減掉的參數進行遷移
AttrHead 采用結構化減枝的方式得到,將若干自注意力頭的參數整體剪掉,對于前饋層的參數則仍采用非結構化的方式減枝
實驗結果如表3所示,使用不同方法得到的子網絡大小一致,不同的方法的效果差別并不明顯,但均超過了調整全部參數的方法。對比Salvage和Alter,我們發現使用對模型輸出影響更大的參數的效果更好。通過與AttrHead方法進行比較,我們可以發現,重要性得分較低的自注意力頭中絕對值較大的參數對領域遷移也有用。
表3. 不同子網絡識別方法的領域遷移結果
5. 結論
在本文中,我們針對少樣本閱讀理解領域遷移提出了一種簡單而有效的方法Alter,該方法只使用過參數化的源領域模型中的一部分參數進行目標領域遷移,我們還引入了自注意力歸因來識別子網絡以取得更好的遷移效果,通過進一步探索不同的子網絡識別方法,發現除了使用更少的參數以外,子網絡的結構也非常重要。
審核編輯 :李倩
-
數據集
+關注
關注
4文章
1212瀏覽量
24903 -
Transformer
+關注
關注
0文章
146瀏覽量
6085
原文標題:6. 參考文獻
文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
一種創新的動態軌跡預測方法

一種基于光強度相關反饋的波前整形方法

一種無透鏡成像的新方法

rup是一種什么模型
遷移學習的基本概念和實現方法
伺服電機最簡單控制方法是什么
一個簡單而有效的晶體管/二極管測試電路

評論