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