廖俊偉,程 帥
(電子科技大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,四川 成都 611731)
Transformer模型[1]誕生后,其靈活性促進(jìn)了一系列多任務(wù)模型的發(fā)展[2-4]。多任務(wù)模型是指僅使用一個(gè)模型來(lái)處理多個(gè)不同任務(wù)。這些模型一般都是典型的“稠密”(Dense)模型——當(dāng)執(zhí)行任何一個(gè)任務(wù)的時(shí)候,模型的參數(shù)被全部激活。但對(duì)于這種不同任務(wù)共享所有參數(shù)的模型,并不清楚模型中的每一部分參數(shù)分別學(xué)到了什么知識(shí)或者能力。這帶來(lái)了兩個(gè)問題: 一方面,盡管處理不同自然語(yǔ)言任務(wù)需要不同的技能[5],稠密模型的這個(gè)特性使我們無(wú)法根據(jù)不同任務(wù)顯式地選擇激活不同的技能;另一方面,當(dāng)使用訓(xùn)練好的稠密模型來(lái)執(zhí)行新的任務(wù)時(shí),不管模型中包含的技能是否與新的任務(wù)相關(guān),這些技能都會(huì)用于新任務(wù)的學(xué)習(xí),從而導(dǎo)致不相關(guān)的技能影響模型學(xué)習(xí)新的任務(wù)。
為解決上述問題,本文提出了一種基于技能網(wǎng)絡(luò)的通用自然語(yǔ)言生成模型(SkillNet-NLG)。模型的基本思想是其網(wǎng)絡(luò)結(jié)構(gòu)中包含了多個(gè)技能模塊,其中每一個(gè)模塊代表一種獨(dú)特的技能。這些技能的定義如表1所示。
表1 SkillNet-NLG的技能及其定義
與傳統(tǒng)的稠密模型在執(zhí)行某一任務(wù)時(shí)激活所有的參數(shù)不同,SkillNet-NLG僅激活與特定任務(wù)相關(guān)的技能模塊。如圖1所示,為了執(zhí)行對(duì)話生成任務(wù),SkillNet-NLG需要的能力包括生成開放式文本的能力(Sopen-end),理解對(duì)話的上下文的能力(Sconversation)以及理解基于自然語(yǔ)言的問題的能力(Squestion)。因此,對(duì)應(yīng)于Sopen-end,Sconversation,Squestion和Sgeneral(1)Sgeneral定義為一種通用技能,該技能是完成任何一個(gè)任務(wù)所需要的缺省能力,默認(rèn)總是處于激活狀態(tài)。四種能力的技能模塊被激活。
圖1 SkillNet-NLG模型示意圖
本文提出的SkillNet-NLG是基于Transformer[1]架構(gòu)實(shí)現(xiàn)。Transformer是一種編碼器-解碼器(Encoder-Decoder)模型,其編碼器和解碼器分別包含多個(gè)結(jié)構(gòu)相同的Transformer層,而每個(gè)Transformer層又是由多頭注意力網(wǎng)絡(luò)(Multi-Head Attention Network)和前饋網(wǎng)絡(luò)(Feed-Forward Neural Network,FFN)構(gòu)成。具體來(lái)說(shuō),SkillNet-NLG針對(duì)Transformer結(jié)構(gòu)的改動(dòng)如下: 對(duì)于編碼器與解碼器中的Transformer層,每間隔一層將其中的FFN替換為多個(gè)結(jié)構(gòu)相同的FFN。每一個(gè)FFN對(duì)應(yīng)于一種技能。當(dāng)模型處理某個(gè)任務(wù)時(shí),只有與執(zhí)行該任務(wù)所需的技能相關(guān)的FFN被激活。
本文在多個(gè)中文自然語(yǔ)言生成任務(wù)上進(jìn)行了大量的實(shí)驗(yàn),驗(yàn)證SkillNet-NLG的效果(2)本文提出的方法與具體的語(yǔ)言無(wú)關(guān)。在后續(xù)研究中將嘗試將SkillNet-NLG用于其他語(yǔ)言的生成任務(wù)。。在多任務(wù)訓(xùn)練階段,使用了五種自然語(yǔ)言生成任務(wù),包括文本摘要生成、廣告生成、問答、對(duì)話生成以及語(yǔ)法糾錯(cuò)。經(jīng)過多任務(wù)訓(xùn)練后的SkillNet-NLG,在五種任務(wù)中的其中四種任務(wù)上,超過了之前工作中針對(duì)特定任務(wù)單獨(dú)訓(xùn)練的表現(xiàn)最好的模型的性能。同時(shí),SkillNet-NLG的性能也優(yōu)于另外兩種常用的多任務(wù)模型,即稠密模型和混合專家模型(Mixture-of-Expert,MoE)。此外,本文還將經(jīng)過多任務(wù)訓(xùn)練的 SkillNet-NLG通過微調(diào)應(yīng)用于與多任務(wù)訓(xùn)練階段不同的其他文本生成任務(wù),包括主題到文章的生成、復(fù)述生成和故事生成。實(shí)驗(yàn)結(jié)果表明,SkillNet-NLG的表現(xiàn)優(yōu)于前述的所有基線模型。
SkillNet-NLG是一種通用的自然語(yǔ)言生成模型,即使用一個(gè)模型執(zhí)行多種自然語(yǔ)言生成任務(wù)。其在模型訓(xùn)練階段采取了多任務(wù)的訓(xùn)練方法,因此與傳統(tǒng)的多任務(wù)模型有相似之處。從模型結(jié)構(gòu)上來(lái)看,SkillNet-NLG的主要特征是引入了技能模塊,在執(zhí)行某一任務(wù)時(shí),根據(jù)預(yù)先定義的任務(wù)技能,選擇部分技能模塊激活,因此是一種稀疏激活的模型。
傳統(tǒng)的多任務(wù)模型[2-4]通常包括一個(gè)所有任務(wù)共享的特征表示層(Feature Representation Layer)和多個(gè)針對(duì)特定任務(wù)的預(yù)測(cè)層(Task-Specific Prediction Layers)。在多任務(wù)訓(xùn)練階段,共享的特征表示層從數(shù)據(jù)中學(xué)習(xí)到通用的特征表示,而預(yù)測(cè)層則學(xué)習(xí)到與任務(wù)相關(guān)的特征表示,但是并不清楚在特征表示層學(xué)習(xí)到了什么知識(shí)或者技能。與之不同,SkillNet-NLG包含清晰定義的技能模塊,這些技能模塊根據(jù)任務(wù)需要被選擇性地激活。直觀地說(shuō),SkillNet-NLG不是學(xué)習(xí)如何針對(duì)某個(gè)特定任務(wù)進(jìn)行優(yōu)化,而是學(xué)習(xí)如何對(duì)每個(gè)特定技能模塊進(jìn)行優(yōu)化,以及如何組合多個(gè)技能模塊來(lái)完成某項(xiàng)任務(wù)。因此,SkillNet-NLG可以更好地泛化到模型在訓(xùn)練階段從未見過的新任務(wù)上。
另外一類典型的稀疏激活模型是混合專家模型(Mixture-of-Expert,MoE)[6-9]?;旌蠈<夷P桶鄠€(gè)并列的專家模塊(Expert Modules),這些專家模塊通常具有相同的網(wǎng)絡(luò)結(jié)構(gòu)?;旌蠈<夷P屯ㄟ^一個(gè)參數(shù)化的門控模塊(Gating Module)來(lái)控制激活部分或者全部的專家模塊。但是并不清楚每個(gè)專家模塊學(xué)到了什么類型的知識(shí),同時(shí)也無(wú)法解釋為什么選擇激活某些專家模塊而不激活另外一些專家模塊。與之不同,SkillNet-NLG具有定義清晰的技能模塊,具體激活哪些技能模塊則是根據(jù)任務(wù)的需要,由人工進(jìn)行判斷。
本節(jié)首先介紹了作為SkillNet-NLG基礎(chǔ)的Transformer結(jié)構(gòu)(2.1節(jié));其次,對(duì)SkillNet-NLG模型的實(shí)現(xiàn)思路和細(xì)節(jié)進(jìn)行描述(2.2節(jié));最后介紹了如何對(duì)任務(wù)分解相關(guān)技能(2.3節(jié)),以及如何對(duì)SkillNet-NLG進(jìn)行多任務(wù)訓(xùn)練(2.4節(jié))。
SkillNet-NLG是基于Transformer的一種改進(jìn)模型。下面簡(jiǎn)單介紹一下Transformer的結(jié)構(gòu)。
Transformer是一種具有多層結(jié)構(gòu)的編碼器-解碼器模型。在編碼器端,如圖2(a)所示,Transformer的每一層由一個(gè)多頭自注意力網(wǎng)絡(luò)(Multi-head Self-attention Network, Attention)和一個(gè)前饋網(wǎng)絡(luò)(Feed-Forward Network,FFN)組成。對(duì)于給定的Transformer某一層輸入特征hin=(h1,h2,…,hn),該層的輸出計(jì)算如式(1)所示。
圖2 Transformer與SkillNet-NLG的層結(jié)構(gòu)對(duì)比
hout=FNN(Attention(hin))
(1)
在多頭注意力機(jī)制中,輸入特征通過不同的權(quán)值矩陣被線性映射到不同的信息子空間,并在每個(gè)子空間完成相同的注意力計(jì)算,以對(duì)文本潛在的結(jié)構(gòu)和語(yǔ)義進(jìn)行充分學(xué)習(xí)。其中第i個(gè)頭的注意力headi計(jì)算過程如式(2)~式(4)所示。
Attention(hin)=Concat(head1,…,headN)WO
(5)
其中,N是注意力頭個(gè)數(shù),WO是參數(shù)矩陣。
前饋網(wǎng)絡(luò)FFN對(duì)多頭注意力輸出進(jìn)行兩次線性變換,并在兩次變換之間使用了ReLU激活函數(shù),如式(6)所示。
FFN(x)=Max(0,xW1+b1)W2+b2
(6)
其中,x表示FFN的輸入,即多頭注意力的輸出;W1、b1、W2、b2是學(xué)習(xí)參數(shù)。
Transformer解碼器的每層結(jié)構(gòu)與編碼器類似,不同之處在于解碼器的每層中額外增加了一個(gè)多頭注意力網(wǎng)絡(luò)。這個(gè)增加的多頭注意力網(wǎng)絡(luò)在解碼器的輸入和編碼器的輸出之間進(jìn)行多頭注意力的計(jì)算操作。
SkillNet-NLG的基本設(shè)計(jì)思想是模型包含多個(gè)技能模塊,當(dāng)模型執(zhí)行某一個(gè)任務(wù)時(shí),僅激活完成任務(wù)所需的技能對(duì)應(yīng)的技能模塊。SkillNet-NLG對(duì)Transformer結(jié)構(gòu)上的改動(dòng)如圖2(b)所示(3)圖中以Transformer的編碼器層為例進(jìn)行說(shuō)明,解碼器層與之類似。。SkillNet-NLG將Transformer層中的單個(gè)FFN替換為多個(gè)相同結(jié)構(gòu)的FFN,每個(gè)FFN都對(duì)應(yīng)于一種技能。當(dāng)模型處理某個(gè)任務(wù)時(shí),僅激活該任務(wù)所需技能對(duì)應(yīng)的FFN。例如,對(duì)于對(duì)話生成任務(wù)需要的四種技能(Sopen-end,Sconversation,Squestion和Sgeneral),模型僅激活這四種技能對(duì)應(yīng)的FFN,而其余的兩個(gè)技能(Snon-open-end和Sdata-to-text)對(duì)應(yīng)的FFN并沒有被激活。對(duì)于某個(gè)特定技能k的FFNk,其功能與原始的FFN類似,生成該技能的特征表示如式(7)所示。
hk=FFNk(Attention(hin))
(7)
由于激活的技能子模塊隨任務(wù)不同而變化,為了計(jì)算SkillNet-NLG的每層輸出的特征表示,對(duì)所有激活技能的特征表示進(jìn)行平均池化操作如式(8)所示。
(8)
其中,S代表激活的技能集合。例如,對(duì)于圖1所示的對(duì)話生成任務(wù),S={Sopen-end, Sconversation, Squestion, Sgeneral}。為避免增加過多的模型參數(shù),參考Lepikhin等人[7]的做法,上述對(duì)Transformer層的改動(dòng)不是針對(duì)所有的Transformer層進(jìn)行,而是選擇每間隔一層進(jìn)行。
SkillNet-NLG的基本設(shè)計(jì)思想是模型包含多個(gè)技能模塊,當(dāng)模型執(zhí)行某一個(gè)任務(wù)時(shí),僅激活完成任務(wù)所需的技能對(duì)應(yīng)的技能模塊。因此在模型執(zhí)行任務(wù)之前,需要分析完成任務(wù)需要哪些技能。
從“輸入-輸出”信息變換的角度,自然語(yǔ)言生成可分為開放式語(yǔ)言生成(Open-end Language Generation)和非開放式語(yǔ)言生成(Non-open-end Language Generation)[10]。在非開放式語(yǔ)言生成任務(wù)中,輸入信息在語(yǔ)義上提供了完備甚至更多的信息,模型需要將這些信息用語(yǔ)言文字表述出來(lái)。例如在文本摘要任務(wù)中,輸入給出了比輸出語(yǔ)義空間中更多的信息,模型需要通過信息過濾來(lái)選擇合適的信息表達(dá)在輸出文本中。因此,模型為完成文本摘要任務(wù),需要非開放式語(yǔ)言生成能力(Snon-open-end)。對(duì)應(yīng)的,開放式語(yǔ)言生成是指輸入信息不完備、不足以引導(dǎo)模型得到完整輸出語(yǔ)義的任務(wù)。例如,問答是典型的開放式語(yǔ)言生成任務(wù),模型根據(jù)提問生成回答。這個(gè)場(chǎng)景下輸入信息有限,模型需要利用其他信息(如外部知識(shí)庫(kù))或者生成輸入中未指定或未約束的部分內(nèi)容。這類任務(wù)普遍具有“一到多”的特點(diǎn),即同一個(gè)輸入存在多種語(yǔ)義顯著不同的輸出文本,因此針對(duì)這類任務(wù)需要模型具備開放式語(yǔ)言生成能力(Sopen-end)。此外,問答任務(wù)需要在理解提問的基礎(chǔ)上生成適當(dāng)?shù)幕卮?因此模型還需要具備理解自然語(yǔ)言問題的能力(Squestion)。
將多任務(wù)訓(xùn)練的SkillNet-NLG用于新任務(wù)的時(shí)候,雖然模型在訓(xùn)練階段沒有見過該任務(wù),但是可以通過組合新任務(wù)所需要的技能,使模型能夠快速將多任務(wù)階段學(xué)習(xí)到的知識(shí)遷移到新任務(wù)的學(xué)習(xí)上。以主題到文章生成任務(wù)為例,該任務(wù)是根據(jù)輸入的一組與主題相關(guān)的關(guān)鍵詞生成一篇圍繞主題的文章。根據(jù)任務(wù)定義,該任務(wù)需要開放式的語(yǔ)言生成能力(Sopen-end)。此外,由于給定的輸入是一組關(guān)鍵詞,模型還需要具備從結(jié)構(gòu)化數(shù)據(jù)生成文本的能力(Sdata-to-text)。
采用與上述類似的分析,本文對(duì)常見的自然語(yǔ)言生成任務(wù)定義了所需的技能(表2)。表中各個(gè)任務(wù)的介紹參見第3.1節(jié)。
表2 常見自然語(yǔ)言生成任務(wù)的技能定義
對(duì)SkillNet-NLG進(jìn)行多任務(wù)訓(xùn)練是通過混合所有任務(wù)的訓(xùn)練數(shù)據(jù)進(jìn)行的。在模型訓(xùn)練過程中的每一步,首先從參與訓(xùn)練的多個(gè)任務(wù)中選擇一個(gè)任務(wù)的一個(gè)小批量數(shù)據(jù)(Mini-batch),然后在輸入數(shù)據(jù)中添加代表該任務(wù)的特殊前綴。模型計(jì)算生成的文本與參考文本之間的交叉熵?fù)p失(Cross-Entropy Loss),并進(jìn)行后向傳播(Back Propagation)更新模型參數(shù)。由于各個(gè)任務(wù)的訓(xùn)練數(shù)據(jù)存在數(shù)量不均衡的情況,參考Raffel等人[3]的方法,本文采用了基于溫度調(diào)節(jié)(Temperature-Scaled)的數(shù)據(jù)采樣混合策略。具體來(lái)說(shuō),根據(jù)概率{p1,…,pN}從N個(gè)任務(wù)中隨機(jī)選擇一個(gè)任務(wù)并采樣該任務(wù)一個(gè)小批量數(shù)據(jù)。其中,概率pi計(jì)算如式(9)所示。
(9)
其中,ni表示第i個(gè)任務(wù)的訓(xùn)練數(shù)據(jù)數(shù)量;K表示人為設(shè)置的數(shù)據(jù)大小上限,以避免某個(gè)任務(wù)的數(shù)據(jù)量過大從而導(dǎo)致采樣比率過高;T表示采樣溫度。當(dāng)T= 1時(shí),上述分布等于原始的數(shù)據(jù)分布;當(dāng)T較大(如T=1 024)時(shí),此時(shí)的分布接近于均勻分布。關(guān)于選擇不同T對(duì)模型訓(xùn)練的影響請(qǐng)參見第3.6節(jié)中的分析。
本節(jié)描述了實(shí)驗(yàn)設(shè)置,并對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行了分析與討論(4)實(shí)驗(yàn)代碼、數(shù)據(jù)集和模型下載地址https://github.com/david-liao/skillnet_nlg。
本文在常見的自然語(yǔ)言生成任務(wù)的中文基準(zhǔn)數(shù)據(jù)集上開展實(shí)驗(yàn),任務(wù)種類、每個(gè)任務(wù)使用的數(shù)據(jù)集統(tǒng)計(jì)信息和評(píng)測(cè)指標(biāo)如表3所示。表中第一組五個(gè)任務(wù)的數(shù)據(jù)集用于SkillNet-NLG的多任務(wù)訓(xùn)練及訓(xùn)練后的模型在每個(gè)任務(wù)上的性能評(píng)測(cè)。表中第二組三個(gè)任務(wù)的數(shù)據(jù)集用于對(duì)訓(xùn)練好的SkillNet-NLG進(jìn)行微調(diào),并評(píng)測(cè)微調(diào)后模型在新任務(wù)上的性能表現(xiàn)。
表3 實(shí)驗(yàn)數(shù)據(jù)集統(tǒng)計(jì)信息
以下詳細(xì)介紹所有用到的數(shù)據(jù)集:
(1) 文本摘要任務(wù)的目的是對(duì)輸入的文本內(nèi)容進(jìn)行總結(jié)以獲得其主旨大意,便于人們快速理解文本含義。LCSTS是從新浪微博收集的大規(guī)模中文短文本摘要數(shù)據(jù)集[11]。本文中采用了與Shao等人[12]相同的數(shù)據(jù)集劃分及評(píng)測(cè)指標(biāo)。
(2) 廣告生成任務(wù)是根據(jù)給定的一組商品屬性與屬性值對(duì)生成一段廣告文案。AdGen來(lái)自中國(guó)最大的電子商務(wù)平臺(tái),包含約12萬(wàn)條與服裝有關(guān)的屬性與屬性值對(duì)和對(duì)應(yīng)的廣告文案。本文采用了與Shao等人[12]相同的數(shù)據(jù)預(yù)處理過程,將輸入數(shù)據(jù)表示為屬性與屬性值對(duì)的列表。
(3) 問答任務(wù)是根據(jù)提出的問題生成使用自然語(yǔ)言的回答。MATINF-QA是一個(gè)大規(guī)模中文開放域問答數(shù)據(jù)集[13],包括107萬(wàn)條來(lái)自健康領(lǐng)域的問答數(shù)據(jù)。
(4) 對(duì)話生成任務(wù)是基于歷史對(duì)話記錄生成對(duì)話的下一句的回復(fù)。KdConv是一個(gè)多領(lǐng)域基于知識(shí)驅(qū)動(dòng)的對(duì)話數(shù)據(jù)集,其中,包含4 500條來(lái)自三個(gè)不同領(lǐng)域的對(duì)話數(shù)據(jù)。本文參照Sun等人[14]對(duì)數(shù)據(jù)進(jìn)行劃分和預(yù)處理,并且從輸入數(shù)據(jù)中移除了知識(shí)三元組。
(5) 語(yǔ)法糾錯(cuò)任務(wù)主要是糾正文本中的拼寫、標(biāo)點(diǎn)符號(hào)、語(yǔ)法以及用詞等錯(cuò)誤。NLPCC來(lái)自NLPCC 2018 Shared Task(5)http://tcci.ccf.org.cn/conference/2018/taskdata.php[15],包含1 200萬(wàn)條由非母語(yǔ)人士撰寫的中文文本,其中的語(yǔ)法錯(cuò)誤已由母語(yǔ)人士進(jìn)行了注釋和修正。本文使用官方提供的評(píng)測(cè)腳本(6)http://www.comp.nus.edu.sg/nlp/software.html計(jì)算MaxMatch(M2)得分作為評(píng)測(cè)指標(biāo)。
(6) 主題到文章生成任務(wù)根據(jù)輸入的一組與主題相關(guān)的關(guān)鍵詞生成一篇圍繞主題的短文。ZhiHu是從中文問答網(wǎng)站知乎收集整理的主題到文章生成的數(shù)據(jù)集[16],包含約100個(gè)高頻主題詞以及長(zhǎng)度在50至100之間的中文短文。本文采用了與Yang等人[17]相同的數(shù)據(jù)劃分和評(píng)測(cè)指標(biāo)(7)數(shù)據(jù)集下載地址https://pan.baidu.com/s/17pcfWUuQTbcbniT0tBdwFQ。
(7) 復(fù)述生成任務(wù)生成與輸入句子表達(dá)意思相同但是用詞和語(yǔ)法有所變化的句子。PKU Paraphrase Bank (PKUPB)是一個(gè)包含509 832條復(fù)述語(yǔ)句對(duì)的句子級(jí)別的中文復(fù)述生成語(yǔ)料庫(kù)(8)https://github.com/pkucoli/PKU-Paraphrase-Bank。本文分別從原始語(yǔ)料中隨機(jī)采樣1萬(wàn)條作為驗(yàn)證集和測(cè)試集,剩下部分作為訓(xùn)練集。
(8) 故事生成任務(wù)根據(jù)給出的一段提示生成一篇合乎情理的故事。生成的故事必須保持通篇主題一致并且具有一定的獨(dú)創(chuàng)性。OutGen是由Guan等人[18]創(chuàng)建的基于大綱的故事生成任務(wù)數(shù)據(jù)集,該任務(wù)要求根據(jù)給定的人物和事件大綱生成一篇連貫的故事。其中的大綱是一組打亂順序的短語(yǔ)。本文使用了與Guan等人[18]一致的數(shù)據(jù)劃分和評(píng)測(cè)指標(biāo)(9)數(shù)據(jù)和評(píng)測(cè)腳本的下載地址https://github.com/thucoai/LOT-LongLM。。
本文提出的SkillNet-NLG基于Huggingface Transformers開發(fā)庫(kù)(10)https://github.com/huggingface/transformers[19]的BART-large模型[4]實(shí)現(xiàn)。模型由分別為12層的編碼器和解碼器組成,模型的隱層維度(Hidden State Dimensions)為1 024,前饋網(wǎng)絡(luò)維度(Feed Forward Dimension)為4 096。所有的技能模塊(FFNk)使用本文自己預(yù)訓(xùn)練的中文BART模型對(duì)應(yīng)Transformer層的FFN參數(shù)進(jìn)行初始化。SkillNet-NLG在多任務(wù)訓(xùn)練階段,設(shè)置參數(shù)更新步數(shù)為10萬(wàn)步,最大輸入序列長(zhǎng)度(Maximum Source Length)為512,最大輸出序列長(zhǎng)度(Maximum Target Length)為200,批量大小(Batch Size)為512。使用Adam[20]優(yōu)化器(β1=0.9,β2=0.999,ε=1e-8),并且設(shè)置學(xué)習(xí)率在訓(xùn)練的前1萬(wàn)步逐漸預(yù)熱(Warmup)至峰值3e-5,隨后線性下降。多任務(wù)訓(xùn)練階段的每個(gè)任務(wù)的訓(xùn)練損失學(xué)習(xí)曲線如圖3所示。在2.4節(jié)中用于計(jì)算訓(xùn)練數(shù)據(jù)采樣策略的數(shù)據(jù)大小上限K設(shè)置為221,采樣溫度(Sampling Temperature)T在候選集{1,2,4,8,16,1 024}中進(jìn)行超參搜索后選擇了4。模型推理(Inference)階段使用了集束搜索(Beam Search)的解碼方法,所有任務(wù)的集束大小(Beam Size)均設(shè)置為4。
圖3 多任務(wù)訓(xùn)練階段各任務(wù)的學(xué)習(xí)曲線
在基于多任務(wù)訓(xùn)練的SkillNet-NLG上分別微調(diào)三個(gè)新任務(wù)的超參數(shù)設(shè)置如表4所示。表中未列出的其他參數(shù)與多任務(wù)訓(xùn)練階段相同,不再贅述。
表4 模型微調(diào)超參數(shù)設(shè)置
為了評(píng)價(jià)SkillNet-NLG在多任務(wù)上的性能,引入多種典型模型進(jìn)行實(shí)驗(yàn)對(duì)比,其中包括分別針對(duì)每個(gè)任務(wù)單獨(dú)訓(xùn)練的模型和另外兩種多任務(wù)模型。以下詳細(xì)介紹所有參與比較的模型:
(1) 針對(duì)特定任務(wù)單獨(dú)訓(xùn)練的模型(Task-specific): 基于本文自己預(yù)訓(xùn)練的中文BART模型[4](以下簡(jiǎn)稱BART模型),分別在每個(gè)任務(wù)數(shù)據(jù)集上單獨(dú)微調(diào)的模型。因此,對(duì)于用于多任務(wù)訓(xùn)練階段的五個(gè)任務(wù),一共訓(xùn)練了五個(gè)模型。與此相對(duì),SkillNet-NLG與其他基線模型都是多任務(wù)模型,即僅使用一個(gè)模型執(zhí)行五個(gè)任務(wù)。
(2) 多任務(wù)訓(xùn)練的稠密模型(Dense): 該模型是在五個(gè)任務(wù)數(shù)據(jù)集上使用2.4節(jié)中介紹的方法訓(xùn)練的BART模型。
(3) 多任務(wù)訓(xùn)練的混合專家模型(MoE): 該模型是在BART模型的基礎(chǔ)上,參照Lepikhin等人[7]實(shí)現(xiàn)的混合專家模型。對(duì)于輸入的每個(gè)詞元(Token),模型使用一個(gè)門控網(wǎng)絡(luò)選擇激活前兩名(top-2)的專家模塊。為了與SkillNet-NLG可比較(包含六個(gè)技能模塊),本文實(shí)現(xiàn)的MoE模型包含了六個(gè)專家模塊(Expert Module)。MoE模型使用了BART模型參數(shù)進(jìn)行初始化,并在五個(gè)任務(wù)數(shù)據(jù)集上使用2.4節(jié)中介紹的多任務(wù)訓(xùn)練方法進(jìn)行訓(xùn)練。
實(shí)驗(yàn)中用到的所有模型參數(shù)數(shù)量統(tǒng)計(jì)信息如表5所示。由于SkillNet-NLG和MoE模型都屬于稀疏激活的模型,表中最后一列列出了模型在實(shí)際使用過程中激活的參數(shù)數(shù)量。從表中可以看出,SkillNet-NLG的實(shí)際激活參數(shù)數(shù)量依賴于其執(zhí)行特定任務(wù)時(shí)激活的技能模塊數(shù)量。
表5 模型參數(shù)量統(tǒng)計(jì)
表6展示了 SkillNet-NLG 和所有基線方法在參與多任務(wù)訓(xùn)練的五個(gè)任務(wù)上的結(jié)果。為了便于與最新研究成果對(duì)比,表中第一行給出了當(dāng)前在任務(wù)數(shù)據(jù)集上性能表現(xiàn)最好系統(tǒng)的結(jié)果。其中,LCSTS,AdGen和MATINF-QA的結(jié)果來(lái)自 CPT-Large[12],KdConv的結(jié)果來(lái)自 mBART-Large[21],NLPCC的結(jié)果來(lái)自Mask GEC[22]。同時(shí)為便于比較整體性能,表中最后一列給出模型在所有任務(wù)上的結(jié)果的平均值。
表6 不同模型在用于多任務(wù)訓(xùn)練的五個(gè)任務(wù)數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果
從實(shí)驗(yàn)結(jié)果上看,SkillNet-NLG在所有任務(wù)的平均得分上表現(xiàn)優(yōu)于針對(duì)特定任務(wù)單獨(dú)訓(xùn)練的模型(Task-specific)和另外兩個(gè)多任務(wù)模型(Dense和MoE)。我們分別對(duì)每個(gè)任務(wù)使用 Paired Bootstrap Resampling[23-24]方法計(jì)算了模型SkillNetNLG和Task-specific的實(shí)驗(yàn)結(jié)果之間的p-value值: 0.243 2(LCSTS),0.180 3(AdGen),0.718 2(MATINF-QA),0.769 2(KdConv),0.366 4(NLPCC)。結(jié)果表明在顯著性水平α= 0.05 的情況下,不能完全拒絕兩種方法之間沒有顯著性差異的假設(shè)(p>0.05)。在僅使用一個(gè)模型的執(zhí)行所有任務(wù)的情況下,SkillNet-NLG在五個(gè)任務(wù)中的四個(gè)上面表現(xiàn)均優(yōu)于目前性能最好的系統(tǒng)??梢姳疚奶岢龌诩寄芫W(wǎng)絡(luò)的稀疏激活方法對(duì)于模型在多任務(wù)上的性能提升起到了重要作用。
表7展示了所有模型在三個(gè)新任務(wù)上的實(shí)驗(yàn)結(jié)果,其中的Dense、MoE、SkillNetNLG是指在上述多任務(wù)實(shí)驗(yàn)中訓(xùn)練好的模型基礎(chǔ)上針對(duì)新任務(wù)分別微調(diào)得到的模型。表中第一行給出了目前在任務(wù)數(shù)據(jù)集上性能表現(xiàn)最好系統(tǒng)的結(jié)果。其中,ZhiHu的結(jié)果來(lái)自SCTKG(Gold-Senti)[25], OutGen的結(jié)果來(lái)自LongLMlarge[18]。
表7 不同模型在三個(gè)新任務(wù)數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果
從實(shí)驗(yàn)結(jié)果上看,SkillNet-NLG在三個(gè)新任務(wù)上的表現(xiàn)均優(yōu)于針對(duì)特定任務(wù)單獨(dú)訓(xùn)練的模型和其他兩個(gè)多任務(wù)模型。SkillNet-NLG在Zhihu數(shù)據(jù)集(主題到文章生成任務(wù))上取得了與Qiao等人[25]工作中記錄的最好結(jié)果相近(BLEU-2分值僅差0.04)的性能。后者的方法使用了外部的知識(shí)庫(kù)(Knowledge Base)來(lái)輔助文章的生成,而SkillNet-NLG沒有使用任何額外知識(shí)。特別值得注意的是,SkillNet-NLG在OutGen數(shù)據(jù)集(故事生成任務(wù))上超過了Guan等人[18]的LongLMlarge模型1.22的BLEU-2分值,后者的模型使用了更多參數(shù)(約10億參數(shù))并且在大規(guī)模的領(lǐng)域內(nèi)的數(shù)據(jù)上進(jìn)行了預(yù)訓(xùn)練。
本文根據(jù)2.3節(jié)中描述的方法對(duì)任務(wù)中使用的技能進(jìn)行了分解(表2)。為了驗(yàn)證分解方案的有效性,我們分別對(duì)模型在多任務(wù)和新任務(wù)兩種場(chǎng)景下進(jìn)行了消融實(shí)驗(yàn)。
模型在多任務(wù)訓(xùn)練階段的五個(gè)任務(wù)上的技能分解方案如表8所示。其中,①使用預(yù)定義的技能,即表2中定義的技能分解方案。②每個(gè)任務(wù)對(duì)應(yīng)一種技能,各個(gè)技能之間沒有重疊。③ 每個(gè)任務(wù)隨機(jī)分配一組技能。由于模型實(shí)際激活參數(shù)數(shù)量依賴于其執(zhí)行特定任務(wù)時(shí)使用的技能個(gè)數(shù)(表5)。為與SkillNet-NLG的激活參數(shù)數(shù)量進(jìn)行公平對(duì)比,隨機(jī)分配的技能的個(gè)數(shù)與表2中定義的技能個(gè)數(shù)保持一致。④在預(yù)定義方案中通用技能Sgeneral是完成任一任務(wù)所需要的缺省能力,默認(rèn)總是處于激活狀態(tài)。因此一種可供比較的分解方案是每個(gè)任務(wù)都固定包含Sgeneral,其他的技能則采用與③中類似的方法隨機(jī)分配。表中結(jié)果顯示使用其他技能分解方案的模型性能相較預(yù)定義的技能分解方案均有不同程度的下降,表明了SkillNet-NLG任務(wù)技能分解的有效性。此外,方案④由于包含通用技能,能夠?qū)W習(xí)完成所有任務(wù)所需的具有共性的能力,表現(xiàn)優(yōu)于完全使用隨機(jī)分配技能的方案,即方案③。
表8 模型在用于多任務(wù)訓(xùn)練的五個(gè)任務(wù)上消融實(shí)驗(yàn)結(jié)果
模型在三個(gè)新任務(wù)上的技能分解方案如表9所示。其中,方案②使用了預(yù)定義技能集合的補(bǔ)集(表1 中定義了技能集合的全集)。例如,對(duì)于故事生成任務(wù)(OutGen),預(yù)定義的技能集合是 {Sgeneral,Sopen-end},預(yù)定義外的技能集合則是 {Sopen-end,Sdata-to-text,Sconversation,Squestion};方案 ⑤在預(yù)定義的技能基礎(chǔ)上再隨機(jī)分配一個(gè)技能; 方案⑥隨機(jī)分配與預(yù)定義技能個(gè)數(shù)一致的一組技能。表中結(jié)果顯示,使用其他技能分配方案的模型性能較預(yù)定義的方案(見表2)均有不同程度下降,表明了SkillNet-NLG技能分解方案對(duì)新任務(wù)的有效性。
表9 模型在三個(gè)新任務(wù)上的消融實(shí)驗(yàn)結(jié)果
在SkillNet-NLG的多任務(wù)訓(xùn)練階段(2.4節(jié)),為了克服任務(wù)數(shù)據(jù)量不均衡的問題,使用了基于溫度調(diào)節(jié)(Temperature-Scaled)的數(shù)據(jù)采樣混合策略。該策略根據(jù)數(shù)據(jù)采樣溫度T計(jì)算的概率選擇任務(wù)訓(xùn)練數(shù)據(jù)。為了進(jìn)一步考察采樣溫度T對(duì)模型在各個(gè)任務(wù)上的性能影響程度,選取了有代表性的T值進(jìn)行對(duì)比實(shí)驗(yàn),以提供T值選擇的依據(jù)。在參與多任務(wù)訓(xùn)練的五個(gè)任務(wù)的驗(yàn)證集上的實(shí)驗(yàn)結(jié)果如圖4所示。
圖4 不同采樣溫度對(duì)實(shí)驗(yàn)結(jié)果的影響
當(dāng)設(shè)置T= 1時(shí),數(shù)據(jù)采樣策略按照每個(gè)任務(wù)的實(shí)際訓(xùn)練數(shù)據(jù)大小的比例進(jìn)行采樣,這導(dǎo)致用于多任務(wù)訓(xùn)練的五個(gè)數(shù)據(jù)集大小極不平衡(見表3中數(shù)據(jù)集統(tǒng)計(jì)信息)。從圖中可以看出,此時(shí)高資源任務(wù)LCSTS(216萬(wàn)條訓(xùn)練數(shù)據(jù))在不同T設(shè)置中取得最大值;而低資源任務(wù)KdConv(6.3萬(wàn)條訓(xùn)練數(shù)據(jù))在不同T設(shè)置中值最小。隨著T值逐漸增大,高資源任務(wù)和低資源任務(wù)之間的數(shù)據(jù)不均衡現(xiàn)象逐漸得到緩解。高資源任務(wù)的分值開始下降,而低資源任務(wù)的分值開始上升。當(dāng)T= 4時(shí),模型在兩種極端情況之間達(dá)到一種平衡狀態(tài)。此時(shí)模型在五個(gè)任務(wù)上面的平均分值最高。根據(jù)這一實(shí)驗(yàn)結(jié)果,本文在所有多任務(wù)訓(xùn)練實(shí)驗(yàn)中均采用了T= 4的設(shè)置。
本文提出了一種稱作SkillNet-NLG的通用自然語(yǔ)言生成模型,該模型能夠僅使用一個(gè)模型處理多種自然語(yǔ)言生成任務(wù)。SkillNet-NLG的核心思想是執(zhí)行某一任務(wù)時(shí),根據(jù)預(yù)先定義的任務(wù)所需要的技能,稀疏激活模型中與該技能相關(guān)的模型參數(shù)。這種模型設(shè)計(jì)思路的優(yōu)勢(shì)在于使得模型在學(xué)習(xí)新任務(wù)的時(shí)候可以選擇與任務(wù)相關(guān)的技能遷移過去,從而避免不相關(guān)技能的負(fù)面影響。在多種自然語(yǔ)言生成任務(wù)上對(duì)模型進(jìn)行評(píng)估的實(shí)驗(yàn)結(jié)果表明,SkillNet-NLG性能優(yōu)于常用的基線模型,充分驗(yàn)證了其在自然語(yǔ)言生成任務(wù)上的有效性。
未來(lái)的研究工作中,可以探索將本文提出的方法應(yīng)用在中文以外的其他自然語(yǔ)言生成任務(wù)中,以驗(yàn)證方法的通用性。另外,本文中模型是通過修改Transformer的前饋網(wǎng)絡(luò)層來(lái)實(shí)現(xiàn)的,可以考慮其他實(shí)現(xiàn)方法,例如,改動(dòng)Transformer的多頭注意力層,進(jìn)一步提升模型性能。最后,可以考慮引入探查性的任務(wù)來(lái)研究模型的技能模塊學(xué)習(xí)到的知識(shí),使模型具有更強(qiáng)的可解釋性。