劉高軍,王 岳,段建勇,何 麗,王 昊
(1.北方工業(yè)大學(xué) 信息學(xué)院,北京 100144;2.CNONIX 國家標(biāo)準(zhǔn)應(yīng)用與推廣實(shí)驗(yàn)室,北京 100144;3.富媒體數(shù)字出版內(nèi)容組織與知識(shí)服務(wù)重點(diǎn)實(shí)驗(yàn)室,北京 100144)
口語理解(Spoken Language Understanding,SLU)是任務(wù)型對(duì)話系統(tǒng)的關(guān)鍵組成部分,通常包含意圖檢測(cè)和槽填充2 個(gè)相互關(guān)聯(lián)的子任務(wù)。其中,意圖檢測(cè)需要完成對(duì)口語語句整體意圖的分類,槽填充則標(biāo)注句子中的關(guān)鍵語義成分。
近年來,以基于Transformer 的雙向編碼器表示(Bidirectional Encoder Representations from Transformer,BERT)[1]為代表的基于預(yù)訓(xùn)練的語言模型在各領(lǐng)域中都得到了廣泛的應(yīng)用,并在多項(xiàng)任務(wù)中表現(xiàn)出優(yōu)異的性能。文獻(xiàn)[2]驗(yàn)證了BERT 模型在SLU 任務(wù)中極其優(yōu)異的性能表現(xiàn)。然而,以BERT 為代表的語言模型只能建立文本的上下文關(guān)聯(lián),而缺少豐富的外部知識(shí)來支持其完成更為復(fù)雜的推理?;谶@一背景,研究人員開始嘗試通過為語言模型融合知識(shí)進(jìn)行遷移訓(xùn)練來提升其在特定任務(wù)中的性能表現(xiàn)。文獻(xiàn)[3]通過使用注意力機(jī)制為BERT 融入外部知識(shí)來提升其在機(jī)器閱讀理解任務(wù)中的性能表現(xiàn)。而在口語理解領(lǐng)域,則較少有研究人員進(jìn)行該方面的研究。與文獻(xiàn)[3]相同,研究人員使用2 個(gè)知識(shí)庫為BERT 提供外部知識(shí),記錄單詞間語義關(guān)系的WordNet[4]以及保存了實(shí)體概念的NELL(Never-Ending Language Learning)[5],它們分別為模型提供了語言學(xué)知識(shí)和真實(shí)世界知識(shí),使用KB-LSTM[6]提供的100 維預(yù)訓(xùn)練嵌入來對(duì)知識(shí)進(jìn)行表示,通過這些外部知識(shí)來提升模型對(duì)于模糊、以及可能存在錯(cuò)誤語句的理解能力,并賦予模型更加優(yōu)秀的復(fù)雜推理能力。
由于口語理解任務(wù)包含了意圖檢測(cè)和槽填充這2 個(gè)相關(guān)聯(lián)的子任務(wù),近年來出現(xiàn)了大量的聯(lián)合模型,旨在通過此原理,利用各種聯(lián)合訓(xùn)練機(jī)制提升模型在口語理解任務(wù)中的性能表現(xiàn)[7-9]。例如:文獻(xiàn)[10]將編碼器-解碼器結(jié)構(gòu)和注意力機(jī)制引入到口語理解任務(wù)中,使2 個(gè)子模塊使用共同的編碼器計(jì)算損失函數(shù)來實(shí)現(xiàn)聯(lián)合訓(xùn)練;文獻(xiàn)[11]通過門控機(jī)制為槽填充引入意圖信息來提升模型的性能表現(xiàn);文獻(xiàn)[12]提出了循環(huán)運(yùn)行的子網(wǎng)絡(luò)結(jié)構(gòu),使2 個(gè)子模塊互相利用對(duì)方產(chǎn)生的特征信息提升各自的性能表現(xiàn);文獻(xiàn)[13]通過引入單詞級(jí)別的意圖檢測(cè)和堆棧傳播機(jī)制[14]來提升模型的性能表現(xiàn)。
本文提出一種針對(duì)口語理解任務(wù)的基于BERT 的聯(lián)合模型。該模型引入單詞級(jí)別的意圖特征,使用注意力機(jī)制為BERT 融入外部知識(shí),通過外部知識(shí)的聯(lián)合訓(xùn)練機(jī)制提升其在口語理解任務(wù)中的性能表現(xiàn)。最終在ATIS[15]和Snips[16]2 個(gè)公開數(shù)據(jù)集上進(jìn)行了實(shí)驗(yàn)。
下文通過4 個(gè)模塊對(duì)本文模型進(jìn)行介紹:
1)BERT 編碼器和意圖編碼器:為每個(gè)口語語句輸出其對(duì)應(yīng)的單詞級(jí)別的語義槽值特征和意圖特征。
2)知識(shí)整合器:通過注意力機(jī)制將每個(gè)單詞所對(duì)應(yīng)的多個(gè)知識(shí)嵌入進(jìn)行加權(quán)運(yùn)算并得到相應(yīng)的知識(shí)向量。
3)知識(shí)注意力層:使用前2 個(gè)模塊的輸出來計(jì)算單詞級(jí)別的知識(shí)上下文向量。
4)知識(shí)解碼器:以單詞級(jí)別的意圖特征、語義槽值特征和知識(shí)上下文向量作為輸入,經(jīng)過計(jì)算給出單詞級(jí)別的意圖輸出和語義槽值輸出。
在上述4 個(gè)模塊中,知識(shí)整合器和知識(shí)解碼器是模型中最重要的2 個(gè)模塊,它們分別完成了融合知識(shí)和聯(lián)合訓(xùn)練這2 個(gè)重要的步驟。
1.1.1 BERT 編碼器和意圖編碼器
如圖1 所示,BERT 編碼器和意圖編碼器會(huì)為每個(gè)口語語句輸出其對(duì)應(yīng)的單詞級(jí)別的語義槽值特征和意圖特征。
圖1 BERT 編碼器和意圖編碼器的結(jié)構(gòu)Fig.1 Structure of BERT encoder and intent encoder
另外,由于BERT 輸出的特殊向量[CLS]中蘊(yùn)含了整個(gè)句子的意圖特征信息,因此使用其作為單向LSTM 的初始隱藏層狀態(tài)輸入h0。
1.1.2 知識(shí)整合器
圖2 知識(shí)整合器的結(jié)構(gòu)Fig.2 Structure of knowledge integrator
其中:Wc是經(jīng)過訓(xùn)練所得到的2d×100 維權(quán)重參數(shù)。在得到相關(guān)性系數(shù)αi,j后,通過式(3)進(jìn)行加權(quán)計(jì)算得到單詞xi的100 維知識(shí)特征ki:
為單詞級(jí)別的知識(shí)特征K=(k1,k2,…,kT)添加位置信息,位置信息的計(jì)算方法與文獻(xiàn)[19]相同。具體地,對(duì)于單詞xi,使用式(4)和式(5)計(jì)算與之對(duì)應(yīng)的100 維位置嵌入pi:
其中:i表示單詞在句子中的位置;j代表知識(shí)特征向量的下標(biāo)位置。通過將單詞xi所對(duì)應(yīng)的100 維單詞級(jí)別知識(shí)特征ki與100 維位置嵌入pi按位相加,得到包含位置信息的知識(shí)特征ki=ki+pi。
1.1.3 知識(shí)注意力層
知識(shí)注意力層使用前2 個(gè)模塊的輸出來計(jì)算單詞級(jí)別的知識(shí)上下文向量。
其中:Wk是經(jīng)過訓(xùn)練所得到的d×100 維權(quán)重參數(shù)。然后,通過式(7)進(jìn)行加權(quán)計(jì)算得到單詞xi的100 維知識(shí)上下文向量ei:
對(duì)知識(shí)上下文向量進(jìn)行層標(biāo)準(zhǔn)化[20]處理,得到與輸入語句X=(x1,x2,…,xT)所對(duì)應(yīng)的知識(shí)上下文向量E=(e1,e2,…,eT)。
1.1.4 知識(shí)解碼器
圖3 知識(shí)解碼器的結(jié)構(gòu)Fig.3 Structure of knowledge decoder
對(duì)于輸入語句X=(x1,x2,…,xT),還需要根據(jù)它的單詞級(jí)別意圖檢測(cè)結(jié)果計(jì)算得出句子級(jí)別的意圖預(yù)測(cè)結(jié)果oI。計(jì)算方法如式(14)所示:
其中:m是句子的長度;nI是意圖標(biāo)簽的數(shù)量;αj表示一個(gè)第j位為1 且其他位為0 的nI維0-1 向量;argmax表示返回α中最大值的索引操作。
由于模型引入了單詞級(jí)別的意圖特征并進(jìn)行了單詞級(jí)別的意圖檢測(cè)和槽填充,為了最大限度地利用這些特征,使用式(15)~式(17)來計(jì)算模型的損失值L:
本文選擇WordNet和NELL(Never-Ending Language Learner)2 個(gè)知識(shí)庫構(gòu)成模型最終使用的知識(shí)庫。WordNet 是一個(gè)英語語義數(shù)據(jù)庫,它根據(jù)詞匯的細(xì)分詞義概念對(duì)其進(jìn)行分組,將有相同詞義的詞匯歸為一個(gè)同義詞集合。WordNet 為每一個(gè)詞義提供了簡短的定義,并記錄不同的詞義之間的語義關(guān)系,如felidae 和cat 的關(guān)系是hypernym_of。NELL 通過互聯(lián)網(wǎng)挖掘的方法自動(dòng)抽取并保存了大量的三元組實(shí)體概念知識(shí),如(Google,is a,company)。之所以選擇這2 個(gè)知識(shí)庫是因?yàn)閮烧叽鎯?chǔ)的知識(shí)構(gòu)成了互補(bǔ)關(guān)系,WordNet 為模型提供語言學(xué)知識(shí),NELL 為模型提供真實(shí)世界知識(shí),從而幫助模型獲取比文本更細(xì)粒度的特征信息。
通過在ATIS 和Snips 公開數(shù)據(jù)集上進(jìn)行的一系列實(shí)驗(yàn)驗(yàn)證了模型出色的性能表現(xiàn)。2 個(gè)數(shù)據(jù)集均采用與文獻(xiàn)[11]相同的數(shù)據(jù)劃分。ATIS 數(shù)據(jù)集收錄了用戶預(yù)定、查詢航班信息時(shí)的錄音數(shù)據(jù),在訓(xùn)練集、開發(fā)集和測(cè)試集中分別含有4 478、500 和893 條語句。訓(xùn)練集中還含有21 個(gè)意圖標(biāo)簽和120 個(gè)語義槽值標(biāo)簽。Snips 數(shù)據(jù)集收錄了個(gè)人語音助手Snips的用戶數(shù)據(jù),在訓(xùn)練集、開發(fā)集和測(cè)試集中分別包含13 084、700 和700 條語句。訓(xùn)練集中含有7 個(gè)意圖標(biāo)簽和72 個(gè)語義槽值標(biāo)簽。
使用基于英語的無大小寫B(tài)ERT-Base 模型進(jìn)行微調(diào)訓(xùn)練,該模型含有12 層、768 個(gè)隱藏層狀態(tài)和12 個(gè)注意力頭數(shù)。在微調(diào)訓(xùn)練過程中,根據(jù)模型在開發(fā)集上的效果來選擇所有超參數(shù)的取值。語句最大長度為50,每個(gè)單詞的最大知識(shí)數(shù)為80。對(duì)于ATIS 和Snips 數(shù)據(jù)集,批大小分別被設(shè)置為16 和64,分類器的遺忘率分別為0.2 和0.1。此外,使用初始學(xué)習(xí)率為5e-5 的Adam[21]作為優(yōu)化器。
模型在2 個(gè)數(shù)據(jù)集上的性能表現(xiàn)如表1 所示。使用準(zhǔn)確率和F1 得分來評(píng)估模型在意圖檢測(cè)和槽填充2 個(gè)子任務(wù)中的效果,用句子級(jí)別的語義準(zhǔn)確率來評(píng)估模型的整體性能表現(xiàn)。的模型性能表現(xiàn)。從實(shí)驗(yàn)結(jié)果可以看出:與融合2 種知識(shí)模型相比,模型在2 組數(shù)據(jù)集上的性能表現(xiàn)均出現(xiàn)了下滑,且僅融合WordNet 知識(shí)和僅融合NELL 知識(shí)的模型在ATIS 數(shù)據(jù)集上的性能表現(xiàn)均優(yōu)于無任何知識(shí)的模型,而在Snips 數(shù)據(jù)集上,僅融合NELL 知識(shí)的模型雖然在整體的性能表現(xiàn)上略低于不融合外部知識(shí)的模型,但在意圖檢測(cè)和槽填充這2 個(gè)子任務(wù)上均優(yōu)于后者。
表1 本文模型在2 個(gè)數(shù)據(jù)集上的性能表現(xiàn)Table 1 Performance of the model in this paper on two datasets %
表1 的第1 部分是基準(zhǔn)模型,由2 個(gè)基于BERT的聯(lián)合模型BERT SLU[2]和BERT+Stack-Prop[13]組成。這2 個(gè)模型均在2019 年被提出,且相比基于循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)[22]、卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)[23]、條件隨機(jī)場(Conditional Random Fields,CRF)[24]及支持向量機(jī)(Support Vector Machine,SVN)[25]的傳統(tǒng)口語理解模型具有更加優(yōu)秀的性能表現(xiàn)。其中,BERT SLU 僅使用BERT 完成口語理解任務(wù),BERT+Stack-Prop 則引入堆棧傳播機(jī)制來提升BERT 在口語理解中的性能表現(xiàn),本文分別使用BERT 和BERT+堆棧作為這2 個(gè)模型的簡稱。
第2 部分則展示了BERT 在融合外部知識(shí)之后的性能表現(xiàn),本文簡稱為BERT+知識(shí)??梢钥闯觯诤贤獠恐R(shí)后,BERT 模型在2 個(gè)數(shù)據(jù)集上均有著超過基準(zhǔn)模型的性能表現(xiàn)。在ATIS 數(shù)據(jù)集上,與僅使用BERT 的BERT SLU 相比,在意圖準(zhǔn)確率中獲得了0.4 個(gè)百分點(diǎn)的提升,且在句子級(jí)別的語義準(zhǔn)確率這一指標(biāo)上獲得了0.9 個(gè)百分點(diǎn)的提升。在Snips 數(shù)據(jù)集上,模型在槽填充F1 得分中獲得了0.2 個(gè)百分點(diǎn)的提升,且在句子級(jí)別的語義準(zhǔn)確率這一指標(biāo)上獲得了0.5 個(gè)百分點(diǎn)的提升。
通過以上分析可以看出:
1)引入外部知識(shí)可以提升BERT 模型在口語理解任務(wù)中的性能表現(xiàn)。
2)引入單詞級(jí)別的意圖特征提高了知識(shí)融合的效果。
3)聯(lián)合訓(xùn)練機(jī)制能夠利用外部知識(shí)計(jì)算,得到可以被特定子任務(wù)使用的特征信息。
通過設(shè)置多組消融實(shí)驗(yàn),從不同的角度驗(yàn)證了上述方法的正確性。
使用以下3 個(gè)模型進(jìn)行消融實(shí)驗(yàn)來驗(yàn)證引入外部知識(shí)對(duì)模型性能的提升作用:
1)不引入任何知識(shí),僅讓知識(shí)解碼器以單詞級(jí)別的意圖特征和語義槽值特征作為輸入進(jìn)行聯(lián)合訓(xùn)練。
2)僅為模型引入WordNet 所提供的語言學(xué)知識(shí)。
3)僅為模型引入NELL 所提供的真實(shí)世界知識(shí)。
可以從表2 的第1 部分看到3 個(gè)參與消融實(shí)驗(yàn)
表2 融合不同外部知識(shí)對(duì)模型性能的影響Table 2 Effect of integrate different external knowledge on model performance %
從表2 可以看出:融入知識(shí)模型可以有效提升模型的性能表現(xiàn),并且在一定程度上體現(xiàn)了WordNet 和NELL 這2 個(gè)知識(shí)庫可以有效互補(bǔ)。
引入一個(gè)僅使用句子級(jí)別意圖特征的模型作為對(duì)照,驗(yàn)證引入單詞級(jí)別的意圖特征對(duì)模型效果的影響。該模型不使用LSTM 對(duì)輸入語句的每個(gè)單詞映射出與之對(duì)應(yīng)的單詞級(jí)別意圖特征,而使用BERT編碼器輸出的特殊向量作為每個(gè)單詞的意圖特征。
從表3 所示的實(shí)驗(yàn)結(jié)果可以看出:引入單詞級(jí)別的意圖特征可以進(jìn)一步提高模型的性能表現(xiàn),這可能是因?yàn)榫渥蛹?jí)別的意圖特征在融合知識(shí)和聯(lián)合訓(xùn)練的過程中無法有效涵蓋每個(gè)單詞的語義特性。此外,使用句子級(jí)別的意圖特征也不利于通過注意力機(jī)制來計(jì)算2 個(gè)單詞間的相關(guān)性。
表3 單詞級(jí)別意圖特征對(duì)模型性能的影響Table 3 Effect of word level intent feature on model performance %
在知識(shí)融合器中,通過注意力機(jī)制來對(duì)知識(shí)嵌入做加權(quán)求和得到單詞的知識(shí)向量。如果不為知識(shí)嵌入加入位置信息,那么這些向量就難以在接下來的注意力計(jì)算中反映彼此的位置關(guān)系。為了驗(yàn)證上述觀點(diǎn),設(shè)置一個(gè)不會(huì)在知識(shí)融合過程中為知識(shí)向量添加位置信息的模型作為對(duì)照組。
從表4 可以看出:引入位置信息可以進(jìn)一步提升模型的性能表現(xiàn),也同時(shí)驗(yàn)證了上述猜想的合理性。
表4 位置信息對(duì)模型性能的影響Table 4 Effect of location information on model performance %
引入聯(lián)合訓(xùn)練機(jī)制的消融實(shí)驗(yàn)驗(yàn)證了聯(lián)合訓(xùn)練對(duì)模型性能的提升。實(shí)驗(yàn)中使用2 個(gè)模型作為對(duì)照:
1)將意圖解碼器和語義槽值解碼器從模型中刪除,用知識(shí)上下文向量來替代這2個(gè)解碼器所輸出的特征信息。
2)使語義槽值解碼器不再以意圖解碼器輸出的特征作為輸入,讓2 個(gè)解碼器獨(dú)立運(yùn)行。
如表5 所示,在2 個(gè)數(shù)據(jù)集上使用2 個(gè)獨(dú)立解碼器的模型在性能上優(yōu)于不含解碼器的模型,且低于使用2 個(gè)相關(guān)聯(lián)解碼器進(jìn)行聯(lián)合訓(xùn)練的情況。這表明在2 個(gè)子任務(wù)所對(duì)應(yīng)的解碼器之間引入聯(lián)合訓(xùn)練機(jī)制可以進(jìn)一步提升模型的性能表現(xiàn)。
表5 聯(lián)合訓(xùn)練機(jī)制對(duì)模型性能的影響Table 5 Effect of joint training mechanism on model performance %
從ATIS 數(shù)據(jù)集中選擇2 個(gè)案例來體現(xiàn)模型在引入外部知識(shí)后相比BERT SLU 的性能提升。
從表6 可以看出:雖然BERT 使用大量的文本數(shù)據(jù)集來進(jìn)行訓(xùn)練,它仍然無法正確地標(biāo)記“michigan”的語義槽值。而本文提出的模型卻因?yàn)槿诤狭薔ELL 提供的真實(shí)世界知識(shí)而正確地判斷了密歇根是美國的一個(gè)州而非一座城市。
表6 NELL 知識(shí)對(duì)模型性能的影響Table 6 Effect of NELL knowledge on model performance
表7 所示的案例則體現(xiàn)了本文模型在應(yīng)對(duì)邏輯復(fù)雜不清晰的口語語句時(shí)具有更強(qiáng)的性能表現(xiàn)。在表7的復(fù)雜語句中,本文模型識(shí)別出了2 個(gè)“milwaukee”之間隱含的逗號(hào)分隔符,成功地構(gòu)建出了這條語句中的內(nèi)部邏輯關(guān)系。這是因?yàn)閃ordNet所提供的語言學(xué)知識(shí)使模型性能得到了提升。
表7 WordNet 知識(shí)對(duì)模型性能的影響Table 7 Effect of WordNet knowledge on model performance
本文提出一種基于BERT 的聯(lián)合模型,旨在驗(yàn)證預(yù)訓(xùn)練語言模型融入知識(shí)進(jìn)行遷移學(xué)習(xí)這一方法在口語理解領(lǐng)域的可行性。通過引入單詞級(jí)別的意圖特征并使用注意力機(jī)制為模型融入外部知識(shí),并使用聯(lián)合訓(xùn)練機(jī)制來提升模型在口語理解任務(wù)中的性能表現(xiàn)。在ATIS 和Snips 這2 個(gè)公開數(shù)據(jù)集上進(jìn)行的實(shí)驗(yàn)結(jié)果表明,該模型相比BERT 模型具有更好的性能表現(xiàn)。后續(xù)將繼續(xù)尋找更為高效的可融合知識(shí)的聯(lián)合學(xué)習(xí)機(jī)制,并探索跨語言知識(shí)融合方法,通過融合外部知識(shí)提升口語理解模型的性能。