當前位置:編程學習大全網 - 源碼下載 - NLP論文筆記A Structured Self-attentive Sentence Embedding(self-attention 相關)

NLP論文筆記A Structured Self-attentive Sentence Embedding(self-attention 相關)

本文主要用於記錄IBM發表於2017年的壹篇論文(引用量超過300)。該論文主要是提出了壹種句向量的自註意力模型(self-attention)。本筆記主要為方便初學者快速入門,以及自我回顧。

論文鏈接: /ExplorerFreda/Structured-Self-Attentive-Sentence-Embedding

基本目錄如下:

------------------第壹菇 - 摘要------------------

本文提出了壹種新的基於“自註意力”機制的句向量表達方式。傳統句向量表達通常是壹個1維向量,而本文提出的句向量模型是壹個2維矩陣,其中每壹行都有各自不同的權重來構成該句子的向量表達。基於此種句向量模型,論文還同時提出了壹種“自註意力”機制和壹種特殊的模型正則化的方法。利用該種模型的好處就是句子的向量表達變得可視化,讓我們清晰看到哪壹部分最構成句子的向量。利用該種句向量表達,論文作者在3個公開數據集任務上均取得了優異的效果。

------------------第二菇 - 核心思想------------------

在word2vec剛流行的那個年代,大家都致力去尋找更好的詞向量的表達,但是卻沒怎麽重視過句向量的表達(因為句子本身由詞組成,都有了詞的向量,那句向量豈不是理所當然就出來了?~)。所以,業界主流的生成句向量方法,除了那些非監督的直接的句向量生成方法,更多的情況是人們根據下遊任務的需求,來直接有監督的訓練句向量的生成(輸入是該句的詞向量序列)。比如,最簡單的就是取RNN的最後壹個隱狀態的值,作為整個句子的句向量(因為假設句子之前的信息都已經存儲進來了),再升級壹點,無非就是雙向的句子輸入,再疊加等等。當然,這種做法的弊端也很明顯,因為很難將整個句子的所有語義信息都壓縮到最後壹個隱狀態的值中。因此本文才提出來了壹種新的句向量的生成辦法,為了能將句子中的每壹個詞的信息都記錄表達下來。而新的生成辦法,就是基於文中新提出的“自註意力”機制!

本文提出的句向量模型主要包括兩部分,第壹部分就是壹個雙向LSTM網絡,第二部分是自學習機制。這裏我們也跟隨文章,用該模型去做壹個情感分類的任務。直接上圖,方便大家有個全局概念,我再壹步步解析。

首先,假設我們有壹個句子,含有 個詞,表示為,

其實 就代表詞 的 維詞向量,因此, 就是壹個 的二維矩陣。

然後,我們將 輸入到雙向 網絡,則針對每壹個時序(詞

)我們能得到壹個維度為 的隱狀態向量(假設隱藏層個數為 ,又是雙向,所以是2倍),則經過網絡處理後,我們能得到壹個新的隱狀態矩陣,

而我們最終的目標是得到壹個固定維度的句向量,因此,我們就需要去尋找上述隱狀態的壹組線性組合參數。比如,我們的參數是(1,0,0,..0),則表示,我們僅僅用第壹個隱狀態的值就代表了整個句子。因此,為了得到這樣壹組線性組合的參數,作者在這邊設計了壹層簡單的神經網絡,計算公式為,

其中 就是權重矩陣,其維度為 ,然後 就是壹組 維向量, 用以確保權重歸壹化。然後,向量 就是我們要尋找的壹組線性組合參數。

最後,將 與上面求得的 點乘,我們也就得到了最終的句向量表達,後面的就根據下遊分類任務,與普通的處理壹樣。

當然,這種計算的處理機制,往往只會讓句子聚焦於其特定的部分,在短句情況下還好,但是在長句的情況下,往往會有多處地方值得我們去聚焦註意,因此,為了更好的表達整個句子的信息,我們需要對句子進行多次自註意力處理,因此,我們將上面的 進行擴維度,變成 矩陣,相當於進行了 次聚焦操作,且每次,聚焦的地方不壹樣,因此,我們最後得到的線性組合就不止壹種,表示為,

因此,最終的句向量M,也被表示為 的矩陣,

當然,上述的解法也不是完美的,因為,很有可能,模型每壹次學到的線性組合是壹樣的,因此,我們需要對此添加懲罰項,來鼓勵模型學到更多特異性的組合參數。文中設計的壹種,懲罰項就是來考慮矩陣A的冗余度,計算公式如下,

底標 就是矩陣的Frobenius 範數,因此該懲罰項也會加入到最終的損失函數中去。大家就想像兩種極端情況,比如學到的參數是壹樣的,那是不是上式子就會偏大。具體大家也可以看下原論文中的解釋,應該也是十分清晰易懂的~(當然我相信肯定還有其他的懲罰項設計~)

至此,整壹套句向量的生成機制算是講清楚了。而且,該生成方法還有壹個巨大的好處就是,我們可以根據線性的權重來畫句子的熱力圖,讓我們清楚的看到,網絡最終到底聚焦在了句子的哪壹部分。這邊也貼壹張原文的圖,來加深大家的理解。(從中也可以很清晰的看到,加了懲罰項以後,句子的關註點也變多了)

論文作者把自己提出的句向量生成算法實現了壹遍,並在三個數據集上做了實驗。有興趣的讀者可以自行研讀實驗經過及結果,這裏不作展開。而且本文開頭也貼了github地址,有興趣的讀者可以去研究壹下。

------------------第三菇 - 總結------------------

到這裏,整篇論文的核心思想及其創新點已經說清楚了。本論文主要集中在於闡述壹種基於自註意力機制的新的句向量的生成方法,並在多個數據集上驗證了該方法的有效性。

簡單總結壹下本文就是先羅列了壹下該論文的摘要,然後談了壹些句向量的生成方法,之後重點介紹了壹下自註意力機制的句向量生成方法。總的來說,IBM提出這種句向量的生成方法,也開辟了後續更多nlp中的attention的應用。希望大家讀完本文後能進壹步加深對該論文的理解。有說的不對的地方也請大家指出,多多交流,大家壹起進步~?

  • 上一篇:如何縮短域名的 DNS 解析時間
  • 下一篇:-65源代碼
  • copyright 2024編程學習大全網