深度學習之文本分類模型-基於attention機制


1、HAN

HAN(Hierarchical Attention Networks)是由Zichao Yang[1]等人提出的一種算法,其主要思想是利用attention機制,將單詞進行編碼,得到句子的向量s,接着用同樣的方式對句子進行編碼,最終得到文章的向量V,最終,可以在V上加入softmax,進而進行分類模型的構建。最終在多個數據集上達到了SOTA,其模型結構圖如下所示:

整體的架構包括四個部分:word encoder, word attention, sentence encoder, sentence attention。

  • word encoder
    給定一個句子中的單詞\(w_{it} t \in [0,T]\),我們首先得到單詞的embedding信息,通過矩陣\(W_{e}\)\(x_{ij} = W_{e} * w_{it}\),接着,我們將得到的單詞信息依次的通過雙向的GRU網絡,分別得到相應每個單詞隱藏層輸出信息。公式如下所示
接下來,我們將每個單詞雙向的GRU輸出拼接成一個向量$h_{it} =\left[\overrightarrow{h}_{i t}, \overleftarrow{h}_{i t}\right]$
  • Word Attention
    我們將\(h_{it}\)輸入到一個多層感知機(MLP)中,激活函數是tanh函數,並得到\(u_{it}\)向量,接下來,我們通過上下文向量\(v_{w}\)\(u_{it}\)進行向量操作,並通過一個softmax層,最終得到單詞的重要性矩陣\(\alpha _{it}\),表示第\(i\)個句子中第t的位置的重要性。最后我們將重要性的矩陣加到\(h_{it}\)上,得到句子的向量\(s_{i}\),具體公式如下:
  • Sentence Encoder
    Sentence Encoder和word encoder相似,同樣輸入到一個雙向的GRU中,並將兩個雙向的向量進行拼接,得到第\(i\)個句子\(h_{i}\)
  • Sentence Attention
    接下來我們按照上述方式,得到句子的重要性矩陣\(\alpha _{i}\),並將其作用到\(h_{i}\)中,最終得到文章的向量\(v\),公式如下
  • Document Classification
    當我們得到文檔的向量后,我們就可以加上全連接層,輸出節點的個數是類別數量,構建模型進行訓練了。

2、inner-attention for NLI

這里介紹一個自然語言推測(NLI)的任務,NLI講的是一個句子是否可以推測出另外一個句子,這種可以看做是一個分類任務,類別有三種,分別是Entailment (inferred to be true), Contradiction (inferred to be false) and Neutral (truth unknown),例如:

Yang Liu[2]等人提出了將mean pooling 和 inner-attention方法加入到了這種任務中。其思想整體架構圖如下所示

其網絡結構可以看做是孿生網絡結構,我們輸入"前提"句子和"假設"句子,通過共享的多層網絡,最終得到兩個句子的表達,最后將兩個句子做一個拼接,最后加上一個softmax層,作為最終的分類。

其網絡結構由三部分組成:sentence input,sentence encoding, sentence matching

  • sentence input
    sentence input 模塊主要是將單詞轉化為詞向量,這里就不做過多的講解了,可以利用固定詞向量,或者是隨着網絡自己訓練。
  • sentence encoding
    sentence encoding首先將詞向量通過雙向的LSTM,得到對應的表達,接下來包括兩個階段,第一個階段是將最頂端的LSTM的輸出進行average pooling操作,得到對應的向量,第二個階段是Inner attention,其公式如下

其中Y表示雙向LSTM的輸出,\(R_{ave}\)表示的平均池化的輸出,\(\alpha\)表示attention矩陣,這里論文中的參數介紹的並不是很詳細,我理解之所以叫Inner attention是因為它用了內部的LSTM的表達。

  • sentence matching
    我們將兩個句子分別得到相應的表達,那么拼接的方式有三種:a、直接拼接。b、元素之間相乘。c、元素之間求差異(沒明白啥意思)。最終,我們在最后加上softmax層。

3、Attentive Pooling

AP(Attentive Pooling)是用於QA的,其由IBM的Cicero dos Santos(3)等人提出的一種算法,其基本思想是利用一個權重矩陣,將問題Q和答案A進行信息的交互關聯,也就是說Q的表達中包含A的一些信息,A的表達中又包含了Q的一些信息,在最后,我們各自提取每個維度的max pooling的值,各自經過softmax,得到相應的表達。總體的結構圖如下所示

由圖所示,我們首先得到question和answer的表達,即各自的詞向量WEs,接下來,我們利用LSTM或者是CNN提取深層次的特征,對於模型利用LSTM來說,我們叫AP-LSTM,對於利用CNN的模型來說,叫做AP-CNN,接着,我們得到對應的輸出Q和A,接着建立一個向量矩陣G,我們利用\(tanh(Q^{T} G A)\)得到Q和A相關的表達G,接下來,利用max pooling,得到row的表達和column的表達,將這兩個表達分別進行softmax,進而乘以各自的原始向量Q,A,得到表達\(r_{q}\)\(r_{a}\),我們利用向量相似性計算方式,得到兩者的結果。

4、LEAM

LEAM是Guoyin Wang[4]等人提出的將單詞和分類的label同時進行embedding,接着利用兩者向量的cosin余弦值獲得矩陣向量,利用"划窗"方法(這個名字是我自己取得)得到對應的向量,最后輸出層依舊是softmax,進行分類預測。整體邏輯架構如下圖所示

這里(a)表示的是傳統的分類方法,(b)是作者提出的算法。我們分別來進行講解。

  • step1
    我們首先得到單詞的embedding向量和label的embedding向量。假設單詞的embedding向量維度為V=(128,100),label的embedding向量為C=(10,100)其中,128代表輸入單詞的個數,10代表類別標簽的個數。

  • step2
    接下來進行C和V的cosin操作,這里將C和V進行矩陣操作,得到(128,10)的矩陣,\(\hat{G}\)也是(128,10)的矩陣,將這兩個向量進行相除,得\(G\)。為啥會有個\(\hat{G}\)這個矩陣呢,我們知道cosin余弦最后要除以兩個向量模的乘積,所以在\(\hat{G}\)的每個單元格中,分別代表各自向量模的乘積。

  • step3
    接着,我們將這個(128,10)的矩陣進行一些操作,對於其中的一條向量,我們選擇其上下各r個向量,包括該向量本身,組成一個(2r+1,10)的矩陣,這里\(W_{1}\)是一個(2r+1)的向量,\(b_{1}\)為(10)維向量,我們對(2r+1,10)的這個矩陣進行操作,首先與\(W_{1}\)進行矩陣乘法,得到(10)維向量,再與\(b_{1}\)進行相加,得到(10)維向量。最后,我們利用max_pooling取這個(10)維向量中最大的,得到\(m_{l}\)

  • step4
    經過多次這樣的操作,我們會得到一個長度為L的向量\(m\),對\(m\)進行softmax操作,最終得到\(\beta\)

  • step5
    \(\beta\)為一個長度為L的向量,其中每一個維度都表示當前單詞\(l\)的一些權重信息,我們將權重信息乘以最后的單詞信息\(v_{l}\)上,本質上是對單詞向量加上權重,並將所有詞向量的各個維度進行相加,最終得到向量維度為10的固定向量。有了這個表達向量,我們就可以進行最后的softmax操作,進行分類的訓練了。

5、DRCN

DRCN(Densely-connected Recurrent and Co-attentive neural Network )是由韓國人Seonhoon Kim[5]等人提出的一種算法,其整體思想是將embedding層,RNN隱藏層和經過attention之后的向量進行拼接,並進行多次這樣的操作,最終通過一個AE,池化,和全連接操作,得到相應的結果。其主要包括Word Representation Layer、Densely connected Recurrent Networks、Densely-connected Co-attentive networks、Bottleneck component、Interaction and Prediction Layer。接下來我們一步一步來進行解釋。

首先我們先放上論文中模型的結構圖。

  • Word Representation Layer
    詞向量的輸入,詞向量的輸入分為四個部分,並將這四個部分進行拼接,第一部分是用固定詞向量,這里可以利用word2vec或者glove等其他詞向量獲取方式得到詞向量。第二部分是可訓練詞向量,這里其實也可以利用word2vec或者glove等訓練的詞向量,或者使用隨機初始化的詞向量,這一部分的詞向量會在訓練時更新參數。這里作者給出了兩者的優缺點,固定詞向量可以防止過擬合,但是對於特定領域的數據不靈活,可訓練的詞向量可以得到特征間的關系的表達,但是容易過擬合,所以將兩者一起使用。第三個部分是字符級別的embedding,這里的embedding經過一個卷積神經網絡,得到對應的表達,第四個部分表示當前單詞是否出現在另外一個句子中,這樣將這四個部分詞向量進行拼接,得到模型的輸入詞向量。公式如下

其中\(e_{p_{i}}^{fix}\)表示第二部分,固定詞向量。\(e_{p_{i}}^{tr}\)表示第二部分,可訓練詞向量。\(c_{p_{i}}\)表示第三部分,字符級別向量。\(f_{p_{i}}\)表示第四部分。最后將這些向量進行拼接,得到輸入向量。

  • Densely connected Recurrent Networks
    這一部分就是得到RNN的輸出向量,這里也有三種方式,第一種,直接利用RNN的輸出向量\(h_{i}\),第二種,將RNN的輸出向量\(h_{i}\)和輸入向量\(x_{i}\)進行加和,第三種,將\(h_{i}\)\(x_{i}\)進行拼接。

  • Densely-connected Co-attentive networks
    這一部分,我們需要獲得attention的表達,公式如下

在每一個步驟中,我們都會得到兩個句子的RNN隱藏層表達,分別為\(h_{p_{i}}\)\(h_{q_{j}}\),我們初始化有一個attention權重矩陣\(\alpha_{ij}\)表示第一個句子第\(i\)個單詞和第二個句子第\(j\)個單詞的權重,首先,我們根據權重矩陣\(\alpha_{ij}\)和第二個句子\(h_{q_{j}}\)得到第一個句子相應的表達\(\alpha_{p_{i}}\),接下來,我們更新權重矩陣\(\alpha_{ij}\),首先我們獲得\(h_{p_{i}}\)\(h_{q_{j}}\)\(\cosin\)余弦值以及\(h_{p_{i}}\)和其他單詞的余弦值,但其實這里我有個疑問,就是在第一輪的時候,后面的RNN隱藏層單元還沒有得到,這里我們怎么計算余弦值?這里先空着,如果后續有答案了再補上。最終,我們將上面兩個部分得到的向量進行拼接,最終得到新的輸入向量。

  • Bottleneck component
    這里加入了一個AE,說是由於參數量過大,目的是為了減少參數量。
  • Interaction and Prediction Layer
    最終,我們得到兩個句子的輸出,我們可以利用\(p+q\)\(p-q\)\(|p-q|\)等操作,以及原始\(p,q\)進行拼接,再加上一個全連接層,最終得到相應的輸出。

6、ABCNN

ABCNN(attention based CNN)是由Wenpeng Yin[6]等人提出,其目的是將attention機制加入到CNN中,實驗結果取得了SOTA的效果。其模型總共由三個,分別是ABCNN-1,ABCNN-2,ABCNN-3。下面分別來進行介紹。

這兩節主要介紹了文本匹配,其實文本匹配在形式上也是一種分類任務,在輸出端為二分類,表示相關和不相關,所以將其放在文本分類中進行講解。

  • ABCNN-1
    紅色框框為輸入的文本向量表達,我們看到由兩個紅色的框框,分別表示兩段文本,假設其中一段文本維度為[5,8],另一段文本為[7,8],首先,我們利用一些求相似性的手段,論文中用\(1/(1 + |x - y|)\)其中,x,y分別表示[1,8]和[1,8]的文本,其中\(|.|\)表示歐式距離,這樣我們就可以得到attention matrix的矩陣A,其維度為[5,7],接下來,我們用兩個向量\(w_{0},w_{1}\)來對矩陣\(A\)進行向量操作,其中\(w_{0}\)的維度是[7,8],\(w_{1}\)的維度是[5,8],這樣就可以得到attention feature map,其維度分別為[5,8]和[7,8],我們將這兩個attention feature map 和 原始的representation feature map進行組合,輸入到卷積神經網絡中,得到輸出。

  • ABCNN-2
    由圖所示,我們假設conv input的兩個句子分別為[5,8]和[7,8]的矩陣,首先,經過一個卷積層,得到[7,8]和[9,8]的矩陣,之所以維度會增大是因為在輸入的句子中加入了padding向量。接下來,我們依舊通過一些操作得到attention matrix A,A的維度是[7,9],方法依舊可以用ABCNN-1的方法來進行獲得。接着,我們將A的行和列分別進行相加,得到[1,7]和[1,9]的向量,並用卷積層對原始的[7,8]和[9,8]的矩陣進行卷積操作,這里不進行padding,窗口大小為3,filter大小為[3,8],我們先將[1,7]的對應3維向量和filter,以及原始矩陣進行相乘,並在相應維度進行相加求平均操作,得到[1,8]向量,經過5次卷積,得到[5,8]向量,最后,我們可以根據得到的兩個[5,8]矩陣進行操作。

  • ABCNN-3
    ABCNN-3就是將ABCNN-1和ABCNN-2進行合並

7、Multiway Attention Networks

這篇論文是Chuanqi Tan[7]等人發表的,這篇論文的主要思路是使用了四種attention的方式對句子進行表達,分別是Concat Attention、Bilinear Attention、Dot Attention、Minus Attention四種attention方式,模型整體架構如圖所示分為編碼層,多方式attention匹配層,聚合層、預測輸出層。

  • 編碼層
    這一層對輸入的單詞進行編碼,這里使用預訓練的語言模型來獲取單詞的詞向量。對於句子P,Q來說,得到這兩個句子中每個單詞的詞向量。接下來我們分別將其輸入到雙向GRU得到輸出\(h_{t}^{q} = [ \xrightarrow [h_{t}^{q}] , \xleftarrow[h_{t}^{q}] ]\)以及\(h_{t}^{p} = [ \xrightarrow [h_{t}^{p}] , \xleftarrow[h_{t}^{p}] ]\)
  • 多方式attention匹配層
    這一層為整體邏輯的核心層,其中attention的方式包括四種,分別是Concat Attention、Bilinear Attention、Dot Attention、Minus Attention,接下來,我們羅列出每一種attention相應的公式。


    我們以Concat Attention方式進行講解,\(h_{t}^{p}\)表示\(t\)時刻p的輸出,我們將這個輸出乘以一個\(W_{c}^{2}\)接着加上q中第\(j\)個單詞輸出乘以\(W_{c}^{1}\)的結果,在外層加上一個tanh激活函數,再乘以\(v_{c}^{T}\)得到q的第j個單詞的輸出\(s_{j}^{t}\),當我們得到q中所有單詞的\(s_{j}^{t}\)后,進行一個softmax操作,得到\(\alpha_{i}^{t}\),將結果加在\(h_{t}^{q}\)上,得到結果\(q_{t}^{c}\)。其他幾種方式得到類似的結果。
  • 聚合層
    聚合層的作用是將上一層多種方式得到的輸出進行合並
  • 預測輸出層
    將上一層得到的結果進行組合輸出。

8、aNMM

aNMM(Attention-Based Neural Matching Model)是由Liu Yang[8]等人提出的一種方法,其主要創新點是應用了一個Value-shared Weighting的方式將變長的矩陣轉換成固定維度的矩陣,其整體邏輯結構如下圖所示

主要部分有word embedding,QA Matching Matrix,Value-shared Weighting,Question Attention Network四個部分,接下來我們一一進行講解

  • word embedding
    首先,我們獲取Q,A的單詞的詞向量,這里論文中用的方式是word2vec。假設Q中有M個單詞,A中有N個單詞,向量維度為D,則我們會得到兩個矩陣[M,D],[N,D]。
  • QA Matching Matrix
    這一步我們得到上述兩個矩陣相乘的結果矩陣,維度為[M,N],其中第\(i\)行第\(j\)列表示Q中第\(j\)個單詞和A中第\(j\)個單詞的詞向量進行cosin余弦操作。
  • Value-shared Weighting
    由於A是變長的序列,所以這里的N是變長的,如果我們想把向量輸出到固定維度,傳統的做法是利用CNN進行卷積操作,得到固定維度向量。論文中提出了一種新的方法,即由於cosin余弦值的范圍是在[-1,1]那么我們可以將其以0.1進行分割,分成21份,[-1,-0.9),[-0.9,-0.8).....[0.9,1),[1]。這樣,我們建立一個參數個數為21的向量,這樣,對於其中一個值為0.85,我們就可以用[0.8,0.9)的這個權值和0.85進行相乘操作,這個輸出的維度我們可以固定,這一部分的結構圖如下所示。圖中的21變為了3。
  • Question Attention Network
    圖中得到的固定維度的輸出,圖中為4,我們將這4個值進行相加並利用sigmoid函數將進行激活,並作用到Q向量上,加上一個softmax,輸出層利用一個兩個節點表示相關與否,並將上一層與這一層進行一個全連接操作。
參考文獻
[1]Zichao Yang(2016)Hierarchical Attention Networks for Document Classification.
[2]Yang Liu(2016)Learning Natural Language Inference using Bidirectional LSTM model and Inner-Attention
[3]Cicero dos Santos(2016)Attentive Pooling Networks.
[4]Guoyin Wang(2018)Joint Embedding of Words and Labels for Text Classification.
[5]Seonhoon Kim(2018)Semantic Sentence Matching with Densely-connected Recurrent and Co-attentive Information
[6]Wenpeng Yin(2018)ABCNN: Attention-Based Convolutional Neural Network for Modeling Sentence Pairs
[7]Chuanqi Tan.Multiway Attention Networks for Modeling Sentence Pairs
[8]Liu Yang(2019)aNMM: Ranking Short Answer Texts with Attention-Based Neural Matching Model.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM