神經網絡-卷積神經網絡

1. 全連接BP神經網絡的缺點​

  1. 如果要用全連接BP神經網絡,我們把輸入的圖片「展平」了,「展平」是什麼意思呢?我們都知道,計算機存儲圖片,實際是存儲了一個W×H×DW\times H\times DW×H×D 的數組(W,H,D分別表示寬,高和維數,彩色圖片包含RGB三維),如下圖所示,「展平」就是,把這個數組變成一列,然後,輸入神經網絡進行訓練:
    在這裏插入圖片描述
    這種方法,在圖片尺寸較小的時候,還是可以接受的;但是,當圖片尺寸比較大的時候,由於圖像的像素點很多,神經網絡的 層與層之間 的連接數量,會爆炸式增長,大大降低網絡的性能

  2. 把圖片數據展開成一列,破壞了圖片的空間信息,試想,如果把上圖中的貓圖片變成一列,再把這一列數據,以圖片的形式展示給你,你還能看出這表示一隻貓嗎?並且,有相關研究表明,人類大腦,在理解圖片信息的過程中,並不是同時觀察整個圖片,而是更傾向於,觀察部分特徵,然後根據特徵匹配、組合,得出整圖信息。以下圖爲例:
    在這裏插入圖片描述
    在這張圖片中,你只能看到,貓的鼻子,1隻眼睛,2只耳朵和嘴,雖然沒有尾巴,爪子等其它信息,但是,你依然可以判斷,這裏有一隻貓。所以說,人在理解圖像信息的過程中,更專注於,局部特徵,以及這些特徵之間的組合。

    ​ 換句話說,在BP全連接神經網絡中,隱含層每一個神經元,都對輸入圖片 每個像素點 做出反應。這種機制包含了太多冗餘連接爲了減少這些冗餘,只需要每個隱含神經元,對圖片的一小部分區域,做出反應就好了!卷積神經網絡,正是基於這種想法而實現的。

2. 卷積神經網絡基本單元

2.1 卷積(Convolution)

​ 如果,你學過信號處理,或者有相關專業的數學基礎,可能需要注意一下,這裏的「卷積」,和信號處理裏的卷積,不太一樣,雖然,在數學表達式形式上有一點類似。

​ 在卷積神經網絡中,「卷積」更像是一個,特徵提取算子。什麼是特徵提取算子呢?簡單來說就是,提取圖片紋理、邊緣等特徵信息的濾波器。下面,舉個簡單的例子,解釋一下 邊緣 特徵提取算子是怎麼工作的:
在這裏插入圖片描述
​ 比如有一張貓圖片,人類在理解這張圖片的時候,可能觀察到圓圓的眼睛,可愛的耳朵,於是,判斷這是一隻貓。但是,機器怎麼處理這個問題呢?傳統的計算機視覺方法,通常設計一些算子(特徵提取濾波器,來找到比如眼睛的邊界,耳朵的邊界,等信息,然後綜合這些特徵,得出結論——這是一隻貓

​ 具體是怎麼做的呢:
在這裏插入圖片描述
​ 如上圖所示,假設,貓的上眼皮部分(框出部分),這部分的數據,展開後如圖中數組所示**(這裏,爲了敘述簡便,忽略了rgb三維通道,把圖像當成一個二維數組[類比灰度圖片]),我們使用一個算子,來檢測橫向邊沿**——這個算子,讓第一行的值減去第三行的值,得出結果。具體計算過程如下,比如,原圖左上角數據,經過這個算子:

200 × 1 + 199 × 1 + 189 × 1 + 203 × 0 + 23 × 0 + 34 × 0 + 177 × ( 1 ) + 12 × ( 1 ) + 22 × ( 1 ) = 328200 × 1 + 199 × 1 + 189 × 1 + 203 × 0 + 23 × 0 + 34 × 0 + 177 × ( 1 ) + 12 × ( 1 ) + 22 × ( 1 ) = 328200 × 1 + 199 × 1 + 189 × 1 + 203 × 0 + 23 × 0 + 34 × 0 + 177 × ( 1 ) + 12 × ( 1 ) + 22 × ( 1 ) = 328 200×1+199×1+189×1+203×0+23×0+34×0+177×(−1)+12×(−1)+22×(−1)=328200\times1+199\times1+189\times1+203\times0+23\times0+34\times0+177\times(-1)+12\times(-1)+22\times(-1)=328 200×1+199×1+189×1+203×0+23×0+34×0+177×(−1)+12×(−1)+22×(−1)=328

​ 然後,算子向右滑動一個像素,得到第二個輸出:533,依次向右滑動,最終得到第一行輸出;

​ 然後,向下滑動一個像素,到達第二行;在第二行,從左向右滑動,得到第二行輸出……
動圖演示過程如下(圖片來自csdn):

在這裏插入圖片描述

參考資料:

[1]https://blog.csdn.net/u014303046/article/details/86021346