鄭新月,任俊超
(東北大學(xué)理學(xué)院,遼寧 沈陽(yáng) 110004)
近年來(lái),信息技術(shù)正沖擊著傳統(tǒng)產(chǎn)業(yè),它為人們提供了便捷的服務(wù),如智能機(jī)器人、智能客服、人機(jī)對(duì)話等,它們的迅速發(fā)展為用戶提供了一種簡(jiǎn)單、方便的溝通方式。其中,意圖識(shí)別分類是問(wèn)答系統(tǒng)的核心任務(wù),是提高系統(tǒng)整體性能的關(guān)鍵[1-3]。它主要利用句子的語(yǔ)義特征進(jìn)行分類,是自然語(yǔ)言處理領(lǐng)域非常熱門的研究方向和關(guān)鍵技術(shù)之一。
意圖識(shí)別的目的在于理解某一句話的意圖,基本思想是:首先根據(jù)文本語(yǔ)義信息,定義可能出現(xiàn)的意圖類別,然后采用自定義的分類方法,將該語(yǔ)句劃分到事先定義的類別中[4]。目前,意圖識(shí)別分類的研究主要有3種方法。
一是基于規(guī)則、模板匹配的正則化方法。該方法針對(duì)特定問(wèn)題,通過(guò)人工提取特定規(guī)則,來(lái)確定問(wèn)題所屬類型。如Ramanand等[5]提出了一種基于規(guī)則、模板匹配的正則化方法,將用戶的消費(fèi)意圖進(jìn)行分類。這種方法簡(jiǎn)單直接,易于解釋且不需要大量的數(shù)據(jù)進(jìn)行訓(xùn)練,但是規(guī)則制定繁瑣,可擴(kuò)展性不強(qiáng),泛化能力差。
二是基于機(jī)器學(xué)習(xí)的方法。該方法通過(guò)對(duì)標(biāo)注語(yǔ)料進(jìn)行統(tǒng)計(jì)學(xué)習(xí),把分類模型的選擇和分類特征的提取作為重點(diǎn)研究對(duì)象[6]。常用的方法有邏輯回歸、支持向量機(jī)、決策樹(shù)等。陳浩辰[7]使用支持向量機(jī)和樸素貝葉斯進(jìn)行意圖識(shí)別分類研究。該方法首先需要構(gòu)造特征工程,再對(duì)文本進(jìn)行分類,導(dǎo)致理解文本深層的語(yǔ)義信息比較困難,特征的準(zhǔn)確性無(wú)法得到保證,當(dāng)數(shù)據(jù)集發(fā)生變化時(shí),需要重新構(gòu)造特征工程,時(shí)間復(fù)雜度較高,成本較高。
三是基于深度學(xué)習(xí)的方法。該方法主要通過(guò)自我學(xué)習(xí)方式,學(xué)習(xí)句子的內(nèi)在語(yǔ)義和句法特征[8]。在意圖識(shí)別分類研究中,常用的深度學(xué)習(xí)方法有卷積神經(jīng)網(wǎng)絡(luò)(CNN)、循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)、長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)、門控循環(huán)單元(GRU)、注意力機(jī)制(Attention)、BERT等。
1)基于CNN的意圖識(shí)別:Kim[9]提出了基于CNN的文本分類模型,Hashemi等[10]利用CNN模型進(jìn)行特征提取,將用戶的查詢意圖進(jìn)行分類,該方法減少了大量的特征工程,簡(jiǎn)化了計(jì)算量,加快了求解速度,但只能提取文本的局部語(yǔ)義特征,導(dǎo)致準(zhǔn)確率不高。
2)基于RNN及其變體的意圖識(shí)別:Ravuri等[11]提出了使用RNN及其變體LSTM這2種模型,進(jìn)行意圖識(shí)別分類問(wèn)題的研究,并進(jìn)行比較分析,發(fā)現(xiàn)LSTM模型具有更好的建模能力和記憶能力,緩解了RNN反向傳播優(yōu)化網(wǎng)絡(luò)權(quán)值時(shí)產(chǎn)生的梯度消失或爆炸的問(wèn)題,但卻依賴于過(guò)去的隱藏狀態(tài)對(duì)當(dāng)前單詞進(jìn)行預(yù)測(cè),導(dǎo)致計(jì)算成本較高。RNN的另一個(gè)變種GRU是LSTM的一種改進(jìn)[12],Ravuri等[13]通過(guò)實(shí)驗(yàn)發(fā)現(xiàn)GRU模型在意圖分類任務(wù)上,性能與LSTM幾乎相同,但GRU參數(shù)更少,收斂速度更快,可以防止過(guò)擬合。
3)基于Attention機(jī)制模型的意圖識(shí)別:Lin等[14]提出了一種自注意力機(jī)制,代替LSTM和CNN結(jié)構(gòu)作為特征提取器,使其并不依賴于過(guò)去的隱藏狀態(tài)來(lái)對(duì)當(dāng)前單詞進(jìn)行預(yù)測(cè),而是從整體上處理一個(gè)句子,這樣可以從多個(gè)角度理解句子的語(yǔ)義信息,對(duì)意圖識(shí)別分類的研究有很大的幫助。Cai等[15]提出了CNN-LSTM模型,并引入Attention機(jī)制,捕獲全局語(yǔ)義表達(dá)和局部短語(yǔ)級(jí)別的信息來(lái)理解用戶意圖,取得了不錯(cuò)的效果。
4)基于BERT的意圖識(shí)別:BERT模型的發(fā)布被認(rèn)為是自然語(yǔ)言處理領(lǐng)域一個(gè)新時(shí)代的開(kāi)始,在11項(xiàng)NLP任務(wù)中均取得了領(lǐng)先成就[16]。Sun等[17]通過(guò)對(duì)比BERT的不同微調(diào)方法在文本分類任務(wù)上的性能,給出了一種較為通用的微調(diào)優(yōu)化方法,并在多個(gè)文本分類數(shù)據(jù)集上進(jìn)行試驗(yàn),均取得了顯著的效果。
由于結(jié)合深度學(xué)習(xí)方法FNN及BERT在NLP領(lǐng)域的絕對(duì)優(yōu)勢(shì),本文提出一種基于BERT-FNN的意圖識(shí)別分類方法,首先以Google公開(kāi)的BERT預(yù)訓(xùn)練語(yǔ)言模型為基礎(chǔ),進(jìn)行輸入文本的語(yǔ)義表示,再通過(guò)FNN對(duì)語(yǔ)句進(jìn)行特征提取,并輸入到sigmoid激活函數(shù)中進(jìn)行分類。最后,與邏輯回歸(LR)、支持向量機(jī)(SVM)、LSTM、BERT進(jìn)行對(duì)比,實(shí)驗(yàn)結(jié)果表明,本文提出的BERT-FNN模型,在意圖識(shí)別分類任務(wù)上可以獲得94%的準(zhǔn)確率,具有良好的性能。
自從2018年10月底,谷歌宣布了BERT在文本分類、命名實(shí)體識(shí)別等11項(xiàng)自然語(yǔ)言處理任務(wù)中的出色表現(xiàn)后,BERT模型就被認(rèn)為是自然語(yǔ)言處理領(lǐng)域新時(shí)代的開(kāi)始[18]。它將重點(diǎn)集中在通過(guò)預(yù)訓(xùn)練產(chǎn)生詞向量,而不是解決具體下游任務(wù)上,通過(guò)BERT預(yù)訓(xùn)練模型生成的詞向量,相對(duì)于one-hot、word2vec、glove等靜態(tài)詞向量而言,解決了一詞多義的問(wèn)題;相對(duì)于ELMo、GPT等動(dòng)態(tài)詞向量而言,加強(qiáng)了提取特征的能力,主要是因?yàn)镋LMo利用Bi-LSTM提取特征,能力有限,GPT利用單向Transfomer-decoder提取特征,只能處理左側(cè)的上下文,然而B(niǎo)ERT利用雙向Transfomer-encoder提取特征,可以根據(jù)當(dāng)前詞的上下文建模,使模型具有理解語(yǔ)句含義和提取語(yǔ)句特征的能力[19]。
FNN層通過(guò)增加隱藏層及神經(jīng)元節(jié)點(diǎn)的數(shù)量,來(lái)獲取更深層次的特征,并通過(guò)對(duì)前層的特征進(jìn)行線性加權(quán)求和,將特征表示整合成一個(gè)值,從而減少特征位置對(duì)于分類結(jié)果的影響,將特征空間通過(guò)線性變換映射到樣本標(biāo)記空間,從不同角度對(duì)輸入數(shù)據(jù)進(jìn)行分析,得出該角度下對(duì)整體輸入數(shù)據(jù)的判斷,提高了整個(gè)網(wǎng)絡(luò)的魯棒性。
本文提出的基于BERT-FNN的意圖識(shí)別模型由輸入層、BERT層、FNN層、分類層組成,具體如圖1所示。
圖1 基于BERT-FNN的意圖識(shí)別模型結(jié)構(gòu)
1.1.1 BERT詞向量層
在BERT的詞向量層中,將字變量(Token Embedding)、文本向量(Segment Embedding)和位置向量(Position Embedding)三者的和作為模型的輸入[20],其中字變量指的是在BERT模型中,通過(guò)查詢字向量表,將文本信息中的每個(gè)中/英文轉(zhuǎn)化為一維向量;文本向量指的是在模型訓(xùn)練過(guò)程中,通過(guò)自動(dòng)學(xué)習(xí)來(lái)刻畫(huà)文本的全局語(yǔ)義信息,并與單字/詞的語(yǔ)義信息相融合;由于出現(xiàn)在文本不同位置的字/詞所攜帶的語(yǔ)義信息存在差異(比如:“我喜歡你”和“你喜歡我”),因此BERT模型引入位置向量對(duì)不同位置的字/詞分別加以區(qū)分。
目前,BERT預(yù)訓(xùn)練模型直接將單個(gè)字詞作為構(gòu)成中文文本的基本單位,并未分詞,且在起始位置需要附加一個(gè)Token,記為[CLS],對(duì)應(yīng)模型的輸出,用于表示整個(gè)句子的語(yǔ)義信息,并將其用于具體下游任務(wù)。在區(qū)分2個(gè)句子的句間關(guān)系時(shí),BERT預(yù)訓(xùn)練模型使用一個(gè)特殊標(biāo)記符[SEP]進(jìn)行分割,具體如圖2所示。
圖2 BERT詞向量層的具體結(jié)構(gòu)
1.1.2 BERT主模型結(jié)構(gòu)
由于BERT是預(yù)訓(xùn)練語(yǔ)言模型,只需要編碼學(xué)習(xí)語(yǔ)義關(guān)系,不需要解碼完成具體的任務(wù),因此采用Transformer-Encoder模型[21],通過(guò)大量文本進(jìn)行預(yù)訓(xùn)練,得到當(dāng)前序列的向量表示。Transformer是基于自注意力機(jī)制(self-attention)的深層模型[22],采用attention代替LSTM結(jié)構(gòu)提取特征,從整體上處理一個(gè)句子,而并不依賴于過(guò)去的隱藏狀態(tài)來(lái)捕獲對(duì)當(dāng)前單詞的依賴性,這樣可以從多個(gè)角度理解句子的語(yǔ)義信息。因此BERT在文本分類、命名實(shí)體識(shí)別、文本生成等多個(gè)自然語(yǔ)言處理任務(wù)上取得了不錯(cuò)的效果,基本結(jié)構(gòu)如圖3所示。
圖3 BERT主模型結(jié)構(gòu)
1.1.3 BERT預(yù)訓(xùn)練目標(biāo)
事實(shí)上,BERT是語(yǔ)言模型,預(yù)訓(xùn)練過(guò)程的實(shí)質(zhì)是通過(guò)不斷調(diào)整模型參數(shù),使模型輸出的語(yǔ)義特征盡可能地刻畫(huà)語(yǔ)言的本質(zhì)。該模型包含2個(gè)預(yù)訓(xùn)練目標(biāo):掩碼語(yǔ)言模型(Masked Language Model)和預(yù)測(cè)下一句文本(Next Sentence Prediction)。
1)Masked Language Model。
Masked Language Model是指在模型預(yù)訓(xùn)練的過(guò)程中,從原始文本信息中隨機(jī)遮擋(mask)一些單詞,然后通過(guò)BERT模型利用上下文的語(yǔ)義信息預(yù)測(cè)該單詞。具體的執(zhí)行過(guò)程是:將一句文本信息多次輸入到模型中進(jìn)行參數(shù)學(xué)習(xí),然后隨機(jī)選擇15%的單詞被Mask,但這些單詞并不是每次都被Mask,會(huì)有80%的概率直接將其替換為[Mask],10%的概率替換為其他任意單詞,另外會(huì)有10%的概率保留原始Token不變。這樣做的好處是:在模型預(yù)訓(xùn)練過(guò)程中,對(duì)單詞進(jìn)行預(yù)測(cè)時(shí),模型本身并不知道該單詞是否是正確的單詞,這就迫使模型依據(jù)上下文信息來(lái)預(yù)測(cè)單詞,從而增強(qiáng)模型的泛化能力[23],具體過(guò)程如圖4所示。
圖4 Masked LM過(guò)程示意圖
2) Next Sentence Prediction。
NSP的主要任務(wù)是判斷2個(gè)語(yǔ)句是否是上下文的關(guān)系。如果是,則輸出True,否則,將輸出False。其中訓(xùn)練數(shù)據(jù)指的是從語(yǔ)料庫(kù)中隨機(jī)抽取的2個(gè)連續(xù)句子,這2個(gè)句子有50%的概率符合上下文的關(guān)系,另外50%的概率是從語(yǔ)料庫(kù)中隨機(jī)抽取的,它們并不符合上下文的關(guān)系。該過(guò)程可以增強(qiáng)模型對(duì)上下文的把控能力。BERT將2個(gè)預(yù)訓(xùn)練任務(wù)NSP與Masked Language Model相結(jié)合,這樣做的好處是:能夠讓模型更準(zhǔn)確地理解文本想表達(dá)的語(yǔ)義信息,具體過(guò)程如圖5所示。
圖5 Next Sentence Prediction過(guò)程示意圖
目前,許多深度學(xué)習(xí)模型均連接FNN層進(jìn)行深層特征的提取,并且取得了良好的效果[24],原因在于它不像以往利用模板匹配的方式提取特征,或基于機(jī)器學(xué)習(xí)的方法構(gòu)造特征工程,而是通過(guò)增加隱藏層及神經(jīng)元節(jié)點(diǎn)的數(shù)量,獲取更深層次的特征,并對(duì)前層的特征進(jìn)行線性加權(quán)求和,從而將特征整合,減少特征位置對(duì)分類結(jié)果的影響,從不同角度對(duì)數(shù)據(jù)進(jìn)行分析,提高了整個(gè)網(wǎng)絡(luò)的魯棒性。其核心操作是矩陣向量乘積,若設(shè)輸入向量為:
X=[X0,X1,…,Xn]T
(1)
設(shè)輸出向量為:
Y=[Y0,Y1,…,Yn]T
(2)
設(shè)偏置為:
b=[b0,b1,…,bn]T
(3)
設(shè)經(jīng)過(guò)激活函數(shù)計(jì)算后的輸出向量為:
Z=[Z0,Z1,…,Zn]T
(4)
其中,參數(shù)可以表示為矩陣W,矩陣W的大小是m×n,再加上偏置項(xiàng)b于是有:
Y=W×X+b
(5)
Z=sigmoid(Y)
(6)
用反向傳播算法來(lái)最小化訓(xùn)練模型的誤差,根據(jù)下式,使用隨機(jī)梯度下降法對(duì)權(quán)重和偏置項(xiàng)b進(jìn)行更新求解:
(7)
(8)
其中,θ為學(xué)習(xí)率,L為損失函數(shù),T為時(shí)間。該函數(shù)的選擇與激活函數(shù)的種類及選擇哪種學(xué)習(xí)類型(如有監(jiān)督學(xué)習(xí)、無(wú)監(jiān)督學(xué)習(xí))有很大的關(guān)系。
在該層中,對(duì)輸入數(shù)據(jù)通過(guò)加權(quán)增加神經(jīng)網(wǎng)絡(luò)模型的非線性,獲取用戶意圖的語(yǔ)義表示,然后計(jì)算每個(gè)標(biāo)簽的得分向量,最終輸出分類標(biāo)簽。
為了充分利用數(shù)據(jù),本文利用拆解法的思想,將多分類問(wèn)題拆分成多個(gè)二分類問(wèn)題,每次將一個(gè)類別作為正例,其余類別均作為負(fù)例,產(chǎn)生多個(gè)二分類任務(wù),從而實(shí)現(xiàn)意圖多分類。簡(jiǎn)單來(lái)說(shuō),就是將模型的激活函數(shù)由softmax調(diào)整為sigmoid,輸出各類別的概率。softmax計(jì)算方法如下:
(9)
sigmoid計(jì)算方法如下:
(10)
該模型的損失函數(shù)使用的是二分類交叉熵?fù)p失函數(shù)的累加和,而并沒(méi)有使用多分類交叉熵?fù)p失函數(shù),這樣做的好處是:
1) 充分利用“負(fù)例”:多分類交叉熵?fù)p失函數(shù)僅考慮正例損失,丟失了許多有價(jià)值的數(shù)據(jù),而二分類交叉熵?fù)p失函數(shù)對(duì)于“負(fù)例”也計(jì)算損失函數(shù),提高了整體數(shù)據(jù)的利用率。
2)適應(yīng)真實(shí)場(chǎng)景:真實(shí)的語(yǔ)料可能會(huì)同時(shí)表達(dá)多個(gè)意圖,在語(yǔ)料存在多種意圖的情況下,使用sigmoid激活函數(shù)有機(jī)會(huì)將意圖都識(shí)別出來(lái)。而使用softmax激活函數(shù)則很難將意圖都識(shí)別出來(lái)。
2種模式的損失函數(shù)如下:
(11)
p(yc=1|x))
(12)
本章通過(guò)實(shí)驗(yàn)來(lái)驗(yàn)證本文提出的BERT-FNN模型在用戶意圖識(shí)別任務(wù)上的性能,然后將其與其他模型的性能進(jìn)行對(duì)比分析。
本文所使用的數(shù)據(jù)集包含16萬(wàn)條自然語(yǔ)言語(yǔ)句,涉及價(jià)格介紹、告知地址、提供官方網(wǎng)站等共10種意圖類別,將20名標(biāo)注人員分成5組,分別對(duì)數(shù)據(jù)集某一部分的意向類別進(jìn)行標(biāo)注,然后,通過(guò)匹配每組的語(yǔ)料庫(kù)標(biāo)注結(jié)果,去除不一致的部分,最后,對(duì)每組標(biāo)簽一致的數(shù)據(jù)進(jìn)行合并,得到15萬(wàn)條語(yǔ)句。其標(biāo)注結(jié)果及實(shí)驗(yàn)語(yǔ)料例句如表1所示。
表1 意圖類別標(biāo)注結(jié)果
為了驗(yàn)證本文所提方法的有效性,在實(shí)驗(yàn)過(guò)程中,將訓(xùn)練集分為80%的訓(xùn)練集、10%的測(cè)試集、10%的驗(yàn)證集。
因?yàn)橛脩粢鈭D識(shí)別屬于多分類問(wèn)題,本文采用精確率(precision)、召回率(recall)及F1值對(duì)每種意圖類別進(jìn)行評(píng)價(jià),具體計(jì)算公式如下:
precision=TP/(TP+FP)
(13)
recall=TP/(TP+FN)
(14)
F1=2PR/(P+R)
(15)
其中,TP表示數(shù)據(jù)集中被判定為正類,實(shí)際也為正類的樣本數(shù);FP表示數(shù)據(jù)集中被判定為正類,實(shí)際卻為負(fù)類的樣本數(shù);FN表示數(shù)據(jù)集中被判定為負(fù)類,實(shí)際卻為正類的樣本數(shù);P代表精確率,R代表召回率。
本文實(shí)驗(yàn)選用的研發(fā)環(huán)境、電腦軟硬件配置詳細(xì)信息如表2所示。
表2 實(shí)驗(yàn)環(huán)境軟硬件配置
實(shí)驗(yàn)過(guò)程中,以BERT預(yù)訓(xùn)練語(yǔ)言模型為基礎(chǔ),采用[cls]token對(duì)應(yīng)的向量表示上下文的語(yǔ)義信息,以FNN和sigmoid激活函數(shù)為最終分類器,搭建了BERT-FNN模型來(lái)識(shí)別用戶意圖。不同參數(shù)的組合與設(shè)置會(huì)對(duì)實(shí)驗(yàn)產(chǎn)生不同的效果,本文基于Tensorflow深度學(xué)習(xí)框架,模型參數(shù)設(shè)置如表3所示。
表3 模型參數(shù)設(shè)置
為了驗(yàn)證上述BERT-FNN模型的可行性和有效性,本節(jié)分別選用邏輯回歸(LR)、支持向量機(jī)(SVM)、LSTM、BERT進(jìn)行對(duì)比實(shí)驗(yàn),并對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行評(píng)估。
其中LSTM使用word2vec方法生成的詞向量作為原始輸入,相比于利用one-hot生成詞向量而言,word2vec會(huì)考慮上下文,維度更少,速度更快,效果更好,可以用在NLP各項(xiàng)任務(wù)中,通用性更強(qiáng)。
在測(cè)試集上,不同方法整體分類性能對(duì)比結(jié)果如表4所示,不同方法在各個(gè)意圖分類中F1值比較如表5所示。
表4 不同方法對(duì)比實(shí)驗(yàn)結(jié)果
表5 不同方法在各個(gè)意圖分類中F1值比較
由表4、表5可知,本文提出的基于BERT-FNN的混合神經(jīng)網(wǎng)絡(luò)意圖識(shí)別模型,具有良好的表現(xiàn),在準(zhǔn)確率、召回率及F1值的表現(xiàn)性能均優(yōu)于其他方法。
SVM方法的意圖識(shí)別分類效果最差。究其原因在于,SVM難以選擇一個(gè)合適的核函數(shù)解決非線性問(wèn)題,且SVM基于特征工程,以詞或句法結(jié)構(gòu)作為分類特征,難以獲取句子的深層語(yǔ)義信息,識(shí)別度低。
LSTM方法相比于傳統(tǒng)機(jī)器學(xué)習(xí)方法,各項(xiàng)性能均有明顯的提升。原因在于其具有可以學(xué)習(xí)序列信息的能力,更加充分提取句子的特征,從而實(shí)現(xiàn)了分類性能的提升,但當(dāng)序列長(zhǎng)度超過(guò)一定限度后,仍存在梯度消失的問(wèn)題。
相比于LSTM方法,BERT模型在意圖識(shí)別分類問(wèn)題上更有優(yōu)勢(shì),解決了單向信息流問(wèn)題,使其并不依賴于過(guò)去的隱藏狀態(tài)來(lái)對(duì)當(dāng)前單詞進(jìn)行預(yù)測(cè),能夠充分捕獲句子特征信息,這樣可以獲取句子的多種語(yǔ)義信息,進(jìn)而提高分類性能,提高意圖識(shí)別準(zhǔn)確率。
相比于BERT模型,本文使用BERT-FNN模型效果更顯著,主要是因?yàn)镕NN對(duì)前層的特征進(jìn)行線性加權(quán)求和,從而將特征整合,減少特征位置對(duì)分類結(jié)果的影響,從不同角度進(jìn)行分析,提高了模型的準(zhǔn)確率。通過(guò)對(duì)比實(shí)驗(yàn)可以看出,本文提出的BERT-FNN模型在意圖識(shí)別分類任務(wù)上具有良好的表現(xiàn)。
本文提出了一種基于BERT-FNN模型的意圖識(shí)別分類方法,該模型以Google公開(kāi)的BERT預(yù)訓(xùn)練模型為基礎(chǔ),進(jìn)行輸入文本的上下文建模和句級(jí)別的語(yǔ)義表示,采用[cls] token對(duì)應(yīng)的向量代表文本的上下文,再通過(guò)FNN進(jìn)行深層特征提取,與傳統(tǒng)模板匹配、機(jī)器學(xué)習(xí)方法以及現(xiàn)有的較好深度學(xué)習(xí)方法相比,本文提出的方法具有良好的性能,可以較好地理解用戶的意圖,解決了傳統(tǒng)方法在意圖識(shí)別分類上的泛化能力差、理解文本深層次的語(yǔ)義信息較困難、計(jì)算成本較高等問(wèn)題。