深蓝学院的深度学习理论与实践课程:第三章
前言:至于物體被識(shí)別成什么,是取決于你提取到了什么特征
1、人類(lèi)視覺(jué)系統(tǒng)
。。。
2、卷積神經(jīng)網(wǎng)絡(luò)數(shù)學(xué)基礎(chǔ)(CNN數(shù)學(xué)原理)
黑白圖像的話(huà)就只有一個(gè)灰色通道。現(xiàn)在還有就是RGBa就是多了一個(gè)alpha通道。圖像的不變性是指比如圖中右邊的這個(gè)貓他是出現(xiàn)在圖像的中央位置,那我也能識(shí)別出他是一個(gè)貓;如果貓頭出現(xiàn)在圖像的右上角還是會(huì)識(shí)別出這樣一個(gè)貓頭;如果貓頭出現(xiàn)在圖像的左上角還是會(huì)識(shí)別出這樣一個(gè)貓頭;
輸出層9個(gè)神經(jīng)元是指9種不同的形狀。
比如說(shuō)他是一個(gè)16到9這樣一個(gè)全連接神經(jīng)網(wǎng)絡(luò)。首先第一種情況:判斷左上角有沒(méi)有這個(gè)拐角;先把這個(gè)4x4的圖像先給他展平,展成一個(gè)輸入層,這里相當(dāng)于把這16個(gè)像素點(diǎn)都進(jìn)行了一個(gè)這樣的全連接。
實(shí)際上我們感興趣的是0145,即左上角的部分他有沒(méi)有拐角,即判斷出來(lái)a這是不是有沒(méi)有拐點(diǎn)。實(shí)際上就是:
第二種情況:判斷1256這個(gè)上邊是不是有拐角。此時(shí)他所感興趣的就是1256這4個(gè)點(diǎn)。此時(shí)就是
同樣依次類(lèi)推
最后就是16到9的一個(gè)全連接神經(jīng)網(wǎng)絡(luò)。(這個(gè)全連接神經(jīng)網(wǎng)絡(luò)呢其實(shí)這些虛線(xiàn)的連線(xiàn),他其實(shí)并沒(méi)有用這些點(diǎn),這些連線(xiàn)你實(shí)際上把這些權(quán)重設(shè)置為0就可以了?)
我們最終想要的是右邊這9個(gè)結(jié)果。
我們進(jìn)一步把整個(gè)的給他寫(xiě)出來(lái),這個(gè)就是的連接權(quán)重矩陣;就是展平之后就是的這樣一個(gè)向量;b是這樣一個(gè)的向量;最后得出來(lái)就是z,z就是我們最后要有的9個(gè)結(jié)果。
(注意此處的0和1代表的是起作用,并不是實(shí)際的值)根據(jù)權(quán)重是否起作用可以看出整個(gè)w是非常稀疏的,并且1100整個(gè)出現(xiàn)的模式是非常有規(guī)律的,所以說(shuō)我們可以把整個(gè)這樣的全連接神經(jīng)網(wǎng)絡(luò)給他縮減成為只有1四個(gè)位置對(duì)應(yīng)的w。
表示拐角特征;表示斜線(xiàn)特征;
那如果我們把整個(gè)的最后一個(gè)16到9的一個(gè)結(jié)果,但是這個(gè)9呢把它寫(xiě)成一個(gè)的這樣一個(gè)圖像的形式,那么整個(gè)的abcdefghi就代表了左邊的這個(gè)圖像當(dāng)中有沒(méi)有拐角的這樣的出現(xiàn)(就是圖中有沒(méi)有拐點(diǎn));只要這個(gè)abcdefghi他的這9個(gè)點(diǎn)當(dāng)中的某一個(gè)點(diǎn)他是激活了,那就代表我左邊的圖中是有這個(gè)拐點(diǎn)形式的特征的。
那我們?cè)贆z測(cè)有沒(méi)有這種斜線(xiàn)的特征,那就把剛剛的這樣一種的呢再換成另外一個(gè),他也是一個(gè)稀疏的,實(shí)際上里邊起作用的還是那對(duì)應(yīng)的11起作用;
再檢測(cè)圖中有沒(méi)有橫線(xiàn)呢?其實(shí)他檢測(cè)有沒(méi)有某一種模式,最終所起決定性作用的就是這4條連接線(xiàn),從圖中可以看出這4條連接線(xiàn)就是2條相鄰的,隔著2條再相鄰。最終可以看出實(shí)際上是將的參數(shù)組,換成了我只需要4個(gè)參數(shù)就能表示了。檢測(cè)每種模式都需要4個(gè)參數(shù),檢測(cè)出這三種模式一共需要12個(gè)參數(shù)。
如果我們把最后的9種結(jié)果也看成的圖像,那么就是的圖像最后得到的是的圖像結(jié)果。
------------------------------卷積神經(jīng)網(wǎng)絡(luò)的卷積操作---------------
比如說(shuō)看左邊的圖,這一步部分是我的原始圖像,是我的輸入圖像,中間這個(gè)圖呢就是我卷積操作的卷積核(也就是相當(dāng)于我們上一張圖像中的4個(gè)連線(xiàn),這也就是卷積核,卷積核是能夠重用的)這里呢他是一個(gè)的卷積核,之前那4條線(xiàn)是一個(gè)的卷積核。這里的卷積核其實(shí)在左邊整個(gè)原始圖像上會(huì)對(duì)應(yīng)一部分的的區(qū)域,計(jì)算操作部分實(shí)際上對(duì)相同位置上的像素點(diǎn)的值進(jìn)行相乘最后再進(jìn)行加和,得出來(lái)的就是這個(gè)點(diǎn)的結(jié)果(對(duì)應(yīng)原始圖像中的一個(gè)中心像素的位置);
之后我可以把整個(gè)的卷積核向右移動(dòng)一個(gè)位置,移動(dòng)一個(gè)像素點(diǎn),我整個(gè)的卷積核還是不動(dòng)的,那得到的就是這個(gè)點(diǎn)后邊的那個(gè)點(diǎn)的位置結(jié)果。之后一直移動(dòng),把整個(gè)圖像走到最右邊。
右邊移動(dòng)完之后,再把整個(gè)卷積核向下移動(dòng)一個(gè)位置,再移到最右邊,然后再向下移動(dòng)一個(gè)位置也就是一行。
一直遍歷完整個(gè)原始圖像,最后得出來(lái)就是右邊圖中紅框內(nèi)的結(jié)果。
如下例子對(duì)左邊圖像使用一個(gè)的卷積核,這個(gè)地方是進(jìn)行一個(gè)邊緣檢測(cè)的一個(gè)算子,這是在圖像當(dāng)中使用的一個(gè)算子,這個(gè)算子也是一個(gè)卷積核;是將卷積核中的數(shù)值給固定住了,是為了便于查看怎么計(jì)算的。其實(shí)事實(shí)上我們想要進(jìn)行求解的就是卷積核當(dāng)中的這樣一個(gè)數(shù)值,實(shí)際上這樣一個(gè)的卷積核就是我們要求解的、、、、這樣一個(gè)的權(quán)重矩陣,
實(shí)際上在某一次卷積操作當(dāng)中,他只感受到一個(gè)局部的特征,那我再進(jìn)行下一次移動(dòng)的時(shí)候他就會(huì)又感受到另一個(gè)局部,實(shí)際上是每一次感受一個(gè)不同的局部。在進(jìn)行一次卷積操作的時(shí)候其他部分的區(qū)域是暫時(shí)的不管的。
左邊是一個(gè)的圖像,卷積核是,最后卷出來(lái)是一個(gè)大小。
我們?cè)紙D像經(jīng)過(guò)一個(gè)卷積層,得出來(lái)的一個(gè)結(jié)果實(shí)際上和原始圖像他的像素是沒(méi)有多大區(qū)別的,比如說(shuō)一個(gè)的圖像,經(jīng)過(guò)一個(gè)的卷積,他實(shí)際上卷出來(lái)的應(yīng)該是一個(gè)大小的結(jié)果,實(shí)際上和原始圖像他的分辨率沒(méi)有多大區(qū)別的,那如果我們經(jīng)過(guò)卷積之后,再使用一個(gè)全連接神經(jīng)網(wǎng)絡(luò)去進(jìn)行檢測(cè)的時(shí)候,他實(shí)際上是整個(gè)展平之后全連接神經(jīng)網(wǎng)絡(luò)它的神經(jīng)元還是比較多的,那如果你一直這樣的卷下去,可能要卷很多層,至少要卷128次,因?yàn)槊恳淮?是減少2。
就是不用進(jìn)行每一次的疊加卷積,當(dāng)然卷積核還可以是或者是的,但是這樣也是要卷好多次,怎么樣能夠減少有效的卷積次數(shù)呢?這里就是有一種池化操作。
--------------------池化操作(就是將整個(gè)圖像的分辨率進(jìn)行降低)
由原來(lái)的降為,分辨率是直接降為原來(lái)的。
Trainable Pooling是把他當(dāng)做是一個(gè)映射函數(shù),那我學(xué)習(xí)他的函數(shù)的參數(shù)。
經(jīng)過(guò)卷積核以及pooling之后,就可以定義卷積神經(jīng)網(wǎng)絡(luò)的一般結(jié)構(gòu)。
卷積層主要是為了參數(shù)的重復(fù)利用,還可以進(jìn)行這種局部性的特征提取。
經(jīng)過(guò)最后的Pooling層最后已經(jīng)是一個(gè)分辨率非常低的feature map,那就可以把它展平,之后就可以再跟一些全連接層,最后做一些輸出層,做分類(lèi)和回歸都是可以的。
之前的例子,雖然圖片都是RGB的深度為3的3通道圖片但是為了方便計(jì)算,把它看做深度depath為1。
filter的深度也要和你原始圖像的深度是一樣的,第一個(gè)3是一個(gè)depth表示的是深度,后邊的表示的是他的卷積核的一個(gè)長(zhǎng)和寬。第二個(gè)filter2也是,因?yàn)樗袃蓚€(gè)卷積核filter1和filter2,所以他卷出來(lái)的結(jié)果是有2種,就是兩個(gè)feature map,
如果看成一個(gè)全連接神經(jīng)網(wǎng)絡(luò)他應(yīng)該是一個(gè)的權(quán)重矩陣。現(xiàn)在使用的是卷積核的這種操作,一共進(jìn)行了4次操作,所以可以看到圖中一共有16條連線(xiàn),正好每一種顏色的連接線(xiàn)他是重復(fù)了4次,所以說(shuō)他實(shí)際上還是只有4個(gè)權(quán)重連接。看左邊這9個(gè)他實(shí)際上有連接線(xiàn),第一個(gè)他是有1條連接線(xiàn),第二個(gè)他是有2條連接線(xiàn),第三個(gè)他是有1條,第四個(gè)有2條,第五個(gè)有4條連接線(xiàn),后邊的就是對(duì)稱(chēng)的,第六個(gè)有2條連接線(xiàn),第七個(gè)有1條,第八個(gè)有2條,第九個(gè)有1條。
再把其放到原始的的圖像上,這就代表了我原始的的圖像上,對(duì)應(yīng)位置的像素值參與了幾次運(yùn)算。比如最中間的點(diǎn)參與了4次運(yùn)算。(此部分的內(nèi)容對(duì)后邊進(jìn)行梯度反向傳播的時(shí)候是有用的,因?yàn)檎`差進(jìn)行反向傳播的時(shí)候,他實(shí)際上是跟你原始的這個(gè)地方(比如原始輸入圖像)進(jìn)行了幾次運(yùn)算是有關(guān)的,比如有的地方進(jìn)行了4次運(yùn)算,有的地方進(jìn)行了1次運(yùn)算,他所進(jìn)行的誤差傳播是不一樣的)
3、卷積神經(jīng)網(wǎng)絡(luò)推導(dǎo)及其發(fā)展歷史(CNN推導(dǎo))
卷積神經(jīng)網(wǎng)絡(luò)的BP算法(Back Propagation)--------------------卷積神經(jīng)網(wǎng)絡(luò)的誤差反向傳播(Error Back Propagation)--------------------推導(dǎo)過(guò)程
卷積神經(jīng)網(wǎng)絡(luò)實(shí)際上是分為卷積層(conv)和Pooling層,分別把卷積層和Pooling層分別進(jìn)行推導(dǎo)。
3.1前向傳播過(guò)程
綠色輸入是一個(gè),此處通道為1,它對(duì)應(yīng)的黃色filter的深度也是1,那么輸出的紅色feture map就也是一個(gè)。(特征圖就是我經(jīng)過(guò)一次卷積操作獲得的結(jié)果)(bias=0代表的是一個(gè)偏置項(xiàng))
卷積操作實(shí)際上還是的一個(gè)形式,和之前的全連接神經(jīng)網(wǎng)絡(luò)計(jì)算的數(shù)學(xué)形式是一樣的,只不過(guò)這里的是一個(gè)卷積操作,不是之前的類(lèi)似于全連接神經(jīng)網(wǎng)絡(luò)的矩陣相乘,
缺少的如圖所示:
為了使卷積之后的feature map的大小和原始輸入圖像的大小一樣,所以在進(jìn)行卷積前需要在原始圖像外圈補(bǔ)一圈像素,在左邊和右邊同時(shí)補(bǔ)的寬度就是Padding的大小,即對(duì)應(yīng)圖中就是這樣寬度的一圈。這樣的話(huà)最后算出來(lái)的就等于原始的;就等于原始的。
mn還是表示里邊的卷積,d表示深度。
在本例中我通過(guò)Pooling之后再進(jìn)行卷積實(shí)際上她所對(duì)應(yīng)的原來(lái)的局部感受野他就擴(kuò)大為原來(lái)的兩倍了。
?
總結(jié)
以上是生活随笔為你收集整理的深蓝学院的深度学习理论与实践课程:第三章的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Windows下超详细安装Anacond
- 下一篇: 激活函数合集