1. 程式人生 > >『科學計算』Capsule_Net

『科學計算』Capsule_Net

ima es2017 soft 比較 不同的 循環 學習 而且 第一個

Capsule概述

Capsule機理是使用一個向量代替傳統神經網絡的輸出的標量信息,

傳統的標量只能表示表示出回歸結果或者分類結果,不能表示出同類不同輸入之間的差異,也缺少泛化性:如下向左的和向右的鳥喙並不能經由同一個網絡劃為一種(對於圖像一些變換魯棒性不好)。

而Capsule使用向量L2範數表示輸出分類概率,而向量本身的各個元素對應著輸入圖像的某些特征,如下:使用第一個元素表示鳥喙的方向。

Capsule結構輸入為Capsule的輸出向量,輸出也是向量,這個結構的提出是為了取締pooling,使用近似聚類的方式取代pooling的簡單舍棄大量信息的手法。

技術分享圖片

Capsule結構分析

對於輸入的向量v,首先乘一個矩陣W,這個W是可學習的,然後使用這個轉換後的u進行下一步處理,

然後使用這些u來使用權重c計算中間結果s,s進行一個壓縮得到最後的結果,這個壓縮使得輸出向量各個元素為0-1之間的值。

這個c實際上就是比較關鍵的中間參量(dynamic routing關鍵,不是可學習量)

技術分享圖片

下面簡單介紹一下c的用法,這實際上也是網絡的精華,

初始化中間值b,個數對應輸出向量數,

循環T次,屬於超參數,

  將b使用softmax映射為權重

  各個向量加權平均

  均值擠壓操作,使之進入其他向量的值域(就是各個元素都在01之間的空間)

  更新b,這個更新會賦予與均值接近的各個點更高權重

這樣循環下來會實現數據降維(多個向量合並為一個向量),而且更夠保留各個向量的信息。

技術分享圖片

畫成流程圖,類似RNN,而且訓練過程仍然使用的反向傳播,

技術分享圖片

Reconstruction模塊

因為輸出向量是可以體現輸入特征的,所以還有復原圖像的部分,這裏會使用最大類別的輸出(可以看到只有v1乘了1,其他乘的都是0),進行圖像還原,

而分類部分的訓練就是最大化正確類別的L2範數,最小化其他輸出模長的L2範數,

技術分享圖片

實驗結果

實驗一

比起BL(CNN網絡),錯誤率更低(routing的次數,以及Loss是否加入重建損失 是兩個超參數),而且面對幹擾比傳統神經網絡性能更強勁,

技術分享圖片

實驗二

調整某個已知輸入圖像的輸出向量的某個值,觀察重建圖片的變化,以驗證輸出向量各個元素的意義,如下,效果不錯,

技術分享圖片

實驗三

輸入重疊的數字訓練,輸出重疊的數字,並可以復原(將兩個輸出向量分別送入重建模塊)

根據星標的幾組數據,可以看到,如果重建數字是錯的,那麽該錯誤向量還原的數字也是很模糊的,佐證了向量對於原始信息和分類肯定程度的雙重含義

技術分享圖片

討論

在保留分類信息的情況下,不同的輸入有著不同的輸出,可以看到輸入的差異,如下,

技術分享圖片

很明顯,池化層沒有保留這種信息,

技術分享圖片

這是李宏毅老師對其work的可能性的分析,涉及到註意力機制,不太了解,如有需要之後去補,

技術分享圖片

『科學計算』Capsule_Net