論文解讀:膠囊網路在小樣本做文本分類中的應用(上)
論文提出用膠囊網路(Capsules Network)來處理短文本的類表示,從而能夠進行小樣本的學習。通過關係網路學習Query樣本和類表示向量的相似行進行分類。
演算法的框架圖:
由三個部分組成:Encoder + Induction + Relation
1、Encoder
這個部分比較簡單,就是提取特徵的Bi-LSTM + Attention部分,這裡的Attention精過實驗會發現Self-Attention比用lstm_output和hidden計算的Attention效果要好。
self-attention:
2、Induction
這個模組是論文的核心創新點:提出用膠囊網路(Capsules Network)來動態的表徵類向量,句子向量低層特徵通過動態路由演算法(dynamic routing)映射到高層特徵,在膠囊網路里可以稱之為膠囊。通過這個網路就能夠學習部分sample對某一類文本分類類別的貢獻更大,那麼就能夠反應文本的類表示。
歸納網路induction net的訓練過程如下:
需要將support訓練得到的類表示向量c_i與query輸入的查詢向量做相似性比較,從而來判斷query的文本是屬於哪一類或者是屬於新的類別
為了能夠將膠囊網路學習的語義特徵空間根據數據的維度映射到任意的維度,在做dynamic routing之前,論文提出先做一步線性映射,在壓縮成膠囊尺寸的單位向量:
接下來就是根據上圖所示的程式碼流程進行動態路由演算法,超參數iterate設置的越大,訓練會更慢,但是效果也會有一定的提升。動態調整上下兩層膠囊的連接權重,並且和為1:
計算\hat{c}*j表示通過鏈接權重與encoder的點積得到的權重分配(相關性),再更新b*{ij}調節連接強度。
具體的膠囊網路的理解可以看看下一篇部落格
3、Relation
通過induction模組得到support set的類表示,接下來就是衡量c_i和e_{ij}之間的相關性,就是簡單的dnn。論文中是通過定義的一個三維tensor建模類向量和query向量質檢的交互關係,再stack起來,進全連接層對關係進行打分,這裡用的是sigmoid。
但是通過實驗,relation可以變化和優化的方法很多,直接計算PCC或者cosine距離都能夠得到不錯的效果。
下面是論文的具體演算法過程:
在每個episode中來迭代模型,首先是從訓練集類別中隨機抽取C個類,然後從每個類中選擇部分樣本構成Support Set,並且會從剩餘的樣本中抽取樣本構成Query Set。在論文中是能夠不需要做finetune來泛化學習新的類別的。並且需要訓練的episode非常大,需要超過C_{k_way}^{num_class}的次數。因此也可以嘗試做一些finetune,也會達到不錯的效果
論文地址:Dynamic Memory Induction Networks for Few-Shot Text Classification