這一篇論文很不錯,也很有價值;它重新思考了googLeNet的網絡結構--Inception architecture,在此基礎上提出了新的改進方法;
文章的一個主導目的就是:充分有效地利用computation;
第一部分: 文章提出了四個principles:
原則1:設計網絡的時候需要避免 representational bottlenecks; 什么意思呢? 文章中說: 層與層之間進行 information 傳遞時,要避免這個過程中的數據的extreme compression,也就是說,數據的 scale 不能減小的太快;(數據從輸入到輸出大致是減少的,這個變化過程一定要gently,而不是快速的, 一定是慢慢的變少。。。。。。) 當數據的維數extreme下降的時候,就相當於引入了 representational bottelneck.
原則2:沒有怎么看明白什么意思啊?復制過來。Higher dimensional representations are easier to process locally within a network. Increasing the activations per tile in a convolutional network allows for more
disentangled features. The resulting networks will train faster. (可以結合 figure7 下面的注釋, 我感覺: 在高維表示時,對於局部的特征更容易處理,意思就是local 卷積,用1*1啦, 或3*3, 別用太大的)
原則3: spatial aggregation can be done over lower dimensional embedding without much or any loss in representational power. 直接翻譯真的不會翻譯啊
原則4: 應該均衡網絡的寬度與深度;
第二部分:網絡的改進方法:
基於以上原則,開始對網絡進行改進了。
1. 把大的卷積層分解為小的卷積層,提高計算效率:
第一種:可以把一個5*5的卷積卷積層分解成兩個 3*3 的卷積層。 一個細節就是:把底層的 filters 為m 時, 上層的filters 為 n 時,這時兩層的小的卷積層的每一個filters 為多少呢? 細節2: 當原來的 激活函數為線性激活函數時,現在變為兩層的激活函數如何選擇?(文中說明了全部使用 relu 激活函數會好一些)
2. 非對稱分解:
把一個 n*n 的卷積層分解為兩個 1*N 和 N*1 的卷積層; (文中說了這種分解在網絡的開始幾層效果垃圾, but is gives very good result on medium grid-sizes)
3. auxiliary classifiers 分類器的真正作用
文章都過實驗發現 輔助分類器的真正作用為:regularizer。 意思就是吧,這個輔助分類器並不會加快網絡的訓練,不會加快 low-level 特征的 evlove , 它只會在最后的時候提高了一點 performance. 文章還說了,如果加上 batch-mormalized 效果更好一些,這也說明了 batch-normalized 也算一種 regularizer吧。
4. 有效的 grid-size 的reduction 的方法 ,即減少 feature map 的size 的方法:
文中出發點:1 ,避免 representational bottleneck ,其實我理解的就是避免 data的 dimension 急劇下降,一定也慢慢的來,別太快了; 2, 提高計算效率;
下圖中的兩種方法不滿足條件:(左邊不滿足條件1, 右邊不滿足條件2)
下圖的方法為論文中提出來的:
5. Label smoothing Regularization 方法:
這里要涉及到了一些計算過程,用語言說明一下:網絡采用softmax分類器以及交叉熵函數作為loss函數時,對於類別 K 的最上層的導數等於:網絡實際輸出的 類別 K 的后驗概率 - 真實的類別 K的后驗概率; 而真實的類別 K的后驗概率 要么為1,要么為0. 這個容易出一個問題: 1,過擬合,為什么呢?這樣會使促使 網絡去學習 的實際輸出的 類別 K 的后驗概率為 1 或0 ,it is not guaranteed to generalize; 2, 這個也限制了導數的變化, 因為吧, 容易上層數為0 啊。。( 自己推導好好理解一下)
所以呢,文中提出了一個方法: 真實的類別 K的后驗概率別這個confident (要么為1 要么為0,不好,雖然后驗概率就是這樣的), 然后引入了:
其中的u(k)是自己引入的, 文章用了均勻分布; 另外文章也建議了使用訓練樣本中的 k 的分布來表示 u(k), 其實吧,訓練樣本中的每一個類別的樣本可能差不多相同吧,所以呢,用均勻分布也挺合適的;
第三部分: Inception V-2網絡;
第四部分:訓練方法:
看看,參考文獻很好;
第五部分:如何處理 small object的分類問題?
由於 object 比較小,所以呢, 像素少, 分辨率低,怎么辦?
文中呢,通過試驗說明了在計算力相同的情況下,不同的分辨率的輸入的效果其實差不多的。
所以呢,當輸入的分辨率低時,適當地調節網絡的前幾層,來保證 computational cost 相同 ,這樣的話,最終的 perpormance 其實沒有多大的差別的;
第六部分:對比實驗:
這一部分對比了其它的實驗結果, 注意:Inception-V3.
參考文獻:Szegedy C, Vanhoucke V, Ioffe S, et al. Rethinking the inception architecture for computer vision[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016: 2818-2826.






