1. 程式人生 > >膠囊網路的簡單介紹

膠囊網路的簡單介紹

原文:https://kndrck.co/posts/capsule_networks_explained/
預修知識:卷積神經網路,變分自編碼器
免責宣告:本文不涉及膠囊網路背後的數學,而是說一下它們背後的直覺和動機。


什麼是膠囊網路?為什麼要使用膠囊網路?

膠囊網路是 Geoffrey Hinton 提出的一種新型神經網路結構,為了解決卷積神經網路(ConvNets)的一些缺點,提出了膠囊網路。

話不多說,來看看這個聽起來就像「一顆一顆藥擺在你面前」的網路是怎麼樣的。

問題一:卷積網路有平移不變性

平移不變性是什麼呢?假設我們有一個可以分類貓的模型,你給這個模型看一張貓的圖片,它會預測出這是一隻貓。然後你把貓向左移一下,再展示給這個模型看,它依然會認為這是一隻貓,而不會預測出其他的資訊。

圖 1.0: 平移不變性

這樣看來好像不錯,意味著無論這隻貓放在圖片的哪個位置,我們的模型都能識別出這是一隻貓,好像它表現得還不錯。但是有的時候我們需要的是平移同變性。也就是當我們給這個模型展示一張移動到右邊的貓的圖片時,模型預測的是一隻移動到右邊的貓;展示一張移動到左邊的貓的圖片時,模型預測的是一隻移動到左邊的貓。

圖 1.1: 平移同變性

為什麼要平移同變性呢?一般我們給一個模型輸入一張人臉的圖片的時候,五官都是在正常的位置的,眼睛在眼睛的位置上,鼻子在鼻子的位置上。但是我們如果把眼睛放在額頭上,耳朵放在下巴那,一般的卷積神經網路還是會認為這是一張臉,因為它有平移不變性

,也就是它只認為一張有鼻子有眼睛有嘴巴等特徵的臉,就是人臉。讓我們來看一下這樣一張奇怪的人臉是怎樣的。

圖 1.2: 平移不變性下的人臉

如果膠囊網路向我們所說的那樣有平移同變性,那麼它就能夠識別到人臉的某一部分與另一部分的相對位置不正確,並且把這一部分正確的標註出來:

圖 1.3: 平移同變性下的人臉

問題二:卷積網路需要大量的資料來泛化

為了使卷積神經網路具有平移不變數,模型必須為每個不同的觀測角度學習不同的濾波器,而這樣就需要大量的資料來進行。

問題三:卷積網路在人類視覺系統上的表現很差

根據 Hinton 所說的,當視覺刺激被觸發的時候,大腦裡面有一種內在的機制,將低層次的視覺資料「導航」到它認為可以最好地處理這些資料的部分。而卷及網路使用多層濾波器來從底層可視資料中提取高階資訊,所以這種導航機制

就不存在了。

圖 1.4:人類 vs CNN

而且,當人類在看一個物體的時候,視覺系統會在座標系上表示這個物體。就好比我們可以知道一個圖形是不是給翻轉了。

圖 1.5:給物體加上座標系

當我們看到上面的這個字母時,我們是會在腦裡邊默默地把他旋轉到一個它們一般所放置的參考點,類似於:

圖 1.6:轉過來之後發現,這不是個「R」呀!

而由於卷及網路其設計的特性,它就不會有這樣的操作。那麼稍後,我們將探討如何設定一個邊框,並對物件進行相對於其座標的旋轉。

膠囊網路是怎麼解決這些問題的?

逆影象

你可以把(電腦)視覺想象成「逆影象 」—— Geoffrey Hinton

什麼是逆影象呢?簡單地說,它就是電腦在螢幕上渲染的物體的一個相反對映。(這聽起來好像有點難理解,但是當你看完下面的文字和圖片,應該會有較大幫助)

為了把一個網格物體變成畫素在螢幕上顯示出來,電腦會取這整個物體的姿態,然後與一個變換矩陣相乘。這樣就會在一個較低的維度(2D)輸出物體部分的姿態,這就是我們在螢幕上所看到的畫面了。

圖 2.0:計算機圖形渲染過程(簡化)

那麼為什麼我們不能反過來做呢?讓低維空間的畫素圖片去乘以變換矩陣的逆,來得到整個物體的姿態。

圖 2.1:提出來的逆圖形想法

這樣做可不可以的呢?答案是:可以的(只是在近似的水平上)!這樣做的話,我們就可以把一個物體作為整體表示,而把部分的姿態作為權重矩陣來表示,並且表現出兩者的關係。而這些權重矩陣是視角不變的,也就是說,不管部分的姿態怎麼變化,我們都使用同樣的權重矩陣可以得到整體的姿態

這讓我們在權重矩陣中完全獨立於物體的觀測角度。平移不變性現在只在權重矩陣中表現出來了,而不是在(網路)神經活動中表現。

我們從哪裡得到權重矩陣來表示這個關係呢?

圖 2.2:論文《Dynamic Routing Between Capsules》的片段

在 Hinton 的論文中,他說膠囊網路使用了一個重構的損失函式來作為正則化方法,類似於自編碼器的操作。這樣為什麼會有效呢?

圖 2.3:自編碼器架構

為了從較低維度空間中重構輸入,編碼器和譯碼器需要學習一個好的矩陣表示,來聯絡潛在空間和輸入的關係,聽起來是不是很熟悉?

總之,利用重構的損失函式作為正則方法,膠囊網路能夠通過無監督學習,在在整個物體和物體的姿態之間學習一個全域性線性複本來作為權重矩陣。因此,平移不變性就封裝在這個權重矩陣中而不是在神經活動中,這樣就使得神經網路有平移同變性。因此,在某種意義上,當圖片和全域性線性複本相乘時,就是在做一個「旋轉和平移」的操作。

動態路徑規劃

路徑規劃是把資訊傳播給另一個能夠更加高效處理資訊的操作者的行為。路徑規劃在卷積網路中就是通過池化層來進行的,而且基本上都是使用的極大值池化。

極大值池化是做路徑規劃的一個很原始的方式,它只讓在池化中最活躍的神經元起作用。而膠囊網路就不同了,它會把資訊傳給上層中最擅長處理的膠囊。

圖 3.1:來自論文《Dynamic Routing Between Capsules》的片段

結論

膠囊網路使用一個模仿人類視覺系統的的新架構,來獲得平移同變性,代替原來的平移不變性,使得它在不同的視角下可以使用更少的資料得到更廣的泛化。


如果你想了解更多關於人工智慧的資訊,歡迎掃碼關注微信公眾號以及知乎專欄 「譯智社」,我們為大家提供優質的人工智慧文章、國外優質部落格和論文等資訊喲!