1. 程式人生 > >膠囊網路為何如此熱門?與卷積神經網路相比誰能更勝一籌?

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


  編譯 | 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
原文連結