丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
人工智能 正文
發(fā)私信給AI研習(xí)社-譯站
發(fā)送

0

最全解讀!從原理到代碼,Hinton的膠囊網(wǎng)絡(luò)實(shí)用指南(附視頻+代碼)

本文作者: AI研習(xí)社-譯站 2018-03-01 16:43
導(dǎo)語:谷歌正式開源了Hinton膠囊理論代碼

這里是,油管Artificial Intelligence Education專欄,原作者Siraj Raval授權(quán)雷鋒字幕組編譯。

原標(biāo)題 Capsule Networks: An Improvement to Convolutional Networks

翻譯 | 夏雪松  鄭漢偉   字幕 |  凡江   整理 | Frank

去年10月,深度學(xué)習(xí)之父Hinton發(fā)表《膠囊間的動態(tài)路由》(Capsule Networks),最近谷歌正式開源了Hinton膠囊理論代碼。

Geoffrey Hinton是深度學(xué)習(xí)方面的教父之一,在80年代他推廣了反向傳播算法。正是由于反向傳播算法,深度學(xué)習(xí)效果顯著。在第一次AI寒冬中(80年代),其他人不相信神經(jīng)網(wǎng)絡(luò)能夠奏效,而Hinton卻堅(jiān)信神經(jīng)網(wǎng)絡(luò)的觀點(diǎn),這正是他如此偉大的原因。

Siraj會重點(diǎn)介紹卷積神經(jīng)網(wǎng)絡(luò)的飛速發(fā)展史以及膠囊網(wǎng)絡(luò)的工作原理、TensorFlow代碼。

目前最先進(jìn)的算法:卷積神經(jīng)網(wǎng)絡(luò)

這是一張關(guān)于卷積神經(jīng)網(wǎng)絡(luò)(CNN)的圖片,如果我們使用標(biāo)準(zhǔn)的多層感知器,也就是說——所有的層完全的連接到其他的每一個(gè)層,它會很快變得難以計(jì)算。因?yàn)閳D像的維度非常高,有很多很多像素。

最全解讀!從原理到代碼,Hinton的膠囊網(wǎng)絡(luò)實(shí)用指南(附視頻+代碼)

(卷積神經(jīng)網(wǎng)絡(luò))

如果我們將這些操作連續(xù)地應(yīng)用于圖像中的每個(gè)單個(gè)像素每層,這將會花費(fèi)太長的時(shí)間。我們的解決方案就是——使用一個(gè)卷積網(wǎng)絡(luò)。首先我們得到一張輸入的圖像,這個(gè)輸入的圖像有一個(gè)相關(guān)的標(biāo)簽,如果這是一張汽車的圖片,就像我們看到的,它會有一個(gè)相關(guān)的車的標(biāo)簽。圖片是汽車,那么它的標(biāo)簽就是汽車。

一個(gè)卷積神經(jīng)網(wǎng)絡(luò)將要做的是——學(xué)習(xí)輸入數(shù)據(jù)和輸出標(biāo)簽間的映射關(guān)系。這個(gè)卷積神經(jīng)網(wǎng)絡(luò)在訓(xùn)練后,如果我們給它一張汽車的照片,它會知道那是一輛汽車,因?yàn)樗呀?jīng)學(xué)到了映射關(guān)系。當(dāng)我們第一次為這個(gè)網(wǎng)絡(luò)提供一個(gè)汽車的圖片,它首先被應(yīng)用到卷積層。在卷積層中,首先是一系列的矩陣乘法,后面是一個(gè)求和操作,下面在高層次上對它進(jìn)行解釋。

卷積層就像一個(gè)手電筒一樣,它作用在圖像中的每一個(gè)像素上。它試圖尋找該圖像中最相關(guān)的部分。通常卷積層會輸出特征圖,這些特征圖代表了很多特征。卷積層從圖像中學(xué)習(xí)到的一組特征是由矩陣表示的。我們將一個(gè)非線性單元應(yīng)用到其中,就像整流后的線性單位。

當(dāng)我們對其應(yīng)用非線性時(shí),通常會出于不同的目的:第一個(gè)目的是讓網(wǎng)絡(luò)可以學(xué)習(xí),如何同時(shí)具有線性和非線性函數(shù)。因?yàn)樯窠?jīng)網(wǎng)絡(luò)是通用函數(shù)的近似誤差,對于整流線性裝置尤其如此;使用它的另一個(gè)目的是——與其他非線性類型不同,它解決了反向傳播過程中梯度消失的問題。

當(dāng)我們前向傳播時(shí)我們執(zhí)行一系列操作,我們得到輸出類的概率,將它與實(shí)際標(biāo)簽進(jìn)行比計(jì)算誤差值,然后使用誤差計(jì)算得到梯度。當(dāng)我們對網(wǎng)絡(luò)反向傳播時(shí),梯度告訴我們?nèi)绾胃挛覀兊臋?quán)重,它有助于解決消失梯度問題,因?yàn)橛袝r(shí)候當(dāng)梯度反向傳播時(shí)將變得越來越小,因此權(quán)值的更新也變得越來越小。

卷積神經(jīng)網(wǎng)絡(luò)的發(fā)展歷程

視頻中有一張很大的的現(xiàn)代史的關(guān)于目標(biāo)識別的圖,針對卷積神經(jīng)網(wǎng)絡(luò)的歷史發(fā)展囊括得非常詳盡,包括 ImageNet 競賽和所有已經(jīng)取得的進(jìn)步等等,下面我們會仔細(xì)介紹一下。

最全解讀!從原理到代碼,Hinton的膠囊網(wǎng)絡(luò)實(shí)用指南(附視頻+代碼)

(物體識別的發(fā)展歷程)

AlexNet

卷積神經(jīng)網(wǎng)絡(luò)取得的第一個(gè)進(jìn)步是AlexNet網(wǎng)絡(luò),它是在2012年提出的。這里有一些關(guān)鍵的改進(jìn):它提出了ReLu,也就是有助于防止消失的梯度問題;它也引入了dropout的概念,使得每層中神經(jīng)元隨機(jī)地打開和關(guān)閉,防止過擬合。如果你的數(shù)據(jù)過于相似,它不能夠?qū)ο嗨频煌膱D像進(jìn)行分類,因?yàn)樗^擬合了你的訓(xùn)練數(shù)據(jù)。

因此dropout是一種防止過擬合的正則化技術(shù),通過隨機(jī)地打開和關(guān)閉神經(jīng)元,數(shù)據(jù)被迫尋找新的路徑,因?yàn)樗黄葘ふ倚碌穆窂?,網(wǎng)絡(luò)能夠更好地泛化;卷積網(wǎng)絡(luò)也引入了數(shù)據(jù)增強(qiáng)的想法,AlexNet或者AlexNet的作者將經(jīng)過不同角度旋轉(zhuǎn)的圖像送入AlexNet網(wǎng)絡(luò),而不是僅僅放入單一角度的,這使得它更好的適用于不同的角度,這是一個(gè)更深的網(wǎng)絡(luò),所以他們增加了更多的層,這提高了分類的準(zhǔn)確性。

VGG Net

在這之后,就是VGG Net。其中最大的變化是,我們添加了更多的層。

GoogLeNet

此后是GoogLeNet。GoogLeNet卷積核的尺寸不同。我們在同一個(gè)輸入中,把它連接在一起。在單獨(dú)的層操作,而不是只經(jīng)過一次卷積操作。我們先是乘法,接下來是求和操作。它先是乘一些東西,再乘一些東西,然后把所有這些乘法的輸出連接在一起,進(jìn)行前向傳播。這使得它更好地學(xué)習(xí)在每一層中的特征表示。

ResNet

接下來是ResNet,這是在resin之后的創(chuàng)意。如果我們只是保持堆疊層,那么網(wǎng)絡(luò)每次都會變得更好嗎?答案是否定的。如果你增加更多的話,性能會發(fā)生下降。ResNet說沒關(guān)系。每隔兩層進(jìn)行數(shù)組元素依次相加操作,它只是增加了這個(gè)操作,并且改進(jìn)梯度傳播,從而使得反向傳播更加容易。進(jìn)一步解決了梯度消失的問題。

DenseNet 

這之后是DenseNet。DenseNet 提出將網(wǎng)絡(luò)中每一層的所有塊與其他層連接起來。這是一種更復(fù)雜的連接策略。網(wǎng)絡(luò)被設(shè)計(jì)的越來越深。還有一些計(jì)算技巧正在被添加到這些卷積網(wǎng)絡(luò)上,比如ReLu或dropout或批量標(biāo)準(zhǔn)化(Batch Normalization),從而提升了性能。另外,我們還在網(wǎng)絡(luò)層之間使用越來越多的連接,但是Hinton說卷積神經(jīng)網(wǎng)絡(luò)存在問題。

卷積神經(jīng)網(wǎng)絡(luò)可以從看到的東西里面,學(xué)習(xí)最底層的特征。

以狗為例,在最底層學(xué)習(xí)耳朵的邊和曲率,然后我們沿著層次向上到高層,當(dāng)我們進(jìn)入下一層時(shí)學(xué)到的每一個(gè)特征將會變得更加復(fù)雜——第一層是邊緣特征,下一層學(xué)到的特征變成了形狀,下一層它們變成更加復(fù)雜的形狀,比如一個(gè)完整的耳朵,在最后一層,它們變成非常非常復(fù)雜的形狀,比如狗的整個(gè)身體。

這與我們所知道的人類視覺皮層的工作方式非常相似。每當(dāng)我們看到某些東西的時(shí)候,按層次順序激活神經(jīng)元。當(dāng)我們試圖去識別一些我們所看到的東西時(shí),我們并不知道精確的復(fù)雜的細(xì)節(jié)層間的連接機(jī)制,但是我們知道在每個(gè)層之間都會有層次關(guān)系發(fā)生。

最全解讀!從原理到代碼,Hinton的膠囊網(wǎng)絡(luò)實(shí)用指南(附視頻+代碼)

(卷積網(wǎng)絡(luò)為何存在問題)

卷積神經(jīng)網(wǎng)絡(luò)的癥結(jié)在哪?

1. 首先所有下采樣池化層都會失去高精度的空間信息,在高層特征中就好比鼻子和嘴巴之間的空間關(guān)系,僅僅能夠區(qū)分鼻子和嘴巴是不夠的,就好像如果你的鼻子在圖片中的左邊角落,而嘴巴在圖片中的右邊角落,眼睛在圖片的下面,你總不能說根據(jù)這三個(gè)特點(diǎn)說這肯定是一張臉。

2. 還有一個(gè)空間相關(guān)性——眼睛要在鼻子的上面,鼻子要在嘴巴上面。但是下采樣或池化會失去這種關(guān)系,它們對幾何關(guān)系的理解卷積網(wǎng)絡(luò)在圖像檢測上很糟糕。

針對這個(gè)問題,我們的想法是不變的。我們要努力爭取同變性(Equivariance),所以下采樣或池化初衷是一樣的。

最全解讀!從原理到代碼,Hinton的膠囊網(wǎng)絡(luò)實(shí)用指南(附視頻+代碼)

(同變性和不變性)

子采樣或池化試圖讓神經(jīng)活動在小變化上保持不變性,所以這意味著無論圖像怎么旋轉(zhuǎn)位置在哪,或者旋轉(zhuǎn)某些圖像,神經(jīng)網(wǎng)絡(luò)響應(yīng)是相同的,也就是說數(shù)據(jù)流是相同的,但最好還是針對同變性,這意味著如果我們旋轉(zhuǎn)一張圖像,神經(jīng)網(wǎng)絡(luò)也要發(fā)生改變。

所以我們需要的是一個(gè)更魯棒的網(wǎng)絡(luò)去改變,由于圖像位置的變換,我們需要能對從未見過的數(shù)據(jù)有更好的泛化能力的算法,建立在已訓(xùn)練的網(wǎng)絡(luò)的基礎(chǔ)上。

解讀膠囊網(wǎng)絡(luò)論文

本文所探討的關(guān)于卷積網(wǎng)絡(luò)的論文,內(nèi)容主要講的是一種針對深度神經(jīng)網(wǎng)絡(luò)的像素攻擊,論文的作者發(fā)現(xiàn),通過調(diào)整圖像中一丁點(diǎn)像素,整個(gè)網(wǎng)絡(luò)分類變得很糟糕。

例如,對狗的分類本可以進(jìn)行完美預(yù)測,但只改變這一丁點(diǎn)像素,他們發(fā)現(xiàn)整個(gè)網(wǎng)絡(luò)分類效果并不好。無意義的神經(jīng)網(wǎng)絡(luò)容易受到攻擊,如果自動駕駛車輛這些巨大機(jī)器飛馳在馬路上,它們使用計(jì)算視覺去檢測路況,這些系統(tǒng)是不能夠受到這些像素攻擊的影響,它們必須非常穩(wěn)健。

Hinton介紹膠囊網(wǎng)絡(luò)的想法是——人類大腦必須在比池化更好的方式下實(shí)現(xiàn)平移不變性。Hinton假設(shè)大腦有一些模塊,他稱之為膠囊。

這些模塊非常擅長處理不同類型的視覺刺激,以及在一個(gè)確定方式下進(jìn)行編碼。卷積神經(jīng)網(wǎng)絡(luò)指導(dǎo)數(shù)據(jù)如何通過池化操作傳輸?shù)矫總€(gè)層。如果我們輸入一張圖像并對它應(yīng)用卷積操作,然后對它進(jìn)行非線性操作,接著根據(jù)圖像的池化層的輸出來拉取它,在一個(gè)確定方向上進(jìn)入下一層。不過它會沖擊基于池化的下一層中的某些單位,但池化是路由數(shù)據(jù)非常粗糙的方式。

有一個(gè)更好的路由數(shù)據(jù)的方式,膠囊網(wǎng)絡(luò)背后基本想法是——這只是一個(gè)神經(jīng)網(wǎng)絡(luò)而不是僅僅添加另一個(gè)層,所以通常我們添加不同類型的層而不是在一個(gè)層上嵌套新層,也就是說我們在層的里面添加另一個(gè)層,所以這是個(gè)內(nèi)部嵌套層。由此,內(nèi)部嵌套層被稱為一組神經(jīng)元膠囊。

最全解讀!從原理到代碼,Hinton的膠囊網(wǎng)絡(luò)實(shí)用指南(附視頻+代碼)

(膠囊網(wǎng)絡(luò))

膠囊網(wǎng)絡(luò)有兩個(gè)主要特性:第一是基于層的壓縮,第二是動態(tài)路由。典型的神經(jīng)網(wǎng)絡(luò)只有一個(gè)單元輸出被非線性擠壓,所以我們有一套輸出神經(jīng)元,而且基于每個(gè)輸出神經(jīng)元,我們給每個(gè)神經(jīng)元應(yīng)用非線性而不是給每個(gè)個(gè)體神經(jīng)元應(yīng)用非線性,組合這些神經(jīng)元到一個(gè)膠囊中,然后應(yīng)用非線性到整個(gè)神經(jīng)元集。所以當(dāng)我們應(yīng)用非線性的時(shí)候,對整個(gè)層而不是對個(gè)體神經(jīng)元實(shí)現(xiàn)動態(tài)路由,它用矢量輸出膠囊取代了輸出映射檢測器,而且它通過路由和協(xié)議取代了最大化池化。

每個(gè)層中的每個(gè)膠囊當(dāng)它們向前傳播數(shù)據(jù)的時(shí)候,會進(jìn)入下一個(gè)最相關(guān)的膠囊中,有點(diǎn)像層內(nèi)嵌套層的層次結(jié)構(gòu)樹,這一新架構(gòu)的代價(jià)是這個(gè)路由算法。

基本上常規(guī)的卷積網(wǎng)絡(luò)的主要不同點(diǎn)是——向前傳播有一個(gè)額外的外環(huán),它要在所有單元(至少一個(gè))上進(jìn)行四個(gè)迭代去計(jì)算輸出。數(shù)據(jù)流看起來有一丁點(diǎn)復(fù)雜,因?yàn)閷τ诿總€(gè)膠囊來說嵌套在一個(gè)圖層中應(yīng)用這些操作,無論是Softmax函數(shù)或者壓縮函數(shù)(squashing function)會讓梯度更難計(jì)算。并且模型可能會遭遇較大數(shù)據(jù)集中的消失梯度,這可能會阻止網(wǎng)絡(luò)擴(kuò)展。

代碼演示和講解

我們可以看到一些代碼是還在更新中的,這篇論文比較新。不過這個(gè)代碼是用tensorFlow創(chuàng)建的。
所以在這一層注意只有兩個(gè)import(代碼中的關(guān)鍵字)或者numpy(Python基礎(chǔ)包)和tensorFlow。
它是個(gè)很干凈的架構(gòu),構(gòu)造了這個(gè)膠囊卷積層。這個(gè)架構(gòu)有輸出數(shù)目(num_outpurs變量)、內(nèi)核大小(kernel_size變量)、類似stride變量的超參數(shù)這個(gè)if-else語句。講的是——如果不用路由方案創(chuàng)建這種方法,那就直接創(chuàng)建這種方法。

如果我們有路由方案,我們將從一個(gè)有所有膠囊的列表開始,迭代遍歷我們指定的單元數(shù)目,循環(huán)創(chuàng)建一個(gè)卷積層就像一個(gè)標(biāo)準(zhǔn)tensorFlow卷積層,存儲到這個(gè)膠囊變量里面,然后把這個(gè)膠囊變量添加到膠囊列表中。最終我們有了這個(gè)膠囊層中的所有卷積層。這就是它嵌套的過程。一旦我們有了所有層把它們串聯(lián)在一起,然后用這個(gè)novel非線性函數(shù)進(jìn)行壓縮。

我們來看下這個(gè)膠囊實(shí)現(xiàn)方法,對于ReLU我們把它添加到一個(gè)單神經(jīng)元,但當(dāng)我們添加一個(gè)非線性,得到到一組神經(jīng)元或膠囊,我們發(fā)現(xiàn)這種非線性運(yùn)行得很好。所以一旦我們有膠囊層,我們可以把它引入到膠囊網(wǎng)絡(luò)中。

我們可以往前看,開始創(chuàng)建我們的架構(gòu),對于每個(gè)層有一個(gè)primaryCaps變量和一個(gè)digitCaps變量,給它們添加一個(gè)膠囊層。在每個(gè)膠囊層內(nèi)部都有一個(gè)嵌套的卷積網(wǎng)絡(luò),那些膠囊中應(yīng)用論文中的novel非線性壓縮函數(shù)。

所以論文中網(wǎng)絡(luò)的最后只是用一個(gè)解碼器去重構(gòu)一個(gè)來自數(shù)字膠囊層的數(shù)字,之后應(yīng)用了第一套膠囊操作,然后可以重構(gòu)來自該學(xué)習(xí)表示法的輸入,應(yīng)用一個(gè)重構(gòu)損失去提高學(xué)習(xí)表示法,這就是重建誤差。 隨著時(shí)間推移重構(gòu)損失被用來學(xué)習(xí)表示法和提升該表示法。

最全解讀!從原理到代碼,Hinton的膠囊網(wǎng)絡(luò)實(shí)用指南(附視頻+代碼)

代碼演示:https://github.com/llSourcell/capsule_networks

論文原文:https://arxiv.org/pdf/1710.09829.pdf


更多文章,關(guān)注雷鋒網(wǎng)(公眾號:雷鋒網(wǎng)),添加雷鋒字幕組微信號(leiphonefansub)為好友

備注「我要加入」,To be a  AI  Volunteer !雷鋒網(wǎng)雷鋒


最全解讀!從原理到代碼,Hinton的膠囊網(wǎng)絡(luò)實(shí)用指南(附視頻+代碼)

最全解讀!從原理到代碼,Hinton的膠囊網(wǎng)絡(luò)實(shí)用指南(附視頻+代碼)

相關(guān)文章:

Hinton的Capsule論文全公開!首發(fā)《膠囊間的動態(tài)路由》原文精譯

雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知

最全解讀!從原理到代碼,Hinton的膠囊網(wǎng)絡(luò)實(shí)用指南(附視頻+代碼)

分享:
相關(guān)文章

知情人士

AI研習(xí)社(yanxishe.com)譯站頻道,傳播前沿人工智能知識,讓語言不再成為學(xué)習(xí)知識的門檻。(原雷鋒字幕組)
當(dāng)月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個(gè)人簡介
為了您的賬戶安全,請驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號信息
您的賬號已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說