一屁桑、概覽
- 膠囊(capsule)的定義:由眾多神經(jīng)元組成,其中神經(jīng)元的輸出是向量(具有大小栏赴,方向)掏颊。使用激活的向量來(lái)表示特定實(shí)體,例如某個(gè)物體艾帐,或者物體內(nèi)某一部分乌叶。
向量的長(zhǎng)度代表存在該實(shí)體的概率,向量的方向代表其實(shí)例化參數(shù) 柒爸。 - 低層次的膠囊准浴,可以使用實(shí)例化參數(shù),如乘上變換矩陣來(lái)預(yù)測(cè)高層次的膠囊捎稚,然后通過(guò)迭代路由算法乐横,有選擇性地激活合適的高層次膠囊。
- 迭代路由算法:低層次的膠囊傾向于選擇那些與其預(yù)測(cè)輸出的向量今野,點(diǎn)乘之積更大的高層膠囊的激活向量葡公。
- 論文表示,膠囊網(wǎng)絡(luò)在MNIST數(shù)字集上能達(dá)到目前先進(jìn)水平条霜,尤其在識(shí)別重疊數(shù)字方面要?jiǎng)儆诰矸e神經(jīng)網(wǎng)絡(luò)催什。
二、相關(guān)工作
1. 向量神經(jīng)元
在一個(gè)激活的膠囊中神經(jīng)元的作用是表示圖像內(nèi)特定實(shí)體的不同屬性宰睡。這些屬性可以包括許多不同類型的實(shí)例化參數(shù)蒲凶,例如姿態(tài) (位置、大小拆内、方向)旋圆,形變,速度麸恍,色度等灵巧。一個(gè)特殊的屬性是圖像中實(shí)體存在的概率,可以使用一個(gè)輸出為概率的獨(dú)立邏輯單元表示抹沪。論文中采取了向量的總體長(zhǎng)度刻肄,并且通過(guò)非線性單元將輸出控制在1以內(nèi)。值得注意的是采够,在降低向量規(guī)模的同時(shí)保持其方向不變肄方。
傳統(tǒng)的神經(jīng)元,經(jīng)過(guò)一系列加權(quán)求和操作蹬癌,最后僅僅輸出一個(gè)值权她,即為標(biāo)量虹茶。膠囊中神經(jīng)元的輸出為一個(gè)向量,包含多個(gè)值隅要,因此可以用來(lái)表示多種屬性蝴罪。
2. CNN的缺陷
CNN中一個(gè)很重要的步驟是池化(pooling)。它的作用是降低數(shù)據(jù)體的空間尺寸步清,從而減少網(wǎng)絡(luò)中參數(shù)的數(shù)量要门,使得計(jì)算資源消耗變少,也能有效的控制過(guò)擬合廓啊。
但是論文作者 Hinton 認(rèn)為池化有一個(gè)很大的缺陷欢搜,它會(huì)導(dǎo)致重要的信息丟失。
The pooling operation used in convolutional neuralnetworks is a big mistake and the fact that it works so well is a disaster. -- Hinton
如圖max-pooling操作谴轮,丟失了output結(jié)果(2炒瘟,4,2第步,0)在原圖中的相對(duì)位置信息疮装。
我們知道,CNN一個(gè)很重要的特性是權(quán)值共享粘都,即使用一個(gè)卷積核對(duì)圖像的各個(gè)位置進(jìn)行興趣特征提取廓推。這也暴露了一個(gè)問(wèn)題,CNN只考慮了特征是否存在 翩隧,特征的其他屬性如朝向樊展、方位等并沒(méi)有考慮在內(nèi)。
如圖的人臉鸽心,包含了人面部所有特征(眼滚局、耳、口顽频、鼻等),但仔細(xì)一看太闺,會(huì)發(fā)現(xiàn)其明顯不是一張正常人臉圖(將其顛倒過(guò)來(lái)看)糯景。但是CNN仍會(huì)以較大的概率認(rèn)為它是一張人臉。
三省骂、主要工作
1. 向量的計(jì)算
給定低層神經(jīng)元向量 u
蟀淮,權(quán)重矩陣 W
,耦合系數(shù) c
钞澳,預(yù)測(cè)的高層神經(jīng)元向量 v
- 將輸入向量
u
經(jīng)過(guò)權(quán)重矩陣W
生成新的輸入向量U
- 將向量
U
乘上耦合系數(shù)c
怠惶,求和生成向量s
- 通過(guò)非線性函數(shù)將向量
s
轉(zhuǎn)化成輸出向量v
2. 動(dòng)態(tài)路由算法
算法核心:一開(kāi)始初始化先驗(yàn)概率
b
為 0, b
代表向量 i 實(shí)際匹配向量 j 的可能性轧粟。耦合系數(shù) c
由 b
通過(guò)以下公式生成策治。然后通過(guò)1中步驟計(jì)算整體加權(quán)后的預(yù)測(cè)向量 v
脓魏,計(jì)算整體預(yù)測(cè)向量 v
與 個(gè)體預(yù)測(cè)向量 U
的點(diǎn)積,迭代更新先驗(yàn)概率 b
通惫。
原理:兩個(gè)向量的方向越接近茂翔,它們的點(diǎn)積就越大,如下圖中的最大正點(diǎn)積履腋,因而 b
得到較大的正向更新珊燎。它的實(shí)際含義是,此時(shí) b
所對(duì)應(yīng)的向量 i 和 j 有更大的匹配可能性遵湖。
3. 損失函數(shù)
使用間隔損失(Margin loss)表示:
Tk 表示 k 類是否存在悔政,存在為 1,不存在為 0延旧。
m+ 為0.9谋国,當(dāng) k 類存在但是預(yù)測(cè)不存在時(shí)(假陽(yáng)性),會(huì)導(dǎo)致?lián)p失函數(shù)前半部分很大垄潮;
m- 為0.1烹卒,當(dāng) k 類不存在但是預(yù)測(cè)存在時(shí)(假陰性),會(huì)導(dǎo)致?lián)p失函數(shù)后半部分很大弯洗。
λ 為0.5旅急,表示懲罰假陽(yáng)性的重要性大概是懲罰假陰性重要性的2倍。
4. 膠囊網(wǎng)絡(luò)結(jié)構(gòu)
- 首先輸入 28x28 的二維矩陣牡整,通過(guò)常規(guī)的卷積操作藐吮,得到 20x20x256 的ReLU Conv1層輸出;
- PrimaryCaps中使用了32維 9x9x8 的卷積核逃贝,得到 6x6x8x32 的輸出谣辞;
- DigitCaps層是一個(gè)FC層,使用 6x6x32 個(gè) [8x16] 矩陣沐扳,連接前后兩種向量: 1x8 與 1x16 泥从;
PrimaryCaps層表示最低級(jí)別特征,共有 6x6x32 個(gè)沪摄,DigitaiCaps層表示高一級(jí)別的特征躯嫉,共有10個(gè),然后使用動(dòng)態(tài)路由算法杨拐; - 最后計(jì)算輸出向量的 L2 范數(shù)祈餐,確定每類數(shù)字出現(xiàn)的概率。
5. 模型重構(gòu)
模型重構(gòu)就是根據(jù)最后輸出的結(jié)果重新構(gòu)建出一開(kāi)始的輸入圖像哄陶。本文中帆阳,將最后正確預(yù)測(cè)類別的向量投入到3層全連接網(wǎng)絡(luò)中,輸出完整的 28x28 數(shù)字圖像屋吨。
論文在損失函數(shù)中加入了重構(gòu)損失蜒谤,就是取最終輸出和原始圖所有像素值的誤差平方和山宾。
總體損失 = 間隔損失 + α·重構(gòu)損失,α = 0.0005芭逝。
四塌碌、實(shí)驗(yàn)結(jié)果
MNIST重構(gòu)實(shí)驗(yàn)結(jié)果(l : 標(biāo)簽,p : 預(yù)測(cè)值旬盯,r : 重構(gòu)目標(biāo)值)台妆。左邊四列是預(yù)測(cè)正確的,重構(gòu)出的圖像位置和輸入極其類似胖翰,說(shuō)明 capsule 的確能成功地保存位置信息接剩;后面兩列是預(yù)測(cè)失敗的,對(duì)比重構(gòu)出的圖片萨咳,發(fā)現(xiàn)兩者之間相似度很高懊缺,縱是肉眼都較難區(qū)分。
MNIST培他、MultiMNIST測(cè)試集誤差鹃两,其中,Baseline結(jié)構(gòu)為:3個(gè)卷積層舀凛,2個(gè)全連接層俊扳,softmax層∶捅椋可見(jiàn)馋记,采用3次迭代路由,增加重構(gòu)正則化項(xiàng)懊烤,能提高網(wǎng)絡(luò)性能梯醒。