膠囊網(wǎng)絡(luò)

1.背景介紹

??CNNs存在一些缺陷,如需要大量數(shù)據(jù)擬合網(wǎng)絡(luò)幅垮、池化層丟失太多有效信息(包括了特征的位置信息)等腰池。如圖1所示,右側(cè)圖片丟入普通的CNNs军洼,會被判別為人臉,左側(cè)圖片丟人普通的CNNs演怎,也會判別為人臉匕争,CNNs捕捉特征能力很強,但特征之間的聯(lián)系等信息爷耀,CNNs是丟失的甘桑。


圖1 CNNs判別人臉的問題

??Hinton等人于2017年提出了膠囊網(wǎng)絡(luò)。其引入了膠囊(capsule)結(jié)構(gòu)(多個神經(jīng)元組成)歹叮,其輸入是向量跑杭,輸出也是向量,其每一個膠囊都對應(yīng)一個實體咆耿,向量的大械铝隆(模)表示實體出現(xiàn)的可能性,向量的方向(向量的分量決定其方向)表示實體的屬性萨螺。多個膠囊組成了膠囊網(wǎng)絡(luò)的某一層窄做,多個膠囊網(wǎng)絡(luò)的層就組成了膠囊網(wǎng)絡(luò)愧驱。
??舉個例子,如圖2中有一個膠囊對應(yīng)數(shù)字6椭盏,其輸出對應(yīng)數(shù)字6的16維向量表示组砚,若我們微調(diào)某一個分量的值,在重構(gòu)數(shù)字6(重構(gòu)掏颊,是指通過向量恢復(fù)出原來的數(shù)字)的時候糟红,就可能對應(yīng)數(shù)字6粗細、大小的改變等乌叶,同時數(shù)字6出現(xiàn)在圖中的概率就用向量的大小去衡量盆偿。


圖2 膠囊輸出向量的解釋

2.數(shù)據(jù)集介紹與網(wǎng)絡(luò)結(jié)構(gòu)

??數(shù)據(jù)集采用mnist(手寫數(shù)字集),共60K訓(xùn)練枉昏,10K測試陈肛,沒有預(yù)訓(xùn)練。
??網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示兄裂。具體實現(xiàn)有多種句旱,這里寫出一種,第一步晰奖,一張28×28的手寫數(shù)字圖片谈撒,經(jīng)過了1個256個filter的卷積層,每個filter里卷積核大小9×9匾南,步長為1啃匿,填充為0,再經(jīng)過ReLU蛆楞,得到的就是(256溯乒,20,20)的張量豹爹;第二步裆悄,要得到32個PrimaryCap,每個基本PrimaryCap(基礎(chǔ)膠囊)其維度是(8臂聋,6光稼,6),只要做32次卷積孩等,每次卷積得到一個PrimaryCap即可艾君,每次卷積參數(shù)是8個filter,每個filter里卷積核大小9×9肄方,步長為2冰垄,填充為0,再經(jīng)過ReLU权她,就可以得到(8播演,6冀瓦,6)的基礎(chǔ)膠囊了,又因為32次卷積写烤,故而得到(32翼闽,8,6洲炊,6)的張量感局,最后考慮將其形變?yōu)椋?152,8)的膠囊集合(即1152個膠囊暂衡,每個膠囊輸出維度是8)询微;第三步,通過膠囊之間的交互(下一節(jié)細講)狂巢,得到下一層的數(shù)字膠囊(DigitCaps)輸出撑毛,其維度為(10,16)唧领,最后對10個向量求模長藻雌,得十維向量,其分量最大者所在位置就是對應(yīng)最大可能出現(xiàn)在圖中的數(shù)字斩个。


圖3 模型結(jié)構(gòu)

3.膠囊與膠囊之間的互動

??在PrimaryCaps層有1152個8D的膠囊胯杭,DigitCaps層有10個16D的膠囊,如何處理呢受啥,類比兩個全連接層的做法做个,后一層的某一個輸出是前一層所有結(jié)點輸出的線性組合,再經(jīng)過激活函數(shù)滚局,同理居暖,后一層的某一個膠囊輸出是前一層所有膠囊先投影(8D與16D畢竟維度不匹),經(jīng)過線性組合藤肢,再經(jīng)過向量大小壓縮函數(shù)(為什么要對向量大小進行壓縮呢太闺?因為向量的大小是表示一個實體存在的概率,概率值需要在[0,1]之間谤草,故而要壓縮下)跟束。
??對上述步驟進行分解莺奸,投影操作是引入Wij矩陣丑孩,其維度是(16,8)灭贷,共1152×10個温学;前一層(1152,8)的張量甚疟,經(jīng)過了投影操作仗岖,就變?yōu)椋?152逃延,10,16轧拄,1)的張量揽祥;那么組合系數(shù)如何確定呢?通過路由算法確定組合系數(shù)檩电,再進行線性組合拄丰,就得到(10,16)的張量俐末,最后經(jīng)過向量壓縮函數(shù)即可(向量壓縮函數(shù)如圖4所示)料按。


圖4 向量壓縮方法

??路由算法偽碼如圖5所示,其中是指前一層第i個膠囊輸出經(jīng)過Wij投影后的值卓箫,j是下層膠囊編號载矿,r是控制算法內(nèi)部循環(huán)次數(shù),一般為3烹卒,l是層數(shù)闷盔;其例子如圖6所示(假設(shè)r=1)。


圖5 路由算法偽碼

圖6 路由算法的例子

??以上就是兩膠囊層之間如何互動的了甫题,作者引入路由算法就是想替換到CNNs中的池化操作馁筐,池化操作以提取重要特征為目的,2×2的池化操作是4取1坠非,丟失噪聲同時也丟失了其他有用信息敏沉,路由算法更像是一種平滑操作,去噪聲的同時還盡可能保留了一些信息炎码,不禁讓人想到同年同Google公司大牛提出的Attention Is All You Need中的Scaled Dot-Product Attention操作盟迟,后者也可以理解為一種平緩操作,結(jié)合上下文去噪聲潦闲。

4.路由算法的版本

??路由算法至少有兩個版本攒菠,一個是原paper版本,一個是網(wǎng)絡(luò)流傳的版本歉闰。主要區(qū)別是前者對bij按照后一層膠囊數(shù)(即j)的維度進行softmax辖众,后者對bij按照前一層膠囊數(shù)(即i)的維度進行softmax。實現(xiàn)起來都是可以的且性能接近和敬。對此凹炸,有如下解釋,前者是從前一層的每一個膠囊分配向量量的角度昼弟,后者是從后一層的每一個膠囊組合向量量的角度啤它。前者是分配,更像是路由,也就是paper的版本变骡。

5.動手實現(xiàn)

??此處的實現(xiàn)离赫,網(wǎng)絡(luò)結(jié)構(gòu)遵循paper,實現(xiàn)方法根據(jù)第2節(jié)描述塌碌。
??下面講幾個在實現(xiàn)中比較惡心的坑渊胸。其一,高維張量與高維張量矩陣乘法一定要檢驗台妆;其二蹬刷,在數(shù)字膠囊中,bij并不是參數(shù)频丘,其不需要梯度办成,真正的參數(shù)是W,故而注意其他有梯度的變量經(jīng)過操作得到bij時搂漠,需要對其他有梯度的變量分離梯度迂卢,否則反向傳播,更新梯度時桐汤,bij會被更新而克;其三,數(shù)字膠囊的W前面×0.01怔毛,是為了加速訓(xùn)練员萍,如果不乘0.01,也是可以的拣度,只是一開始效果沒那么好碎绎,甚至模型跑完一整個epoch,也起不來抗果。


圖7 導(dǎo)包
圖8 數(shù)據(jù)加載
圖9 卷積層
圖10 向量大小壓縮方法
圖11 基礎(chǔ)膠囊層
圖12 數(shù)字膠囊層
圖13 路由算法
圖14 膠囊網(wǎng)絡(luò)
圖15 margin loss
圖16 訓(xùn)練方法
圖17 獲取迭代器
圖18 主函數(shù)

6.實驗結(jié)果

??模型相比paper里面的性能(測試集99.65%的正確率)筋帖,還是有一定差距的,在驗證集上是接近99%冤馏∪蒸铮考慮到實現(xiàn)方法不同、手寫代碼的粗糙等逮光,差于paper表現(xiàn)也是可以解釋的代箭。


圖19 前五個epoch的表現(xiàn)
圖20 loss曲線
圖21 acc曲線

7.致謝

??感謝苗翔宇同學(xué)幫我改了一天BUG。

8.參考文獻

[1] Dynamic Routing Between Capsules
[2] Simple explanation for Capsule Network with Pytoch implementation
[3] Simple explanation for Capsule Network with Pytoch implementation(github)
[4] Capsule-Network-Tutorial(github)
[5] 李宏毅.膠囊網(wǎng)絡(luò)教程.
[6] capsule解讀
[7] 論文閱讀<2> Dynamic Routing Between Capsules
[8] Dynamic Routing Between Capsule論文閱讀筆記
[9] 程天宏同學(xué)的代碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末涕刚,一起剝皮案震驚了整個濱河市嗡综,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌副女,老刑警劉巖蛤高,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異碑幅,居然都是意外死亡戴陡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進店門沟涨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來恤批,“玉大人,你說我怎么就攤上這事裹赴∠才樱” “怎么了?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵棋返,是天一觀的道長延都。 經(jīng)常有香客問我,道長睛竣,這世上最難降的妖魔是什么晰房? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮射沟,結(jié)果婚禮上殊者,老公的妹妹穿的比我還像新娘。我一直安慰自己验夯,他們只是感情好猖吴,可當(dāng)我...
    茶點故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著挥转,像睡著了一般海蔽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上绑谣,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天准潭,我揣著相機與錄音,去河邊找鬼域仇。 笑死刑然,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的暇务。 我是一名探鬼主播泼掠,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼垦细!你這毒婦竟也來了择镇?” 一聲冷哼從身側(cè)響起报破,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤纵刘,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后型宙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡吝梅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年虱疏,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片苏携。...
    茶點故事閱讀 38,625評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡做瞪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出右冻,到底是詐尸還是另有隱情装蓬,我是刑警寧澤,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布纱扭,位于F島的核電站牍帚,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏乳蛾。R本人自食惡果不足惜履羞,卻給世界環(huán)境...
    茶點故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望屡久。 院中可真熱鬧忆首,春花似錦、人聲如沸被环。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽筛欢。三九已至浸锨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間版姑,已是汗流浹背柱搜。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留剥险,地道東北人聪蘸。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像表制,于是被迫代替她去往敵國和親健爬。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,492評論 2 348

推薦閱讀更多精彩內(nèi)容