0
雷鋒網按:本文為雷鋒字幕組編譯的技術博客,原標題Capsule Neural Networks: The Next Neural Networks? Part 1: CNNs and their problems.,作者為Tomer Eldor。
翻譯 | 陳曉璇 劉寧 魏洪貴 整理 | 凡江
“普通的”卷積神經網絡是當前機器學習領域最熱的一個概念, 但是它也有一些問題,例如不能識別空間關系,比如說圖片或其他數據里不同部分之間的相對位置關系。Hinton最近提出的膠囊神經網絡也許能幫助我們解決包括這一問題和其他問題。
這篇文章是膠囊神經網絡系列教程的一部分。作為第一篇文章,將介紹常規(卷積)神經網絡以及它的一些問題。
神經網絡可能是當下機器學習領域最熱的部分。 近幾年,神經網絡得到眾多開發者不斷的改善,也更方便使用。但是,這些改進通常都是一些簡單的修改, 例如增加一些層,或者簡單的改進激活函數,但是并沒有引進全新的架構或思路。Geoffery Hinton 是包括神經網絡在內的很多廣泛使用的深度學習算法的創始人之一,考慮到他有著神經科學和人工智能的雙重背景,取得這些成就也就不會太讓人意外。
2017年10月底, Geoffrey Hinton, Sara Sabour, 和 Nicholas Frosst 在Google Brain發表了題為“Dynamic Routing Between Capsules(膠囊間的動態路由)”的論文,給神經網絡領域帶來了一些新的東西。這很令人興奮,因為這樣大的創新已經很久沒人做到了,圍繞它很可能有更多的研究點被激發出來。
基點:卷積神經網絡
卷積神經網絡 (CNNs) 是一種很靈活的機器學習模型,它的設計靈感來源于人腦的處理問題的方式。
神經網絡通過整合多層“神經元”來將原始數據處理成特定的模式或對象。
卷積神經網絡的一個主要構建塊是“卷積層”(名字的由來)。它有什么作用? 它將前一層的原始數據作為輸入,找到其中蘊含的模式信息,傳到下一層來更好地理解更大的圖片。
如果你剛接觸神經網絡,想要理解它,我建議你:
1. 看看 3Blue1Brown 的視頻,很生動形象。
2. 有關文字和視頻方面更細節的教程,可以查看beginner’s blogpost
3. 如果你有能力處理更細節的數學問題,你可以看看斯坦福CS231的課程。
如果你以上幾點都沒有做到,可以通過讀下面的簡介后再繼續。
CNNs的靈感來源
我們從頭說起。 神經網絡將原始數據作為輸入。假設有一只手繪的小狗,你第一眼看到它時,大腦會自動將它識別為一只狗。但是對計算機來說,這張圖片僅僅是一個關于有很多數字的數組。數組中的數值代表不同顏色通道的像素強度。如果是只有黑白的圖片,我們只需要用一個表示像素灰度值的數組來表示圖片即可。

用于網絡識別的示例。來源: The Sun, image: lovable dog rescue
我們的目標是什么? 是讓網絡在視覺層面搞清圖片里有什么(這個數字序列代表著什么)。一種方式是自下而上的方式: 讓網絡從聚焦一小部分像素開始,理解它們代表什么(例如一些線段和曲線:像這張圖片中狗的耳朵的曲線,瞳孔的圓?。? 然后將這些線組合起來,來描述更大的對象(例如耳朵,鼻子,嘴,眼睛),同樣的去學習這些部分組成的更大的對象 (例如,臉,腿,尾巴),最終使網絡對狗做出整體的理解。
網絡是通過層之間數據的從頭到尾的傳遞實現這一功能的。
如果你不了解這個過程,可以看看我的關于CNNs結構的總結: 理解卷積神經網絡
萬一你沒讀過,而且不了解這些,下面是從我那些總結里提煉出來更簡短的總結。
關于卷積神經網絡的理解
卷積層;第一層卷積層將圖片映射到較低緯度的空間—?歸納出一組像素點(例如5×5的像素塊)的信息—它是垂直的還是水平的線?是什么形狀的曲線? 這個過程首先是對應元素相乘,然后將這些乘積相加為一個數,即得到filter輸出。
這就引出了神經元或者說卷積核的概念。每個卷積核都會對特定的模式(豎直線?水平線?等等)做出反應。 從第一層的像素傳到神經元時,會激活和它的結構相匹配的神經元,依據就是這個像素塊和卷積核的相似程度。
激活函數(通常用 “ReLU”)層—?每個卷積層后,都要添加一個非線性層 (又叫激活函數層), 從而給系統引入非線性,使得系統能學習到數據間的非線性關系。ReLU 是一個很簡單的激活函數:它把負輸入置零0,正輸入保持原值。
池化層;這層被用來減少冗余信息, 總結我們關于一個區域已知的信息,并進一步精煉這些信息。例如,“MaxPooling”方法就是選取一組數的最大值?—?—例如,電腦會認為 “在這個5×5的像素塊中, 影響最大的是255這個像素點. ”盡管不能確定這個值是哪個像素點,但是確切位置并沒有那么重要,知道它大概位置就好了。 ( 注意:這個方法并不好。會造成信息的丟失。膠囊網絡就沒采用這個操作,這是一個重要的進步。)
Dropout 層;這一層通過隨機的將一些激活了的神經元置零來實現“dropout”。這么做會使網絡更加健壯(有點類似于你吃了不干凈的東西,卻幫助強化了你的免疫系統 這么做之后網絡對一些小的改變也能免疫了) 還會減小過擬合。 只有訓練時會使用Dropout。
最后的全連接層;對于分類問題,我們希望最后一層不同的神經元代表不同類別。這一層關注前一層的輸出,(即高階特征的激活圖)并確定出哪些特征與某個類相關。
SoftMax?層;有時加上這一層來表示每一類的輸出,并把這個輸出傳遞給損失函數。 Softmax 代表了不同類輸出的概率分布。
通常,有更多的提供非線性和保留維度(就像在邊緣周圍填充0)的網絡層,它們能夠幫助改善神經網絡的魯棒性以及防止過度擬合。但是接下來有一些基本概念你需要理解。
現在,重要的一點是,這些層只能是有序列的聯結在一起。這和膠囊神經網絡的結構相反。

神經網絡結構,來自谷歌的文章,是Szegedy,Toshev&Erhan提出的神經網絡
卷積神經網絡有什么問題?
如果您對此感興趣,請觀看Hinton的課,里面講解的就是這個問題。下面是膠囊神經網絡能夠改善這些問題的幾個要點:
Hinton說,膠囊神經網絡擁有很少層級的分支結構(網絡由以神經元組成的層組成,就是這樣),并且這使我們需要將每一層的神經元分組到“膠囊”里面,這種“膠囊”就像小模塊,在小模塊里面會進行大量的計算,然后輸出一個匯總結果。
問題一:“池化”使信息丟失
CNN運用“池化”或與之等效的方法來“總結”小區域中發生的情況,并理解圖像中越來越大的塊。這是一個讓CNN網絡運作良好的解決方案之一,但與此同時它會丟失寶貴的信息。
膠囊神經網絡會計算一個小特征和大特征的姿態關系(跨越邊界和旋轉)。
這些信息的丟失會造成空間信息的丟失。
問題2:CNN沒有考慮圖像的每一部分之間的空間關系。也就是說,它們也對于物體的方向過于敏感了
二次抽樣(和池化)使圖片失去了精確的空間關系,例如鼻子和嘴巴。身份特性的識別需要精確的空間關系。——Hinton,2012,在演講中
CNN不會考慮底層對象之間的空間關系。通過這些平層中的神經元將它們看到的物體照亮,它們識別到了那個物體呈現出的形態。但是它們會傳遞到其他激活和合并圖層,并傳遞到下一層神經元(過濾器),而不會意識到我們在該單層中識別的這些對象之間的關系。
他們只是說明他們的存在。
所以一個(簡單的)神經網絡能夠將巴勃羅和畢加索歸類為小狗,“小狗 - 斗牛?;旌稀币材芡瑯拥谋缓芎玫淖R別。

普通的(卷積)神經網絡能夠將這兩只可愛的狗視為同類型的狗臉,因為它并不介關心組成狗臉的元素在空間中相對于彼此的位置。畢加索(左邊的狗)將幸運的不會被模型分錯,但我們真的想要有一個模型可以認識到,這不是一個常見的柯基犬 - 斗牛犬混合狗的例子。圖片來源:愛犬救援
神經網絡會將這兩只小狗是被為典型“小狗 - 斗牛?;旌稀保驗樗麄兊膱D像特征都符合面部卷積層的情況,例如:
if: (2 eyes & pitbullmix_snout
+ pitbullmix_wet_nose & mouth)
then: pitbullmix_face
不正確地激活pitbullmix_face的神經元,而不是像下面這樣的東西:
if: 2 eyes
& BELOW: pitbullmix_snout
& pitbullmix_wet_nose
& BELOW: mouth
then: pitbullmix_face
相反地,膠囊神經網絡反映方向信息和內容,并連接神經元與膠囊以推斷空間關系并保留姿勢信息。
缺少將膠囊分組的呈現、姿態計算和膠囊之間的重疊檢查,會導致下一個問題。
問題3:CNN不能將對幾何關系的理解傳遞到新的視點上
為了正確給圖像分類,這使他們對原始圖像更加敏感。
CNN擅長解決那些與他們訓練的模型相似的問題,它可以把圖像或者目標物體分類的非常好。
但當物件有一些旋轉角度時,尤其是3D的情況,CNN則識別不出來。
一種解決方案是人為地創建傾斜展示的圖像或圖像組,并將它們添加到“訓練”集中。 但是,這樣仍然缺乏一個更為穩健的結構。
對不變視點的空間關系姿態進行編碼
所以,我們應該怎樣編碼3D物體之間的空間關系呢?
Hinton從一個已經被解決的問題領域——3D 計算機圖形學中取得靈感。
在3D圖形中,姿態矩陣是表示對象之間關系的特殊技術。 姿勢本質上是代表平移加旋轉的矩陣。 現在我們得到了它。 我們可以使用子對象之間的姿態關系保留空間關系信息; 測量物體之間的相對旋轉和平移作為4D姿態矩陣。
這對于理解膠囊之間的動態路徑選擇很重要。
現在我們知道了神經網絡的基礎以及空間識別的問題,我們可以繼續了解最近發展出的解決方式:膠囊神經網絡。這將是我們下一篇的主題。請繼續收看!
更多文章,關注雷鋒網 雷鋒網雷鋒網
添加雷鋒字幕組微信號(leiphonefansub)為好友
備注「我要加入」,To be an AI Volunteer !

雷峰網原創文章,未經授權禁止轉載。詳情見轉載須知。