朱 劍,饒 泓,李 姍
(南昌大學(xué)信息工程學(xué)院,江西 南昌 330031)
智能問答系統(tǒng)是信息檢索的一種高級表達方式,通過理解用戶提出的問題,提供精確的信息服務(wù)。目前,智能問答系統(tǒng)在語音交互、在線客服、知識獲取、聊天機器人等諸多領(lǐng)域被廣泛應(yīng)用。答案選擇是智能問答系統(tǒng)的基礎(chǔ),是自然語言處理領(lǐng)域的重要研究方向。
答案選擇的核心是根據(jù)問題和候選答案之間的匹配關(guān)系對候選答案進行排序,選擇最適合問題的答案。因此,答案選擇任務(wù)是一個典型的句子匹配任務(wù),即尋找兩個句子之間的匹配關(guān)系。但由于自然語言的復(fù)雜性,答案的智能選擇面臨如下挑戰(zhàn):
(1) 問題和答案在語義上存在聯(lián)系,但是這種聯(lián)系不是簡單的語義相似性,不能僅以相似性作為是否準(zhǔn)確的衡量指標(biāo)。
(2)不同類型的問題所需要的答案形式不同,如“為什么”、“怎么樣”、“什么時候”、“什么人”等,問題形式具有多樣性。
(3)問題和答案存在長度差異,答案句子一般較長,包含有噪音和與問題無關(guān)的信息,從而干擾了對正確答案的判斷。
(4)答案與問題可能不共享相同的詞匯集。
本文結(jié)合BERT預(yù)訓(xùn)練模型和BiLSTM,引入注意力機制構(gòu)建新的答案選擇模型,以解決上述問題。
答案選擇任務(wù)是給定問題q和對應(yīng)的候選答案集合(a1,a2,…,as),從候選答案集合中找到能夠回答問題q的正確答案ak,1≤k≤s,其中s表示候選答案集合的大小。
傳統(tǒng)的答案選擇方法主要依賴特征工程構(gòu)建文本特征,使用語法樹、依賴樹等語言學(xué)工具提取句子特征,或者借助某些外部資源來解決問題,如Yih[1]等人基于wordNet構(gòu)建語義特征;Joty[2]等人使用NLP工具包提取單詞層的匹配特征,如關(guān)鍵詞匹配特征、命名實體匹配特征以及一些類似單詞長度等非語義類特征,再使用SVM模型進行分類;還有一些工作試圖使用依賴解析樹之間的最小編輯序列來實現(xiàn)匹配[3]。這些方法主要從詞語和句子結(jié)構(gòu)的角度對文本之間的相似關(guān)系進行建模,沒有充分考慮兩個句子之間的語義聯(lián)系;其次,人工制定的特征提取策略具有主觀性,依賴于個人直覺和經(jīng)驗,不夠全面客觀理解問題;另外,引入語言學(xué)工具的模型比其他模型復(fù)雜度高,計算成本增大,計算效率低。
深度學(xué)習(xí)技術(shù)在計算機視覺、圖像處理、自然語言處理等領(lǐng)域都取得了優(yōu)異的效果,已被證明能夠有效地捕獲大數(shù)據(jù)中的復(fù)雜模式。因此,近年來,人們研究使用深度學(xué)習(xí)方法進行答案選擇,利用深度學(xué)習(xí)技術(shù)自動學(xué)習(xí)有意義的特征表示,將特征學(xué)習(xí)融入到模型建立的過程中,節(jié)省大量人力物力,也減少了人為設(shè)計特征造成的不完備性問題[4,12]。
1.2.1 基于表示的答案選擇
目前答案選擇模型的大致流程是:(a)使用word2vec或glove將句子中的詞語映射為向量表示;(b)利用CNN或RNN對文本序列進行建模,提取序列特征以構(gòu)建句子的表示向量;(c)計算得到句子的表示向量后,對表示向量進行相似度計算。
根據(jù)模型對于句子特征提取結(jié)構(gòu)的不同,基于深度學(xué)習(xí)的答案選擇模型可以歸納為基于表示的答案選擇方法和基于交互的答案選擇方法兩類。
基于表示的答案選擇算法(如圖1),通過相同的CNN或者RNN結(jié)構(gòu)把兩個句子投影在同一個詞嵌入空間中,將兩個句子編碼為向量表示,再根據(jù)兩個句子向量做出匹配決定。Feng等人[5]提出CNN-QA方法,采用相同結(jié)構(gòu)且參數(shù)共享的CNN來編碼問題和答案,學(xué)習(xí)問題句子和答案句子的整體表示。Tan等人[6]提出QA-LSTM方法,利用BiLSTM分別編碼問題和答案句子,并通過max/mean pooling得到句子整體表示;QA-LSTM/CNN方法,在BiLSTM層上添加一個CNN層來捕獲句子特征,從而給出問題和答案的更多復(fù)合表示;Wang[7]采用堆疊的BiLSTM來學(xué)習(xí)句子表示;陳[8]從不同角度構(gòu)造多個文本匹配特征,作為排序模型的特征輸入,并對比了不同的匹配特征組合對應(yīng)的排序效果,且對每個排序特征的作用做了分析。該類框架的優(yōu)點是共享參數(shù)使模型更小、更容易訓(xùn)練。但在編碼過程中,忽略了兩個句子之間內(nèi)在的語義聯(lián)系,容易受句子中噪聲的干擾,丟失一些重要信息。
圖1 基于表示的答案選擇模型
1.2.2 基于交互的答案選擇
基于交互的答案選擇模型(如圖2所示)通過注意力機制實現(xiàn)問題和答案之間的信息交互,模型考慮兩個句子之間的相互影響,更關(guān)注有用信息、減少無用信息的干擾,從而提高模型性能。在Feng等人[5]以及Tan等人[6]的論文中,答案中單詞的注意權(quán)重依賴于問題的隱藏表示;Tan采用BiLSTM結(jié)構(gòu)提取問題和答案的語義特征,根據(jù)問題表示學(xué)習(xí)答案的注意力權(quán)重,從而提升了答案選擇的準(zhǔn)確率。Santos等人[9]提出了一種雙向注意機制,根據(jù)逐字交互矩陣,表示問題和答案的相互影響;Zhang[10]提出AI-NN,利用CNN或RNN來學(xué)習(xí)問題和答案的表示,使用AI-NN捕獲問題和答案之間各個匹配片段的內(nèi)在聯(lián)系。MVFNN[11]提出了基于多注意力視圖的網(wǎng)絡(luò)模型,不同類型的注意力關(guān)注不同的信息,再將所有信息融合構(gòu)建更準(zhǔn)確的文本表示。在這種框架中,模型層更深,結(jié)構(gòu)更加復(fù)雜,RNN、CNN以及Attention機制以更加復(fù)雜的方式結(jié)合使用,問題和答案句子之間有更多的交互,從而更準(zhǔn)確地提取語句特征。
圖2 基于交互的答案選擇模型
以上的方法大多使用word2vec或glove詞嵌入進行詞向量表示,即將詞語投影到一個低維的詞向量空間,每個詞被表示為一個低維向量,向量之間的空間關(guān)系反應(yīng)了單詞之間的語義特性。但在實際生活中,同一個詞在不同的語境下可能具有不同的意思,即存在一詞多義問題。如“Bank”有“銀行”的意思,也有“河畔”的意思。詞嵌入表示是靜態(tài)固定的,無法真實反應(yīng)不同語境下不同的詞語意思,很難僅通過靜態(tài)嵌入來解釋詞語的實際含義。
ELMO、GPT、BERT等預(yù)訓(xùn)練模型的出現(xiàn),在很大程度上改變了目前眾多自然語言處理任務(wù)中的模型架構(gòu)范式,在NLP領(lǐng)域的諸多任務(wù)中取得了相比以往更具競爭性的效果。而BERT使用Transformer結(jié)構(gòu)提取文本信息,比傳統(tǒng)的CNN、RNN具有更好的特征提取能力。BERT不僅可以視為嵌入層,獲取文本的上下文嵌入,也可以看作編碼層,實現(xiàn)對文本的特征提取[13]。因此,論文基于BERT預(yù)訓(xùn)練模型,提出BERT-LSTM網(wǎng)絡(luò)模型實現(xiàn)答案選擇。模型首先利用BERT對當(dāng)前語料進行微調(diào),獲取包含上下文信息的詞嵌入,即初步的特征編碼,再利用BiLSTM實現(xiàn)文本序列信息整合,最后引入注意力機制突出重點信息,以更好完成答案選擇任務(wù)。
BERT[14]使用的是一個雙向Transformer語言模型,如圖3所示。BERT不是像傳統(tǒng)語言模型那樣用出現(xiàn)過的詞去預(yù)測下一個詞,而是直接把整個句子的一部分詞隨機掩蓋,雙向編碼預(yù)測這些掩蓋的詞。同時,在編碼的選擇上,沒有用LSTM,而是使用了可以做得更深、具有更好并行性的Transformer,其中,Self-Attention可以學(xué)習(xí)序列中詞與其他詞之間的關(guān)系,充分挖掘每個詞的上下文信息。BERT模型在預(yù)訓(xùn)練階段學(xué)到了通用的語言知識,在當(dāng)前任務(wù)上微調(diào)學(xué)習(xí)詞語的上下文表示contextual-embedding,該嵌入一方面包含詞語的自身表示,又包含其語境的上下文表示,比單獨的word2vec/glove蘊含更加豐富、準(zhǔn)確的信息。
圖3 BERT模型
為了能應(yīng)對下游任務(wù),BERT給出了句子級別的表示(如圖4)。BERT輸入可以是一個單獨的句子、一段連續(xù)的文本或者一個句子對。如果BERT對應(yīng)輸入是一個句子,句子的頭部需要添加標(biāo)識符[CLS],尾部添加標(biāo)識符[SEP],如果輸入是兩個句子,則需要使用分隔符號[SEP]隔開作以區(qū)分。句中每個單詞有三個embedding:詞語向量(Token Embeddings)、段向量(Segment Embeddings)和位置向量(Positional Embeddings),單詞對應(yīng)的三個embedding疊加,就形成了BERT的輸入,如圖4所示。其中,[CLS]是每個輸入句子的第一個標(biāo)記,最終對應(yīng)的輸出可理解為句子整體含義,用于下游的分類任務(wù)。標(biāo)記[SEP]是用來分隔兩個句子的。
圖4 BERT輸入示例
Google提供了兩種預(yù)訓(xùn)練好的BERT模型:BERT_base和BERT_large。兩種模型的具體情況如表1所示。
表1 BERT的兩種模型
BERT-LSTM模型主要由BERT層、BiLSTM層以及注意力計算組成,如圖5所示。首先,將預(yù)訓(xùn)練好的BERT模型在本任務(wù)數(shù)據(jù)集進行微調(diào),獲取文本序列的詞義表示;將得到的詞語表示向量輸入BiLSTM模型,進行進一步的文本語義信息整合;利用注意力機制實現(xiàn)問題和答案之間的信息交互,突出重點信息,減少無關(guān)信息的干擾;計算問題和答案句子表示向量,進行余弦相似度計算,返回相似度得分最高的候選答案。
(1)
(2)
其中,Wa和Wq是網(wǎng)絡(luò)參數(shù),αi表示注意力權(quán)重。
圖5 BERT-LSTM模型結(jié)構(gòu)
WikiQA[15]和InsuranceQA[5]是兩個常用的答案選擇任務(wù)基準(zhǔn)數(shù)據(jù)集。WikiQA是微軟研究院2015年公開的英文答案選擇數(shù)據(jù)集,收集和注釋用于開放域問題回答的研究。WikiQA使用Bing查詢?nèi)罩咀鳛閱栴}源,反映一般用戶的真實信息需求。由于原始數(shù)據(jù)集中有一部分問題沒有對應(yīng)的答案,對原始的數(shù)據(jù)進行了篩選,去除沒有正確答案的數(shù)據(jù)。InsuranceQA數(shù)據(jù)集是保險領(lǐng)域首個開放的QA語料庫。該語料庫包含從網(wǎng)站Insurance Library收集的問題和答案,是一個現(xiàn)實世界的語料。數(shù)據(jù)集具體情況如表2所示。
表2 WikiQA和InsuranceQA數(shù)據(jù)集情況
不同數(shù)據(jù)集的數(shù)據(jù)來源不同、內(nèi)容領(lǐng)域不同、數(shù)據(jù)特點不同,不同的評價指標(biāo)從不同的角度反應(yīng)模型的性能。目前的答案選擇算法對于不同的數(shù)據(jù)集采取不同的評價指標(biāo),目前常用的評價指標(biāo)主要有MAP、MRR以及Accuracy。
(3)
其中,mi是第i個問題的候選答案個數(shù),pj是第i個問題的第j個正確答案的排序位置。
(4)
pi表示正確答案在排序中的位置,|Q|表示數(shù)據(jù)集大小。
準(zhǔn)確率也是常用來的評價指答案選擇模型的性能。|Q|表示數(shù)據(jù)集大小,precision@1表示排序第一個候選答案的準(zhǔn)確率。
(5)
深度神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練中主要有模型參數(shù)和超參數(shù),參數(shù)的選取和模型效果息息相關(guān)。實驗中的模型,先初始化參數(shù),在訓(xùn)練數(shù)據(jù)集上進行訓(xùn)練,利用驗證集來選擇最佳參數(shù),將最優(yōu)的模型在測試集上進行測試。本文實驗中BERT采用Google發(fā)布的預(yù)訓(xùn)練好的英文模型“BERT-base,Uncased”,Transformer層數(shù)為12,隱藏層大小為768,注意力head數(shù)目為12,模型總參數(shù)量110M。使用Adam進行模型優(yōu)化,學(xué)習(xí)率設(shè)置為2e-5,訓(xùn)練的batch_size設(shè)置為64,BiLSTM的隱藏單元為256,為了避免模型過擬合設(shè)置dropout為0.2。對比實驗中的詞向量來源于glove官網(wǎng)下載的glove.840B.300d,詞向量維度為300。
問題和答案句子的表示向量,采用余弦相似度進行計算:
(6)
采用Hingle損失函數(shù)計算損失進行計算,損失Loss計算方式如下:
Loss=max{0,m-cos(vq,va+)+cos(vq,va-)}
(7)
訓(xùn)練的目的就是要在訓(xùn)練過程中不斷更新參數(shù),使得模型的總損失盡可能的小。vq,va+和va-分別是問題以及正確答案和錯誤答案的表示向量,損失函數(shù)的目的就是要問題和正確答案的相似度盡可能大于問題和錯誤答案的相似度,而且二者的盡可能有明顯的間隔,m是超參數(shù),實質(zhì)就是表示這個間隔,即cos(vq,va+)-cos(vq,va-)>m。實驗中m取值為0.1。
將本文模型與常見的多個答案選擇算法分別在InsuranceQA和WikiQA數(shù)據(jù)集的結(jié)果進行對比,比較模型之間的性能差異。
模型在InsuranceQA數(shù)據(jù)集的實驗結(jié)果如表3所示。word2vec-Pooling直接對詞嵌入求平均作為句子表示,該方法忽略了詞序和詞語之間的聯(lián)系,結(jié)果最差;BERT-pooling將BERT的輸出取平均作為句子表示,取得了不錯的結(jié)果;BERT-LSTM比word2vec-LSTM等其他一系列方法取得了更好的結(jié)果。一方面,BERT模型在預(yù)訓(xùn)練階段學(xué)到了通用的語言知識,在當(dāng)前任務(wù)上微調(diào)學(xué)習(xí)詞語的上下文表示,該嵌入既包含詞語的自身表示,又包含語境的上下文表示,比單獨的word2vec/glove蘊含更豐富、準(zhǔn)確的表示信息。另一方面,BERT實際不僅起到了嵌入層的作用,還起到了編碼層的作用。BERT以Transformer作為編碼器,學(xué)習(xí)序列中詞與詞之間的關(guān)系,充分挖掘了每個詞的上下文信息。
表3 在InsuranceQA數(shù)據(jù)集上的準(zhǔn)確率
在WikiQA數(shù)據(jù)集上的實驗結(jié)果如表4,可以看出,BERT-LSTM模型提升了MAP和MRR兩個指標(biāo)上的性能,取得了更好的效果。
論文所提出方法在兩個標(biāo)準(zhǔn)數(shù)據(jù)集上均取得了較好的結(jié)果,驗證了模型的有效性。同時,引入注意力機制的模型相比未使用注意力機制的模型具有更好得結(jié)果。說明了注意力機制在句子建模的過程中可以增加對關(guān)鍵信息的關(guān)注,抑制無關(guān)信息的干擾,提升模型對句子語義的表示。
表4 在WikiQA數(shù)據(jù)集上的結(jié)果
論文針對智能問答選擇領(lǐng)域常見的文本語義表示模型中詞向量存在的一詞多義以及無法包含上下文語義信息的問題,提出了BERT-LSTM問答選擇模型,該模型在兩個答案選擇基準(zhǔn)數(shù)據(jù)集上的測試均取得了理想的結(jié)果,在答案選擇基準(zhǔn)數(shù)據(jù)集InsuranceQA上準(zhǔn)確率達到75%至76%,WikiQA數(shù)據(jù)集上MAP提升了3.92%,MRR提升了3.19%。驗證了基于BERT的上下文嵌入比word2vec/glove具有更好的表示能力,并證實了所提出模型的有效性。