朱 劍,饒 泓,李 姍
(南昌大學信息工程學院,江西 南昌 330031)
智能問答系統是信息檢索的一種高級表達方式,通過理解用戶提出的問題,提供精確的信息服務。目前,智能問答系統在語音交互、在線客服、知識獲取、聊天機器人等諸多領域被廣泛應用。答案選擇是智能問答系統的基礎,是自然語言處理領域的重要研究方向。
答案選擇的核心是根據問題和候選答案之間的匹配關系對候選答案進行排序,選擇最適合問題的答案。因此,答案選擇任務是一個典型的句子匹配任務,即尋找兩個句子之間的匹配關系。但由于自然語言的復雜性,答案的智能選擇面臨如下挑戰:
(1) 問題和答案在語義上存在聯系,但是這種聯系不是簡單的語義相似性,不能僅以相似性作為是否準確的衡量指標。
(2)不同類型的問題所需要的答案形式不同,如“為什么”、“怎么樣”、“什么時候”、“什么人”等,問題形式具有多樣性。
(3)問題和答案存在長度差異,答案句子一般較長,包含有噪音和與問題無關的信息,從而干擾了對正確答案的判斷。
(4)答案與問題可能不共享相同的詞匯集。
本文結合BERT預訓練模型和BiLSTM,引入注意力機制構建新的答案選擇模型,以解決上述問題。
答案選擇任務是給定問題q和對應的候選答案集合(a1,a2,…,as),從候選答案集合中找到能夠回答問題q的正確答案ak,1≤k≤s,其中s表示候選答案集合的大小。
傳統的答案選擇方法主要依賴特征工程構建文本特征,使用語法樹、依賴樹等語言學工具提取句子特征,或者借助某些外部資源來解決問題,如Yih[1]等人基于wordNet構建語義特征;Joty[2]等人使用NLP工具包提取單詞層的匹配特征,如關鍵詞匹配特征、命名實體匹配特征以及一些類似單詞長度等非語義類特征,再使用SVM模型進行分類;還有一些工作試圖使用依賴解析樹之間的最小編輯序列來實現匹配[3]。這些方法主要從詞語和句子結構的角度對文本之間的相似關系進行建模,沒有充分考慮兩個句子之間的語義聯系;其次,人工制定的特征提取策略具有主觀性,依賴于個人直覺和經驗,不夠全面客觀理解問題;另外,引入語言學工具的模型比其他模型復雜度高,計算成本增大,計算效率低。
深度學習技術在計算機視覺、圖像處理、自然語言處理等領域都取得了優異的效果,已被證明能夠有效地捕獲大數據中的復雜模式。因此,近年來,人們研究使用深度學習方法進行答案選擇,利用深度學習技術自動學習有意義的特征表示,將特征學習融入到模型建立的過程中,節省大量人力物力,也減少了人為設計特征造成的不完備性問題[4,12]。
1.2.1 基于表示的答案選擇
目前答案選擇模型的大致流程是:(a)使用word2vec或glove將句子中的詞語映射為向量表示;(b)利用CNN或RNN對文本序列進行建模,提取序列特征以構建句子的表示向量;(c)計算得到句子的表示向量后,對表示向量進行相似度計算。
根據模型對于句子特征提取結構的不同,基于深度學習的答案選擇模型可以歸納為基于表示的答案選擇方法和基于交互的答案選擇方法兩類。
基于表示的答案選擇算法(如圖1),通過相同的CNN或者RNN結構把兩個句子投影在同一個詞嵌入空間中,將兩個句子編碼為向量表示,再根據兩個句子向量做出匹配決定。Feng等人[5]提出CNN-QA方法,采用相同結構且參數共享的CNN來編碼問題和答案,學習問題句子和答案句子的整體表示。Tan等人[6]提出QA-LSTM方法,利用BiLSTM分別編碼問題和答案句子,并通過max/mean pooling得到句子整體表示;QA-LSTM/CNN方法,在BiLSTM層上添加一個CNN層來捕獲句子特征,從而給出問題和答案的更多復合表示;Wang[7]采用堆疊的BiLSTM來學習句子表示;陳[8]從不同角度構造多個文本匹配特征,作為排序模型的特征輸入,并對比了不同的匹配特征組合對應的排序效果,且對每個排序特征的作用做了分析。該類框架的優點是共享參數使模型更小、更容易訓練。但在編碼過程中,忽略了兩個句子之間內在的語義聯系,容易受句子中噪聲的干擾,丟失一些重要信息。

圖1 基于表示的答案選擇模型
1.2.2 基于交互的答案選擇
基于交互的答案選擇模型(如圖2所示)通過注意力機制實現問題和答案之間的信息交互,模型考慮兩個句子之間的相互影響,更關注有用信息、減少無用信息的干擾,從而提高模型性能。在Feng等人[5]以及Tan等人[6]的論文中,答案中單詞的注意權重依賴于問題的隱藏表示;Tan采用BiLSTM結構提取問題和答案的語義特征,根據問題表示學習答案的注意力權重,從而提升了答案選擇的準確率。Santos等人[9]提出了一種雙向注意機制,根據逐字交互矩陣,表示問題和答案的相互影響;Zhang[10]提出AI-NN,利用CNN或RNN來學習問題和答案的表示,使用AI-NN捕獲問題和答案之間各個匹配片段的內在聯系。MVFNN[11]提出了基于多注意力視圖的網絡模型,不同類型的注意力關注不同的信息,再將所有信息融合構建更準確的文本表示。在這種框架中,模型層更深,結構更加復雜,RNN、CNN以及Attention機制以更加復雜的方式結合使用,問題和答案句子之間有更多的交互,從而更準確地提取語句特征。

圖2 基于交互的答案選擇模型
以上的方法大多使用word2vec或glove詞嵌入進行詞向量表示,即將詞語投影到一個低維的詞向量空間,每個詞被表示為一個低維向量,向量之間的空間關系反應了單詞之間的語義特性。但在實際生活中,同一個詞在不同的語境下可能具有不同的意思,即存在一詞多義問題。如“Bank”有“銀行”的意思,也有“河畔”的意思。詞嵌入表示是靜態固定的,無法真實反應不同語境下不同的詞語意思,很難僅通過靜態嵌入來解釋詞語的實際含義。
ELMO、GPT、BERT等預訓練模型的出現,在很大程度上改變了目前眾多自然語言處理任務中的模型架構范式,在NLP領域的諸多任務中取得了相比以往更具競爭性的效果。而BERT使用Transformer結構提取文本信息,比傳統的CNN、RNN具有更好的特征提取能力。BERT不僅可以視為嵌入層,獲取文本的上下文嵌入,也可以看作編碼層,實現對文本的特征提取[13]。因此,論文基于BERT預訓練模型,提出BERT-LSTM網絡模型實現答案選擇。模型首先利用BERT對當前語料進行微調,獲取包含上下文信息的詞嵌入,即初步的特征編碼,再利用BiLSTM實現文本序列信息整合,最后引入注意力機制突出重點信息,以更好完成答案選擇任務。
BERT[14]使用的是一個雙向Transformer語言模型,如圖3所示。BERT不是像傳統語言模型那樣用出現過的詞去預測下一個詞,而是直接把整個句子的一部分詞隨機掩蓋,雙向編碼預測這些掩蓋的詞。同時,在編碼的選擇上,沒有用LSTM,而是使用了可以做得更深、具有更好并行性的Transformer,其中,Self-Attention可以學習序列中詞與其他詞之間的關系,充分挖掘每個詞的上下文信息。BERT模型在預訓練階段學到了通用的語言知識,在當前任務上微調學習詞語的上下文表示contextual-embedding,該嵌入一方面包含詞語的自身表示,又包含其語境的上下文表示,比單獨的word2vec/glove蘊含更加豐富、準確的信息。

圖3 BERT模型
為了能應對下游任務,BERT給出了句子級別的表示(如圖4)。BERT輸入可以是一個單獨的句子、一段連續的文本或者一個句子對。如果BERT對應輸入是一個句子,句子的頭部需要添加標識符[CLS],尾部添加標識符[SEP],如果輸入是兩個句子,則需要使用分隔符號[SEP]隔開作以區分。句中每個單詞有三個embedding:詞語向量(Token Embeddings)、段向量(Segment Embeddings)和位置向量(Positional Embeddings),單詞對應的三個embedding疊加,就形成了BERT的輸入,如圖4所示。其中,[CLS]是每個輸入句子的第一個標記,最終對應的輸出可理解為句子整體含義,用于下游的分類任務。標記[SEP]是用來分隔兩個句子的。

圖4 BERT輸入示例
Google提供了兩種預訓練好的BERT模型:BERT_base和BERT_large。兩種模型的具體情況如表1所示。

表1 BERT的兩種模型

BERT-LSTM模型主要由BERT層、BiLSTM層以及注意力計算組成,如圖5所示。首先,將預訓練好的BERT模型在本任務數據集進行微調,獲取文本序列的詞義表示;將得到的詞語表示向量輸入BiLSTM模型,進行進一步的文本語義信息整合;利用注意力機制實現問題和答案之間的信息交互,突出重點信息,減少無關信息的干擾;計算問題和答案句子表示向量,進行余弦相似度計算,返回相似度得分最高的候選答案。


(1)
(2)
其中,Wa和Wq是網絡參數,αi表示注意力權重。

圖5 BERT-LSTM模型結構
WikiQA[15]和InsuranceQA[5]是兩個常用的答案選擇任務基準數據集。WikiQA是微軟研究院2015年公開的英文答案選擇數據集,收集和注釋用于開放域問題回答的研究。WikiQA使用Bing查詢日志作為問題源,反映一般用戶的真實信息需求。由于原始數據集中有一部分問題沒有對應的答案,對原始的數據進行了篩選,去除沒有正確答案的數據。InsuranceQA數據集是保險領域首個開放的QA語料庫。該語料庫包含從網站Insurance Library收集的問題和答案,是一個現實世界的語料。數據集具體情況如表2所示。

表2 WikiQA和InsuranceQA數據集情況
不同數據集的數據來源不同、內容領域不同、數據特點不同,不同的評價指標從不同的角度反應模型的性能。目前的答案選擇算法對于不同的數據集采取不同的評價指標,目前常用的評價指標主要有MAP、MRR以及Accuracy。
(3)
其中,mi是第i個問題的候選答案個數,pj是第i個問題的第j個正確答案的排序位置。
(4)
pi表示正確答案在排序中的位置,|Q|表示數據集大小。
準確率也是常用來的評價指答案選擇模型的性能。|Q|表示數據集大小,precision@1表示排序第一個候選答案的準確率。
(5)
深度神經網絡模型訓練中主要有模型參數和超參數,參數的選取和模型效果息息相關。實驗中的模型,先初始化參數,在訓練數據集上進行訓練,利用驗證集來選擇最佳參數,將最優的模型在測試集上進行測試。本文實驗中BERT采用Google發布的預訓練好的英文模型“BERT-base,Uncased”,Transformer層數為12,隱藏層大小為768,注意力head數目為12,模型總參數量110M。使用Adam進行模型優化,學習率設置為2e-5,訓練的batch_size設置為64,BiLSTM的隱藏單元為256,為了避免模型過擬合設置dropout為0.2。對比實驗中的詞向量來源于glove官網下載的glove.840B.300d,詞向量維度為300。
問題和答案句子的表示向量,采用余弦相似度進行計算:
(6)
采用Hingle損失函數計算損失進行計算,損失Loss計算方式如下:
Loss=max{0,m-cos(vq,va+)+cos(vq,va-)}
(7)
訓練的目的就是要在訓練過程中不斷更新參數,使得模型的總損失盡可能的小。vq,va+和va-分別是問題以及正確答案和錯誤答案的表示向量,損失函數的目的就是要問題和正確答案的相似度盡可能大于問題和錯誤答案的相似度,而且二者的盡可能有明顯的間隔,m是超參數,實質就是表示這個間隔,即cos(vq,va+)-cos(vq,va-)>m。實驗中m取值為0.1。
將本文模型與常見的多個答案選擇算法分別在InsuranceQA和WikiQA數據集的結果進行對比,比較模型之間的性能差異。
模型在InsuranceQA數據集的實驗結果如表3所示。word2vec-Pooling直接對詞嵌入求平均作為句子表示,該方法忽略了詞序和詞語之間的聯系,結果最差;BERT-pooling將BERT的輸出取平均作為句子表示,取得了不錯的結果;BERT-LSTM比word2vec-LSTM等其他一系列方法取得了更好的結果。一方面,BERT模型在預訓練階段學到了通用的語言知識,在當前任務上微調學習詞語的上下文表示,該嵌入既包含詞語的自身表示,又包含語境的上下文表示,比單獨的word2vec/glove蘊含更豐富、準確的表示信息。另一方面,BERT實際不僅起到了嵌入層的作用,還起到了編碼層的作用。BERT以Transformer作為編碼器,學習序列中詞與詞之間的關系,充分挖掘了每個詞的上下文信息。

表3 在InsuranceQA數據集上的準確率
在WikiQA數據集上的實驗結果如表4,可以看出,BERT-LSTM模型提升了MAP和MRR兩個指標上的性能,取得了更好的效果。
論文所提出方法在兩個標準數據集上均取得了較好的結果,驗證了模型的有效性。同時,引入注意力機制的模型相比未使用注意力機制的模型具有更好得結果。說明了注意力機制在句子建模的過程中可以增加對關鍵信息的關注,抑制無關信息的干擾,提升模型對句子語義的表示。

表4 在WikiQA數據集上的結果
論文針對智能問答選擇領域常見的文本語義表示模型中詞向量存在的一詞多義以及無法包含上下文語義信息的問題,提出了BERT-LSTM問答選擇模型,該模型在兩個答案選擇基準數據集上的測試均取得了理想的結果,在答案選擇基準數據集InsuranceQA上準確率達到75%至76%,WikiQA數據集上MAP提升了3.92%,MRR提升了3.19%。驗證了基于BERT的上下文嵌入比word2vec/glove具有更好的表示能力,并證實了所提出模型的有效性。