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

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

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

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

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

漫談Capsule Network基本原理

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

Dynamic Routing Between CapsulesMatrix Capsules with EM Routing

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    關(guān)注

    0

    文章

    64

    瀏覽量

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

    關(guān)注

    3

    文章

    353

    瀏覽量

    22265

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

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

    FFT的基本原理算法結(jié)構(gòu)FFT是利用了旋轉(zhuǎn)因子的周期性和對(duì)稱性,對(duì)DFT進(jìn)行簡化的運(yùn)算。各種FFT算法可分兩大類:一類是針對(duì)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

    視頻增強(qiáng)算法基本原理是什么?

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

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

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

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

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

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

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

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

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

    LSB算法基本原理

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

    傅立葉變換紅外光譜儀的基本原理及其應(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 ?9436次閱讀
    關(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è)計(jì)技巧

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