搜索中的深度匹配模型

01 搜索引擎概述

對於搜索來說,搜索引擎的本質是對於用戶給定query,搜索引擎通過query-doc的match匹配,返回用戶最可能點擊的文檔的過程。從某種意義上來說,query代表的是一類用戶,就是對於給定的query,搜索引擎要解決的就是query和doc的match,如圖1.1所示。

圖1.1 搜索引擎架構

對於推薦來說,推薦系統就是系統根據用戶的屬性 ( 如性別、年齡、學歷等 ),用戶在系統裏過去的行爲 ( 例如瀏覽、點擊、搜索、收藏等 ),以及當前上下文環境 ( 如網絡、手機設備等 ),從而給用戶推薦用戶可能感興趣的物品 ( 如電商的商品、feeds推薦的新聞、應用商店推薦的app等 ),從這個過程來看,推薦系統要解決的就是user和item的match,如圖1.2所示。

圖1.2 推薦引擎架構

圖1.3 搜索和推薦的本質,都是match

關於搜索和推薦更多的細節在"推薦系統中的深度匹配模型"一文中已經給出了詳細的對比,本文不再贅述。在目前工業界的大多數主流系統裏,推薦系統和搜索引擎一般分爲召回和排序兩個過程,這個兩階段過程稱呼較多,召回也會叫粗排、觸發、matching;排序過程也會叫精排、打分、ranking。

而在本文要講到的匹配,並不僅僅指的是第一階段這個matching的過程,而是泛指整個query和doc的匹配。圖1.4可以表示本文要講的query和doc的匹配表示,通過給定的training data,通過learning system,學習得到query和doc的匹配模型fM(q, d)。然後對於test data,也就是給定的需要預測的q和d,便可以通過這個模型,預測得到q和d的匹配分數fM(q, d)。

圖1.4 query-doc匹配過程的機器學習本質

由於query和doc本身都是文本表示,所以本質上來說,這篇文章要講的東西也是文本的深度匹配模型。大部分自然語言處理的任務基本都可以抽象成文本匹配的任務。

① 信息檢索 ( Ad-hoc Information Retrieval ):也就是本文要介紹的主體,在搜索引擎裏,用戶搜索的query以及網頁doc是一個文本匹配的過程

② 自動問答 ( Community Question Answer ):對於給定的問題question,從候選的問題庫或者答案庫中進行匹配的過程

③ 釋義識別 ( Paraphrase Identification ):判斷兩段文本string1和string2說的到底是不是一個事兒

④ 自然語言推斷 ( Natural Language Inference ):給定前提文本 ( premise ),根據該premise去推斷假說文本 ( hypothesis ) 與premise的關係,一般分爲蘊含關係和矛盾關係,蘊含關係表示從premise中可以推斷出hypothesis;矛盾關係即hypothesis與premise矛盾。

02 搜索中的傳統匹配模型

圖2.1表示的是query-doc的匹配在整個搜索引擎流程中的流程。在講整個搜索的深度匹配模型之前,我們依然先來看下傳統的匹配模型。

圖2.1 query-doc的匹配在搜索引擎中的作用

更早之前有基於term的統計方法,例如TF-IDF等,而從match的角度,按照query和doc是否映射到同一個空間,可以分爲兩大類,一類是基於隱空間的match,將query和doc都映射到同一個latent space,如圖2.2所示;第二種是基於翻譯空間的match,將doc映射到query的空間,然後學習兩者的匹配,如圖2.3所示:

圖2.2 搜索中基於latent space的匹配

圖2.3 搜索中基於translation的match

2.1 基於latent space的傳統匹配方法

2.1.1 BM25

對於第一種方法,基於隱空間的匹配,重點是將query和doc都同時映射到同一空間,經典的模型有BM25。BM25方法核心思想是,對於query中每個term,計算與當前文檔doc的相關性得分,然後對query中所有term和doc的相關得分進行加權求和,可以得到最終的BM25,整體框架如圖2.4所示

圖2.4 BM25方法框架表示

對於query的表示採用的是布爾模型表達,也就是term出現爲1,否則爲0;

圖2.5 BM25公式表達

圖2.5的BM25公式爲query中所有term的加權求和表達,可以分爲兩部分,第一部分是每個term qi的權重,用IDF表示,也就是一個term在所有doc中出現次數越多,說明該qi對文檔的區分度越低,權重越低。

公式中第二部分計算的是當前term qi與doc d的相關得分,分子表示的是qi在doc中出現的頻率;分母中dl爲文檔長度,avgdl表示所有文檔的平均長度,|d|爲當前文檔長度,k1和b爲超參數。直觀理解,如果當前文檔長度|d|比平均文檔長度avgdl大,包含當前query中的term qi概率也越高,對結果的貢獻也應該越小。

2.1.2 PLS方法

PLS方法全稱是Partial Least Square,用偏最小二乘的方法,將query和doc通過兩個正交映射矩陣LX和LY映射到同一個空間後得到向量點積,然後通過最大化正樣本和負樣本的點積之差,使得映射後的latent space兩者的距離儘可能靠近。

① query和doc的空間表示

② 訓練數據

③ 模型表示

用兩個線性映射矩陣LX和LY分別將query和doc的原始空間x和y映射後的點積作爲匹配分數,並且要求兩個轉化矩陣都必須是正交的。

④ 優化目標

上述用映射後的空間的向量點積作爲匹配分數,在求最優化時,目標就是最大化正樣本query-doc的pair對,以及負樣本query-doc的pair對的向量點擊差異,並且滿足兩個轉化矩陣LX和LY都是正交的約束條件,如下公式所示:

2.1.3 RMLS模型

Regularized Mapping to Latent Space和PLS在空間表示、訓練數據以及優化目標表示上都一致,區別在於轉化矩陣LX和LY上,PLS模型的基本假設要求兩個矩陣是正定的;而RMLS模型在此基礎上加入了正則限制,整體優化目標下公式所示:

總結下PLS和RMLS的特點如下:

圖2.6 PLS和RMLS方法比較

2.2 基於translation的傳統匹配方法

query和doc的匹配過程,就是將原本屬於不同空間的兩段文本映射到一個空間後進行匹配。基於translation的方法把這個過程類比於機器翻譯過程:query看成是目標語言E,把doc看成是源語言C,目的是爲了得到源語言到目標語言的概率P(E|C)最大化,也就是P(query|doc)最大化。

2.2.1 SMT模型

Baseline方法的基於統計機器翻譯的方法,給定源語言C(document),以及目標語言E(query),從源語言到目標語言的翻譯過程,就是將doc映射到query的過程。

其中,h(C,E)是關於C和E的特徵函數。整個求解過程看成是特徵函數的線性組合。

2.2.2 WTM模型

Word-base Translation Model,簡稱WTM模型,把doc和query的關係看成是概率模型,也就是給定doc,最大化當前的query的概率。Doc生成query的過程可以看成兩部分組成,第一項p(q|w)是概率模型,也就是doc中的單詞w,翻譯到當前query的單詞q的概率,稱爲translation probability;p(w|d)注意doc是加粗表示整個文檔,也就是doc生成每個單詞w的概率,稱爲document language model。

圖2.7 WTM模型公式組成

上述公式將doc->query的翻譯過程拆成了兩個模型的連乘,對於很多稀疏的term,一旦出現某個概率爲0,最終結果也將變爲0。爲了防止這種情況就需要做平滑,下述公式通過引入background language model的p(q|C),並且用參數alpha進行線性組合來做平滑。C代表的是整個collection。

圖2.8 加入了background language model平滑的WTM模型

從貝葉斯公式,可以得到p(q|C)以及p(w|D)的表達;C(q;C)表示的是當前query的單詞q在整個collection出現的次數;C(w;D)表示的是單詞w在文檔D中出現的次數

但是這種方法也存在問題,就是self-translation問題。原本這個問題是在機器翻譯過程中,但是在query和doc過程中,源語言和目標語言都是同一種語言,也就是doc中的每個term都有可能映射到query中相同的term,即p(q=w|w)>0。因此,CIKM2010年引入了unsmoothed document language model,也就是p(q|d)來解決這種問題

圖2.9 加入unsmoothed document 的WTM表示

03 基於representation learning的深度匹配模型

在搜索的深度模型匹配中,我們發現這一步和推薦系統的深度匹配模型一樣,也可以分爲兩類模型,分別是基於representation learning的模型以及match function learning的模型。

本章主要講述第一種方法,representation learning,也就是基於表示學習的方法,這種方法會分別學習query和doc ( 放在推薦裏就是user和item ) 的representation表示,然後通過定義matching score函數,例如簡單點的做法有向量點積、cosine距離等來得到query和doc兩者的匹配,整個representation learning的框架如圖3.1所示,是個經典的雙塔結構:

圖3.1 搜索中基於representation learning的深度匹配模型

整個學習過程可以分爲兩步:

① 表示層:計算query和doc各自的representation,如圖3.2中藍色圈所示。

② 匹配層:根據上一步得到的representation,計算query-doc的匹配分數,如圖3.2中紅色圈所示。

圖3.2 基於representation learning的模型流程

因此,基於representation learning的深度匹配模型,無外乎圍繞着表示層和匹配層進行模型結構的改造,其中大部分工作都集中在表示層部分。表示層的目的是爲了得到query和doc的向量,在這裏可以套用常用的一些網絡框架,如DNN、CNN或者RNN等,本章也將沿着這3種框架進行表述。

3.1 基於DNN的模型

3.1.1 DSSM模型

DSSM模型全稱是deep struct semantic model,是微軟在2013年提出來的深度匹配模型,後續一舉成爲表示學習的框架鼻祖。同年百度NLP團隊也提出了神經網絡語義匹配模型simnet,本質上兩者在模型框架上是一致的,如圖3.3所示,都是典型的雙塔模型,通過搜索引擎裏query和doc的海量用戶曝光點擊日誌,用DNN把query和doc通過表示層,表示爲低維的embedding向量,然後通過匹配層來計算query和doc的embedding向量距離,最終得到匹配分數。

圖3.3 百度simnet框架,經典的雙塔representation learning

DSSM作爲框架型的模型得到大範圍應用,除了其簡潔經典的三段式結構:輸入層-表示層-匹配層來得到最終的匹配得分,還有個很重要的原因:通過表示層得到的query和doc的向量是個非常重要的產物,可以在後續很多任務如召回層等地方繼續使用。

圖3.4 2013微軟DSSM模型框架

整個DSSM可以分爲3層,輸入層、表示層和輸出層

輸入層

輸入層做的事情是把原始的句子 ( query或者doc ) 映射到一個向量空間並進入表示層。這裏由於中文和英文本身的構造不同,在處理方式上也有所不同。

a. 英文輸入

DSSM論文裏對英文的處理方式是word hashing,對於每個單詞前後都用#表示作爲開始符和結束符。例如對於單詞boy,採用n-gram方式表達,以trigram爲例 ( n=3 ),將表示爲#bo, boy, boy# 這三個trigram。由於這種切分方法是在letter字符級別的,因此稱爲letter-trigram,目的是爲了區分後面會提到的其他trigram方法。

這種方法可能存在的一個問題就是單詞衝突問題。舉個例子,god和dog採用原始的one-hot是兩個不同單詞,但是用trigram的話這兩個詞的輸入將是一個向量,因此產生了衝突。

通過word hash的方式有兩個好處,第一是可以大大減少原始輸入空間。以4萬單詞爲例,採用trigram的hash方法以後,將壓縮到1萬左右的輸入空間。而對於一個50萬單詞的詞表的話,將壓縮到3萬,與此同時trigram的衝突率只有22/50w=0.0044%。

圖3.5 bigram和trigram的衝突率區別

b. 中文輸入

對於中文而言,沒有英文輸入這種char級別的語法構造,因此不適用word hash的方法。在NLP領域對中文的原始輸入都會採用各種分詞工具進行分詞的預處理,而對於正常規模的漢字,單字規模1.5萬左右,雙字規模在百萬左右,因此對於中文的輸入,採用的是單字的輸入

表示層

在DSSM中表示層採用的是詞袋模型 ( bag of words ),也就是說不區分word的輸入順序,整個句子的所有單詞都是無序輸入的。這也爲後面各種DSSM-based模型提供了很多優化工作。

在embedding層之後,對每個sentence使用的是MLP網絡,經典的隱層參數是300->300>128,也就是說最後,每個句子都將表示成一個128維度的向量。

其中W1表示第一層的embedding矩陣,W2,W3,…WN-1表示MLP的隱層;最後一層的輸出層採用tanh,輸出一個128維的向量。

匹配層

在原始的DSSM模型使用的是cosine作爲兩個向量的匹配分數:

DSSM模型能夠work的原因是利用了用戶的後驗點擊數據,給定一個query,在展示出來的doc裏面,用戶點擊了的doc則認爲這個doc和query是相關的,因此將query和doc的關係用softmax來表示其後驗概率:

其中,γ是一個平滑因子,是個超參數。而D表示的是所有候選的doc,這裏對於給定的query,所有被點擊過的doc認爲是正樣本,而對於負樣本,則從所有未點擊的doc裏隨機採樣4個,文章提出來使用不同的採樣方法對結果影響並不大。模型的損失函數表達如下所示,注意到這裏僅僅使用的是正樣本的後驗概率,和負樣本無關。

圖 3.6 DSSM中query和doc的匹配框架

總結下DSSM模型的幾個特性:

  • 框架鼻祖:提出了一個輸入層->query和doc各自的表示層->匹配層的模型範式,和百度的simnet一樣,更像匹配模型的框架範式,這裏的每一層都可以針對性的做優化
  • word hash:輸入層對於英文提出了word hash的方法,大大減少了原始one-hot輸入空間
  • 端到端學習:模型是個完全end-2-end的框架,包query和doc的embedding向量直接通過訓練得到不需要經過預訓練
  • 表示層:使用原始的DNN全連接網絡來得到query和doc的向量表示
  • 匹配層:使用cosine表示query和doc的匹配分數
  • 缺點:對query和doc的表示都是bow,丟失了序列信息和上下文信息

3.2 基於CNN的模型

以DSSM爲代表的基於DNN的表示學習匹配模型如3.2分析,無論是bow的表示還是DNN全連接網絡結構的特點,都無法捕捉到原始詞序和上下文的信息。因此,這裏可以聯想到圖像裏具有很強的local relation的CNN網絡結構,典型代表有ARC-I模型,CNN-DSSM模型,以及CNTK模型。

3.2.1 ARC-I模型

針對上述講到的DSSM模型對query和doc序列和上下文信息捕捉能力的不足,華爲諾亞方舟在2015年在DSSM的模型基礎上加入了CNN模塊,裏面提到了兩種模型ARC-I和ARC-II,前者是基於representation learning的模型,後者是基於match function learning的模型將在第三章講到。兩個模型對比原始的DSSM模型,最大的特點是引入了卷積和池化層來捕捉句子中的詞序信息,ARC-I全稱Architecture-I,框架如圖3.7所示。

圖3.7 ARC-I對於兩個文本的表示學習匹配

ARC-I模型引入了類似CNN模塊的卷積層和池化層,整體框架如圖3.8所示:

圖3.8 ARC-1模型框架架構

卷積層

其中zi(l,f)表示的是第l層中第f個filter位置爲i的word的卷積輸出,word滑動窗口大小爲k1 ( 圖中k1=3 ),word embedding的大小爲De。這裏不同的filter可以得到不同的feature map,通過w(l,f)和b(l,f)進行加權,表示的是第l層第f個filter的待學習參數。

用矩陣形式來表達如下:

其中zi(l-1)表示第l-1層第i個元素的向量,維度大小爲Fl-1。對於第一層卷積層,將連續的k1個word向量直接concat起來,如下所示,維度爲k1*De

池化層

卷積層提取了相鄰word的關係,不同的feature map提供了不同的word的組合,通過池化層進行選擇。ARC-I選擇的滑動窗口爲2,用max-pooling提取相鄰兩個滑動窗口的最大值,用公式表示如下:

圖 3.9 word-window表示,灰色表示置信度低

總結下ARC-I的特點:

  • 對於query和doc兩段文本的匹配,相比DSSM引入了word-ngram網絡
  • 通過卷積層不同的feature map來得到相鄰term之間的多種組合關係
  • 通過池化層max pooling來提取這些組合關係中最重要的部分,進而得到query和doc各自的表示。
  • 表示層:通過上述卷積層和池化層來強化相鄰word的關係,因此得到的query和doc的表示比原始DSSM能捕捉到詞序信息
  • 缺點:卷積層雖然提取到了word-ngram的信息,但是池化層依然是在局部窗口進行pooling,因此一定程度上無法得到全局的信息

3.2.2 CNN-DSSM模型

CNN-DSSM模型也稱CLSM,是CIKM2014微軟提出的基於CNN的DSSM模型,在DSSM框架上引入了CNN,整體來看可以分爲輸入層、表示層和匹配層,模型框架如圖3.10所示

圖3.10 CNN-DSSM模型框架

輸入層

a. 英文對比DSSM模型,在輸入層除了做了word hash的letter-trigram,同時也捕捉了word級別的信息,稱爲word-trigram。Word-trigram同樣採用的是n=3的上下文單詞的滑動窗口,每個窗口包含3個單詞。例如<s> online auto boy … <s>這句話,可以提取得到三組信息,第一組是<s> online auto,第二組是online auto boy,第三組是auto boy <s>。

通過word-trigram提取得到的3組句子都各有3個單詞,對每個單詞按照DSSM中的letter-trigram方法進行word hash後,映射到一個3萬維的embedding裏,因此每個句子都可以得到9萬維的embedding向量。

上述公式ft表示第t個單詞的word-n-gram表示, n=2d+1則爲滑動窗口大小,d則表示用該單詞前後單詞個數,例如d=1,n=3表示word-trigram,使用當前word前後各1個單詞以及自身進行表示。

b. 中文

對於中文,和DSSM模型一樣,採用的是字級別的編碼

表示層

a. 卷積層

通過輸入層得到的每個句子是一個m*90k維的矩陣,其中m代表的是query或者doc的長度,爲矩陣的行,而90k理解成每個word的embedding size,爲矩陣的列。對於query和doc的句子不等長情況,可以通過padding方式進行補齊,確保所有句子都是等長的。論文中使用m=300,就是每個query和都需要pad到300維。

爲了說明整個卷積過程,這裏借用文本分類的經典模型textCNN模型來展示,如圖3.11所示。卷積核Wc大小爲3*90k,3表示的是卷積高度,代表每次滑動進行卷積的詞窗口大小爲3,90k是爲了和原始句子的embedding size保持一致,整個卷積過程從上到下進行卷積,最終每個卷積核得到一個m*1的特徵向量 ( feature map )。

圖3.11 textCNN模型框架

論文使用了300個卷積核,因此可以得到300*m的一個矩陣 ( 前300爲filter個數,後300表示的是每個feature map的行數 )

b. 池化層

前面卷積層每個filter得到的feature map維度是300,採用max pooling的方式選擇最大的一個,總共有300個filter,因此max pooling可以得到一個300*1的定長特徵向量:

通過一層MLP網絡後,用tanh進行激活輸出,從300維的向量映射到一個128維的特徵向量

匹配層

在原始的DSSM模型使用的是cosine作爲兩個向量的匹配分數:

訓練和損失函數和原始DSSM論文一致,這裏不再贅述。

總結下CNN-DSSM模型,對比原始DSSM模型主要區別如下:

  • 輸入層除了letter-trigram,增加了word-trigram,提取了詞序局部信息
  • 表示層的卷積層採用textCNN的方法,通過n=3的卷積滑動窗口捕獲query和doc的上下文信息
  • 表示層中的池化層通過max-pooling,得到卷積層提取的每個feature map的最大值,從而一定程度的捕獲了全局上下文信息
  • 表示層中的池化層的max-pooling對比ARC-I的max pooling不同之處在於ARC-I的池化層是在相鄰的兩個滑動窗口進行max pooling,得到的還是局部關係;而CNN-DSSM模型是在每個feature map整個句子進行max pooling,能得到全局的關係

3.2.3 CNTN模型

前面提到的兩種基於CNN的模型ARC-I模型以及CNN-DSSM模型核心在於表示層上引入了CNN模型結構,對匹配層依然是沿用了DSSM的cosine來計算query和doc的匹配分數。而在IJCAI2015年提出的Convolutional Neural Tensor Network,簡稱CNTN模型,除了一樣在表示層引入CNN學習query和doc的表示,另外也在匹配層做了改造,引入了Neural Tensor Network,整體框架表示如圖3.12所示。

圖3.12 CNTN模型框架

對於給定的query和doc,從表示層已經得到各自的表示q和d,在匹配層引入了neural tensor network,也就是更多的網絡參數來學習q和d的匹配分數,用公式表示如下:

用圖3.13表示如下:

圖3.13 CNTN的匹配層網絡結構

其中query和doc都各自由3個word組成,query 爲圖中的黑色部分,doc爲黃色方塊。M[1:r]中的每個r ( 圖中等於2 ),是query和doc之間的一個3*3轉換矩陣,因此,qTM[1:r]d產生的是一個r維度的向量,在圖中就是2維向量。公式的第二部分,V是一個3*2的矩陣,乘以q和d兩個向量concat一起的向量後,也得到一個2維向量,在加上一個維度爲2的bias向量b。

通過中間括號的操作得到一個2維的向量後,引入了非線性函數f進行擬合,再通過左側一個線性矩陣u的映射,最終得到匹配分數

3.3 基於RNN的模型

作爲空間關係代表的CNN網絡結構能夠捕捉到query和doc的局部關係,RNN作爲時間序列相關的網絡結構,則能夠捕捉到query和doc中前後詞的依賴關係。因此,基於RNN的表示學習框架如圖所示,query或者doc用黃色部分表示,通過RNN網絡結構作爲隱層來建模序列關係,最後一個word作爲輸出,從而學習得到query和doc的表示。對於RNN結構,可以使用業內經典的LSTM或者GRU網絡結構,如圖3.14所示。

圖3.14 基於RNN的表示學習框架

3.3.1 LSTM-RNN模型

2016在TASLP上提出的LSTM-RNN模型,在DSSM的基礎上提出了用LSTM來強化query和doc的representation。整個模型思想很簡單,通過將原始query和doc的文本轉換成embedding向量,然後通過LSTM-RNN的網絡結構進行抽取轉換。假設原始的query或者doc有m個word,得到的最後一個隱層的輸出hm就是整個query或者doc的最終表達,框架如圖3.15所示。

圖3.15 LSTM-RNN模型框架

文中核心的改造在於表示層中使用了LSTM來捕捉序列關係,在LSTM的多種變體結構中,作者使用了peephole connection的變體,也就是說讓門結構 ( 輸入門、輸出門、遺忘門 ) 也會接受前一時刻的細胞狀態作爲輸入,具體表示如圖3.16所示。

圖3.16 peephole connection LSTM網絡結構

整個LSTM的前向輸出結構表示如下:

總結LSTM-RNN模型的幾個特點:

  • 相比於DSSM模型引入了LSTM網絡結構來捕捉次序的關係
  • LSTM最後一個隱層的輸出作爲query和doc的representation

3.4 representation learning模型總結

總下基於representation learning的深度匹配模型框架,核心在於表示層和匹配層。

圖3.17 表示層和匹配層是representation learnning框架的兩大模塊

3.4.1 表示層

① DNN框架:DSSM模型

② CNN框架:ARC-I模型、CNN-DSSM模型、CNTN模型

③ RNN框架:LSTM-RNN模型

3.4.2 匹配層

匹配函數有兩大類,一種是直觀無需學習的計算,如cosine、dot product,一種是引入了參數學習的網絡結構,如MLP網絡結構,或者CNTN模型。

① cosine函數:DSSM模型、CNN-DSSM模型、LSTM-RNN模型

② dot product

③ MLP網絡:ARC-I模型

④ Neural Tensor Network:CNTN模型

04 基於match function learning的深度匹配模型

對比representation learning的深度匹配模型,match function learning方法的特點,是不直接學習query和doc的表示,而是一開始就讓query和doc進行各種交互,通過兩者交互的match signals進行特徵提取,然後通過aggregation對提取到的match signals用各種網絡結構進行學習得到最終的匹配分數,如圖4.1所示。

圖4.1 基於match function learning的深度匹配模型

和representation learning匹配模型一樣,match function learning的匹配過程也一樣可以分爲兩步:

① 基礎匹配信號提取:讓query和doc在這一步就開始進行交互,得到兩者的基礎匹配信號,如圖4.2中的藍色圓圈所示

② 信號聚合(aggregation):對應於representation learning中的匹配層,這裏也叫匹配層,由於前一步已經進行了query和doc的交互,信號更加豐富,在後面介紹的模型中可以發現匹配層這裏也會比表示學習的網絡結構設計變化要豐富很多

圖4.2 query和doc的匹配過程

由於從一開始就讓query和doc進行交互。因此,基於match function learning的匹配模型也稱爲交互匹配模型。

4.1 基於word level匹配度矩陣的模型

基於match function learning的模型和representation learning的模型最大的區別是讓query和doc提前進行交互,因此很多模型的工作就是關於如何設計query和doc的交互上。一種很直觀的思路就是,讓query和doc兩段文本里面每個word兩兩進行交互,在word level級別建立匹配度矩陣。本章在原始slides上的基礎上加了aNMM模型,雖然聽名字是attention-based的,但其區別於CNN的position-aware提出的value-aware思路個人覺得還是值得研究下的。

4.1.1 ARC-II模型

ARC-II全稱Architecture-II,和ARC-I出自2015年華爲的同一篇paper,屬於交互學習的模型。ARC-I直到最後的全連接層進行匹配之前,query和doc兩段文本都是沒有任何交互的,大家都在各自學習各自的表示。而ARC-II模型屬於交互學習的模型,通過對query中的word進行n-gram的卷積提取,以及doc中的word進行卷積提取,然後各自卷積後得到的詞向量進行pairwise計算,得到一個匹配度矩陣,整體框架如圖4.3所示。

圖4.3 ARC-II模型框架

在提取匹配度矩陣過程中,核心有3層:一維卷積層、二維卷積層和二維池化層

一維卷積層

假設query和doc的長度都是N,我們把整個過程想象類比層二維圖像,讓query和doc的每個word兩兩組成一個N*N的矩陣,query是列,doc是行。其中每個word的embedding維度是De

用一個3*3的卷積核在這個N*N的矩陣上進行掃描,每次橫向掃描3個格子,縱向掃描3個格子,代表在query和doc上對應的3個相鄰的詞,總共取到6個詞進行concat,可以得到一個6*De的矩陣,卷積核大小也爲6*De,兩者進行點乘相加得到一個值。這樣掃描完整個N*N矩陣就可以得到一個二維的矩陣feature map。使用多個卷積核,就可以得到多個二維矩陣feature map。

通過這種trigram的方法 ( 每次取3個詞 ) 的交互,可以得到query和doc中任意3個相鄰的word組成的短語的交互關係,因此交互級別屬於phrase級別的。

對於query句子SX中的第i個word,和doc句子SY中的第j個word,卷積後的表示爲:

注意到第一層的元素zi,j(0)相當於將輸入x和y的向量concat了起來,embedding 維度爲De,n-gram的滑動窗口爲k1 ( 在示意圖中爲3 )。

整個過程query和doc的信息都是獨立計算後concat的,稱爲一維卷積。

2 維池化層

一維卷積層保留了query和doc中每個詞的原始信息。在2維的池化層作用是用一個2*2的卷積核,用max-pooling得到這4個二維空間的最大值。

2維卷積層

前面通過一維卷積層和max pooling後得到的是2維的匹配矩陣,接着的操作可以類比於圖像,在二維的平面上進行多層的卷積-池化-卷積-池化…的操作了。以第三層爲例 ( 前面已經有兩層:一維卷積-二維池化 ),在一個二維平面做卷積:

2維卷積層之後可以疊加多個卷積和池化的操作,最後再通過全連接MLP輸出最終的匹配分數。損失函數使用pairwise loss:

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

圖4.4 2維pooling過程

另外一個角度,我們可以看到其實ARC-I是ARC-II的特殊情況,如下圖4.5所示:

圖4.5 ARC-I本質上是ARC-II的特殊情況

總接下ARC-II模型特點:

  • 對比ARC-I,在一開始就引入了query和doc兩段文本的匹配矩陣,提前得到兩者的交互信息,對信息匹配的捕捉能力更強,並且卷積和池化過程保留了次序的信息
  • 雖然引入了query和doc的匹配矩陣,但是匹配矩陣的計算是按照每個句子的n-gram後的word embedding計算,只有phrase level的匹配信號而沒有更細粒度的word level的匹配信號,因而丟失了原始精確匹配和泛化匹配的信息。

4.1.2 MatchPyramid模型

前面提到的ARC-II模型引入了匹配矩陣,但是匹配的粒度是n-gram後提取各自的word embedding進行計算,並不是word-level級別的。而MatchPyramid模型的提出靈感源於CV領域裏的圖像識別。在此之前,文本匹配的維度是一維的 ( TextCNN爲代表的word embedding );而圖像是二維平面的,顯然信息更加豐富。2016年的AAAI上中科院提出了基於word-level級別交互的矩陣匹配思想,用一個二維矩陣來代表query和doc中每個word的交互,相比於更高level的匹配如ARC-II的phrase level(n-gram)信息能捕捉更精細的匹配信息,屬於真正word level的匹配度矩陣,整體框架如圖4.6所示:

圖4.6 word-level的匹配矩陣模型示意圖

以下圖兩個例子說明下word-level的匹配以及phrase-level的匹配的不同:

圖4.7 word-level和phrase-level示例

對於word-level的匹配能捕捉到更細粒度的信息,例如橙色方框中能捕捉到famous對應popular以及Chinese對應China這樣的匹配信息。

對於phrase-level的短語匹配又可以分爲n-gram有序的短語,以及n-term無序的短語。圖4.7顯示的是trigram也就是3個詞一個窗口,同顏色的方框是匹配的。對於n-term的匹配,方框中第一個句子中的"down the ages"和第二個句子中的"down the ages"是匹配的。對於n-gram的匹配,橙色方框中第一個句子中的"noodles and dumplings"和第二個句子中的"dumplings and noodles"通過3-gram後打亂了詞序信息後是匹配的。

整個MatchPyramid模型框架如圖4.8所示:

圖4.8 MatchPyramid模型網絡結構

因此,文中的關鍵在於如何構建query和doc中word級別的匹配信息,整體框架可以分爲3層,匹配矩陣層、2維卷積層、2維池化層,後續卷積和池化可以持續進行疊加。

匹配矩陣層

匹配矩陣的構造是MatchPyramid模型的核心關鍵。用M矩陣代表query和doc的匹配,Mij爲矩陣的第i行第j列,表示第一個句子query中第i個單詞和第二個句子doc中第j個單詞的交互。這裏對於Mij如何構造,有3種方法,indicator、cosine以及dot product,分別如下:

a. indicator match

0-1匹配矩陣,只有兩個word完全相同纔等於1,否則爲0,相當於是精確匹配:

b. cosine match

將每個word用glove預訓練得到的詞向量,兩兩計算cosine相似度:

c. dot product match

將每個word用glove預訓練得到的詞向量,兩兩計算向量點積:

圖4.9顯示了indicator和dot product兩種,黑色部分是0;dot product或者cosine對比indicator能捕獲到更多的泛化信息,例如在indicator對於famous和popular的匹配分數是0,而用dot product得到兩者的匹配分數是1.2。

圖4.9 indicator和dot product匹配計算方式

二維卷積層

以第一層爲例,通過一個rk* rk的卷積核提取二維匹配矩陣的信息,相當於是提取query和doc在各自連續rk個word的信息交互:

二維池化層

還是以第一層的池化層爲例,在dk*dk’的kernel下用max-pooling求最大值:

以下這張圖展示了MatchPyramid模型和圖像識別中一些相似的匹配過程:

圖4.10 MatchPyramid類比圖像識別的匹配

圖4.10左邊用indicator match得到兩個句子的相似匹配矩陣,相當於是精準匹配,第一層卷積層通過上下兩個對角線以及反對角線的卷積核之後,可以得到兩個feature map,第一個feature map的綠色部分和第二個feature map的橙色線條類似於圖像識別中的邊緣檢測。通過第二層的卷積核之後,可以得到右側的feature map中的紫色的“T-type”的part,這一部分類比於圖像識別中的motifs(part)識別。

圖4.11 圖像識別類比文本匹配過程

總結MatchPyramid模型的特點:

  • 比起ARC-II模型通過n-gram得到的word embedding進行相似度計算,MatchPyramid模型在匹配矩陣的計算上做得更加精細,關注的是原始word級別的交互
  • 對於query和doc之間每個word的兩兩交互提出了3中方法,包括精確匹配的indicator計算,兩個word完全相同爲1否則爲0;以及語法相似度的匹配,包括cosine以及dot product,關注的是更泛化的匹配
  • 整個過程和圖像識別以及人類的認知一樣,word-level的匹配信號,類比圖像中的像素特徵;phrase-level的匹配信號,包括n-gram有序的phrase以及n-term無序的phrase,類比圖像中的邊緣檢測;到sentence-level的匹配信號,類比圖像中的motifs檢測

4.1.3 Match-SRNN模型

IJCAI2016上提出了一種空間相關RNN ( Spatial RNN ),全稱Match-SRNN模型來擬合交互矩陣,類似於一種動態規劃的思路,query和doc的交互矩陣中每個位置的值由不僅由當前兩個word的交互值得到,還由其前面 ( 左、上、以及左上三個位置 ) 的值決定,模型整體框架如圖4.12所示:

圖4.12 Match-SRNN模型

整個模型可以分爲3個部分,分別是query和doc的匹配矩陣層、本文的核心Spatial RNN層以及最終的輸出層。

匹配矩陣層

首先,對於輸入的兩個文本query和doc的表示s1和s2分別由m和n個詞組成的詞向量組成。

對query中的m個term,以及doc中的n個term兩兩計算匹配分數得到初始的匹配矩陣,一般來說可以用cosine或者dot product來表達其匹配分數 ( MatchPyramid )。論文中作者提到爲了更好的捕捉關係,引入了neural tensor network來擬合兩者關係,具體有3個參數向量,T[1:c]代表的是層數爲c的tensor向量,W爲線型參數,維度和embedding size一致,而b爲bias。

這一步其實對本文的核心模塊是獨立的,實際中也可以從簡單的cosine、dot product甚至是indicator的直接先做計算,沒有更多參數學習。

Spatial RNN

第一步得到了query和doc的原始匹配矩陣之後,作者使用了Spatial RNN的網絡結構來進一步提取得到query和doc兩段文本的關係。對於query中第i個term以及doc中的第j個term用sij表示,它的值由其左邊、上邊、左上3個相鄰的元素的函數所決定,表示如下:

該公式是整個Spatial RNN的理解關鍵,結構和動態規劃很像,以圖4.13爲例來直觀理解整個過程。

給定兩個句子s1=“The cat sat on the mat.”, s2=“The dog played balls on the floor.”

圖4.13 兩段文本的遞歸匹配示例

假設i=3,j=4,那麼s1[1:3]={The cat sat},s2[1:4]={The dog played balls},那麼,h34將由它的前綴h24,h33,h23這三項所決定。而s1中第3個詞"sat"和s2中第4個詞"balls"其中:

h24代表的是s1[1:2]={The cat}以及s2[1:4]={The dog played balls}

h33代表的是s1[1:3]={The cat sat}以及s2[1:3]={The dog played}

h23代表的是s1[1:2]={The cat}以及s2[1:3]={The dog played}

可以發現這三項中,h33其中佔比應該最高,語義相關性也最強,和直覺認知也是符合的。這種遞歸的方式,也可以更好的捕捉兩個句子之間的長依賴關係。

公式中的f是擬合的函數,可以採用多種時序相關的模型去擬合,比如RNN, LSTM,GRU等,作者在文中提到最終用的是GRU。在原始的GRU公式中,關鍵的是兩個門reset gate z以及 update gate r,表達如圖所示:

圖4.14 1D-GRU結構

其中ht-1表示句子中第t-1個單詞的隱層輸出,z表示的是update gate,控制ht-1中有多少比例能夠更新當前時刻的信息;r表示的是reset gate,控制着儲存在cell中的信息;W(z),U®,W®, U®,W,U爲GRU中學要學習的模型參數。

可以發現原始的GRU的更新門z只有一個。而在Match-SRNN模型中,匹配矩陣是二維的,每個元素(i,j)的表達式是由3項組成的,分別是 (i-1,j),(I,j-1),(i-1,j-1),因此,論文中用了4個更新門z,分別表示爲zl,zt,zd以及zi。三個reset門rirl,rd示意圖如圖4.15所示:

圖4.15 2D-GRU網絡結構

4個update gate以及3個reset gate最終的表達如下:

其中的softmax by row表達如下:

輸出層

從上一層SRNN層提取得到query s1和doc s2的交互矩陣後,要得到最終的match score就簡單了,論文使用了簡單的線性函數去擬合:

其中W和b爲待學習的線性參數,通過訓練得到。因爲是相關性的rank問題,論文使用的是pairwise loss:

總結Match-SRNN模型的特點:

  • 對比MatchPyramid模型,query和doc的匹配分數,使用neural tensor network結構,引入了參數得到初始匹配矩陣,更復雜的結構捕捉信息更精準
  • 引入了Spatial RNN來進一步得到匹配矩陣,每個元素(i, j)的值除了當前的匹配sij值,還由其左(i-1, j)、上(i, j-1)、左上(i-1, j-1)三個元素決定,通過網絡結構f進行擬合
  • 上述的網絡結構f採用的2D-GRU,對比常規的1D-GRU,最大的特點是有4個update gate以及3個reset gate

4.1.4 MV-LSTM模型

AAAI2016年提出的MV-LSTM模型,用雙向LSTM來對兩段文本query和doc進行編碼,然後將LSTM的每個隱層輸出進行歸一化後作爲query和doc每個term的輸出,並對這些term計算得到不同維度的匹配度矩陣。由於採用雙向LSTM的編碼,以及不同的匹配度矩陣計算方法,作者認爲這是個Multi-View的過程,能夠捕捉到每個term在不同的語境下的表示,整體過程如圖4.16所示:

圖4.16 MV-LSTM模型表示

整個模型可以分爲3部分:① query和doc各自的LSTM編碼;② query和doc的匹配矩陣;③ 匹配信號融合

LSTM編碼

對於給定的句子S=(x0,x1,x2,…,xT),MV-LSTM模型使用雙向的LSTM進行編碼,對於每個單詞xt ( 在query或者doc中的第t個term ),用LSTM隱層的輸出ht作爲其表示,由於是雙向,因此將兩個方向的輸出進行concat:

匹配矩陣計算

上一步通過Bi-LSTM得到query和doc的表示SX和SY,對於SX中每個term,以及SY中每個term的交互可以得到匹配度矩陣。同樣的,在這裏作者提出了3種不同的計算方法:

a. cosine相似度

query中的term u以及doc中的term v,計算cosine相似度

b.雙線性bilinear

通過引入待訓練參數M進行映射

c. Tensor layer

這一步的過程和3.2.3講到的CNTN模型一樣

匹配信號融合

從上一步可以得到query和doc的匹配度矩陣,在這一步對匹配信號進行融合得到最終的匹配分數。

a. k-max pooling

在計算兩段文本的匹配過程中,一般來說整個匹配分都是由匹配矩陣中的特定匹配信號決定的,在論文中作者使用了k-max pooling進行這種匹配信號的提取。假設k=1代表的是最佳匹配信號,也就是整個匹配信號中最大的值纔會被選擇;對於k>1,代表的是選擇匹配信號最大值的top k。

b. MLP

通過k-max pooling提取匹配信號後接着就是用簡單的全連接網絡f後得到r,再經過線性映射得到最終的匹配分數s:

總結整個MV-LSTM模型過程如下:

  • 用雙向LSTM對query和doc進行編碼,得到的每個term的隱層前向和後向輸出concat起來,作爲該term的表示
  • 對query和doc上一步得到的每個term兩兩計算匹配分數,文中提到了cosine、雙線性以及tensor layer這3種計算方法,由於網絡參數的不斷加大,擬合精確度和複雜度也依次提升
  • 對前一步得到的匹配度矩陣,先是用k-max pooling提取,然後用MLP後輸出最終的匹配分數

4.1.5 aNMM模型

CIKM2016年提出的attention based Neural Matching Model,簡稱aNMM模型,原文主要解決QA匹配問題,模型同樣可以應用在query和doc中兩段文本的匹配關係設計中。前面講到的ARC-II模型以及MatchPyramid在匹配矩陣後,都用到CNN的卷積層做n-gram的提取。而CNN卷積的基本思想,是不同位置的word是共享權重。而在aNMM模型中,作者認爲不同位置的word在卷積核中共享權重是不合理的,因此提出了基於value的共享權重方法。根據共享權重的組數不同,論文提出了兩種模型,aNMM-1模型和aNMM-2模型。

4.1.5.1 aNMM-1模型

按照模型結構可以分爲3層,輸入層、value share層以及attention層

input encode層

對於給定的問題query q,以及對應的文檔a,q由m個word組成,a由n個word組成,通過word embedding得到q和a各自的embedding矩陣。讓q和a的word兩兩求cosine相似度,可以得到一個M*N的匹配矩陣P,裏面的每個元素Pj,i代表的是q中的第j個term,以及a中第i個term的相似度。

Value share層

從匹配矩陣中P提取到的不同q和a的匹配分數存在一個問題,就是給定一個query,不同doc長度是不同的,得到的匹配矩陣的大小也不同。因此需要有個機制將其映射到定長的維度中去方便後續網絡處理。

這裏很容易想到CV領域裏的CNN網絡結構,通過卷積和池化的方法進行維度的壓縮。在圖像領域CNN之所以能夠奏效,很大程度在於圖像本身的局部關係,也就是CNN的權重是position-shared的。如圖4.17所示是個3*1的卷積核,相同顏色的邊共享權重,所有同個位置的邊共享相同的權重,在途中分別是紅色、藍色和綠色。

圖4.17 position-share權重的CNN

但是在NLP領域的文本匹配問題上,query和doc的匹配term可能出現在任意位置上,並不一定是強位置關聯的。在前面得到的query-doc匹配矩陣P中,不同的匹配分數值對最終結果的共享程度是不同的,相同權重的對結果的共享應該一致,因此作者提出了一種value-shared的權重方法,如圖4.18所示。

圖4.18 value-share weight示意圖

爲了方便說明,在圖中將區間分成3個桶,[0,0.5],[0.5,1],[1,1]。其中實線部分表示上面第一個結點node1的參數,虛數部分表示第二個結點node2的參數。同樣的,相同線型和顏色的表示共享權重。權重等於1的3個結點用紅色共享權重,權重小於0.5的兩個結點0.3和0.4用綠色共享權重,權重大於等於0.5小於1的4個節點 ( 0.8、0.9、0.6、0.7 ) 共享權重。

由於匹配矩陣P中每個元素的值都是在-1到1之間 ( cosine取之範圍 )。因此在實際模型中作者將取值範圍區間按照0.1進行分桶,總共有21個分桶,落到相同的分桶區間的value是共享權重的。通過這樣的方式,可以將匹配矩陣轉爲相同的維度,不管輸入矩陣的維度大小,隱層節點的個數都是固定的。

假設後續隱層的維度爲K+1,另xjk表示問題q中第j個term,在第k個分桶節點上的所有匹配信號值,那麼隱層第j個節點則爲這K+1個分桶的加權求和:

attention層

經過前面兩層網絡,對於每個query-doc對,都可以計算得到一個M*1的向量,向量的每個元素都表示doc與當前query中M個term中每個term的相似度。

作者在論文中引入了參數向量v,維度和P一致,來對問題中的每個term求點積映射得到每個term的權重並做softmax歸一化,然後和前面得到的每個隱層節點hj相乘,得到最總的匹配分數y:

4.1.5.2 aNMM-2模型

相比於anmm-1的改進在於,對於value-share權重網絡,anmm-1只有一個。而類比於CNN的卷積層有多個filter,anmm-2提出來可以有k個value-share權重網絡,表示權重網絡的組數,整體網絡結構如圖4.19所示。

圖4.19 aNMM-2模型框架

總結來說,aNMM模型結構框架主要的創新點在於:

  • 借鑑了CNN模型中相同位置共享權重 ( position-shared weight ) 的思想,認爲QA匹配問題 ( 可以擴展到其他的query和doc的兩段文本匹配問題 ) 不應該是同位置共享,而應該是相同的匹配值共享權重 ( value-shared weight ),從而起到pooling的作用,保證隱層個數都相同
  • 類比CNN的多個filter思路,共享權值網絡也可以有多層

4.2 基於attention的模型

基於word level的匹配度矩陣可以說是整個基於match function learning模型的標配組件,而這有這種low level的匹配矩陣信息基本是不夠的,在當前attention機制在整個NLP領域隨處可見的情況下,attention也基本成了後續衆多模型的標配組件之一。除了徐君老師的slides裏的DecAtt模型,本章也加入了近兩年在各大主會&文本比賽裏比較流行的十幾個模型,如BiMPM、ESIM、DIIN等。

4.2.1 ABCNN模型

前面講的基於CNN的匹配模型如ARC-II,CNN-DSSM模型在匹配的時候使用了在圖像和文本領域都大放異彩的CNN模塊,2015年的ACL上在此基礎上又加入了近年來在CV和NLP也同樣無處不在的attention模塊,Attention-Based CNN模型,簡稱ABCNN用來做query和doc的文本匹配。

4.2.1.1 BCNN

在加入attention之前,先看下沒有attention的Basic CNN模型,簡稱BCNN模型,如圖4.20所示:

圖4.20 BCNN模型結構

對於query和doc兩個輸入的文本表示爲s0和s1,長度分別爲s0和s1 ( 實際操作需要用 0補齊到一樣的長度s ),爲了方便進行說明,在圖中沒有pad的這一步。

輸入層

兩個句子的embedding向量,embed維度爲d0 ( 圖中等於8 ),輸入均爲d0*s

卷積層

通過維度大小爲w*d0的卷積核,分別沿着詞的方向做卷積,d0高度方向和詞的embedding維度保持一致,w表示卷積的寬度。論文使用的是wide convolution,也就是對原始輸入需要左右長度爲w-1的方向分別補0,這樣,經過寬卷積的feature map爲 s+w-1,在圖中,左邊s=5, w=3,因此卷積後feature map爲7*d0;右邊s=7,w=3,卷積後feature map維度爲9*d0。卷積核個數爲d1

池化層

以圖4.20爲例,分爲兩種池化層:

  • Average pooling(w-ap):如圖4.20所示,使用滑動窗口的方式,滑動窗口大小爲w,這樣經過寬卷積列數爲s+w-1的feature map經過w-ap後,列數重新變爲s列。這樣的好處是可以根據情況疊加任意多層的wide convolution +average pooling
  • All pooling (ap):最後一層的pooling使用的是在整個句子維度s的pooling,最終得到一個列向量。最終的原始句子s0和s1經過這些網絡結構後變爲左右兩個列向量concat後輸入到MLP網絡中
4.2.1.2 ABCNN-1

論文提出的第一種attention-based的CNN結構爲ABCNN-1,如圖4.21所示:

圖4.21 ABCNN-1模型

對比前面沒有attention的BCNN,最大特點是兩段文本query和doc s0和s1的卷積表示,不再只是自身的表達,而是引入了s0和s1的交互矩陣A。用F0,r,F1,r表示原始句子的向量表達,大小均爲s*d,表達如下:

這裏Fi,j表示的是query s0的第i個term和doc s1的第j個term的match score,match score,大小爲s*s,可以採用多種衡量距離的方式,論文文中使用如下的表達發現效果不錯,簡單來說,如果x和y越接近,匹配分數越接近於1:

通過引入attention矩陣W0和W1,得到兩段文本query和doc的最終加權特徵向量F0,a和F1,a

將原始的句子向量F0,r,F1,r以及attention特徵向量F0,a和F1,a concat一起後作爲最終MLP的輸出。

4.2.1.3 ABCNN-2

ABCNN-1的attention機制發生在卷積操作之前,而ABCNN-2是在卷積輸出之後進行attention。原始的句子向量經過卷積後,得到7*d和9*d的表示。因此query s0以及doc s1的交互attention矩陣A是個7*9的矩陣(實際中也會用0補齊),如圖4.22所示。

圖4.22 ABCNN-2模型框架

其中a0,j表示的是第0個句子query s0的第j個單詞,它的權重爲attention矩陣中第j行的和;a1,j表示的是第1個句子doc s1的第 j個單詞。

用Fi,r,c表示的是第i個句子中卷積層的輸出,Fi,r,p表示第i個句子池化層的輸出,通過一個w的滑動窗口,池化層第j列 ( 每一列長度爲d ) 爲卷積層第j列到第j+w列以及attention矩陣A相乘得到。

總結來說,ABCNN-1和ABCNN-2有幾個不同的地方在於:

  • ABCNN-1方法中的attention是作用在卷積層,而ABCNN-2是發生在池化層,也就是已經過了卷積層。
  • ABCNN-1方法需要兩個額外的轉換矩陣W0和W1得到attention特徵向量,從而比ABCNN-2需要更多的參數。因此作者認爲更容易過擬合。

4.2.1.4 ABCNN-3

ABCNN-3做的是同時結合ABCNN-1和ABCNN-2方法,如圖4.23所示:

圖4.23 ABCNN-3模型

總結ABCNN模型特點:

  • ABCNN-1模型的attention機制發生在卷積層之前,也就是兩段文本交互計算之前。query和doc原始向量表示爲F0,r,F1,r,通過參數矩陣W0和W1得到加權表示F0,a和F1,a,四個向量concat後進行卷積。額外引入參數W0和W1,作者認爲容易發生過擬合。
  • ABCNN-2模型的attention機制發生在卷積之後,也就是兩段文本已經交互計算之後。通過計算query和doc的attention矩陣A,然後對query和doc的卷積進行加權滑動得到池化的輸出。
  • ABCNN-3同時將ABCNN-1和ABCNN-2兩個模型做融合。

4.2.2 DecAtt模型

EMNLP 2016提出的Decomposable Attention Model,簡稱DecAtt模型,是較早在query和doc的關係建模上引入attention機制的。該模型將兩個句子通過分解 ( decompose ) 成每個word的軟對齊機制,來計算當前文本query ( doc ) 中每個word與另一段文本doc ( query ) 的attention得到每個word的加權向量,然後通過當前word的原始向量與attention加權向量的compare,最終對交互得到的向量進行aggregate得到最終的匹配分數,整體框架如圖4.24所示:

圖4.24 DecAtt模型整體框架

query和doc各自由la和lb個term組成,每個term是個定長的embedding向量:

整個模型可以分爲3步、attend、compare以及aggregate

① attend

對於query向量a的第i個term和doc向量b的第j個term的權重用如下公式表示:

其中F用的是普通的神經網絡並經過RELU激活。如果使用F’函數,複雜度爲la*lb。而先用F函數擬合query和doc各自的表達,則F只需要計算次數爲la+lb。原始的複雜度從la*lb變成了la+lb。除此之外,論文中將attention機制看成一種軟對齊機制(soft-align),將query中第i個word與doc中每個word分別求權重,然後加權求和,就可以得到第i個word的權重βi;同理可以得到doc向量b中第j個word的權重αj

② compare

從①可以得到query向量a和doc向量b中每個word的權重βi和αj,通過函數G就可以得到各自的加權 ( soft-align ) 表達,這裏G用的是MLP全連接網絡:

③ aggregate

得到每個word的加權表達後,最終的句子爲每個word直接sum得到:

由於NLI是個分類問題,因此後面使用一個線性分類器進行分類:

損失函數使用cross entropy損失函數:

總結DecAtt模型,整體可以用如下圖4.25所示:

圖4.25 DecAtt模型結構

整個過程可以分爲3個步驟:

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

② compare:把每個word的加權向量subphrase,與原始的向量進行compare通過一個前向網絡擬合,作爲query的最終向量以及doc的最終向量

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

4.2.3 MCAN模型

在文本匹配的很多模型中,現有的很多基於attention的模型通常都把attention看成一種特徵提取的工具,但是缺陷是常常僅受限於一種attention的變體,如果要使用多個attention,通常是使用concat的方式,整個模型結構將會成倍變大。在2018KDD上,南洋理工大學提出了一種Multi-Cast Attention Network,簡稱MCAN模型,論文面對的問題是QA,一樣可以擴展到query和doc的文本匹配中。模型通過多視角的attention新框架來解決這個問題,如圖4.26所示:

圖4.26 MCAN模型框架

從整個模型框架來看可以分成5層:① input encoder層;② co-attention層;③ multi-cast attention層;④ LSTM encoder層;⑤ 輸出層

input encoder層

首先,將兩段文本query和doc分別通過預訓練得到的word embedding進行映射後,得到各自的embedding向量,每個term的embedding size爲d。然後通過highway encoder進行映射。這裏的highway encoder類似於一種門機制,用來控制當前輸入的每個term流入到下一層的信息多少。

比較經典的一個highway表達如下,給定x,得到的Highway encoder輸出y:

其中H爲RELU,T爲sigmoid函數,WH和WT爲待訓練的參數,維度爲r*d。

co-attention層

對於query中第i個term以及doc中第j個term的匹配分數sij,論文中使用經過F映射後的向量點積如下:

其中F(.)可以採用簡單MLP網絡,另外這裏也可以採用雙線性映射或者concat的方式得到sij的值。對query中的lq個word和doc中的ld個term兩兩進行上述計算,可以得到一個lq*ld的匹配矩陣。

由於每個query和doc的輸入長度都不一致,因此需要通過attention pooling機制做映射,論文提出了4種不同的attention方法

a. max pooling最大池化

對於query的第i個term,選擇和doc中所有lb個word在交互矩陣中最大的值來代表其重要性,相當於是在第i行選擇最大的值,所以是col-wise的max pooling;同理對於doc來說是row-wise操作:

b. mean pooling平均池化

對於query的第i個term,選擇和doc中所有lb個word在交互矩陣中的平均值來代表其重要性,因此是col-wise的mean pooling:

c. alignment pooling對齊池化

把attention機制看成是一種軟對齊 ( soft align ),思想和4.2.2講到的DecAtt模型一致,將query中第i個term與doc中每個term ( 一共lb個 )分別求權重,然後加權求和,就可以得到第i個term的加權向量di’;同理可以得到doc向量b中第j個term的加權向量qj’。

d. intra attention內部注意力

對於query裏的每個term都計算與query裏所有term的交叉權重並做歸一化,最終每個term都是query裏所有term的加權向量表達;同理,對於doc裏的每個term也做同樣的操作,得到每個term的加權向量表達。由於該步驟都是在query和doc內部計算,因此也稱爲self-attention。

multi-cast-attention層

對於co-attention層得到的不同表示側重點不同,因此在這一層爲了是爲了將不同的attention進行融合,同時控制參數複雜度。該層也是整個模型MCAN ( Multi-Cast-Attention Network ) 的核心所在。

a. casted attention

對於query和doc的表示用${\bar x}$表示,通過前一層co-attention得到的表示用x表示,對兩個向量的編碼,分別用concat、哈達碼積、以及minus不同的方法表示,分別得到fc、fm和fs如下所示:

這裏的Fc表示的是不同的壓縮函數。

b. 壓縮函數

對於前面講到的Fc,目的是爲了將不同的兩個向量進行壓縮表示,具體有三種表達方式如下:

Ⅰ. Sum Function(SF)

Ⅱ. Neural Network(NN)

Ⅲ. Factorization Machines(FM)

對於不同的attention casts之間,由於捕捉的是不同的是attention,模型之間並不共享權重。

c. multi-cast表示

對於每個query-doc的pair對,都分別計算max pooling、mean pooling以及alignment pooling。對於query和doc本身則使用intra attention,如圖所示。每種attention機制都可以得到一個3維的向量 ( 代表concat、點積和minus的3個輸出值fc、fm和fs ),並且和原始的word embedding concat後進入下一層。

LSTM encoder層

前一層得到的的表示再經過一層LSTM來學習得到序列之間的關係:

注意這裏對query和doc都應用上述的LSTM公式,且LSTM的模型參數在query和doc之間是共享的。LSTM的每個隱層的輸出h1,h2,h3,…,hl之後得到的是不定長的輸出,作者使用了mean pooling和max pooling並把結果concat起來,稱爲Mean-Max操作,對query和doc都得到一個固定維度的輸出向量xq和xd

輸出層

前面得到query和doc的最終表示xq和xd後,經過向量點積、相減並且經過兩層的highway network H1和H2後得到prediction 的輸出:

最終的輸出經過一層softmax得到匹配分數:

總結下MCAN模型的特點:

  • 輸入層通過highway encoder將原始的embedding經過編碼輸入下一層
  • attention層分爲兩部分co-attention以及multi-cast attention。對於co-attention層對於每個query-doc的pair對,使用max pooling、mean pooling以及alignment pooling三種attention機制,對query和doc本身則使用intra-attention(self-attention)
  • 通過前一層的co-attention,query和doc可以得到3種attention:alignment-pooling,max-pooling以及mean-pooling。對於query和doc則各自得到intra-pooling,一共有5個attention,每個attention可以得到原始向量與attention交互後的向量,通過concat、哈達碼積和minus後,經過壓縮函數進入下一層
  • 前面5種attention得到的網絡經過LSTM編碼,並經過mean-max池化後得到固定維度向量,經過兩層的high way網絡後套上softmax輸出

4.2.4 HCRN模型

IJCAI2018年新加坡南洋理工大學提出的HCRN模型,提出了一種複數向量。該模型和4.2.3介紹的模型MCAN模型是同一個團隊,可以發現HCAN模型裏很多網絡結構都和MCAN都有相同的地方,整個框架如圖4.27所示。

圖4.27 HCRN模型框架

input encoding

對於給定的兩個句子a和b,每個句子由l個term組成,通過We矩陣將每個term映射到維度爲r的embedding空間:

每個term wi通過Wp映射並經過RELU激活輸出,得到新空間下的向量ui,維度從d變成了n:

接着,通過一個雙向的LSTM,得到句子中每個時刻的隱層輸出hi

其中,每個隱層的輸出爲d維的向量,由於是雙向LSTM,每個隱層的輸出包含前向向量和後向向量,因此d=2n。

vanilla co-attention機制

對於BiLSTM層的輸出,可以得到兩個句子的向量a和b,接着得到兩個向量的匹配矩陣s,維度爲la*lb,第一個句子第i個term和第二個句子第j個term通過F函數求向量點積匹配分:

其中F函數的設計採用前向神經網絡:

a. Alignment pooling

把attention機制看成是一種軟對齊 ( soft align ),思想和DecAtt模型一致,將query中第i個term與doc中每個word ( 一共lb個 ) 分別求權重,然後加權求和,就可以得到第i個word的權重βi;同理可以得到doc向量b中第j個word的權重αj

b. Extractive pooling

對於query和doc,分別採在column-wise和row-wise維度上進行max pooling,取最大值得到query和doc新的表示a’和b’:

其中S函數爲softmax函數。也就是說,對於query的la個word中的第i個word,選擇和doc中所有lb個word交互矩陣中最大的值來代表其重要性,相當於是在第i行選擇最大的值,所以是col-wise;同理對於doc來說是row-wise操作。

Hermitian Co-Attention

這一步個人認爲是主要區別於MCAN模型的地方。論文提出了將原始的向量映射到複數向量的方法,對於兩個複數向量的乘積,也稱爲Hermitian Inner product,定義如下:

其中ai=Re(ai)+Im(ai),左邊Re(ai)代表的是複數向量的實數部分,第二項IM(ai)代表的是複數向量ai的虛數部分,這裏i是虛數單位,是-1的平方根。${\bar {a_i}}$是ai的共軛複數 ( 兩個複數a和b,實數部分相等,虛數部分互爲相反數稱爲共軛複數 ),也就是ai= Re(ai)-Im(ai)。

a. 向量複數化

通過上一層得到的query和doc的embedding都是實數向量,爲了得到虛數部分向量,論文裏提到試過對虛數向量進行隨機初始化,或者直接用原始的word embedding,效果都不好,最終模型使用的是個非線性映射得到映射,對於query和doc分別得到Fproj(ai)以及Fproj(bj)。

b. 匹配矩陣計算

得到query第i個term虛數向量Fproj(ai),以及doc第j個term的虛數向量Fproj(bj)後,匹配分數通過計算兩者的Hermitian inner product,並取實數部分得到:

論文裏同樣也利用一個d*d維度的M矩陣來進行雙線性的複數向量計算:

總結來說,HCRN模型和MCAN模型均出自同一團隊,有許多的地方是相似的:

  • 第一層的input encoding,HCRN模型的word embedding經過線性映射然後通過雙向LSTM編碼得到表示;而MCAN是通過high way 網絡結構對word embedding進行編碼表示
  • 第二層都是co-attention,HCRN模型用了兩種attention機制:alignment pooling以及extractive pooling ( max pooling );而MCAN模型用的是4種:alignment pooling、max pooling、mean pooling以及self-attention。可以看出,HCRN模型少了mean pooling以及self-attention
  • 第三層開始HCRAN提出了複數向量化的概念,並計算複數向量化的Hermitian內積得到匹配分數,然後通過M矩陣映射後得到最終的匹配分數

4.2.5 BiMPM模型

IJCAI2017年提出的雙向多角度匹配模型Bilateral Multi-Perspective Matching模型,簡稱BiMPM模型,在關於文本匹配的很多任務上都取得了些不錯的成績。該模型最大的創新點在於,對於給定的query和doc,作者認爲在匹配過程中,不僅需要考慮query到doc,也應該考慮從doc到query的倒推關係,因此這是個雙邊 ( Bilateral ) 的關係。對於多角度,則是在考慮兩個句子query和doc的關係的時候,用了4種不同的方法,體現了多角度 ( Multi-Perspective ) 的思想。整個模型結構如圖4.28所示:

圖4.28 BiMPM模型框架

如上圖所示,整個模型可以分爲5層:① 詞表示層;② 上下文表示層;③ 匹配層;④ 聚合層;⑤ 輸出層

詞表示層 ( word representation layer )

這一層的主要目的是將原始的兩個句子P和Q中每個詞,映射成一個維度爲d的embedding向量。

其中P由M個word組成,Q由N個word組成其。對於P和Q中的每個word,由兩部分embedding構成,第一部分是word本身經過預訓練得到的embedding向量,第二部分是字符集別的embedding向量 ( character-composed embedding ),是由組成word的每一個字符向量經過LSTM編碼得到,取LSTM中最後一個隱層的輸出作爲字符向量。

上下文表示層 ( context representation layer )

這一層的目的是將上下文信息融入到句子P和句子Q的每一個time step中去,文中採用雙向LSTM對上下文進行編碼。對於第一個句子P(query),其前向和後向編碼表示如下:

其中pi表示句子P中第i個word的embedding輸入,hi表示i時刻 ( 第i個word ) 的隱層輸出,hi-1和hi+1分別表示前一時刻i-1和後一時刻i+1的隱層輸出。

對於第二個句子Q(doc),同樣採用雙向LSTM來表示:

其中qj表示句子Q中第j個word的embedding輸入,hj表示j時刻 ( 第j個word ) 的隱層輸出,hj-1和hj+1分別表示前一時刻j-1和後一時刻j+1的隱層輸出。

匹配層 ( matching layer )

這一步是整個BiMPM模型的核心創新,該層的目的是,在前一步提取了P和Q兩個方向的隱層輸出embedding表示後,在匹配層需要找到兩者的匹配關係。模型分別從P-Q以及Q->P兩個方向進行匹配。

首先,對於給定的兩個向量v1和v2爲了得到其匹配關係 ( 相似度、相關度 ),簡單的無參數做法是求向量點積,或者cosine相似度。爲了更好擬合兩者關係,論文引入了新參數W,其中v1和v2是d維向量,W是一個l*d的參數矩陣,通過訓練得到,其中l是視角 ( perspective ) 的數量,類似CNN中的filters概念。

通過參數W以及擬合函數fm ( 後續會講到如何設計 ),將原始的兩個向量從d維映射得到一個l維的向量m:

其中m中的每一個元素mk(k=1,2,3…,l)由v1和v2經過Wk矩陣的映射向量求cosine得到其餘弦匹配分數如下:

這裏Wk表示的是W矩陣的第k行。

對於fm函數,在該文中給出了四種匹配策略,分別爲Full-Matching,Maxpooling-Matching,Attentive-Matching,Max-Attentive-Matching,如圖所示:

圖4.29 BiMPM 4種不同的matching方法

a. full matching

以第一個句子P爲例,如圖a中左邊的橙色條框,對於P中的每個前向單詞${\vec h}_i^p$ ( 對於後向單詞則爲${\overleftarrow h}_i^p$),都和Q中所有N個隱層的最後一個隱層輸出${\vec h}_N^q$( 對於後向則爲${\overleftarrow h}_1^q$) 進行匹配,通過fm網絡擬合得到前向和後向兩個維度爲l的向量mifull。如圖a中a最右側的藍色條框爲前向最後一個隱層的輸出:

同理的,對於Q中的每個單詞,也依次得到和P中前向LSTM中最後一個以及後向LSTM中第一個隱層輸出的匹配向量。

總結來說,full-matching方法在計算當前匹配的時候,只用到後向LSTM隱層中的最後一個隱層以及前向LSTM隱層中的第一個隱層,中間的隱層信息並未利用。對於P和Q中的每個word都需要和對方進行兩次計算,因此時間複雜度爲O(2*M+2*N)。

b. max-pooling matching

以第一個句子P爲例,對於P中的每個前向單詞${\vec h}_i^p$(對於後向單詞則爲${\overleftarrow h}_1^p$),如圖b中最左邊的橙色條框,都和Q中所有N個隱層輸出一一計算,每個向量對通過fm映射後可以得到N個l維度的匹配向量後,對這N個匹配向量進行element-wise 的最大值,也就是在l個維度中的每個維度,從N個向量當前這個維度選擇最大值,相當於是對N個隱層的max-pooling操作,最終得到前向和後向兩個維度爲l的向量mimax

同理,對於Q中的每個單詞,也依次得到和P中的前向LSTM中M個word通過element-wise 最大池化得到的前向匹配向量,以及和P中的後向LSTM中M個word通過element-wise最大池化得到的後向匹配向量。

總結來說,max-pooling matching在計算當前匹配的時候,利用到了所有隱層的所有信息,然後對向量中每個維度,從所有的word中的最大值作爲匹配分數。除了最大值的隱層信息,其他隱層信息也是沒有利用到。由於是P和Q每個word兩兩都需要計算,時間複雜度是k*M*N,k爲常數項。

c. attentive-matching

以第一個句子P爲例,對於P中的每個前向單詞${\vec h}_i^p$ ( 對於後向單詞則爲${\overleftarrow h}_1^p$ ),依次和Q中的所有單詞計算cosine餘弦相似度從而得到一個M*N的相似度矩陣。以P中第i個word和Q中第j個word爲例 ( 矩陣的第i行j列 ),其權重表達如下所示:

這裏得到的${\vec\alpha}{i,j}$和${\overleftarrow\alpha}{i,j}$分別爲${\vec h}_j^q$和${\overleftarrow h}_j^q$的前向和後向權重,整個句子Q的注意力向量爲其權重的加權表達:

分母對權重求和是爲了保證權重的歸一化。最終,將P中第i個word,與句子Q的注意力向量通過fm函數得到前向和後向兩個維度爲l的匹配向量miatt

同理,對於Q中的每個單詞,也依次通過計算P中各個word的權重,得到對應的P中每個詞的權重後,通過P中每個詞的 weight-sum可以得到P的注意力向量。最終計算Q中每個單詞與P中對應的注意力向量,得到前向和後向兩個維度爲l的匹配向量。

總結來說,attentive-matching方法充分利用了每個隱層的輸出計算權重進行weight-sum。

d. max-attentive matching

該方法和attentive-matching前面計算權重的方法一致,不一樣的地方在於,attentive-matching是用weight-sum得到注意力向量,而max-attentive matching方法是用權重裏最高的那個向量來得到注意力向量。

還是以第一個句子P爲例,對於P中的每個前向單詞${\vec h}_i^p$ ( 對於後向單詞則爲${\overleftarrow h}_1^p$ ),依次和Q中的所有單詞計算cosine餘弦相似度,最終得到的相似度矩陣(M*N)中,第i行j列元素表達如下:

這一步之前和attentive-matching是一致的。不同地方在於,對於i所匹配的N個權重,選擇權重最大的作爲注意力向量。

以上4種不同的匹配策略捕捉到的信息各自不同,在論文中爲了提升模型擬合精度,在實際應用中是4種attention策略的疊加,每個策略中每個word得到一個l維的向量,最終得到4個匹配向量concat起來

對於句子P,得到一個M*4l的矩陣 ( M個time-step,每個time-step是一個4*l維度的向量 ),對於句子Q,得到一個N*4l的矩陣 ( N個time-step,每個time-step是一個4*l維度的向量 )。

聚合層 ( aggregation layer )

這一層的目的,是將兩個句子P和Q匹配得到的向量,聚合成一個固定長度的匹配向量。文中依然使用了雙向LSTM網絡去擬合,如圖2中aggregation layer中的4個綠色向量所示。從P->Q前向和雙向得到兩個向量,從Q->P雙向和前向各自得到一個向量,最終4個向量concat起來作爲下一層的輸入。

預測層 ( prediction layer )

文中使用兩層MLP後,最後softmax作爲概率輸出。

總結來說,BiMPM模型特點如下:

  • 輸入層embedding對比大多數的word embedding,引入了character embedding,每個word的embedding表達是預訓練的embedding和字符embedding經過LSTM編碼後得到的表示組合而成

  • 引入了上下文表示層:用雙向的LSTM來對P和Q的每個word進行編碼,每個word可以得到前向和後向的兩個隱層輸出表示

  • 多視角關係:對於給定的兩個d維向量v1和v2,通過l*d的參數W通過網絡fm進行映射,各自得到l維的向量,l類似於CNN中的filter,l的維度就代表了多視角的維度。

  • 雙向計算關係:所有的計算都是對稱的,從P對Q的各種網絡結構,一定能看到Q對P也會有,因此是個雙向關係

  • 多種注意力匹配關係:對於兩個句子P和Q的關係,提出了4種不同的attention計算方法,分別是:

    a. Full-Matching:以P->Q計算爲例,對P中每個word,和Q中最後一個 ( 前向LSTM ) 和第一個 ( 後向LSTM ) 隱層的word分別通過fm網絡計算後,得到該word對於Q的兩個維度爲l的前向和後向匹配向量

    b. Maxpooling-Matching:以P->Q計算爲例,對P中每個word,和Q中每個word經過fm網絡映射後得到N個維度爲l的前向和後向向量,對l維度的每一維選擇最大 ( element-wise max-pooling ) 值,得到該word對於Q的兩個維度爲l的前向和後向匹配向量

    c. Attentive-Matching:以P->Q計算爲例,對P中每個word,和Q中的每個word計算前向和後向cosine相似度,然後計算該word對於句子Q的注意力向量後,兩個向量通過fm網絡映射計算,可以得到兩個維度爲l的前向和後向匹配向量

    d. Max-Attentive-Matching:以P->Q計算爲例,對P中每個word,和Q中的每個word計算前向和後向cosine相似度,然後用相似度中的最大值作爲Q的注意力向量,這兩個向量通過fm網絡映射計算,可以得到兩位維度爲l的前向和後向匹配向量

  • 計算複雜度高:如此複雜的網絡結構,很多計算之間又是串行的,可想而知,對於大規模的文本匹配計算速度很慢

4.2.6 ESIM模型

ESIM模型在衆多短文本匹配比賽中大殺四方,表現十分出色。ESIM模型全稱爲"Enhanced Sequential Inference Model",增強序列推斷模型,是加強版的LSTM。論文中解決的雖然是premise和hypothesis的關係,但是我們可以應用到query和doc或者其他兩段文本關係之中。對比以往傳統的LSTM模型非常複雜的網絡設計,ESIM模型通過精細的序列式網絡設計,以及同時考慮局部推斷和全局推斷的方法來達到更好的效果。整體框架如圖4.30所示。

圖4.30 ESIM模型網絡結構

整個模型結構主要有3部分:① input encoding層;② 局部推理層;③ 推理組合層。

input encoding

對於給定的兩個句子a和b ( 代表前提premise和假設hypothesis ),分別由la和lb個word組成,其中每個word爲維度爲l的embedding向量,一般由預訓練得到:

作者使用雙向LSTM作爲基礎模塊,用${\bar a}_i$表示句子a中第i個時刻的隱藏層輸出,用${\bar b}_j$表示句子b中第j個時刻的隱藏層輸出,表示如下:

除了常規的Bi-LSTM之外,文中還使用了Tree-LSTM來捕捉序列關係。在每個t時刻,具體結構如下:

  • 當前輸入除了xt,還有前一時刻的隱層輸入ht-1的左右葉子結點ht-1L以及ht-1R
  • 輸入門input gate 以及輸出門output gate依然只有一個,兩個門的輸入都包括當前輸入xt、前一時刻隱層ht-1的兩個葉子結點ht-1L和ht-1R
  • 遺忘門forget gate:和傳統的LSTM不同,有兩個,分別是left forget gate和right forget gate,輸入和前面兩個門一樣,分別是當前輸入xt、前一時ht-1L和ht-1R
  • 細胞狀態:輸入來自前一時刻細胞狀態左右兩個節點ct-1L和ct-1R,而左右兩個遺忘門forget gate分別控制需要左右兩個細胞狀態需要保留的信息。

圖4.31 tree-LSTM網絡結構

整體的公式表達如下所示:

其中Wf,Wi,Wc,Wo是一個d*l的待訓練參數;U是d*d的待訓練參數矩陣。這樣,原始的兩個句子輸入通過word embedding之後,通過左邊一個BiLSTM,右邊一個tree-LSTM編碼之後輸入到下一層網絡

局部推理層local inference modeling

在很多相關性模型中,都使用硬對齊或者軟對齊的方式來建立query和doc的關係。在前面4.2.2中的DecAtt模型中就是用attention機制來建立soft-align軟對齊。而在ESIM模型中,作者延續使用了DecAtt的軟對齊方式,對於給定的query句 a,以及doc句b,建立兩個句子之間每個word兩兩的向量點積作爲相似度:

在原始的DecAtt模型中,作者使用的是例如MLP來計算F(ai) 以及F(bj)進而計算相似度;而在ESIM模型中,使用的是LSTM和tree-LSTM得到兩個句子的表示後再計算相似度矩陣。得到eij後,query中第i個word的表示爲doc中每個單詞的weight-sum;也就是說${~ a}_i$表示b中每個詞與${\bar a}_i$的相關程度。同理,假設句子b中第j個word的表示爲句子a中每個單詞的weight-sum表示,${~ b}_j$表示a中每個詞與${\bar b}_j$的相關程度。

得到局部推斷後,爲了增強信息,分別使用了向量相減、向量點積、最終4個向量concat起來,ma和mb分別表示增強後的premise和hypothesis。

推理組合層

a. composition layer

通過前一層局部推理建模之後得到的向量ma和mb進入當前的推理組合之後,作者依然使用了Bi-LSTM和Tree-LSTM來捕捉兩者關係。對於Bi-LSTM,公式和第一層input encoding的一致,而對於Tree-LSTM來說,表示如下:

這裏使用了函數F來控制模型複雜度,F函數在文章中作者使用了一層的前向神經網絡並且經過RELU激活輸出。

b. pooling

通過前面的composition layer兩個LSTM網絡編碼得到的向量是變長的,query句子a得到一個長度爲la的向量,doc句子b得到一個長度爲lb的向量,在這層pooling層目的是爲了得到一個固定長度的向量。

爲了最大程度捕捉信息,論文中同時使用了average pooling和max pooling,並將兩種pooling得到的向量concat起來,在實驗中證明比單純的sum pooling效果要好,公式如下:

注意到上述最後一個公式,其實論文作者也用到了在Tree-LSTM中根節點的隱層狀態一起concat起來,只是在上述公式中沒有體現。

最終得到的向量v再經過全連接網絡後,最後接一個softmax輸出,訓練過程使用多分類的cross-entropy損失函數。

總結整個ESIM模型特點:

  • 引入了Tree-LSTM,是加強版的LSTM。輸入門和輸出門都只有一個,輸入包括當前輸入,以及前一時刻隱層的左右葉子結點;遺忘門有左右兩個,每個遺忘門的輸入都包括當前輸入以及前一時刻隱層的左右葉子結點;細胞狀態有一個,輸入爲前一時刻的左右兩個細胞狀態
  • 局部推理層中對於匹配矩陣的做法區別於DecAtt模型使用MLP去提取query和doc兩個句子的做法;而是用兩種LSTM提取編碼後計算加權向量表達。得到加權向量表達後,和原始向量進行乘積和相減後,總共4個向量concat起來,相當於是豐富了提取到的信息,作爲下一層的輸入

4.2.7 DIIN模型

DIIN模型是在ICLR2018上提出的要用於自然語言推理任務的模型,解決的是premise和hypothesis的關係,同理我們可以應用到query和doc或者其他兩段文本關係之中。作者在這篇論文中引入了一種新的網絡-交互推理網絡 ( interactive inference network,IIN ),而通過用attention更密集的交互矩陣可以得到更豐富的語義信息,因此該模型名稱爲密集交互推理網絡 ( Densely Interactive Inference Network,簡稱DIIN )。

模型可以分爲5個部分,分別是嵌入層、編碼層、交互層、特徵抽取層以及輸出層,整個網絡如圖4.32所示:

圖4.32 DIIN模型網絡結構圖

嵌入層

在embedding層中,論文中同時將單詞級別embedding、字符級別特徵的embedding以及句法級別的特徵embedding信息concat起來作爲每個詞的embedding。

a. word embedding

使用的是glove預訓練得到詞向量進行初始化,並在模型訓練過程中允許更新。

b. character embedding

引入character embedding的目的,是爲了解決未登錄詞無法得到word embedding的時候,字符級別的embedding能夠提供一些額外的信息。這裏的方法是先經過1維的卷積核進行卷積之後,再通過Max pooling得到character embedding。其中卷積覈對與P和H是共享的。

c. 語法特徵syntactical feature

對於語法的特徵,包含了兩個方面的信息,一個是詞性特徵 ( POS ),另一個是二進制精確匹配特徵 ( EM )。

通過上述4種embedding ( 語法特徵有pos和em兩種embedding ),最終的維度:

d=dword+dchar+dpos+dem,對於query和doc來說維度一致。

最終,query的表示P是一個維度爲p*d的矩陣 ( p爲query的單詞個數 );而doc的表示H是一個維度爲h*d的矩陣 ( h爲doc的單詞個數 ),d爲隱層的維度。

編碼層encoding layer

編碼層的主要作用是將第一層embedding layer得到的特徵進行融合編碼得到新特徵。對於前面得到的P和H,經過兩層的highway network後,得到${\hat P}$和${\hat H}$。

爲了進一步提取信息,論文中使用self-attention機制,同時利用詞序和上下文信息進行編碼。以query句子P的第i個term爲例,得到的加權向量表達${\bar P}_i$如下:

其中第一個公式Aij個人覺得原文應該有誤,括號應該包含${\hat P}_j$,求的是${\hat P}_i$和${\hat P}_j$兩者的關係,論文中使用如下公式表達:通過將兩個向量以及向量的點積三個向量concat後,變成一個維度爲3d的向量,並通過一個簡單的線性變化得到兩個向量的匹配分數,也即attention分數,表示如下:

其中wa是一個3d的參數向量,通過訓練得到。而上述第二個公式得到的是P中第i個term的加權表達,分母做了歸一化。同理,我們也可以得到關於doc句子H的加權表達。

這樣,P中第i個term的原始向量${\hat P}_j$,以及經過self-attention的注意力向量${\bar P}_i$,兩個向量一起concat起來,作爲fuse gate的輸入。這裏fuse gate作用類似於dense net:

其中W1,W2,W3位一個2d*d的參數矩陣,b1,b2,b3都是d維的參數向量,W和b都通過訓練得到。

同理的方法可以得到doc句子的表示。不過論文認爲P和H的fuse gate權重是不共享的,目的是爲了學習到P和H語法信息中的不同點。

交互層interaction layer

本層對於前一層得到的兩個向量中每個term,兩兩求匹配分數:

這裏beta函數學習的是兩個向量的交互匹配分數,可以有多種表達,如cosine,點積,MLP網絡等,論文中用的是簡單的向量點積:

特徵抽取層feature extraction layer

本層在論文中沒有太詳盡到公式的介紹,大體意思是對於前一層得到的交互矩陣I,利用resnet進行特徵提取,個人感覺也不是太關鍵,實際在使用中該層可以考慮不用。

輸出層output layer

輸出層使用簡單的一個線性層以及softmax多分類進行分類。

總結來說,DIIN模型特點如下:

  • 嵌入層對embedding的處理較爲精細,除了預訓練的word embedding,還包括字符級別的embedding,以及語法層面的詞性特徵 ( POS ) 和二進制精確匹配特徵 ( EM )
  • 編碼層先是用high way網絡分別提取query和doc中每個word的向量後,再通過self-attention,提取每個word的加權向量,然後兩個向量通過resnet的思路,引入fuse gate,分別提取原始向量的一部分,以及加權向量的一部分作爲最終每個word的表達
  • 前兩層都還只是query和doc各自的信息表示,特徵交互層通過query中每個word和doc中每個word的向量點積得到交互矩陣,然後通過特徵提取層的dense net進行特徵提取,最終通過輸出層的線性網絡並利用softmax輸出概率

4.2.8 MwAN模型

2018年IJCAI提出了的Multiway Attention Network,簡稱MwAN模型,模型利用多種attention方式進行融合,整體框架如圖4.33所示:

圖4.33 MwAN模型網絡結構

從圖可以看出,整個模型分爲:① encoding layer;② multiway matching;③ inside aggregation;④ mixed aggregation;⑤ prediction layer

encoding layer

給定兩個句子Q和P,分別由N個term和M個term組成,首先通過預訓練得到的embedding得到Q和P各自的word embedding表示。接着,使用雙向的GRU模型,得到Q和P的各個時刻隱層輸出:

multiway matching

上一層編碼層得到Q和P的GRU隱層輸出後,需要進行信號的匹配,整個表示如下所示:

其中htp表示P中第t個word的表示,hq表示Q的所有M個word的表示,fk爲使用的匹配網絡結構,qtk爲最終得到的P中第t個word與Q匹配後分數。

對於fk的設計,在該論文中作者提出了4種不同的方法,因此該層稱爲multiway matching,分別爲concat, bilinear, dot和minus,每種計算attention的公式整體範式如下:第一步,P中第i個word與Q中的每個word,以第j個爲例,兩個向量,挨個計算原始的權重,這裏兩個向量的交互分爲concat、bilinear、doc和minus,得到第j個word的原始權重sjt;第二步,對於Q中的所有N個word進行歸一化,得到每個word的歸一化權重;第三步,通過前一步得到的Q的每個word的歸一化權重,乘以該word本身的向量表示,得到最終P中第i個word的加權向量表達。

a. concat attention

通過concat的方式,將hjq經過Wc1矩陣映射後的向量,以及htp經過Wc2矩陣映射後的向量concat一起。爲了保證非線性進行tanh非線性變化後,再通過vc向量進行映射得到原始權重sjt,最終得到Pi關於Q的歸一化加權向量表達qtc。這裏待學習參數爲Wc1, Wc2和vc

b. bilinear attention

通過一個Wb矩陣,對兩個向量hjq和htp進行雙線性變化得到原始權重sjt,最終得到Pi關於Q的歸一化加權向量表達qtb。這裏待學習參數爲Wb

c. dot attention

通過兩個向量 hjq 和 htp 的點積 ( 哈達碼積 ),維度和原始維度保持一致,然後通過非線性變化tanh映射後,再經過vd的線性變化後得到原始權重sjt,最終得到Pi關於Q的歸一化加權向量表達qtd

d. minus attention

通過兩個向量hjq和htp的向量相減,維度和原始維度保持一致,然後通過非線性變化tanh映射後,再經過vm的線性變化後得到原始權重sjt,最終得到Pi關於Q的歸一化加權向量表達qtm

inside aggregation

在aggregation層分爲兩層,第一層是對於前面matching layer講到的4種不同的attention方法,求各自內部的aggregation,因此稱爲inside aggregation。還是以P中第t個word爲例,輸入是將P中第t個word本身的表達 ( 雙向GRU的輸出 ) htp,以及前一層matching layer得到的關於Q的加權向量表達,以concat attention的輸出qtc爲例 ( bilinear、dot和minus分別爲qtb, qtd, qtm ),兩個向量concat起來得到xtc

第二個公式爲了得到xtc的重要性,通過Wg的映射再經過非線性sigmoid輸出其重要性,相當於是gate的作用,然後通過第三個公式得到重要性表達的xtc*。接着通過一個雙向GRU得到前向和後向的表達:

最終,對於P的第t個word,以concat attention爲例,可以得到其輸出爲:

同理,當用bilinear、doc和minus attention,分別可以得到htb,htd,htm

mixed aggregation

將上述4種不同的attention計算得到的輸出htc,htb,htd,htm在這一層融合,稱爲mixed aggregation。首先通過兩個矩陣W1進行映射,下述公式第一個式子的va可以認爲是bias。第二和第三個式子通過計算4種attention各自的歸一化權重,得到4種不同attention的加權向量表達如下:

注意這裏的attention針對的是上述concat、bilinear、dot和minus4種不同計算方式的。然後繼續通過一個雙向GRU進行擬合,得到每個時刻t在在前向和後向GRU隱層時刻的輸出:

接着將前向和後向的輸出進行concat得到P中t時刻的隱層輸出hto

prediction layer

這一層的目的,是爲了將原始的不定長P轉換成定長的向量。論文中首先得到關於Q的歸一化加權向量表達:

注意這裏的attention pooling針對的是Q中的N個word。利用得到的rq向量可以得到P向量的最終表達:

注意這裏的attention pooling針對的是P中的M個word。最終,將rp後面介入一個MLP全連接網絡後得到輸出概率pi,通過cross entropy損失函數進行求解。總結整個MwAN模型特點如下:

  • 第一層的編碼層通過雙向GRU,對query和doc中的每個word進行編碼,每個word可以得到前向和後向GRU中每個隱層的輸出表示
  • 第二層的Multiway Matching是MwAN模型的核心所在,對於query中每個word,和doc中的每個word都進行不同attention計算,分別有concat、bilinear、minus以及dot product,然後進行attention歸一化,可以得到query中每個word關於doc的注意力向量;同理也可以得到doc中每個word關於query的注意力向量
  • 第三層的inside aggregation是對於query和doc在第二步得到的4種注意力向量,每種attention向量,與各自在第一步得到的原始向量表示進行內部融合,最終得到4種attention的向量表示
  • 第四層的mixed aggregation對第三層得到的4種不同的attention向量進行融合,通過線性變化,tanh非線性映射,以及歸一化加權後,再通過雙向GRU,得到前向和後向的兩個融合向量
  • 第五層將前面得到的不定長向量進行pooling操作變成定長的向量輸出最終概率

4.2.9 HAR模型

WWW2019提出的層次注意力檢索模型 ( Hierarchical Attention Retrieval ),簡稱HAR模型。在搜索和信息檢索中,一般query和doc是不等長的,作者將query看成多個word組成,而doc由多個句子組成,每個句子又有多個word。論文中因此在query內部的word之間的attention、doc內部每個句子中每個word之間的attention、doc內部句子和句子之間的attention、以及query和doc之間的attention,由此構建了許多不同層次的attention交互,因此是層次注意力的檢索模型,整體模型框架如圖4.34所示:

圖4.34 HAR模型網絡結構

HAR模型按照結構可以分爲5層:① word embedding層:② encoder層;③ query-doc交叉attention層;④ query內部attention層;⑤ doc內部不同sentence的attention層;⑥ 輸出層。

word embedding

輸入層的作用是將query和doc中的每個word都映射成embedding。對於query由m個word組成,表示如下左;doc由l個句子表示,每個句子由n個word組成,表示如下右公式 :

encoder層

encoder編碼層作用是將第一層輸入層通過該層進行信息的編碼,文中使用的是雙向RNN ( bi-RNN ) 進行信息提取,對比原始RNN,GRU能解決長依賴導致的梯度下降,而一般來說doc都是一些短句子不需要用到LSTM,因此論文中用的是雙向GRU。

a. query encoder

query本身只有一個句子,由m個word組成,

第t個時刻 ( query中第t個word ) 的隱層輸出utq由上一時刻隱層輸出uqt-1和當前輸入etq表示,可以得到一個m*H的向量,H爲隱層的維度:

b. doc encoder

對於doc一般來說都比query長,由多個句子組成,所以論文中使用了句子層級的雙向bi-GRU encoder進行表示。對於doc中給定的一個句子i,將該句子的word embedding作爲輸入,可以得到該句子一個n*H的向量,H爲隱層的維度:

doc中有l個句子,可以得到l*n*H的表示:

query和doc的交叉attention層

通過前面query和doc的encoder編碼提取信息後,交互層這裏需要做query和doc的交互信息提取。由於query和doc各自信息不同,論文中分別使用了query到doc的交互信息Q2D,以及doc到query的交互信息D2Q。

首先計算query和doc的相似度矩陣S,維度爲n*m。對於給定的doc中第i個句子,query輸入Uq,則S矩陣中第x行 ( 第i個句子中第x個word ),第y列 ( query中第y個word ) 的表示如下:

對S矩陣的每一行進行softmax,以第x行爲例,相當於求doc中第i個句子每個word對於當前query第x個word的權重,可以得到D2Q的相似度矩陣。同理,對S矩陣的每一列進行softmax,以第y列爲例,相當於求query中每個word對於doc中第i個句子中第y個word的權重,可以得到Q2D的相似度矩陣:

最終doc->query以及query->doc的表達爲其相似度矩陣的加權向量表示:

通過cross attention之後,doc中的每個句子得到的是一個n*4H的矩陣Vid,其中n爲每個句子的word個數,4H爲每個word的embedding維度。

query 內部attention

爲了將不等長的query維度映射到固定維度,論文中使用了的self-attention機制,通過計算query中m個word中每個word不同的權重進行加權求和,表達如下:

其中第一個公式中,ctq爲第t個word的原始注意力權重,第二個公式中atq通過softmax得到歸一化後的注意力權重,第三個公式對m個word的向量進行加權求和,得到最終query的向量表達,維度爲H。

doc層級內部attention

doc中有l個句子,因此doc的attention設計分爲兩部分,分別是每個句子內部各個word級別的attention,以及每個句子級別的attention。

a. word層級的attention

對於③中得到的cross attention,doc中每個word的維度變成了4H。對於word之間的attention,和query的公式一致,以第i個sentence爲例:

最後一個公式xid爲第i個sentence中n個term的加權注意力向量,維度爲4H。

b. sentence層級的attention

直觀理解,doc中的l個句子中,每個句子對doc的最終共享應該是不同的,因此文中引入了第二層的attention,句子級別的attention,表達如下:

其中最後一個句子得到的是doc中l個句子的加權表達,維度爲4H。

輸出層

通過4和5得到的query和doc各自的輸出向量維度分別爲H和4H,維度不同,因此文中先經過一層的神經網絡對doc進行降維到H後,再通過query和doc的向量點積得到其匹配分數,最終再通過一層的神經網絡得到最終的惡匹配分數:

總結來說,整個HAR模型結構如下:

  • 輸入層和編碼層用雙向GRU提取query以及doc中每個word的隱層編碼
  • query內部的attention比較簡單,對自身m個word使用self-attention,得到每個word的歸一化權重後,對m個word進行加權得到加權注意力向量,維度爲H
  • 把doc看成是多個句子組成,在得到doc的attention之前,先計算query和doc的匹配。分別計算query->doc的矩陣以及doc->query的矩陣,然後doc的每個句子由本身的向量, D2Q的向量,本身向量和D2Q以及Q2D分別乘積後,這4個向量concat起來作爲doc中每個句子的表達,維度爲4H
  • 有了前一步doc中每個句子的表達後,doc內部的attention分成兩種,一種是句子內部每個word的self-attention,這一步和query的計算是一致的,可以得到每個句子的表達;另一種是每個句子的self-attention,把每個sentence看成前一種的每個word,計算方式是一致的,最終可以得到維度爲4H的doc的表達
  • 在輸出層通過一層先行網絡對doc進行降維到H後,和query進行哈達碼積後再通過一層神經網絡輸出最終的匹配分數

4.2.10 HiNT模型

2018SIGIR上中科院提出的HINT模型,全稱Hierarchical Neural maTching model,和HAR模型大體思路一致,把doc看成多個段落 ( passage ) 組成,每個段落又有多個word組成,因此在word和word之間,passage之間,passage之間的word的attention又構成了多層次的關係,因此成爲多層次的神經網絡匹配模型,整體框架如圖4.35所示:

圖4.35 HiNT模型框架

整個模型結構核心可以分爲兩層,局部匹配層以及全局決策層。

局部匹配層local matching layer

對於給定的query和doc,doc可以看成由K個段落 ( passage ) 組成的,每個段落用Pi進行表示:

因此,給定query Q,doc中每個段落和query的匹配分數用函數f來擬合:

核心問題在於如何表示Pi,以及匹配函數f該如何設計。對於第二個問題匹配函數f的設計可以有多種選擇,比如基於統計的,或者基於神經網絡的等。爲了儘可能表示語法匹配以及term的重要性,論文中作者選擇了固定窗口來表示doc中的段落,並且採用空間GRU模型來擬合query和doc的匹配關係,如圖4.36所示:

圖4.36 spatial-GRU對query和passage的捕捉

a. 輸入編碼層

對於給定的query和doc,query由M個term組成,doc由N個term組成:

其中,doc由多個passage組成,而每個passage也被分成了固定窗口大小爲L的表示:

b. 深度相關性匹配模型DRMN

對於給定的query和doc中給定的每個passage,將其表示爲term vector,爲了得到query和passage的相似度矩陣,文章提出了兩種計算方法,分別是cosine以及xor方法,可以發現其實和4.1.2提到的MatchPyramid模型裏的匹配方法是一致的。

第一種方法cosine相似度,對於query中第i個term,passage中第j個term計算其cosine相似度如下:

第二種方法精確匹配,相當於是個indicator,對於query中第i個term和passage中第j個term,只有兩者完全相同,也就是精確匹配纔等於1,表達如下:

因此,query和passage可以學習得到cos以及xor兩個相似度矩陣,在論文中稱爲matching tensor,如圖所示。爲了學習得到term重要性,作者把原始query和passage中對應的term表達也加了進來,concat到一起如下:

這裏的xi和yj是query中原始的第i個term向量wiQ,以及passage中第j個term向量wj§經過一個轉換矩陣Ws轉換得到,其中Ws通過訓練得到:

注意到這裏xi和yj是共享Ws的。因此,對於k個passage,和query構成了k個pair對,分別可以得到k個sxor的匹配tensor以及k個scos的匹配tensor。

從前面學習得到的匹配tensor:scos和sxor後,論文使用了spatial GRU,也就是2維的GRU來擬合學習query和passage的關係,可以發現和4.1.3裏的Match-SRNN模型是一致的:

其中,第(i,j)個隱層狀態,分別由左、上、左上三個隱層狀態(i-1,j)、(i,j-1)、(i-1,j-1),以及當前匹配分數Sij組成。最後一個隱層的狀態HM,L作爲匹配層的輸出。cos和xor兩個匹配向量concat後,以及兩個方向的GRU concat一起作爲最終的輸出:

全局決策層global decision layer

從局部匹配層得到的向量後經過全局決策層進一步捕捉交互信息。論文中提出了3種不同的模型,分別是獨立決策 ( ID ) 模型、累積決策 ( AD ) 模型、以及決策和累積模型聯合的模型。

a. 獨立決策模型 ( Independent Decision Model )

從最終的k個embedding向量中,用k-max pooling的方式,對於K個向量的每個維度,從中選擇最大的k個值。以圖3爲例,隱層維度d=4,k=2,從隱層4個維度中,各選擇最大的2個值,如橙色、黃色、藍色、綠色各2個,然後concat到一起作爲下一層的輸入,如圖4.37所示。

圖4.37 獨立決策模型

b. 累積決策模型 ( Accumulative Decision Model )

和ID model最大的不同,是在k-max pooling之前,引入了序列模型來捕捉K個輸入的embedding向量的關係,論文使用了雙向LSTM來擬合這種關係,如圖4.38所示。

圖4.38 累積決策模型

c. 混合決策模型Hybrid Decision Model

HD模型同時使用了ab中提到的模型,AD是直接提取K個math tensor向量eK的k-max pooling,CD是在eK後接了雙向LSTM後提取k-max pooling,在混合使用時,由於後者經過了LSTM映射,爲了保證公平,在原始的eK向量後也通過一個非線性映射tanh得到vt。最終從非線性映射的v1, v2, v3,…,vK向量,以及LSTM之後的隱層輸出h1,h2,…,hK通過k-max pooling提取得到固定維度的向量,再通過MLP映射得到匹配分數。

圖4.39 混合決策模型

總結Hint模型,特點如下:

  • query看成M個word組成,doc看成K個passage ( 可以理解成句子 ) 組成,每個passage又由L個word組成。
  • 模型分爲局部匹配層和全局決策層
  • 在局部匹配層中,對query以及doc中的K個passage兩兩進行計算,可以得到K個m*L個矩陣,作者分別用了xor和cosine兩種計算方法,分別代表精確匹配,以及一般的匹配。然後作者使用spatial-GRU對這2K個匹配度矩陣,GRU的最後一層輸出作爲局部匹配層最終的輸出匹配信號
  • 全局決策層對於局部匹配層,提出了3種模型,AD模型的k-max pooling、ID模型接入了LSTM後的k-max pooling,以及HD模型同時混合了AD和ID模型。

4.2.11 MIX模型

KDD2018上騰訊MIG提出了一種混合通道的文本匹配方法,Multichannel Information Crossing, 簡稱MIX,對於兩個句子之間的全局匹配,以及句子中語素級別的局部匹配,論文分別進行精確的信息提取和融合來提升整體的匹配,整體框架如圖4.40所示:

圖4.40 MIX模型網絡框架

整個模型框架可以分爲3部分:局部匹配、局部和全局匹配,以及匹配信息的融合

局部匹配

在大多數文本匹配工作中,對於兩段文本的匹配,大多數都是先基於文本的term做word embedding,然後在word embedding的基礎上,比較兩段文本不同word之間embedding的相似度。文中指出這種方法通常來說只是語法層面的表示,無法表示更高層級的匹配。

圖4.41 word embedding的匹配度矩陣case

以圖4.41爲例,對於"place of interest"以及"senic spot"語法上是很相近的,但是如果從word embedding的相似度矩陣來看,兩者匹配度卻非常低。"all in"和"in all"字面上雖然包含的詞相同,但意思完全不同,如果簡單計算相似度矩陣如圖4.41中b所示。另外一個例子hard work和work hard語義也是同個意思,但是相似度矩陣也不同。

以上3個例子如果在原始的word embedding匹配階段就存在着這種鴻溝,後續再複雜的MLP網絡也是無法擬合好兩者的匹配關係的。因此,作者提出了將句子解析成不同粒度的文本片度,如一元分詞、二元分詞、三元分詞等,通過這種方法來找到文本中最適合表達語義的語義表徵。如圖4.42所示,兩段文本a和b分別切分成uni-convA、bi-convA、tri-convA;以及uni-convB、bi-convB、tri-convB。

圖4.42 文本A和B分別通過一元、二元和三元進行語義表示

在英文中,一般最小語法結構包含1-3個單詞,因此MIX模型使用了1維到3維不同的卷積來提取短語信息,如圖4.43所示:

圖4.43 2維和3維詞卷積

對於兩段文本text1和text2,分別使用卷積窗口大小爲m和n的卷積核。圖4.43顯示了使用2維的bigrams和3維的trigrams,灰色部分表示組成一個短語的概率更高。

其中zi(0)表示在embedding layer中第i個位置的unigram信息,zi(1)表示位置i的卷積輸出,其中m表示卷積核的滑動窗口大小。

局部和全局匹配

全局匹配需要依賴於局部匹配,而不同局部匹配對最終結果的影響不同,因此全局匹配在局部匹配的基礎上增加不同維度的attention機制。論文分別在term weight、詞性以及詞位置3個不同維度進行attention權重提取。

a. term weight

在原始的匹配矩陣中沒有考慮到句子中不同term的權重重要性。以QA匹配爲例,問題"What year did Lebron James win his first MVP",答案"Steven curry win his first MVP in 2014",明顯是bad case。但是在QA匹配矩陣中,由於是基於word embedding進行相似度計算,兩者大多數詞匹配度都很高,顯然是不make sense的。

因此作者第一種attention使用的是term weight,用每個term的IDF做爲attention權重,這裏不用TF-IDF是因爲在短語匹配中,大多數term的詞頻都是1。

圖4.44 term weight做attention表現

圖4.44中的a爲原始QA匹配相似度矩陣,b爲用IDF作爲term權重,c爲疊加了term weight後的匹配度矩陣,可以發現例如his-his,first-first,year-2014等term pair的相似度都比較低,從而體現不同term對結果的不同貢獻。

b. 詞性特徵attention

除了term weight,詞性part-of-speech ( pos ) 特徵也是能體現不同term交互重要性的特徵。比如名字實體和名字實體的匹配權重,比普通的名詞和名詞以及形容詞和形容詞之間的權重要高。

圖4.45 part-of-speech特徵attention表現

以圖4.45爲例,b圖表示的是不同的pos tag權重,可以發現人名-人名權重>動詞-動詞權重,引入pos特徵attention能幫助讓對匹配度更有效的實體權重拿到更大的權重。

c. 詞語位置attention

除了1和2的term weight以及pos feature能夠反映不同匹配部分的重要性,詞的位置對結果的貢獻也是不同的。直觀的理解,位置靠前的詞的權重要高於位置靠後的詞。如圖4.46表示的是不同匹配位置的權重大小,顏色越深則權重越大,可以發現句首的權重要高於句尾。

圖4.46 詞語位置attention的表現:越靠前越重要

通過上述3種不同通道的attention權重,分別表示爲Atttw,Attpos,Attspatial,每個通道得到一個M*N的layer。

融合匹配

在第一層的局部匹配中,論文使用了多層的匹配;在第二層的全局和局部匹配中,論文構建了term weight、詞性特徵、詞位置3種通道的attention,在這一層中則是對前面提取的信息進行最後的融合。這部分在論文中沒有太多公式描述,作者論證卷積神經網絡的優點後,最終使用了卷積網絡,用滑動窗口形式進行融合。

其中rk表示卷積核的大小。

總結MIX模型特點:

  • 在局部匹配階段,不是直接使用原始word embedding的相似度矩陣,而是通過不同粒度的詞語切分方法,如unigram,bigram,trigram,分別組成一元、二元和三元的短語信息提取,從而建立多層次的匹配
  • 在局部和全局匹配階段,提出了3種不同的attention方式,第一種attention是認爲不同的term的權重不同;第二種attention認爲是pos特徵也就是詞性特徵重要程度不同,比如人名實體應該大於動詞的權重;第三種attention認爲詞的位置重要程度也不同,例如句首權重一般要高於句尾。三種不同的attention方式可以看成是三種不同的channel
  • 對於最後的匹配融合,論文使用了卷積神經網絡進行提取,通過卷積-池化->卷積->池化的方式可以得到最終的匹配信號

4.3 match function模型總結

本章講到的基於match function的匹配模型對比第三章講到的基於representation learning的匹配模型,讓query和doc在一開始就提前交互,可以類比圖中的圖像匹配,是個二維匹配的過程,如圖4.47所示。

圖4.47 圖像和文本匹配過程相似性

對於query和doc,核心思想是如何構建query中的term以及doc的term的交互矩陣。4.1介紹的基於word level的匹配度矩陣的模型,大致可以用諾亞方舟2013年nips這篇文章的圖4.48來表示。對於query中 ( Y軸 ) 的所有term,以及doc中 ( X軸 ) 中的所有term,兩兩計算得到匹配分數,可以得到一個10*10的匹配度矩陣。具體的匹配計算方式,在4.1.2的MatchPyramid中提出了3種不同的計算方法,有直接代表精確匹配的indicator,有計算兩個word的向量點擊的dot product,也有計算兩個word的cosine相似度方法。

圖4.48 基於match function learning匹配模型的通用範式

得到匹配句矩陣後,簡單的做法是如下圖所示直接連接全連接網絡,更多的做法,這裏就可以用各種常見的神經網絡了。如4.1.2的MatchPyramid模型用卷積和池化進行信息提取,4.1.3的Match-SRNN模型用二維也就是空間層級的GRU來提取信息。

更多的,在4.2這一節,則介紹了各種attention結構的變化,名詞千變萬化,我個人按照論文本身的網絡結構出發,大體分成以下幾類模型:

① Baseline的attention模型:如4.2.1的ABCNN,以及4.2.2的DecAtt模型都是比較早提出attention的模型,整體結構相對後續其他變種來說相對簡單

a. ABCNN模型:主要是用卷積和池化的思路提取匹配度矩陣的attention。根據attention在卷積之前和卷積之後又分爲ABCNN-1和ABCNN-2

b. DecAtt模型:較早使用self-attention的匹配模型,把attention看成是soft-align機制。

② 多視角維度:如4.2.3的MCAN模型、4.2.4的HCRN模型、4.2.5的BiMPM模型、4.2.8的MwAN模型、4.2.11的MIX模型都屬於多種attention的組合。這裏的attention可以有多種角度進行區分

a. MCAN模型:將attention分爲query和doc之間的max pooling、mean pooling、alignment pooling以及query和doc各自內部的self-attention。最終各種attention進行組合,從而體現Multi-Cast-Attention的思想

b. HCRAN模型:將attention分爲alignment pooling,以及extractive pooling,其中後者又分爲max pooling和mean pooling。

c. BiMPM模型:整個計算過程都是對稱的,query->doc的所有計算,在doc->query也都需要計算一遍,體現了雙向(Bidirectional)的思想。對於匹配方式,則提出了full-matching、max-pooling-matching、attentive-matching、max-attentive-matching這4種不同的匹配方式,體現了Multi-Perspective的思想。

d. MwAN模型:對於兩個word的embedding計算方式,按照concat、minus、dot product以及cosine進行劃分計算,然後concat組合,從而體現了Multiway-Attention的思想

e. MIX模型:對於兩個句子之間的匹配,提出了3種不同的channel匹配:term weight attention、POS attention以及詞位置的attention,體現了多通道信息交叉的思想,即Multichannel Information Crossing

③ 多層次維度:如4.2.9的HAR模型、4.2.10的HiNT模型。多層次大致可以理解成query內部的word之間、doc內部的句子之間,doc內部句子的word之間,這裏就有不同層級的交互了,因此歸類爲多層次。

a. HAR模型:query看成一個句子,內部使用word級別的self-attention;把doc看成多個句子,句子之間色self-attention,doc內部每個句子內部word之間的self-attention。從而體現了多層次注意力Hierarchical Attention的思想

b. HiNT模型:和HAR模型不同,將doc看成是多個passage;對於query和doc中的每個passage分別計算attention,體現層次神經匹配Hierarchical Neural maTching的關係

05 搜索中query和doc的相關性匹配模型

前2章講的是語義匹配 ( semantic matching ) 裏的深度模型,本章要講的是相關性匹配 ( relevance matching ) 裏的深度模型。語義匹配可以說是相關性匹配的基礎。

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

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

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

③ 全局匹配:語義匹配通常將兩段文本的片段作爲一個整體,來推理他們之間的語義關係

④ 匹配是對稱的:因爲是兩段同質的文本進行匹配

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

① 代表任務:信息檢索中的query-doc匹配

② 兩段文本一般不同質:query長度一般較短,doc的長度較長

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

④ 匹配不對稱:因爲是兩段不同質的文本進行匹配

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

5.1 基於global distribution的模型

對於global distribution的模型來說,計算步驟分爲兩步:

① 對於query中的每個term:

a. 計算該term在doc中的匹配信號

b. 計算整體匹配強度的分佈

② 對上述得到的匹配強度進行累積融合

注意到對於這種global distribution的模型,會丟失掉詞序信息

5.1.1 DRMM模型

DRMM模型是中科院在2016提出的的相關性匹配模型,文中把query和doc分別表示爲由M和N個term組成的term vector。

可以將query和document的term兩兩比對,計算相似性,再將相似性進行以直方圖的形式進行分桶計算。例如:query:car ; document:( car,rent,truck,bump,injunction,runway )。query和doc兩兩計算相似度爲 ( 1,0.2,0.7,0.3,-0.1,0.1 )

將[-1,1]的區間分爲{[−1,−0.5], [−0.5,−0], [0, 0.5], [0.5, 1], [1, 1]} 5個區間。落在0-0.5區間(第三個區間)的個數有0.2,0.3,0.1共3個,所以最終表示爲:[0,1,3,1,1]。

圖 5.1 DRMM模型框架

其中,⨂ 代表interaction,也就是query和doc的匹配函數;l=1,…,L表示的是L層隱層函數。值得注意的是最後一個公式,zi表示的是MLP網絡最後一層第i個query的輸出,gi表示的是第i個query和document的參數權重,通過term gating的網絡來學習,其實就是query的softmax歸一化表達:

這裏xi(q)表示的是query中第i個term vector, wg爲待學習的參數。對於該文章中提到的query和doc的相似度匹配計算,論文中提出了3種方法:

a. Count-based histogram ( CH )

這種方法使用直接計數的方法進行分桶計算。也就是說先計算原始的相似度 ( 通過cosine等 ),然後進行等距分桶 ( bin ) 後,統計每個桶 ( bin ) 的數量,得到的就是個基於計數的直方圖。

b. Normalized Histogram ( NH )

在CH的計數基礎上做了歸一化,確保所有直方圖的分桶都在一個區間範圍。

c. LogCount-based Histogram ( LCH )

對CH的計數直方圖取log對數,這個在搜索引擎裏主要也是爲了迎合大多數query和doc的分佈都是pow-law的,取對數後pow-law分佈的數據會更加服從線性分佈。

總結下DRMM的模型流程,基本思想就是每個query在檢索doc的過程中,對結果的貢獻程度是不同的:

  • 把query和doc分別表示成M和N個term的向量表達
  • 忽略query中每個term的位置關係和上下文,並且認爲每個term對doc的共享程度不同
  • 匹配強度計算:query中每個term和doc通過直方圖匹配的方法計算其匹配強度,可以分爲基於計數、歸一化計數、log計數等不同直方圖匹配,得到匹配強度zi
  • 權重計算:query中每個term在整個query的權重,通過所有term的softmax權重表達計算,得到權重gi
  • 前兩步得到的zi和gi的加權表達

就是最終整個query對doc的表達DRMM作爲相關性模型的baseline,忽略了每個詞的位置信息和上下文信息。後續一些加入position和attention的方法都是爲了改進該模型無位置信息的缺點。但個人覺得,讀DRMM更大的收穫,其實是更加清晰的瞭解了語義匹配和相關性匹配兩者的異同點。

5.1.2 K-NRM模型

針對DRMM提到的無位置信息的相關性模型,卡梅隆大學在SIGIR2017提出了K-NRM模型,全稱爲Kernel-based Neural Rank Model,一種基於kernel-pooling的相關性模型。整個框架如圖5.2所示:

圖5.2 K-NRM模型框架

整個模型可以分爲以下3層:① translation layer;② kernel pooling layer;③ rank layer

translation layer

query和doc分別由n個term和m個term的詞向量組成的vector。通過query和doc之間每個term兩兩求cosine相似度,得到一個n*m的矩陣M:

kernel pooling layer

Kernel pooling層引入了K個kernel。對於第k個kernel,query中第i個term ( M矩陣中的第i行 ) 如果採用RBF kernel進行計算,表達如下:

其中,uk和sigmak爲第k個kernel的超參數均值和標準差,是超參數,需要在訓練前事先設定。這裏使用RBF核函數也是有原因的。當Mij越趨近於u, 方差sigmak越趨近於無窮大,kernel pooling的輸出越大。我們來看下2種不同的特殊情況:

a. 當方差sigma接近無窮大,上述公式趨近於1,相當於是average pooling

b. 當方差sigma趨近於0,均值u等於1,相當於是TF詞頻統計模式

可以發現,如果Mij等於1,此時該term的輸出才爲1,而Mij=1意味着query的第i個term和doc的第j個term是完全精準匹配的 ( exact match ),只有這樣才能使得cosine距離爲1。所以在這種情況下,kernel pooling相當於是一個完全精準匹配。也完全等價於TF詞頻統計模式,也就是隻統計query和doc有多少個term是完全匹配的。

對M矩陣每一行,也就是每個query使用一個核函數可以得到一個匹配分數,K個kernel則能得到一個維度爲K的向量。如下面的公式所示,第二個公式表示,M矩陣的每一行通過K個核函數,可以得到長度爲K的向量,第一個公式對所有行 ( n ) 進行對數log加和,得到一個維度爲K的向量進入下一層網絡。

rank layer

上一層kernel pooling layer得到的K維向量通過一個線性映射後,再經過tanh得到最終的分數。使用tanh是爲了讓最終的match score映射到-1到1之間,也符合相關性從-1到1的定義。這裏的w和b都是一個可訓練的維度爲K的參數向量。

總結下K-NRM的核心公式,可以用如圖5.3的6個公式表示,值得注意的是從1-6的公式網絡結構是從輸出到輸入自頂向下的關係

圖5.3 K-NRM公式

訓練過程使用的是pairwise loss:

整個模型可以用如圖5.4所示框架表示:

圖5.4 K-NRM模型框架

總結下K-NRM的特點:

① 對比DRMM最大的不同,就是引入了K個kernel function,通過kernel pooling的方式,對query中每個term求和對應的doc的匹配分數。

② 這裏的K個kernel可以類比CNN中的filter,卷積過程是從上到下卷積列數保持固定;這裏的kernel pooling 計算也是按列計算。

③ Kernel pooling的每個kernel的均值和方差都是超參數,需要事先設定。

5.1.3 Conv-KNRM模型

2018年的WSDM上,卡梅隆大學&清華又在原來的K-NRM上提出了加入卷積元素的Conv-KRNM模型,對比原來的kernel pooling,顯式的引入了CNN模塊,框架如圖5.5所示:

圖5.5 Conv-KRNM模型框架

整個模型可以分爲4層:① embedding 層;② convolutional 層;③ cross-match 層;④ kernel pooling 層;⑤ rank 層。

embedding 層

首先,把query和document投射到隱層維度爲L的embedding去,維度均爲m*L:

Convolution 層

卷積層通過大小爲h*L的filter ( 一共有F個 ),來從上到下對query和doc分別進行卷積。對於第i個term,通過和filter 進行卷積,得到一個實數v如下:

因爲有F個filer ( w1,w2,w3,…,wF ),每個term可以得到一個F維度的向量,然後再通過一個RELU層進行映射得到第i個term經過卷積後的F維輸出:

這裏W大小爲h*L*F,b大小爲F,均爲待學習的模型參數。因此,對於不同的滑動窗口h1,h2,…,hmax,每個窗口我們都可以得到原始m個term的卷積輸出。維度從原始embedding的m*L變成了m*F,L爲embedding size,F爲filter個數。

Cross match layer

從②中經過CNN提取的query和document分別的矩陣m*F和m*F後,對於query中第i個元素、hq的n-gram的值,以及doc中第j個元素、hd的n-gram的值的匹配分數爲:

最終可以得到hmax * hmax個元素的匹配矩陣M,每個元素都是一個m*m的矩陣模塊Mhq, hd

Kernel pooling layer

上一步得到匹配矩陣M後,在kernel pooling layer這裏的做法是K-NRM是一樣的。M元素裏一共有hmax*hmax個元素,每個元素都是一個矩陣模塊,一共有K個kernel:

每個元素產出的是一個K維的向量,因此最終得到的向量爲K*hmax*hmax

Ranking layer

上一層kernel pooling layer得到的K*hmax*hmax維向量通過一個線性映射後,在經過tanh得到最終的分數。

損失函數loss用pairwise loss表示如下:

圖5.6 Conv-NRM模型

總結來說,Conv-NRM模型對比K-NRM模型,在kernel pooling之前對於query和doc各自引入了高度爲hmax的滑動窗口。對圖5.6來說,hmax=2,分別代表unigram和bigrams。整體過程如下:

① query和doc各自映射爲embedding特徵向量m*L

② query和doc各自通過hmax=2的滑動窗口 ( unigram和bigram ),F個filter進行卷積得到卷積後的新特徵向量,各有2*m*F個

③ 通過cross match的匹配,對②得到的query和doc的新特徵向量,兩兩進行cosine匹配,得到2*2個匹配矩陣,每個匹配矩陣是個m*m的矩陣

④ 通過kernel pooling,對於③中4個匹配矩陣中的每一個,應用K個kernel提取得到k維度的特徵向量,一共得到4*K的特徵向量,然後concat起來作爲下一層的輸入

⑤ 對kernel pooling得到的4*K個向量,應用tanh函數得到match score, 損失函數使用pairwise loss

5.2 基於local context的模型

對於local context的模型來說,計算步驟分爲兩步:

① 對於query中的每個term:

a. 找到該term在doc中對應部分的上下文

b. 計算該term,以及在doc中對應的上下文兩者的匹配信號

② 對上述得到的匹配強度進行累積融合

注意到對於這種global distribution的模型相比於5.1講到的global distribution,捕獲了詞序信息,同時它關注的是doc中與term相關部分的上下文,丟棄了無關部分 ( 非上下文 ),因此匹配會更加的魯棒。

5.2.1 PACRR模型

EMNLP2017年提出的PACRR,全稱是Position-Aware Convolutional- Recurrent Relevance Matching,在原來的相關性模型DRMM基礎上引入了位置信息。PACRR模型基於一種假設,就是query和doc的相關性匹配是由doc中的特定位置決定的,論文通過CNN的卷積操作來捕捉局部詞序的關係,在doc上利用不同大小的卷積核進行卷積,然後在整個doc上進行池化。主要整體框架如圖5.7所示:

圖5.7 PACRR模型結構

輸入層

給定query和doc,term的長度大小爲別爲q和d,通過word embedding映射得到query embedding和doc embedding矩陣。這裏word embedding 採用預訓練得到並且訓練中保持不更新。

匹配層

query和doc的匹配矩陣採用cosine相似度,從q個query embedding和d個doc embedding兩兩計算cosine相似度,得到一個維度爲q*d的相似度矩陣。爲了保證長度一致,假設query最大長度爲lq,對於query來說統一補齊到長度lq,如果q<lq的則直接用0補齊。對於doc文中提出了兩種方法:first-k和k-window,如圖5.8所示:

圖5.8 query-doc的兩種方法:firstK和KWindow

a. PACRR-firsrK

對於匹配矩陣,取前k行。如果當前doc長度d<k,則不足部分用0補齊。

b. PACRR-KWindow

k-window方法的基本假設是doc中相關性比較低的term對結果的共享應該比較小。因此引入了一個超參數n,表示的是每個doc的片段最大長度,相當於是個n-gram的卷積,過程如下:

  • 對於doc中的每個n-gram,相當於有n個term,每個term和query中的lq個term計算相似度,取這lq個相似度中最高的值作爲該term的匹配分數
  • 對當前這n個term的匹配分數求均值作爲該n-gram和query的匹配分數
  • 對於doc的所有term都按照第一步從頭到尾滑動,按照n-gram求每個n-gram的匹配矩陣,表示如下:

對所有的n-gram匹配分數,求top k的片段,k的取值如下,不足補0。

深度觸發模型

a. 卷積層convolution layer

通過上述得到一個lq*ld的相似度矩陣後,在該層則通過不同的卷積核,2*2,3*3,4*4,…,lg*lg來進行卷積得到lg-1個卷積層 ( 原始的相似度矩陣相當於是1*1的卷積核 ),相當於是提取了bigram,trigram,…,lg-gram信息。每個卷積核又有nf個filter, 可以得到lg個lq*ld*nf的三維矩陣。

b. 池化層pooling layer

在池化層通過兩層的pooling提取信息。首先是max pooling,對於lg個三維矩陣,每個矩陣有nf個filter,通過max pooling在nf個filter中提取得到最大值,因此可以得到lg個矩陣c1,c2,c3,…,clg,每個矩陣維度lq*ld和原始匹配度矩陣維度一致。

爲了保留ns個最強信號,在max-pooling之後論文由使用了k-max-pooling,在lq維度上 ( 也就是對於lq*ld矩陣的每一行 ) 進行提取最大的ns個信號,直觀解釋就是doc中的ld個term,只提取其中和當前query匹配度最高的ns個,可以得到lg個二維矩陣lq*ns。因此,最終得到一個lq*lg*ns維度的三維向量作爲下一層的輸入。

c. 遞歸神經層recurrent layer

該層的目的是爲了提取得到全局的匹配信號。前面得到的向量維度lq*lg*ns中,其中lq爲query經過pad的長度,這裏作者使用的query的IDF信息,將其進行歸一化,目的是消除query在全局頻次的影響。

因此,通過IDF的歸一化,可以得到一個lg*ns的矩陣P,通過展開得到一個向量,並且將當前query的IDF信息concat後,接入LSTM網絡,最終的輸出爲匹配分數。

總結來說,PACRR模型特點如下:

① 提到的位置相關 ( position aware ) 原意指的是query和doc的相關性由doc中特定位置決定。

② 通過不同大小的卷積核進行卷積提取匹配信息、max-pooling以及k-max pooling兩層池化層的信息提取。

③ 引入query 的IDF信息等各種細節對位置信息進行強化。

5.2.2 Co-PACRR模型

2018年的WSDM上作者等人在2017年的PACRR模型上由加入了上文context信息,context-aware,因此該模型稱爲CO-PACRR,整體框架如圖5.9所示:

圖5.9 Co-PACRR模型模型

的核心創新點有3部分:① 上下文信息;② 級聯的k-max pooling;③ query位置隨機打亂

引入上下文信息

和PACRR模型相比,在輸入層除了query和doc的原始相似度矩陣 ( 維度大小爲lq*ld ),最大的不同在於引入了局部上下文信息作爲輸入。對於doc中的每個term,除了當前term和query的相似度,還考慮當前term上下文和query的相似度。

對於query來說,由於一般都比較短,因此query的上下文向量表示queryvec用整個query的所有term求平均作爲其上下文表示;對於doc來說,類似於word2vec的思想,取上下文滑動窗口大小爲wc,doc在該窗口內上下文的向量的平均值作爲其上下文表示:

因此,對於doc中第i個term的上下文和query上下文向量的相似度表示如下:

由於doc的term個數爲d,query都是固定的q個term求平均,對doc的term挨個計算和query上下文的相似度,可以得到一個d維的向量作爲輸入。

級聯的k-max pooling

在PACRR模型中用到的k-max pooling是在整個doc中選擇最大的ns個值,例如doc的長度爲100,ns=2,相當於是在每個doc的100個詞中選擇最大的2個值。

而CO-PACRR模型引入了新的超參數nc,表示文檔劃分的個數,比如nc=4,則分別在文檔的25%、50%、75%、100%把doc劃分成了4部分,對於每一部分進行k-max pooling,以ns=2爲例,在doc的第1-25、26-50、51-75、76-100這4部分,分別取2個作爲最大值,最終得到8個值。

前面我們知道PACRR模型在整個doc上使用k-max pooling後得到的向量爲lq*lg*ns,通過這種層次k-max pooling得到的矩陣維度爲lq*nc*lg*ns

query位置的隨機shuffle

在PACRR模型中,query都是統一pad到固定長度lq的,對於較短的query,尾部需要用0補齊到lq。這種做法缺點是對於query尾部特徵的向量,將得不到足夠的信息進行權重更新,這樣模型在訓練學習過程會認爲query尾部的term對結果的共享較小,權重也接近0,從而導致真正在query尾部的term對結果貢獻較小,模型缺乏泛化能力。

爲了了避免這種情況,CO-PACRR模型對query的順序,也就是矩陣的行進行shuffle隨機打亂,從而讓用0填充的向量均勻的分散在query的特徵各處,從而解決了用0填充帶來的問題。總結Co-PACRR模型特點:

  • 引入了上下文信息 ( context-aware ):doc中每個word的表示出了自身的embedding,還將其窗口爲wc的上下文平均向量作爲其表示,與query計算相似度
  • 級聯的k-max-pooling:將doc平均分成nc個部分,每個部分進行k-max-pooling提取最大的ns個值,總共可以得到nc*ns的最大值 ( 3 ) 對query的位置進行shuffle,消除pad帶來的尾部特徵訓練不充分影響

5.2.3 DeepRank模型

CIKM2017提出的DeepRank模型,基於一個有趣的假設,用戶搜索query後,在展現的doc裏面 ( title ),往往更關注的在doc中和query匹配的詞的上下文。有個關於眼球實驗的paper也做了類似的驗證。比如,你搜索了"佳能相機價格"後,在展現結果裏,往往會快速的掃描"佳能相機"前後相關的詞,例如相關型號之類的,以及"價格"前後的信息,例如具體多少錢的信息,這種假設在信息檢索是比較make sense的。

DeepRank模型主要是基於該假設,集中在doc中與query相關的term上下文,稱爲query-centric contexts。整體框架如下圖5.10所示:

圖5.10 DeepRank模型框架

整個過程分爲3步:① detection策略,也就是找到doc中與query中的term匹配的位置;② measurement策略;③ aggregation策略

detection策略

首先,對於給定的query,第一步的detection,需要檢測找到query中的term在doc中的位置。給定query和doc,分別由M和N個term組成,每個term隱層維度d。

如果query中的term wu在doc中第p個位置出現,就把該位置前後位置窗口大小爲k的term都找出來,總共2k+1個的詞向量,稱爲query-centric contexts。

measure網絡

前一步得到query中的term,以及在doc中對應的query-centric contexts後,需要進行匹配得到交互矩陣。對每個query中的第i個term,以及query-centric contexts中的第j個term,用sij來表示,和MatchPyramid模型一樣,文中使用了indicator和cosine兩種方法,indicator相當於是精確匹配,只有query的第i個term和doc的第j個term完全一致才sij爲1,否則爲0;cosine則直接計算query 第i個term和doc第j個term的向量cosine距離。

爲了充分表達上下文信息,最終的input tensor是個三維的向量表達,sij分別由query第i個term,doc的第j個term,以及兩者的交互 ( indicator或者cosine ) 表示。

對於輸入向量S,引入K個kernel進行卷積表達,每個kernel卷積核大小爲γ*γ。對於卷積輸出第i,j個元素,其表達爲Si,j到Si+γ-1, j+γ-1之間的元素和卷積核 ( γ*γ ) 的卷積輸出。

由於S中每個元素都是個三維向量,因此l=3。第二個公式採用max pooling,對K個kernel分別求max,得到K維的向量。

這裏論文使用了Match-SRNN中的遞歸RNN,由4個更新gate和3個reset gate來擬合。

圖5.11 DeepRank模型框架

總結DeepRank模型的特點和人類的直覺判斷相關性很類似:

  • 首先對於query中的每個term,找出每個term在doc中出現的位置
  • 對於第一步每個term在doc出現的位置,將該位置前後各k個詞(總共2k+1)找出來,作爲query在doc中該位置匹配的上下文表示query-centric contexts
  • 對第二步得到的每一個query-centric contexts以及query對,使用CNN或者2D-GRU的網絡及結構提取信息得到匹配分數
  • 通過term gating network對前一步得到的每個query和query-centric contexts局部相關性分數進行加權融合。

06 總結

推薦和搜索的本質其實都是匹配,前者匹配用戶和物品;後者匹配query和doc。具體到匹配方法,分爲傳統模型和深度模型兩大類。本文系統的介紹傳統模型和深度模型,以及語義匹配和相關性匹配。

傳統模型。有兩種主要的方法,第一種是把query和doc都同時映射到latent space的方法,比如基於統計的BM25方法,以及PLSRMLS方法。另一種方法,是通過將doc映射到query的空間的,然後在query的空間進行匹配。這種方法和機器翻譯中,將源語言映射到目標語言的做法是一致的,因此又稱爲基於translation的方法。

深度匹配模型。對於query和doc的匹配分數,有兩種思路,一種是query和doc都各自學習自己的表示,不到最後一刻不交互,在得到query和doc各自充分的representation後,再進行融合匹配。因此,我們首先介紹了基於representation的深度匹配模型。爲了得到query和doc的表示,當然是各種網絡結構都可以嘗試使用,比如基於DNN的DSSM模型、基於CNN的CNN-DSSM模型、基於RNN的LSTM-RNN模型。

深度匹配模型中的第二種思路,也就是讓query和doc在一開始就通過match function進行交互,因此稱爲基於match function 的深度匹配模型,也稱爲interaction-based的模型。既然要交互,當然需要想辦法得到query和doc儘可能豐富的匹配信號。比如4.1提到的在word level層級的匹配度矩陣。有了匹配度矩陣,4.2講述了衆多在匹配度矩陣上進行各種attention的模型。

最後,介紹了相關性匹配以及語義匹配的不同,並基於global distribution以及local context分別介紹了不同的相關性匹配模型。

本次分享就到這裏謝謝大家。

參考文獻

  1. https://www.comp.nus.edu.sg/~xiangnan/sigir18-deep.pdf
  2. https://github.com/NTMC-Community/awesome-neural-models-for-semantic-match
  3. [SMT] Stefan Riezler and Yi Liu. Query Rewritting Using Monolingual Statistical Mac3.hine Translation. In ACL 2010.
  4. [WTM] Jianfeng Gao, Xiaodong He, and JianYun Nie. Click-through-based Translation Models for Web Search: from Word Models to Phrase Models. In CIKM 2010.
  5. [DSSM] Huang P S, He X, Gao J, et al. Learning deep structured semantic models for web search using clickthrough data[C]//Proceedings of the 22nd ACM international conference on Conference on information & knowledge management. ACM, 2013: 2333-2338.
  6. [ARC-I,ARC-II] Z, Li H, et al. Convolutional neural network architectures for matching natural language sentences[C]//Advances in neural information processing systems. 2014: 2042-2050.
  7. [CNN-DSSM] Hu B, LuShen Y, He X, Gao J, et al. A latent semantic model with convolutional-pooling structure for information retrieval[C]//Proceedings of the 23rd ACM International Conference on Conference on Information and Knowledge Management. ACM, 2014: 101-110.
  8. [CNTN] Qiu X, Huang X. Convolutional Neural Tensor Network Architecture for Community-Based Question Answering[C]//IJCAI. 2015: 1305-1311.
  9. [LSTM-RNN] Palangi H, Deng L, Shen Y, et al. Deep sentence embedding using long short-term memory networks: Analysis and application to information retrieval[J]. IEEE/ACM Transactions on Audio, Speech and Language Processing (TASLP), 2016, 24(4): 694-707.
  10. [MatchPyramid] Pang L, Lan Y, Guo J, et al. Text Matching as Image Recognition[C]//AAAI. 2016: 2793-2799.
  11. [MatchPyramid-cont] Liang Pang, Yanyan Lan, Jiafeng Guo, Jun Xu, Xueqi Cheng. A Study of MatchPyramid Models on Ad-hoc Retrieval. In Proceedings of SIGIR 2016 Neu-IR Workshop.
  12. [Martch-SRNN] Shengxian Wan, Yanyan Lan, Jun Xu, Jiafeng Guo, Liang Pang, and Xueqi Cheng.
  13. Match- SRNN: modeling the recursive matching structure with spatial RNN. In Proceedings of the Twenty- Fifth International Joint Conference on Artificial Intelligence (IJCAI’16), 2922-2928.
  14. [MV-LSTM] Wan S, Lan Y, Guo J, et al. A Deep Architecture for Semantic Matching with Multiple Positional Sentence Representations[C]//AAAI. 2016, 16: 2835-2841.
  15. [aNMM] aNMM: Ranking Short Answer Texts with Attention-Based Neural Matching Model. CIKM 2016.
  16. [ABCNN] Wen Y, Hin S, Bing X, Bowen Z. ABCNN: Attention-Based Convolutional Neural Network for Modeling Sentence Pairs. ACL 2016.
  17. [DecAtt] Ankur P. Parikh, Oscar Tackstrom, Dipanjan Das, and Jakob Uszkoreit. A Decomposable Attention Model for Natural Language Inference. In Proceedings of EMNLP, 2016.
  18. [MCAN] Yi T, Luu T, Siu H. Multi-Cast Attention Networks for Retrieval-based Question Answering and Response Prediction. KDD 2018.
  19. [HCRN] Yi T, Luu T, Siu H. Hermitian Co-Attention Networks for Text Matching in Asymmetrical Domains. IJCAI 2018.
  20. [BiMPM] Zhi W, Wael H, Radu H. Bilateral Multi-Perspective Matching for Natural Language Sentences. IJCAI 2017.
  21. [ESIM] Qian C, Xiao Z, Zhen L, et al. Enhanced LSTM for Natural Language Inference. ACL 2017.
  22. [DIIN] Yi G, Heng L, Jian Z. Natural Lanuguage Inference Over Interaction Space. ICLR 2018.
  23. [MwAN] Chuan T, Fu W, Wen W, et al. Multiway Attention Networks for Modeling Sentences Pairs. IJCAI 2018.
  24. [HAR] Ming Z, Aman A, Wei W, Chandan R. HAR: A Hierarchical Attention Retrieval Model for Healthcare Question Answering. WWW 2019.
  25. [HiNT] Yi F, Jia G, Yan L, et al. Modeling Diverse Relevance Patterns in Ad-hoc Retrieval. SIGIR 2018.
  26. [MIX] Hao C, Fred H, Di N, et al. MIX: Multi-Channel Information Crossing for Text Matching. KDD 2018.
  27. [Duet] Bhaskar Mitra, Fernando Diaz, and Nick Craswell. Learning to match using local and distributed representations of text for web search. In Proceedings of WWW 2017.
  28. [DRMM] Jiafeng Guo, Yixing Fan, Qiqing Yao, W. Bruce Croft, A Deep Relevance Matching Model for Ad-hoc Retrieval. In Proceedings of CIKM 2016.
  29. [K-NRM] Chenyan Xiong, Zhuyun Dai, Jamie Callan, Zhiyuan Liu, Russell Power. End-to-End Neural Ad-hoc Ranking with Kernel Pooling. In Proceedings of SIGIR 2017.
  30. [Conv-KRNM] Zhuyun Dai, Chenyan Xiong, Jamie Callan, and Zhiyuan Liu. Convolutional Neural Networks for Soft-Matching N-Grams in Ad-hoc Search. In Proceedings of WSDM 2018.
  31. [Co-PACRR] Kai Hui, Andrew Yates, Klaus Berberich, and Gerard de Melo. Co-PACRR: A Context-Aware Neural IR Model for Ad-hoc Retrieval. WSDM '18, 279-287.
  32. [DeepRank] Liang Pang, Yanyan Lan, Jiafeng Guo, Jun Xu and Xueqi Cheng. DeepRank: a New Deep Architecture for Relevance Ranking in Information Retrieval. In Proceedings of CIKM 2017.

作者簡介

辛俊波,騰訊高級研究員。

本文來自 DataFunTalk

原文鏈接

https://mp.weixin.qq.com/s/lcyw_kHNxPB-DUfNzTaj5g

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章