NLP入門 Task9 Attention原理

2021-09-25 06:59:56 字數 3420 閱讀 2680

注意力機制(attention mechanism)是解決資訊超載問題的一種資源分配方案,將計算資源分配給更重要的任務。

注意力機制的計算可以分為兩步:一是在所有輸入資訊上計算注意力分布,二是根據注意力分布來計算輸入資訊的加權平均。

注意力分布採用一種「軟性」的資訊選擇機制,首先計算在給定q和x下,選擇第i個輸入資訊的概率αi:

其中αi 稱為注意力分布(attention distribution),s(xi, q)為注意力打分函式。

加權平均採用一種「軟性」的資訊選擇機制對輸入資訊進行彙總。

軟性注意力機制(soft attention mechanism):

軟性注意力選擇的資訊是所有輸入資訊在注意力分布下的期望。

硬性注意力(hard attention)只關注到某乙個位置上的資訊,有兩種實現方式:一種是選取最高概率的輸入資訊,即 att(x, q) = xj , 其中j為概率最大的輸入資訊的下標,即

另一種是通過在注意力分布式上隨機取樣的方式實現。

硬性注意力的乙個缺點是基於最大取樣或隨機取樣的方式來選擇資訊。最終的損失函式與注意力分布之間的函式關係不可導,因此無法使用在反向傳播演算法進行訓練。為了使用反向傳播演算法,一般使用軟性注意力來代替硬性注意力。

鍵值對注意力用鍵值對(key-value pair)格式來表示輸入資訊,其中「鍵」用來計算注意力分布 αi,「值」用來計算聚合資訊。

其中s(ki,q)為打分函式當k = v時,鍵值對模式就等價於普通的注意力機制。

多頭注意力(multi-head attention)是利用多個查詢q = [q1, · · · , qm ],來平行地計算從輸入資訊中選取多個資訊。每個注意力關注輸入資訊的不同部分。

結構化注意力,輸入資訊本身具有層次(hierarchical) 結構,比如文字可以分為詞、句子、段落、篇章等不同粒度的層次,可以使用層次化的注意力來進行更好的資訊選擇。

注意力機制主要是用來做資訊篩選,從輸入資訊中選取相關的資訊。指標網路(pointer network) 只利用注意力機制中的第一步,將注意力分布作為乙個軟性的指標(pointer)來指出相關資訊的位置。是一種序列到序列模型,輸入是長度為n的向量序列x = x1, · · · , xn,輸出是下標序列c1:m = c1, c2, · · · , cm, ci ∈[1,n],∀i。

當使用神經網路來處理乙個變長的向量序列時,可以使用卷積網路或迴圈網路進行編碼來得到乙個相同長度的輸出向量序列,基於卷積或迴圈網路的序列編碼都是可以看做是一種區域性的編碼方式,只建模了輸入資訊的區域性依賴關係。雖然迴圈網路理論上可以建立長距離依賴關係,但是由於資訊傳遞的容量以及梯度消失問題,實際上也只能建立短距離依賴關係。

建立輸入序列之間的長距離依賴關係有兩種方法: 一種方法是增加網路的層數,通過乙個深層網路來獲取遠距離的資訊互動。另一種方法是使用全連線網路。全連線網路是一種非常直接的建模遠距離依賴的模型,但是無法處理變長的輸入序列。不同的輸入長度,其連線權重的大小也是不同的。

自注意力模型(self-attention model) 利用注意力機制來「動態」地生成不同連線的權重,自注意力模型可以作為神經網路中的一層來使用,既可以用來替換卷積層和迴圈層,也可以和它們一起交替使用。自注意力模型計算的權重αij只依賴,qi和kj的相關性,而忽略了輸入資訊的位置資訊。在單獨使用時,自注意力模型一般需要加入位置編碼資訊來進行修正。

層級注意力模型來自《hierarchical attention networks for document classification》,文章主要內容有:利用文件原有的層次結構特性(句子是由單詞組成,文件是由句子組成),先使用單詞的詞向量表示句子,再此基礎上以句子向量構建文件的資訊表示。在文件中,句子對文件的重要性貢獻有差異,在句子中單詞對句子的重要性貢獻也有差異。而單詞和句子的重要性依賴於上下文環境。相同的單詞,在不同的上下文中所表現出的重要性是不一樣的。為了描述這種情況,引入了attention機制來描述這種重要性。分別從句子級和文件級兩個層次使用attention機制。attention機制可以帶來兩個優點:乙個可以提公升分類效能,第二個可以提公升識別出在影響最終分類決策的單詞或句子的重要性。

attention機制應用的假設是對句子的含義,觀點,情感等任務,每個單詞的貢獻是不相同的。因此,使用attention機制去抽取更重要的單詞。模型網路結構如圖所示:

包括五層網路,詞向量編碼(gru),詞向量attention層,句子向量編碼(gru),句子向量attention層,softmax輸出層.整個網路通過將乙個句子分割為幾部分,每部分都使用雙向rnn結合「注意力」機制將小句子對映為乙個向量,然後對於對映得到的一組序列向量,再通過一層雙向rnn結合「注意力」機制實現對文字的分類。

單詞詞向量:查詢詞向量表(比如glove,word2vec等)生成句子中每個單詞的詞向量,並將句子表示為單詞詞向量的連線句子。

其中xit為單詞向量,表示的就是句子中每個單詞的詞向量表示,句子的總長度為t。

每個單詞詞向量的隱狀態就表示為前向和後向單詞隱狀態的連線,這種表示方法就表示了以某個單詞為中心的句子相關資訊。

單詞級attention:因為句子中每個單詞的重要性不相同,因此使用attention機制描述每個單詞的重要性,抽取相對句子含義重要的那些單詞,使用這些重要的詞的詞向量組成句子的向量表示。

通過乙個線性層對雙向rnn的輸出進行變換,然後通過softmax公式計算出每個單詞的重要性,最後通過對雙向rnn的輸出進行加權平均得到每個句子的表示。其中uw在初始時隨機初始化,在訓練階段學習獲得。bw也是學習獲得。

句子級向量:

句子級attention:

將最後句子級向量表示的文件輸入softmax層,計算分類。

交叉熵損失函式:

實現**參考別人的github專案:

參考《神經網路與深度學習》

文獻閱讀筆記:hierarchical attention networks for document classification

多層注意力模型:hierarchical attention networks for document classification

nlp入門賽task1 賽題理解

賽題名稱 資料集 賽題資料由以下幾個部分構成 訓練集20w條樣本,測試集a包括5w條樣本,測試集b包括5w條樣本。為了預防選手人工標註測試集的情況,我們將比賽資料的文字按照字元級別進行了匿名處理。資料標籤 處理後的賽題訓練資料如下 在資料集中標籤的對應的關係如下 評價標準為類別f1 score的均值...

NLP入門 新聞文字分類Task5

textcnn textrnn 上乙個task4利用了fasttext,但不是最優的思路方法,因此本章將繼續學習基於深度學習的文字分類。基於詞的上下文環境進行 對於每一條輸入文字,選取一定大小的視窗的上下文和乙個中心詞,並基於這個中心詞去 視窗內其他詞出現的概率。通過單詞和上下文彼此 基礎 yoon...

Task1 零基礎入門NLP之新聞文字分類

天池對應比賽 賽題以自然語言處理為背景,要求選手對新聞文字進行分類,這是乙個典型的字元識別問題,通過這道賽題可以引導我們走入自然語言處理的世界,帶我們接觸nlp的預處理 模型構建和模型訓練等知識點。對賽題進行初步的認識和了解 賽題資料由以下幾個部分構成 訓練集20w條樣本,測試集a包括5w條樣本,測...