邵 曦 陳 明
(南京郵電大學通信與信息工程學院 江蘇 南京 210003)
隨著人工智能技術(shù)的快速發(fā)展,其實際應(yīng)用場景也變得越來越廣泛,在人們生活中的各個方面都有所體現(xiàn)。信息爆炸的今天,人們對于搜索引擎簡單地返回一個相關(guān)網(wǎng)頁感到不滿,而問答系統(tǒng)能夠與用戶一對一進行交互,精確理解用戶意圖,從而能夠高效快速地完成用戶的需求[1-2]。最初對于問答系統(tǒng)的研究受限于語料數(shù)據(jù)的限制,并沒有取得很好的效果。但隨著互聯(lián)網(wǎng)的發(fā)展,微博、Twitter等聊天工具的興起,為問答系統(tǒng)模型訓練提供了大量的文本數(shù)據(jù)。1966年,Weizenbaum[3]開發(fā)了最早的智能問答機器人ELIZA;2004年,Knill等[4]研發(fā)了問答機器人Sofia。這些早期的智能問答大都是基于檢索技術(shù)和機器學習算法來實現(xiàn)的。常用的機器學習算法包括潛在狄利克雷分配模型(Latent Dirichlet Allocation,LDA)、支持向量機(Support Vector Machine,SVM)等,并利用貝葉斯法和K近鄰等方法進行分類,以此構(gòu)建問答之間的對應(yīng)關(guān)系[5]。此類算法對于數(shù)據(jù)提出了很高的要求,必須有充足的數(shù)據(jù)才能保證匹配的準確性,且對于不同場景算法的泛化性較低,使用性能較差。
隨著深度學習技術(shù)的快速發(fā)展,其在圖像處理、語音交互等領(lǐng)域取得了優(yōu)異的成績[6]。近年來,深度學習在自然語言處理領(lǐng)域也大放異彩[7]。2012年,Mikolov等[8]發(fā)現(xiàn)了一種基于循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)包含上下文信息的語言模型,將RNN應(yīng)用到上下文信息的獲取中去。Schuster等[9]提出了Bi-RNN模型,可以利用句子的未來信息進行預測。因此,深度學習模型對于問答系統(tǒng)的研究具有十分重要的作用。鑒于深度學習技術(shù)在自然語言處理方向上具有不錯的效果,本文提出了一種基于Bi-LSTM和注意力模型的問答系統(tǒng)。通過生成句向量以獲取句子上下文之間的語義信息和匹配關(guān)系,結(jié)合注意力模型,找到主題信息,從而生成最佳的回答。
目前,對于問答系統(tǒng)的研究主要分為兩個方向:基于統(tǒng)計特征的機器學習方法和基于深度學習的方法。隨著深度學習技術(shù)的發(fā)展和各種深度神經(jīng)網(wǎng)絡(luò)模型的提出,基于深度學習的方法成為了當前的研究熱點。Kim[10]提出一種基于卷積神經(jīng)網(wǎng)絡(luò)(Convolution Neural Network,CNN)的分類模型,利用訓練好的詞向量模型進行文本分類。Shi等[11]提出了基于長短時記憶網(wǎng)絡(luò)(Long Short-Term Memory,LSTM)的映射分類模型。為了提高回答的準確率以及效率,Sutskever等[12]提出了序列到序列(Sequence to Sequence,Seq2Seq)框架,通過輸入端編碼形成中間語義,再解碼出相應(yīng)的回答。Feng等[13]提出了基于共享卷積神經(jīng)網(wǎng)絡(luò)用于進行訓練問答模型,通過該模型進行語義相似度計算,并且在英文數(shù)據(jù)集上取得了優(yōu)異的成績。注意力模型的提出使得自然語言處理領(lǐng)域又有了一個新的研究方向,該模型通過模擬人腦的機制,對語句中的信息進行加權(quán)處理,從而對語句主題信息進行重點關(guān)注。Yin等[14]提出了一種基于注意力模型的多層卷積神經(jīng)網(wǎng)絡(luò)模型,實現(xiàn)了對文本語義的建模,并且在問答匹配和語義識別上都取得了很好的效果。目前,關(guān)于注意力模型大致可以分為兩類:Soft Attention和Hard Attention。Soft Attention是在求注意力概率分布的時候,對輸入句子中每個單詞都給出權(quán)重,其為概率分布;而Hard Attention在進行權(quán)重分配時,只會對句中某個或某幾個單詞進行分配,把目標句子單詞和這個單詞進行對齊,句中其他單詞硬性地認為對齊概率為0。本文提出的注意力模型是基于Soft Attention機制實現(xiàn)的。
圖1為本文提出的結(jié)合Bi-LSTM和注意力模型的問答系統(tǒng)框圖。在本系統(tǒng)中,輸入問句會首先經(jīng)過句向量(doc2vec)層生成相應(yīng)的句向量,然后將生成的向量作為Bi-LSTM的網(wǎng)絡(luò)輸入,最后將網(wǎng)絡(luò)模型的輸出通過Attention機制形成最后的輸出結(jié)果。
圖1 基于Bi-LSTM和注意力模型問答系統(tǒng)
在詞向量(word2vec)技術(shù)占據(jù)主流時,Le等[15]在word2vec的基礎(chǔ)上進行拓展,提出了句向量(doc2vec)技術(shù)。在word2vec技術(shù)中,主要分為Continuous Bag Of-Words(CBOW)模型和Skip-gram模型。本文主要討論CBOW模型,其模型結(jié)構(gòu)如圖2所示。該模型分為輸出層和輸入層,相比傳統(tǒng)的語言模型,由于其去掉了隱藏層,所以運算速度得到大幅提升。CBOW模型使用一段文本的中間詞作為目標詞,即利用該中間詞的上下詞來預測該詞,通過利用上下文各詞的詞向量的平均值來替代之前模型各個拼接的詞向量,可以提高模型預測的準確性。
圖2 CBOW模型結(jié)構(gòu)圖
與word2vec相對應(yīng),doc2vec也存在兩種模型:DM(Distributed Memory)模型和DBOW(Distributed Bag of Words)模型,本文采用的是DM模型。DM模型框架如圖3所示。
圖3 DM模型
DM模型增加了一個Paragraph ID,在訓練過程中,Paragraph ID會先映射成一個向量,且與詞向量的維數(shù)相同,但二者屬于不同的向量空間。在之后的計算中,paragraph vector和word vector累加起來,輸入softmax層,從而輸出預測結(jié)果。以“the cat sat”為例,通過DM模型可以預測出下一個詞為“on”。在一個句子的訓練過程中,paragraph ID始終保持不變,共享同一個paragraph vector,相當于每次在預測單詞概率時,都利用了整個句子的語義。在進行預測時,給每一個句子分配一個paragraph ID,詞向量和輸出層softmax參數(shù)保持訓練得到的不變,通過隨機梯度下降法訓練預測語句。本文利用句向量代替詞向量進行預測,從而可以充分利用語句的語序信息,準確理解語句意圖,并將其輸入下一層的網(wǎng)絡(luò)。
Bi-LSTM是由LSTM演化而來,LSTM的提出是為了解決循環(huán)神經(jīng)網(wǎng)絡(luò)在面對長序列時產(chǎn)生的梯度消失問題[16]。LSTM網(wǎng)絡(luò)模型由各個記憶單元組成,通過輸入門、遺忘門和輸出門來控制記憶單元的存儲內(nèi)容,通過門的控制可以在新的狀態(tài)下不斷疊加輸入序列,從而對前面的信息具有記憶功能。LSTM的網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。
圖4 LSTM網(wǎng)絡(luò)結(jié)構(gòu)
x={x1,x2,…,xt}表示輸入序列,h={h1,h2,…,ht}表示記憶單元的輸出,Ct表示記憶單元的記憶內(nèi)容。網(wǎng)絡(luò)具體計算方式如下:
ft=σ(wf·[ht-1,xt]+bf)
(1)
it=σ(wi·[ht-1,xt]+bi)
(2)
(3)
(4)
ot=σ(wo·[ht-1,xt]+bo)
(5)
ht=ot*tanh(Ct)
(6)
式中:w表示權(quán)重矩陣;b表示偏置向量;σ表示sigmoid函數(shù)。上一單元的輸出和當前輸入信息經(jīng)過遺忘門后,網(wǎng)絡(luò)決定需要拋棄哪種信息,然后通過輸入門進行信息更新,將Ct-1更新為Ct,最后通過輸出門確定需要輸出的值ot。
由于單向LSTM網(wǎng)絡(luò)在進行訓練時只考慮到句子的時序信息而忽略了上下文之間的關(guān)系,因此在進行多句對話時,往往不能取得很好的效果。Bi-LSTM網(wǎng)絡(luò)是由前向LSTM和后向LSTM組成,可以充分利用序列的上下文信息。本文提出用Bi-LSTM對問句進行訓練,融合前向LSTM和后向LSTM的結(jié)果進行輸出,從而可以提高模型回答的準確率。
注意力模型是由Bahdanau等[17]提出,該模型借鑒了人腦的思維模式,即人的注意力一定是集中在目光看到的事物上,隨著目光的轉(zhuǎn)移,注意力也在轉(zhuǎn)移。在自然語言處理領(lǐng)域中,注意力模型往往是附著在Encoder-Decoder(即Seq2Seq)框架下使用。該框架是處理由一個句子生成另一個句子的通用處理模型,對于輸入問句X經(jīng)過Encoder模塊編碼形成中間內(nèi)容向量C,Decoder模塊根據(jù)中間內(nèi)容向量C和之前已經(jīng)生成的歷史信息解碼出該時刻的單詞。在該框架中,解碼生成目標單詞時,采用的都是同一個內(nèi)容向量C,因此無法獲取關(guān)鍵信息,例如以下對話:
Q:南京有什么好玩的地方?
A:南京是江蘇省會,著名的六朝古都,是一座文化名城,有新街口、總統(tǒng)府和夫子廟等旅游景點。
當根據(jù)這個問題去生成答案時,“新街口”“總統(tǒng)府”“夫子廟”等回答與問題語義更加貼切,所以在模型中應(yīng)當突出這些關(guān)鍵詞語的作用。采用將注意力模型應(yīng)用到Encoder-Decoder框架中,可以有效地為不同詞語分配不同的權(quán)重,達到獲取對話主題信息的目的。融合注意力模型的Encoder-Decoder框架如圖5所示。
圖5 融合注意力模型的Encoder-Decoder框架
圖5中的Encoder-Decoder框架融合了注意力模型,在解碼時條件概率可以寫為:
p(y1,y2,…,yi-1,X)=g(yi-1,si,ci)
(7)
式中:si可以是一個非線性的多層神經(jīng)網(wǎng)絡(luò),表示解碼器在i時刻的隱藏狀態(tài),其計算公式如下:
si=f(si-1,yi-1,ci)
(8)
式中:f(·)表示某種非線性函數(shù)??梢钥闯觯繕溯敵雠c相對應(yīng)的內(nèi)容向量ci有關(guān),相比于傳統(tǒng)的Encoder-Decoder框架只有一個內(nèi)容向量C,圖5模型具有更好的獲取主題信息的能力。ci由編碼時的隱藏向量序列加權(quán)得到:
(9)
(10)
式中:eij=a(si-1,hj);L表示輸入源語句單詞的個數(shù);αij表示在輸入第i個單詞時源輸入語句第j個單詞的注意力分配系數(shù),αij的值越高,表明在生成第i個輸出時受第j個輸入的影響越大;hj表示源輸入語句第j個單詞的語義編碼。將第i-1時刻的隱藏狀態(tài)si-1和hj通過前饋神經(jīng)網(wǎng)絡(luò)a計算得到一個數(shù)值,然后使用softmax得到i時刻輸出在L個輸入隱藏狀態(tài)中的分配系數(shù)。
本文研究的問答系統(tǒng)就是采用融合了注意力模型的Encoder-Decoder框架,對問句進行編碼并解碼生成出相應(yīng)的回答,具有回答準確、多樣等特點。
本文的實驗都是在TensorFlow框架下進行的。TensorFlow是一個經(jīng)典的深度學習框架,具有一個很強大的庫以支持大規(guī)模的數(shù)值計算,并在后端使用C++加快其計算速度,擁有豐富的高級機器學習應(yīng)用程序接口(API)可以使其更容易地配置、訓練模型。
本文實驗數(shù)據(jù)來源于百度客服推廣的對話錄音,利用科大訊飛的語音轉(zhuǎn)文字工具,將對話錄音轉(zhuǎn)換成文本形式。將對話文本整理成兩個txt文檔,分別是問句文檔question.txt和答句文檔answer.txt。整個問答文檔包括大約80 000條對話數(shù)據(jù),其中60 000條作為訓練數(shù)據(jù)集,20 000條作為測試數(shù)據(jù)集。采用jieba分詞器進行文檔的中文分詞,然后進行去標點處理等操作,為句向量的生成做準備。
利用TensorFlow框架對該神經(jīng)網(wǎng)絡(luò)模型迭代訓練,直至網(wǎng)絡(luò)收斂并保存模型,模型參數(shù)如表1所示。
表1 模型的相關(guān)參數(shù)
在對話問答系統(tǒng)領(lǐng)域,主要采用計算系統(tǒng)生成的回答與參考回答之間的余弦相似度,以此來對問答系統(tǒng)的性能進行評價。
本文的問答系統(tǒng)采用上述方法進行性能評價。通過使用句向量模型分別計算生成回答與參考回答的句向量,然后計算二者之間的余弦相似度確定生成回答的準確性。為了更好地驗證本文所提出的方法,另外設(shè)置了兩組對照實驗,分別是:未融合注意力模型的Seq2Seq問答模型和基于檢索技術(shù)的問答模型。不同模型的回答準確率如表2所示。
表2 各個模型實驗結(jié)果對比
可以看出,本文提出的基于Bi-LSTM和注意力模型的問答系統(tǒng)在回答的準確率上較傳統(tǒng)的兩種模型都有較大的提升,其準確率可達到80.76%。對于檢索模型,其只能依靠訓練過的語料庫來進行回答,不能對訓練語料庫中未出現(xiàn)的問句做出有效的回答,但對于訓練語料庫中出現(xiàn)過的問題,可以給出準確的回答;而Seq2Seq模型雖然能夠解決檢索模型的一些缺陷,但是在解決長對話問題和理解用戶語義方面仍然存在不足,往往不能做出準確的回答。本文提出的模型充分利用了Bi-LSTM對上下文信息的獲取能力以及注意力模型對主題信息的獲取能力,從而提高了問答系統(tǒng)的準確率。圖6為本文提出的模型的問答效果。
圖6 對話效果演示
可以看出,本文設(shè)計的問答系統(tǒng)在面對提問時,能夠理解問題的語義并結(jié)合上下文對話信息,做出較為準確的回答。例如:在面對“太高了”這個簡短的問句時,系統(tǒng)能夠聯(lián)系到上文的價格信息,最后生成相應(yīng)的回答。
本文提出一種結(jié)合Bi-LSTM和注意力模型的問答系統(tǒng),采用了Encoder-Decoder框架實現(xiàn)系統(tǒng)的問答,并進行了模型訓練和測試。設(shè)置對照實驗,通過回答的準確率對系統(tǒng)的性能進行評估。實驗表明,本文系統(tǒng)在問答結(jié)果上能夠達到較高的準確率,可以較為流暢地回答問題,解決了傳統(tǒng)問答系統(tǒng)回答僵硬、理解能力不足等缺陷。在今后的研究工作中,將著重研究句法分析、數(shù)據(jù)預處理等,以降低中文問答語料庫不足對模型訓練帶來的影響。同時,嘗試利用不同的神經(jīng)網(wǎng)絡(luò)模型構(gòu)建系統(tǒng),觀察是否能夠更好地提高系統(tǒng)回答準確率,以及如何將注意力模型應(yīng)用到整個問句上也是未來研究的方向。