Paper review: Dynamic Routing Between Capsules
基本資訊
Dynamic Routing Between Capsules
文章題目:膠囊間的動態路由
作者: Sara Sabour, Nicholas Frosst, Geoffrey E. Hindon,其中Sara Sabour和Nicholas Frosst為Geoffrey E. Hinton在Google Brain的同事。
源文連結:https://arxiv.org/pdf/1710.09829.pdf
**注:**膠囊是一組神經元,神經元的啟用值組成了表徵例項引數的一個向量,因此治學嚴謹的學者建議將膠囊稱為“向量神經元”或“張量神經元”,本人也贊同這樣稱呼,但是膠囊一詞在中國傳播較廣,比較簡潔,在本文使用“膠囊”這一名詞。
主要內容
摘要
一個膠囊是一組神經元,神經元的啟用值(activity value)組成的向量(activity vector)可以代表一類實體的例項引數(instantiation parameters of a specific type of entity)。其中啟用向量的長度代表這類實體存在的可能性(通過非線性函式,在保證向量方向不受影響的情況下,使啟用向量的長度不超過1,以此來代表對應數字存在的概率),向量的方向可以表示描述實體的引數或者說特性(例如姿態,包括位置、尺寸和方向,變形,速度,反光率,質地,色調等)。低階的膠囊通過轉換矩陣為高階膠囊的例項引數做預測(我的理解是低層網路的向量資訊不能直接來表徵某個例項,因為太多了,看不出什麼,所以就經過transformation matrix形成更加簡潔的高層來做預測,維度擴大種類變少,並且在這個過程中向量的方向資訊得以儲存),來自低層預測的吻合越多,高層膠囊啟用值長度越大。上下兩層之間的連線作者採用了一種“routing-by-agreement”機制:低層網路傾向於連線與它的預測結果(經過transformation matrix後的結果)標量積的值更大的啟用向量的高層膠囊。作者展示了經過判別式訓練方法(應該屬於判別式學習演算法的範疇,discriminative learning algorithm;與之相對的是生成學習演算法,generative learning algorithm),所設計的多層膠囊網路可以在MNIST資料集上達到目前最好的準確率,並且這種網路在高度重疊的手寫字元重疊中會表現地比卷積神經網路更好。
基本思想
神經科學設想
人類的視覺通過精細地確定一系列焦點來忽略無關細節保證一個時刻僅有一小部分感光陣列以最高的解析度被處理。在此篇論文中,作者通過臆想假定生物的多層視覺神經系統在每個視覺焦點上形成一個稀疏的樹形網路,而且可以在一個焦點上識別多個物體,並且忽略不同焦點對應的樹形稀疏網路是如何相互協作的。以往稀疏的樹形網路是通過即時訪問儲存器構造的,在此篇論文中單焦點的樹形稀疏網路是從一個固定大小的多層網路中“雕刻”出來的,就像從一塊大岩石中雕刻出一座雕塑一樣。樹形稀疏網路的每一層神經元被劃分成不同的組,一個組就稱為一個膠囊。通過“routing-by-agreement” 方法低一級膠囊會選擇性地連線高一級的膠囊,這對高一級的膠囊可以看作是把區域性歸位於整體。
routing-by-agreement
膠囊的輸出是啟用向量這一事實允許低層膠囊通過高效的路由方法,也即routing-by-agreement,連線到相關的高階膠囊上。具體的機制是,低層的膠囊用自己的啟用向量與轉換矩陣作積,得到的預測向量再與高層膠囊的輸出(也即高階膠囊的啟用向量)做標量積,如果得到的標量積很大就會增強這一對上下級膠囊間的相關性係數,同時減弱與上級其他膠囊間的相關性係數,這樣就形成了一個“top-down”之間的正反饋的作用(所有相關性係數的和是1.0)。這種方法應該(should)比最原始的“max-pooling” 路由方法有效,在“max-pooling”路由方法中上級神經元只接受下級神經元中最強的特徵向量。在之後的實驗結果中這種"routing-by-agreement"方法也展現出了作為分割重疊數字的解釋性方法的有效性。
卷積膠囊
卷積神經網路使用經過學習的特徵檢測器(learned feature detectors)產生的很多特徵副本,這就允許跨越空間傳遞一些學習到的“知識”(我理解為學習到的卷積核,或者說卷積核的權值),這種方法在影象識別任務中已經被證實是有效的。即使在此篇論文中作者用向量輸出的膠囊代替了CNN中標量輸出的特徵檢測器,用“routing-by-agreement”代替了“max-pooling”作為向上傳遞的方法,但是為了跨越空間傳遞獲得的knowledge,此文設計的網路中除最後一層其他層均為卷積形式。與CNN中相同的是,更高層的膠囊會覆蓋更大的影象範圍,但是不像“max-pooling”,在“routing-by-agreement”中沒有丟失這個區域中例項的準確位置資訊。對於低階的膠囊來說位置資訊隱含在膠囊的位置中(也就是具體是哪個膠囊激活了),隨著級數的增高,位置資訊慢慢轉換為在膠囊的實部中以頻率的形式編碼。
演算法和網路
演算法細節
作者強調此篇論文只是介紹膠囊網路和routing-by-agreement的基本思想,更多的設計空間有待後續去探索
為了保證得到的膠囊的啟用向量的長度在(0,1.0)區間內,作者採用了“squashing”非線性函式。
其中
是這一級膠囊的輸出,
是所有所連線的低一級膠囊的輸出與權重矩陣乘積的加權和。
就是通過“routing-by-agreement”獲得的上下級間膠囊的相關性係數,一個膠囊向上級連線的所有相關性係數和為1.0。並由“routing softmax”公式決定,其中
:
的後續調整是與權值一起學習得到的,agreement的強弱由下式決定,這個agreement值將會被當作具有對數似然性在重新計算前加到
上:
在卷積膠囊層中,膠囊的每個單元都是一個卷積單元,因此一個膠囊將會輸出一個向量矩陣而不是單個向量輸出(a grid of vectors rather than a single vector output)。
routing-by-agreement的演算法虛擬碼如下:
數字存在性的損失函式(對於MNIST):
為了允許多個數字存在的情況,作者設計了一種分離的損失函式,
代表代表每個數字的膠囊k:
如果數字c在圖片中存在,
就等於1,不存在就為0。
,