孿生網絡(Siamese Network)在句子語義類似度計算中的應用

1,概述網絡

  在NLP中孿生網絡基本是用來計算句子間的語義類似度的。其結構以下函數

    

  在計算句子語義類似度的時候,都是以句子對的形式輸入到網絡中,孿生網絡就是定義兩個網絡結構分別來表徵句子對中的句子,而後經過曼哈頓距離,歐式距離,餘弦類似度等來度量兩個句子之間的空間類似度。spa

  孿生網絡又能夠分爲孿生網絡和僞孿生網絡,這二者的定義:3d

  孿生網絡:兩個網絡結構相同且共享參數,當兩個句子來自統一領域且在結構上有很大的類似度時選擇該模型;blog

  僞孿生網絡:兩個網絡結構相同但不共享參數,或者兩個網絡結構不一樣,當兩個句子結構上不一樣,或者來自不一樣的領域,或者時句子和圖片之間的類似度計算時選擇該模型;圖片

  另外孿生網絡的損失函數通常選擇Contrastive loss Function(對比損失函數)。接下來具體看看孿生網絡在句子語義類似度計算中的幾篇論文:it

 

2,論文模型介紹io

  1)Siamese CBOW: Optimizing Word Embeddings for Sentence Representations ast

  該論文提出了一種基於孿生網絡+CBOW的方式來無監督式的訓練句子的向量表示。網絡的結構圖以下:function

    

  首先給定一個很大的語料庫,語料庫中的句子要保持原來文章中的順序,那咱們該怎麼將這個無監督的任務構形成有監督式的任務呢?看論文中這個CBOW,其實就是採用了相似word2vec中的CBOW的形式來構造有監督式的任務的。咱們給定一箇中心句子$s_i$,而後將中心句子的上下句做爲正樣本(即和中心句子相關的句子),而後從其餘句子中隨機選擇$n$個句子做爲負樣本,以論文中爲例,負樣本也選擇2個。所以就構形成了這樣一個句子集合$[s_i, s_{i+1}^+, s_{i-1}^+, s_1^-, s_2^-]$,那麼這樣一個句子集合就做爲一個樣本輸入到模型中,以這裏的例子爲例,就構形成了一個具備5個相同結構相同參數的網絡來處理這5個句子。有了樣本以後,標籤該怎麼定義呢?在這裏的真實標籤訂義以下:

    

  上面式子中的$S^+, S^-$分別表示正樣本句子集合和負樣本句子集合。所以真實標籤是服從機率分佈的。接下來咱們看看預測標籤該怎麼定義,其定義以下:

    

  上面式子爲預測標籤的機率分佈(softmax後的結果),其中$s_i^{\theta}$是句子$s_i$的向量表示,那麼問題來了,這個句子向量是怎麼獲得的呢?其實模型的輸入最小粒度是詞,在這裏會用一個詞嵌入矩陣(詞向量)來將每一個詞映射到低維向量,而後對句子中的詞向量取平均來表示句子的向量。以後再計算中心句子$s_i$和其餘句子的餘弦類似度,而後通過softmax獲得預測的機率分佈。既然真實標籤和預測標籤都服從機率分佈,那麼損失函數就能夠直接用交叉熵了,所以損失函數以下:

    

  其實這裏整個模型被訓練的參數只有一開始的詞嵌入矩陣,也就是說咱們這個模型最終訓練的到的也就是一個詞向量,但由於目標任務是計算句子的類似度,並且損失函數的構造也是來建模句子之間的關係,所以我的人爲這種方式得到的詞向量,經過取平均的方式能更好的表示句子向量。所以在句子類似度的任務上的效果也是優於word2vec詞向量的。

 

  2)Siamese Recurrent Architectures for Learning Sentence Similarity

  上面介紹了一種無監督的方式,接下來的模型都是有監督的。 本論文提出了一種MaLSTM的網絡結構,其網絡結構以下:

    

  其實網絡結構是並沒什麼新意,其具體以下:

  1)經過兩個LSTM網絡(能夠是孿生網絡,也能夠是僞孿生網絡)來處理句子對,取LSTM最後時刻的輸入做爲兩個句子的向量表示。

  2)用曼哈頓距離來度量兩個句子的空間類似度。

  論文中沒有提到用了什麼損失函數,但通常孿生網絡的損失函數都是Contrastive loss function。這個咱們在下面再介紹,至於在這裏做者爲何選擇曼哈頓距離,做者認爲歐式距離容易出現梯度消失。並且在實驗中顯示效果也是優於餘弦類似度的,對於這個度量選擇,我的認爲仍是以本身的實際項目來選擇,並不存在一個絕對的好壞。

 

  3)Learning Text Similarity with Siamese Recurrent Networks

  該論文一樣是用LSTM來處理句子對,其網絡結構以下:

    

  在這裏將句子對的關係看做是一個二分類的問題,給定一個樣本$[x_1, x_2, y]$,在這裏$y$的結果爲$[0, 1]$,所以能夠看做一個二分類問題,在這裏的度量方式選擇的是餘弦類似度,其表達式以下:

    

  損失函數用了Contrastive loss function,其表達式以下:

    

  從損失函數的形式上看相似於二元交叉熵損失函數,可是這裏的$L_-$並不等於$1 - L_+$,其表達式以下:

    

  其表示圖以下:

    

  注:從這裏的圖來看,上面的式子是有誤的,$ E_W < m$ 應該改爲$E_W > m$。

  咱們來分析下上面的式子:假設如今是一個正樣本,也就是$y^{(i)} = 1$,此時若預測的$E_W$接近於1(即預測兩個句子很類似),則總體損失很小,此時若預測的$E_W$接近於-1(即預測兩個句子不類似),則總體損失很大。假設如今是一個負樣本,給定$m = 0.5$,也就是$y^{(i)} = 0$,此時若預測的$E_W$小於$m$,則損失爲0,若預測的$E_W$大於$m$,則損失很大。其實這個損失函數能夠認爲經過調整$m$的值,能夠控制對句子類似度的苛刻度,$m$的值比較大時,會致使兩個類似的句子的餘弦類似度值是比較高的。

 

 參考文獻:

 Siamese CBOW: Optimizing Word Embeddings for Sentence Representations 

 Siamese Recurrent Architectures for Learning Sentence Similarity

 Learning Text Similarity with Siamese Recurrent Networks

相關文章
相關標籤/搜索