深度學習教父Geoffrey Hinton的“膠囊”論文公開,帶你讀懂它
在人工智能學界,Geoffrey Hinton擁有非常崇高的地位,甚至被譽為該領(lǐng)域的愛因斯坦。在人工智能領(lǐng)域最頂尖的研究人員當中,Hinton的引用率最高,超過了排在他后面三位研究人員的總和。目前,他的學生和博士后領(lǐng)導著蘋果、Facebook以及OpenAI的人工智能實驗室,而Hinton本人是谷歌大腦(Google Brain)人工智能團隊的首席科學家。
本文引用地址:http://www.ex-cimer.com/article/201710/370703.htm
就在幾個小時之前,由 Hinton 和其在谷歌大腦的同事 Sara Sabour、Nicholas Frosst 合作的 NIPS 2017 論文《Dynamic Routing Between Capsules》已經(jīng)正式對外公開,解釋了不同 Capsules (膠囊)間路由的學習。
研究背景
目前的神經(jīng)網(wǎng)絡中,每一層的神經(jīng)元都做的是類似的事情,比如一個卷積層內(nèi)的每個神經(jīng)元都做的是一樣的卷積操作。而Hinton堅信,不同的神經(jīng)元完全可以關(guān)注不同的實體或者屬性,比如在一開始就有不同的神經(jīng)元關(guān)注不同的類別(而不是到最后才有歸一化分類)。具體來說,有的神經(jīng)元關(guān)注位置、有的關(guān)注尺寸、有的關(guān)注方向。這類似人類大腦中語言、視覺都有分別的區(qū)域負責,而不是分散在整個大腦中。
為了避免網(wǎng)絡結(jié)構(gòu)的雜亂無章,Hinton提出把關(guān)注同一個類別或者同一個屬性的神經(jīng)元打包集合在一起,好像膠囊一樣。在神經(jīng)網(wǎng)絡工作時,這些膠囊間的通路形成稀疏激活的樹狀結(jié)構(gòu)(整個樹中只有部分路徑上的膠囊被激活),從而形成了他的Capsule理論。值得一提的是,同在谷歌大腦(但不在同一個辦公室)的Jeff Dean也認為稀疏激活的神經(jīng)網(wǎng)絡是未來的重要發(fā)展方向,不知道他能不能也提出一些不同的實現(xiàn)方法來。
Capsule這樣的網(wǎng)絡結(jié)構(gòu)在符合人們“一次認知多個屬性”的直觀感受的同時,也會帶來另一個直觀的問題,那就是不同的膠囊應該如何訓練、又如何讓網(wǎng)絡自己決定膠囊間的激活關(guān)系。Hinton這篇論文解決的重點問題就是不同膠囊間連接權(quán)重(路由)的學習。
解決路由問題
首先,每個層中的神經(jīng)元分組形成不同的膠囊,每個膠囊有一個“活動向量”activity vector,它是這個膠囊對于它關(guān)注的類別或者屬性的表征。樹結(jié)構(gòu)中的每個節(jié)點就對應著一個活動的膠囊。通過一個迭代路由的過程,每個活動的膠囊都會從高一層網(wǎng)絡中的膠囊中選擇一個,讓它成為自己的母節(jié)點。對于高階的視覺系統(tǒng)來說,這樣的迭代過程就很有潛力解決一個物體的部分如何層層組合成整體的問題。
對于實體在網(wǎng)絡中的表征,眾多屬性中有一個屬性比較特殊,那就是它出現(xiàn)的概率(網(wǎng)絡檢測到某一類物體出現(xiàn)的置信度)。一般典型的方式是用一個單獨的、輸出0到1之間的回歸單元來表示,0就是沒出現(xiàn),1就是出現(xiàn)了。在這篇論文中,Hinton想用活動向量同時表示一個實體是否出現(xiàn)以及這個實體的屬性。他的做法是用向量不同維度上的值分別表示不同的屬性,然后用整個向量的模表示這個實體出現(xiàn)的概率。為了保證向量的長度,也就是實體出現(xiàn)的概率不超過1,向量會通過一個非線性計算進行標準化,這樣實體的不同屬性也就實際上體現(xiàn)為了這個向量在高維空間中的方向。
采用這樣的活動向量有一個很大的好處,就是可以幫助低層級的膠囊選擇自己連接到哪個高層級的膠囊。具體做法是,一開始低層級的膠囊會給所有高層級的膠囊提供輸入;然后這個低層級的膠囊會把自己的輸出和一個權(quán)重矩陣相乘,得到一個預測向量。如果預測向量和某個高層級膠囊的輸出向量的標量積更大,就可以形成從上而下的反饋,提高這兩個膠囊間的耦合系數(shù),降低低層級膠囊和其它高層級膠囊間的耦合系數(shù)。進行幾次迭代后,貢獻更大的低層級膠囊和接收它的貢獻的高層級膠囊之間的連接就會占越來越重要的位置。
在論文作者們看來,這種“一致性路由”(routing-by-agreement)的方法要比之前最大池化之類只保留了唯一一個最活躍的特征的路由方法有效得多。
網(wǎng)絡構(gòu)建
作者們構(gòu)建了一個簡單的CapsNet。除最后一層外,網(wǎng)絡的各層都是卷積層,但它們現(xiàn)在都是“膠囊”的層,其中用向量輸出代替了CNN的標量特征輸出、用一致性路由代替了最大池化。與CNN類似,更高層的網(wǎng)絡觀察了圖像中更大的范圍,不過由于不再是最大池化,所以位置信息一直都得到了保留。對于較低的層,空間位置的判斷也只需要看是哪些膠囊被激活了。
這個網(wǎng)絡中最底層的多維度膠囊結(jié)構(gòu)就展現(xiàn)出了不同的特性,它們起到的作用就像傳統(tǒng)計算機圖形渲染中的不同元素一樣,每一個膠囊關(guān)注自己的一部分特征。這和目前的計算機視覺任務中,把圖像中不同空間位置的元素組合起來形成整體理解(或者說圖像中的每個區(qū)域都會首先激活整個網(wǎng)絡然后再進行組合)具有截然不同的計算特性。在底層的膠囊之后連接了PrimaryCaps層和DigitCaps層。
實驗結(jié)果
由于膠囊具有新的特性,所以文中的實驗結(jié)果也并不只是跑跑Benchmark而已,還有很多對膠囊?guī)淼男绿匦缘姆治觥?/p>
數(shù)字識別
首先在MNIST數(shù)據(jù)集上,經(jīng)過三次路由迭代學習、層數(shù)也不算多的CapsNet就得到了優(yōu)秀的錯誤率。
同時,作者們依據(jù)CapsNet中的表征對“網(wǎng)絡認為自己識別到”的圖像進行重構(gòu),表明在正確識別的樣本中(豎線左側(cè)),CapsNet可以正確識別到圖像中的細節(jié),同時降低噪聲。
健壯性
由于網(wǎng)絡結(jié)構(gòu)中DigitCaps部分能夠分別學到書寫中旋轉(zhuǎn)、粗細、風格等變化,所以對小變化的健壯性更好。在用一個隨機抹黑過數(shù)字的MNIST數(shù)據(jù)集訓練CapsNet后,作者們用它來識別affNIST數(shù)據(jù)集。這個數(shù)據(jù)集中的樣本都是經(jīng)過小幅度變化后的MNIST樣本,變化后的樣本如下圖。這個CapsNet直接拿來識別affNIST的正確率有79%;同步訓練的、參數(shù)數(shù)目類似的CNN只有66%。
分割高度重合的數(shù)字
作者們把MNIST數(shù)據(jù)集中的數(shù)字兩兩疊在一起建立了MultiMNIST數(shù)據(jù)集,兩個數(shù)字的邊框范圍平均有80%是重合的。CapsNet的識別結(jié)果高于CNN基準自不必提,但作者們接下來做的圖形分析中清晰地展現(xiàn)出了膠囊的妙處。
如圖,作者們把兩個激活程度最高的膠囊對應的數(shù)字作為識別結(jié)果,據(jù)此對識別到的圖像元素進行了重構(gòu)。對于下圖中識別正確的樣本(L指真實標簽,R指激活程度最高的兩個膠囊對應的標簽),可以看到由于不同的膠囊各自工作,在一個識別結(jié)果中用到的特征并不會影響到另一個識別結(jié)果,不受重疊的影響(或者說重疊部分的特征可以復用)。
另一方面,每個膠囊還是需要足夠多的周邊信息支持,而不是一味地認為重疊部分的特征就需要復用。下圖左圖是選了一個高激活程度的膠囊和一個低激活程度膠囊的結(jié)果(*R表示其中一個數(shù)字既不是真實標簽也不是識別結(jié)果,L仍然為真實標簽)。可以看到,在(5,0)圖中,關(guān)注“7”的膠囊并沒有找到足夠多的“7”的特征,所以激活很弱;(1,8)圖中也是因為沒有“0”的支持特征,所以重疊的部分也沒有在“0”的膠囊中用第二次。
膠囊效果的討論
在論文最后,作者們對膠囊的表現(xiàn)進行了討論。他們認為,由于膠囊具有分別處理不同屬性的能力,相比于CNN可以提高對圖像變換的健壯性,在圖像分割中也會有出色的表現(xiàn)。膠囊基于的“圖像中同一位置至多只有某個類別的一個實體”的假設也使得膠囊得以使用活動向量這樣的分離式表征方式來記錄某個類別實例的各方面屬性,還可以通過矩陣乘法建模的方式更好地利用空間信息。不過膠囊的研究也才剛剛開始,他們覺得現(xiàn)在的膠囊至于圖像識別,就像二十一世紀初的RNN之于語音識別 —— 研究現(xiàn)在只是剛剛起步,日后定會大放異彩。
現(xiàn)在,對 Capsule 理論的研究還處于比較早期的階段,這也就意味著其還有很多的問題有待考察。不過,現(xiàn)在已經(jīng)有越來越多的跡象表明 Capsule 可以解決一些問題,相信它是一個值得進一步挖掘的路徑,正如 Hinton 曾對《麻省理工科技評論》表示,“Capsule 理論一定是對的,不成功只是暫時的。”
評論