摘要:傳統神經網絡的問題到目前為止,圖像分類問題上較先進的方法是。我們把卡戴珊姐姐旋轉出現這個問題的原因,用行話來說是旋轉的程度超出了較大池化所帶來的旋轉不變性的限度。
Capsule Networks,或者說CapsNet,這個名字你應該已經聽過好幾次了。
這是“深度學習之父”的Geoffrey Hinton近幾年一直在探索的領域,被視為突破性的新概念。最近,關于Capsule的論文終于公布了。
一篇即將發表于NIPS 2017:
Dynamic Routing Between Capsules
作者:Sara Sabour, Nicholas Frosst, Geoffrey E Hinton
https://arxiv.org/abs/1710.09829v2
另一篇是ICLR 2018正在匿名評審的:
Matrix capsules with EM routing
作者目前未知
https://openreview.net/pdf?id=HJWLfGWRb
要理解Capsule Networks,還得從卷積神經網絡(CNN)的特性說起。
傳統神經網絡的問題
到目前為止,圖像分類問題上較先進的方法是CNN。
而CNN的工作原理,是將每一層對應的特征累積起來,從尋找邊緣開始,然后是形狀、再識別實際的對象。
然而,在這個過程中,所有這些特征的空間關系信息丟失了。
雖然可能有點過度簡化了,不過我們可以把CNN看做這樣一個程序:
if (2 eyes && 1 nose && 1 mouth) {
? It"s a face!
}
翻譯成人話就是:如果有兩只眼睛、一個鼻子、一張嘴,它就是一張臉!
一般人看見這個表述,第一反應大概是挺好的啊,有道理,沒毛病~
對,有道理,不過我們需要轉念想一想:這個表述還是有問題的。不信?看一張略恐怖的卡戴珊姐姐照片:
確實是兩只眼睛一個鼻子一張嘴吧?
但我等人類都一眼就能看出來,這張照片不對勁啊!眼睛和嘴錯位了啊!人不應該長這樣!識別成鬼還差不多……
可是呢,CNN會認為,眼睛和嘴的位置不管在哪,都沒什么區別,會很寬容地,把這張照片歸類成“人”:
除了對人類五官的位置過于寬容之外,CNN還有還有一個毛病,就是對圖片的角度要求有點苛刻,它能容忍照片稍微旋轉一些,但要是旋轉太多,它就不認得了。
我們把卡戴珊姐姐旋轉180°:
出現這個問題的原因,用行話來說是旋轉的程度超出了較大池化(maxpooling)所帶來的旋轉不變性(invariance)的限度。這其實有辦法解決,就是在訓練中用上各種可能角度的圖片,行話叫做data augmentation。不過,這種做法實在是耗時費力。
另外,CNN還很容易受到白盒對抗性攻擊(adversarial attacks)的影響,在圖片上悄悄藏一些圖案,就能讓CNN把它誤認作別的東西。
谷歌的神經網絡把海龜誤認成步槍,就是這個毛病:
所以Hinton老爺子才會覺得CNN不行。(Hinton真的很嚴格)
Capsule Networks前來救援!
CapsNet架構
Capsule Networks就能讓我們充分利用空間關系,看到更多東西。在認人臉這件事上,可以這么表示:
if (2 adjacent eyes && nose under eyes && mouth under nose) {
? It"s a face!
}
翻譯成人話:如果有兩只相鄰的眼睛、眼睛下有一個鼻子、鼻子下有一張嘴,它就是一張臉。
你應該能看出來,這樣來定義,神經網絡就不會把畸形版卡戴珊姐姐也認作人臉了。
這種新架構還更善于從不同角度來識別形狀,它在下面這個數據集上,可以獲得更高的精度。這個精心設計的數據集就是用來進行單純的形狀識別,甚至是從不同的角度識別的。Capsule Networks擊敗了較先進的CNN,將錯誤數量減少了45%。
CapsNet把第二行圖片識別為第一行同類圖片的能力遠超CNN
此外,最近發布的論文表明,與卷積神經網絡相比,Capsules對白盒對抗性攻擊顯示出更大的抵抗力。
訓練CapsNet
重點來了:要想理解一篇論文,較好的方法是把它實現出來。
Bourdakos基于Hinton的論文,寫出了一份CapsNet的TensorFlow實現
代碼:https://github.com/bourdakos1/capsule-networks
接下來的內容,就是要介紹如何訓練它。
下面以如何在MNIST數據集上訓練模型為例。這是一個著名的手寫數字的數據集,是測試機器學習算法的良好基準。
首先從克隆repo開始:
git clone https://github.com/bourdakos1/capsule-networks.git
然后安裝需求。
pip install -r requirements.txt
開始訓練!
python main.py
MNIST數據集有6萬個訓練圖像。默認情況下,模型將以128的batch size訓練50個epoch周期。一個epoch代表訓練集的一次完整運行。由于batch size是128,所以每個epoch大約有468個batch。
注意:如果你沒有GPU,訓練可能需要很長的時間。
推理
一旦模型完整訓練過,就可以通過以下命令來測試:
python main.py --is_training False
結論
Capsule Networks似乎很棒,但仍在嬰兒期,在訓練大型數據集時可能遇到一些問題,但信心還是要有的。
歡迎加入本站公開興趣群商業智能與數據分析群
興趣范圍包括各種讓數據產生價值的辦法,實際應用案例分享與討論,分析工具,ETL工具,數據倉庫,數據挖掘工具,報表系統等全方位知識
QQ群:81035754
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/4676.html
斯蒂文認為機器學習有時候像嬰兒學習,特別是在物體識別上。比如嬰兒首先學會識別邊界和顏色,然后將這些信息用于識別形狀和圖形等更復雜的實體。比如在人臉識別上,他們學會從眼睛和嘴巴開始識別最終到整個面孔。當他們看一個人的形象時,他們大腦認出了兩只眼睛,一只鼻子和一只嘴巴,當認出所有這些存在于臉上的實體,并且覺得這看起來像一個人。斯蒂文首先給他的女兒悠悠看了以下圖片,看她是否能自己學會認識圖中的人(金·卡...
摘要:近幾年以卷積神經網絡有什么問題為主題做了多場報道,提出了他的計劃。最初提出就成為了人工智能火熱的研究方向。展現了和玻爾茲曼分布間驚人的聯系其在論文中多次稱,其背后的內涵引人遐想。 Hinton 以深度學習之父 和 神經網絡先驅 聞名于世,其對深度學習及神經網絡的諸多核心算法和結構(包括深度學習這個名稱本身,反向傳播算法,受限玻爾茲曼機,深度置信網絡,對比散度算法,ReLU激活單元,Dropo...
摘要:本文試圖揭開讓人迷惘的云霧,領悟背后的原理和魅力,品嘗這一頓盛宴。當然,激活函數本身很簡單,比如一個激活的全連接層,用寫起來就是可是,如果我想用的反函數來激活呢也就是說,你得給我解出,然后再用它來做激活函數。 由深度學習先驅 Hinton 開源的 Capsule 論文 Dynamic Routing Between Capsules,無疑是去年深度學習界最熱點的消息之一。得益于各種媒體的各種...
摘要:未來向何處去做領袖不容易,要不斷地指明方向。又譬如想識別在這些黑白圖像中,是否包含從到的手寫體數字,那么深度學習的傳統做法是,輸出一個維向量,,其中每個元素的取值范圍是,表示出現相應數字的概率。老爺子的論文中,輸出的是十個維向量,其中。 CNN 未來向何處去?做領袖不容易,要不斷地指明方向。所謂正確的方向,不僅前途要輝煌,而且道路要盡可能順暢。Geoffrey Hinton 是深度學習領域的...
摘要:論文鏈接會上其他科學家認為反向傳播在人工智能的未來仍然起到關鍵作用。既然要從頭再來,的下一步是什么值得一提的是,與他的谷歌同事和共同完成的論文已被大會接收。 三十多年前,深度學習著名學者 Geoffrey Hinton 參與完成了論文《Experiments on Learning by Back Propagation》,提出了反向傳播這一深刻影響人工智能領域的方法。今天的他又一次呼吁研究...
閱讀 2457·2019-08-30 15:53
閱讀 2572·2019-08-29 13:11
閱讀 2653·2019-08-29 12:45
閱讀 3486·2019-08-29 12:41
閱讀 2326·2019-08-26 10:14
閱讀 2154·2019-08-23 14:39
閱讀 2314·2019-08-23 12:38
閱讀 3378·2019-08-23 12:04