檢索式問答系統的語義匹配模型(神經網路篇)

PaperWeekly發表於2017-05-13

問答系統可以基於規則實現,可以基於檢索實現,還可以通過對 query 進行解析或語義編碼來生成候選回覆(如通過解析 query並查詢知識庫後生成,或通過 SMT 模型生成,或通過 encoder-decoder 框架生成,有些 QA 場景可能還需要邏輯推理才能生成回覆)。

 

具體到檢索式問答系統,其典型場景是:1)候選集先離線建好索引;2)線上服務收到 query 後,初步召回一批候選回覆;3)matching 和 ranking 模型對候選列表做 rerank 並返回 topK。

 

備註: 

1)matching 模型負責對 (query, reply) pair 做特徵匹配,其輸出的 matching score 通常會作為 ranking 模型的一維特徵; 

2)ranking 模型負責具體的 reranking 工作,其輸入是候選回覆對應的特徵向量,根據實際需求構造不同型別(如:pointwise, pairwise, listwise)的損失函式,其輸出的 ranking score 是候選回覆的最終排序依據。各種 learning2rank 模型通常就是在 ranking 階段起作用; 

3)有些檢索系統可能不會明確區分 matching 和 ranking 這兩個過程。

 

再具體到短文字場景下的檢索式問答系統,由於分詞後 term 數量少,導致只基於 term 本身或其 bow 向量進行匹配的檢索策略無法令人滿意(term 稀疏且表達方式各異導致匹配效果不佳,也沒有利用 term 背後的語義)。出於語義特徵補充的需求,隱語義模型(如:LSA, PLAS, LDA)得到了普遍關注。再到近幾年,利用神經網路(尤其是深度學習)模型對文字做語義表示(semantic representation)後進行語義匹配的方法開始被提出並應用於檢索式問答系統。

 

下面進入正題,盤點一些基於神經網路模型實現語義匹配的典型工作。希望能夠拋磚引玉,如有遺漏或錯誤,歡迎補充或指出。

 

1. Po-Sen Huang, et al., 2013, Learning Deep Structured Semantic Models for Web Search using Clickthrough Data

 

這篇文章出自 UIUC 和 Microsoft Research,針對搜尋引擎 query/document 之間的語義匹配問題 ,提出了基於 MLP 對 query 和 document 做深度語義表示的模型(Deep Structured SemanticModels, DSSM),結構如下圖所示。 

檢索式問答系統的語義匹配模型(神經網路篇)


 

DSSM 模型原理簡述如下: 

先把 query 和 document 轉換成 BOW 向量形式,然後通過 word hashing 變換做降維得到相對低維的向量(備註:除了降維,word hashing 還可以很大程度上解決單詞形態和 OOV 對匹配效果的影響),餵給 MLP 網路,輸出層對應的低維向量就是 query 和 document 的語義向量(假定為 Q 和 D)。計算(D, Q)的 cosinesimilarity 後,用 softmax 做歸一化得到的概率值是整個模型的最終輸出,該值作為監督訊號進行有監督訓練。

 

通過挖掘搜尋點選日誌構造 query 和對應的正負 document 樣本(實驗實際使用的是 document 的 title),輸入 DSSM 模型進行訓練。文中與 TF-IDF、BM25、WTM、LSA、PLSA 等模型進行了對比實驗,NDCG@N 指標表明,DSSM 模型在語義匹配方面效果提升明顯,當時達到了 SOTA 的水平。

 

2. Yelong Shen, et al, 2014, A Latent Semantic Model with Convolutional-Pooling Structure for Information Retrieval

 

這篇文章出自 Microsoft Research,是對上述 DSSM 模型的改進工作。在 DSSM 模型中,輸入層是文字的 bag-of-words 向量,丟失詞序特徵,無法捕捉前後詞的上下文資訊。基於此,本文提出一種基於卷積的隱語義模型(convolutional latent semantic model, CLSM),結構如下圖所示。 

檢索式問答系統的語義匹配模型(神經網路篇)


CLSM 模型原理簡述如下: 

先用滑窗構造出 query 或 document 的一系列 n-gram terms(圖中是 trigram),然後通過 word hashing 變換將 word trigram terms 表示成對應的 letter-trigram 向量形式(主要目的是降維),接著對每個 letter-trigram 向量做卷積,由此得到「Word-n-gram-Level Contextual Features」,接著藉助 max pooling 層得到「Sentence-Level Semantic Features」,最後對 max pooling 的輸出做 tanh 變換,得到一個固定維度的向量作為文字的隱語義向量。Query 和 document 藉助 CLSM 模型得到各自的語義向量後,構造損失函式做監督訓練。訓練樣本同樣是通過挖掘搜尋點選日誌來生成。

 

文中與 BM25、PLSA、LDA、DSSM 等模型進行了對比實驗,NDCG@N 指標表明,CLSM 模型在語義匹配上達到了新的 SOTA 水平。文中的實驗和結果分析詳細且清晰,很讚的工作。

 

3. Zhengdong Lu & Hang Li, 2013, A Deep Architecture for Matching Short Texts

 

這篇文章出自華為諾亞方舟實驗室,針對短文字匹配問題,提出一個被稱為 DeepMatch 的神經網路語義匹配模型。該模型的提出基於文字匹配過程的兩個直覺:1)Localness,也即,兩個語義相關的文字應該存在詞級別的共現模式(co-ouccurence pattern of words);2)Hierarchy,也即,共現模式可能在不同的詞抽象層次中出現。

 

模型實現時,並不是直接統計兩段短文字是否有共現詞,而是先用(Q, A)語料訓練 LDA 主題模型,得到其 topic words,這些主題詞被用來檢測兩個文字是否有共現詞,例如,若文字 X 和文字 Y 都可以歸類到某些主題詞,則意味著它們可能存在語義相關性。而詞抽象層次則體現在,每次指定不同的 topic 個數,訓練一個 LDA 模型,最終會得到幾個不同解析度的主題模型,高解析度模型的 topic words 通常更具體,低解析度模型的 topic words 則相對抽象。在高解析度層級無共現關係的文字,可能會在低解析度層級存在更抽象的語義關聯。不難看到,藉助主題模型反映詞的共現關係,可以避免短文字詞稀疏帶來的問題,且能得到出不同的抽象層級,是本文的創新點。

 

文中提出的 DeepMatch 模型結構如下圖所示:  

檢索式問答系統的語義匹配模型(神經網路篇)

 

上圖比較抽象,但限於篇幅,這裡不詳細解釋。提供幾點說明,相信對理解模型細節有幫助。

1)不同抽象層級的 topic words 可以構造出一系列 patches,兩個文字 X, Y 在某 patch 上的共現關係構成那個抽象層次的 local decision。

2)上圖左側 Input 部分,不同的顏色代表不同的 topic 抽象層級,這一點要注意,否則很容易被圖中的"偷懶"畫法搞暈。

 

總之,最終的 matching score 可以構成監督訊號來訓練模型。文中在給定領域的 QA 語料和新浪微博語料上的實驗都表明,與 PLS、SIAMESE NETWORK 等模型相比,DeepMatch 模型在文字語義匹配上,達到了 SOTA 的效果。

 

PS: 個人感覺 DeepMatch 在構造神經網路結構時略 tricky,不夠簡潔。

 

4. Zongcheng Ji, et al., 2014, An Information Retrieval Approach to Short Text Conversation

 

這篇文章出自華為諾亞方舟實驗室,針對的問題是基於檢索的短文字對話,但也可以看做是基於檢索的問答系統。主要思路是,從不同角度構造 matching 特徵,作為 ranking 模型的特徵輸入。構造的特徵包括:1)Query-ResponseSimilarity;2)Query-Post Similarity;3)Query-Response Matching in Latent Space;4)Translation-based Language Model;5)Deep MatchingModel;6)Topic-Word Model;7)其它匹配特徵。

 

文中的實驗對比了不同的 matching features 組合對應的 ranking 效果,且對每個 matching 特徵的作用做了分析,比較有參考價值。

 

5. Baotian Hu, et al., 2015, Convolutional Neural Network Architectures for Matching Natural Language Sentences

 

這篇文章出自華為諾亞方舟實驗室,採用 CNN 模型來解決語義匹配問題,文中提出 2 種網路架構,分別為 ARC-I 和 ARC-II,如下圖所示:

檢索式問答系統的語義匹配模型(神經網路篇)


上圖所示的 ARC-I 比較直觀,待匹配文字 X 和 Y 經過多次一維卷積和 MAX 池化,得到的固定維度向量被當做文字的隱語義向量,這兩個向量繼續輸入到符合 Siamese 網路架構的 MLP 層,最終得到文字的相似度分數。需要說明的是,MAX POOLING 層在由同一個卷積核得到的 feature maps 之間進行兩兩 MAX 池化操作,起到進一步降維的作用。

 

作者認為 ARC-I 的監督訊號在最後的輸出層才出現,在這之前,X 和 Y 的隱語義向量相互獨立生成,可能會丟失語義相關資訊,於是提出 ARC-II 架構。

檢索式問答系統的語義匹配模型(神經網路篇)


上圖所示的 ARC-II 在第 1 層卷積後就把文字 X 和 Y 做了融合,具體的融合方式是,分別對 X 和 Y 做 1D 卷積,然後針對兩者卷積得到的 feature maps,構造其所有可能的組合(在兩個方向上拼接對應的 feature map),這樣就構造出一個 2D 的 feature map,然後對其做 2D MAX POOLING,多次 2D 卷積和池化操作後,輸出固定維度的向量,接著輸入 MLP 層,最終得到文字相似度分數。

 

文中的實驗結果表明,與 DeepMatch、WordEmbed(即直接累加 word vector 得到 sentence vector)、SENNA+MLP 等模型相比,ARC-I 和 ARC-II 都明顯提升了文字語義匹配效果,其中 ARC-II 又明顯優於 ARC-I。文中的實驗還表明,WordEmbed 作為一種簡單的處理方法,通常也能得到不錯的匹配效果。

 

6. Lei Yu, et al., 2014, Deep Learning for Answer Sentence Selection

 

這篇文章出自 University of Oxford 和 DeepMind,提出基於 unigram 和 bigram 的語義匹配模型,其中,unigram 模型通過累加句中所有詞(去掉停用詞)的 word vector,然後求均值得到句子的語義向量;bigram 模型則先構造句子的 word embedding 矩陣,接著用 bigram 視窗對輸入矩陣做 1D 卷積,然後做 average 池化,用 n 個 bigram 卷積核對輸入矩陣分別做「1D 卷積+average 池化」後,會得到一個 n 維向量,作為文字的語義向量。文中提出的基於 CNN 的文字語義表示模型如下圖所示。 

檢索式問答系統的語義匹配模型(神經網路篇)


對(question,answer)文字分別用上述 bigram 模型生成語義向量後,計算其語義相似度並用 sigmoid 變換成 0~1 的概率值作為最終的 matching score。該 score 可作為監督訊號訓練模型。

 

文中用 TREC QA 資料集測試了提出的 2 個模型,實驗結果的 MAP 和 MRR 指標表明,unigram 和 bigram 模型都有不錯的語義匹配效果,其中 bigram 模型要優於 unigram 模型。特別地,在語義向量基礎上融入 idf-weighted word co-occurence count 特徵後,語義匹配效果會得到明顯提升。文中還將提出的 unigram 和 bigram 模型與幾個已有模型進行了效果對比,結果表明在同樣的資料集上,融入共現詞特徵的 bigram 模型達到了 SOTA 的效果。

 

7. Aliaksei Severyn, et al., 2015, Learning to Rank Short Text Pairs with Convolutional Deep Neural Networks

 

這篇文章出自 University of Trento (in Italy),是在上述第 6 篇 Paper 基礎上做的改進工作,也是用 CNN 模型對文字進行語義表示。與第 6 篇文章提出的 unigram 和 bigram 模型相比,本文的改進點包括:1)使用 n-gram 視窗,可以捕捉更長的上下文語義;2)將 query 和 document 的語義向量及其相似度拼接成新的特徵向量輸入 MLP 層進行 learning to rank;3)可以在 learng2rank 模型的輸入向量中方便地融入外部特徵;4)支援 end-to-end 的 matching + ranking 任務。模型結構如下圖所示。 

檢索式問答系統的語義匹配模型(神經網路篇)


上述模型的邏輯很直觀:先分別對 query 和 document 做 wide 1D 卷積和 MAX 池化,得到文字的語義向量,接著通過 M 矩陣變換得到語義向量的相似度,然後把 query 語義向量、query&document 的語義相似度、document 語義向量、外部特徵拼接成 n 維向量,輸入一個非線性變換隱層,最終用 softmax 做概率歸一化。用 softmax 的輸出作為監督訊號,採用 cross-entropy 作為損失函式進行模型訓練。

 

文中使用 TREC QA 資料集進行了實驗,並與第 6 篇 Paper 的模型做了對比,結果表明,本文的模型在 MAP 和 MRR 指標上效果提升顯著,達到了新的 SOTA 效果。此外,為測試模型的 reranking 效果,文中還用 TREC Microblog 資料集做了另一組實驗,結果表明本文模型比已有模型有明顯效果提升。

 

8. Ryan Lowe, et al., 2016, The Ubuntu Dialogue Corpus: A Large Dataset for Research in Unstructured Multi-Turn Dialogue Systems

 

這篇文章出自 McGill 和 Montreal 兩所大學,針對基於檢索的多輪對話問題,提出了 dual-encoder 模型對 context 和 response 進行語義表示,該思路也可用於檢索式問答系統。Dual-encoder 模型結構如下圖所示。 

檢索式問答系統的語義匹配模型(神經網路篇)


該模型思路直觀:通過對偶的 RNN 模型分別把 context 和 response 編碼成語義向量,然後通過 M 矩陣變換計算語義相似度,相似度得分作為監督訊號在標註資料集上訓練模型。

 

文中在 Ubuntu 對話語料庫上的實驗結果表明,dual-encoder 模型在捕捉文字語義相似度上的效果相當不錯。

 

總結

 

從上面 8 篇論文可知,與關鍵詞匹配(如 TF-IDF 和 BM25)和淺層語義匹配(如隱語義模型,詞向量直接累加構造的句向量)相比,基於深度學習的文字語義匹配模型在問答系統的匹配效果上有明顯提升。

相關文章