1. 程式人生 > >【筆記】Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning

【筆記】Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning

論文:https://arxiv.org/abs/1602.07261

程式碼:https://github.com/gu-yan/mlAlgorithms/blob/master/inception_impl/Inception_resnet_v2_temsorflow.py

先貼出模型:

Inception V4https://raw.githubusercontent.com/titu1994/Inception-v4/master/Architectures/Inception-v4.png


圖片來自:http://blog.csdn.net/lynnandwei/article/details/53736235

Inecption Res-v2 :


圖片來自:http://blog.csdn.net/lynnandwei/article/details/53736235

Residual連線訓練更深的網路變得容易。Inception結構也使得網路變深。將Residual連線新增到Inception結構中,就可以用殘差網路來訓練Inception,且保留計算的高效性。

Inception結構最初由GoogLeNet引入:

  • -----------------------------------------------------------------------------------------------------------------

  • [v1] Going Deeper with Convolutions, 6.67% test error, http://arxiv.org/abs/1409.4842
  • GoogLeNet叫做Inception-v1,Inception v1的網路,將1x1,3x3,5x5的conv和3x3的pooling,stack在一起,一方面增加了網路的width,另一方面使用 MLPConv 全域性平均池化,擴寬卷積層網路寬度,增加了網路對尺度的適應性;
  • -------------------------------------------------------------------------------------------------------------------
  • [v2] Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift, 4.8% test error, http://arxiv.org/abs/1502.03167
  • Inception-v2的網路在v1的基礎上,進行了改進,一方面了加入了Batch Normalization,代替 Dropout 和 LRN,減少了Internal Covariate Shift(內部neuron的資料分佈發生變化),使每一層的輸出都規範化到一個N(0, 1)的高斯,其正則化的效果讓大型卷積網路的訓練速度加快很多倍,同時收斂後的分類準確率也可以得到大幅提高;另外一方面學習VGG用2個3x3的conv替代inception模組中的5x5,既降低了引數數量,也加速計算;
  • -----------------------------------------------------------------------------------------------------------------
  • [v3] Rethinking the Inception Architecture for Computer Vision, 3.5% test error,  http://arxiv.org/abs/1512.00567
  • Inception-v3一個最重要的改進是分解(Factorization),將7x7分解成兩個一維的卷積(1x7,7x1),3x3也是一樣(1x3,3x1),這樣的好處,既可以加速計算(多餘的計算能力可以用來加深網路),又可以將1個較大的conv拆成2個較小conv,使得網路深度進一步增加,增加了網路的非線性,還有值得注意的地方是網路輸入從224x224變為了299x299,更加精細設計了35x35/17x17/8x8的模組;
  • -----------------------------------------------------------------------------------------------------------------
  • [v4] Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning, 3.08% test error, http://arxiv.org/abs/1602.07261
  • Inception-v4研究了Inception模組結合Residual Connection能不能有改進?發現ResNet的結構可以極大地加速訓練,同時效能也有提升,得到一個Inception-ResNet v2網路,同時還設計了一個更深更優化的Inception v4模型,能達到與Inception-ResNet v2相媲美的效能
  • -----------------------------------------------------------------------------------------------------------------

Inception-v4共有四種結構:(其中k,l,m,n表示filter bank size

1、不包含Residual connection結構的;

2、包含Residual connection結構的;

3、Inception-ResNet-v1

4、Inception-ResNet-v2。


縮放Residuals

當卷積核個數超過1000時,訓練將會變得不穩定,在訓練的早期,網路“died”。這是縮小Residuals有助於穩定訓練,縮小因子介於0.1到0.3。

He在訓練Residual Net時也發現這個問題,提出了“two phase”訓練。首先“warm up”,使用較小的學習率。接著再使用較大的學習率。

訓練方法

使用Momentum + SGM,momentum=0.9。使用RMSProp,decay為0.9,ϵ=1.0

學習率為0.045,每2個epoch縮小為原理的0.94。

實驗結果


-----------------------------------------------------------------------END------------------------------------------------------------------------------

到最後,我有一個Question:

如何來設計這些inception啊,是有什麼依據呢?還是逐個實驗呢?需大牛解答~~~