CNN卷積神經網路學習筆記1:背景介紹
Convolutional Neural Network 卷積神經網路是基於人工神經網路提出的。人工神經網路模擬人的神經系統,由一定數量的神經元構成。在一個監督學習問題中,有一組訓練資料
1,神經元neuron
一個神經元是神經網路中的一個運算單元,它實質上就是一個函式。下圖是一個神經元的示意圖:
有3個輸入
sigmoid函式影象如圖:
啟用函式是以0.5為分界,讓大值更逼近1,小值更逼近0,因為人的神經元就是有分“啟用”和“不啟用”兩種狀態,刺激達到一定程度,就被啟用,傳播訊號,達不到就不啟用,不傳播訊號,人工神經網路中啟用函式的設計,應該是為了模擬這個過程。
2,人工神經網路Neural Network
人工神經網路就是由多個上述的神經元組合成的,下圖是一個小型的人工神經網路的示意圖:
有3個輸入單元,這個輸入單元的個數一般由樣本向量的維度決定,比如輸入的樣本是sift特徵點,那麼就有128個輸入單元。+1是偏置,
當然輸出層也可以有多個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中特徵圖。