1. 程式人生 > >CNN卷積神經網路學習筆記1:背景介紹

CNN卷積神經網路學習筆記1:背景介紹

     Convolutional Neural Network 卷積神經網路是基於人工神經網路提出的。人工神經網路模擬人的神經系統,由一定數量的神經元構成。在一個監督學習問題中,有一組訓練資料(xi,yi),x是樣本,y是label,把它們輸入人工神經網路,會得到一個非線性的分類超平面hw,b(x),在這篇筆記中先梳理一下傳統人工神經網路的基本概念,再基於傳統人工神經網路簡單介紹卷積神經網路。

1,神經元neuron

     一個神經元是神經網路中的一個運算單元,它實質上就是一個函式。下圖是一個神經元的示意圖:
這裡寫圖片描述
     有3個輸入x1,x2,x3,+1是一個偏置值(bias),輸出h

w,b(x)=f(wTx)=f(3i=1wixi+b),f是啟用函式(activation function),這裡的啟用函式用的是sigmoid函式:

f(z)=11+exp(z).
sigmoid函式影象如圖:
這裡寫圖片描述
     啟用函式是以0.5為分界,讓大值更逼近1,小值更逼近0,因為人的神經元就是有分“啟用”和“不啟用”兩種狀態,刺激達到一定程度,就被啟用,傳播訊號,達不到就不啟用,不傳播訊號,人工神經網路中啟用函式的設計,應該是為了模擬這個過程。

2,人工神經網路Neural Network

     人工神經網路就是由多個上述的神經元組合成的,下圖是一個小型的人工神經網路的示意圖:
這裡寫圖片描述


     有3個輸入單元,這個輸入單元的個數一般由樣本向量的維度決定,比如輸入的樣本是sift特徵點,那麼就有128個輸入單元。+1是偏置,a(l)i是指第l層的啟用函式。這個神經網路的引數是(W(1),b(2),W(2),b(2)),其中W(1)是指第1層到第2層之間的連線的權值,是一個矩陣,b(1)是指它們之間的連線偏置,是一個向量。W(l)i,j指的是第l層的unit j和第l+1層的unit i之間的連線的權值,它是一個數值,b(l)i是連線到第l+1層unit i的偏置,所有連線unit i的連線都使用這同一個偏置值,在圖中連線到第2層的三個unit的偏置值都是+1。在圖中,L1是輸入層(input layer),L2是隱層(hidden layer),因為這一層每個unit的值是無法觀測到的,L3是輸出層(output layer)。

     當然輸出層也可以有多個unit,如下圖,在label y是向量的情況下,這個unit個數一般和y的維度一致。
這裡寫圖片描述

3,卷積神經網路

     卷積神經網路中,輸入就是一幅幅的影象,權值W就是卷積模板,一般是卷積層和下采樣層交替,最後是全連線的神經網路,也就是上述經典的人工神經網路。如下是一個簡單的卷積神經網路示意圖:
這裡寫圖片描述
     C是卷積層,S是下采樣層。輸入的一幅影象,在C1層,通過和3個卷積模板做卷積運算,然後加上偏置值,再經過sigmoid啟用函式,得到3幅輸出影象,在S2層,對C1層輸出的3幅影象做下采樣,假設取樣因子是2,也就是圖中每2*2的patch中的4個畫素進行求和,再加偏置,再通過啟用函式,得到3張尺寸減小了的輸出影象。同樣的,再經過C3,S4。將S4的輸出拉成一個向量,輸入傳統的神經網路中,並得到輸出。
     如下圖是有人對卷積神經網路每一層輸出的特徵影象做的視覺化:
這裡寫圖片描述
     可以看到,第1層輸出的特徵影象還是很簡單的形狀和顏色資訊,隨著層數增多,到第3層的輸出特徵圖,已經包含了相當複雜的豐富的細節資訊,能夠初步辨別目標了。

4,感受野(receptive field)和權值共享

     除了增加捲積層和取樣層,在傳統人工神經網路的基礎上,卷積神經網路還通過感受野和權值共享大大地減少了引數,降低了訓練難度,也避免了引數過多引起過擬合(overfitting)。
     卷積神經網路的輸入是一幅幅的影象,根據傳統的人工神經網路,在第2層的每個unit都要和輸入層影象的每個畫素連線,這裡我們假設第2層有1M個hidden units,輸入影象大小1000*1000,那麼這一層要訓練的權值w就是1M *1000*1000=10^12個,如下圖左:
這裡寫圖片描述
     而人們發現人是通過一個區域性的感受野去感受影象的,且影象的空間聯絡是區域性的,每一個神經元並不需要對全域性影象感受,每個神經元只用感受區域性的影象區域,然後在更高層將這些神經元的資訊綜合起來得到全域性資訊。這樣,我們就可以減少連線數目了,假設感受野是10*10大小,那麼第2層的每個unit只用和一個10*10的感受野連線,這樣的感受野有100*100個,那麼這一層要訓練的權值w是1M*10*10=10^8個,如上圖右。可以看到,通過感受野,隱層的權值個數已經從10^12降到了10^8個,每個hidden unit有10*10=100個引數。
     人們認為對於不同的感受野區域,要提取的特徵是相似的,比如邊緣,顏色變化等等,這樣,我們可以在不同的感受野用同樣的方式去感受特徵,也就是說,用一個卷積核去卷積全部的感受野。這就是權值共享,就是讓這1M個hidden units共享同一組引數(100個權值),那麼隱層權值個數就降到了100個。下圖左中的紅色,黑色,綠色,藍色的感受野區域使用相同的引數來做卷積。
這裡寫圖片描述

     如果一種卷積核(也就是濾波器)可以提取影象的某一方面的特徵,那麼我們在這裡使用100種卷積核,每個卷積核的引數都不一樣,提取出來的特徵也就不一樣,這樣,就可以輸出100種特徵圖。上圖右是紅色和黑色兩種卷積核,在卷積層會輸出2中特徵圖。