當前位置:
首頁 > 最新 > 膠囊網路簡介——膠囊網路是如何克服卷積神經網路的一些缺點的?

膠囊網路簡介——膠囊網路是如何克服卷積神經網路的一些缺點的?

膠囊網路(CapsNet)是一種新的熱門的神經網路架構。它可能對深度學習帶來深遠的影響,特別是對計算機視覺領域。等一下!計算機視覺不是差不多已經被解決了嗎?我們不是已經看到了多種卷積神經網路(CNN)的神奇案例?它們不是已經在計算機視覺任務(例如分類、定位、物體檢測、語義分割或實例分割,見圖1)上實現超越人類的水平了嗎?

圖1 一些主要的計算機視覺任務。當前,每種任務都需要一個不一樣的CNN架構。比如分類里的ResNet,物體檢測里的YOLO,實例分割里的Mask R-CNN等。圖片由Aurélien Géron提供

恩,是的。我們已經見到了很多神奇的CNN,但是,

它們需要非常多的圖片進行訓練(或重複使用了已用海量數據訓練過的神經網路的一部分)。 而CapsNet使用少得多的訓練數據就能泛化。

CNN們並不能很好地應對模糊性,但CapsNet可以。所以它能在非常擁擠的場景里也表現得很好(儘管它目前還需要解決背景圖的問題)。

CNN會在池化層理丟失大量的信息,從而降低了空間解析度(見圖2),這就導致對於輸入的微小變化,其輸出幾乎是不變的。在諸如語義分割這樣的場景里,這會是一個問題,因為細節信息必須要在網路里被保留。現在,這一問題已經被通過在CNN里構建複雜的架構來恢復這些損失的信息所解決。在CapNet裡面,細節的姿態信息(比如對象的準確位置、旋轉、厚度、傾斜度、尺寸等)會在網路里被保存下來,不用先丟失再恢復。輸入上微小的變化會帶來輸出上的小變化,信息被保存。這被稱為「等變的」。這就讓CapsNet能使用一個簡單和統一的架構來應對不同的視覺任務。

最後,CNN需要額外的組件來自動識別每個小部分屬於哪個物體(例如這條腿屬於這隻羊)。而CapsNet則可以給你這些部分的層級結構。

圖2 DeepLab2的圖像分割管道,來自Liang-Chieh Chen等。注意這裡面CNN的輸出(右上角圖)是非常得粗糙。這就需要一些額外的步驟來恢復丟失的細節。圖片來自論文《DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs》,獲作者友情授權使用。可以查看S. Chilamkurthy的這篇很棒的博文來了解語義分割的神經網路的架構有多麼複雜多樣

CapsNet是在2011年在Geoffrey Hinton等人的一篇名為《Transforming Autoencoders》的論文中首次出現。但僅在幾個月前(即2017年11月),Sara Sabour、Nicholas Frosst和Geoffrey Hinton發表了一篇名為《Dynamic Routing between Capsules》的論文,其中介紹了CapsNet架構。該架構在MNIST(著名的手寫數字圖像數據集)上達到了最先進的性能,並且在MultiMNIST數據集(一種有重疊的不同數字組的手寫數字的變體)上獲得了比CNN好得多的結果。見圖3。

圖3 MultiMNIST圖片(白色)和由CapsNet重構後的結果(紅色和綠色)。「R」=重構後的結果;「L」=標註。例如,對第一個樣例(左上角)的預測是準確的,重構的結果也對。但是在第五個例子里,預測(5,7)是錯的,不是(5,0)。因此,5被正確地重構了,但是0沒有。圖片來自論文《Dynamic routing between capsules》,作者友情授權使用

儘管有上述這些優點,但CapsNet還遠未到完美的程度。首先,它們在更大的圖片上(例如CIFAR10或ImageNet數據集里)還沒有CNN的表現好。另外,CapsNet的計算量很大,同時它還不能區分靠的很近的相同的物體(這被稱為「擁擠問題」,人類也有這個問題)。但是這裡的關鍵點是膠囊網路是非常有希望的,看起來只要做一些修改就能讓膠囊網路充分釋放它們的潛能。畢竟現代CNN在1998年就被發明了,但也要經過幾次改進,直到2012年的ImageNet大賽上才達到業界領先水平。

那麼,到底CapsNet是什麼?

簡而言之,一個膠囊網路是由膠囊而不是由神經元構成。一個膠囊是一小群神經元,它們可以學習在一個圖片的一定區域內檢查一個特定的對象(比如,一個矩形)。它的輸出是一個向量(例如,一個8維的向量)。每個向量的長度代表了物體是否存在的估計概率[1],它的方向(例如在8維空間里)記錄了物體的姿態參數(比如,精確的位置、旋轉等)。如果物體有稍微的變化(比如,移動、旋轉、尺寸變化等),膠囊將也會輸出一個長度相同但是方向稍微變化的向量。因此膠囊是等變的。

和常規神經網路很類似,CapsNet也是由多層構成(見圖4)。處於最底層的膠囊被稱為向量膠囊:它們每個都只用圖片的一小部分區域作為輸入(稱為感知域),然後試圖去探測某個特殊的模式(例如,一個矩形)是否存在,以及姿態如何。在更高層的膠囊(稱為路由膠囊)則是探測更大和更複雜的物體,比如船等。

圖4 一個兩層的CapsNet。在本例里,向量膠囊層有兩個5x5膠囊的特徵圖。其中第二個膠囊層有兩組3x3膠囊的特徵圖。每個膠囊輸出一個向量。每個箭頭代表不同的膠囊的輸出。藍色的箭頭代表那些檢測三角形的膠囊的輸出;黑色箭頭代表試圖檢測矩形的膠囊的輸出。圖片由Aurélien Géron提供

向量膠囊層是用幾個常規卷積層實現。例如在這篇論文里,他們使用兩個卷積層輸出256個包含標量的6×6特徵圖。然後把這個輸出變形成32個包含8維向量的6×6特徵圖。最後,他們使用一個新奇的壓縮函數來確保這些向量的長度都是在0到1(來代表概率)之間。就這楊,它們就產生了向量膠囊的輸出。

下一層的膠囊也試圖去檢測物體和它們的姿態,但是它們的工作機制很不一樣。它們使用的是一種叫按一致性路由的演算法。這裡是CapsNet的主要魅力所在。先讓我們看一個例子。

假設我們只有兩個向量膠囊:一個識別矩形的膠囊和一個識別三角形的膠囊,而且假定他們都能檢測到相應的形狀。矩形和三角形可以是房子或是船的一部分(見圖5)。根據矩形的姿態,它們都是稍微向右旋轉了一點,那麼房子和船也都會向右旋轉了一點。根據三角形的姿態,這個房子幾乎完全是上下顛倒的,而船則是稍微向右旋轉了一點。注意在這裡,整體的形狀和整體與部分的關係都是在訓練中學習的。現在可以看到矩形和三角形在船上的姿態是一致的,而在房子上的姿態則非常不一致。因此,很有可能這裡的矩形和三角形是同一條船上的一部分,而房子上則不是。

圖5 按一致性路由。第一步——基於對象的部分是否存在和姿態來預測對象是否存在及其姿態,接著查看預測間的一致性。圖片由Aurélien Géron提供

因為我們現在已經很有信心地知道矩形和三角形是船的一部分,所以把矩形和三角形的輸出更多指向船的膠囊而更少指向房子的膠囊就順理成章了。用這個方法,船的膠囊將會獲得更多的有用輸入信號,而房子的膠囊則接收更少的噪音。對每一個連接,按一致性路由演算法會維護一個路由權重(見圖6):它對於一致的會增加權重,而對於不一致的則降低權重。

圖6 按一致性路由。第二步——更新路由權重。圖片由Aurélien Géron提供

這個按一致性路由演算法會涉及到一些循環:一致性檢測和路由權重更新(值得注意的是,這一步驟會在每次預測時發生,不只是一次,也不只是在訓練時)。這一演算法對於擁擠的場景特別有用。例如圖7里的場景是比較模糊的,因為你能看到中間有一個上下顛倒的房子,但這樣會讓上面的三角形和下面的矩形無法得到解釋。按一致性路由演算法更有可能收斂到一個更好的解釋:下面是一條船,而上面是一個房子。這樣模糊性就「可以被解釋了」:下面的矩形最好是被看成一條船的一部分,同時這樣也解釋了下面的三角形。一旦下面的兩個部分被解釋好了,剩下的部分就很容易地被解釋成一個房子。

圖7 按一致性路由可以分解擁擠的場景,例如這裡的圖片。因為它可能會被錯誤地解釋為中間是一個上下顛倒的房子和兩個無法解釋的部分。相反的,下面的矩形會被路由給船,而這也就把下面的三角形帶進了船。一旦這個船被解釋清楚,那麼就能很容易地解釋上面的兩個部分是一個房子了。圖片由Aurélien Géron提供

就是這些!你現在知道CapsNet背後的關鍵原理了!如果你想了解更多的細節,可以查看我的兩個關於CapsNet的視頻(一個是關於它的架構,另外一個是如何實現它)和帶有我的注釋的這個用TensorFlow實現的膠囊網路(Jupyter Notebook文件)。請隨意對視頻和GitHub上的文件進行評論,或是通過我的Twitter賬號@aureliengeron聯絡我。希望你覺得這個博文對你有幫助。

[1]這是由S. Sabour、N. Frosst和G. Hinton發表的論文《Dynamic routing with capsules》里提出的最初的架構。但是在文章發表後他們又提出了一個更通用的架構。其中物體出現的概率以及姿態參數都在輸出向量里按不同的方式編碼了。不過核心的觀點還是沒有改變。

This article originally appeared in English: "Introducing capsule networks".


Aurélien Géron是一名機器學習諮詢師,還是O』Reilly圖書《Hands-on Machine Learning with Scikit-Learn and TensorFlow》的作者。他在谷歌時,曾在2013到2016年間領導了YouTube的視頻分類團隊。Géron在2002到2012年創立了Wifirst公司並擔任CTO。在法國,Wifirst是一家領先的無線服務供應商。在2001年,Géron創立了Polyconseil並擔任CTO。這家公司現在管理著共享電汽車服務Autolib。在此之前,他作為軟體工程師在多個領域工作,包括金融、防務、醫療保健等。

?

由O"Reilly和Intel共同舉辦的AI Conference 2018北京站承諾:

將會為您帶來一場史無前例的、全球領先人工智慧創新人士雲集的會議,讓中國的人工智慧人才與全球人工智慧思想領袖面對面地近距離交流。

大幕即將拉開,敬請關注!


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 OReillyData 的精彩文章:

推斷時代的數據流動性:概率計算帶來了太多的希望,但這一切可能被數據的零和博弈所抑制

TAG:OReillyData |