關於矩陣膠囊與EM路由的理解(基於Hinton的膠囊網路)
本文介紹了Hinton的第二篇膠囊網路論文“Matrix capsules with EM Routing”,其作者分別為Geoffrey E Hinton、Sara Sabour和Nicholas Frosst。我們首先討論矩陣膠囊並應用EM(期望最大化)路由對不同角度的影象進行分類。對於那些想了解具體實現的讀者,本文的第二部分是一個關於矩陣膠囊和EM路由的tensorflow實現。
CNN所面臨的挑戰
在上一篇關於膠囊的文章中,我們提到了CNN在探索空間關係中面臨的挑戰,並討論了膠囊網路如何解決這些問題。讓我們回顧一下CNN在分類相同型別但不同角度的影象時所面臨的一些重要的挑戰。例如,正確地分類不同的方向的人臉。
從概念上講,CNN需要訓練多個神經元來處理不同的特徵方向(0°,20°,20°),並用一個頂層的人臉檢測神經元檢測人臉。
為了解決這個問題,我們添加了更多的卷積層和特徵對映。然而,這種方法傾向於記住資料集,而不是概括解決方案。它需要大量的訓練資料,去覆蓋不同的變體以及避免過擬合。MNIST資料集包含55000個訓練資料,每個數字有5500個樣本。然而,小孩子們根本不需要這麼多樣本來學習數字識別。我們現有的深度學習模型,包括CNN,在利用資料上都顯得非常低效。
對抗攻擊
對於將個別特徵進行簡單的移動,旋轉或大小調整的對抗樣本,CNN顯得非常脆弱。
我們可以對影象新增微小的不可見的更改,從而輕鬆地欺騙一個深層神經網路。左邊的圖片被CNN正確地歸類為熊貓。通過選擇性地從中間圖片向熊貓圖片中新增微小的變化,CNN居然把右邊的合成影象歸類為長臂猿。
(圖片來自OpenAI)
膠囊
一個膠囊能夠捕捉特徵的可能性及其變體。因此,膠囊不僅能檢測到特徵,還能通過訓練來學習和檢測變體。
例如,同一網路層可以檢測順時針旋轉的面部。
同變性是可以相互變換的物件的檢測。直觀地說,一個膠囊檢測到臉右旋轉20°(或左旋轉20°),並不是通過匹配一個右旋轉20°的變體來識別到臉部。通過迫使模型在膠囊中學習特徵變數,我們可以用較少的訓練資料更有效地推斷可能的變體。在CNN中,最終的標籤是視角不變的,即頂層神經元檢測到一個人臉,但丟失了旋轉角度資訊。對於同變性來說,像旋轉角度這類變化的資訊被儲存在膠囊裡面。保留這些空間方向的資訊可以幫助我們避免對抗樣本攻擊。
矩陣膠囊
一個矩陣膠囊同神經元一樣可以捕捉啟用(可能性),但也捕捉到了一個4x4的姿態矩陣。在計算機圖形學中,一個姿態矩陣定義了一個物體的平移和旋轉,它相當於一個物體的視角的變化。
(圖片來源於論文Matrix capsules with EM routing)
例如,下面的第二行影象代表上面同一物件的不同視角。在矩陣膠囊中,我們訓練模型來捕捉姿態資訊(方向、方位角等)。當然,就像其他深度學習方法一樣,這僅僅是我們的意圖,並不能得到保證。
(圖片來源於論文Matrix capsules with EM routing)
EM(期望最大化)路由的目的是通過使用聚類技術(EM)將膠囊分組形成一個部分-整體關係。在機器學習中,我們使用EM聚類簇將資料點聚類為高斯分佈。例如,我們通過兩個高斯分佈和建模,將下面的資料聚類為兩簇。然後我們用對應的高斯分佈來表示資料點。
在人臉檢測這個示例中,低層中每一個嘴巴、眼睛和鼻子的檢測膠囊都對其可能的父膠囊的姿態矩陣進行預測(投票)。每個投票都是父膠囊的姿態矩陣的一個預測值,它通過將自己的姿態矩陣乘以訓練得到的變換矩陣來計算。
我們將在執行時使用EM路由,將膠囊分組到父膠囊中:
例如,如果鼻子,嘴和眼睛膠囊都有一個相似的姿態矩陣值的投票,那麼我們將他們聚集在一起形成父膠囊:人臉膠囊。
A higher level feature (a face) is detected by looking for agreement between votes from the capsules one layer below. We use EM routing to cluster capsules that have close proximity of the corresponding votes.
高斯混合模型 & 期望最大化(EM)
我們先來了解一下EM。高斯混合模型將資料點聚類為混合高斯分佈,由均值和標準差描述。下面,我們將資料點聚類為黃色和紅色的叢集,每一個都由不同的和描述。
(圖片來源於Wikipedia)
對於一個兩叢集的高斯混合模型,我們先隨機的初始化叢集和。期望最大(EM)演算法通過將訓練資料點擬合到和,然後基於高斯分佈重新計算和。將此過程不斷迭代,直到解收斂,即在最終的和分佈下,看到所有的資料點的概率最大化。
在給定集合下,的概率為:
在每次迭代中,我們開始於2個高斯分佈,之後會根據資料點重新計算其和。
最終,我們會收斂到兩個高斯分佈,它使觀察到的資料點的似然最大化。
使用EM進行協議路由(Routing-By-Agreement)
現在,我們探討更多的細節。一個更高層次的特徵(一張臉)通過尋找來自下一層膠囊的投票的協商被檢測到。一個從膠囊到父膠囊的投票可以通過將膠囊的姿態矩陣乘以一個視角不變轉換矩陣計算得到。
一個膠囊作為一個部分-整體關係被歸為膠囊的概率是基於投票與其他膠囊投票的接近程度。通過成本函式和反向傳播學到。它不僅學習了人臉的組成,而且能夠保證在經過變換後父膠囊與其子元件的姿態資訊匹配。
下面是矩陣膠囊的協議路由(Routing-By-Agreement)的視覺化圖。姿態矩陣和經視角不變矩陣轉換後,根據投票的相似度,將膠囊分組。(與即和)
(圖片來源於Geoffrey Hinton)
即使視角改變,姿態矩陣和投票也會以協調的方式變化。在我們的例子中,當臉部旋轉時,選票的位置可能會從紅色點變為粉紅色點。然而,EM路由是基於鄰近度的,它仍然可以將相同的子膠囊聚集在一起。因此,變換矩陣對於物體的任何視角都是相同的:視角不變性。用於物件的不同方向,我們只需要一組轉換矩陣和一個父膠囊。
膠囊分配
EM路由在執行時將膠囊分組形成一個更高級別的膠囊。它同時會計算分配概率來量化膠囊及其父膠囊之間的執行時連線。例如,手膠囊不屬於人臉膠囊,它們之間的分配概率為零。也被一個膠囊的啟用程度所影響。如果影象中的嘴被阻塞,嘴膠囊將會有零啟用值。計算出來的也將是零。
計算膠囊的啟用值和姿態矩陣
膠囊輸出的計算不同於深度網路的神經元。在EM聚類中,我們通過高斯分佈來表示資料點。在EM路由中,我們仍用高斯模型對父膠囊的姿態矩陣進行建模。姿態矩陣是一個4×4矩陣,即16個元素。我們用具有16個和16個的高斯模型對姿態矩陣建模,每個表示姿態矩陣的一個元素。
令為從膠囊到父膠囊的投票,