深度学习:卷积神经网络(convolution neural network)
(一)卷積神經(jīng)網(wǎng)絡(luò)
卷積神經(jīng)網(wǎng)絡(luò)最早是由Lecun在1998年提出的。
卷積神經(jīng)網(wǎng)絡(luò)通暢使用的三個(gè)基本概念為:
1.局部視覺(jué)域;
2.權(quán)值共享;
3.池化操作。
?在卷積神經(jīng)網(wǎng)絡(luò)中,局部接受域表明輸入圖像與隱藏神經(jīng)元的連接方式。在圖像處理操作中采用局部視覺(jué)域的原因是:圖像中的像素并不是孤立存在的,每一個(gè)像素與它周?chē)南袼囟加兄嗷リP(guān)聯(lián),而并不是與整幅圖像的像素點(diǎn)相關(guān),因此采用局部視覺(jué)接受域可以類(lèi)似圖像的此種特性。
另外,在圖像數(shù)據(jù)中存在大量的冗余數(shù)據(jù),因此在圖像處理過(guò)程中需要對(duì)這些冗余數(shù)據(jù)進(jìn)行處理。因此在卷積神經(jīng)網(wǎng)絡(luò)中,采用pooling的方法來(lái)對(duì)圖像中的冗余數(shù)據(jù)進(jìn)行處理,得到描述性更強(qiáng)的數(shù)據(jù)特性。pooling方法常用的有maxpooling和meanpooling兩種方式。
權(quán)值共享:使用卷積核構(gòu)建像素之間關(guān)聯(lián)時(shí),每一個(gè)隱含神經(jīng)元在使用卷積核進(jìn)行操作時(shí)的權(quán)重是共享的。在對(duì)圖像進(jìn)行卷積操作室,并不需要對(duì)每一個(gè)卷積核新建立參數(shù),滑動(dòng)過(guò)程中的卷積核參數(shù)都是共享的。這樣就意味著第一層隱含神經(jīng)元所檢測(cè)到完全一樣的特征,只不過(guò)是輸入圖像的不同位置。為了明白這個(gè)過(guò)程為什么有效果,我們假定給定的權(quán)重和偏移量學(xué)習(xí)到的特征為一個(gè)局部視覺(jué)域的垂直檢測(cè)特征,那么這個(gè)特征是可以使用到其它應(yīng)用中的。因此,我們一般把第一步通過(guò)隱藏神經(jīng)元得到的數(shù)據(jù)叫做feature map。我們把這個(gè)過(guò)程中學(xué)習(xí)到的權(quán)重叫做shared weight,把該過(guò)程學(xué)習(xí)到的bias成為shared bias。而將shared weight同shared bias結(jié)合起來(lái)就是一個(gè)卷積核或者是濾波器(a filter or kernel)。而且在實(shí)際應(yīng)用中,經(jīng)常選取多個(gè)kernel,用于描述輸入在不同kernel下學(xué)習(xí)到的特征。
在經(jīng)過(guò)卷積層之后,學(xué)習(xí)到的特征類(lèi)似于如下的特征:
這些特征的數(shù)量為20,那么對(duì)應(yīng)的filter/kernel的數(shù)量也為20。在學(xué)習(xí)到的特征描述中,白色像素塊表示權(quán)值小,特征圖對(duì)輸入像素的像素響應(yīng)小,而黑色像素塊的權(quán)值大,特征圖對(duì)輸入像素的響應(yīng)大。每一個(gè)特征圖為5*5,對(duì)應(yīng)的5*5的權(quán)值。從這些特征圖中可以發(fā)現(xiàn),通過(guò)卷積操作真正的學(xué)到一些相關(guān)的空間結(jié)構(gòu),但是我們并不知道這些特征檢測(cè)子學(xué)習(xí)到什么。
權(quán)值共享的好處就是該操作大大降低了網(wǎng)絡(luò)參數(shù)的個(gè)數(shù)。
卷積神經(jīng)網(wǎng)絡(luò)層結(jié)構(gòu)的理解:
卷積層
convolution層一般緊接著pooling層,pooling層的操作如下圖所示:
我們可以認(rèn)為max-pooling是一種在圖像區(qū)域中尋找是否發(fā)現(xiàn)特征位置的操作。在發(fā)現(xiàn)圖像特征位置后,可以丟棄特征的位置信息。
pooling層可以降低在接下來(lái)操作過(guò)程中的參數(shù)數(shù)量。但是max-pooling并不是唯一的pooling方法,L2方法也是一種常用pooling方式,L2pooling的思路是對(duì)局部區(qū)域中的像素值采用L2規(guī)則化計(jì)算。同時(shí)存在其他pooling方法,具體使用過(guò)程根據(jù)應(yīng)用確定。
參考資料:
VGG Convolutional Neural Networks Practical
Deep learning
CS231n Convolutional Neural Networks for Visual Recognition
?
(二)深度學(xué)習(xí)基礎(chǔ)知識(shí)總結(jié)
batchsize在深度學(xué)習(xí)算法中的作用:
?
在SGD算法里面,梯度是minibatch的平均值。Batchsize越大,噪聲梯度越小。而噪聲是用來(lái)使得收斂值逃離局部最小值的擾動(dòng)。這就是SGD算法比BGD(batch?gradient?descent)好的地方,minibatch大小選擇并沒(méi)有一個(gè)確定的規(guī)矩,這是根據(jù)網(wǎng)絡(luò)和數(shù)據(jù)來(lái)決定的,而minibatch?size的選擇是通過(guò)不斷嘗試獲取最優(yōu)size。Batchsize越小,更新值的噪聲也就越大。因此,降低batchsize時(shí)需要降低lr值,通過(guò)更多的迭代次數(shù)來(lái)獲取更好訓(xùn)練效果。(原帖鏈接)
?
在使用caffe訓(xùn)練的過(guò)程中,需要考慮到夏卡的顯存問(wèn)題,因此在調(diào)整訓(xùn)練參數(shù)時(shí),修改validation.prototxt中的batch_size值同樣可以降低對(duì)顯存的需求。在caffe中base_lr和batch_size是相關(guān)聯(lián)的,理論上當(dāng)時(shí)用X降低batchsize時(shí)(128->64),需要對(duì)base_lr應(yīng)該乘以sqrt(x)。應(yīng)該修改的值為stepsize和max_iter,batchsize除以x,那么這兩個(gè)值應(yīng)該乘以x,同時(shí)應(yīng)該注意網(wǎng)絡(luò)的loss,如果在?10k-20k?迭代之后loss?>?6.9?(which?is?basically?random?guessing),那么網(wǎng)絡(luò)在迭代過(guò)程中并沒(méi)有學(xué)習(xí)到東西。(原帖鏈接1,原帖鏈接2)
?
轉(zhuǎn)載于:https://www.cnblogs.com/empty16/p/4907869.html
總結(jié)
以上是生活随笔為你收集整理的深度学习:卷积神经网络(convolution neural network)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: SLF4J: Failed to loa
- 下一篇: 使用IDEA创建一个Servlet应用程