基礎概念:
卷積神經網絡(CNN):屬於人工神經網絡的一種,它的權值共享的網絡結構顯著降低了模型的復雜度,減少了權值的數量。卷積神經網絡不像傳統的識別算法一樣,需要對數據進行特征提取和數據重建,可以直接將圖片作為網絡的輸入,自動提取特征,並且對圖形的變形等具有高度不變形。在語音分析和圖像識別領域有重要用途。
卷積:卷積是泛函分析中的一種積分變換的數學方法,通過兩個函數 f 和 g 生成第三個函數的一種數學算子,表征函數 f 與 g 經過翻轉和平移的重疊部分的面積。設函數 是定義在
上的可測函數,
與
的卷積記作
,它是其中一個函數翻轉並平移后與另一個函數的乘積的積分,是一個對平移量的函數,也就是:
具體解釋下:
1.已知兩函數f(t)和g(t)。下圖第一行兩圖分別為f(t)和g(t)。
2.首先將兩個函數都用來表示,從而得到f(
)和g(
)。將函數g(
)向右移動t個單位,得到函數g(
-t)的圖像。將g(
-t)翻轉至縱軸另一側,得到g(-(
-t))即g(t-
)的圖像。下圖第二行兩圖分別為f(
)和g(t-
)。
3.由於非常數(實際上是時間變量),當時間變量(以下簡稱“時移”)取不同值時,
能沿着
軸“滑動”。下圖第三四五行可理解為“滑動”。
4.讓從-∞滑動到+∞。兩函數交會時,計算交會范圍中兩函數乘積的積分值。換句話說,我們是在計算一個滑動的的加權總和(weighted-sum)。也就是使用
當做加權函數,來對 f(
)取加權值。
最后得到的波形(未包含在此圖中)就是f和g的卷積。
神經網絡的基本組成包括輸入層、隱藏層、輸出層。卷積神經網絡的特點在於隱藏層分為卷積層和池化層。卷積層通過一塊塊的卷積核在原始圖像上平移來提取特征,每一個特征就是一個特征映射;而池化層通過匯聚特征后稀疏參數來減少要學習的參數,降低網絡的復雜度,池化層最常見的包括最大值池化 (max pooling) 和平均值池化 (average pooling) 。
卷積核在提取特征映射時的動作稱為 padding,其有兩種方式,即 SAME 和 VALID。由於移動步長(Stride)不一定能整除整張圖的像素寬度,我們把不越過邊緣取樣稱為 Vaild Padding,取樣的面積小於輸入圖像的像素寬度;越過邊緣取樣稱為 Same Padding, 取樣的面積和輸入圖像的像素寬度一致。
幾種不同的卷積神經網絡:
1.LeNet
- 輸入層:32 x 32
- 卷積層:3個
- 下采樣層:2個
- 全連接層:1個
- 輸出層:10個類別(數字0~9的概率)。
(1)輸入層。輸入圖像尺寸為32 x 32。
(2)卷積層:卷積運算的主要目的是使原信號特征增強,並且降低噪音。
(3)下采樣層:下采樣層主要是想降低網絡訓練參數及模型的過擬合程度。通常有以下兩種方式。
- 最大池化(max pooling):在選中的區域中找最大的值作為采樣后的值。
- 平均值池化(mean pooling):把選中區域中的平均值作為采樣后的值。
(4)全連接層:計算輸入向量和權重向量的點積,再加上一個偏置,隨后將其傳遞給 sigmoid 函數,產生單元 i 的一個狀態。
2.AlexNet
AlextNet 由5個卷積層、5個池化層、3個全連接層、大約5000萬個可調參數組成。
優點:使用了如下方法
- 防止過擬合:Dropout、數據增強。
- 非線性激活函數:ReLU。
- 大數據訓練:120萬 ImageNet 圖像數據。
- GPU 實現、LRN規范化層的使用。
此外還有 VGGNet、GoogLeNet、ResNet 等卷積神經網絡模型,這里不再一一敘述。
***講下解決過擬合的方法。
(1)數據增強:增加訓練數據是避免過擬合的好方法,並且能提升算法的准確性。當訓練數據有限的時候,可以通過一些變換從已有的訓練數據集中生成一些新數據。來擴大訓練數據量。通常采用的變形方法以下幾種:
- 水平翻轉圖像(又稱反射變化,filp)。
- 從原始圖像隨機地平移變換出一些圖像。
- 給圖像增加一些隨機的光照(又稱光照、彩色變換、顏色抖動)。
(2)Dropout。以 Alexnet 為例,Alexnet 是以0.5 的概率將每個隱層神經元的輸出設置為0 。以這種方式被抑制的神經元既不參加前向傳播,也不參與反向傳播。因此,每次輸入一個樣本,就相當於該神經網絡嘗試了一個新結構,但是所有這些結果之間共享權重。因為神經元不能依賴於其他神經元而存在,所以這種技術降低了神經元復雜的互適應關系。因此,網絡需要被迫學習更為健壯的特征,這些特征在結合其他神經元的一些不同隨機子集時很有用。Dropout 使收斂所需的迭代次數大致增加了一倍。