前言
對於檢索式對話系統最基本的步驟就是召回(retrieval)-匹配(matching)-排序(reranking)。匹配的得分直接決定最后你要輸出的答案對應FAQ中的標准問題,所以這是很重要的一步。說是文本匹配,感覺更好的措辭應該是語義匹配。這里借鑒的都是文本匹配/文本蘊含/自然語言推理這個領域的文章。
更多的論文算法可以在Standford的SNLI評測官網看到:
經典方法
傳統方案統計模型各種各樣,很多都是基於字面匹配做的,無法考慮到語義上的相似度,這里暫且熟悉一下wmd、bm25兩種比較常用的方法。
WMD詞移距離
Word2Vec得到的詞向量可以反映詞與詞之間的語義差別,那么如果我們希望有一個距離能夠反映文檔和文檔之間的相似度,一個想法是將文檔距離建模成兩個文檔中詞的語義距離的一個組合,比如說對兩個文檔中的任意兩個詞所對應的詞向量求歐氏距離然后再加權求和,大概是這樣的形式:
,其中
為兩個詞所對應的詞向量的歐氏距離。這個加權矩陣T有些類似於HMM中的狀態轉移矩陣,只不過其中的概率轉換為權重了而已。
以上兩個文本去除停用詞后,每篇文檔僅剩下4個詞,我們就是要用這四個詞來比較兩個文檔之間的相似度。在這里,我們假設’Obama’這個詞在文檔1中的的權重為0.5(可以簡單地用詞頻或者TFIDF進行計算),那么由於’Obama’和’president’的相似度很高,那么我們可以給由’Obama’移動到’president’很高的權重,這里假設為0.4,文檔2中其他的詞由於和’Obama’的距離比較遠,所以會分到更小的權重。這里的約束是,由文檔1中的某個詞移動到文檔2中的各個詞的權重之和應該與文檔1中的這個詞的權重相等,即’Obama’要把自己的權重(0.5)分給文檔2中的各個詞。同樣,文檔2中的某個詞所接受到由文檔1中的各個詞所流入的權重之和應該等於詞在文檔2中的權重。
所以
代表的是文檔1要轉換為文檔2所需要付出的總代價。將這種代價求得下界即最小化之后,即可求得所有文檔a中單詞轉移到文檔b中單詞的最短總距離,代表兩個文檔之間的相似度。
BM25
bm25 是一種用來評價搜索詞和文檔之間相關性的算法,它是一種基於概率檢索模型提出的算法,再用簡單的話來描述下bm25算法:我們有一個query和一批文檔D,現在要計算query和每篇文檔D之間的相關性分數,我們的做法是,先對query進行切分,得到單詞,然后單詞的分數由3部分組成:
- 單詞和D之間的相關性
- 單詞和query之間的相關性
- 每個單詞的權重
最后對於每個單詞的分數我們做一個求和,就得到了query和文檔之間的分數。
深度文本匹配
傳統的文本匹配如 BoW、TFIDF、VSM等算法,主要解決詞匯層面的匹配問題,而實際上基於詞匯重合度的匹配算法存在着詞義局限、結構局限和知識局限等問題。
- 詞義局限:的士和出租車雖然字面上不相似,但實為同一種交通工具;而蘋果在不同的語境下表示的東西不同,或為水果或為公司;
- 結構局限:機器學習和學習機器雖詞匯完全重合,但表達的意思不同;
- 知識局限:秦始皇打 Dota,這句話雖從詞法和句法上看均沒問題,但結合知識看這句話是不對的。
傳統的文本匹配模型需要基於大量的人工定義和抽取的特征,而這些特征總是根據特定的任務(信息檢索或者自動問答)人工設計的,因此傳統模型在一個任務上表現很好的特征很難用到其他文本匹配任務上。而深度學習方法可以自動從原始數據中抽取特征,省去了大量人工設計特征的開銷。首先特征的抽取過程是模型的一部分,根據訓練數據的不同,可以方便適配到各種文本匹配的任務當中;其次,深度文本匹配模型結合上詞向量的技術,更好地解決了詞義局限問題;最后得益於神經網絡的層次化特性,深度文本匹配模型也能較好地建模短語匹配的結構性和文本匹配的層次性
一般來說,深度文本匹配模型分為兩種類型,表示型(Representation Model)和交互型(Interaction Model)。表示型模型更側重對表示層的構建,它會在表示層將文本轉換成唯一的一個整體表示向量。典型的網絡結構有 DSSM、CDSMM 和 ARC-I。這種模型的核心問題是得到的句子表示失去語義焦點,容易發生語義偏移,詞的上下文重要性難以衡量。交互型模型摒棄后匹配的思路,假設全局的匹配度依賴於局部的匹配度,在輸入層就進行詞語間的先匹配,並將匹配的結果作為灰度圖進行后續的建模。典型的網絡結構有 ARC-II、DeepMatch 和 MatchPyramid。它的優勢是可以很好的把握語義焦點,對上下文重要性合理建模。由於模型效果顯著,業界都在逐漸嘗試交互型的方法。
深度學習應用在文本匹配上可以總結為以下四個階段:1、單語義模型,單語義模型只是簡單的用全連接、CNN類或RNN類的神經網絡編碼兩個句子然后計算句子之間的匹配度,沒有考慮到句子中短語的局部結構。2、多語義模型,多語義模型從多顆粒的角度解讀句子,考慮到和句子的局部結構。3、匹配矩陣模型,匹配矩陣模型更多的考慮待匹配的句子間不同單詞的交互,計算兩兩之間的匹配度,再用深度網絡提取特征,更精細的處理句子中的聯系。4、深層次的句子間模型,這是近幾年state of the art的模型,隨着attention等交互機制論文的發表,最新的論文用更精細的結構去挖掘句子內和句子間不同單詞之間的聯系,得到更好的效果。
—— 以上來自深度文本匹配發展總結
DSSM
Learning Deep Structured Semantic Models for Web Search using Clickthrough Data
原理:先把 query 和 document 轉換成 BOW 向量形式,然后通過 word hashing 變換做降維得到相對低維的向量(除了降維,word hashing 還可以很大程度上解決單詞形態和 OOV 對匹配效果的影響),喂給 MLP 網絡,輸出層對應的低維向量就是 query 和 document 的語義向量(假定為 Q 和 D)。計算(D, Q)的 cosinesimilarity 后,用 softmax 做歸一化得到的概率值是整個模型的最終輸出,該值作為監督信號進行有監督訓練。
這是模型的結構圖,輸入Q是一個查詢,D是各個候選文檔,可以看到用詞袋模型維度是500k,用word hashing 的方法可以將維度壓縮到30k,然后通過全連接的神經網絡對向量進行降維到128,接着兩兩計算余弦相似度得到匹配結果。后續的CDSSM和DSSM-LSTM應該算是常見的改進方式, CNN和RNN可能對不同文本數據的適用情況不同。
它有兩個創新點,一個是用一種3個字母word hashing代替詞袋模型(所謂的3個字母的word hashing就是先在單詞上加上#表示符標記開頭和結尾,例如#good#,然后每3個符號進行拆分,即變成#goo, goo, ood, od#,然后用multi-hot的形式表示這個單詞,數據集的英語詞匯可能會有很多),降低了單詞向量的維度(由於當時word2vec論文還未發表),第二個是用全連接的神經網絡處理句子,揭開深度文本匹配的篇章。
這個模型的缺陷在於:
1、沒有考慮到單詞之間的時序聯系
2、相似度匹配用的余弦相似度是一個無參的匹配公式。
MatchPyramid
原理:借鑒做圖像的方法, 把文本匹配轉化成Text Matrix, 搭建了CNN金字塔模型完成匹配預測。從3個角度構建匹配矩陣,更精細的考慮句子間單詞的兩兩關系,構建出3個矩陣進行疊加,把這些矩陣看作是圖片,用卷積神經網絡對矩陣進行特征提取。
由於CNN針對的是網格型數據,而文本顯然屬於序列數據,那么就有必要對數據進行轉換,論文中提出了三種構建相似度矩陣的方法:
- : 0-1類型,每個序列對應的詞相同為1,不同為0
- : 使用預訓練的Glove將詞轉為向量,之后計算序列對應的詞的cosine距離
- : 同上,但是將cosine距離改為點積,作者在文中提到,距離矩陣使用點積的效果相對較好
根據結果顯示,在文本方面使用作者提出的方法可以提取n-gram、n-term特征。
ESIM
ESIM 是最近提出的效果比較好的一個文本相似度計算模型,該模型橫掃了很多比賽,它的優勢在於精細的設計序列式的推斷結構、考慮局部推斷和全局推斷。
作者主要是用句子間的注意力機制(intra-sentence attention),來實現局部的推斷,進一步實現全局的推斷。
它的主要組成為:輸入編碼,局部推理建模和推理組合。圖中垂直方向描繪了三個主要組件,水平方向,左側代表連續語言推斷模型,名為ESIM,右側代表在樹LSTM中包含語法分析信息的網絡。
input encoding
輸入兩句話
,
分別接 embeding + BiLSTM, 使用 BiLSTM 可以學習如何表示一句話中的 word 和它上下文的關系,也就是在 word embedding 之后,在當前的語境下重新編碼,得到新的 embedding 向量。
local inference modeling
local inference 之前需要將兩句話進行 alignment,這里是使用soft_align_attention。具體做法是,首先計算兩個句子 word 之間的相似度,得到2維的相似度矩陣,然后才進行兩句話的 local inference。用之前得到的相似度矩陣,結合 a,b 兩句話,互相生成彼此相似性加權后的句子,維度保持不變,其實就是點積計算attention權重。
在 local inference 之后,進行 Enhancement of local inference information。這里的 enhancement 就是計算 a 和 align 之后的 a 的差和點積來增強局部推理信息。
inference composition
再一次用 BiLSTM 提前上下文信息,對於 BiLSTM 提取到的信息,作者認為求和對序列長度比較敏感,不太健壯,因此他們采用了 MaxPooling 和 AvgPooling 的方案,並將池化后的結果連接為固定長度的向量,最后接一個全連接層。
BiMPM
Bilateral Multi-Perspective Matching for Natural Language Sentences
雙邊多角度句子匹配,這篇文章的創新點在於:1、雙邊,認為句子不應該僅僅考慮一個方向,從問句出發到答句,也應該從答句去反推問句。2、多角度,在考慮句子間的交互關系時采用了4種不同的方式。這篇文章發表在2017年的IJCAIi,模型取得了很好的效果,但是缺點在於參數很多,運算速度比較慢。
模型的整體框架圖,輸入是預訓練的 glove embeddings 和 chars embeddings,經過 BiLSTM 的編碼之后,對每一個step的 LSTM 的輸出進行從p到q和從q到p的兩兩配對,有四種組合方式,然后將所有的結果進行拼接和預測結果。
Word Representation Layer
將句子中的每個單詞表示為d維向量,這里d維向量分為兩部分:一部分是固定的詞向量,另一部分是字符向量構成的詞向量。這里將一個單詞里面的每個字符向量輸入LSTM得到最后的詞向量。
Context Representation Layer
將上下文信息融合到P和Q每個time-step的表示中,這里利用Bi-Lstm表示P和Q每個time-step的上下文向量。
Matching Layer
比較句子P的每個上下文向量(time-step)和句子Q的所有上下文向量(time-step),比較句子Q的每個上下文向量(time-step)和句子P的所有上下文向量(time-step)。為了比較一個句子的某個上下文向量(time-step)和另外一個句子的所有上下文向量(time-step),這里設計了一種 multi-perspective匹配方法。這層的輸出是兩個序列,序列中每一個向量是一個句子的某個time-step對另一個句子所有的time-step的匹配向量。
Multi-Perspective的四種方案:
1、Full-Matching:如圖a所示,將P在上層LSTM輸出的隱藏層每一個
與Q在上層LSTM最后輸入的
做計算
2、Maxpooling-Matching:如圖b所示,圖中清晰地表明了如何操作,不同於Full-matching模式,這里將P與Q在每一個時刻的上一層的隱藏層輸出做相應計算,並且在每一維度上取max
3、Attentive-Matching:先計算P中每一個前向(反向)文法向量與Q中每一個前向(反向)文法向量的余弦相似度,然后利用余弦相似度作為權重對Q各個文法向量進行加權求平均作為Q的整體表示,最后P中每一個前向(后向)文法向量與Q對應的整體表示進行匹配。
4、Max-Attentive-Matching:與Attentive-Matching類似,不同的是不進行加權求和,而是直接取Q中余弦相似度最高的單詞文法向量作為Q整體向量表示,與P中每一個前向(反向)文法向量進行匹配。
Aggregation Layer
聚合兩個匹配向量序列為一個固定長度的匹配向量。對兩個匹配序列分別應用BiLSTM,然后連接BiLSTM最后一個time-step的向量(4個)得到最后的匹配向量。
DIIN
這篇論文的創新點在於考慮到了同句間不同單詞之間的交互關系,另外就是模型中采用了2016年 CVPR 的 best paper 的model DenseNet。DenseNet 可以在經過復雜的深度神經網絡之后,還可以很大程度上保留原始特征的信息。
這是模型的整體框架圖,可以看到模型的輸入有4個部分的特征:glove、char、EM、POS。然后用 highway network 對特征進行編碼,這個編碼的輸出構造一個句子內的 attention,具體就是里面的公式
,對單詞
和單詞
的向量和它們的點積進行拼接,再做一個線性的映射得到一個權重參數,經過 softmax 歸一化后成為句內 attention 的權重參數,然后是參考了LSTM的設計,對 highway 出來的向量和帶了句內交互的 attention 項的向量用門機制進行了過濾,得到每個單詞的向量表示,然后將向量表示兩兩之間做一個匹配形成匹配矩陣,最后用 DenseNet 對匹配矩陣進行特征提取。
Embedding Layer
1、word embedding:論文中使用的是通過GloVe預訓練好的向量,而且論文中提到在訓練時, 要打開word embedding的訓練, 跟隨着任務一起訓練。
2、character feature:這里指的是對一個 word 中的 char 進行自動的 feature。
首先使用 char embedding 對每個 char 進行向量化, 然后對char向量進行1-D的卷積, 最后使用 MaxPool 得到這一個單詞對應的char特征向量。
3、syntactical features:添加這種的目的是為 OOV(out-of-vocabulary)的word提供額外補充的信息. 論文中提到的方法有:
- part-of-speech(POS)詞性特征, 使用詞性的One-Hot特征
- binary exact match(EM)特征, 指的是一個句字中的某個word與另一個句子中對應的word的詞干stem和輔助項lemma相同, 則是1, 否則為0. 具體的實現和作用在論文中有另外詳細的闡述。
Encoding Layer
在這一層中, premise和hypothesis會經過一個兩層的神經網絡, 得到句子中的每一個word將會用一種新的方式表示. 然后將轉換過的表示方法傳入到一個 self-attention layer 中。
需要注意的是, 在這一層中, premise和hypothesis兩個句子是不共享參數的, 但是為了讓兩個句子的參數相近, 兩個句子在相同位置上的變量, 會對他們之間的差距做L2正則懲罰, 將這種懲罰計入總的loss, 從而在訓練過程中, 保證了參數的近似。
Interaction Layer
對兩個句子的word進行編碼之后, 就要考慮兩個句子相互作用的問題了. 對於長度為p的premise和長度為h的hypothesis, 對於他們的每個單詞
和
, 將代表它們的向量逐元素點乘, 這樣就得到了一個形狀為
的兩個句子相互作用后的結果. 可以把他們認為是一個2-d的圖像, 有d個通道。
Feature Extraction Layer
由於兩個句子相互作用產生了一個2-d的結果, 因此我們可以通過使用那些平常用在圖像上的CNN方法結構, 來提取特征, 例如ResNet效果就很好. 但考慮到模型的效率, 與參數的多少, 論文中使用了DenseNet這種結構…
DRCN
Semantic Sentence Matching with Densely-connected Recurrent and Co-attentive Information
這篇論文的創新點在於:1、采用了固定的glove embedding和可變的glove embedding拼接並提升了模型效果。2、采用stack層級結構的LSTM,在層級結構上加入了DenseNet的思想,將上一層的參數拼接到下一層,一定程度上在長距離的模型中保留了前面的特征信息。(Attention 算法在刻畫兩個句子語義關系和對齊句子成分方面有很好的效果,但是也有不足之處。Attention 機制僅使用求和操作,這樣來自於上層的特征信息就會被破壞,不能完整保留下來。)3、由於不斷的拼接導致參數增多,用autoencoder進行降維,並起到了正則化效果,提升了模型准確率。
模型的輸入是可變的glove向量和非可變的glove向量,chars卷積特征和一些標示特征(例如EM特征),然后經過BiLSTM對每個單詞的特征編碼,同時這里會加入attention機制考慮兩個句子間的交互關系,計算隱藏層輸出余弦相似度,softmax歸一化成attention權重,加權求和后得到attention的向量,當前的單詞特征向量、attention的向量、上一層的LSTM該step隱藏層輸出向量同時作為當前step的輸入,然后采用stack LSTM的結構疊加多層LSTM,論文中一個疊加了5層,隨着層數的增加,每一層step的輸入會越來越大,所以在最后兩層加入了autoencoder對參數進行降維,最后用全連接網絡進行預測。
Embedding Layer
四個詞向量的特征:
1、與模型一起訓練的Glove詞向量:
2、直接拿來用的,保持不變的Glove詞向量:
3、用CNN得到的字向量:
4、Match Flag特征 :這是一個0/1特征,表示該詞是否在另一句話中出現。
Densely connected recurrent Co-attentive networks
RNN分別得到前提的表示和假設的表示,然后就是計算Attention,得到權重后,作者受DenseNet啟發,使用了密集連接和RNN結合的方法來實現對對句子的處理。首先hlt表示的是第l層的RNN的第t的隱層狀態,
式1是傳統的多層RNN的結構,前一層的RNN的 隱層狀態作為當前層的輸入,然后就是RNN的計算方式,式2借鑒了殘差網絡,當前層的輸入不僅包含了前一層的隱層狀態,同時包含了前一層的輸入,但他們是相加的方式,作者認為這種相加的形式很可能會阻礙信息的流動,因此借鑒DenseNet,作者使用了拼接了方式,這樣不僅保留了兩部分信息,同時拼接方法也最大程度的保留了各自的獨有信息。但這就有一個問題了,多層的RNN的參數就不一樣了,因為拼接的方式導致了每一層輸入對應的參數規模是在不斷變大的,這樣就不能做的很深了。
我們傳統的做法是得到每個詞在對方句子上的概率分布之后,使用對方句子中每個詞向量的加權和作為當前詞的向量表示,而這里作者直接使用了計算出來的權值分布,將其作為一個特征引入到當前層的輸入當中:
AutoEncoder
Stack RNN 這樣的結構必然會帶來參數急速增長的問題,為了解決這個問題,作者使用了AutoEncoder,該模塊的輸出是自編碼器的compressed representation,此維度是超參,在損失盡量小的情況下壓縮參數。
Interaction Layer
最后對P、Q的表示做拼接、相加、相減、絕對值的運算,表示句子之間的匹配:
然后全連接和 softmax 得到P、Q之間的關系。(相減的效果要好於相減的絕對值,因為相減不僅可以表示差異,同時可以表明信息流方向,而相減的絕對值就更專注於差異了)
模型對比論文閱讀
這篇文章是 COLING 2018 的 Best Reproduction Paper,文章主要對現有的做句子對任務的最好的幾個模型進行了重現,並且作者實現出來的效果和原文章聲稱的效果相差不多,作者對語義理解的集中任務也做了相關梳理。
任務
- Semantic Textual Similarity (STS) :判斷兩個句子的語義相似程度(measureing the degree of equivalence in the underlying semantics of paired snippets of text);
- Natural Language Inference (NLI) :也叫 Recognizing Textual Entailment (RTE),判斷兩個句子在語義上是否存在推斷關系,相對任務一更復雜一些,不僅僅是考慮相似,而且也考慮了推理;
- Paraphrase Identification (PI) :判斷兩個句子是否表達同樣的意思(identifing whether two sentences express the same meaning);
- Question Answering (QA) :主要是指選擇出來最符合問題的答案,是在給定的答案中進行選擇,而不是生成;
- Machine Comprehension (MC) :判斷一個句子和一個段落之間的關系,從大段落中找出存在答案的小段落,對比的兩個內容更加復雜一些。
一般框架
- 輸入層:適用預訓練或者參與訓練的詞向量對輸入中的每個詞進行向量表示,比較有名的 Word2Vec,GloVe,也可以使用子序列的方法,例如 character-level embedding;
- 情境編碼層:將句子所處的情境信息編碼表示,從而更好的理解目標句子的語義,常用的例如 CNN,HighWay Network 等,如果是句子語義表示的方法,一般到這里就結束了,接下來會根據具體的任務直接使用這一層得到語義表示;
- 交互和注意力層:該層是可選的,句子語義表示有時候也會用到,但更多的是詞匹配方法用到的,通過注意力機制建模兩個句子在詞層面的匹配對齊關系,從而在更細粒度上進行句子對建模,個人認為句子語義表示也會用到這些,只是句子語義表示最后會得到一個語義表示的向量,而詞匹配的方法不一定得到句子語義的向量;
- 輸出分類層:根據不同的任務,使用 CNN,LSTM,MLP 等進行分類判斷。
模型選擇:
- InferSent [1]:BiLSTM+max-pooling;
- SSE [2]:和 InferSent 比較類似;
- DecAtt [3]:詞匹配模型的代表,利用注意力機制得到句子 1 中的每個詞和句子 2 中的所有詞的緊密程度,然后用句子 2 中的所有詞的隱層狀態,做加權和表示句子 1 中的每個詞;
- ESIM [4]:考慮了一些詞本身的特征信息,和 DecAtt 比較類似;
- PWIM [5]:在得到每個詞的隱層狀態之后,通過不同的相似度計算方法得到詞對之間相似關系,最后利用 CNN 進行分類。
數據集及結果
參考論文
[1]. A. Conneau, D. Kiela, H. Schwenk, L. Barrault, A. Bordes, Supervised Learning of Universal Sentence Representations from Natural Language Inference Data
[2]. Shortcut-Stacked Sentence Encoders for Multi-Domain Inference, Yixin Nie and Mohit Bansal.
[3]. A Decomposable Attention Model for Natural Language Inference, AnkurP.Parikh, Oscar Täckstöm, Dipanjan Das, Jakob Uszkoreit
[4]. Enhanced LSTM for Natural Language Inference, Qian Chen, Xiaodan Zhu, Zhenhua Ling, Si Wei, Hui Jiang, Diana Inkpen
[5]. Hua He and Jimmy Lin. Pairwise Word Interaction Modeling with Deep Neural Networks for Semantic Similarity Measurement
Reference
1、衡量文檔相似性的一種方法-----詞移距離 Word Mover’s Distance
2、深度文本匹配發展總結
3、文本匹配方法 paper筆記
4、文本匹配模型-BiMPM
5、論文閱讀筆記: Natural Language Inference over Interaction Space
6、論文筆記——Semantic Sentence Matching with DRCN
7、文本匹配模型-BiMPM
7、PaperWeekly 第37期 | 論文盤點:檢索式問答系統的語義匹配模型(神經網絡篇)
8、Neural Network Models for Paraphrase Identification, Semantic Textual Similarity, Natural Language Inference, and Question Answering論文閱讀