當前位置:
首頁 > 最新 > 膠囊網路為何如此熱門?與卷積神經網路相比誰能更甚一籌?

膠囊網路為何如此熱門?與卷積神經網路相比誰能更甚一籌?

編譯 | AI科技大本營

參與 | 孫士浩

編輯 | 明 明

【AI科技大本營按】膠囊網路是什麼?膠囊網路怎麼能克服卷積神經網路的缺點和不足?機器學習顧問AurélienGéron發表了自己的看法。營長將文章內容翻譯如下。

膠囊網路(Capsule networks, CapsNets)是一種熱門的新型神經網路架構,它可能會對深度學習特別是計算機視覺領域產生深遠的影響。等一下,難道計算機視覺問題還沒有被很好地解決嗎?卷積神經網路(Convolutional neural networks, CNNs)已在分類、定位、物體檢測、語義分割或實例分割等各種計算機視覺任務中達到了超人類水平,難道我們所有人沒有注意到這些難以置信的例子嗎?(見圖1)

圖1 一些主要的計算機視覺任務。現今,這些計算機視覺任務都需要不同的卷積神經網路架構,如用於分類的ResNet架構,用於目標檢測的YOLO架構,用於語義分析的掩模R-CNN架構,等等。圖像由AurélienGéron提供。

是的,我們已經看到了令人難以置信的CNNs,但是:

這些CNNs都接受了數量巨大圖像的訓練(或重複使用了部分已訓練過的神經網路)。CapsNets能通過少得多的訓練數據就可很好地完成網路訓練。

CNNs不能很好地處理圖像多義性表達。而膠囊網路可以很好處理這一問題,即使在擁擠的場景下也表現出色(儘管CapsNets現在仍與背景糾纏在一起)。

CNNs在池化層丟失大量信息。這些池化層降低了圖像空間解析度(見圖2),為此,它們的輸出對輸入端的微小變化是保持不變的。當整個網路中細節信息必須被保留時,這就是一個問題,如在語義分割中。目前,解決這個問題主要是通過在CNNs周圍構建複雜結構來恢復一些丟失的信息。運用CapsNets,詳細的姿態信息(如精確的目標位置、旋轉、厚度、歪斜、大小等等)在整個網路中都被保留,而不是丟失而後被恢復過來。輸入的微小變化會導致輸出的細微變化——信息卻被保留。這就是所謂的「同變性(equivariance)」。所以,CapsNets對於不同的視覺任務可以使用相同的簡單且一致的架構。

最後,CNNs需要額外的組件來實現自動識別一個部件歸屬於哪一個對象(如,這條腿屬於這隻羊)。而CapsNets則免費提供部件的層次結構。

圖2 DeepLab2圖像分割流程,由Liang-Chieh Chen等提供:可以看到,CNN(右上)的輸出結果是十分粗糙的,這使得通過增加額外步驟來恢復丟失的細節很有必要。該圖來自Deeplab論文《Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution,and Fully Connected CRFs》,引用得到作者許可。想了解語義分割體系結構的多樣性和複雜性可以看S. Chilamkurthy所做的這篇好文章。

CapsNets是由Geoffrey Hinton等人於2011年在一篇名為「轉換自動編碼器(Transforming Autoencoders)」論文中首次提出的。但僅在幾個月前,也就是2017年11月,Sara Sabour, Nicholas Frosst和Geoffrey Hinton發表了一篇名為「膠囊間動態路由(Dynamic Routing between Capsules)」的論文,介紹了一個CapsNets結構,在MNIST(手寫數字圖像的著名數據集)上達到了最好性能,並在MultiMNIST(不同數字對重疊形成的變形手寫數字圖像數據集)上獲得了比CNNs好得多的結果,見圖3。

圖3 MultiMNIST 圖像(白色) 和CapsNets重構圖像 (紅色+綠色)。「R」代表重構 ,「L」代表標籤. 如:這一個例子預測(左上)是正確的,重構圖像也是正確的。但第5個例子預測是錯的,(5,0)預測成了(5,7)。因此,5被正確重構,而0卻沒有。圖形來自論文《Dynamic routing between capsules》, 引用得到作者許可。

儘管CapsNets具有很多有點,但它仍遠不夠完美。首先,現在CapsNets在如CIFAR10或ImageNet大規模圖像測試集上的表現不如CNNs好。而且,CapsNets需要大量計算,不能檢測出相互靠近的同類型的兩個對象(這被稱為「擁擠問題」,且已被證明人類也存在這個問題)。但CapsNets的主要思想還是非常有前途的,似乎只需要一些調整就可以發揮全部潛力。畢竟,現在的CNNs是在1998年發明的,經過一些調整後,就在2012年在ImageNet數據集上戰勝了最新技術。

那麼,CapsNets到底是什麼?

簡而言之,CapsNet由膠囊而不是神經元組成。膠囊是用於學習檢測給定圖像區域內特定對象(如矩形)的一小組神經元,它輸出一個向量(如一個8維矢量),該向量的長度表示被檢測對象存在的估計概率,而方向(如在8維空間中)對被檢測對象的姿態參數(如精確的位置,旋轉等)進行編碼。如果被檢測對象發生稍微改變(如移動、旋轉、調整大小等),則膠囊將輸出相同長度的矢量,但方向稍有不同。這樣,膠囊是等變的。

就像常規的神經網路一樣,一個CapsNet也是按多個層組織的(見圖4)。最下層的膠囊被稱為主膠囊:每個膠囊都接收圖像的一個小區域作為輸入(稱其為接受場),嘗試檢測一個特定模式的存在和姿態,如矩形。更高層的膠囊稱為路由膠囊,檢測更大更複雜的對象,如船隻。

圖4 兩層膠囊網路。這個例子中,初始膠囊層有兩個5×5映射,而第二個膠囊層有兩個3×3映射。每個膠囊輸出一個向量,每個箭頭符號表示一個不同膠囊的輸出,藍色箭頭符號表示一個嘗試檢測三角形的膠囊的輸出,黑色箭頭符號表示一個嘗試檢測矩形的膠囊的輸出。圖像由AurélienGéron提供。

主膠囊層採用幾個常規的卷基層來實現。如本文使用兩個卷基層輸出256個包含標量的6×6特徵映射,並將這個輸出轉變成32個包含8維矢量的6×6映射。最後,使用一個新穎的壓縮函數來確保這些向量的長度在0到1之間(表示一個概率)。這樣就給出了主膠囊的輸出。

下幾層膠囊也嘗試檢測對象及其姿態,但工作方式非常不同,即使用按協議路由演算法。這就是膠囊網路的最大魔力所在。我們來看一個例子。

假設只有兩個主膠囊:一個長方形膠囊和一個三角膠囊,假設它們都檢測到正在尋找的東西。矩形和三角形都可能是房子或船的一部分(見圖5)。由於長方形的姿態是略微向右旋轉的,房子和船也得是稍微向右旋轉。考慮到三角形的姿態,房子就得幾乎是顛倒的,而船會稍微向右旋轉。注意,形狀和整體/部分關係都是在訓練期間學習的。現在注意長方形和三角形對船的姿態達成一致,而對房子的姿態強烈不一致。所以,矩形和三角形很可能是同一條船的一部分,並沒有房子的存在。

圖5 按協議路由,第1步—基於存在的部分對象及其姿態去預測對象及其姿態,而後在預測結果之間尋求一致性。圖像由AurélienGéron提供。

既然現在確信長方形和三角形是船的一部分,那麼將長方形和三角形膠囊的輸出結果更多地發送給船膠囊,而更少發送給房子膠囊,將更有意義:這樣,船膠囊將接收更有用的輸入信號,而房子膠囊將會收到較少的雜訊。對於每個連接而言,按協議路由演算法包含一個路由權重(見圖6):達成一致時,增大路由權重;出現分歧時,減少路由權重。

圖6 按協議路由,第2步—更新路由權重。圖像由AurélienGéron提供。

按協議路由演算法包括協議檢測+路由更新的一些迭代(注意,每次預測這都會發生,不只是一次且也不僅是在訓練時間)。這在擁擠的場景中特別有用:如圖7中,場景是存在歧義的,因為你從中間看到的可能是倒置的房子,但是這會使底部的矩形和頂部的三角形無法解釋。協議演算法很可能會給出更好的解釋:底部是一隻船,頂部是一個房子。這種模稜兩可的說法被認為是「可解釋過去的」:下面的矩形最好用船的存在來解釋,這也解釋了下面的三角形,一旦這兩個部分被解釋清楚,剩下的部分就很容易被解釋為一個房子。

圖7按協議路由能解析擁擠場景,如可被誤解為顛倒的房子而其他部分無法解釋的存在歧義的圖像。但底部矩形路由給船,同時底部三角形將也路由給船。一旦船被解釋清楚,那麼很容易將頂部解釋為房子。圖像由AurélienGéron提供。

作者|AurélienGéron

https://www.oreilly.com/ideas/introducing-capsule-networks?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+oreilly%2Fradar%2Fatom+%28O%27Reilly+Radar%29


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

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


請您繼續閱讀更多來自 AI科技大本營 的精彩文章:

Yann LeCun卸任!Facebook變天,做AI不能落地是不成了
Google首席執行官:AI就像火和電,有用而又危險

TAG:AI科技大本營 |