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