1. 程式人生 > >Paper review: Dynamic Routing Between Capsules

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”非線性函式。
v j = s j 2 1 + s j 2 s j s j   ( 1 ) \mathbf{v}_j = \frac{{\parallel \mathbf{s}_j\parallel}^2}{1 + {\parallel \mathbf{s}_j \parallel}^2}\frac{\mathbf{s}_j}{{\parallel \mathbf{s}_j\parallel}}\ (1)
其中 v j \mathbf{v}_j 是這一級膠囊的輸出, s j \mathbf{s}_j 是所有所連線的低一級膠囊的輸出與權重矩陣乘積的加權和。
s j = i c i j u ^ j i   ( 2.1 ) \mathbf{s}_j = \sum_{i} {c}_{ij}\mathbf{\hat{u}}_{j|i}\ (2.1)
u ^ j i = W i j u i   ( 2.2 ) \mathbf{\hat{u}}_{j|i} = \mathbf{W}_{ij}\mathbf{u}_i\ (2.2)
c i j {c}_{ij} 就是通過“routing-by-agreement”獲得的上下級間膠囊的相關性係數,一個膠囊向上級連線的所有相關性係數和為1.0。並由“routing softmax”公式決定,其中 b i j l o g p r i o r p r o b a b i l i t y 0 使 b_{ij}的初始值是由先驗概率的對數值(log prior probability)決定,在作者的實驗設定中初始值均為0,沒有使用先驗概率
c i j = e x p ( b i j ) k e x p ( b i k )   ( 3 ) c_{ij} = \frac{exp(b_{ij})}{\sum_{k}exp(b_{ik})}\ (3)
c i j c_{ij} 的後續調整是與權值一起學習得到的,agreement的強弱由下式決定,這個agreement值將會被當作具有對數似然性在重新計算前加到 b i j b_{ij} 上:
a i j = v j u ^ j i   ( 4 ) a_{ij} = \mathbf{v}_j\cdot\mathbf{\hat{u}}_{j|i}\ (4)
在卷積膠囊層中,膠囊的每個單元都是一個卷積單元,因此一個膠囊將會輸出一個向量矩陣而不是單個向量輸出(a grid of vectors rather than a single vector output)。
routing-by-agreement的演算法虛擬碼如下:

數字存在性的損失函式(對於MNIST):
為了允許多個數字存在的情況,作者設計了一種分離的損失函式, L k \mathbf{L}_k 代表代表每個數字的膠囊k:
L c = T c m a x ( 0 , m + v c ) 2 + λ ( 1 T c ) m a x ( 0 , v c m ) 2 \mathbf{L}_{c} = T_{c}\mathbf{max}(0, m^{+} - \parallel\mathbf{v}_{c}\parallel)^2 + \lambda(1- T_{c})\mathbf{max}(0, \parallel\mathbf{v}_{c}\parallel - m^{-})^2
如果數字c在圖片中存在, T c T_{c} 就等於1,不存在就為0。 m + = 0.9 m^+ = 0.9 m = 0.1 m^- = 0.1

相關推薦

Paper review: Dynamic Routing Between Capsules

基本資訊 Dynamic Routing Between Capsules 文章題目:膠囊間的動態路由 作者: Sara Sabour, Nicholas Frosst, Geoffrey E. Hindon,其中Sara Sabour和Nicholas Frosst為Geoffrey

學習筆記《Dynamic Routing Between Capsules》-(“膠囊”網路之區域性空間關係)

喜歡才能持久,熱愛才會盡心! 0 前言 昨天的面試官講了利用自動駕駛鐳射雷達資料探測路上行人、車輛問題的區域性空間關係的見解,提到了Vector向量多方位,多角度問題,我感覺和Capsule裡的Ve

Hinton膠囊網路論文《Dynamic Routing between Capsules》的程式碼正式開源

執行測試驗證設定是否正確,例如: python layers_test.py 快速MNIST測試結果: 從以下網址下載並提取MNIST記錄到 $DATA_DIR/:https://s

膠囊間的動態路由(Dynamic Routing Between Capsules)翻譯

本文是對於Sara Sabour, Nicholas Frosst, Geoffrey E. Hinton在2017年發表的論文《Dynamic Routing Between Capsules》的翻譯。 膠囊間的動態路由(Dynamic Routing Between C

OpenSessionInView vs Dynamic Routing DataSource

懶加載 acl mit 所有 spring 指標 for循環 事物 開始   開發中有這樣的業務場景:有25家法院,法院數據庫結構都是一樣的,需要遍歷25家法院統計每家法院的指標信息。我們項目使用的是spring boot2,對於遍歷25家法院執行同樣的操作,考慮使用spr

Investigating Capsule Networks with Dynamic Routing for Text Classification

探索使用動態路由的膠囊網路進行文字分類,提出三種策略穩定動態路由來減輕噪音膠囊的分佈,這些膠囊可能包含背景資訊,或是訓練不好。膠囊網路獲得很好的分類效果,而且訓練多標籤的效果好於單標籤 1 Introduction 文章或是句子建模是NLP的基礎問題,如果組成,層次,結構都考慮的話,很是複雜

Information Aggregation via Dynamic Routing for Sequence Encoding

對文字序列進行編碼獲得向量有了很多的工作,而對於如何把前面網路(RNN/CNN的輸出)獲得的向量進行處理獲得特定長度的向量的工作比較少。通常使用簡單的max/average pooling,是自下而上的,並且消極的資訊聚集,缺少特定任務資訊的引導。本文中,提出了一個聚集機制,即動態路由機制來獲得固定

Paper Review: FINN: A Framework for Fast, Scalable Binarized Neural Network Inference

FINN: A Framework for Fast, Scalable Binarized Neural Network Inference FINN:一個用於建立高效能可擴充套件二值神經網路推測器的框架 基本資訊 發表日期:2016年12月 主要作者:Yaman Umuroglu

Paper Review: fpgaConvNet--A Framework for Mapping Convolutional Neural Networks on FPGAs

注:本文中所有的圖片均擷取自原文作者的論文和講稿。 基本資訊 題目:fpgaConvNet:一個將CNN對映到FPGA上的平臺 作者:Stylianos I. Venieris, Christos-Savvas Bouganis 機構:Imperial College Londo

[Paper翻譯]Scalable Lock-Free Dynamic Memory Allocation

free mas point 出現 前綴 影響 ati bit 同步 原文: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.87.3870&rep=rep1&type=pdf Abstrac

paper:A Review on Industrial Augmented Reality Systems for the Industry 4.0 Shipyard

abstract ABSTRACT Shipbuilding companies are upgrading their inner workings in order to create Shipyards 4.0, where the principles of Industry 4.0 a

《Matrix capsules with EM Routing》新膠囊網路

本文介紹了Hinton的第二篇膠囊網路論文“Matrix capsules with EM Routing”,其作者分別為Geoffrey E Hinton、Sara Sabour和Nicholas Frosst。我們首先討論矩陣膠囊並應用EM(期望最大化)路由對不同角度的影

線性代數回顧(Linear Algebra Review)

view ont 線性代數 lin geb ebr review 3.1 代數 3.1 矩陣和向量 3.2 加法和標量乘法 3.3 矩陣向量乘法 3.4 矩陣乘法 3.5 矩陣乘法的性質 3.6 逆、轉置 3.1 矩陣和向量 線性代數回顧(

What is the difference between Kill and Kill -9 command in Unix?

data esp osi lin mil print ren win sku w difference kill -9 pid and kill pid command - Ask Ubuntu https://askubuntu.com/questions/7918

LVS Direct Routing 直接路由

同時 總結 tun 發現 運行 都是 intern alt 1-1 1. Direct Routing 直接路由 director分配請求到不同的real server, real server處理請求後直接回應給用戶,這樣director負載均衡器僅處理客戶機與服務器一半

項目管理系列--好用的代碼評審(Code Review)工具

mos users solution con codes flex reat hat test 1. Gerrit Gerrit is a web based code review system, facilitating online code reviews for

【轉】 Difference between defining static routes with next-hop address or exit interface

can tab setting color different using tin leading form For a long time I was confused about this. It was not clear to me what is the diff

Dynamic Web Module 3.1 requires Java 1.7 or newer. 錯誤解決方案

pom.xml文件 artifact logs per group -s conf 你會 cti 在寫代碼的時候工程出現了這樣奇怪的bug很是蛋疼啊,經過查詢解決方法,終於解決了這些個問題。 下面是解決問題的方法,和大家分享一下 (1)確定你的java工程配置使用了java

c# 中dynamic的使用

靜態 重載 實例 程序 字段 erb tel args try dynamic 是c#中的一個關鍵字,用來表示動態類型,即在運行時確定類型。 dynamic value; Random ran = new Random();//生成隨機數 value = ran.Next(

Apache+SVN+Review Board代碼審核服務器搭建流程

代碼審核Apache+SVN+Review Board代碼審核服務器搭建流程 一、簡介代碼審查(CodeReview)不但可以提高質量,而且還是一個知識共享和指導的極好的手段。ReviewBoard是一款比較優秀的,開源的基於WEB的代碼審查工具。 二、準備工作2.1、安裝依賴包yum -y instal