圖片是由像素點組成的,能夠這樣來解釋深度神經網絡對圖片的處理。網絡
第一層的layer是最基本的分類器,區分一些基本的特徵,好比顏色、是否有斜線。架構
第二層的layer會檢測更加複雜的東西,好比一些簡單的組合線條;ide
後面的layer也會愈來愈複雜……學習
咱們能夠經過思考圖像的特徵來簡化網絡。3d
1.圖片中一些特徵一般比整個圖片要小,好比要檢測圖像中是否有鳥嘴。blog
咱們的neuron不須要看整個圖像來發現某些特徵,因此咱們只須要把鳥嘴那一小部分的圖片,用不多的參數跟neuron關聯起來。圖片
2.一樣的特徵可能出如今圖片的不一樣位置。io
咱們不會爲每一個不一樣位置的特徵單獨訓練一個neuron,由於它作的都是一樣的事情,就是檢測是否出現鳥嘴,只是出現的位置不同罷了。神經網絡
3.subsampling 可使圖片縮小,但不影響圖片的表達。network
每隔一行、一列刪除一行pixel,就是subsampling,咱們一樣能夠看到圖片表達的信息,就是一隻鳥。
因爲圖片縮小了,這樣又能夠減小參數了。
來看看整個CNN的架構
從圖片做爲輸入開始,通過多層的Convolution層+MaxPooling的組合,而後是Flatten層,最後通過一個Fully Connected network。
其中,上面討論的關於圖片的三個特色,在CNN的不一樣層中有相應處理。
Property一、2是小的特徵和 特徵的不一樣位置,經過Convolution層進行處理;
Property3 Subsampling經過MaxPooling處理。
這裏須要提到的是Filter。Filter其實就是一個矩陣,它們是神經網絡須要學習的參數。
每一個Filter在圖片中進行掃描,檢測3*3的特徵。
Filter從圖片的左上角開始,以stride爲步長進行圖片掃描,圖片中每3*3的子圖會和Filter做內積,而後獲得一個輸出值。
上面就是FIlter1掃描整個6×6圖片後獲得的4×4的結果矩陣。
能夠進一步理解的是,該Filter對角線全爲1,表示檢測圖像是否出現相似的斜線,出現斜線的地方在結果矩陣中的值爲最大。
對於一張圖片,咱們會同時檢測不少特徵,每一個filter只作一件相同的事情,因此須要有不少的Filter,
它們放在一塊兒就叫作Feature Map。
對於彩色圖片,一個Filter是3維的,如上圖,Filter是3×3×3的立方體(tensor).
下面將Convolution層和Fully Connected鏈接對應理解。
將圖片拉直成一個列向量,上面的Filter鏈接的是1,2,3,7,8,9,13,14,15的輸入單元,而不是全鏈接,Filter的每個份量能夠看做是全鏈接網絡中的w和b。
這樣相比於全鏈接的網絡,就只須要更少的參數。
並且,以前討論過,檢測同一個特徵只使用相同的Filter,因此每個neuron共用相同的參數,這就是Shared weights。
這會使CNN的參數變得更少。
將每個Filter檢測後的結果,劃分紅2×2的小塊,在每一塊中能夠取均值或最大值,代替這四個值,這樣就實現了Subsampling的功能。
取最大值的方法就是Maxpooling。
一副圖像,通過Conv和Maxpooling後,會變成一幅小的新圖像。能夠再它之上繼續進行Conv和Maxpooling。
通過MaxPooling處理後會產生和Filter數目相同的「新圖像」,每個Filter均可以看做是處理以前圖像的一個channel。
最後的Flatten就是將上一層Maxpooling獲得的image拉直成列向量,做爲全鏈接網絡的輸入。
以上就是一個CNN神經網絡的全部模塊簡介。最後附一張全圖。