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

2021-02-13 ArronAI
1、概述

  在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

相關焦點

  • Siamese network 孿生神經網絡--一個簡單神奇的結構
    簡單來說,衡量兩個輸入的相似程度。孿生神經網絡有兩個輸入(Input1 and Input2),將兩個輸入feed進入兩個神經網絡(Network1 and Network2),這兩個神經網絡分別將輸入映射到新的空間,形成輸入在新的空間中的表示。通過Loss的計算,評價兩個輸入的相似度。
  • 孿生網絡入門(上) Siamese Net及其損失函數
    pred,然後這個pred和ground truth進行損失函數的計算,然後得到梯度;這個孿生網絡則改變了這種結構,假設是圖片分類的任務,把圖片A輸入到模型中得到了一個輸出pred1,然後我再把圖片B輸入到模型中,得到了另外一個輸出pred2,然後我這個損失函數是從pred1和pred2之間計算出來的。
  • 漫談語義相似度
    常規的語義相似度架構語義相似度架構其實非常簡單,簡單地說就是兩個句子進去,進行特徵抽取,簡單到BOW、TF-IDF,複雜的就是bert(跳過word2vector、elmo???),然後進行相關性匹配計算,這塊也花樣繁多,簡單的就是餘弦相似、歐氏距離等,複雜的可以矩陣相乘等,最終到達標籤,完成一次語義相似度評估計算。OK,上圖:
  • 【孿生網絡】文本蘊含之孿生網絡(Siamese Network)
    一、背景介紹孿生網絡一開始提出是在圖像識別領域(例如人臉識別),來求解兩張圖片(兩張人臉圖像)相似度,判斷兩張圖片是否相似。圖1 基於孿生網絡的圖像相似度求解圖二、孿生網絡在文本蘊含中的使用在機器學習中,很多算法在圖像和自然語言處理兩個領域是可以互通的(可以相互借鑑的)。
  • 孿生網絡如何識別面部相似度?這有篇PyTorch教程
    在前一篇文章中,我們討論了小樣本數據旨在解決的主要問題類別,以及孿生網絡之所以能夠成為解決這個問題優良選擇的原因。首先,我們來重溫一個特殊的損失函數,它能夠在數據對中計算兩個的圖像相似度。我們現在將在PyTorch中實施我們之前所討論的全部內容。
  • 自然語言語義相似度計算方法
    由於文本相似度計算在文檔複製檢查、信息檢索和機器翻譯等領域都有十分廣泛的應用,所以,近年來有越來越多的學者致力於文本相似度算法的研究。總體來看,文本相似度的計算方法主要分為兩大類:一類是基於統計學的計算方法,此種方法需要大規模的語料庫,並且在計算時沒有考慮文本的句子結構信息和語義信息,計算的結果有時會與人對自然語言的理解不相符合;另一類是基於語義理解的計算方法,這種方法不需要大規模的語料庫,但需要依賴於具有層次結構關係的語義詞典,計算結果相對準確,與人對自然語言的理解較為符合。
  • 文本匹配利器:從孿生網絡到Sentence-BERT綜述
    文本匹配是自然語言處理領域一個基礎且重要的方向,一般研究兩段文本之間的關係。文本相似度、自然語言推理、問答系統、信息檢索都可以看作針對不同數據和場景的文本匹配應用。,然後用額外的模型學習通用的文本關係映射;畢竟我們的場景不一定只是衡量相似度,可能還有問答、蘊含等複雜任務‍‍‍‍‍‍‍‍三連體網絡‍‍‍‍‍‍‍‍基於孿生網絡,還有人提出了 Triplet network 三連體網絡。
  • 最先進的語義搜索句子相似度計算
    NLP的進步使我們能夠有效地映射這些surface form,並將這些單詞中的上下文捕獲到稱為「embeddings」的東西中。具有相似含義的兩個單詞將具有相似的向量,從而允許我們計算向量的相似性。擴展這個想法,在向量空間中,我們應該能夠計算任意兩個句子之間的相似性。
  • 機器不學習:基於深度學習CNN的短文本相似度計算方案
    機器學習深度學習乾貨棧 www.jqbxx.com基於CNN模型的短文本相似度的計算方法可以大致分為兩類:一類是基於Siamese結構的神經網絡模型,先分別學習輸入的文本對兒的句子向量表達,再基於句子向量計算相似度;另一類是直接以詞語粒度的相似度矩陣作為輸入,學習並計算文本相似度。
  • 用孿生網絡、對比損失和三重損失進行人臉識別的單樣本學習
    AI 前線導讀: 孿生神經網絡(Siamese network)是一個有趣的名詞,Siamese 在英語中是 「孿生」、「連體」 的意思,簡單來說,Siamese network 就是 「連體的神經網絡」,神經網絡的 「連體」 是通過共享權值來實現的。孿生網絡的目標是尋找兩個可比較對象的相似程度(例如,籤名驗證、人臉識別等)。
  • 計算文本相似度常用的四種方法
    在這篇博文中,作者比較了各種計算句子相似度的方法,並了解它們是如何操作的。詞嵌入(word embeddings)已經在自然語言處理領域廣泛使用,它可以讓我們輕易地計算兩個詞語之間的語義相似性,或者找出與目標詞語最相似的詞語。然而,人們關注更多的是兩個句子或者短文之間的相似度。如果你對代碼感興趣,文中附有講解細節的Jupyter Notebook地址。以下是論智的編譯。
  • 自然語言處理之文本相似度計算
    文 | 光大科技大數據部 盧格潤在金融科技的業務場景下,我們不可避免地應用到自然語言處理(NLP)的技術去解決問題,比如智能問答系統、資訊輿情的分析等……在自然語言處理中,很多實際應用具有共性問題,本文就以文本相似度的計算為例介紹自然語言處理解決問題的思路。
  • 短文本相似度在金融智能客服中的應用 - 專注金融科技與創新 未央網
    短文本相似度,顧名思義是指長度較短文本(在中文中一般小於50個字符)的相似度計算,一般用於搜尋引擎、智能問答、知識檢索、信息流推薦等系統中的召回、排序等階段。1. 短文本相似度基本介紹短文本相似度的計算方式,最基本的分為無監督和有監督兩種方式。
  • 【論文】文本相似度計算綜述
    概述在信息爆炸時代,人們迫切希望從海量信息中獲取與自身需要和興趣吻合度高的內容,為了滿足此需求,出現了多種技術,如:搜尋引擎、推薦系統、問答系統、文檔分類與聚類、文獻查重等,而這些應用場景的關鍵技術之一就是文本相似度計算技術。因此了解文本相似度的計算方法是很有必要的。
  • Kaggle文本語義相似度計算Top5解決方案分享
    向AI轉型的程式設計師都關注了這個號👇👇👇機器學習AI算法工程  公眾號: datayx句子相似度計算今年和去年前後相繼出現了多個關於句子相似度判定的比賽,即得定兩個句子,用算法判斷是否表示了相同的語義或者意思。
  • 前沿|通用句子語義編碼器,谷歌在語義文本相似性上的探索
    近年來,基於神經網絡的自然語言理解研究取得了快速發展(尤其是學習語義文本表示),這些深度方法給人們帶來了全新的應用,且還可以幫助提高各種小數據集自然語言任務的性能。本文討論了兩篇關於谷歌語義表示最新進展的論文,以及兩種可在 TensorFlow Hub 上下載的新模型。
  • BERT-Flow | 文本語義表示新SOTA
    如果是後者,「有沒有什麼方法可以在無監督的條件下更有效地抽取出BERT句向量中隱含的語義相似度信息呢?」上面的幾點思考就是本文致力於解決的問題,作者首先分析了BERT句向量是否包含了足夠的語義相似度信息,然後分析了為什麼不能直接計算BERT句向量的cosine相似度來表示語義相似度,最後針對如何在無監督的條件下更有效地處理BERT句向量來計算語義相似度的問題,提出了BERT-flow模型。
  • 【深度神經網絡 One-shot Learning】孿生網絡少樣本精準分類
    人類很容易從單個樣本就能學會小鏟刀或者字母Θ的意思,因為我們一輩子一直都在從相似對象中觀察和學習。把一個隨機初始化的神經網絡與人類這種花了一輩子時間去識別物體和符號相比,的確不太公平,因為隨機初始化的神經網絡對數據的映射結構缺乏先驗。這也是為什麼我看到的單樣本學習論文都是採用的從其他任務上的知識遷移方法。神經網絡非常擅長從結構化的複雜/高維數據中(例如圖像)提取特徵。
  • 百度NLP | 神經網絡語義匹配技術
    3)匹配的非對稱問題文本匹配類的任務,並不單單是文本相似度問題。一方面不一定要求語言上的相似,例如網頁搜索任務中 query 端的語言表述形式和網頁端往往具有很大的差別,至少在長度上就差距很大。另一方面也不一定要求語義上的相同,例如問答任務中,待匹配的兩段文本並不要求同義,而是看候選答案是否真正回答了問題。
  • 科技文獻語義關聯網絡及其應用探析
    科技文獻之間的語義關聯直接影響著科技文獻檢索與推薦等科技信息服務的質量。現階段的數位化科技文獻資源已經積累了大量的元數據及數字資源,但科技文獻之間的關聯應用還處於初級階段,主要的應用包括科技文獻語義出版、檢索服務與信息發現等。如何快速準確地建立科技文獻資源之間的關聯網絡以提高科技文獻信息服務質量是目前數字圖書館領域的重要研究內容和方向。