The pooling operation used in convolutional neural networks is a big mistake and the fact that it works so well is a disaster. ——Hinton
先引用深度學(xué)習(xí)三巨頭之一Geoffrey Hinton(杰弗里·辛頓)的名人名言作為開端.
CNN是現(xiàn)在十分火熱的模型,首先我們都知道,通過pooling層能夠?qū)W到部分高階特征,比如對于人臉而言可以激活識別到鼻子 ,嘴巴 ,眼睛 等。
大神們看到CNN模型的強(qiáng)大開始進(jìn)行人性本質(zhì)的思索,那么它有什么搞不懂的時候咩?
答:確實(shí)有。
具體來說,pooling并不能夠?qū)W到這些特征具體是從哪一層特征學(xué)到的,也就意味著會損失高階特征之間的相互空間關(guān)系,空間層級信息無法獲取到。也就是混亂的 并不能夠表征一張人臉。這就是pooling層存在的缺陷。
好吧,簡言之就是臉盲。
我們接著來看,計算機(jī)得到圖像的過程是一層一層,從圖像的內(nèi)部表示到整體圖像表示。但是人對圖像的認(rèn)識恰恰相反!
科普時間到:
人腦對圖像的認(rèn)識關(guān)鍵的點(diǎn)在于圖像位置姿態(tài)的認(rèn)識,也就是即便圖像進(jìn)行了旋轉(zhuǎn),平移人腦依然可以認(rèn)識圖像,而計算機(jī)卻不行。因此提出膠囊網(wǎng)絡(luò)CapsNet。
那么我們來正經(jīng)地看看到底什么是膠囊(總之不是吃的那個小藥丸 )
一:膠囊定義
膠囊(Capsule)是一個,包含多個神經(jīng)元的特征載體。每個神經(jīng)元可以表示圖像中出現(xiàn)的特定實(shí)體的各種屬性,比如姿態(tài)(位置,大小,方向),紋理,變形等。
膠囊以向量的形式封裝特征的各種屬性表示。數(shù)值就是這個屬性表示存在的概率,會隨著特征的空間變化而變化,向量的長度保持不變的話,整個膠囊表征的高層特征就保持一致,這就是Hinton提出的活動等變性,這個不變性的意義高于pooling的不變性。
聽懂以上概念后,大神小伙伴們就接著來看它的運(yùn)算過程吧。
二:膠囊卷積運(yùn)算過程
1. 輸入向量的矩陣乘法
2. 輸入向量的標(biāo)量加權(quán)
3. 加權(quán)輸入向量之和
4. 向量到向量的非線性變換
總之就是先這樣,再那樣就好啦~
好了,回歸干貨:
u1、u2、u3就是來自下層的3個膠囊 ,向量的長度編碼了下層膠囊相應(yīng)特征的概率。
那么
w1j、w2j、w3j 就能夠編碼高層特征和低層特征之間的空間關(guān)系。
神經(jīng)網(wǎng)絡(luò)是通過反向傳播來學(xué)習(xí)參數(shù),而膠囊網(wǎng)絡(luò)是通過“動態(tài)路由”算法來進(jìn)行更新。
低層膠囊需要決定它的輸出是向哪個高層膠囊輸出。通過學(xué)習(xí)cici才能夠激活是向哪個方向的膠囊進(jìn)行映射。
所以對于動態(tài)路由算法就是ujuj服從的某個分布,每層膠囊會相對聚集,那么接下來學(xué)習(xí)的低層膠囊向哪個高層膠囊映射,就是通過這種預(yù)測更接近的膠囊聚集來判斷的。
接下來向量到向量的非線性變換就是用了一個新穎的非線性激活函數(shù),接收一個向量,然后在不改變方向的前提下,壓縮它的長度到1以下。就是squash(?):
為了清晰地讓大家理解,整來了一張圖,更形象的描述整個學(xué)習(xí)過程:??
怎么樣,是不是看著一下子就通透了起來呀^ ^
三:動態(tài)路由算法
好了我們繼續(xù)往下肝??
從上述算法過程就能夠明白,輸入為低層所有的膠囊線性變換的輸出$hat{u}_{j|i}$以及路由迭代次數(shù)$r$和層$l$ 。定義了一個零時變量$b_{ij}$初始化為0,在迭代過程中會更新,$c_i leftarrow softmax(b_i)$就是低層膠囊所有的權(quán)重。
舉個簡單的小例子??
權(quán)重分配過程:$b_{ij }$初始化為0,第一次迭代,假設(shè)有3個低層膠囊,2個高層膠囊,那么$c_{ij}$都會等于0.5,所有的權(quán)重$c_{ij}$都相等。
隨著迭代才會使得低層膠囊可以根據(jù)這個權(quán)重指向?qū)?yīng)的高層膠囊。$s_j leftarrow sum_i c_{ij} hat{mathbf{u}}_{j|i}$ 就是對每一個膠囊做一個線性組合,然后通過$squash$函數(shù)得到傳遞方向不變的權(quán)重向量。最后更行相應(yīng)的權(quán)重$b_{ij}$。
(嗯!大神們是不是覺得很簡單(o^^o))
高層膠囊$j$的當(dāng)前輸出和從低層膠囊 $i$出接收的輸入做點(diǎn)積,再加上上一輪的權(quán)重$b_{ij}$,得到更新的$b_{ij}$。點(diǎn)積可以表征膠囊之間的相似性,其實(shí)也就是將低層膠囊的特征學(xué)習(xí)過來,這就與$CNN$的學(xué)習(xí)效果一致。
明顯從上圖就可以看出,$hat{u}{1|1}$和上面黑色的向量不相似,$hat{u}{2|1}$就和上面黑色的向量是相似的,那么路由權(quán)重$c_{11}$會降低,而$c_{12}$會增大。從而低層膠囊的學(xué)習(xí)就能有最優(yōu)的匹配。
綜上!一篇簡單的科普教學(xué)文就結(jié)束啦,誰用誰知道!
所以————
聽懂掌聲!
那下篇我們來簡單聊聊「相似三連」:DNN、RNN、CNN里的RNN吧?。ㄟf歸神經(jīng)網(wǎng)絡(luò))
編輯:jq
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4771瀏覽量
100772 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4331瀏覽量
62622 -
神經(jīng)元
+關(guān)注
關(guān)注
1文章
363瀏覽量
18452 -
動態(tài)路由
+關(guān)注
關(guān)注
0文章
16瀏覽量
23121
發(fā)布評論請先 登錄
相關(guān)推薦
評論