注:為了便于理解,我在翻譯的時候可能不完全遵循原文句子,部分內(nèi)容經(jīng)過理解使用了自己的表達;論文部分原文是英文,我也將其翻譯了。
什么是膠囊網(wǎng)絡(luò)?
膠囊網(wǎng)絡(luò)是Geoffrey Hinton提出的一種新型神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),為了解決卷積神經(jīng)網(wǎng)絡(luò)(ConvNets)的一些缺點,提出了膠囊網(wǎng)絡(luò)。
話不多說,來看看這個聽起來就像「一顆一顆藥擺在你面前」的網(wǎng)絡(luò)是怎么樣的。
卷積網(wǎng)絡(luò)有平移不變性
平移不變性是什么呢?假設(shè)我們有一個可以分類貓的模型,你給這個模型看一張貓的圖片,它會預(yù)測出這是一只貓。然后你把貓向左移一下,再展示給這個模型看,它依然會認為這是一只貓,而不會預(yù)測出其他的信息。
這樣看來好像不錯,意味著無論這只貓放在圖片的哪個位置,我們的模型都能識別出這是一只貓,好像它表現(xiàn)得還不錯。但是有的時候我們需要的是平移同變性。
也就是當我們給這個模型展示一張移動到右邊的貓的圖片時,模型預(yù)測的是一只移動到右邊的貓;展示一張移動到左邊的貓的圖片時,模型預(yù)測的是一只移動到左邊的貓。
為什么要平移同變性呢?一般我們給一個模型輸入一張人臉的圖片的時候,五官都是在正常的位置的,眼睛在眼睛的位置上,鼻子在鼻子的位置上。
但是我們?nèi)绻蜒劬Ψ旁陬~頭上,耳朵放在下巴那,一般的卷積神經(jīng)網(wǎng)絡(luò)還是會認為這是一張臉,因為它有平移不變性,也就是它只認為一張有鼻子有眼睛有嘴巴等特征的臉,就是人臉。讓我們來看一下這樣一張奇怪的人臉是怎樣的。
如果膠囊網(wǎng)絡(luò)像我們所說的那樣有平移同變性,那么它就能夠識別到人臉的某一部分與另一部分的相對位置不正確,并且把這一部分正確的標注出來:
卷積網(wǎng)絡(luò)需要大量的數(shù)據(jù)來泛化
為了使卷積神經(jīng)網(wǎng)絡(luò)具有平移不變量,模型必須為每個不同的觀測角度學習不同的濾波器,而這樣就需要大量的數(shù)據(jù)來進行。
卷積網(wǎng)絡(luò)在人類視覺系統(tǒng)上的表現(xiàn)很差
根據(jù)Hinton所說的,當視覺刺激被觸發(fā)的時候,大腦里面有一種內(nèi)在的機制,將低層次的視覺數(shù)據(jù)「導航」到它認為可以最好地處理這些數(shù)據(jù)的部分。而卷及網(wǎng)絡(luò)使用多層濾波器來從底層可視數(shù)據(jù)中提取高級信息,所以這種導航機制就不存在了。
而且,當人類在看一個物體的時候,視覺系統(tǒng)會在坐標系上表示這個物體。就好比我們可以知道一個圖形是不是給翻轉(zhuǎn)了。
當我們看到上面的這個字母時,我們是會在腦里邊默默地把他旋轉(zhuǎn)到一個它們一般所放置的參考點,類似于:
而由于卷積網(wǎng)絡(luò)其設(shè)計的特性,它就不會有這樣的操作。那么稍后,我們將探討如何設(shè)置一個邊框,并對對象進行相對于其坐標的旋轉(zhuǎn)。
膠囊網(wǎng)絡(luò)是怎么解決這些問題的?
你可以把(電腦)視覺想象成「逆圖像 」——Geoffrey Hinton
什么是逆圖像呢?簡單地說,它就是電腦在屏幕上渲染的物體的一個相反映射。(這聽起來好像有點難理解,但是當你看完下面的文字和圖片,應(yīng)該會有較大幫助)
為了把一個網(wǎng)格物體變成像素在屏幕上顯示出來,電腦會取這整個物體的姿態(tài),然后與一個變換矩陣相乘。這樣就會在一個較低的維度(2D)輸出物體部分的姿態(tài),這就是我們在屏幕上所看到的畫面了。
那么為什么我們不能反過來做呢?讓低維空間的像素圖片去乘以變換矩陣的逆,來得到整個物體的姿態(tài)。
這樣做可不可以的呢?答案是:可以的(不過只是在近似的水平上)!這樣做的話,我們就可以把一個物體作為整體表示,而把部分的姿態(tài)作為權(quán)重矩陣來表示,并且表現(xiàn)出兩者的關(guān)系。
而這些權(quán)重矩陣是視角不變的,也就是說,不管部分的姿態(tài)怎么變化,我們都使用同樣的權(quán)重矩陣可以得到整體的姿態(tài)。
這讓我們在權(quán)重矩陣中完全獨立于物體的觀測角度。平移不變性現(xiàn)在只在權(quán)重矩陣中表現(xiàn)出來了,而不是在(網(wǎng)絡(luò))神經(jīng)活動中表現(xiàn)。
得到權(quán)重矩陣
來看看在膠囊網(wǎng)絡(luò)的論文中是怎么講的。
注:圖片內(nèi)容由英語原文翻譯。
在Hinton的論文中,他說膠囊網(wǎng)絡(luò)使用了一個重構(gòu)的損失函數(shù)來作為正則化方法,類似于自編碼器的操作。這樣為什么會有效呢?
為了從較低維度空間中重構(gòu)輸入,編碼器和譯碼器需要學習一個好的矩陣表示,來聯(lián)系潛在空間和輸入的關(guān)系,聽起來是不是很熟悉?
總之,利用重構(gòu)的損失函數(shù)作為正則方法,膠囊網(wǎng)絡(luò)能夠通過無監(jiān)督學習,在在整個物體和物體的姿態(tài)之間學習一個全局線性復(fù)本來作為權(quán)重矩陣。
因此,平移不變性就封裝在這個權(quán)重矩陣中而不是在神經(jīng)活動中,這樣就使得神經(jīng)網(wǎng)絡(luò)有平移同變性。因此,在某種意義上,當圖片和全局線性復(fù)本相乘時,就是在做一個「旋轉(zhuǎn)和平移」的操作。
動態(tài)路徑規(guī)劃
路徑規(guī)劃是把信息傳播給另一個能夠更加高效處理信息的操作者的行為。路徑規(guī)劃在卷積網(wǎng)絡(luò)中就是通過池化層來進行的,而且基本上都是使用的極大值池化。
極大值池化是做路徑規(guī)劃的一個很原始的方式,它只讓在池化中最活躍的神經(jīng)元起作用。而膠囊網(wǎng)絡(luò)就不同了,它會把信息傳給上層中最擅長處理的膠囊。
結(jié)論
膠囊網(wǎng)絡(luò)使用一個模仿人類視覺系統(tǒng)的的新架構(gòu),來獲得平移同變性,代替原來的平移不變性,使得它在不同的視角下可以使用更少的數(shù)據(jù)得到更廣的泛化。
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4733瀏覽量
100415
原文標題:膠囊網(wǎng)絡(luò),是什么?
文章出處:【微信號:AI_Thinker,微信公眾號:人工智能頭條】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論