0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Capsule Network的基本原理及其相關(guān)算法實例詳解

wpl4_DeepLearni ? 2017-12-07 17:29 ? 次閱讀

漫談Capsule Network基本原理

半個多月前,Hinton的讓人期待已久的Dynamic Routing Between Capsules終于在arixv上公開,第一作者是Sara Sabour,據(jù)Hinton本人介紹,Sabour是伊朗人,本來想去華盛頓大學(xué)讀計算機視覺,但是簽證被美國拒絕了,于是Google的多倫多人工智能實驗室挖到了她,跟隨Hinton一起做Capsule Network方面的研究。

Dynamic Routing Between CapsulesMatrix Capsules with EM Routing

首先我們談?wù)凥inton為什么要提出Capsule Network,傳統(tǒng)的圖像識別是使用CNN來做的(如下圖所示),CNN通常由卷積層和池化層共同構(gòu)成,卷積層從原始圖像中提取每個局部的特征,池化層則負(fù)責(zé)將局部特征進(jìn)行概括,最終模型通過softmax分類器輸出每個類別的概率分布。

CNN應(yīng)用到圖像識別上似乎非常合理,而且實際表現(xiàn)也非常好,但是Hinton則認(rèn)為CNN中的池化操作是一個災(zāi)難,原因就在于池化操作只能給出粗略的位置信息,允許模型對一些小的空間上的變化視而不見,并不能精準(zhǔn)地學(xué)習(xí)到不同物體的位置關(guān)聯(lián),比如一個區(qū)域內(nèi)的實體的位置、大小、方向甚至是變形度和紋理。雖然CNN可以識別一張正常的人臉,但是如果把人臉照片中的一只眼睛與嘴巴的位置對調(diào)一下,CNN還是會將其識別成人臉,這是不對的。雖然池化的本意是為了保持實體的位置、方向的不變性,但是實際中的簡單粗暴的取最大或取平均的池化操作會使得池化的效果事與愿違。

人類識別圖片是基于平移和旋轉(zhuǎn)將看到的圖片與大腦中已有的模式進(jìn)行匹配,例如,對于一個雕像,無論以什么角度取拍照,人們都可以輕松識別出它就是一個雕像,但是這個對于CNN來說是十分困難的,為了解決這個問題,即更好地表示實體的各種空間屬性信息,Hinton在這篇文章中介紹了Capsule Network的概念。

Capsule Network的每一層是由很多Capsule構(gòu)成的,一個Capsule可以輸出一個活動向量,該向量就代表著一個實體的存在,向量的方向代表著實體的屬性信息,向量的長度代表實體存在的概率,所以,即使實體在圖片中的位置或者方向發(fā)生了改變,則僅僅導(dǎo)致該向量的方向發(fā)生變化,而向量的長度沒有發(fā)生改變,也就是實體存在的概率沒有變化。

與傳統(tǒng)的神經(jīng)元模型不同的是,傳統(tǒng)的神經(jīng)元是通過將每個標(biāo)量進(jìn)行加權(quán)求和作為輸入,然后通過一個非線性激活函數(shù)(如sigmoid,tanh等等)映射到另外一個標(biāo)量,而Capsule Network則是每一層都是由一些Capsule構(gòu)成,其具體的工作原理可以分為以下幾個階段:

(1) 較低層的Capsule產(chǎn)生的活動向量u_i與一個權(quán)重矩陣W_ij相乘,得到了預(yù)測向量u_ij_hat,這個向量的含義就是根據(jù)低維特征預(yù)測得到高維特征的位置,舉個例子,如果要識別一輛馬車,那么某一層低維的特征是馬和車,那么根據(jù)馬就可以判斷馬車的總體位置,同樣也可以根據(jù)車來判斷馬車的位置,如果這兩個低維特征的判斷的馬車的位置完全一致的話,就可以認(rèn)為這就是一輛馬車了;

(2) 如果用u表示上一層的所有Capsule的輸出矩陣,用v表示下一層的所有Capsule的輸出矩陣,由(1)知道,上一層的每一個Capsule的輸出向量u_i經(jīng)過權(quán)重算出了預(yù)測向量u_ij_hat,那么接下來它需要把這個預(yù)測向量傳遞給下一層的每個Capsule,但不是完全對等地發(fā)給下一層的每一個Capsule,而是先要乘以耦合系數(shù)c_ij,這個耦合系數(shù)可以認(rèn)為是代表低維特征對高維特征的預(yù)測程度,至于這個耦合系數(shù)c是怎么確定的,后文會詳細(xì)介紹iterative dynamic routing過程;

(3) 將傳送到下一層的第j個Capsule的所有信號求和,即s_j=SUM(c_ij×u_ij_hat),這一點和神經(jīng)元模型中的w*x類似,只不過一個是標(biāo)量運算,另一個是向量運算;

(4) 類似于神經(jīng)元模型中的激活函數(shù)sigmoid將輸入映射到0~1的區(qū)間,這里作者采用了非線性的squashing函數(shù)來將較短的向量映射成長度接近于0的向量,將較長的向量映射成長度接近于1的向量,而方向始終保持不變,這個過程相當(dāng)于是對預(yù)測向量做了歸一化,最終得到的v_j就是下一層第j個Capsule的輸出向量。

以上就是相鄰層之間的Capsule的活動向量的計算流程,接下來我們來看一下相鄰層的Capsule之間的耦合向量c_ij是如何確定的。

首先我們需要明白,既然是權(quán)重,那么對于上一層的Capsule i,它的所有c_ij之和必定等于1,并且c_ij的個數(shù)是等于下一層中Capsule的個數(shù)。這個c_ij是經(jīng)過iterative dynamic routing算法確定的,dynamic routing算法的核心就是要求較淺層的Capsule的活動向量與較高層的Capsule的活動向量保持極高的相似度。

如上圖算法圖所示,第二行中的b_ij是一個未經(jīng)歸一化的臨時累積變量,初始值為0,它的個數(shù)是由上一層和下一層的Capsule的個數(shù)決定的;每次迭代中,先將b經(jīng)過softmax歸一化得到總和為1均為正數(shù)的系數(shù)c_ij,第五行和第六行是進(jìn)行前向計算并經(jīng)過squashing函數(shù)進(jìn)行歸一化得到下一層的Capsule的輸出v_j,第七行是更新c_ij(即更新b_ij)的核心,新的b_ij等于舊的b_ij加上上一層的Capsule與下一層的Capsule的“相似度”。從圖中可以看到,這個迭代過程似乎沒有收斂條件,關(guān)于迭代次數(shù),文中并沒有給出詳細(xì)的說明,而是指出了迭代次數(shù)越多則發(fā)生過擬合的概率越大,在MNIST手寫字體識別實驗中,迭代次數(shù)設(shè)置為3得到的性能較好。

上面講了這么多,僅僅說明了c_ij的確定算法,似乎還有一個問題沒有解決,那就是確定其他參數(shù)的值?回到老方法,文中依然采用了后向傳播算法來更新參數(shù)值,這就涉及到目標(biāo)函數(shù)的確定。以MNIST手寫數(shù)字識別為例,由于輸出的類別是10,那么可以在最后一層中設(shè)置Capsule的個數(shù)為10,對于每個Capsule的loss可以按照如下公式進(jìn)行計算,總loss就是把10個Capsule的loss求和即可。

除了介紹Capsule Network模型之外,文中還設(shè)計了一個基于卷積神經(jīng)網(wǎng)絡(luò)的Capsule Network用于MNIST手寫字識別,如下圖所示是一個簡單三層結(jié)構(gòu)的Capsule Network,一幅圖片首先經(jīng)過一層CNN(卷積核大小為9×9,包含256個feature map,stride設(shè)置為1,激活函數(shù)為ReLU)得到局部特征作為初級Capsule的輸入,初級Capsule是一個包含32個feature map的卷積層,卷積核大小為9×9,stride為2,卷積神經(jīng)元個數(shù)為8,也就是說這一層中一共有32×6×6個Capsule,并且每個Capsule的活動向量的維度是8,每個Capsule都是處在6×6的網(wǎng)格之中,它們彼此共享著它們的權(quán)重,并且卷積中用的激活函數(shù)就是前文說的squashing函數(shù)。最后一層DigitCaps是由10個Capsule組成的,每個Capsule的活動向量維度是16,在PrimaryCapsules與DigitCaps之間需要執(zhí)行iterative dynamic routing算法來確定耦合系數(shù)c_ij,整個過程使用的是Adam優(yōu)化算法來對參數(shù)進(jìn)行更新。

文中僅僅使用了較小的數(shù)據(jù)集MNIST作為模型性能的評估,期待Capsule Network應(yīng)用到更大規(guī)模機器學(xué)習(xí)任務(wù)上的表現(xiàn),接下來幾期將繼續(xù)關(guān)注Capsule Network的研究進(jìn)展及其在語音識別中的TensorFlow實踐。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Network
    +關(guān)注

    關(guān)注

    0

    文章

    64

    瀏覽量

    29578
  • cnn
    cnn
    +關(guān)注

    關(guān)注

    3

    文章

    349

    瀏覽量

    21968

原文標(biāo)題:漫談Capsule Network基本原理

文章出處:【微信號:DeepLearningDigest,微信公眾號:深度學(xué)習(xí)每日摘要】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    蟻群算法基本原理及其應(yīng)用實例

    與遺傳算法設(shè)計的結(jié)果進(jìn)行了比較,數(shù)值仿真結(jié)果表明,蟻群算法具有一種新的模擬進(jìn)化優(yōu)化方法的有效性和應(yīng)用價值。本文詳細(xì)介紹了蟻群算法基本原理及其
    發(fā)表于 02-02 09:44 ?9.2w次閱讀
    蟻群<b class='flag-5'>算法</b><b class='flag-5'>基本原理</b><b class='flag-5'>及其</b>應(yīng)用<b class='flag-5'>實例</b>

    FFT的基本原理算法結(jié)構(gòu)

    FFT的基本原理算法結(jié)構(gòu)FFT是利用了旋轉(zhuǎn)因子的周期性和對稱性,對DFT進(jìn)行簡化的運算。各種FFT算法可分兩大類:一類是針對N等于2的整數(shù)次冪的算法,如基二
    發(fā)表于 06-14 00:20

    擴(kuò)頻通信的基本原理

    附件非常詳解的介紹了擴(kuò)頻通信的基本原理,本人做通信快3年了,是我見過的介紹擴(kuò)頻通信最好的資料,分享一下!
    發(fā)表于 11-15 10:57

    ZoomFFT算法基本原理及其應(yīng)用介紹(雷達(dá)頻譜局部細(xì)化,提高分辨率)

    本帖最后由 bee825 于 2016-6-15 10:52 編輯 這是一篇關(guān)于ZoomFFT算法基本原理及其應(yīng)用介紹的文章,可以用于24GHZ微波雷達(dá)算法中,頻譜局部細(xì)化,提高
    發(fā)表于 06-15 10:30

    遺傳算法基本原理

    遺傳算法基本原理.zip
    發(fā)表于 01-07 12:13

    視頻增強算法基本原理是什么?

    視頻增強算法基本原理是什么?單尺度算法的原理是什么?視頻增強能解決的實際問題及應(yīng)用領(lǐng)域
    發(fā)表于 06-03 07:14

    DMA基本原理相關(guān)實驗相關(guān)資料推薦

    記錄一下,方便以后翻閱~主要內(nèi)容:1) DMA基本原理;2) 相關(guān)寄存器及庫函數(shù)介紹;3) 相關(guān)實驗代碼解讀。實驗功能:系統(tǒng)啟動后,通過按鍵KEY0控制串口1以DMA方式發(fā)送數(shù)據(jù),按下KEY0
    發(fā)表于 12-10 06:00

    PID算法基本原理及其執(zhí)行流程

    景。1、PID算法基本原理PID算法是控制行業(yè)最經(jīng)典、最簡單、而又最能體現(xiàn)反饋控制思想的算法。對于一般的研發(fā)人員來說,設(shè)計和實現(xiàn)PID算法
    發(fā)表于 12-21 08:22

    嵌入式系統(tǒng)中語音算法基本原理是什么

    嵌入式系統(tǒng)中語音算法基本原理是什么?嵌入式系統(tǒng)中語音算法有何功能?
    發(fā)表于 12-23 08:49

    脈寬調(diào)制的基本原理及其應(yīng)用實例

    脈寬調(diào)制的基本原理及其應(yīng)用實例:脈寬調(diào)制(PWM)是利用微處理器的數(shù)字輸出來對模擬電路進(jìn)行控制的一種非常有效的技術(shù),廣泛應(yīng)用在從測量、通信到功率控制與變換的許多領(lǐng)域中
    發(fā)表于 01-10 12:11 ?92次下載

    LSB算法基本原理

    LSB算法基本原理LSB算法基本原理是:對空域的LSB做替換,用來替換LSB的序列就是需要加入的水印信息、水印的數(shù)字摘要或者由水印生成的偽隨機序列。由于水
    發(fā)表于 12-09 02:41 ?7418次閱讀

    傅立葉變換紅外光譜儀的基本原理及其應(yīng)用

    傅立葉變換紅外光譜儀的基本原理及其應(yīng)用
    發(fā)表于 02-07 21:04 ?7次下載

    關(guān)聯(lián)規(guī)則挖掘——Apriori算法基本原理以及改進(jìn)

    本文詳細(xì)介紹了關(guān)于關(guān)聯(lián)規(guī)則挖掘——Apriori算法基本原理以及改進(jìn)。
    發(fā)表于 02-02 16:46 ?9328次閱讀
    關(guān)聯(lián)規(guī)則挖掘——Apriori<b class='flag-5'>算法</b>的<b class='flag-5'>基本原理</b>以及改進(jìn)

    蟻群算法基本原理及其改進(jìn)算法.ppt

    蟻群算法基本原理及其改進(jìn)算法.ppt
    發(fā)表于 04-23 14:28 ?6次下載
    蟻群<b class='flag-5'>算法</b>的<b class='flag-5'>基本原理</b><b class='flag-5'>及其</b>改進(jìn)<b class='flag-5'>算法</b>.ppt

    PCB布局布線的相關(guān)基本原理和設(shè)計技巧

    PCB布局布線的相關(guān)基本原理和設(shè)計技巧
    發(fā)表于 11-05 09:48 ?56次下載