卷積神經(jīng)網(wǎng)絡(luò )
卷積神經(jīng)網(wǎng)絡(luò )
詳解
卷積神經(jīng)網(wǎng)絡(luò )沿用了普通的神經(jīng)元網(wǎng)絡(luò )即多層感知器的結構,是一個(gè)前饋網(wǎng)絡(luò )。以應用于圖像領(lǐng)域的CNN為例,大體結構如圖。
輸入層
為了減小后續BP算法處理的復雜度,一般建議使用灰度圖像。也可以使用RGB彩色圖像,此時(shí)輸入圖像原始圖像的RGB三通道。對于輸入的圖像像素分量為 [0, 255],為了計算方便一般需要歸一化,如果使用sigmoid激活函數,則歸一化到[0, 1],如果使用tanh激活函數,則歸一化到[-1, 1]。
卷積層
特征提取層(C層) - 特征映射層(S層)。將上一層的輸出圖像與本層卷積核(權重參數w)加權值,加偏置,通過(guò)一個(gè)Sigmoid函數得到各個(gè)C層,然后下采樣subsampling得到各個(gè)S層。C層和S層的輸出稱(chēng)為Feature Map(特征圖)。
激活層
將上面特征圖中的得到的每個(gè)參數放入到下面的幾個(gè)激活函數中進(jìn)行處理Sigmoid(S形函數),得到的是[0,1]區間的數值Tanh(雙曲正切,雙S形函數),得到的是[-1,0]之間的數值
ReLU 當x<0 時(shí),y=0,當x>0 時(shí),y = x
Leaky ReLU 當x<0 時(shí),y = α(exp(x-1)),當x>0時(shí),y= x
池化層
通過(guò)上一層22的卷積核操作后,我們將原始圖像由44的尺寸變?yōu)榱?3的一個(gè)新的圖片。池化層的主要目的是通過(guò)降采樣的方式,在不影響圖像質(zhì)量的情況下,壓縮圖片,減少參數。簡(jiǎn)單來(lái)說(shuō),假設現在設定池化層采用MaxPooling,大小為22,步長(cháng)為1,取每個(gè)窗口最大的數值重新,那么圖片的尺寸就會(huì )由33變?yōu)?2:(3-2)+1=2。從上例來(lái)看,會(huì )有如下變換:
全連接層
通 過(guò)不斷的設計卷積核的尺寸,數量,提取更多的特征,最后識別不同類(lèi)別的物體。做完Max Pooling后,我們就會(huì )把這些 數據“拍平”把3維的數組變成1維的數組,丟到Flatten層,然后把Flatten層的output放到full connectedLayer里,采用softmax對其進(jìn)行分類(lèi)。
CNN三大核心思想
卷積神經(jīng)網(wǎng)絡(luò )CNN的出現是為了解決MLP多層感知器全連接和梯度發(fā)散的問(wèn)題。其引入三個(gè)核心思想:1.局部感知(local field),2.權值共享(Shared Weights),3.下采樣(subsampling)。極大地提升了計算速度,減少了連接數量。
局部感知
如下圖所示,左邊是每個(gè)像素的全連接,右邊是每行隔兩個(gè)像素作為局部連接,因此在數量上,少了很多權值參數數量(每一條連接每一條線(xiàn)需要有一個(gè)權值參數,具體忘記了的可以回顧單個(gè)[神經(jīng)元模型]。因此局部感知就是:通過(guò)卷積操作,把 全連接變成局部連接 ,因為多層網(wǎng)絡(luò )能夠抽取高階統計特性, 即使網(wǎng)絡(luò )為局部連接,由于格外的突觸連接和額外的神經(jīng)交互作用,也可以使網(wǎng)絡(luò )在不十分嚴格的意義下獲得一個(gè)全局關(guān)系。
權值共享
不同的圖像或者同一張圖像共用一個(gè)卷積核,減少重復的卷積核。同一張圖像當中可能會(huì )出現相同的特征,共享卷積核能夠進(jìn)一步減少權值參數。
池化
- 這些統計特征能夠有更低的維度,減少計算量。
- 不容易過(guò)擬合,當參數過(guò)多的時(shí)候很容易造成過(guò)度擬合。
- 縮小圖像的規模,提升計算速度。
