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