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