摘要:
1.算法概述
2.算法要點與推導
3.算法特性及優缺點
4.注意事項
5.實現和具體例子
6.適用場合
內容:
1.算法概述:
卷積神經網絡(Convolutional Neural Network,CNN)最開始是為了解決圖像識別問題被設計而來的,CNN使用圖像的原始像素作為輸入,訓練時可以自動提取圖像特征;卷積神經網絡的三個基本要點是:局部連接,權值共享和降采樣。其中局部連接和權值共享降低了參數量,減少了模型復雜度;而降采樣則進一步降低了輸出參數量,並賦予模型對輕度畸變的容忍性,提高了模型的泛化能力。
1.1局部連接(感受野):
每一次卷積操作,輸入神經元只有一小片區域會被連接到下一層的一個神經元,這個區域被稱為局部感受野;如果局部感受野是5x5的,一次移動一格(stride),輸入圖像是28x28的,那么隱層有24x24(28-5+1)個神經元。

1.2權值共享:
卷積網絡中某一個層的所有神經元使用相同的權重和偏置。也就是說,對於隱藏層的第j行第k列的神經元,它的輸出為:

其中σ是激活函數,b是共享偏置,Wl,m是共享權重的5x5數組,用ax,y表示輸入層的第x行第y列的神經元的輸出值,即隱層的第j行第k列的神經元的若干個輸入。
共享,意味着這一個隱層的所有神經元檢測完全相同的特征,在輸入圖像的不同位置。這說明卷積網絡可以很好地適應圖片的平移不變性。
圖像分類中我們會卷積多次(卷積核不同),也稱為特征映射,下圖卷積了3次,識別了3種特征: 
一次卷積我們需要5x5=25個共享權重,加上一個共享偏置共26個參數。如果我們卷積了20次,那么共有20x26=520個參數。與全連接對比,輸入神經元有28x28=784個,隱層神經元設為30個,共有784x30個權重,加上30個偏置,共有23550個參數。
1.3降采樣:池化層一般在卷積層之后使用,池化層的每個單元概括了前一層的一個小區域,常見的方法有mean-pooling,max-pooling和stochastic pooling。
2.算法要點與推導
2.1前向推斷過程:
第一步:卷積操作:
其中卷積核為
,

2.2激活函數ReLU
2.3池化操作:

2.1后向求導過程:
http://note.youdao.com/noteshare?id=1babdc0a6670d94a3b90f7e65949874d
參考:Deep Learning模型之:CNN卷積神經網絡推導和實現 ;CNN卷積神經網絡和反向傳播
3.算法特性及優缺點
局部連接,權值共享和降采樣。其中局部連接和權值共享降低了參數量,減少了模型復雜度;而降采樣則進一步降低了輸出參數量,並賦予模型對輕度畸變的容忍性,提高了模型的泛化能力。
優點:具有空間不變性,自動提取特征;
缺點:相比傳統模型,卷積復雜度高。訓練時間長,只能提取局部特征,不能提取全局特征;
4.注意事項:
5.實現和具體例子
《Tensorflow實戰》實現簡單CNN處理mnist數據
《TensorFlow實戰》實現增加了L2正則化與LRN層的CNN處理CIFAR-10數據
《TensorFlow實戰》實現InceptionNet V3網絡
Implementing a CNN for Text Classification in TensorFlow
Character-level Convolutional Networks for Text Classification
