侯曉龍 周培林 鄒月嫻
(北京大學深圳研究生院現代數字信號處理實驗室 廣東省深圳市 518055)
近年來人工智能技術發展十分迅速,基于深度神經網絡(DNN)的自然語言處理技術取得了長足進步,并獲得廣泛且成功的應用,多個商業場景中的人機對話系統就是典型案例。例如,常見的天貓精靈、小愛同學等智能音箱產品給用戶提供音樂播放、天氣查詢、聊天等服務;阿里小蜜、京東JIMI 等在線智能客服機器人,能及時解決用戶購物過程中遇到的問題,加速成單轉化和提升用戶體驗,同時大幅降低企業客服人力投入。因此,人機對話系統具有巨大的商業價值。
一個完整的人機對話系統包括以下五大模塊:語音識別(Automatic Speech Recognition,ASR)、口語理解(Spoken Language Understanding,SLU)、對話管理(Dialogue Management,DM)、自然語言生成(Nature Language Generation,NLG)和語音合成模塊(Text-To-Speech,TTS)。其中,口語理解是對話系統的關鍵組成部分,意圖識別與槽位填充是口語理解的兩個重要子任務。意圖識別旨在從用戶表達中識別出用戶的意圖,其實質為文本分類問題。槽位填充則是從用戶表達中提取出為了完成某項任務所需要的語義概念,其實質是序列標注問題。這兩個子任務的性能好壞直接影響到人機對話系統能否正確理解用戶的意圖以及做出正確響應。因此針對意圖識別和槽位填充模型性能提升的研究,有助于提升人機對話系統的整體性能表現,具有重要的科研及工業應用價值。
目前,針對口語理解中的意圖識別與槽位填充任務,主要有兩種技術路線:一是分別對意圖識別和槽位填充進行獨立建模,另一類方法是對這兩個任務進行聯合建模。實際場景中,意圖與槽位信息是有關聯的。如在語音助手場景中,用戶意圖是打車的語句通常會帶有目的地槽位信息。而獨立建模的方法導致他們的監督信號和語義信息沒有被充分共享和利用。隨著研究的深入,基于大規模數據獲得的預訓練模型展現出強大的表征能力并在多個自然語言處理任務上表現出色。已有研究表明,基于預訓練模型和意圖識別與槽位填充聯合建模提升了口語理解的性能。但由于預訓練模型的復雜結構及龐大參數量,嚴重阻礙了其線上應用。為此,本文采用“教師-學生”知識蒸餾框架,開展對基于BERT 的意圖識別與槽位填充聯合學習模型的壓縮方法研究,在口語理解數據集ATIS 和SNIPS 上,所獲得的蒸餾口語理解模型參數量不到教師模型的三分之一,推斷速度是原基線模型的6.7 倍和8.6 倍,而性能在大多數指標上無明顯下降。
2.1.1 意圖識別
意圖識別旨在從用戶的表達語句中識別出用戶的意圖,其實質是文本分類問題,主要方法包括:
2.1.1.1 基于規則模板的意圖識別方法
此類方法首先從用戶表達中歸納總結出不同的用戶意圖,提取出各種意圖表達的規則,然后使用規則模板匹配的方法從用戶表達中識別用戶意圖。此類方法雖然實現簡單,計算效率較高,但由于同一意圖往往對應多樣的用戶表達,使得基于規則模板的意圖識別方法存在維護成本高、泛化能力差等問題,因此通常只適用于冷啟動階段。
2.1.1.2 基于傳統機器學習的意圖識別方法
基于傳統機器學習的意圖識別方法,首先對用戶的表達文本進行分詞、去停詞等預處理操作,然后使用BOW、TF-IDF、Word2Vec 等模型提取文本特征,最后使用一個分類器來完成意圖的分類。常用的分類器包括:決策樹、支持向量機、XgBoost 等。此類方法相較規則模板的方法有更好的泛化性,但是嚴重依賴于人工提取的文本特征。
2.1.1.3 基于深度神經網絡的意圖識別方法
隨著深度神經網絡在自然語言處理領域的發展,越來越多的研究者將卷積神經網絡(Convolution Neural Network,CNN)[1]和循環神經網絡(Recurrent Neural Network,RNN)[3]應用于意圖識別。2014年,Kim 等[1]提出一種基于TextCNN 的文本分類模型。該模型首先對由句子中的詞向量構成的矩陣做卷積、池化操作,然后通過一個文本分類器對得到的句子表征進行分類。雖然基于TextCNN的方法在以意圖識別為代表的文本分類任務上取得了良好性能,但該方法忽略了句子中的詞序信息,很難發現文本中的復雜模式。因此,2015年Ravuri[2]提出用RNN 和長短期記憶網絡(Long Short Term Memory,LSTM)[4]來建模文本中的長距離依賴,并通過利用LSTM 最后一個時間步的隱狀態信息,來完成意圖分類。
2.1.2 槽位填充
槽位填充旨在從用戶的表達中提取出為了完成某項任務所需要的語義概念,主要的方法包括:
2.1.2.1 基于字典、規則的槽位填充方法
此類方法首先構建槽位詞庫、以及槽位詞抽取的規則模板。然后通過字符串匹配、規則模板匹配的方法抽取槽位信息。此類方法實現簡單,但存在維護成本高、泛化性差的問題,只適用于系統冷啟動階段。
2.1.2.2 基于傳統機器學習的槽位填充方法
典型的方法是使用條件隨機場(Conditional Random Fields,CRF)[5]。CRF 是在給定一組輸入序列條件下,求另一組輸出序列條件概率分布的模型,廣泛應用于序列標注任務,2007年Raymond 等[6]提出了使用CRF 來建模槽位標簽間的依賴及約束關系,有效地提高了預測的準確度。
2.1.2.3 基于深度神經網絡的槽位填充方法
2013年Yao 等[7]提出了使用RNN 來做槽位的提取,在訓練的時候使用語義標簽作為標簽,而不是單詞。這種方法沒有直接依賴于中間的槽值,僅依賴于輸入的單詞序列,實現比較簡單。而且通過RNN 模型學習到了適合任務的詞嵌入,這使得模型性能上顯著超越了CRF。2014年Yao[8]提出了RNN 和CRF 結合的模型來進行序列標注,在RNN 的基礎上,融合CRF 的元素信息,通過轉移特征顯示建模輸出標簽的依賴關系,可以有效提升RNN 序列標注的性能。2015年Simonnet[9]的研究表明,通過在基于LSTM 的編碼-解碼框架中引入自注意力機制(Self-Attention)[14],可以進一步改善槽位填充的性能。
現有研究表明,意圖識別和槽位填充這兩個任務之間存在關聯性。因此在構建口語理解模型時,可以對二者進行聯合建模,即利用意圖的監督信號和語義信息來提升槽位填充任務的性能,從而進一步改善口語理解模型的整體表現。例如,在訂票場景中,從用戶的口語表達中識別到的訂票意圖可以輔助槽位填充模型識別出發地、目的地、時間等槽位信息,從而提高槽位填充的準確度。目前,意圖識別與槽位填充聯合建模的典型方法包括:
2.2.1 基于RNN 和注意力機制的聯合建模方法
2016年Liu 等[10]在RNN 中引入注意力機制來聯合建模意圖識別和槽位填充任務。該方法在ATIS 數據集上意圖識別與槽位填充任務都達到了當時最好的性能表現。
2.2.2 基于槽位門控單元和注意力機制的聯合建模方法
在Liu 等[10]提出的基于注意力機制的口語理解模型的基礎上,2018年Goo 等[11]進一步引入了槽位門控單元以顯式地建模槽位與意圖間的關系。該方法強化了意圖信息對槽位填充任務的輔助作用,不僅可以更充分的捕捉用戶口語輸入中的復雜模式,而且具有良好的泛化性。
2.2.3 基于BERT 預訓練語言模型的聯合建模方法
2019年Zhang 等[12]提出了基于BERT 預訓練語言模型的口語理解聯合建模方法,該方法選擇BERT 作為特征提取器,獲得用戶表達的上下文語義表征,并使用意圖增強機制來充分建模意圖與槽位的語義相關性。實驗結果表明,此方法在多個數據集上都達到了最好的性能。
很多研究工作表明,通過對大規模無監督語料進行預訓練,可以學習到通用的語言學知識和高質量的上下文文本表征,這對于下游的各類自然語言處理(Natural Language Processing,NLP)任務非常有幫助。其中,BERT(Bidirectional Encoder Representation Transformers)[13]是預訓練模型的典型代表,采用了Transformer 的多層雙向編碼結構,可以捕捉句子的上下文依賴關系并具有強大的文本表征能力。BERT 的輸入由詞嵌入,位置嵌入和段嵌入三部分組成,其輸出包括文本的句子級和詞級表征。另外,根據訓練語料規模的不同,Google 發布了BERT-Base 和BERT-Large 版本,BERT-Base 包括12 層的Transfomer,其參數量達到了 1.1 億。BERT-Large 包含24 層Transfomer,其參數量為3.3 億。
得益于BERT 強大的文本表征能力,BERT 在很多下游NLP 任務中取得了SOTA 的結果,但由于復雜的網絡結構及巨大的參數規模,很難把這些模型部署在資源有限的環境中。為此有很多工作[15]專門研究如何對復雜模型進行壓縮,包括對模型裁剪、稀疏化、量化加速,而知識蒸餾[16]也是其中一種常用方法。知識蒸餾是使用一個“教師-學生”框架,將結構復雜、參數規模巨大、學習能力強的教師模型學到的知識“蒸餾”出來,傳遞給結構簡單、參數量小的學生模型,從而得到一個速度快、能力強的蒸餾模型。
本文首先提出了一個基于BERT 的口語理解聯合模型,在該模型中使用自注意力機制來獲取各時間步的上下文表征,并引入了門控機制來顯式建模意圖信息對槽位填充任務的指導作用。然后,本文將模型壓縮技術應用到口語理解領域,采用知識蒸餾框架對模型進行蒸餾壓縮,最終得到一個輕量級、推斷速度與性能俱佳的高效口語理解模型。
如圖1所示,本文設計并構建了一個基于BERT 的口語理解聯合模型。給定用戶的輸入語句,該模型首先利用BERT 分別提取句子級和單詞級表征,并將句子級表征輸入一個意圖分類器獲取當前表達的意圖;然后,通過對單詞級表征進行Self-Attention 并結合使用Slot-Gate 來控制意圖信息的引入,輸出與BERT 詞級表征逐元素相乘來實現意圖信息和槽位信息的交互,并將交互后的單詞級表征輸入到CRF 模塊以建模預測標簽之間的約束關系,最后,輸出各個詞對應的槽位標簽。
3.1.1 BERT 編碼
把用戶表達語句通過WordPiece編碼并在首尾加上[CLS]、[SEP]這兩個特殊字符,得到詞嵌入,拼接上位置嵌入、段嵌入,輸入到BERT 模型中。給定輸入詞序列 x=(x1,x2,…,xT),BERT 的輸出是H=(h1,h2,…,hT)。
3.1.2 意圖識別
通過BERT 編碼輸出的第一個特殊字符[CLS]隱狀態信息得到整個句子的語義表征,然后再通過一個意圖分類器(IntentClassifier)對用戶意圖進行分類,

其中,h1是[CLS]對應的隱狀態,可以代表整個句子的語義信息,Wintent和bintent是分類器模型前向傳播網絡的權重矩陣及偏置參數。
3.1.3 門機制和自注意力機制
意圖信息(Intent)的引入有助于槽位填充任務,但相較于句子中非槽位詞,意圖信息更有利于槽位詞的提取。如果把意圖信息作用于句子中的每個詞,可能會導致一些非槽位詞被錯誤地預測為槽位詞。因此我們設計引入一個由線性變換結構組成的槽位門(Slot-Gate)來控制意圖信息的引入。
首先,使用自注意力機制(Self-Attention)[14]對BERT 輸出生成每個時間步上的下文感知表征st,然后拼接意圖向量vintent輸入到Slot-Gate 中得到門向量vt,通過逐元素相乘建模BERT 輸出與門向量間的交互,得到各時間步最終的隱狀態輸出ot,公式表達如下所示:

3.1.4 槽位填充
在得到ot后,如果直接通過softmax 函數輸出各個標簽的概率,概率最大的標簽為當前詞的槽位標簽。但這樣設計存在如下問題:softmax 只是在每一時間步找出預測概率最大的標簽,這些概率最大的標簽的計算相互獨立的。這樣模型無法學習到輸出標簽之間的轉移關系及序列標簽的約束條件,會導致出現一些不合理的預測,如B-ORG 之后下一個詞的標簽為I-PER。為此,本文創新地在模型中引入CRF 層來學習序列標簽的約束關系,以提高預測結果的合理性。公式表示如下所示:

3.1.5 聯合學習目標
圖1所示為本文設計的基于BERT 的意圖識別與槽位填充聯合學習模型。為了訓練該模型,本文使用最小化交叉熵損失,學習目標是最大化條件概率 p(yintent,yslot|x),公式表示如下所示:

其中,x 是輸入的單詞序列,p(yintent,yslot|x)是給定輸入x 時最大化的意圖和槽位條件概率分布。
基于BERT 的口語理解聯合模型,采用自注意力機制(Self-Attention)獲得上下文表征,并使用槽位門(Slot-Gate)來控制意圖信息的引入,有效提升了口語理解的性能。但由于使用BERT 導致模型存在網絡結構復雜、參數規模大,推斷速度慢的問題。為此,為了進一步提高模型的效率,本文基于“教師-學生”知識蒸餾框架(如圖2所示),試圖將結構復雜、參數規模巨大、學習能力強的教師模型中學到的知識“蒸餾”出來,傳遞給結構簡單、參數量小、學習能力弱的學生模型,從而提高學生模型的學習效果,達到模型壓縮的目的。
3.2.1 教師模型
本文所設計的教師模型是基于BERT 構建的口語理解聯合模型,如圖1所示。教師模型在口語理解數據集ATIS 和SNIPS 可以取得不錯的效果,但由于BERT 模型結構復雜、參數規模巨大,導致其在線推斷速度較慢,比較難部署到真實的線上業務場景,尤其是在一些低資源、高性能要求場景,如:移動設備、可穿戴設備場景。因此,我們需要構建輕量級的學生模型,通過教師模型對學生模型進行指導學習。
3.2.2 學生模型
本文設計的學生網絡,和教師網絡采用的是相同的模型結構,如圖1所示。不同的是教師網絡使用了包含12 個Transformer層的BERT,記作MT12。學生網絡使用包含1 個Transormer 層的BERT,記作MS1。為了進行實驗對比,也設計了包含2 個Transformer 層的學生網絡,命名為MS2。
3.2.3 訓練策略
本文設計的模型訓練框架如圖2所示。基于該“教師-學生”知識蒸餾框架,口語理解聯合模型的訓練步驟如下:
Step1.在訓練集上對教師網絡MT12進行訓練,得到一個效果最優的教師模型,記作Teacher12。
Step2.使用Teacher12預測輸出作為學生網絡MS1的“軟標簽”,與MS1預測輸出得到的損失為蒸餾損失,記作Ldistill。
Step3.使用數據中的類別“硬標簽”與MS1預測輸出得到的損失為交叉熵損失,記作LCE。
Step4.蒸餾框架使用Ldistill和LCE組成的損失函數,并最小化該損失作為訓練目標,損失函數如公式(8)至(12)所示。
Step5.通過以上步驟對學生網絡MS1進行訓練得到的模型為蒸餾模型,記作KD1。
Step6.重復Step2 到Step4,對學生網絡MS2進行訓練,得到KD2。
Step7.為了對比蒸餾模型KD1、KD2和獨立訓練的學生模型間的性能差異,對學生網絡MS1和MS2進行獨立訓練,得到學生模型Student1和Student2。

其中,Ldistill代表教師模型與學生模型知識蒸餾的損失,LCE代表學生模型輸出與數據樣本分類硬標簽之間的交叉熵損失,α 是兩部分損失的平衡參數,T 代表溫度,piT代表在溫度為T 時教師模型的輸出,qiT是學生模型的輸出,yi代表第i 個樣本真實的分類硬標簽,zs和zt分別代表學生模型和教師模型輸出的Logit 值。
在口語理解任務中,比較常用的兩個數據集是ATIS 和SNIPS。ATIS(Airline Travel Information System)數據集是航班預訂的語音記錄數據,訓練集有4978 個樣本,測試集有893 個樣本。在訓練集中,一共涵蓋21 種意圖和120 種語義槽。SNIPS 數據集是由SNIPS 公司于2018年開源的口語理解數據集,其訓練集、開發集、測試集中分別包括13084、700、700 個樣本,涉及7 種用戶意圖和72 種槽位。
教師模型Teacher12、學生模型Student1和Student2的隱藏層維度均為768,模型的優化器采用BertAdam,學習率設置為5e-5。知識蒸餾過程中,軟硬標簽均采用交叉熵損失函數,平衡參數α 為0.5,溫度T 為8,所有實驗均采用小批量訓練方法,批大小設為128。
口語理解任務中包括意圖識別和槽位填充兩個子任務,意圖識別和槽位填充分別使用準確率和F1 值作為評價指標,整個口語理解任務使用句準確率作為評價指標。
實驗結果如表1所示。在ATIS 數據集上,蒸餾模型KD1句準確率為0.86,略低于教師模型Teacher12的0.887,但參數量相比教師模型減少了72%,在89560 個樣本(20 倍的ATIS 訓練樣本)上進行推斷總耗時僅為3 秒,是教師模型推斷速度的6.7 倍。同時蒸餾模型KD1的槽位F1 值、句準確率均優于單獨訓練的學生模型Student1。蒸餾模型KD2句準確率為0.882,較蒸餾模型KD1提升2.2%,表現接近教師模型,意圖準確率、槽位F1 值及句準確率各指標均優于單獨訓練的學生模型Student2。在SNIPS 數據集上,蒸餾模型KD1句準確率為0.781,比教師模型Teacher12低了0.125,比單獨訓練的學生模型Student1高0.045。蒸餾模型KD2句準確率0.827,比教師模型低0.074,比單獨訓練的學生模型Student2高0.043。推斷速度方面,KD1和KD2在261680 個樣本(20 倍的SNIPS 訓練樣本)上的總耗時分別為34s 和58s,是教師模型推斷速度的8.6 倍和5 倍。蒸餾模型在槽位F1 值、句準確率均優于單獨訓練的學生模型。
為了驗證注意力和門機制對于知識蒸餾在口語理解任務上應用的影響,我們去掉教師網絡MT12中的Self-Attention 和Gate 模塊,實驗結果如表2所示。對比表1和表2的實驗結果可以發現,在去掉Self-Attention 和Gate 模塊后,教師模型Teacher12、蒸餾模型KD1的句準確率有一定程度下降,在SNIPS 數據集上蒸餾模型KD1降幅最大,下降了4.2%。
此外,現有研究[8]表明,對于槽填充任務,建模標簽間的依賴關系可以有效提高預測的準確度。因此,我們去掉教師網絡MT12中的CRF 模塊,測試了CRF 對模型性能的影響,實驗結果如表3所示。對比表1和表3的實驗結果可以發現,在去掉CRF 模塊時,教師模型Teacher12、蒸餾模型KD1和KD2的槽位F1 值、句準確率有一定程度下降,在SNIPS 數據集上蒸餾模型KD1的句準確率下降最大,下降了3.5%。
從實驗我們可以看出,通過教師模型對學生模型指導訓練得到的蒸餾模型,雖然性能上不能超越教師模型,但參數量相比教師模型減少三分之二,在ATIS 和SNIPS 數據集上的推斷速度是分別是教師模型的6.7 倍和8.6 倍,且在意圖識別準確率、槽位F1 值、句準確率指標上也接近教師模型,在ATIS 數據集上表現尤為明顯。

圖1:基于BERT 的口語理解聯合模型,輸入的語句是“play the most popular puretone”.

圖2:“教師-學生”知識蒸餾框架
基于BERT 的口語理解聯合模型雖然顯著提高了口語理解的性能,但由于其存在參數量巨大、推理速度慢等問題,往往難以在實際業務場景中應用。而且大部分聯合模型在槽位填充任務中沒有充分利用到意圖信息。針對以上問題,本文設計了一個基于BERT的意圖識別和槽位填充聯合學習模型,使用自注意力機制(Self-Attention)獲得上下文表征,并通過槽位門(Slot-Gate)來控制意圖信息的引入。在此基礎上,提出了基于“教師-學生”的知識蒸餾訓練方法,采用教師模型輸出“軟標簽”作為學生網絡監督信號,結合“硬標簽”監督信號,對學生網絡進行指導訓練,得到一個參數規模小的口語理解蒸餾模型。實驗結果表明,口語理解蒸餾模型獲得了與教師模型接近的意圖識別和槽填充性能,相比于教師模型,其參數量降低三分之二,推斷速度在ATIS 和SNIPS 數據集上分別為教師模型的6.7 倍和8.6 倍。此外,在后續的研究工作中,我們將重點關注端到端的口語理解任務,并進一步探索知識蒸餾技術在該任務上的有效性。

表1:教師模型、學生模型、蒸餾模型性能

表2:教師模型、蒸餾模型性能(無Attention 和Gate)

表3:教師模型、蒸餾模型性能(無CRF)