李宏毅:capsule(膠囊網絡)

1、capsule與neural的區別

neural的output是value,capsule的output是vector。

capsule的input可以是其它capsule的output。

neural是偵測某一個pattern,但是capsule是偵測某一類pattern,它輸出的vector的每一個dimension代表pattern的特性,vector的長度代表了這某一類的pattern是否存在。

2、capsule的運作

(1)squash(擠壓)只會改變s的長度,不會改變s的方向。c1和c2不是通過backpropogation學到的,而是在testing的時候online dynamic得到的。可以想象成maxpooling的進階版。c1,c2不一定要是1或0,兩者相加要是1。

(2)dynamic routing

通俗點講就是outlier(離羣點),如果某一個點與其它的點不像的話,它的weight就會越來越小。如下圖所示,假設灰色的點與綠色和黃色的點長得很像的話,就會越來越靠近他們。

計算a1與u1和u2的相似程度,如果a1與u1比較相似,c11的weight就會增加,a1與u2比較相像,c12的weight就會增加,有了a1以後,就會去update你的c1,c2,有了新的c1和c2,就會去計算s2,然後得到a2。。。

(3)training

如下圖,輸入的是1這個圖片,一共就有10個capsule,輸出10個vector,希望這個network的||v1||的norm大一點,||v2||的norm小一點。還有一種是在vector後面加一個neural network,把10個vector串接,進行reconstruction(比如輸進去的是1這個圖片,那把v1乘1,其它vector乘0,再放入neural network中,吃某一個capsule的output,故意調整那個capsule的output的某一個diamention,那就可以知道這個diamention代表了什麼樣的特徵:比如筆畫的粗細,旋轉等特徵)。

3、capsule有什麼好處

invariance:不變性,input不一樣的東西的時候,輸出一樣的東西

equivariance:我們不希望input不一樣的東西的時候,輸出一樣的東西,我們希望輸出的是完全反映了現在看到的輸入

比如下圖:左邊輸入的是不一樣的1,輸出的都是1;右邊輸出的是對稱的1.

capsule是有看到輸入之間的差別(輸出的vector是不一樣的),只不過在最後取norm的時候沒有用這個差別。

 

 

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