曹 斌 柯顯信 白姣姣
(上海大學(xué)機電工程與自動化學(xué)院 上海 200444)
隨著數(shù)據(jù)時代發(fā)展,人們越來越關(guān)注利用大量真實的交流數(shù)據(jù)來訓(xùn)練對話模型,這些模型的一個主要問題是它們傾向于選擇具有最大可能性的響應(yīng)(訓(xùn)練數(shù)據(jù)中表示的人類的共識響應(yīng)),產(chǎn)生的回復(fù)通常是模糊的或不一致的[1]。Vinyals等[2]指出,當(dāng)前的對話系統(tǒng)仍然無法通過圖靈測試,在眾多限制中,缺乏一致的個人信息是最具挑戰(zhàn)性的困難之一,如表1所示。在人機交互的過程中,對話的部分內(nèi)容會涉及到機器人的自身信息類問題[3],如姓名、年齡、性別等。和諧自然的人機交流需要機器人對于涉及個人信息類問題的回復(fù)總是穩(wěn)定的,不要出現(xiàn)前后不一致的現(xiàn)象。
表1 信息不一致的回復(fù)
近年來,Li等[4]以序列到序列模型為基礎(chǔ),通過Al-Rfou等[5]使用類似的用戶嵌入技術(shù)來模擬用戶個性化的工作,兩項研究都需要每個用戶的對話數(shù)據(jù)來模擬她/他的個性。Qian等[6]利用雙向解碼器來生成預(yù)先給定的個人信息,但是需要大量數(shù)據(jù)標(biāo)注信息位置。
本文提出一種具有個人信息的對話模型,賦予聊天機器人特定個人信息(如表2所示),并使聊天機器人能夠生成與其給定信息一致的回復(fù)。
表2 預(yù)設(shè)五種個人信息
對話模型如圖1所示,任務(wù)描述如下:給出一個輸入問題x,問題分類器D預(yù)測問題x是否屬于個人信息問題:如果是,將問題轉(zhuǎn)入個人信息回復(fù)模塊,隨機返回問題所屬類別K的候選回復(fù)y作為模型回復(fù);否則轉(zhuǎn)入開放域?qū)υ捘K,生成回復(fù)y。生成回復(fù)的過程如下:
圖1 對話模型
P(y|x)=P(z=1|x)×PO(y|x(ki))+
P(z=0|x)×PG(y|x)
(1)
式中:P(z|x)表示輸入問題(x)所屬類別的概率;z=1表示問題x屬于涉及個人信息,否則反之。PO(y|x(ki))表示個人信息回復(fù)模塊給出的所屬類別的答案的概率;PG(y|x)表示開放域?qū)υ捘K給出的回復(fù)的概率。
分類模型用來判別輸入問題是否需要個人信息回復(fù)模塊處理,是一個二分類問題。用P(z|x)(z∈{0,1}),z=1表示需要個人對話模塊,例如:“你今年幾歲?”則P(z=1|x)≈1;“你哥哥今年幾歲?”則P(z=1|x)≈0。
近年國內(nèi)外學(xué)者對于短文本分類的問題做了大量研究,主要分為兩類:機器學(xué)習(xí)算法和深度學(xué)習(xí)算法。機器學(xué)習(xí)領(lǐng)域有支持向量機(Support Vector Machine,SVM)、邏輯回歸(Logistics Regression,LR)、樸素貝葉斯分類法(Naive Bayes Classifier,NBC)、K-最近鄰法(k-Nearest Neighbor,KNN)、決策樹法(Decision Tree,DT)和中心向量法等[7]。深度學(xué)習(xí)算法有Kim[8]提出的Text-CNN,其具有良好表現(xiàn)。然而自然語言處理中最常用的是具有捕捉上下文信息的遞歸神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)。為了將RNN與CNN結(jié)合,又提出RNN-CNN模型來彌補CNN不能夠處理文本上下關(guān)系和RNN在長距離上存在信息衰減的問題。
本文將對比各方法在語料上面的性能,綜合考慮選取恰當(dāng)?shù)姆椒ā?/p>
為了維護前后回復(fù)的信息一致性,本文的解決思路是相似問題匹配,即對比用戶的輸入問題與設(shè)定的數(shù)據(jù)庫中問題的相似度,返回最大相似度的問題的答案作為模型回復(fù)。相比于機器學(xué)習(xí)方法,深度學(xué)習(xí)能夠發(fā)掘以往很難發(fā)掘的隱含在大量數(shù)據(jù)中的不顯著特征,更細化地表達文本匹配問題[9]。
本文以孿生網(wǎng)絡(luò)思想構(gòu)建個人信息回復(fù)模塊,如圖2所示。
圖2 個人信息回復(fù)模型
本文模型首先將兩個句子通過深度學(xué)習(xí)模型進行表示,然后利用相似度方程計算這兩個表示之間的相似度即匹配度。該方法注重于構(gòu)建句子的表示層,盡量用等長的向量表示待匹配句子的語義。本文采用BiLSTM模型對句子的語義信息進行表示,BiLSTM由正反兩個長短期記憶網(wǎng)絡(luò)(Long Short-Term Memory,LSTM)[10]模型組成。LSTM記憶單元各部分在時刻t更新如下:
ft=σ(Wf·[ht-1,xt]+bf)
(2)
it=σ(Wi·[ht-1,xt]+bi)
(3)
(4)
(5)
ot=σ(WO[ht-1,xt]+bo)
(6)
ht=ot×tanh(Ct)
(7)
式中:it、ft、ot依次表示輸入門、遺忘門、輸出門;xt表示t時刻的特征向量;σ(·)表示sigmoid函數(shù)。
BiLSTM模型增加對文本逆向語義的學(xué)習(xí)。連接正反兩個方向的LSTM模型輸出向量作為t時刻BiLSTM的輸出Bt[11]:
(8)
(9)
(10)
本文采用的損失函數(shù)是對比損失函數(shù),可以有效地處理成對數(shù)據(jù)的關(guān)系,其表達式如下[12]:
(11)
基礎(chǔ)的Seq2seq模型是以最大對數(shù)似然為目標(biāo)函數(shù),模型在面對問題時會容易產(chǎn)生類似“我不知道”“呵呵”“哈哈”等通用無意義的回復(fù)。因此本文借鑒了Li等[13]提出的抗語言模型(anti-language model,anti-LM),以最大互信息作為Seq2seq的目標(biāo)函數(shù),公式如下:
(12)
(13)
(14)
式中:λlogP(T)視為對任何輸入都具有高概率的候選詞的懲罰,由參數(shù)λ控制懲罰的大小。由于懲罰項的存在,模型不再一昧選擇概率高的詞,避免產(chǎn)生通用的回答。但懲罰會影響句子結(jié)構(gòu)和流暢性,因此引入分段函數(shù)g(k)[14]:
(15)
(16)
(17)
前期生成詞對句子多樣性的影響顯著大于后期生成詞,為了盡可能地保證句子流暢性,在解碼器生成句子過程中僅僅對前期生成的高概率候選詞進行懲罰。
本文根據(jù)設(shè)定的五種身份信息,從微博、小黃雞語料和青云語料提取和采樣得到了10 072個樣本用于訓(xùn)練問題分類器。通過對樣本進行標(biāo)注,涉及個人信息為正樣本(標(biāo)簽為1),反之為負(fù)樣本(標(biāo)簽為0),部分語料如表3所示。
表3 部分問題分類樣本示例
訓(xùn)練個人信息回復(fù)模型時需要輸入兩個句子和相似度。人工地將所收集的正樣本進行五分類(姓名、年齡、性別、地點、職業(yè)),同類型樣本間構(gòu)成相似問題對(標(biāo)簽為1),不同類型間樣本構(gòu)成不相似問題對(標(biāo)簽為0),如表4所示。
表4 部分相似度訓(xùn)練樣本示例
本文測試了SVM、LR、NBC、CNN、LSTM和LSTM-CNN。傳統(tǒng)機器學(xué)習(xí)模型的文本表達形式為詞袋和TF-IDF;SVM采用線性核函數(shù);深度學(xué)習(xí)方法采用預(yù)先訓(xùn)練好的詞向量;CNN參考Text-CNN模型;LSTM模型利用最后一個時刻狀態(tài)經(jīng)過全連接輸出;LSTM-CNN利用CNN把LSTM每個時刻的輸出進行卷積和池化。本文選取了準(zhǔn)確率、F1值和AUC值來評價各模型性能,實驗結(jié)果如表5所示。
表5 不同方法模型評估
可以看出:(1) 基于詞袋的SVM取得了最好的性能指標(biāo)。(2) 傳統(tǒng)的機器學(xué)習(xí)分類性能整體優(yōu)于深度學(xué)習(xí),主要原因是因為所提取的語料中某些詞匯頻繁出現(xiàn),比如涉及姓名信息問題中姓名、名字和叫什么等詞匯大量出現(xiàn),所以具有統(tǒng)計特性的模型會有良好表現(xiàn)。本文還選取準(zhǔn)確度最多的三個模型進行加權(quán)平均法,但是分類效果沒有顯著提高。最終本文選取基于詞袋的SVM作為問題分類器。
除了本文中的基于BiLSTM的孿生網(wǎng)絡(luò)的相似度計算方法外, 還比較了基于LSTM與全連接、基于BiLSTM與全連接、基于LSTM與余弦以及基于詞向量余弦距離和詞移距離(Word Mover’s Distance,WMD)的方法。以上幾種方法對應(yīng)簡稱為LSTM_F、BiLSTM_F、LSTM_cosine、w2v_cosine和w2v_wmd, 其中采用全連接層的網(wǎng)絡(luò)加入了Batch normalizationn層[15]來提高收斂速度,LSTM_cosine利用余弦計算logit與目標(biāo)值[1,0]的距離,作為相似度。
由于本文設(shè)定五個身份信息,因此準(zhǔn)確性是指預(yù)測的類別是否為標(biāo)簽類別,公式如下:
P=P(klabel=kp)
(18)
kp=K(max(Similarity))
(19)
式中:P為模型準(zhǔn)確度;klabel為標(biāo)定種類;kp為預(yù)測類別;K為設(shè)定的五類信息;Similarity為相似度。
實驗階段針對五種身份信息選取 500個問題作為匹配數(shù)據(jù)庫,每個類型100個,各模型實驗結(jié)果如表6所示,均耗時指的是平均每個問題回復(fù)的時間。
表6 各模型實驗結(jié)果
w2v_cosine和w2v_wmd直接將詞向量拼接來表示句子特征,這導(dǎo)致只要句子關(guān)鍵字相同就會判別句子表達主題相似,而本部分?jǐn)?shù)據(jù)經(jīng)過問題分類,選取的數(shù)據(jù)詞語分布集中所以取得了較高準(zhǔn)確率;BiLSTM_F、LSTM_F和LSTM_cosine利用LSTM能夠?qū)W習(xí)文本深層次關(guān)系。本文方法取得了較好的準(zhǔn)確率,因為對比損失函數(shù)可以很好地表達成對樣本的匹配程度,但是在時間效率上略有不足。
為了回復(fù)的多樣性,本文為每個類別分別設(shè)置多個回復(fù)模板,比如關(guān)于年齡的回復(fù)有“我今年一歲了”“人家已經(jīng)一歲了”“一歲”“本寶寶出生一年了”等,每次選取一個答案作為回復(fù)。
對開放域回復(fù)模塊采用人工測評與BLEU評估結(jié)合的形式,分別以最大對數(shù)似然和互信息作為目標(biāo)函數(shù)訓(xùn)練了兩個對話模型。實驗中最大互信息模型的懲罰系數(shù)λ取值為0.5,γ設(shè)定為1。
兩個模型的BLEU值為0.17 和0.25,以最大互信息為目標(biāo)函數(shù)的模型較好。在人工測評中,讓20個人與兩個模型分別進行20句以上的交互,判斷哪種生成的結(jié)果更好,結(jié)果顯示大多數(shù)人認(rèn)為兩個模型差不多,30%的人認(rèn)為以最大互信息為目標(biāo)函數(shù)的模型較好。
本文隨機選取部分對話,請10 位志愿者對其以下幾個方面進行評價。
自然性:回復(fù)是否自然通順。如果太短或者無意義回復(fù)被認(rèn)為缺乏自然性,獲得0分,反之得1分。
邏輯性:回復(fù)與問題是否成邏輯關(guān)系。比如涉及性別問題,回復(fù)類似“女孩”等將獲得1分,反之得0分。
信息一致性:對于涉及個人信息的回復(fù)是否保持前后一致。比如年齡一類問題,回復(fù)的屬性值應(yīng)該與設(shè)定的一樣“一歲”。信息一致獲得1分,反之得0分。
多樣性:對于某一類問題是否具有多種回復(fù)。比如對于回復(fù)年齡類別,應(yīng)該具有不同的回復(fù)如“我今年一歲”“人家已經(jīng)一歲了”。具有多樣性獲得1分,反之得0分。
人工評價結(jié)果如表7所示??梢钥闯觯疚哪P驮诿總€指標(biāo)都優(yōu)于普通的Seq2seq模型,特別在信息一致性,這是因為本文添加了個人信息回復(fù)模塊。本文模型對話樣例如表8所示。
表7 回復(fù)的評估 %
表8 對話樣例
為了維護對話前后個人信息的一致性問題,本文提出了具有個人信息的對話模型,該模型能夠簡化從對話數(shù)據(jù)中學(xué)習(xí)個人信息的復(fù)雜性。實驗表明,本文的對話模型能夠有效地生成與預(yù)設(shè)信息一致的回復(fù),同時減少無意義的通用回復(fù),有助于產(chǎn)生更加連貫和多樣的對話。
本文不足如下:訓(xùn)練語料的質(zhì)量不佳,模型的時間復(fù)雜度較大。未來研究還需要考慮對話的情感狀態(tài)、對話的邏輯推理和對話的風(fēng)格等。