您當前的位置:首頁 > 繪畫

搜尋中的語義匹配技術

作者:由 斯多歌 發表于 繪畫時間:2021-03-26

基於表示的語義匹配:雙塔模型,耗時低,doc側的向量可以直接產生,query來一個,匹配一個 代表:

dnn_

dssm,

cnn_dssm,

lstm_dssm,

arc-1,

cntn,

lstm_rnn,

siams-lstm: siams-cnn

基於bert的表徵匹配,

faiss 只支援點乘 cos的歸一化,和歐式距離

https://

arxiv。org/pdf/1904。0753

1。pdf

, 說bert不適合做表徵, 和知乎的實踐得到了完全相反的結論,知乎的訓練結果是可以用來做表徵,哈哈哈哈哈哈哈哈哈

匹配層:使用 cos, dot, mlp,

Neural Tensor Network,

在召回層做計算,線上匹配,實時計算,當前輪query和doc的語義相似度召回佇列 蘇寧,知乎都是實時匹配

基於互動的語義匹配:沒辦法線上匹配,資料量太大,用在搜尋擴充套件裡,給定的query 對應最相似的doc 產出。ARC-2,:query doc 三個詞來卷積,變成二維map, 然後基於卷積操作,不太好寫,再二維池化,再影象正常操作即可, MatchPyramid: query 和 doc wordvec 兩兩計算,得到二維匹配矩陣,再操作影象演算法;match

srnn: 好複雜,神經網路的動態規劃,修改了複雜的門機制,MV-LSTM:bilstm encode, 互動產生影象矩陣三種方式,然後k-max

_pooling,aNMM: 基於value的共享權重,不是不同位置共享權重,我覺得沒啥意思,

基於attention的模組:

ABCNN:

1。 愛奇藝就是用在搜尋擴充套件裡召回語義佇列, 在排序層,產出相似度特徵;

Learning Deep Structured Semantic Models for Web Search using Clickthrough Data

搜尋中的語義匹配技術

2013年的文章,還沒用上word2vector,用的是bag of words的思路,因為vocab太大,用了word hash的演算法,其實就是限制了詞彙的ngram 截斷,這樣減少詞表空間,

整體模型的思路就是用DNN將query,doc對映到同一個空間,然後根據訓練樣本{1正4負},softmax最小化loss, 非常的原始,但是是奠基之作

A Latent Semantic Model with Convolutional-Pooling Structure for Information Retrieval

搜尋中的語義匹配技術

輸入:$Query$是代表使用者輸入,$document$是資料庫中的文件。

word-n-gram層:是對輸入做了一個獲取上下文資訊的視窗,圖中是word-trigram,取連續的3個單詞。

Letter-trigram:是把上層的三個單詞透過3個字母的形式對映到3w維,然後把3個單詞連線起來成9w維的空間。

Convolutional layer:是透過Letter-trigram層乘上卷積矩陣獲得,是普通的卷積操作。

Max-pooling:是把卷積結果經過池化操作。

Semantic layer:是語義層,是池化層經過全連線得到的。

獲得128維的語義後就可以計算文字之間的相似度了,計算相似度的過程和DNN-DSSM的過程是一樣的。可以發現CNN-DSSM和DNN-DSSM基本流程是差不多的,就是用卷積和池化的操作代替了DNN的操作

優點:CNN-DSSM 透過卷積層提取了滑動視窗下的上下文資訊,又透過池化層提取了全域性的上下文資訊,上下文資訊得到較為有效的保留。

缺點:CNN-DSSM 滑動視窗(卷積核)大小的限制,導致無法捕獲該上下文資訊,對於間隔較遠的上下文資訊,難以有效保留。

個人感覺這個cnn顯得過於簡單,而且也沒有用上word embedding, 文字表示得太過粗糙

Convolutional Neural Network Architectures for Matching Natural Language Sentences

模型1:

搜尋中的語義匹配技術

相較於DSSM,就是使用word2vec, 用cnn來提取ngram特徵,引入了卷積和池化層來捕捉句子中的區域性詞序資訊,textcnn都可以用來作為表示,缺乏全域性資訊

模型二:引入兩個句子之間的互動

搜尋中的語義匹配技術

一維卷積層:kenel_size=3, 從Sx和Sy分別取出3Xhidden

dim的片段, 組成 6*hidden, 卷積核大小也是6Xhidden

dim, 然後變成1個值,這樣可以拿到一個矩陣

二維池化層:一維卷積層保留了query和doc中每個詞的原始資訊。在2維的池化層作用是用一個2*2的卷積核,用max-pooling得到這4個二維空間的最大值, 後面的操作和影象差不多了

在整個2維卷積和池化過程,可以發現word的順序關係是有所保留的,如圖4。4所示的2維度池化過程,max pooling選擇的黃色方塊保留了原始的order資訊

搜尋中的語義匹配技術

也就能保留少部分order資訊。

缺點:雖然引入了query和doc的匹配矩陣,但是匹配矩陣的計算是按照每個句子的n-gram後的word embedding計算,只有phrase level的匹配訊號而沒有更細粒度的word level的匹配訊號,因而丟失了原始精確匹配和泛化匹配的資訊。

Convolutional Neural Tensor Network Architecture for Community-based Question Answering

總結:用cnn來學習query和doc的表示,然後在匹配層用neural tensor network學習二者的關係,看起來平平無奇,這裡主要用在短文字上

cnn 這裡用的kmax——pool 為了保持語序關係,neural tensor network我

https://

nlp。stanford。edu/pubs/S

ocherChenManningNg_NIPS2013。pdf

根據這篇文章來看,張量神經網路是為了再不同的矩陣空間中刻畫q和a的關係,所以有一個三維張量,然後 q和a的拼接,大概就是標準操作吧

我有種感覺,用lstm可能效果更好

搜尋中的語義匹配技術

搜尋中的語義匹配技術

SEMANTIC MODELLING WITH LONG-SHORT-TERM MEMORY FOR INFORMATION RETRIEVAL

目前看來是效果最好的DSSM變種,估計耗時不少

搜尋中的語義匹配技術

Text Matching as Image Recognition

總結:用一個二維矩陣來代表query和doc中每個word的互動,相比於更高level的匹配如ARC-II的phrase level(n-gram)資訊能捕捉更精細的匹配資訊,屬於真正word level的匹配度矩陣,基於word_level級別的匹配之後,二維的kernel, 赤化就可以提取,更多ngram的資訊。

搜尋中的語義匹配技術

(1) 比起ARC-II模型透過n-gram得到的word embedding進行相似度計算,MatchPyramid模型在匹配矩陣的計算上做得更加精細,關注的是原始word級別的互動

(2) 對於query和doc之間每個word的兩兩互動提出了3中方法,包括精確匹配的indicator計算,兩個word完全相同為1否則為0;以及語法相似度的匹配,包括cosine以及dot product,關注的是更泛化的匹配

(3) 整個過程和影象識別以及人類的認知一樣,word-level的匹配訊號,類比影象中的畫素特徵;phrase-level的匹配訊號,包括n-gram有序的phrase以及n-term無序的phrase,類比影象中的邊緣檢測;到sentence-level的匹配訊號,類比影象中的motifs檢測

Match-SRNN: Modeling the Recursive Matching Structure with Spatial RNN

總結:利用的是類似於動態規劃的最長公共子串的想法,提出了一個二維空間的RNN, 類似於最長公共子串的遞推公式,這裡用RNN來模擬,涉及不同字首之間的互動,用神經tensor nerwork來拿到單詞與單詞之間的複雜互動,難點就是這個空間RNN會比較難寫,不過還好,只是encode過程,不是decode過程。

搜尋中的語義匹配技術

缺點:好像可以解決一點語序的問題,我喜歡他,他喜歡我。不過還是容易出錯

A Deep Architecture for Semantic Matching with Multiple Positional Sentence Representations

總結:感覺很簡單啊, bilstm 來得到每個位置的sentence embeding, 然後每個位置兩兩互動操作,三種操作方式,然後最後用k-max pooling, 最後多層感知機,insight點在於獲得區域性上下文感知的sentence embedding

搜尋中的語義匹配技術

aNMM: Ranking Short Answer Texts with Attention-Based Neural Matching Model

搜尋中的語義匹配技術

在aNMM模型中,query和ans的重要匹配訊號可以出現在匹配矩陣的任何地方,所以作者認為不同位置的word match在卷積核中共享權重是不合理的,因此提出了基於value的共享權重方法, 根據匹配訊號的強度來共享權重。

根據和question 每個單詞的attention權重來衡量,哪個單詞更重要,

ABCNN顯得不是很聰明的樣子,感覺沒什麼價值,很normal的樣子

總結ABCNN模型特點:

(1) ABCNN-1模型的attention機制發生在卷積層之前,也就是兩段文字互動計算之前。query和doc原始向量表示為F0,r,F1,r,透過引數矩陣W0和W1得到加權表示F0,a和F1,a,四個向量concat後進行卷積。額外引入引數W0和W1,作者認為容易發生過擬合。

(2) ABCNN-2模型的attention機制發生在卷積之後,也就是兩段文字已經互動計算之後。透過計算query和doc的attention矩陣A,然後對query和doc的卷積進行加權滑動得到池化的輸出

(3) ABCNN-3同時將ABCNN-1和ABCNN-2兩個模型做融合

A Decomposable Attention Model for Natural Language Inference

搜尋中的語義匹配技術

(1) attend: 用attention機制看成soft-align對齊過程,得到query和document中每個word的加權向量(subphrase)

(2) compare:把每個word的加權向量subphrase,與原始的向量進行concat透過一個前向網路擬合,作為query的最終向量以及doc的最終向量

(3) aggregate: 透過一個神經網路H去捕捉query和doc的向量,得到匹配分數。在該paper中是個分類問題,因此使用的是交叉熵作為損失函式

我感覺詞與詞並不是對應的,用ngram的對應方法可能更好

Multi-Cast Attention Networks for Retrieval-based Question Answering and Response Prediction

給我的感覺,搞了一堆attention,然後各種操作雜糅在一起,顯得特別蠢

(1) 輸入層透過highway encoder將原始的embedding經過編碼輸入下一層

(2) attention層分為兩部分co-attention以及multi-cast attention。對於co-attention層對於每個query-doc的pair對,使用max pooling、mean pooling以及alignment pooling三種attention機制,對query和doc本身則使用intra-attention(self-attention)

(3) 透過前一層的co-attention,query和doc可以得到3種attention: alignment-pooling,max-pooling以及mean-pooling。對於query和doc則各自得到intra-pooling,一共有5個attention,每個attention可以得到原始向量與attention互動後的向量,透過concat、哈達碼積和minus後,經過壓縮函式進入下一層

(4) 前面5種attention得到的網路經過LSTM編碼,並經過mean-max池化後得到固定維度向量,經過兩層的high way網路後套上softmax輸出

Enhanced LSTM for Natural Language Inference

簡楓:短文字匹配的利器-ESIM

NATURAL LANGUAGE INFERENCE OVER INTERACTION SPACE

感覺是一個大力出奇跡的文章

各種結構,

搜尋中的語義匹配技術

(1) 嵌入層對embedding的處理較為精細,除了預訓練的word embedding,還包括字元級別的embedding,以及語法層面的詞性特徵(POS)和二進位制精確匹配特徵(EM)

(2) 編碼層先是用high way網路分別提取query和doc中每個word的向量後,再透過self-attention,提取每個word的加權向量,然後兩個向量透過resnet的思路,引入fuse gate,分別提取原始向量的一部分,以及加權向量的一部分作為最終每個word的表達

(3) 前兩層都還只是query和doc各自的資訊表示,特徵互動層透過query中每個word和doc中每個word的向量點積得到互動矩陣,然後透過特徵提取層的dense net進行特徵提取,最終透過輸出層的線性網路並利用softmax輸出機率

Multiway Attention Networks for Modeling Sentence Pairs

這是篇辣雞文章

(1) 第一層的編碼層透過雙向GRU,對query和doc中的每個word進行編碼,每個word可以得到前向和後向GRU中每個隱層的輸出表示

(2) 第二層的Multiway Matching是MwAN模型的核心所在,對於query中每個word,和doc中的每個word都進行不同attention計算,分別有concat、bilinear、minus以及dot product,然後進行attention歸一化,可以得到query中每個word關於doc的注意力向量;同理也可以得到doc中每個word關於query的注意力向量

(3) 第三層的inside aggregation是對於query和doc在第二步得到的4種注意力向量,每種attention向量,與各自在第一步得到的原始向量表示進行內部融合,最終得到4種attention的向量表示

(4) 第四層的mixed aggregation對第三層得到的4種不同的attention向量進行融合,透過線性變化,tanh非線性對映,以及歸一化加權後,再透過雙向GRU,得到前向和後向的兩個融合向量

(5) 第五層將前面得到的不定長向量進行pooling操作變成定長的向量輸出最終機率

5. 搜尋中query和doc的相關性匹配模型

第三章和第四章講的是語義匹配(semantic matching)裡的深度模型,本章要講的是相關性匹配(relevance matching)裡的深度模型。語義匹配可以說是相關性匹配的基礎。

語義匹配通常更關注的是相似性,一般來說兩段文字通常結構相似,主要有以下特點:

(1) 代表性任務:自動問答QA任務、同義句子識別Paraphrase identification

(2) 語義匹配判斷的是同質的兩段文字:比如自動問答的QA問題,問題和答案一般來說講的都是一個意思,長度和屬性都相近;同義句子識別Paraphrase identification講的是兩段文字string1和string2是否是一個意思,這兩段文字也都是同質的

(3) 全域性匹配:語義匹配通常將兩段文字的片段作為一個整體,來推理他們之間的語義關係

(4) 匹配是對稱的:因為是兩段同質的文字進行匹配

相關性匹配更關注document文件和搜尋query是否相關,特點如下:

(1) 代表任務:資訊檢索中的query-doc匹配

(2) 兩段文字一般不同質: query長度一般較短,doc的長度較長

(3) 多樣化匹配:相關性匹配可能發生在對應文件的任何部分,不需要把doc看作整體去和query進行匹配

(4) 匹配不對稱:因為是兩段不同質的文字進行匹配

對於相關性匹配,可以分成兩個方向,第一種是基於global distribution的模型,第二種是基於local context的模型。

閱讀參考

標簽: Query  匹配  DOC  word  Attention