【论文导读】浅谈胶囊网络与动态路由算法
前言
“Dynamic Routing Between Capsules”是由Hinton等聯合發表在NIPS會議上。提出了一個新的神經網絡---膠囊網絡與囊間的動態路由算法。
上篇文章中提到了動態路由算法,由于沒太理解,因此找了原論文并且結合參考文獻的4篇博文進行解讀,才對膠囊網絡與動態路由算法的過程有了一點認識。本篇文章的所有圖片來源都是來自4篇博文,并且參考了其中部分知識。對膠囊網絡有興趣的同學可以閱讀下,非常有幫助。
本篇文章約3.2k字,預計閱讀12分鐘。
1. 作者
本篇論文是由Sara Sabour、Nicholas Frosst與Geoffrey E. Hinton聯合發表。對于膠囊網絡(Capsules Net)的提出者之一Geoffrey E. Hinton(「杰弗里·埃弗里斯特·辛頓」),我們應該了解下:
?他是「反向傳播算法」、「對比散度算法」和「波爾茲曼機」的發明人之一,也是深度學習的積極推動者,被譽為“「深度學習之父」”。因在深度學習方面的貢獻與約書亞·本希奧和楊立昆一同被授予了2018年的圖靈獎。----- 維基百科
?2. 背景
2.1 CNN的特性與缺陷
卷積神經網絡(CNN)在圖像分類上取得了非常顯著的效果。它有幾個非常重要的特性:
「平移不變性(translation invariance )」:簡單來說不管圖片的內容如何進行平移,CNN還能輸出與之前一樣的結果。為什么具有平移不變性?這個性質由全局共享權值和Pooling共同得到的;
「平移等變性(translation equivariance)」:對于一個函數,如果你對其輸入施加的變換也會同樣反應在輸出上,那么這個函數就對該變換具有等變性。這由局部連接和權值共享決定;
例:
?如果輸出是給出圖片中貓的位置,那么將圖片中的貓從左邊移到右邊,這種平移也會反應在輸出上,我們輸出的位置也是從左邊到右邊,那么我們則可以說CNN有等變性;如果我們只是輸出圖片中是否有貓,那么我們無論把貓怎么移動,我們的輸出都保持”有貓”的判定,因此體現了CNN的不變性。---引自http://www.lunarnai.cn/2018/03/23/CNN_euivariant_invariant/
?「不具備特性」:
「旋轉不變性」:做過簡單的圖像分類就應該知道,當我們為了增強模型性能,總是會做圖像增強的工作,其中就包括旋轉,這就是為了克服CNN不具備旋轉不變性的缺陷;
根據以上信息我們可以得出「結論」:CNN擅長檢測特征,但在探索特征之間的「空間關系」(大小,方向)「方面效果不佳」。例如,對于以下扭曲的人臉圖,CNN可能會認為這是一張正常的人臉。
2.2 最大池化(Max Pooling)的缺陷
作者認為Max Pooling在每一層僅保留最活躍的特征,而忽略了其他的特征,即損失了有價值的東西。
?This type of “routing-by-agreement” should be far more effective than the very primitive form of routing implemented by max-pooling, which allows neurons in one layer to ignore all but the most active feature detector in a local pool in the layer below.
?3. 膠囊網絡
簡單的CNN模型可以正確提取鼻子,眼睛和嘴巴的特征,但會錯誤地激活神經元以進行面部檢測。如果沒有意識到「空間方向和大小」上的不匹配,則面部檢測的激活將太高【簡單來說,并不是存在眼睛、鼻子、嘴巴就一定是一張臉,還有考慮各個部位的方向問題、大小問題等】。
但是,如果每個神經元都包含特征的概率和其他屬性。例如,它輸出一個包含[可能性,方向,大小]的「向量」。有了這些空間信息,就可以檢測到鼻子,眼睛和耳朵的特征在方向和大小上的不一致,從而為面部檢測輸出低得多的激活力。
「因此用向量來代替單個神經元標量」,即文章提到的“膠囊”(Capsule),形成了膠囊網絡。
3.1 膠囊
以下通過原文的描述對膠囊下一些定義:
1、一個膠囊是一組神經元(「輸入」),即神經元「向量」(activity vector),表示特定類型的實體(例如對象或對象部分)的實例化參數(例如可能性、方向等)。
?A capsule is a group of neurons whose activity vector represents the instantiation parameters of a speci?c type of entity such as an object or an object part.
?2、「使用膠囊的長度(模)來表示實體(例如上述的眼睛、鼻子等)存在的概率」,并使用其方向(orientation)來表示除了長度以外的其他實例化參數,例如位置、角度、大小等。
?We use the length of the activity vector to represent the probability that the entity exists and its orientation to represent the instantiation parameters.
??In this paper we explore an interesting alternative which is to use the overall length of the vector of instantiation parameters to represent the existence of the entity and to force the orientation of the vector to represent the properties of the entity.
?3、膠囊的「向量輸出」的長度(模長)不能超過1,可以通過應用一個「非線性函數」使其在方向不變的基礎上,縮小其大小。
?cannot exceed 1 by applying a non-linearity that leaves the orientation of the vector unchanged but scales down its magnitude.
?接下來我們主要介紹膠囊之間的傳播與訓練過程。
3.1.1 問題定義
膠囊網絡總的計算過程如下所示(圖來自[4]):
我們假設低層次的膠囊(輸入)是探測眼睛、嘴巴、鼻子,整個膠囊網絡的目的(輸出)是探測人臉。為了與普通神經網絡相比,完全可以將膠囊網絡的計算看成前向傳播的過程。
3.1.2 低層膠囊輸入
輸入為較為低層次的膠囊(Primary Capsule),其中,表示膠囊的個數,表示每個膠囊內的神經元個數(向量長度)。圖中的可以解釋為監測到眼睛、嘴巴、鼻子三個低層次的膠囊。
3.1.3 計算預測向量(predict vector)
應用一個轉換矩陣(transformation matrix),表示輸出膠囊的神經元數量,將輸入轉換為「預測向量」:
「為什么稱為預測向量?」?因為轉換矩陣是編碼低層特征(眼睛、嘴和鼻子)和高層特征(臉)之間重要的空間和其他關系。
例如對于鼻子來說,臉以鼻子為中心,它的大小是鼻子的10倍,它在空間中的方向與鼻子的方向相對應,因為它們都在同一個平面上,因此得到的向量是對人臉的預測;其他兩個向量同理,如下圖所示:
對于權重矩陣,「它依舊是通過反向傳播進行學習」。
3.1.4 預測向量加權求和
然后我們需要將所有得到的預測向量進行加權求和:
其中被稱為高層膠囊總的輸入,為權重系數,在論文中被稱為耦合系數(coupling coef?cients),并且。從概念上說,表示膠囊激活膠囊的概率分布,「它是通過動態路由算法進行學習」。
3.1.5 膠囊輸出
之前我們提到想要一個膠囊的向量的模來表示由膠囊所代表的實體存在的概率。因此作者在論文中提出使用非線性函數“「squashing」”來替代傳統的神經網絡的激活函數Relu,這是為了確保短向量可以被壓縮至接近0的長度,長向量壓縮至接近1的長度,「并且保持向量的方向不變」。因此最終膠囊的向量輸出:
對上述式子進行分析:
當為長向量時,那么;
當為短向量時,那么;
當為向量時,很難將squashing函數進行可視化,為了方便,以下為標量:
3.1.6 與普通神經網絡進行比較
上述膠囊網絡與傳統的神經網絡比較圖片來自[4],了解神經網絡結構的同學也可以對膠囊網絡有更深入的認識,具體的介紹可以看[4]。
兩者的計算過程如下所示:
3.2 Dynamic Routing算法
對于上述的學習參數是通過迭代的動態路由算法進行更新,以下是原文對動態路由算法的描述:
首先得到所有的「預測向量」,定義「迭代次數」,以及當前輸入膠囊屬于網絡的第層;
對于所有的輸入膠囊和輸出膠囊,定義一個參數,被初始化為0,對于該參數的作用,在下一步進行描述;
開始迭代4~7步,迭代次數為;
計算向量的值,即膠囊的所有路由權值,此處為什么使用softmax?前面提到過,要保證,因此使用softmax函數來保證每個非負且和為1。
【注】:由于第一次迭代初始化為0,因此在第一輪迭代中都相等,即,是指較高層膠囊的數量;
,預測向量進行加權求和;
最后一步的向量通過非線性函數squash,這確保了向量的方向保持不變,但它的長度被強制不超過1。這一步輸出最終的向量
這一步是權重發生更新的地方,也是整個動態路由算法的「關鍵」。這一步通過膠囊的輸出與預測向量的點積+原有的權重,為新的權重值。「進行點積處理,是為了檢測膠囊輸入與輸出的相似性」。更新權重后,進行下一輪迭代;
經過次迭代后,返回最終的輸出向量;
經過上述動態路由算法的解析,我們發現動態路由不能完全替代反向傳播。轉換矩陣仍然使用代價函數進行反向傳播訓練。但是,使用動態路由來計算「膠囊的輸出」。「通過計算來量化一個低層次膠囊與其父膠囊之間的聯系」。
4. 總結
通過論文與參考文獻中的博客的敘述,對上篇文章中使用的動態路由算法有了更清晰的認識。
參考文獻
[1] https://jhui.github.io/2017/11/03/Dynamic-Routing-Between-Capsules/
[2] https://medium.com/ai3-theory-practice-business/understanding-hintons-capsule-networks-part-i-intuition-b4b559d1159b
[3] https://medium.com/ai%C2%B3-theory-practice-business/understanding-hintons-capsule-networks-part-ii-how-capsules-work-153b6ade9f66
[4] https://medium.com/ai%C2%B3-theory-practice-business/understanding-hintons-capsule-networks-part-iii-dynamic-routing-between-capsules-349f6d30418
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯獲取一折本站知識星球優惠券,復制鏈接直接打開:https://t.zsxq.com/662nyZF本站qq群1003271085。加入微信群請掃碼進群(如果是博士或者準備讀博士請說明):總結
以上是生活随笔為你收集整理的【论文导读】浅谈胶囊网络与动态路由算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【机器学习基础】浅析机器学习集成学习与模
- 下一篇: 【资源】学 AI 该学哪些斯坦福 CS