廖勝蘭,吉建民,俞 暢,陳小平
(1.中國科學(xué)技術(shù)大學(xué) 計算機科學(xué)與技術(shù)學(xué)院,合肥 230026;2.中國科學(xué)技術(shù)大學(xué) 軟件學(xué)院,合肥 230031)
隨著人工智能領(lǐng)域的發(fā)展,越來越多的語音助手、聊天機器人和服務(wù)機器人等融入到人類的生活中。與這些語音助手、機器人進行交流的過程稱為人機交互,而人機交互的第一步就是機器人需要理解用戶的語義意圖?,F(xiàn)有的人機交互對話系統(tǒng)主要有任務(wù)導(dǎo)向型對話系統(tǒng)和非任務(wù)導(dǎo)向型聊天對話系統(tǒng)兩種。在任務(wù)型導(dǎo)向?qū)υ捪到y(tǒng)中,當有目的地要求機器人完成某項工作時,機器人必須先理解用戶的意圖。例如,手機上的語音助手需要理解用戶的意圖是查天氣還是撥打電話,餐廳的機器人需要理解用戶的意圖是點餐還是結(jié)賬。因此,意圖識別是人機交互系統(tǒng)中極為重要的模塊,并且作為對話系統(tǒng)中的意圖識別模塊,需要具有快速的響應(yīng)能力。
意圖識別也叫做意圖分類,是一種特殊的文本分類。因為在任務(wù)型導(dǎo)向?qū)υ捪到y(tǒng)中,用戶意圖通常具有文本較短、目的性強等特點。意圖分類從傳統(tǒng)的模板匹配方法到統(tǒng)計學(xué)習(xí)方法,再到目前流行的深度學(xué)習(xí)方法,已經(jīng)有大量的研究團隊提出了許多經(jīng)典的模型。隨著自然語言處理領(lǐng)域深度學(xué)習(xí)模型的發(fā)展,谷歌公司(Google)在2018 年提出的BERT(Bidirectional Encoder Representations from Transformers)模型,使得大規(guī)模的預(yù)訓(xùn)練方法成為自然語言處理領(lǐng)域的主流方法[1]。
雖然BERT 模型在自然語言處理領(lǐng)域的各項任務(wù)上都能取得很好的效果,但是由于其模型龐大,訓(xùn)練需要大量數(shù)據(jù)且耗費大量資源,因此高校及中小企業(yè)的科研團隊難以從頭預(yù)訓(xùn)練BERT。因此,如何利用預(yù)訓(xùn)練過的BERT 模型來應(yīng)用到特定任務(wù)上成為一個值得探討的課題。根據(jù)文獻[1]中的實驗結(jié)果,基于BERT 進行微調(diào)的教師模型能得到比Text-CNN[2]和Text-RCNN(Recurrent Convolution Neural Network)[3]等經(jīng)典模型更高的準確率,但是由于模型規(guī)模依然龐大,在任務(wù)中預(yù)測的時間也相應(yīng)更長,在應(yīng)用到實際任務(wù)時受到延時等影響。因此,用教師模型在預(yù)訓(xùn)練及微調(diào)中獲得的知識,來指導(dǎo)原有小規(guī)模模型訓(xùn)練,從而提升小規(guī)模模型的性能。這種訓(xùn)練方法稱為知識蒸餾(Knowledge Distillation,KD)[4]。
在知識蒸餾的過程中,除原有的小規(guī)模數(shù)據(jù)集外,本文利用一種序列生成對抗網(wǎng)絡(luò)(sequence Generative Adversarial Network,seqGAN)[5]模型來生成更多的領(lǐng)域內(nèi)的無標簽文本。無標簽文本作為原有數(shù)據(jù)集的擴充,沒有類別標注,可利用擁有大量知識的教師模型來預(yù)測數(shù)據(jù)的類別,作為擴展數(shù)據(jù)訓(xùn)練學(xué)生模型。通過無標簽文本,教師模型中的知識可以更好地遷移到學(xué)生模型,本文選取經(jīng)典的文本分類模型作為學(xué)生模型,對于教師模型,則對預(yù)訓(xùn)練的BERT 模型進行改進,并在實驗過程中對改進模型的性能進行分析和比較。
傳統(tǒng)的意圖分類方法主要是基于手工模板和專家規(guī)則的方法,能夠在小數(shù)據(jù)集上較快實現(xiàn),但是由于模板和規(guī)則具有領(lǐng)域特征,因此難以維護,可移植性較差。文獻[6]研究發(fā)現(xiàn),即使在同一領(lǐng)域內(nèi),不同的表達方式也會導(dǎo)致規(guī)則模板數(shù)量增加,因此會耗費大量的資源。所以,傳統(tǒng)的方法雖然只需要少量數(shù)據(jù),但是與領(lǐng)域任務(wù)高度相關(guān),且依賴于人工資源。
統(tǒng)計學(xué)習(xí)方法開始興起后,特征工程加淺層分類器的機器學(xué)習(xí)模型成為主流。特征工程是指對語料文本進行特征提取,如字、詞特征、N-Gram、TFIDF(Term Frequency-Inverse Document Frequency)特征權(quán)重等。分類器的訓(xùn)練依賴于特征工程中提取的文本特征,常用的分類器有支持向量機(Support Vector Machine,SVM)[7]、邏輯斯蒂克回歸(Logistic Regression,LR)[8]、樸素貝葉斯(Na?ve Bayes,NB)[9]和集成模型Adaboost[10]等。許多研究者在特征的降維和分類器的設(shè)計方面做了大量的工作,例如YANG 對各種特征選擇方法,包括信息增益、互信息和卡方統(tǒng)計量等,從實驗上進行了分析和比較[11]。
由于自然語言的離散性質(zhì),深度學(xué)習(xí)很難直接應(yīng)用到自然語言處理領(lǐng)域。因此,如何解決文本的連續(xù)表示是一個難題。詞向量的分布式表示提出后[12],深度學(xué)習(xí)模型可以提取到文本更深層的特征,從而進行高準確率的分類。隨著深度學(xué)習(xí)模型在自然語言處理領(lǐng)域的發(fā)展和應(yīng)用,越來越多的學(xué)者將卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)[2]、循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)[13]和其變體長短時記憶(Long Short-Term Memory,LSTM)[14]、門控循環(huán)單元(Gated Recurrent Unit,GRU)[15]和注意力機制[16]等應(yīng)用于意圖識別任務(wù)中。深度學(xué)習(xí)模型可以免去復(fù)雜的人工特征工程,直接在網(wǎng)絡(luò)中進行特征提取,實現(xiàn)端到端的訓(xùn)練過程。
從詞向量的分布式訓(xùn)練開始,預(yù)訓(xùn)練模型逐漸被人們熟知。最早的CBOW(Continuous Bag of Words)和Skip-gram 模型分別通過利用上下文預(yù)測中心詞和利用中心詞預(yù)測上下文作為訓(xùn)練目標,對無標簽數(shù)據(jù)進行訓(xùn)練,得到每個詞含有語義信息的詞向量表示[17]。但是這樣訓(xùn)練得到的詞向量是靜態(tài)的,無法解決不同語境下的一詞多義性問題。因此,文獻[18]提出一個雙向LSTM(Bi-LSTM)的語言模型,稱為ELMO(Embedding from Language Models)。ELMO 模型的雙向LSTM 結(jié)構(gòu)產(chǎn)生的詞向量包含左側(cè)上文信息和右側(cè)下文信息,是上下文相關(guān)的動態(tài)詞向量,并且輸入語句中每個單詞都能得到對應(yīng)的3 個詞向量,從底層到頂層分別包含了不同層次的語義信息,可以分別用于特定任務(wù)上的詞向量輸入。
但是ELMO 模型基于循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),其中單元是LSTM,難以并行訓(xùn)練,自研究人員提出Transformer 模型[19]后,自注意力結(jié)構(gòu)的高度并行化訓(xùn)練大幅提升了模型的訓(xùn)練速度,因此該模型具有更深的深度和更強的語義表達能力。Transformer 模型在許多任務(wù)上都代替了原來基于RNN 的模型。隨后,基于Transformer 塊結(jié)構(gòu)的GPT(Generative Pre-Training)[20]模型和BERT 模型[1]相繼提出。GPT模型是單向的語言模型,相比循環(huán)神經(jīng)網(wǎng)絡(luò)可以捕捉到更長的語義信息,計算速度更快。但是GPT 模型的單向特征會忽略上下文信息,限制了其在更多應(yīng)用場景的效果。
BERT 模型則是一個基于Transformer 結(jié)構(gòu)的雙向語言模型,采用了掩碼語言模型(Masked Language Model,MLM)和下一句預(yù)測(Next Sentence Predict,NSP)兩個方法作為預(yù)訓(xùn)練過程中的任務(wù),并且使用更強大的機器訓(xùn)練更大規(guī)模的數(shù)據(jù),使得BERT 的結(jié)果達到了全新的高度。在BERT 模型之后,許多研究團隊提出諸多改進方案,包括對語言模型改進用于語言生成的MASS 模型[21]、融合知識圖譜進行改進的ERNIE 模型[22]和用于多任務(wù)學(xué)習(xí)的MTDNN 模型[23]等。
圖1 基于知識蒸餾的意圖分類框架Fig.1 Intent classification framework based on knowledge distillation
知識蒸餾的概念最早在計算機視覺領(lǐng)域被提出[4],可以被看作一種模型壓縮方法。“教師-學(xué)生”框架將復(fù)雜的、學(xué)習(xí)能力強的教師網(wǎng)絡(luò)學(xué)到的特征表示知識“蒸餾”出來,傳遞給參數(shù)量小、學(xué)習(xí)能力弱的學(xué)生網(wǎng)絡(luò)。
對于一般的分類問題,數(shù)據(jù)的標簽是一個“onehot”類別,也即一條數(shù)據(jù)的類別是固定的,稱為“硬標簽”。但在很多實際情況下,一條數(shù)據(jù)有一定的概率可能屬于其他的類別。比如,在手寫體識別任務(wù)中,一個模糊的“3”圖片,由于形狀的相似性,它有一定的概率屬于“2”或“5”類別。因此,在蒸餾過程中,訓(xùn)練完成的教師網(wǎng)絡(luò)在預(yù)測時將soft Max 層的標簽概率分布信息提供給學(xué)生模型作為指導(dǎo)。這些標簽概率分布包含了類別間信息,文獻[4]將其稱為軟標簽。這種軟標簽中包含的特征信息是“one-hot”類別標簽中沒有的,也是學(xué)生模型難以學(xué)到的。因此,通過將大型模型的軟標簽信息傳遞給學(xué)生模型,可以提高學(xué)生模型的學(xué)習(xí)能力,起到模型壓縮的效果,使得將網(wǎng)絡(luò)部署到客戶端成為可能。
本文所提出的知識蒸餾框架如圖1 所示。
知識蒸餾框架步驟以下:
步驟1對于實驗真實數(shù)據(jù)集D,使用seqGAN模型生成大量領(lǐng)域內(nèi)的相似無標簽數(shù)據(jù),構(gòu)成D′(詳細見本文第3 節(jié))。
步驟2用真實數(shù)據(jù)集D對教師模型進行微調(diào),得到一個準確率高、學(xué)習(xí)到大量領(lǐng)域知識的模型。
步驟3用教師模型對生成的無標簽數(shù)據(jù)集D′進行預(yù)測,對每條數(shù)據(jù)進行標注。
步驟4將數(shù)據(jù)集D和D′合并為D″。
步驟5用所有數(shù)據(jù)D″對學(xué)生模型S 進行訓(xùn)練,同時用數(shù)據(jù)所屬類別硬標簽和教師模型預(yù)測得到的軟標簽組成損失函數(shù),作為訓(xùn)練目標。
步驟6在不需要標注新的數(shù)據(jù),以及不需要其他計算資源的條件下,得到一個準確率高的學(xué)生模型。
損失函數(shù)Loss 如式(1)所示:
其中,λ表示兩種損失函數(shù)的平衡參數(shù),si表示學(xué)生模型對于當前數(shù)據(jù)的輸出,yi表示one-hot 編碼的分類硬標簽,ti表示教師模型對當前數(shù)據(jù)的輸出,即軟標簽,cross entropy 表示交叉墑?chuàng)p失函數(shù),Ldistill表示教師與學(xué)生之間知識蒸餾的損失函數(shù),LCE表示學(xué)生模型的輸出與標注的分類硬標簽之間的交叉墑?chuàng)p失函數(shù)。
從損失函數(shù)公式可以看出,模型的目標不僅使預(yù)測類別與標注標簽一致,還需要盡量與教師模型的輸出分布保持一致。
本文中的教師模型采用的是大規(guī)模預(yù)訓(xùn)練模型BERT[1]及其變體。許多研究工作已經(jīng)證明,語言模型的預(yù)訓(xùn)練可以提高許多自然語言處理任務(wù)的性能。預(yù)訓(xùn)練是指在大量的無標簽文本上,以預(yù)測下一個單詞為目標來進行模型的訓(xùn)練,這樣可以學(xué)習(xí)到每個單詞的上下文表示,稱為詞向量。訓(xùn)練得到的詞向量和模型參數(shù)包含了許多在預(yù)訓(xùn)練階段學(xué)到的有用的語義信息?;谶@樣預(yù)訓(xùn)練后的模型,只需要用少量的領(lǐng)域數(shù)據(jù)對模型進行微調(diào),即可將模型運用到具體任務(wù)中。
BERT 模型結(jié)構(gòu)如圖2 所示。該模型是一種基于Transformer 結(jié)構(gòu)[19]的語言表示模型,以掩碼單詞預(yù)測和下一句預(yù)測作為訓(xùn)練目標,捕捉了文本中的詞級別和句子級別的語義表示。BERT 最重要的部分就是雙向Transformer 編碼結(jié)構(gòu),Transformer 舍棄了RNN 的循環(huán)式網(wǎng)絡(luò)結(jié)構(gòu),完全基于注意力機制來對一段文本進行建模。Transformer 中的注意力機制稱為自注意力,核心思想是計算一句話中的每個詞對于其他詞的相互關(guān)系,從而調(diào)整每個詞的重要性來獲取上下文相關(guān)的詞向量。自注意力機制可以實現(xiàn)計算資源的并行化,加速訓(xùn)練過程,并通過對位置進行編碼添加時序信息。
圖2 BERT 模型示意圖Fig.2 Schematic diagram of BERT model
本文所用的是在中文維基百科數(shù)據(jù)上進行了預(yù)訓(xùn)練后的Bert-base-Chinese 模型。模型結(jié)構(gòu)是12 個Transformer 模塊層,768 個隱層,12 個self-attention中的head,一共有1.1 億個參數(shù)。
BERT 模型的輸出包括兩種,一種是字符級向量,即輸入的每個字符對應(yīng)一個向量,另外一種是句子級向量,即BERT 模型輸出最左邊“[CLS]”特殊符號的向量,文獻[1]認為這個向量可以代表整個句子的語義。因此,對于分類任務(wù)一般重點關(guān)注句子級向量,即分類標識[CLS]的輸出向量h。將這個向量h傳給一個softmax 分類器就可以得到分類結(jié)果的輸出。
本文實驗對標準的BERT 模型進行改進,在BERT 的輸出層取所有輸入字符對應(yīng)的輸出向量,然后再接上一個文本分類器。本文選取長短時記憶網(wǎng)絡(luò)LSTM、卷積神經(jīng)網(wǎng)絡(luò)Text-CNN[2]和循環(huán)卷積神經(jīng)網(wǎng)絡(luò)Text-RCNN[3]這3 個模型作為BERT 之后的分類器,將BERT 輸出的向量進行計算后得到分類結(jié)果。因此,改進的模型分別稱為BERT+LSTM、BERT+CNN、BERT+RCNN。原始BERT 模型和各個改進模型在數(shù)據(jù)集上微調(diào)后的模型準確率在實驗部分給出。
雖然對BERT 等預(yù)訓(xùn)練模型進行簡單的微調(diào)可以得到較高的準確率,但是這些預(yù)訓(xùn)練模型規(guī)模龐大,預(yù)測速度慢??紤]到在實際應(yīng)用場景中的延時、響應(yīng)速度等問題,預(yù)訓(xùn)練模型即使微調(diào)后也難以運用到實際應(yīng)用場景中。例如,在對話系統(tǒng)中,意圖識別模塊需要對用戶話語進行意圖的分類,從而決定當前對話狀態(tài)并給出相應(yīng)的回答。在這種智能對話系統(tǒng)的情境下,用戶的滿意度就取決于系統(tǒng)的響應(yīng)速度以及對話的準確性。因此,在移動終端、可攜帶設(shè)備等多個場景下,分類模型的預(yù)測速度不能太慢,模型的規(guī)模也不能太大。因此,選用幾個經(jīng)典的小規(guī)模文本分類模型作為學(xué)生模型,通過用教師模型所學(xué)到的知識對學(xué)生進行指導(dǎo)訓(xùn)練,即為“知識蒸餾”。
本文采取兩個經(jīng)典的文本分類模型作為學(xué)生模型,即基于文本的卷積神經(jīng)網(wǎng)絡(luò)Text-CNN 和基于文本的循環(huán)卷積神經(jīng)網(wǎng)絡(luò)Text-RCNN(Text Recurrent Convolution Neural Network)。這兩個模型規(guī)模不大,且分類準確率高,在許多文本分類任務(wù)上都能夠使用。
Text-CNN 模型由KIM 等人在2014 年提出[2],其將圖像領(lǐng)域的卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用到自然語言處理領(lǐng)域。該模型將一個句子及其單詞的詞向量看作一個矩陣作為模型的輸入,通過卷積層和池化層提取語義特征進行句子的分類。Text-CNN 由于卷積網(wǎng)絡(luò)的并行化計算,執(zhí)行效率高且分類效果較好。Text-RCNN[3]則是一個結(jié)合了RNN 和CNN 各自優(yōu)點的模型。該模型首先利用雙向循環(huán)神經(jīng)網(wǎng)絡(luò)(Bi-RNN)來捕捉前后上下文表征,得到一個包含上下文信息和本身詞向量表示的“詞向量”。接著使用CNN 網(wǎng)絡(luò)中濾波器filter_size=1 的卷積層,并利用最大池化操作得到與文檔最相關(guān)的向量表征,即獲取潛在的最相關(guān)語義表示。由于雙向神經(jīng)網(wǎng)絡(luò)的編碼使得Text-RCNN 模型能夠捕捉文本中的上下文語義信息,尤其是詞袋模型無法得到的語序含義。
本文運用Text-CNN 和Text-RCNN 模型在進行意圖分類的訓(xùn)練過程中使用的分詞工具是結(jié)巴分詞,詞嵌入技術(shù)是word2vec[17],其他的一些訓(xùn)練參數(shù)在實驗部分給出。
生成對抗網(wǎng)絡(luò)是GOODELLOW 等人在2014 年提出的一種生成式模型[24],最開始用于圖像生成領(lǐng)域。該模型由一個生成網(wǎng)絡(luò)和一個判別網(wǎng)絡(luò)組成。生成網(wǎng)絡(luò)模仿真實數(shù)據(jù)生成相似的樣本分布以欺騙判別網(wǎng)絡(luò),判別網(wǎng)絡(luò)在迭代中不斷更新以區(qū)分生成樣本和真實數(shù)據(jù)。生成網(wǎng)絡(luò)和判別網(wǎng)絡(luò)相互博弈,直至達到那什均衡[25]。
但是傳統(tǒng)的生成對抗網(wǎng)絡(luò)很難應(yīng)用于自然語言處理領(lǐng)域。因為自然語言數(shù)據(jù)本身是離散性質(zhì)的,所以判別器進行判別后的結(jié)果難以通過生成器進行梯度回傳。因此,文獻[5]提出一個使用強化學(xué)習(xí)中的獎勵機制來代替梯度回傳的seqGAN 模型。seqGAN 以循環(huán)神經(jīng)網(wǎng)絡(luò)RNN 作為生成網(wǎng)絡(luò),卷積神經(jīng)網(wǎng)絡(luò)CNN 作為判別網(wǎng)絡(luò),可以用于自然語言文本生成。
本文采用文獻[25]中的生成對抗網(wǎng)絡(luò)框架,對現(xiàn)有數(shù)據(jù)通過文本生成的方式進行擴充。擴充后的文本樣例如表1 所示,雖然個別生成序列不符合中文語法的現(xiàn)象,但是大部分生成的文本在句子結(jié)構(gòu)和包含內(nèi)容方面能與真實的意圖文本相似。由于生成的文本雖然符合真實數(shù)據(jù)集的分布,但是沒有標注的類別,因此用真實數(shù)據(jù)微調(diào)后的教師模型對生成文本進行預(yù)測,預(yù)測得到的類別就作為這條語句的標簽。
表1 真實數(shù)據(jù)與生成數(shù)據(jù)的示例Table 1 Examples of real and generated data
本文采用真實的電力業(yè)務(wù)問詢語句作為數(shù)據(jù)集。數(shù)據(jù)集從電力公司供電營業(yè)廳采集,人工整理和標注后得到所有數(shù)據(jù)及其所屬的業(yè)務(wù)類別。數(shù)據(jù)集包括9 577條語句以及35 個業(yè)務(wù)類別,數(shù)據(jù)集中語句的平均長度為18.41 個字。除了真實數(shù)據(jù)集外,在第3 節(jié)提出了利用seqGAN 模型生成數(shù)據(jù)的數(shù)據(jù)增強方法。基于此方法生成了10 000 條相似的領(lǐng)域內(nèi)數(shù)據(jù)作為擴充,真實數(shù)據(jù)與生成數(shù)據(jù)的示例見表1。
4.2.1 教師模型參數(shù)
本文采用在中文維基百科數(shù)據(jù)上進行了預(yù)訓(xùn)練后的Bert-base-Chinese 模型作為BERT 基準模型。模型一共12 層,隱層為768 維,采用12 頭模式,共1.1 億個參數(shù)。模型的優(yōu)化方式采用BertAdam 算法對參數(shù)進行更新和微調(diào),初始學(xué)習(xí)率均為2e-5,預(yù)熱參數(shù)warmup 為0.1。微調(diào)訓(xùn)練時采用批量訓(xùn)練的方法,且批量大小為32,Dropout 比率默認設(shè)置為0.1。而改進后的教師模型則是分別在BERT 模型最后一層加上了Text-CNN 模型、一個雙向LSTM 層和Text-RCNN 模型,構(gòu)成了BERT+CNN、BERT+LSTM 和BERT+RCNN 模型。
4.2.2 學(xué)生模型參數(shù)
本文采用Text-CNN 模型和Text-RCNN 模型作為學(xué)生模型。模型訓(xùn)練時批處理大小為64。其中Text-CNN 模型卷積核尺寸如下[3-5]:每個尺寸下的個數(shù)為100,學(xué)習(xí)率為0.001,用結(jié)巴分詞工具分詞后采用word2vec 詞向量,詞向量維度為300。同樣,Text-RCNN 模型也采用300 維的word2vec 詞向量,隱層維度為256,學(xué)習(xí)率為0.001。
4.2.3 知識蒸餾參數(shù)
本文利用知識蒸餾技術(shù)進行“教師-學(xué)生”架構(gòu)的訓(xùn)練。根據(jù)式(1),軟硬標簽的損失函數(shù)都采用交叉墑函數(shù),平衡參數(shù)選為0.5。
本文采用準確率作為實驗?zāi)P偷脑u估標準,準確率表示分類正確的數(shù)據(jù)占所有數(shù)據(jù)的比例。
首先用真實的意圖分類數(shù)據(jù)集對教師模型和學(xué)生模型分別進行訓(xùn)練,得到這些模型單獨訓(xùn)練時的準確率,結(jié)果如表2 所示,原始的Bert-base-Chinese 模型在數(shù)據(jù)集上微調(diào)可以達到92.5%的準確率。將BERT和Text-RCNN 相結(jié)合的教師模型在數(shù)據(jù)集上微調(diào)得到了教師模型中的最高準確率93.7%。學(xué)生模型中則是Text-RCNN 模型的準確率最高,達到87.1%。
表2 教師模型和學(xué)生模型的準確率Table 2 Comparisom of accuracy of teacher model and student model
得到了教師模型和學(xué)生模型的性能后,采用這些教師模型和學(xué)生模型進行知識蒸餾的指導(dǎo)訓(xùn)練。在訓(xùn)練過程中,分為使用生成數(shù)據(jù)和不使用生成數(shù)據(jù)兩種,分別對應(yīng)表3 中的da(with data-aug)和woda(without data-aug)。知識蒸餾訓(xùn)練得到的結(jié)果如表3 所示。表3 中學(xué)生模型分別為Text-CNN 和Text-RCNN。“without KD”表示學(xué)生模型單獨訓(xùn)練時的結(jié)果,作為基準。表中第3 行開始是兩個學(xué)生模型分別在4 個教師模型的指導(dǎo)下進行知識蒸餾訓(xùn)練得到的結(jié)果,其中加粗字體為最優(yōu)結(jié)果。
表3 知識蒸餾訓(xùn)練結(jié)果Table 3 Training results by knowledge distillation %
可見,本文提出的訓(xùn)練方法普遍可以使得學(xué)生模型準速率有所提高。其中,用準確率最高的教師模型BERT+RCNN 來指導(dǎo)準確率最高的學(xué)生模型Text-RCNN 訓(xùn)練,并且將生成數(shù)據(jù)作為擴充,可以達到最高的90.9%準確率,比單獨的Text-RCNN 學(xué)生模型要高出3.8 個百分點。
從實驗結(jié)果可以看出,雖然學(xué)生模型無法超越教師模型的準確率,但是可以在教師模型的指導(dǎo)下有所提升,接近教師模型的準確率。學(xué)生模型的參數(shù)少、規(guī)模小,準確率最高的教師模型BERT+RCNN的參數(shù)量是學(xué)生模型Text-RCNN 的86 倍,如表2 所示。在實際應(yīng)用時學(xué)生模型預(yù)測速度更快,更有利于部署到移動端等實際場景。
基于對話系統(tǒng)中的意圖分類問題,本文采用大規(guī)模預(yù)訓(xùn)練模型和“教師-學(xué)生”框架的知識蒸餾等技術(shù),構(gòu)建基于BERT 模型的知識蒸餾意圖分類模型。采用BERT 及其變體作為教師模型,Text-CNN和Text-RCNN 兩個經(jīng)典的文本分類模型作為學(xué)生模型,以知識蒸餾的方式進行指導(dǎo)訓(xùn)練。另外,采用seqGAN 生成對抗網(wǎng)絡(luò)來生成領(lǐng)域內(nèi)數(shù)據(jù),增加了訓(xùn)練時的數(shù)據(jù)量。在真實的用戶意圖數(shù)據(jù)集上進行實驗,結(jié)果表明,本文模型可以使得學(xué)生模型準確率最高提升3.8%,接近教師模型的分類性能。由于數(shù)據(jù)集的標注耗費人力資源,目前公開的領(lǐng)域數(shù)據(jù)集都面臨著規(guī)模較小的問題,下一步將研究更有效的數(shù)據(jù)生成方法來擴充數(shù)據(jù)集。