王 龍,段利國(guó),李?lèi)?ài)萍,2
(1.太原理工大學(xué) 信息與計(jì)算機(jī)學(xué)院,山西 太原 030024;2.武漢大學(xué) 軟件工程國(guó)家重點(diǎn)實(shí)驗(yàn)室,湖北 武漢 430072)
隨著互聯(lián)網(wǎng)技術(shù)飛快發(fā)展,數(shù)據(jù)信息急劇增多,面向大眾領(lǐng)域的問(wèn)答系統(tǒng)成為越來(lái)越多的人獲取信息、共享知識(shí)的首選途徑,以百度知道為代表的社區(qū)問(wèn)答系統(tǒng)在人們生活中應(yīng)用廣泛,但其針對(duì)同一個(gè)問(wèn)題往往有多個(gè)不同答案,而且答案的質(zhì)量也良莠不齊。因此,旨在針對(duì)用戶(hù)的提問(wèn)信息,分析篩選并返回給用戶(hù)所需的準(zhǔn)確答案的答案排序算法起到重要作用。
通過(guò)分析眾多問(wèn)答信息數(shù)據(jù)發(fā)現(xiàn),相較于長(zhǎng)文本問(wèn)答對(duì),無(wú)法更多提取短文本文本信息,導(dǎo)致其排序效果差距很大,達(dá)不到較高的準(zhǔn)確率。因此提出融合多種神經(jīng)網(wǎng)絡(luò)與多特征的答案排序模型,由多種神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)文本特征,同時(shí)引入多種特征信息提高準(zhǔn)確率。
本文的主要貢獻(xiàn)如下:
(1)構(gòu)建由卷積神經(jīng)網(wǎng)絡(luò)(CNN)、雙向門(mén)控循環(huán)單元(Bi-GRUs)和多層感知器(MLP)組成的多層神經(jīng)網(wǎng)絡(luò)模型,在融合層加入詞匯特征、主題特征等多種特征信息。
(2)對(duì)卷積神經(jīng)網(wǎng)絡(luò)(CNN)做出改進(jìn),采用2-Max Pooling做池化操作,同時(shí)引入Leaky Relu激活函數(shù)以解決“梯度消失”問(wèn)題,加快收斂速度。
(3)該模型在WikiQA數(shù)據(jù)集上取得較好的答案排序效果。
現(xiàn)階段答案排序方法可以分成兩類(lèi):第一類(lèi)是傳統(tǒng)的基于詞匯、句法、語(yǔ)法等特征信息進(jìn)行答案排序的機(jī)器學(xué)習(xí)方法;第二類(lèi)是新興的基于神經(jīng)網(wǎng)絡(luò)模型的深度學(xué)習(xí)方法。近年來(lái),部分研究人員嘗試將深度學(xué)習(xí)模型應(yīng)用在答案排序的任務(wù)上,取得較好的效果。Nie L通過(guò)構(gòu)建由一個(gè)離線(xiàn)學(xué)習(xí)組件和一個(gè)在線(xiàn)搜索組件組成的知識(shí)庫(kù)的方法進(jìn)行答案選擇[1]。Severyn A先用二元卷積神經(jīng)網(wǎng)絡(luò)對(duì)問(wèn)題和候選答案進(jìn)行向量化表示,而后根據(jù)相似矩陣計(jì)算得到問(wèn)題與候選答案的相似度值,并把此值與問(wèn)題和候選答案的向量化表示相互拼接,再引入其它特征,最后通過(guò)softmax層對(duì)新拼接的向量進(jìn)行分類(lèi)[2]。Nie YP引入雙向長(zhǎng)短時(shí)記憶(LSTM)編解碼器,有效地解決機(jī)器翻譯任務(wù)中出現(xiàn)的問(wèn)題和答案之間的詞匯鴻溝,并使用step attention機(jī)制來(lái)允許問(wèn)題集中在候選答案的某個(gè)部分[3]。Xiang等針對(duì)社區(qū)問(wèn)答數(shù)據(jù)提出一個(gè)專(zhuān)注的深層神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),該結(jié)構(gòu)采用卷積神經(jīng)網(wǎng)絡(luò)、基于注意力的長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)和條件隨機(jī)場(chǎng)的方法[4]。Fan等的工作則是利用多維特征組合和相似度排序?qū)W(wǎng)絡(luò)論壇中的社區(qū)問(wèn)答排序方法進(jìn)行改進(jìn),充分利用問(wèn)題答案中的信息來(lái)確定問(wèn)題和答案之間的相似性,并使用基于文本的特征信息來(lái)確定答案是否合理[5]?;谝陨涎芯浚瑸榱烁玫靥岣叽鸢概判虻男阅?,本文提出了一種融合多種神經(jīng)網(wǎng)絡(luò)與多特征信息的深度學(xué)習(xí)模型。
在答案排序的研究過(guò)程中,僅僅對(duì)問(wèn)題和候選答案進(jìn)行深度學(xué)習(xí)是不全面的,其特有的詞匯特征、主題特征等多種特征信息也在一定程度上影響著答案排序效果,因此本文將多種神經(jīng)網(wǎng)絡(luò)和多特征信息進(jìn)行融合,使用卷積神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)問(wèn)題和候選答案特征,采用雙向門(mén)控循環(huán)單元對(duì)融合多種特征信息的向量進(jìn)行訓(xùn)練,經(jīng)多層感知器處理后,通過(guò)softmax分類(lèi)器得出最終排序結(jié)果。圖1為模型的基本結(jié)構(gòu)。
圖1 網(wǎng)絡(luò)模型結(jié)構(gòu)
輸入層對(duì)數(shù)據(jù)集中的問(wèn)題和候選答案均使用詞向量進(jìn)行表示,該詞向量集來(lái)自于Google news,共收錄約300萬(wàn)個(gè)英文詞,每個(gè)詞的維度均為300維,使用詞匹配的方式將問(wèn)題和候選答案中的每個(gè)單詞與詞向量集中相對(duì)應(yīng)單詞比對(duì)替換,查找不到的單詞使用300維的0向量進(jìn)行表示。
此外,為確保模型具有健壯性,通過(guò)對(duì)WikiQA英文數(shù)據(jù)集中數(shù)據(jù)的分析得知,問(wèn)題句子的最大長(zhǎng)度為22,候選答案句子的最大長(zhǎng)度為98,因此,實(shí)驗(yàn)過(guò)程中全部采用最大長(zhǎng)度120,對(duì)于長(zhǎng)度不足的句子均用0進(jìn)行補(bǔ)齊。
近年來(lái),卷積神經(jīng)網(wǎng)絡(luò)[6]作為深度學(xué)習(xí)的典型算法得到了進(jìn)一步發(fā)展,并被廣泛地應(yīng)用在計(jì)算機(jī)視覺(jué)以及自然語(yǔ)言處理等多個(gè)領(lǐng)域。與普通的神經(jīng)網(wǎng)絡(luò)相比,其主要區(qū)別在于,卷積神經(jīng)網(wǎng)絡(luò)含有一個(gè)由卷積層和池化層構(gòu)成的特征抽取器。且卷積和池化可以大大簡(jiǎn)化模型的復(fù)雜度,減少模型的參數(shù)。圖2為卷積神經(jīng)網(wǎng)絡(luò)在自然語(yǔ)言處理中的應(yīng)用示例。
圖2 卷積神經(jīng)網(wǎng)絡(luò)在自然語(yǔ)言處理中的應(yīng)用示例
本實(shí)驗(yàn)中,卷積層對(duì)輸入層中得到的120*300階的矩陣進(jìn)行處理,其中120表示句子的長(zhǎng)度,300代表詞向量的維數(shù)。當(dāng)卷積作用在滑動(dòng)窗口步長(zhǎng)為2的句子上時(shí),將得到119個(gè)輸出結(jié)果。其操作如式(1)所示
ci=f(W*vi,i+k-1+b)
(1)
W是卷積層權(quán)重矩陣,vi,i+k-1表示滑動(dòng)窗口作用時(shí)第i個(gè)單詞到第i+k-1個(gè)單詞的詞向量組成的矩陣,b代表偏置項(xiàng),f為激活函數(shù)。本文中選用基于Relu函數(shù)的變體Leaky-Relu。其相較于sigmoid和tanh等飽和激活函數(shù),Relu及其變體作為非飽和激活函數(shù)能解決“梯度消失”問(wèn)題并加快收斂速度。而Leaky-Relu函數(shù)能夠處理Relu函數(shù)在z小于0時(shí),斜率為0的情況。其函數(shù)公式如式(2)所示
(2)
式中:0.05為斜率,函數(shù)圖像如圖3所示。
池化層對(duì)卷積核作用后的結(jié)果向量c=[c1,c2,…,c119] 做池化操作,實(shí)驗(yàn)中使用最大池化的變體2-Max Pooling,與Max Pooling相比,其能夠提取所有特征值中得分最高的2個(gè)值,并且可以保留這些特征值原始的先后順序。通過(guò)進(jìn)行池化操作后,便得到每一個(gè)卷積層所抽取的特征集中相對(duì)于較為重要的部分,即問(wèn)題和候選答案的重要語(yǔ)義部分。圖4為2-Max Pooling的示例。
圖3 k=0.05時(shí)的Leaky-Relu函數(shù)
圖4 2-Max Pooling示例
此外,為防止過(guò)擬合現(xiàn)象的產(chǎn)生,引入了Dropout機(jī)制[7],其原理是當(dāng)數(shù)據(jù)在前向傳播的時(shí)候,讓若干神經(jīng)元的激活值以一定的概率p停止工作,反向傳播時(shí)再次激活。
融合層將經(jīng)卷積神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)后得到的向量與主題特征、詞匯特征。詞匯特征和主題特征均采用one-hot編碼。其中主題特征由數(shù)據(jù)集中的Title項(xiàng)提供。詞匯特征由斯坦福大學(xué)提供的Standford CoreNLP工具包[8]進(jìn)行處理獲得,其中主要包括詞性和命名實(shí)體識(shí)別兩項(xiàng),英文詞性標(biāo)注集合共有36種。表1給出了一個(gè)英文例句在經(jīng)過(guò)Standford CoreNLP工具包處理后的示例結(jié)果。
表1 英文例句處理結(jié)果示例
表中第三行對(duì)應(yīng)例句中每個(gè)單詞的詞性標(biāo)注結(jié)果,其中NNP代表專(zhuān)有名詞單數(shù)形式,VBD代表動(dòng)詞過(guò)去式,DT代表限定詞,NN代表名詞單數(shù)形式,TO代表單詞to。表中第四行對(duì)應(yīng)例句中每個(gè)單詞的命名實(shí)體關(guān)系特征,其中人名Kosgi Santosh被識(shí)別為PERSON,校名Stanford University被識(shí)別為ORGANIZATION,而其它非命名實(shí)體均用O來(lái)表示。
隨著深度學(xué)習(xí)的興起,長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)模型因?yàn)槠鋵W(xué)習(xí)過(guò)程更容易收斂且規(guī)避了循環(huán)神經(jīng)網(wǎng)絡(luò)的梯度爆炸和梯度消失問(wèn)題,正在自然語(yǔ)言處理研究中發(fā)揮著越來(lái)越重要的作用,本課題所使用的門(mén)控循環(huán)單元是基于長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)模型而提出來(lái)的一種變體方式[9],相較于由遺忘門(mén)單元、輸入門(mén)單元、輸出門(mén)單元和記憶細(xì)胞單元組成傳統(tǒng)記憶塊,門(mén)控循環(huán)單元只有一個(gè)更新門(mén)單元和一個(gè)重置門(mén)單元,且取消進(jìn)行線(xiàn)性自更新的記憶細(xì)胞單元,而是在隱藏單元中利用門(mén)控直接進(jìn)行線(xiàn)性自更新。其記憶塊的結(jié)構(gòu)如圖5所示。
圖5 門(mén)控循環(huán)單元記憶塊結(jié)構(gòu)
更新門(mén)單元主要用于控制前一時(shí)刻的狀態(tài)信息有多少被帶入到當(dāng)前狀態(tài)中。將前一時(shí)刻的狀態(tài)信息和當(dāng)前時(shí)刻的狀態(tài)信息分別進(jìn)行線(xiàn)性變換,再將相加后得到的數(shù)據(jù)送入到更新門(mén)單元,更新門(mén)單元的值z(mì)t越大說(shuō)明前一時(shí)刻的狀態(tài)信息被帶入的越多。如式(3)所示
zt=σ(Wz·[ht-1,xt])
(3)
rt=σ(Wr·[ht-1,xt])
(4)
門(mén)控循環(huán)單元不再使用單獨(dú)的記憶細(xì)胞單元存儲(chǔ)記憶信息,而是直接利用隱藏單元記錄歷史狀態(tài)。利用重置門(mén)單元rt控制當(dāng)前信息和記憶信息的數(shù)據(jù)量,并生成新的記憶信息繼續(xù)向前傳遞,由于重置門(mén)單元的輸出在區(qū)間 [0,1] 內(nèi),因此利用重置門(mén)單元控制記憶信息能夠繼續(xù)向前傳遞的數(shù)據(jù)量,當(dāng)重置門(mén)單元的輸出值為0時(shí)表示記憶信息全部消除,反之當(dāng)重置門(mén)單元的輸出值為1時(shí),表示記憶信息全部通過(guò)。如式(5)所示
(5)
(6)
單向門(mén)控循環(huán)單元主要是根據(jù)之前時(shí)刻的時(shí)序信息對(duì)下一時(shí)刻的輸出做預(yù)測(cè),但是在有的一些問(wèn)題里,當(dāng)前時(shí)刻的輸出不單與之前的狀態(tài)信息有關(guān),與未來(lái)的狀態(tài)信息也可能有關(guān)系,因此雙向門(mén)控循環(huán)單元[10]便應(yīng)運(yùn)而生,即在正向門(mén)控循序單元的基礎(chǔ)上添加反向門(mén)控循環(huán)單元,使其能夠同時(shí)對(duì)兩個(gè)方向的序列進(jìn)行操作,每個(gè)節(jié)點(diǎn)會(huì)生成正向與反向兩個(gè)獨(dú)立的門(mén)控循環(huán)單元輸出向量,然后將這兩個(gè)獨(dú)立的輸出向量進(jìn)行拼接作為當(dāng)前節(jié)點(diǎn)的輸出結(jié)果,由此得到當(dāng)前節(jié)點(diǎn)的向量信息。簡(jiǎn)單來(lái)說(shuō)可以將雙向門(mén)控循環(huán)單元看成是一個(gè)兩層的神經(jīng)網(wǎng)絡(luò),第一層是從左側(cè)作為序列的輸入端,在文本處理上即是從句子的開(kāi)頭開(kāi)始輸入,而第二層則是從右側(cè)作為序列的輸入端,即是從句子的最后一個(gè)詞語(yǔ)作為輸入,反方向做與第一層同樣的操作。最后對(duì)得到的兩個(gè)結(jié)果進(jìn)行拼接處理。圖6為雙向門(mén)控循環(huán)單元。
圖6 雙向門(mén)控循環(huán)單元
(7)
感知器網(wǎng)絡(luò)是一種典型的前饋人工神經(jīng)網(wǎng)絡(luò)模型,采用單向多層的結(jié)構(gòu),每層均包含若干個(gè)神經(jīng)元,同層的神經(jīng)元相互之間無(wú)連接,每層之間信息的傳送只沿一個(gè)方向進(jìn)行,即從輸入層開(kāi)始接收信息,處理后輸出到下一層,直至輸出層獲得最后結(jié)果[11]。第一層稱(chēng)為輸入層,最后一層為輸出層,中間為隱藏層。隱藏層可以是任意層。圖7為含有一個(gè)隱藏層的多層感知器。
圖7 含有一個(gè)隱藏層的多層感知器
在本文方法中,將雙向門(mén)控循環(huán)單元層得到的ht送入多層感知器計(jì)算當(dāng)前候選答案at的預(yù)測(cè)得分scoret,具體如式(8)所示[12]
scoret=σ(Wyht+by)
(8)
式中:Wy、by分別表示權(quán)重矩陣及偏置。
輸出層使用softmax分類(lèi)器對(duì)每個(gè)候選答案對(duì)應(yīng)的分?jǐn)?shù)進(jìn)行處理,選取概率最大的值作為最后結(jié)果。其計(jì)算公式如式(9)所示
Softmaxi=escorei/∑jescorej
(9)
本文研究中使用微軟公司在2015年公開(kāi)的WikiQA英文數(shù)據(jù)集,其是一個(gè)應(yīng)用于開(kāi)放領(lǐng)域問(wèn)答的數(shù)據(jù)集,共含有3047個(gè)問(wèn)題和對(duì)應(yīng)的29 258個(gè)答案,其問(wèn)題是篩選自微軟公司推出的必應(yīng)(Bing)搜索服務(wù)平臺(tái)下的查詢(xún)?nèi)罩局械恼鎸?shí)用戶(hù)提問(wèn)信息。用戶(hù)搜索的問(wèn)題均連接一個(gè)與所查詢(xún)問(wèn)題的主題有關(guān)的維基百科頁(yè)面,并將此頁(yè)面中摘要部分的每一句話(huà)選為該問(wèn)題的候選答案集合,通過(guò)使用人工的方法對(duì)所有問(wèn)答對(duì)進(jìn)行正確與否的標(biāo)注[13]。表2給出了WikiQA數(shù)據(jù)集中的詳細(xì)信息。
表2 WikiQA數(shù)據(jù)集信息
根據(jù)文獻(xiàn)中的經(jīng)驗(yàn)值,卷積神經(jīng)網(wǎng)絡(luò)層中卷積核長(zhǎng)度設(shè)置為3、4、5,卷積核個(gè)數(shù)分別設(shè)置為50,dropout的比率設(shè)置為0.5,Adam學(xué)習(xí)率設(shè)為0.01,batch_size設(shè)為64,神經(jīng)元的激活函數(shù)使用Relu。雙向門(mén)控循環(huán)單元層中單層隱含層狀態(tài)設(shè)置為150維,學(xué)習(xí)率、dropout比率和卷積神經(jīng)網(wǎng)絡(luò)層設(shè)置一致。多層感知器層中采用RMSprop優(yōu)化器,dropout比率和卷積神經(jīng)網(wǎng)絡(luò)層設(shè)置一致。卷積核個(gè)數(shù)不同時(shí)的結(jié)果如圖8所示。
圖8 卷積核個(gè)數(shù)不同時(shí)的結(jié)果
使用自對(duì)比實(shí)驗(yàn)的方式分析本文所提方法的答案排序性能。CNN方法是通過(guò)對(duì)問(wèn)題和候選答案的分布式表示進(jìn)行卷積池化操作后,將結(jié)果送入softmax進(jìn)行分類(lèi)。CNN+WORD是對(duì)問(wèn)題和候選答案的分布式表示加入詞匯特征后再送入卷積神經(jīng)網(wǎng)絡(luò)。LSTM是利用長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)提取問(wèn)題和候選答案的特征。Bi-LSTM是在單向LSTM的基礎(chǔ)上又添加反向的LSTM,由此得到兩個(gè)相互獨(dú)立的LSTM輸出向量,然后將這兩個(gè)獨(dú)立的LSTM輸出向量拼接作為當(dāng)前節(jié)點(diǎn)的輸出。Bi-GRU是基于門(mén)控循環(huán)單元(GRU)作為L(zhǎng)STM的一種變體情況下演變而來(lái)的。Bi-GRU+WORD+TOPIC是在Bi-GRU的基礎(chǔ)上將詞語(yǔ)的向量表示與詞匯特征和主題特征相融合作為輸入送入網(wǎng)絡(luò)。CNN+Bi-GRU是將卷積神經(jīng)網(wǎng)絡(luò)和雙向門(mén)控循環(huán)單元做結(jié)合,CNN的輸出結(jié)果作為Bi-GRU的輸入內(nèi)容。CNN+Bi-GRU+MLP+WORD+TOPIC則是本文所提出的新方法。具體實(shí)驗(yàn)結(jié)果對(duì)比見(jiàn)表3。
表3 實(shí)驗(yàn)結(jié)果對(duì)比
在此自對(duì)比實(shí)驗(yàn)的基礎(chǔ)上,又進(jìn)行了進(jìn)一步的對(duì)比實(shí)驗(yàn)。Word Cnt是計(jì)算問(wèn)題和候選答案中相同詞的個(gè)數(shù)作為評(píng)價(jià)標(biāo)準(zhǔn)。PV-Cnt是先對(duì)問(wèn)題和候選答案進(jìn)行向量化表示,同時(shí)計(jì)算問(wèn)答對(duì)的語(yǔ)義相似度,再與詞共現(xiàn)特征做拼接組合。CNN-Cnt是采用卷積神經(jīng)網(wǎng)絡(luò)與詞共現(xiàn)特征結(jié)合的結(jié)果。CNNlexical[14]在得到問(wèn)題和候選答案的分布式表示后,通過(guò)對(duì)兩者中的詞語(yǔ)分解引入詞匯特征,然后對(duì)候選答案打分。Bi-LSTM+Lexical+Topic+Cnt通過(guò)在 Bi-LSTM 模型中加入詞匯特征、主題特征、詞共現(xiàn)特征后對(duì)候選答案進(jìn)行判斷。對(duì)比中使用新的評(píng)價(jià)指標(biāo)平均AP值mAP(mean average precision),AP就是對(duì)一個(gè)問(wèn)題,計(jì)算其命中時(shí)的平均精準(zhǔn)度,而mAP則是在所有問(wèn)題上求平均,mAP的計(jì)算方法如式(10)所示,其中AP表示平均精準(zhǔn)度,q表示在單個(gè)類(lèi)別的總樣本個(gè)數(shù),QR表示問(wèn)題類(lèi)別數(shù)量。具體模型結(jié)果對(duì)比見(jiàn)表4
(10)
表4 模型結(jié)果對(duì)比
通過(guò)對(duì)比上述發(fā)放可知,本文所提出的融合多種神經(jīng)網(wǎng)絡(luò)與多特征的答案排序模型的準(zhǔn)確率均高于現(xiàn)有模型。
本文提出了一種融合多種神經(jīng)網(wǎng)絡(luò)與詞匯特征、主題特征等多種特征信息的答案排序模型。用Word2vec分別對(duì)問(wèn)題和候選答案進(jìn)行詞向量表示,并送入到卷積神經(jīng)網(wǎng)絡(luò),將卷積池化后的結(jié)果與詞匯特征、主題特征拼接后作為雙向的門(mén)控循環(huán)單元的輸入,輸出結(jié)果經(jīng)多層感知器進(jìn)行處理后,使用softmax進(jìn)行多分類(lèi)處理。該模型在WikiQA英文數(shù)據(jù)集上取得不錯(cuò)的效果。此外,通過(guò)研究發(fā)現(xiàn),融合特征信息后的效果要明顯優(yōu)于簡(jiǎn)單的深度學(xué)習(xí)模型,說(shuō)明特征信息在一定程度上起到了作用。
考慮到引入部分特征能夠?qū)?zhǔn)確率起到作用,且對(duì)于長(zhǎng)文本問(wèn)答對(duì)中,過(guò)多的冗余信息也會(huì)對(duì)準(zhǔn)確率造成一定影響。因此,結(jié)合當(dāng)下神經(jīng)網(wǎng)絡(luò)研究的熱點(diǎn)之一注意力機(jī)制[15],下一步的工作將選擇性地加入更多特征信息,嘗試把注意力機(jī)制與模型相結(jié)合,以期進(jìn)一步提高答案排序效果。