在NLP中孿生網絡基本是用來計算句子間的語義相似度的。其結構如下
在計算句子語義相似度的時候,都是以句子對的形式輸入到網絡中,孿生網絡就是定義兩個網絡結構分別來表徵句子對中的句子,然後通過曼哈頓距離,歐式距離,餘弦相似度等來度量兩個句子之間的空間相似度。
孿生網絡又可以分為孿生網絡和偽孿生網絡,這兩者的定義:
孿生網絡:兩個網絡結構相同且共享參數,當兩個句子來自統一領域且在結構上有很大的相似度時選擇該模型;
偽孿生網絡:兩個網絡結構相同但不共享參數,或者兩個網絡結構不同,當兩個句子結構上不同,或者來自不同的領域,或者時句子和圖片之間的相似度計算時選擇該模型;
另外孿生網絡的損失函數一般選擇Contrastive loss Function(對比損失函數)。接下來具體看看孿生網絡在句子語義相似度計算中的幾篇論文:
2、論文模型介紹
1)Siamese CBOW: Optimizing Word Embeddings for Sentence Representations
該論文提出了一種基於孿生網絡+CBOW的方式來無監督式的訓練句子的向量表示。網絡的結構圖如下:
首先給定一個很大的語料庫,語料庫中的句子要保持原來文章中的順序,那我們該怎麼將這個無監督的任務構造成有監督式的任務呢?看論文中這個CBOW,其實就是採用了類似word2vec中的CBOW的形式來構造有監督式的任務的。我們給定一個中心句子
𝑠𝑖,然後將中心句子的上下句作為正樣本(即和中心句子相關的句子),然後從其他句子中隨機選擇 𝑛個句子作為負樣本,以論文中為例,負樣本也選擇2個。因此就構造成了這樣一個句子集合 [𝑠𝑖,𝑠+𝑖+1,𝑠+𝑖−1,𝑠−1,𝑠−2],那麼這樣一個句子集合就作為一個樣本輸入到模型中,以這裡的例子為例,就構造成了一個具有5個相同結構相同參數的網絡來處理這5個句子。有了樣本之後,標籤該怎麼定義呢?在這裡的真實標籤定義如下:
上面式子中的
𝑆+,𝑆−分別表示正樣本句子集合和負樣本句子集合。因此真實標籤是服從概率分布的。接下來我們看看預測標籤該怎麼定義,其定義如下:
上面式子為預測標籤的概率分布(softmax後的結果),其中
𝑠𝜃𝑖是句子 𝑠𝑖的向量表示,那麼問題來了,這個句子向量是怎麼得到的呢?其實模型的輸入最小粒度是詞,在這裡會用一個詞嵌入矩陣(詞向量)來將每個詞映射到低維向量,然後對句子中的詞向量取平均來表示句子的向量。之後再計算中心句子 𝑠𝑖和其他句子的餘弦相似度,然後經過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來處理句子對,其網絡結構如下:
在這裡將句子對的關係看作是一個二分類的問題,給定一個樣本
[𝑥1,𝑥2,𝑦],在這裡 𝑦的結果為 [0,1],因此可以看作一個二分類問題,在這裡的度量方式選擇的是餘弦相似度,其表達式如下:
損失函數用了Contrastive loss function,其表達式如下:
從損失函數的形式上看類似於二元交叉熵損失函數,但是這裡的
𝐿−並不等於 1−𝐿+,其表達式如下:
其表示圖如下:
註:從這裡的圖來看,上面的式子是有誤的,
𝐸𝑊<𝑚應該改成 𝐸𝑊>𝑚。我們來分析下上面的式子:假設現在是一個正樣本,也就是
𝑦(𝑖)=1,此時若預測的 𝐸𝑊接近於1(即預測兩個句子很相似),則整體損失很小,此時若預測的 𝐸𝑊接近於-1(即預測兩個句子不相似),則整體損失很大。假設現在是一個負樣本,給定 𝑚=0.5,也就是 𝑦(𝑖)=0,此時若預測的 𝐸𝑊小於 𝑚,則損失為0,若預測的 𝐸𝑊大於 𝑚,則損失很大。其實這個損失函數可以認為通過調整 𝑚的值,可以控制對句子相似度的苛刻度, 𝑚的值比較大時,會導致兩個相似的句子的餘弦相似度值是比較高的。
參考文獻:
Siamese CBOW: Optimizing Word Embeddings for Sentence Representations
Siamese Recurrent Architectures for Learning Sentence Similarity
Learning Text Similarity with Siamese Recurrent Networks