Geoffrey Hinton那篇备受关注的Capsule论文
選自arXiv
作者:Sara Sabour、Nicholas Frosst、Geoffrey Hinton
機器之心編譯
Geoffrey Hinton 等人備受關注的 NIPS 2017 論文《Dynamic Routing Between Capsules》已于數小時前公開。
9 月份,Axios 的一篇報道指出,Geoffrey Hinton 呼吁研究者們對反向傳播保持懷疑態度,并準備在深度學習之上重構人工智能的理論體系。報道指出,他和其他兩位研究者被 NIPS 2017 接收的論文《Dynamic Routing Between Capsules》正是 Hinton 對于未來人工智能形態的新探索。
在論文未放出之前,業內已經對其有著熱烈的討論。昨天,這篇文章終于被提交到了預印版論文平臺上,我們得以一覽全貌。在本文中,機器之心對此論文做了摘要介紹。
論文:《Dynamic Routing Between Capsules》
論文鏈接:https://arxiv.org/abs/1710.09829
Capsule 是一組神經元,其活動向量(activity vector)表示特定實體類型的實例化參數,如對象或對象部分。我們使用活動向量的長度表征實體存在的概率,向量方向表示實例化參數。同一水平的活躍 capsule 通過變換矩陣對更高級別的 capsule 的實例化參數進行預測。當多個預測一致時,更高級別的 capsule 變得活躍。我們展示了判別式訓練的多層 capsule 系統在 MNIST 數據集上達到了頂尖的性能,比識別高度重疊數字的卷積網絡的性能優越很多。為了達到這些結果,我們使用迭代的路由協議機制(routing-by-agreement mechanism):較低級別的 capsule 偏向于將輸出發送至高級別的 capsule,有了來自低級別 capsule 的預測,高級別 capsule 的活動向量具備較大的標量積。
1. 前言
人類視覺可以通過使用一個小心確定的注視點序列來保證僅有極少部分畫面需要進行高分辨率處理。我們很難通過內省的思路來理解一個場景中注視點序列能夠傳遞多少信息,我們能從單一注視點中獲取多少信息,但在谷歌大腦 Sara Sabour、Nicholas Frosst 與 Geoffrey Hinton 提交的這篇論文中,研究人員假設單一注視點可以提供遠多于目標種類及其屬性等信息。研究人員假設人類的多層視覺系統可以在每個注視點上創建類似于解析樹一樣的機制,在研究中,我們將忽略這些單一注視點解析樹在多個注視點中如何協調的問題。
解析樹通常通過動態分配內存來構建,但根據 Hinton 等人 2000 年的研究,在新的論文里我們假設對于單一注視點而言,解析樹是由指定多層神經網絡雕刻而出的,就像在巖洞的石壁上雕刻的圖畫一樣。每一層會被分割為很多神經元小組,它們被稱為膠囊(「Capsule」,Hinton et al., 2011),解析樹上的每個節點對應于一個活動的 Capsule。在迭代地進行路由選擇的過程中,每個活動 Capsule 將在上面的層中選擇一個 Capsule 作為其樹中的父單元。對于更高級的視覺系統而言,這個迭代過程將解決從部分分配到整體的問題。
在活動 Capsule 中神經元的活動表示了圖像中存在的特定實體的各種性質。這些性質可以包含很多種不同的實例化參數,例如姿勢(位置,大小,方向)、變形、速度、反射率,色彩、紋理等等。其中一個非常特殊的屬性就是圖像中實例化實體的存在與否。表示存在的一個簡單方法就是使用單獨的邏輯單元,讓它輸出實體存在的概率。在本論文中,研究人員探索了一個有趣的替代方法——使用實例化參數向量的總長度來表示實體的存在,并強制向量的方向來表示實體的屬性。研究人員通過應用一個非線性方法,讓向量方向不變,但大小可以縮放,以此確保了輸出的向量長度不超過 1。
Capsule 的輸出是向量,所以我們可以使用強大的動態路由機制確保輸出的信息可以被傳送到合適的父 capsule 中(上一層)。最初,輸出可以通向所有可能的父節點,但因為耦合系數為 1,這個范圍被急劇縮小。對于每個可能的父節點來說,capsule 會通過其自身的輸出乘以權重矩陣來計算一個「預測向量」。如果這個預測向量與可能的父節點輸出存在一個大的標量積,則存在自上而下的反饋,使得該父節點的耦合系數上升,其他父節點的耦合系數下降。這增加了 capsule 對該父節點的貢獻,進而提高了 capsule 預測和該父節點輸出的的標量積。這種「路由協議」(routing-by-agreement)應該比由最大池化實現的原始形式的路由效果好得多,后者允許一層中的神經元忽視其他特征檢測器,除了下一層的局部最活躍的特征檢測器。我們證明我們的動態路由機制可以有效實現分割高度重疊的物體所需的「解釋」(explaining away)。
卷積神經網絡(CNN)使用學到的特征檢測器副本(translated replicas),這使它們能夠在圖像中一個位置獲得的優秀權重值知識轉化到其它位置上。這已經被證明其在圖像解釋方面非常有幫助。盡管我們用向量輸出 capsules 代替 CNN 中標量輸出的特征檢測器,用協議路由(routing-by-agreement)代替最大池化,但我們仍希望通過復制空間內學到的知識,所以我們令除了最后一層的 capsules 層級都為卷積層。
和 CNN 一樣,我們創建更高級別的 capsule 來覆蓋圖像的更大區域,但是與最大池化不同,我們無法拋棄區域內實體的確切位置信息。對于低級 capsule 而言,位置信息由活躍的 capsule 進行「位置編碼」(place-coded)。隨著層級的上升,越來越多的位置信息層級由 capsule 的輸出向量中的實數值部分進行「率編碼」(rate-coded)。從位置編碼到率編碼的轉變和高級別 capsule 代表具備更多自由度的更復雜實體共同表明 capsule 的維度應該隨著層級的上升而增長。
2. Capsule 如何計算輸入和輸出向量
現在有很多可能的方式能實現 Capsule 的一般性概念。本論文的目的并不是探索整個可能的空間,而是簡單地展示了一個非常直接與有效的實現方式,即動態路由選擇(dynamic routing)。
我們希望 Capsule 輸出向量的長度能表征實體(由 Capsule 表征)存在于當前輸入的概率。因此我們能使用非線性「壓縮」函數確保短向量的長度能夠縮短到幾乎等于零,而長向量的長度壓縮到 1 的左鄰域內。我們可以將它們放入判別式學習(discriminative learning)以充分利用非線性的特性。
其中 v_j 為 Capsule j 的輸出向量,s_j 為總輸入向量。
對于 Capsule 除了第一層的所有層級,Capsule s_j 的總輸入為下面 Capsule 層級中所有「預測向量」
的加權和,而預測向量 u_hat 可通過計算一個 Capsule 的 u_i 輸出與下面層級的權重矩陣 W_ij 的乘積而得出:
其中 c_ij 為耦合系數(coupling coefficients),該系數由迭代的動態路由選擇過程確定。
Capsule i 的耦合系數和上面層級所有的 Capsule 耦合系數和為 1,并且由「routing softmax」決定,該 softmax 函數中的初始 logits b_ij 為 Capsule i 應該和 Capsule j 耦合的對數先驗概率:
對數先驗(log priors)可以同時和其它權重有區別地進行學習。它們依賴于兩個 Capsule 的位置與類型,但不依賴于當前的輸入圖像。初始化耦合系數可以通過測量前面層級中每一個 Capsule j 的當前輸入 v_j 和 Capsule i 的預測
間一致性(agreement),然后借助該測量的一致性迭代地精煉更新耦合系數。
這個一致性(agreement)可以簡單地設置為標量乘積
。該一致性可以被視為對數似然度,并可加入初始 logit 中,b_ij 在計算所有耦合系數更新值之前已經將 Capsule i 鏈接到更高級的 Capsule 中。
在卷積 Capsule 層中,每一個 Capsule 單元都是一個卷積單元,因此每一個 Capsule 將輸出一個向量組而不是單個輸出向量。
4. CapsNet 架構
圖 1 展示了一個簡單的 CapsNet 架構。該架構只有兩個卷積層和一個全連接層。Conv1 有 256 個 9 × 9 卷積核,步幅為 1,帶有 ReLU 激活。該層將像素強度(pixel intensity)轉換成局部特征檢測器的活動,然后作為輸入傳送至主 capsule 中。
圖 1:一個簡單的 3 層 CapsNet。該模型的結果與深度卷積網絡(如 Chang and Chen [2015])差不多。DigitCaps 層中每個 capsule 的活動向量(activity vector)的長度代表出現的每個類別的樣例,用于計算分類損失。W_ij 是 PrimaryCapsule 中每個 u_i 之間的權重矩陣,i ∈ (1, 32 × 6 × 6),v_j,j ∈ (1, 10)。
主 Capsule 是最低級別的多維實體,從逆向圖(inverse graphics)的角度來看,激活主 capsule 對應的是逆轉渲染過程(rendering process)。這和將多個實例化部分拼合起來組成一個熟悉的整體是一種非常不同的計算類型,而后者正是 capsule 的設計初衷。
第二個層(Primary Capsules)是一個卷積 capsule 層,具有 32 個通道、卷積 8D capsule(即每個主 capsule 包括 8 個卷積單元,每個卷積單元有一個 9 × 9 核,步幅為 2)。每個主 capsule 輸出接收到所有 256×81 Conv1 單元的輸出,它們的感受野與 capsule 的中心位置重疊。PrimaryCapsules 一共有 [32, 6, 6] capsule 輸出(每個輸出都是一個 8D 向量),[6, 6] 網格中的每個 capsule 彼此共享權重。可以把 PrimaryCapsules 看作一個區塊非線性(block non-linearity)為 Eq. 1 的卷積層。最后的層(DigitCaps)的每個數字類別都有一個 16D capsule,每個 capsule 接收來自下面一層所有 capsule 的輸入。
我們只在兩個連續的 capsule 層之間執行路由選擇(如 PrimaryCapsules 和 DigitCaps)。Conv1 的輸出是 1D 的,無法對其空間進行定位。因此 Conv1 和 PrimaryCapsules 之間無法進行路由選擇。所有路由選擇 logit(b_ij)都要被初始化為 0。因此,最初 capsule 輸出(u_i)以同樣的概率(c_ij)被發送至所有父 capsule(v_0...v_10)。我們在 TensorFlow 中進行實現(Abadi et al. [2016]),使用 Adam 優化器及其 TensorFlow 默認參數,包括指數遞減學習率,以最小化 Eq. 4 中的邊際損失。
4.1 重構損失作為正則化方法
我們使用額外的重構損失(reconstruction loss)來促進數字 capsule 對輸入數字的實例化參數進行編碼。在訓練期間,我們蒙住所有向量,除了正確的數字 capsule 的活動向量。然后,使用該活動向量來重構。數字 capsule 的輸出被饋送至包含 3 個全連接層的解碼器,該解碼器對圖 2 描述的像素強度進行建模。我們最小化邏輯單元(logistic unit)輸出和像素強度之間的平方差的和。我們按 0.0005 的比例縮小重構損失,以使它不會主導訓練過程中的邊際損失。如圖 3 所述,僅保留重要的細節,從 CapsNet 的 16D 輸出進行重構是魯棒的。
5. MNIST 上的 Capsule
圖 3:進行 3 次路由迭代的 CapsNet 在 MNIST 數據集上的測試重構樣例。(l, p, r) 分別代表標簽、預測和重構目標。最右兩列是兩個失敗的重構樣例,它展示了模型如何混淆該圖像中的 5 和 3。其他列來自正確的分類,展示了模型如何挑剔細節,同時使噪聲變得平滑。
表 1:CapsNet 分類測試準確度。其中 MNIST 均值和標準差都是根據三個試驗計算而出。
我們發現 capsule 中的一個維度(所有 16 個維度中)幾乎總是可以表征數字的寬度。而多個維度可以表征全局變化的組合,還有其它一些維度可以表征數字的局部變化。
圖 4:維度擾動(dimension perturbation)。每一行展示當 DigitCaps 表征的 16 個維度之一在區間 [0.25, 0.25] 中以 0.05 的間隔(interval)進行變化并重構。
圖 5 中的重構表明 CapsNet 能夠將圖像分割成兩個原始數字。
圖 5. 一個 CapaNet 的樣本重構,其中在 MultiMNIST 測試數據上使用了 3 個路徑迭代。
兩個重構數字以綠色和紅色重疊位于圖下方。圖上方展示了輸入圖像。L:(l1, l2) 表示圖中輸入的兩個數字的標簽,R:(r1, r2) 表示重構的兩個數字。最右兩列展示了兩個錯誤重構的例子,分別從標簽和預測(以 P 標記)重構。在(2,8)的例子中,模型混淆了 8 和 7,在(4,9)的例子中,模型混淆了 9 和 0。其它列都給出了正確的分類結果,表明模型能考慮所有的像素并決定每個像素如何分配給兩個數字,即使是在相當困難的情景下(第 1—4 列)。注意數據集生成的時候,像素的值都簡化為 1。帶*號的兩列展示了既不是從標簽也不是從預測重構的數字的結果。這些結果表明模型不止是為圖像中的所有(包括未出現的)數字尋找最佳擬合。因此,在(5,0)的例子中,它無法重構出一個 7,因為它知道 5 和 0 擬合得最好,并且模型已經考慮了所有的像素。同樣,在(8,1)的例子中,數字 8 中的環并不會使模型指向 0,因為它已經考慮了 8。所以,如果其中一個沒有任何其它的支持線索,模型不會將一個像素分配給兩個數字。
8. 討論
Capsule 做出了一個很強大的具有代表性的假設:在圖像的每一個位置,一個 capsule 只表示實體類型的至多一個實例。這個假設受被稱為「擁擠」(crowding,Pelli et al. [2004])的知覺現象的啟發,能消除「綁定」(binding,Hinton[1981])問題,并允許一個 capsule 使用一個分布表示(它的活動向量)在給定的位置編碼該類型的實體的實例化參數。這種分布表示的有效性比通過在高維網格上激活一個點(并使用正確的分布表示)編碼實例化參數呈指數增長。然后 capsule 可以充分利用這樣的事實,即空間關系可以通過矩陣乘法建模。
Capsule 利用和視角變化一致的神經活動,而不是盡可能地消除活動中的視角變化。這給了它們超越「歸一化」方法如空間轉換器網絡(spatial transformer network)的優勢(Jaderberg et al. [2015]):它們能同時處理多個不同目標(或目標部分)的多種仿射變換。
Capsule 也很擅長分割任務(這是計算機視覺中的另一個難題),因為實例化參數的向量允許它們使用路由協議機制(routing-by-agreement),正如研究者在論文中所證明的。現在,對 capsule 的研究處于和本世紀初用 RNN 研究語音識別類似的階段。有許多基本的具有代表性的理由使我們相信這是一個更好的方法,但在 capsule 能超過一種高度發展的技術之前,還需要很多的細節洞察。一個簡單的 capsule 系統已經能在分割重疊數字任務中表現出空前強大的性能,這種跡象提醒我們 capsule 是一個值得探索的方向。
原文地址: http://baijiahao.baidu.com/s?id=1582430292372638652&wfr=spider&for=pc
總結
以上是生活随笔為你收集整理的Geoffrey Hinton那篇备受关注的Capsule论文的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 先读懂CapsNet架构然后用Tenso
- 下一篇: 用TensorFlow可视化卷积层的方法