Hinton 最近提出的 Capsule 計劃

眼見「深度學習教父」Geoffery Hinton在許多場合談到過自己正在攻關的「Capsule」之後,現在我們終於等到了這篇論文,得以具體感受Capsule的特性。雷鋒網 AI 科技評論把這篇論文主要成果介紹如下。

終於盼來了Hinton的Capsule新論文,它能開啓深度神經網絡的新時代嗎?

背景

目前的神經網絡中,每一層的神經元都做的是類似的事情,比如一個卷積層內的每個神經元都做的是一樣的卷積操作。而Hinton堅信,不同的神經元完全可以關注不同的實體或者屬性,比如在一開始就有不同的神經元關注不同的類別(而不是到最後纔有歸一化分類)。具體來說,有的神經元關注位置、有的關注尺寸、有的關注方向。這類似人類大腦中語言、視覺都有分別的區域負責,而不是分散在整個大腦中。

爲了避免網絡結構的雜亂無章,Hinton提出把關注同一個類別或者同一個屬性的神經元打包集合在一起,好像膠囊一樣。在神經網絡工作時,這些膠囊間的通路形成稀疏激活的樹狀結構(整個樹中只有部分路徑上的膠囊被激活),從而形成了他的Capsule理論。Capsule也就具有更好的解釋性。值得一提的是,同在谷歌大腦(但不在同一個辦公室)的Jeff Dean也認爲稀疏激活的神經網絡是未來的重要發展方向,不知道他能不能也提出一些不同的實現方法來。

Capsule這樣的網絡結構在符合人們「一次認知多個屬性」的直觀感受的同時,也會帶來另一個直觀的問題,那就是不同的膠囊應該如何訓練、又如何讓網絡自己決定膠囊間的激活關係。Hinton這篇論文解決的重點問題就是不同膠囊間連接權重(路由)的學習。

解決路由問題

首先,每個層中的神經元分組形成不同的膠囊,每個膠囊有一個「活動向量」activity vector,它是這個膠囊對於它關注的類別或者屬性的表徵。樹結構中的每個節點就對應着一個活動的膠囊。通過一個迭代路由的過程,每個活動的膠囊都會從高一層網絡中的膠囊中選擇一個,讓它成爲自己的母節點。對於高階的視覺系統來說,這樣的迭代過程就很有潛力解決一個物體的部分如何層層組合成整體的問題。

對於實體在網絡中的表徵,衆多屬性中有一個屬性比較特殊,那就是它出現的概率(網絡檢測到某一類物體出現的置信度)。一般典型的方式是用一個單獨的、輸出0到1之間的迴歸單元來表示,0就是沒出現,1就是出現了。在這篇論文中,Hinton想用活動向量同時表示一個實體是否出現以及這個實體的屬性。他的做法是用向量不同維度上的值分別表示不同的屬性,然後用整個向量的模表示這個實體出現的概率。爲了保證向量的長度,也就是實體出現的概率不超過1,向量會通過一個非線性計算進行標準化,這樣實體的不同屬性也就實際上體現爲了這個向量在高維空間中的方向。

採用這樣的活動向量有一個很大的好處,就是可以幫助低層級的膠囊選擇自己連接到哪個高層級的膠囊。具體做法是,一開始低層級的膠囊會給所有高層級的膠囊提供輸入;然後這個低層級的膠囊會把自己的輸出和一個權重矩陣相乘,得到一個預測向量。如果預測向量和某個高層級膠囊的輸出向量的標量積更大,就可以形成從上而下的反饋,提高這兩個膠囊間的耦合係數,降低低層級膠囊和其它高層級膠囊間的耦合係數。進行幾次迭代後,貢獻更大的低層級膠囊和接收它的貢獻的高層級膠囊之間的連接就會佔越來越重要的位置。

在論文作者們看來,這種「一致性路由」(routing-by-agreement)的方法要比之前最大池化之類只保留了唯一一個最活躍的特徵的路由方法有效得多。

網絡構建

作者們構建了一個簡單的CapsNet。除最後一層外,網絡的各層都是卷積層,但它們現在都是「膠囊」的層,其中用向量輸出代替了CNN的標量特徵輸出、用一致性路由代替了最大池化。與CNN類似,更高層的網絡觀察了圖像中更大的範圍,不過由於不再是最大池化,所以位置信息一直都得到了保留。對於較低的層,空間位置的判斷也只需要看是哪些膠囊被激活了。

終於盼來了Hinton的Capsule新論文,它能開啓深度神經網絡的新時代嗎?

這個網絡中最底層的多維度膠囊結構就展現出了不同的特性,它們起到的作用就像傳統計算機圖形渲染中的不同元素一樣,每一個膠囊關注自己的一部分特徵。這和目前的計算機視覺任務中,把圖像中不同空間位置的元素組合起來形成整體理解(或者說圖像中的每個區域都會首先激活整個網絡然後再進行組合)具有截然不同的計算特性。在底層的膠囊之後連接了PrimaryCaps層和DigitCaps層。

實驗結果

由於膠囊具有新的特性,所以文中的實驗結果也並不只是跑跑Benchmark而已,還有很多對膠囊帶來的新特性的分析。

數字識別

首先在MNIST數據集上,經過三次路由迭代學習、層數也不算多的CapsNet就得到了優秀的錯誤率。

終於盼來了Hinton的Capsule新論文,它能開啓深度神經網絡的新時代嗎?

同時,作者們依據CapsNet中的表徵對「網絡認爲自己識別到」的圖像進行重構,表明在正確識別的樣本中(豎線左側),CapsNet可以正確識別到圖像中的細節,同時降低噪聲。

終於盼來了Hinton的Capsule新論文,它能開啓深度神經網絡的新時代嗎?

健壯性

由於網絡結構中DigitCaps部分能夠分別學到書寫中旋轉、粗細、風格等變化,所以對小變化的健壯性更好。在用一個隨機抹黑過數字的MNIST數據集訓練CapsNet後,作者們用它來識別affNIST數據集。這個數據集中的樣本都是經過小幅度變化後的MNIST樣本,變化後的樣本如下圖。這個CapsNet直接拿來識別affNIST的正確率有79%;同步訓練的、參數數目類似的CNN只有66%。

終於盼來了Hinton的Capsule新論文,它能開啓深度神經網絡的新時代嗎?

分割高度重合的數字

作者們把MNIST數據集中的數字兩兩疊在一起建立了MultiMNIST數據集,兩個數字的邊框範圍平均有80%是重合的。CapsNet的識別結果高於CNN基準自不必提,但作者們接下來做的圖形分析中清晰地展現出了膠囊的妙處。

如圖,作者們把兩個激活程度最高的膠囊對應的數字作爲識別結果,據此對識別到的圖像元素進行了重構。對於下圖中識別正確的樣本(L指真實標籤,R指激活程度最高的兩個膠囊對應的標籤),可以看到由於不同的膠囊各自工作,在一個識別結果中用到的特徵並不會影響到另一個識別結果,不受重疊的影響(或者說重疊部分的特徵可以複用)。

終於盼來了Hinton的Capsule新論文,它能開啓深度神經網絡的新時代嗎?

另一方面,每個膠囊還是需要足夠多的周邊信息支持,而不是一味地認爲重疊部分的特徵就需要複用。下圖左圖是選了一個高激活程度的膠囊和一個低激活程度膠囊的結果(*R表示其中一個數字既不是真實標籤也不是識別結果,L仍然爲真實標籤)。可以看到,在(5,0)圖中,關注「7」的膠囊並沒有找到足夠多的「7」的特徵,所以激活很弱;(1,8)圖中也是因爲沒有「0」的支持特徵,所以重疊的部分也沒有在「0」的膠囊中用第二次。

終於盼來了Hinton的Capsule新論文,它能開啓深度神經網絡的新時代嗎?

膠囊效果的討論

在論文最後,作者們對膠囊的表現進行了討論。他們認爲,由於膠囊具有分別處理不同屬性的能力,相比於CNN可以提高對圖像變換的健壯性,在圖像分割中也會有出色的表現。膠囊基於的「圖像中同一位置至多隻有某個類別的一個實體」的假設也使得膠囊得以使用活動向量這樣的分離式表徵方式來記錄某個類別實例的各方面屬性,還可以通過矩陣乘法建模的方式更好地利用空間信息。不過膠囊的研究也纔剛剛開始,他們覺得現在的膠囊至於圖像識別,就像二十一世紀初的RNN之於語音識別 —— 研究現在只是剛剛起步,日後定會大放異彩。

論文全文參見:https://arxiv.org/pdf/1710.09829.pdf