深度學習筆記——基於雙向RNN(LSTM、GRU)和Attention Model的句子對匹配方法

前面寫過用Word2vec和Doc2vec進行句子對匹配,以及基於傳統機器學習方法進行句子對匹配的方法,本文主要介紹基於雙向RNN(LSTM、GRU)和Attention Model的句子對匹配方法。

首先來看一下什麼叫句子對匹配:

句子對匹配(Sentence Pair Matching)問題是NLP中非常常見的一類問題,所謂“句子對匹配”,就是說給定兩個句子S1和S2,任務目標是判斷這兩個句子是否具備某種型別的關係。如果形式化地對這個問題定義,可以理解如下:

意思是給定兩個句子,需要學習一個對映函式,輸入是兩個句子對,經過對映函式變換,輸出是任務分類標籤集合中的某類標籤。
典型的例子就是Paraphrase任務,即要判斷兩個句子是否語義等價,所以它的分類標籤集合就是個{等價,不等價}的二值集合。除此外,還有很多其它型別的任務都屬於句子對匹配,比如問答系統中相似問題匹配和Answer Selection。

接下來我們來看一下深度學習中都有哪些句子對匹配的模型:

句子對匹配模型(一)


就是把兩個句子S和T拼接起來,中間用一個特殊分隔符EOS分割,這裡EOS不代表一個句子的結束,而是代表兩個句子的分隔符號,如此就構造出了RNN的輸入層。之後可以套上雙向以及深層網路結構,在最高一層RNN層的輸出之上,套上一個Attention Model層。這裡的Attention Model層其實是一個靜態的AM,具體做法就是首先計算BLSTM各個節點的注意力權重,然後對各個節點乘以注意力權重進行加和得到一個向量表示。

然後,在Attention Model之上,我們還可以套上一層SoftMax層,這樣就可以實現最終的分類目的。

句子對匹配模型(二)

對於兩個句子,分別套上一個RNN或者深層LSTM亦或雙向深層LSTM等,每個RNN的目的是抽取出這個句子的特徵,然後將兩個句子抽取出的特徵拼接成更上層的MLP多層神經網路的輸入層,經過MLP的隱層使得兩個句子發生非線性對映關係,最後再通過SoftMax分類層給出最後的分類結果。
這樣就通過兩個RNN實現了對兩個句子是否具備某種關係作出分類判斷的決策,使用訓練資料可以獲得網路引數,之後就可以將這個神經網路用來對現實任務進行分類的工作。

接下來,我們將MLP層之前新增一個Attention Model層,得到句子對匹配模型三

句子對匹配模型(三)

Attention Model層首先得到兩個句子的向量表達,然後將得到的向量表達拼接起來作為MLP的輸入,最終經過Softmax進行分類。

句子對匹配模型(四)


模型四與模型三的區別在於,模型三是對每一個句子經過深層BiLSTM得到的編碼結果加上一個靜態AM得到句子的一個向量表達,然後將兩個句子的向量表達拼接起來。而模型四是通過Soft Attention Model得到兩個句子之間的相互Attention向量,然後將這些向量進行MeanPooling,得到的結果輸入MLP,最後經過Softmax得到分類結果。

最後:圖中的BiLSTM還可以替換為BiGRU。

本文主要是結合RNN和Attention Model做一些關於句子對匹配的總結,具體的實現和實驗我後續會慢慢放上來的。