來源:機器學習算法與自然語言處理
作者:白雪峯
轉載於:https://blog.csdn.net/np4rHI455vg29y2/article/details/78958121
1、CNN例子
Yann LeCun提出的最基本和開始的CNN結構圖
2、什麼是CNN
2.1、什麼是卷積
連續和離散卷積的定義:
特點:
2.2、離散卷積的例子
丟骰子時加起來要等於4的概率是多少?
二維離散的卷積
計算的動圖如下
2.3、用到二維圖像上
關於卷積中常用到的一些概念:神經網絡的卷積是對應位相乘,現在是信號相乘。
在圖像處理中,卷積通常被稱作爲filtering,現在也有很多著名的filtering/convolution kernels都是在圖像中抓取直觀特徵的。
下面移動的小矩陣有兩種叫法:一種叫做濾波器filter,一種叫做卷積核kernel,是相同東西的兩種不同叫法。
2.4、用到神經網絡中
我們其實需要學習的就是裏面的線上面對應的權值,比如下面綠色的代表3*1的卷積核大小,只是這裏用神經網絡的結構表示出來了。
2.5、卷積的細節
filter/kernel size, number
假設神經網絡的輸入是6*6的圖像。
其中每個卷積核代表提取不同的特徵,多個卷積核提取的特徵然後進行組合(這樣更強大),一同送入到後續的結構。下面來一個更通俗的解釋:
每個人代表一個卷積核來進行提取不同的特徵,一個人是弱小的,但是一組人就強大了,他們有着不同的知識(權重),這樣類比來理解,就會好理解很多。
stride
使用filter掃描圖片的步的大小。
zero-padding
一種不忽略邊界模式的方法。
新圖像要比原圖像更小。
channel
2.6、池化(pooling)
池化層從它們的輸入中子取樣。
1)、Spatial pooling(也稱作subsampling或者downsampling)減少每個特徵映射的維度。
2)、保持最重要的信息。
max pooling例子(average pooling etc)
- Pooling具有局部不變性。
- 圖像往左或者往右移動,pooling的結果是不變的。
2.7、flatten
2.8、Convolution VS Fully Connected
2.9、CNN的整體
所以從整體來看,CNN的組成:
- Convolution(卷積層)
- Nolinearity:e.g ReLu(非線性轉化)
- Pooling(池化)
- FC Layers(全連接層)
3、爲什麼CNN有效
3.1、一些模式是比整幅圖像更小的圖像
3.2、一些相同的模式出現在不同的區域中
3.3、子採樣像素不會改變對象
4、對CNN的一些其他理解
4.1、關於接受域(receptive field)
稱在底層中影響上層輸出單元s的單元合集爲s的接受域(receptive field)。
處於卷積網絡更深的層中的單元,它們的接受域要比處在淺層的單元的接受的域更大。如果網絡還包含類似步幅卷積或者池化之類的結構特徵,這種效應會加強。這意味着在卷積網絡中儘管直接連接都是很稀疏的,但處在更深的層中的單元可以間接地鏈接到全部或者大部分輸入圖像。(表現性能)
4.2、卷積和池化作爲一種無限強的先驗
首先,弱先驗具有較高的熵值,因此自由性較強,強先驗具有較低的熵值,這樣的先驗在決定參數最終取值時可以起着非常積極的作用。
把卷積網絡類比成全連接網絡,但對於網絡的權重具有無限強的先驗。
所有隱藏單元的權重是共享的。
除了一些連續的小單元的權重外,其他的權重都是0.
池化也是一個無限強的先驗:每個單元都具有對少量平移的不變性。
卷積和池化可能導致欠擬合!任何其他先驗類似,卷積和池化只有當先驗的夾着合理且正確時纔有用。如果一項任務依賴於保存精確的空間信息,那麼在所有的特徵上使用池化將會增大訓練誤差。
根據實際需求選取先驗。