capsules系列Investigating Capsule Networks with Dynamic Routing for Text Classification

1.背景介紹

早期對文本建模的成果,已經在文本分類方面取得了一些成功,使用簡單的詞袋子分類器(Joachims,1998;McCallum等,1998),意味着理解獨立單詞或N-gram詞組的含義是研究複雜模型的必要步驟。因此,這也不奇怪出現了分佈式的詞語表示法,也就是詞嵌入/詞向量,已經得到NLP社區的高度關注,解決了在基本層面上應該對什麼(詞義)建模的疑問(Mikolov等,2013;Pennington等,2014).。爲了對文本中的更高層次的概念和事實建模,NLP研究人員必須思考這個問題:除了詞義實際上還需要對什麼建模。這個問題的一個常見方法是將文本視爲序列並關注其空間模式,其代表包括卷積神經網絡(CNN)(Kim,2014;Zhang等,2015;Conneau等,2017)和長短記憶網絡(LSTM)(Taietal,2015;Mousa與Schuller,2017)另一種常見的方法是完全忽略單詞的順序,而將這些單詞作爲一個集合,其代表包括概率主題模型(Blei等,2003;Mcauliffe與Blei,2008)和Earth Mover的基於距離的建模(Kusner等,2015; Ye等,2017)。
作爲一種空間敏感模型,CNN爲網格上覆制特徵探測器的低效性付出了代價。正如在(Sabour等,2017)中所論述的,人們必須在大小隨維數增加指數增長的複製檢測器和以類似指數方式增加標記訓練集的體積之間進行選擇。另一方面,空間不敏感的方法在判斷的場景中是完全有效的,而不管任何單詞或局部模式的順序如何。

傳統的分類問題一般採用CNN或者RNN,並採取hierarchical的方式提取特徵,但是這兩種基礎的結構都存在各自的問題:

  • CNN在運用feature detectors提取特徵後往往會通過max-pooling的方式選擇prominent feature,這種方式用Hinton的話來說帶來的後果是disastrous的。另外CNN的特徵抽取和泛化能力也存在一定問題,可以詳細參考之前的文章:capsule系列之Dynamic Routing Between Capsules
  • RNN由於是一個序列模型,而我的實驗和經驗覺得分類問題本身對時序語義沒有那麼強烈,再加上RNN本身訓練時間較爲漫長。

2.模型特色

繼capsule在圖像處理上的應用,capsule首次運用在了nlp領域,也顯示出了其在分類問題(我覺得更準確來說是在特徵提取)上的良好結果。

本文模型特點:

  • 採用傳統模型思想(cnn中low level用feature detectors的方式提取特徵並max-pooling,並逐層提取特徵),通過兩層capsules的結構,第一層提取local feature,第二層提取fully feature;
  • 修改routing策略:
    • 引入Orphan Category的理念,具體是:增加一個最終分類的種類,這個向量可以捕捉到“back-ground”信息(這種信息具體在文本中是停用詞或者一些其他的無用詞)
    • 在capsule中,預測向量的權重CijC_{ij}的計算時,使用了Leaky-Softmax替換softmax,在不增加計算量的同時,來處理lll+1l+1層的noise child capsules的問題,具體可思路如下(代替softmax):
      leak = tf.zeros_like(b, optimize=True)
      leak = tf.reduce_sum(leak, axis=1, keep_dims=True)
      leaky_logits = tf.concat([leak, b], axis=1)
      leaky_routing = tf.nn.softmax(leaky_logits, dim=1)        
      c = tf.split(leaky_routing, [1, output_capsule_num], axis=1)[1]
      
    • 在leaky-softmax 的基礎上添加Coefficients Amendment參數修正,具體操作如下圖,(這部分沒在源碼裏面找到,原因也不是很清楚,望大佬告知)
      在這裏插入圖片描述

3.模型結構

基本的模型過程是這樣的:
在這裏插入圖片描述
在擼源碼時自己手畫了一個,根據源碼來的:
在這裏插入圖片描述

上面作爲一個細節思路,文章同時給出了兩種模型結構:
在這裏插入圖片描述

源碼:zsweet/capsule_text_classification
其他實現源碼以及其他任務源碼:
AidenHuen/Capsule-Text-Classification
JerrikEph/Capsule4TextClassification

4.小結

模型整體上做了一些創新,也在routing的時候增加了一些trick,但是在Capsule-B中時,最後使用了max-pooling,這和capsule的初衷是相違背的,但是其特徵抽取能力是不錯的,所以關於capsule在nlp相關的任務上如何使用我覺得是現在一個很好的研究點。

參考

本文只列出了自己的部分觀點和認識,原文有更多的相關細節描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章