當前位置:
首頁 > 最新 > 有監督相似性學習:基於相似問題數據的對稱關係學習

有監督相似性學習:基於相似問題數據的對稱關係學習

基於文本對分類的監督模型,可以根據它們之間的某些關係創建一個軟體,該軟體為這兩個文本分配標籤。當這種關係是對稱的,將該約束併入模型是有用的。本文將展示孿生卷積神經網路是如何在兩個重複的問題數據集上執行的效果,演示結果見此。

檢測重複內容這一任務會在許多不同的平台上發生,可以從github網站Explosion AI資源庫下的SpaCy問題跟蹤器看到同樣的問題被反覆詢問。幸運的是,現在有兩個大型社區問答站點標有數據集——Quora數據集和來自墨爾本大學的研究人員編譯的StackExchange語料庫。

try the demo

為了比較,演示中包含了一個無監督的基線,該基線使用來自GloVe通用Crawl模型的向量來計算一個簡單的字矢量平均值。有監督的模型從這種無監督的基線學習了非常不同的相似性定義,它大致表示文檔之間主題的重疊。有監督使用了標籤數據,這通常被認為是其缺點。然而,這也是一個關鍵的優勢:它允許使用標記數據去自定義被分類的關係,沒有監督就會陷入任何無監督演算法恢復的默認關係中。

用於對稱分類的孿生網路

Quora和StackExchange數據集根據兩個問題是否重複進行標記,這種關係既可交換也可傳遞的。對於is_dup(A, B)和is_dup(B, A)兩個同樣的問題而言,不希望得到兩種計算不同的結果——因為該模型應該把這兩種問題看作一樣。同樣,如果知道is_dup(A, B)和is_dup(B, C),應該得到結論is_dup(A, C)。

可以通過使用「孿生」架構來學習遵守這些約束的函數,之前討論的非對稱模型的架構差異很小。如前所述,首先對句子進行編碼,使用距離函數來產生預測,而不是任意的非線性。下面簡述孿生網路:

孿生網路框架

上述Siamese函數調用了兩個函數——text2vec和similarity_metric。使用text2vec函數對輸入中的每個文本進行單獨編碼,然後使用similarity_metric進行比較。假設每個函數返回一個回調以完成其反傳過程。鑒於此,孿生網路的反向傳播邏輯非常簡單。每個回調返回相對於原始函數輸入的梯度,給定原始函數輸出的梯度。對於相似性度量,一直在使用Chen(2013)的距離函數(推薦閱讀該碩士論文),Cauchy Similarity介紹如下:

Cauchy Similarity

對於text2vec函數,我一直使用之前發布的博客——Maxout Window Encoding中引入的卷積層。MWE層與BiLSTM具有相同的目標:提取更好的字特徵。它會根據周圍的上下文重寫每個單詞的向量。這是很有用的,因為它繞過了字矢量的主要限制。我們知道像「duck」這樣的詞可以有多個含義(鴨子、躲避、人名等),我們想要一個反映上下文意義的向量。

將滑鼠懸停在向量上以查看哪些單詞用於計算:懸停在單詞上,看看它們影響的向量(去原文嘗試)

上圖顯示了單個MWE塊如何重寫每個單詞的向量。可以將輸出視為三角形向量——它們基於三字窗口中的信息構建,每一層越深,接收域加寬。下面是完整的模型定義,使用的是SpaCy 2.0的神經網路模型開發庫Thinc:

模型定義

在MWE層之後,獲得兩個矩陣,每個文本對應其中的一個。矩陣可以具有不同的長度,並且需要輸出單個相似性得分。下一步是模型中最弱的部分:為了比較這些矩陣,通過採用它們的元素均值及其元素最大值來將矩陣減少為兩個向量。在這兩個操作中,最大值趨向於具有更多信息——但是使用兩者往往比僅使用最大值更好。

結果和顯著例子

下表顯示了Quora和StackExchange數據的開發集精度。既然沒有一個指定的訓練/驗證/測試拆分語料庫,因此我一直將數據集隨機分成對應的10%、30%、60%三部分。下表仍然是初步結果,並且模型的超參數還沒有得到很好的調整。

儘管有這些附加說明,但對稱網路的準確性得到提高是非常一致的。在Quora數據集中,準確度提高了2.3%——比我之前看到任何改變的進步都大。最大窗口編碼層也似乎有幫助,雖然結果的不一致使得這點難以確定。

比較兩個模型的輸出是有趣的,特別是與分配給每個單詞的GloVe向量的簡單未加權平均值相比較。在交互演示中,看看下面的例子:

在嘗試的大多數示例中,默認的相似度模型(其採用簡單的向量平均)偏高。Quora和StackExchange模型的輸出差異大部分可以通過培訓文本的不同領域來解釋。另外還可以看到協調策略的效果,因為它控制重複項的定義。例如在Quora數據集中,細節不同的問題(例如地點)是從來不會被視為重複問題,因此該模型學習去注意單個命名實體。

這些模型中沒有一個揭示他們正在分類的文本對的「真實」相似性,因為均值是多維的,以至於文本段在某些方面總是相似的,而在其他方面是不同的。因此,需要的標籤將始終取決於那些對應用程序很重要關係。

如果嘗試從相似性分數中獲取一個意圖標籤,你可能想將兩個句子視為相同的動詞,但不同的類似對象——它們都將觸發同一個函數。或者,如果嘗試在產品評論中集中意見,則該對象可能是決定性的維度。使用示例數據,演算法無法猜出你想要什麼,除非你告訴它,這就是為什麼監督的方法是如此有用。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 AI科技時訊 的精彩文章:

TAG:AI科技時訊 |