1. Why look at case studies
介紹幾個典型的CNN案例:
-
LeNet-5
-
AlexNet
-
VGG
Residual Network(ResNet): 特點是可以構建很深的神經網絡
Inception Neural Network
2. Classic Networks
典型的 LeNet-5
結構包含CONV layer,POOL layer 和 FC layer
-
順序一般是
CONV layer->POOL layer->CONV layer->POOL layer->FC layer->FC layer->OUTPUT layer
,即 \(\hat{y}\)。 -
下圖所示的是一個數字識別的LeNet-5的模型結構:
LeNet模型 總共包含了大約6萬個參數。
-
Yann LeCun提出的 LeNet-5模型 池化層使用的是:average pool
-
各層激活函數一般是Sigmoid和tanh。現在,我們可以根據需要,做出改進,使用 max pool 和 激活函數ReLU。
AlexNet模型 其結構如下所示:
-
AlexNet模型與LeNet-5模型類似,更加復雜,共包含了大約6千萬個參數。
-
同樣可以根據實際情況使用 激活函數ReLU。有一個優化技巧,叫做Local Response Normalization(LRN)。 而在實際應用中,LRN的效果並不突出。
VGG-16模型 更復雜,其 CONV layer 和 POOL layer 設置如下:
-
CONV = 3x3 filters, s = 1, same
-
MAX-POOL = 2x2, s = 2
VGG-16結構如下所示,VGG-16的參數多達1億3千萬。:
3. ResNets
如果神經網絡層數越多,網絡越深,源於 梯度消失 和 梯度爆炸 的影響,整個模型難以訓練成功。
解決的方法:
-
人為地讓神經網絡 某些層 跳過下一層神經元的連接,隔層相連,弱化每層之間的強聯系。
-
這種神經網絡被稱為 Residual Networks(ResNets)。
-
Residual Networks由許多 隔層相連的神經元子模塊 組成,稱之為 Residual block。
單個Residual block的結構如下圖所示:
上圖中紅色部分就是skip connection,直接建立 \(a^{[l]}\) 與 \(a^{[l+2]}\) 之間的隔層聯系。相應表達式:
\(a^{[l]}\)直接隔層 與 下一層的線性輸出相連,與 \(z^{[l+2]}\)共同通過激活函數 (Relu) 輸出 \(a^{[l+2]}\).
由多個Residual block組成的神經網絡就是Residual Network。
實驗表明,這種模型結構對於 訓練非常深的神經網絡,效果很好。另外,為了便於區分,我們把 非Residual Networks稱為 Plain Network。
Residual Network的結構如圖所示:
-
與Plain Network相比,Residual Network能夠訓練更深層的神經網絡,有效避免發生發生梯度消失和梯度爆炸。
-
下圖對比中可看出,隨着神經網絡層數增加,Plain Network實際性能會變差,training error甚至會變大。然而,Residual Network的訓練效果卻很好,training error一直呈下降趨勢。
4. Why ResNets Work
-
如圖,輸入 \(x\) 經過很多層神經網絡后,輸出 \(a^{[l]}\),\(a^{[l]}\)經過一個 Residual block 輸出 \(a^{[l+2]}\)
-
\(a^{[l+2]}\) 表達式:
- 輸入x經過Big NN后, 若\(W^{[l+2]}\approx0\),\(b^{[l+2]}\approx0\),則有:
-
即使發生梯度消失,\(W^{[l+2]}\approx0\),\(b^{[l+2]}\approx0\),\(a^{[l+2]}\)與\(a^{l]}\)之間也有線性關系。即:identity function
-
\(a^{[l]}\) 直接連到 \(a^{[l+2]}\),從效果來說,相當於直接忽略了\(a^{[l]}\) 之后的兩層神經層.
-
看似很深的神經網絡,其實由於許多Residual blocks的存在,弱化削減了某些神經層之間的聯系,實現隔層線性傳遞,而不是一味追求非線性關系.
注意:
-
如果Residual blocks中 \(a^{[l]}\) 和 \(a^{[l+2]}\) 的維度不同,通常可以引入矩陣 \(W_s\),與 \(a^{[l]}\) 相乘,使得 \(W_s∗a^{[l]}\) 的維度與 \(a^{[l+2]}\)一致。
-
參數矩陣 \(W_s\) 有來兩種方法得到:
-
一種是將 \(W_s\) 作為學習參數,通過模型訓練得到.
-
一種是固定 \(W_s\) 值(類似單位矩陣),不需要訓練,\(W_s\) 與 \(a^{[l]}\) 的乘積僅使得 \(a^{[l]}\) 截斷或者補零。
-
-
如圖,CNN中 ResNets 的結構:
-
ResNets同類型層之間,例如CONV layers,大多使用same類型,保持維度相同。
-
如果是不同類型層之間的連接,例如CONV layer與POOL layer之間,如果維度不同,則引入矩陣 \(W_s\) 。
5. Networks in Networks and 1x1 Convolutions
一種新的CNN結構,即1x1 Convolutions,也稱Networks in Networks。
這種結構的特點:濾波器算子filter的維度為1x1。對於單個filter,1x1的維度,意味着卷積操作等同於乘積操作。
對於多個filters,1x1 Convolutions的作用類似 全連接層的神經網絡結構。效果等同於Plain Network中 \(a^{[l]}\) 到 \(a^{[l+1]}\) 的過程。
1x1 Convolutions可以用來 縮減輸入圖片的通道數目:
6. Inception Network Motivation
上面我們介紹的CNN單層的濾波算子filter尺寸是固定的,1x1或者3x3等。
Inception Network (初始網絡)
-
在 單層網絡 上可以 使用多個 不同尺寸的filters,進行same convolutions,把各filter下得到的輸出拼接起來。
-
除此之外,還可以將CONV layer與POOL layer混合,同時實現各種效果。但是要注意使用same pool。
總結: Inception Network使用不同尺寸的filters,並將CONV和POOL混合起來,將所有功能輸出組合拼接,再由神經網絡本身去學習參數並選擇最好的模塊
Inception Network在提升性能的同時,會帶來計算量大的問題。例如:
-
此CONV layer需要的計算量為:28x28x32x5x5x192=120m,其中m表示百萬單位。
-
可以看出但這一層的計算量都是很大的。
-
為此,我們可以引入1x1 Convolutions來減少其計算量,結構如下圖所示:
-
通常把該1x1 Convolution稱為“瓶頸層”(bottleneck layer)。
-
引入bottleneck layer之后,總共需要的計算量為:28x28x16x192 + 28x28x32x5x5x16=12.4m。
-
明顯地,雖然多引入了1x1 Convolution層,但是總共的計算量減少了近90%。由此可見,1x1 Convolutions還可以有效減少CONV layer的計算量。
7.Inception Network
引入1x1 Convolution后的Inception module如下圖所示:
多個Inception modules組成Inception Network,效果如下圖所示:
上述Inception Network除了由許多Inception modules組成之外,網絡中間隱藏層也可以作為輸出層Softmax,有利於防止發生過擬合。
8. Using Open-Source Implementation
略
9. Transfer Learning
略
10. Data Augmentation(數據增強)
- 常用的Data Augmentation方法是對已有的樣本集進行Mirroring和Random Cropping
-
另一種Data Augmentation的方法是color shifting。
- color shifting就是對圖片的RGB通道數值進行隨意增加或者減少,改變圖片色調。
11. State of Computer Vision
神經網絡需要數據,不同的網絡模型所需的數據量是不同的。
Object dection,Image recognition,Speech recognition所需的數據量依次增加。
- 如果data較少,那么就需要更多的hand-engineering,對已有data進行處理,比如上一節介紹的data augmentation
一些方法能夠有助於提升神經網絡模型的性能:(計算成本太大,不適用實際項目開發)
-
Ensembling: Train several networks independently and average their outputs.
-
Multi-crop at test time: Run classifier on multiple versions of test images and average results.