眾所周知,文本分類是NLP領域中十分基礎的任務,大部分文本分類模型稍加修改就可以應用到其他任務中。下面介紹幾個經典的文本分類模型。

圖中被引數來源google學術(2019/5/16)

1. textCNN

作為一個經典的神經網路模型,CNN具有極強的特徵提取能力,而且運行速度比RNNs要快的多。當CNN在計算機視覺領域取得巨大成功之後,人們自然想到如何將CNN應用到自然語言處理任務中。然而,其關鍵問題便是如何選擇卷積核的尺寸、如何解釋卷積核在NLP任務中的意義。

textCNN[1]採用的卷積核大小為 n	imes d ,其中 d 是詞向量的維度, n 作為超參數由人工選擇。作者認為這樣可以捕捉句子中的n-grams,即如果選擇的卷積核分別為 1	imes d2	imes d3	imes d 就表示捕捉了句子中的1-gram、2-gram、3-gram。接著通過一個max-pooling層,捕捉其中最重要的特徵,同時還可以解決句子長度不一的問題。

textCNN的結構

作為一個14年提出的模型,textCNN簡單有效,十分強大。

2. DCNN

DCNN[2](Dynamic Convolutional Neural Network)和textCNN有些相似,但是從另一個角度來考慮卷積這件事的。

作者認為在建模句子時,詞的順序是非常重要的,循環神經網路(Recurrent neural networks)可以利用詞語間的順序,但是生成的向量會偏向於句子中的最後一個詞,所以它適合用在語言模型中,不適合文本分類任務。而遞歸神經網路[3](Recursive neural networks)通過句法解析樹將句子合成一個向量,可以較好的利用詞語間的順序,但它依賴於句法解析樹,不容易推廣。

RNTN的結構

於是,作者提出可以使用卷積+k-max-pooling動態建模句子的句法結構。其中k-max-pooling指的是進行pooling時選擇前k個最大的值。如下圖所示,藍色的線就是k-max-pooling所選擇的句法結構。

通過DCNN捕捉句法結構

在DCNN中,卷積核的高度並沒有設置為詞向量的維度,而是為1。此外,DCNN中D體現在對k-max-pooling中k的動態選擇上。在DCNN可以看出k表示了每一層節點的個數,所以k隨著層數的增加而會逐漸減少,如下圖由5到3。文章給出了k的計算方式,感興趣的同學去看文章吧。

DCNN的網路結構

3. RCNN

與DCNN中相似,作者認為遞歸神經網路(Recursive neural networks)和循環神經網路(Recurrent neural networks)雖然利用詞之間的順序,但都存在一些問題。與之對比,CNN不依賴於句法解析樹,也沒有偏向的問題(bias problem)。但CNN中的問題在於難以決定卷積核的寬度:較小的卷積窗口會造成關鍵信息的損失,而較大的卷積窗口會使得參數空間過大。

於是,作者提出了RCNN[4](Recurrent Convolutional Neural Network),拋棄了CNN中的卷積核結構,而使用RNN來捕捉單詞的上下文。只看上面一句話,你肯定和我當時一樣雲裏霧裡了。我們來看下面的圖!

RCNN的結構

在上圖中,一個單詞 w_i 經過雙向RNN得到 c_l(w_i),c_r(w_i) ,它們分別保存了單詞 w_i 的上下文,接著將 c_l(w_i),c_r(w_i)w_i 對應的詞向量拼接在一起得到 x_i ,即

x_i=[c_l(x_i);e(x_i);c_r(x_i)].

x_i 經過一個全連接網路得到 y_i 。這便是RCNN的卷積層,之後max-pooling層則和普通的CNN一樣。

從下圖中,我們可以看到CNN的性能隨著卷積核窗口的大小先增加後下降,並且RCNN的性能優於CNN。由於textCNN是同時取多個卷積窗口,所以根據本文無法判斷RCNN和textCNN性能誰好誰壞,但是RCNN為我們設計網路結構提供一個非常好的思路。

RCNN和CNN的性能對比

文章還列舉出了由RCNN獲得的關鍵詞。文章將在max-pooling層被選擇次數最多的詞視為關鍵詞。

情感分類中通過RCNN獲得的類別關鍵詞

4. HAN

前面的模型都是面向句子的,而現實中的許多分類任務是面向文檔的。於是,有學者在2016年提出了HAN[5](Hierarchical Attention Networks),從名字我們就可以看出此模型的兩個關鍵點分別是層次結構和Attention。

HAN的網路結構分兩部分,首先通過attention機制將一句話合成為一個向量 s_i ,然後再次通過attention機制將一個文檔中的所有句子合成為一個向量 v ,再接一個全連接層輸出預測結果。

han的網路結構

合詞成句的時候,(1) 首先使用一個雙層的GRU獲得第 i 個句子第 t 個單詞的隱含表示 h_{it} ;(2) 接下來, h_{it} 首先經過全連接層生成 u_{it} ,然後計算 u_{it} 與向量 u_w 的相似度 alpha_{it} ,通過相似度 alpha_{it}h_{it} 得到句子的加權表示。其中,u_w是網路中可學習的參數,用以衡量單詞對分類任務的重要程度,可以理解為判斷單詞是否為停用詞的一個向量。

u_{it}=	anh(W_wh_{it}+b_w)\ alpha_{it}=frac{exp(u_{it}^	op u_w)}{sum_t exp(u_{it}^	op u_w)}\ s_i=sum_t alpha_{it}h_{it}.

合句成文與合詞成句類似,對應的向量 u_s用來衡量句子的重要程度。

這種層次結構使得HAN在文檔分類中的性能得到大幅提升。此外,文章展示了單詞在合詞成句時的權重分佈,從下圖(b)-(f)中可以看出,隨著情感傾向由負變為正,good的平均權重逐漸增加。

情感分類任務中good的attention權重分佈。

由於HAN使用了RNN,它的時間和空間開銷均大大超過textCNN。後續有文章[6]保持HAN中的層次結構,但是去掉了其中的RNN結構以優化時間開銷,但引起的關注不大。

參考

  1. ^Kim Y. Convolutional neural networks for sentence classification[J]. arXiv preprint arXiv:1408.5882, 2014.
  2. ^Kalchbrenner N, Grefenstette E, Blunsom P. A convolutional neural network for modelling sentences[J]. arXiv preprint arXiv:1404.2188, 2014.
  3. ^Socher R, Perelygin A, Wu J, et al. Recursive deep models for semantic compositionality over a sentiment treebank[C]//Proceedings of the 2013 conference on empirical methods in natural language processing. 2013: 1631-1642.
  4. ^Lai S, Xu L, Liu K, et al. Recurrent convolutional neural networks for text classification[C]//Twenty-ninth AAAI conference on artificial intelligence. 2015.
  5. ^Yang Z, Yang D, Dyer C, et al. Hierarchical attention networks for document classification[C]//Proceedings of the 2016 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies. 2016: 1480-1489.
  6. ^Gao S, Ramanathan A, Tourassi G. Hierarchical convolutional attention networks for text classification[R]. Oak Ridge National Lab.(ORNL), Oak Ridge, TN (United States), 2018.

推薦閱讀:

相關文章