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

- 上一篇: SLF4J: Failed to loa
- 下一篇: 使用IDEA创建一个Servlet应用程