膠囊網絡升級新版本,推特2000+贊,圖靈獎得主Hinton都說好
膠囊網絡新進展
魚羊 發(fā)自 凹非寺
量子位 報道 | 公眾號 QbitAI
膠囊網絡曾被認為是下一代深度學習的基石。
圖靈獎得主Geoffrey Hinton在2017年提出了這種全新的深度學習方法,以期挑戰(zhàn)CNN“天命之子”的地位。
卷積神經網絡CNN固然好用,可是在池化層中會損失空間信息,所以面對下面這種有些錯位的人臉,CNN就會陷入迷茫。
膠囊網絡就不同了,它計算物體的存在概率,并用向量的模來表征,向量方向則表示了特征姿態(tài)信息。因為膠囊的輸出是一個向量,詳細的姿態(tài)信息會被整個網絡保存下來。
這樣一來,無需復雜的數(shù)據(jù)擴增,膠囊網絡也能實現(xiàn)上看下看左看右看不同方位識別。
但兩年過去之后,對于這個方法的研究似乎仍處于起步階段,CNN依然笑傲深度學習。
這是不是有點雷聲大雨點小了?
反正創(chuàng)始人本身應該是有信心的。最近,Hinton親自指導了一項研究,擔任論文的通訊作者,還下場點贊,稱其為“更好的膠囊版本”。
連創(chuàng)始人都點贊的膠囊網絡
在對象檢測這個任務上,當前的AI已經展現(xiàn)出了超強的性能,但有個問題,想要訓練出一個靠譜的AI,先得投喂它大量的數(shù)據(jù)。
這跟幼童的學習過程形成了鮮明的對比,不需要太多指導,孩子們也能學會識別和定位物體。
研究人員認為,自我監(jiān)督和歸納偏差在更高效的學習中扮演了重要的角色。
于是,無監(jiān)督膠囊網絡誕生了。
不同于單個神經元,膠囊是一組打包好的人造神經元,能夠跟蹤對象各個部分之間的關系。
這個名為SCAE(Stacked Capsule Autoencoder)的網絡主要由三個部分組成:集群膠囊自動編碼器(CCAE),零件膠囊自動編碼器(PCAE)和對象膠囊自動編碼器(OCAE)。
集群膠囊用二維點表示零件,并且把它們的坐標作為系統(tǒng)的輸入。
零件膠囊(PCAE)先將輸入對象整體劃分成一個個零件及其姿勢;然后,通過仿射變換學習模板,使用姿勢來構建新的輸入。
接著,對象膠囊(OCAE)會試著由姿勢推斷出物體,從而發(fā)現(xiàn)潛在的結構。
膠囊網絡的窘境
像CNN這樣的神經網絡需要依靠龐大的數(shù)據(jù)庫學習,并且需要很長時間才能認識到不同角度看到的對象,其實是同一個物體。
而膠囊網絡的思路是,場景通常包含許多復雜的對象,這些對象又由更簡單的部分組成,所以其實無需構建全局等同于仿射變換的模型。
根據(jù)定義,部件的外觀和形狀比完整物體的變化更小,因此,它們應該更容易被學習。只要了解零件是如何組合在一起形成不同物體的,就可以從零件及其姿勢中識別出對象本身。
由于物體的姿勢會隨著觀察者位置(坐標系)的改變而改變,因此能夠正確識別零件姿勢的檢測器會產生注視點等效的零件表示。對象 – 零件的關系不依賴于特定的位置,因此它們又是注視點不變的。這兩個屬性結合在一起,就產生了注視點等效的對象表示。
之前版本的膠囊網絡通過迭代地改進對象的零件分配(也稱為路由)來解決這個問題。但問題是這樣做在計算和存儲方面效率很低,并且無法擴展到更大的圖像。這也就造成了膠囊網絡訓練速度比CNN慢得多,在CIFAR-10、ImageNet等數(shù)據(jù)集上準確率也不如CNN。
那么這個更好的膠囊網絡,有什么突破嗎?
SCAE
根據(jù)膠囊網絡的原理,為了實現(xiàn)分類,需要構建生成模型(解碼器)和相應的推理網絡(編碼器)。
生成比較簡單,因為任意對象都可以產生任意多個部分。因為解碼器在設計中是注視點等變的,所以編碼器必須至少能近似地學習注視點等變的表示。
SCAE定義了一種新的表示學習方法,其中任意編碼器都能通過推理局部零件和它們的姿勢來學習注視點等變表示,并識別出這些零件屬于哪一種物體。
膠囊的定義:描述抽象實體的模型的特殊部分。
在這個新版本的無監(jiān)督膠囊網絡中,有四個重要的組成部分:
- PCAE編碼器:自下而上注意力機制的CNN
- OCAE編碼器:Set Transformer
- PCAE解碼器
- OCAE解碼器
推斷零件及姿勢
對于M個零件,PCAE需要 M ×(6 + 1 )個預測參數(shù)。也就是說,對于每一個零件,都需要6個仿射變換參數(shù),以及該零件存在的概率。
用 1 × 1 的卷積將CNN的輸出投影到 M ×(6 + 1 + 1)個特征圖上——這里額外的特征圖將作為注意力Mask,通過softmax(歸一化指數(shù)函數(shù))在空間上對其進行標準化,與其余7個特征圖相乘,并在空間位置上獨立地對每個維度求和。這類似于全局平均池化,但允許模型專注于特定位置,稱作基于注意力的池化。
PCAE編碼器將學習推斷不同零件膠囊的姿勢和存在,而解碼器會為每個零件繪制圖像模板,像是這樣:
對應于當前零件的模板,使用該零件的姿勢進行仿射變換,并且變換模板的像素會被用來創(chuàng)建每一個圖像像素的單獨混合模型。
由零件,及整體
實現(xiàn)判斷的是OCAE。
此前的膠囊網絡采用基于EM算法(Hinton提出)的推理程序來投票,判斷零件歸屬于哪個對象。這樣,每個零件最開始會被投給不同的對象,但最終,投票會收斂到少數(shù)幾個對象身上。
SCAE嘗試直接根據(jù)零件的姿勢和存在概率預測對象膠囊的activations。
使用帶有K個輸出的Set Transformer編碼零件的activations。零件膠囊的activations描述零件本身而非像素,其在圖像中可以處于任意位置,并且沒有順序意義。因此,集輸入神經網絡比起MLPs(多層感知機)來就成了更好的選擇。
Set Transformer的每個輸出都被喂給一個單獨的MLP,MLP會輸出對應對象膠囊的所有activations。
此外,研究人員還采用了一些應用于對象存在概率的稀疏損失。根據(jù)消融實驗的結果,這一點是很有必要的:
投喂給OCAE進行訓練的,是來自對象膠囊的高斯混合預測下的零件膠囊activations最大化后的可能性,受到稀疏性約束。
成績
光說不練假把式,研究團隊用未標記數(shù)據(jù)進行了訓練,在無監(jiān)督分類SVHN上收獲了state-of-the-art的成績,55%;在MNIST上則收獲了接近于state-of-the-art的成績,98.5%。
SCAE用對象來預測部件,因此在推理時省略了迭代路由。并且,SCAE是唯一一種在無監(jiān)督對象分類中取得了具有競爭力的結果,而不依賴于互信息(MI)的方法。也就是說,它不再需要復雜的數(shù)據(jù)擴增。
不過,在目前的版本中,圖像中還不允許多次出現(xiàn)相同類型的部件。并且在大型數(shù)據(jù)集CIFAR-10上的表現(xiàn)還是不給力。
作者自己也承認,這個膠囊網絡還不足以模擬復雜的現(xiàn)實世界圖像。
但正如Hinton本人所說,他只擔心為基礎理論挑毛病的人不夠多。只要有誕生更好的方法的可能性,就應該遵循直覺繼續(xù)研究。
論文團隊
論文一作是來自牛津大學的博士生Adam Kosiorek,現(xiàn)在在DeepMind實習。
這篇論文是小哥在谷歌大腦實習期間完成的,合作單位包括谷歌大腦和DeepMind。
傳送門
論文地址:https://arxiv.org/abs/1906.06818
解讀博客:http://akosiorek.github.io/ml/2019/06/23/stacked_capsule_autoencoders.html
—?完?—