姓名:車文揚 學號:16020199006
轉(zhuǎn)載至:http://www.sohu.com/a/225467127_633700柳刮,有刪節(jié)
【嵌牛導(dǎo)讀】:新興的膠囊神經(jīng)網(wǎng)絡(luò)如何克服傳統(tǒng)網(wǎng)絡(luò)的缺點
【嵌牛鼻子】:capsule網(wǎng)絡(luò)
【嵌牛提問】:什么是膠囊網(wǎng)絡(luò)砚著,與卷積網(wǎng)絡(luò)的聯(lián)系是什么?
【嵌牛正文】:
膠囊網(wǎng)絡(luò)(CapsNet)是一種新的熱門的神經(jīng)網(wǎng)絡(luò)架構(gòu)茅撞。它可能對深度學習帶來深遠的影響帆卓,特別是對計算機視覺領(lǐng)域巨朦。等一下!計算機視覺不是差不多已經(jīng)被解決了嗎鳞疲?我們不是已經(jīng)看到了多種卷積神經(jīng)網(wǎng)絡(luò)(CNN)的神奇案例罪郊?它們不是已經(jīng)在計算機視覺任務(wù)(例如分類、定位尚洽、物體檢測悔橄、語義分割或?qū)嵗指睿妶D1)上實現(xiàn)超越人類的水平了嗎腺毫?
圖1 一些主要的計算機視覺任務(wù)癣疟。當前,每種任務(wù)都需要一個不一樣的CNN架構(gòu)潮酒。比如分類里的ResNet睛挚,物體檢測里的YOLO,實例分割里的Mask R-CNN等急黎。圖片由Aurélien Géron提供
恩扎狱,是的。我們已經(jīng)見到了很多神奇的CNN勃教,但是淤击,
它們需要非常多的圖片進行訓(xùn)練(或重復(fù)使用了已用海量數(shù)據(jù)訓(xùn)練過的神經(jīng)網(wǎng)絡(luò)的一部分)。 而CapsNet使用少得多的訓(xùn)練數(shù)據(jù)就能泛化故源。
CNN們并不能很好地應(yīng)對模糊性污抬,但CapsNet可以。所以它能在非常擁擠的場景里也表現(xiàn)得很好(盡管它目前還需要解決背景圖的問題)绳军。
CNN會在池化層理丟失大量的信息印机,從而降低了空間分辨率(見圖2),這就導(dǎo)致對于輸入的微小變化门驾,其輸出幾乎是不變的射赛。在諸如語義分割這樣的場景里,這會是一個問題猎唁,因為細節(jié)信息必須要在網(wǎng)絡(luò)里被保留≈渚ⅲ現(xiàn)在,這一問題已經(jīng)被通過在CNN里構(gòu)建復(fù)雜的架構(gòu)來恢復(fù)這些損失的信息所解決诫隅。在CapNet里面腐魂,細節(jié)的姿態(tài)信息(比如對象的準確位置、旋轉(zhuǎn)逐纬、厚度蛔屹、傾斜度、尺寸等)會在網(wǎng)絡(luò)里被保存下來豁生,不用先丟失再恢復(fù)兔毒。輸入上微小的變化會帶來輸出上的小變化漫贞,信息被保存。這被稱為“等變的”育叁。這就讓CapsNet能使用一個簡單和統(tǒng)一的架構(gòu)來應(yīng)對不同的視覺任務(wù)迅脐。
最后,CNN需要額外的組件來自動識別每個小部分屬于哪個物體(例如這條腿屬于這只羊)豪嗽。而CapsNet則可以給你這些部分的層級結(jié)構(gòu)谴蔑。
圖2 DeepLab2的圖像分割管道,來自Liang-Chieh Chen等龟梦。注意這里面CNN的輸出(右上角圖)是非常得粗糙隐锭。這就需要一些額外的步驟來恢復(fù)丟失的細節(jié)。圖片來自論文《DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs》计贰,獲作者友情授權(quán)使用钦睡。可以查看S. Chilamkurthy的這篇很棒的博文來了解語義分割的神經(jīng)網(wǎng)絡(luò)的架構(gòu)有多么復(fù)雜多樣
CapsNet是在2011年在Geoffrey Hinton等人的一篇名為《Transforming Autoencoders》的論文中首次出現(xiàn)躁倒。但僅在幾個月前(即2017年11月)荞怒,Sara Sabour、Nicholas Frosst和Geoffrey Hinton發(fā)表了一篇名為《Dynamic Routing between Capsules》的論文秧秉,其中介紹了CapsNet架構(gòu)挣输。該架構(gòu)在MNIST(著名的手寫數(shù)字圖像數(shù)據(jù)集)上達到了最先進的性能,并且在MultiMNIST數(shù)據(jù)集(一種有重疊的不同數(shù)字組的手寫數(shù)字的變體)上獲得了比CNN好得多的結(jié)果福贞。見圖3。
圖3 MultiMNIST圖片(白色)和由CapsNet重構(gòu)后的結(jié)果(紅色和綠色)停士⊥诹保“R”=重構(gòu)后的結(jié)果;“L”=標注恋技。例如拇舀,對第一個樣例(左上角)的預(yù)測是準確的,重構(gòu)的結(jié)果也對蜻底。但是在第五個例子里骄崩,預(yù)測(5,7)是錯的,不是(5,0)薄辅。因此要拂,5被正確地重構(gòu)了,但是0沒有站楚。圖片來自論文《Dynamic routing between capsules》脱惰,作者友情授權(quán)使用
盡管有上述這些優(yōu)點,但CapsNet還遠未到完美的程度窿春。首先拉一,它們在更大的圖片上(例如CIFAR10或ImageNet數(shù)據(jù)集里)還沒有CNN的表現(xiàn)好采盒。另外,CapsNet的計算量很大蔚润,同時它還不能區(qū)分靠的很近的相同的物體(這被稱為“擁擠問題”磅氨,人類也有這個問題)。但是這里的關(guān)鍵點是膠囊網(wǎng)絡(luò)是非常有希望的嫡纠,看起來只要做一些修改就能讓膠囊網(wǎng)絡(luò)充分釋放它們的潛能烦租。畢竟現(xiàn)代CNN在1998年就被發(fā)明了,但也要經(jīng)過幾次改進货徙,直到2012年的ImageNet大賽上才達到業(yè)界領(lǐng)先水平左权。
那么,到底CapsNet是什么痴颊?
簡而言之赏迟,一個膠囊網(wǎng)絡(luò)是由膠囊而不是由神經(jīng)元構(gòu)成。一個膠囊是一小群神經(jīng)元蠢棱,它們可以學習在一個圖片的一定區(qū)域內(nèi)檢查一個特定的對象(比如锌杀,一個矩形)。它的輸出是一個向量(例如泻仙,一個8維的向量)糕再。每個向量的長度代表了物體是否存在的估計概率[1],它的方向(例如在8維空間里)記錄了物體的姿態(tài)參數(shù)(比如玉转,精確的位置突想、旋轉(zhuǎn)等)。如果物體有稍微的變化(比如究抓,移動猾担、旋轉(zhuǎn)、尺寸變化等)刺下,膠囊將也會輸出一個長度相同但是方向稍微變化的向量绑嘹。因此膠囊是等變的。
和常規(guī)神經(jīng)網(wǎng)絡(luò)很類似橘茉,CapsNet也是由多層構(gòu)成(見圖4)工腋。處于最底層的膠囊被稱為向量膠囊:它們每個都只用圖片的一小部分區(qū)域作為輸入(稱為感知域),然后試圖去探測某個特殊的模式(例如畅卓,一個矩形)是否存在擅腰,以及姿態(tài)如何。在更高層的膠囊(稱為路由膠囊)則是探測更大和更復(fù)雜的物體髓介,比如船等惕鼓。
圖4 一個兩層的CapsNet。在本例里唐础,向量膠囊層有兩個5x5膠囊的特征圖箱歧。其中第二個膠囊層有兩組3x3膠囊的特征圖矾飞。每個膠囊輸出一個向量。每個箭頭代表不同的膠囊的輸出呀邢。藍色的箭頭代表那些檢測三角形的膠囊的輸出洒沦;黑色箭頭代表試圖檢測矩形的膠囊的輸出。圖片由Aurélien Géron提供
向量膠囊層是用幾個常規(guī)卷積層實現(xiàn)价淌。例如在這篇論文里申眼,他們使用兩個卷積層輸出256個包含標量的6×6特征圖。然后把這個輸出變形成32個包含8維向量的6×6特征圖蝉衣。最后括尸,他們使用一個新奇的壓縮函數(shù)來確保這些向量的長度都是在0到1(來代表概率)之間。就這楊病毡,它們就產(chǎn)生了向量膠囊的輸出濒翻。
下一層的膠囊也試圖去檢測物體和它們的姿態(tài),但是它們的工作機制很不一樣啦膜。它們使用的是一種叫按一致性路由的算法有送。這里是CapsNet的主要魅力所在。先讓我們看一個例子僧家。
假設(shè)我們只有兩個向量膠囊:一個識別矩形的膠囊和一個識別三角形的膠囊雀摘,而且假定他們都能檢測到相應(yīng)的形狀。矩形和三角形可以是房子或是船的一部分(見圖5)八拱。根據(jù)矩形的姿態(tài)阵赠,它們都是稍微向右旋轉(zhuǎn)了一點,那么房子和船也都會向右旋轉(zhuǎn)了一點肌稻。根據(jù)三角形的姿態(tài)豌注,這個房子幾乎完全是上下顛倒的,而船則是稍微向右旋轉(zhuǎn)了一點灯萍。注意在這里,整體的形狀和整體與部分的關(guān)系都是在訓(xùn)練中學習的∶看希現(xiàn)在可以看到矩形和三角形在船上的姿態(tài)是一致的旦棉,而在房子上的姿態(tài)則非常不一致。因此药薯,很有可能這里的矩形和三角形是同一條船上的一部分绑洛,而房子上則不是。
圖5 按一致性路由童本。第一步——基于對象的部分是否存在和姿態(tài)來預(yù)測對象是否存在及其姿態(tài)真屯,接著查看預(yù)測間的一致性。圖片由Aurélien Géron提供
因為我們現(xiàn)在已經(jīng)很有信心地知道矩形和三角形是船的一部分穷娱,所以把矩形和三角形的輸出更多指向船的膠囊而更少指向房子的膠囊就順理成章了绑蔫。用這個方法运沦,船的膠囊將會獲得更多的有用輸入信號,而房子的膠囊則接收更少的噪音配深。對每一個連接携添,按一致性路由算法會維護一個路由權(quán)重(見圖6):它對于一致的會增加權(quán)重,而對于不一致的則降低權(quán)重篓叶。
圖6 按一致性路由烈掠。第二步——更新路由權(quán)重。圖片由Aurélien Géron提供
這個按一致性路由算法會涉及到一些循環(huán):一致性檢測和路由權(quán)重更新(值得注意的是缸托,這一步驟會在每次預(yù)測時發(fā)生左敌,不只是一次,也不只是在訓(xùn)練時)俐镐。這一算法對于擁擠的場景特別有用矫限。例如圖7里的場景是比較模糊的,因為你能看到中間有一個上下顛倒的房子京革,但這樣會讓上面的三角形和下面的矩形無法得到解釋奇唤。按一致性路由算法更有可能收斂到一個更好的解釋:下面是一條船,而上面是一個房子匹摇。這樣模糊性就“可以被解釋了”:下面的矩形最好是被看成一條船的一部分咬扇,同時這樣也解釋了下面的三角形。一旦下面的兩個部分被解釋好了廊勃,剩下的部分就很容易地被解釋成一個房子懈贺。
圖7 按一致性路由可以分解擁擠的場景,例如這里的圖片坡垫。因為它可能會被錯誤地解釋為中間是一個上下顛倒的房子和兩個無法解釋的部分梭灿。相反的,下面的矩形會被路由給船冰悠,而這也就把下面的三角形帶進了船堡妒。一旦這個船被解釋清楚,那么就能很容易地解釋上面的兩個部分是一個房子了溉卓。圖片由Aurélien Géron提供