Inception-v2 / BN-Inception (Batch Normalization) — The 2nd to Surpass Human-Level Performance in ILSVRC 2015 (Image Classification)

Moris
Computer Vision Note
3 min readAug 23, 2021

--

在本章節中,回顧了 Google 的 Inception-v2 [1]。 這種方法引入了一種非常重要的深度學習技術,稱為批量歸一化 (Batch Normalization ; BN)。 BN用於在進入下一層之前對數值分佈進行歸一化。 使用 BN,可以實現更高的準確率和更快的訓練速度。

Intense ILSVRC Competition in 2015

2015年的ILSVRC(ImageNet Large Scale Visual Recognition Competition)比賽變得異常激烈!

2015 年 2 月 6 日,Microsoft 提出了 PReLU-Net [2],其錯誤率為 4.94%,超越了 5.1% 的人為錯誤率

五天後,即 2015 年 2 月 11 日,Google 在 arXiv(未提交給 ILSVRC)中提出了 BN-Inception / Inception-v2 [1],其錯誤率為 4.8%

雖然BN沒有參加ILSVRC的比賽,但是BN有一個很好的概念,後來被很多網絡使用。 這是一篇 2015 年的 ICML 論文,被引用了 6000 多次,是深度學習中的必讀項目。

ImageNet 是一個包含超過 1500 萬張帶標籤的高分辨率圖像的數據集,大約有 22,000 個類別。 ILSVRC 使用 ImageNet 的一個子集,其中包含 1000 個類別中的每個類別中的大約 1000 張圖像。 總共有大約 120 萬張訓練圖像、50,000 張驗證圖像和 100,000 張測試圖像。

About The Inception Versions

Inception有 4 個版本。 第一個 GoogLeNet 是 Inception-v1 [3],但是 Inception-v3 [4] 中有很多錯別字導致對 Inception 版本的錯誤描述。 因此,互聯網上有許多評論在 v2 和 v3 之間混淆。 一些評論甚至認為 v2 和 v3 是相同的,只有一些細微的不同設置。

儘管如此,在 Inception-v4 [5] 中,Google 對版本問題有更清晰的描述:

Inception 深度卷積架構在 (Szegedy et al. 2015a) 中作為 GoogLeNet 引入,這裡命名為 Inception-v1。 後來 Inception 架構以各種方式進行了改進,首先是引入了批量標準化(Ioffe and Szegedy 2015)(Inception-v2)。 後來在第三次代(Szegedy et al. 2015b)中添加了額外的分解思想,在本報告中將其稱為 Inception-v3

因此,當我們談論批Batch Normalization (BN)時,我們談論的是 Inception-v2 或 BN-Inception。

What are covered

  1. Why we need Batch Normalization (BN)?
  2. Batch Normalization (BN)
  3. Ablation Study
  4. Comparison with the State-of-the-art Approaches

1. Why we need Batch Normalization (BN)?

我們都應該知道,輸入 input X 乘以權重 weight W 並加上偏移bias b,在activation function F 之後成為下一層的輸出 Y:

Y=F(W ⋅ X+b)

在先前,F 是 sigmoid 函數,它很容易在 1 處飽和,很容易使梯度變為零。 隨著網絡深度的增加,這種影響被放大,從而減慢了訓練速度

而後將 ReLU 用作 F,其中 ReLU(x)=max(x,0),以解決飽和問題(saturation problem)和由此產生的梯度消失(vanishing gradients)問題。 然而,特別注意initialization,learning rate設定是必要的

Without BN (Left), With BN (Right)

對於X 的分佈而言,隨著時間的推移保持固定是有利的,因為隨著網絡的深入,Loss的變化會由小被放大。

而BN 可以減少梯度對參數尺度或其初始值的依賴性

因此,

  1. 可以使用更高的學習率
  2. 可以減少對 Dropout 的需求

2. Batch Normalization (BN)

Batch Normalization

在訓練期間,我們估計mini-batch的均值 mean μ 和variance σ²,如上所示。 而將輸入通過減去均值 μ 並除以標準差 σ 進行歸一化。 (epsilon ε 是為了防止分母為零)然後額外的可學習參數 γ 和 β 用於scale 和 shift,以便在歸一化後具有更好的形狀和位置。 最後輸出 Y 變為如下:

Y=F(BN(W ⋅ X+b))

為了獲得更精確的mean和variance,使用moving average來計算mean和variance。

在測試期間,使用總體計算均值和方差。

3. Ablation Study

3.1 MNIST dataset

28×28 二位元圖像作為輸入,3 個 FC 隱藏層,每個隱藏層有 100 個activations,因為有 10 個數字,因此最後一個隱藏層後跟 10 個activations。 而損失是交叉熵損失(cross entropy loss)。

(a) Accuracy: With BN (Blue), Without BN (Black dotted), (b) and © One typical activation from last layer

BN網絡更加穩定。

3.2 Applying BN to GoogLeNet (Inception-v1)

除了將 BN 應用於 Inception-v1 [3] 之外,主要區別在於 5×5 卷積層被替換為兩個連續的 3×3 卷積層,共多達 128 個過濾器。 這是 Inception-v3 [4] 中提到的一種因式分解。

下圖左邊是 Inception 原本的架構,而右邊是將 5x5 卷積層改為兩個 3x3 卷積層後的 InceptionV2 架構

Single Crop Accuracy

從上圖中,測試了很多設置:

Inception: Inception-v1 without BN
BN-Baseline: Inception with BN
BN-×5: Initial learning rate is increased by a factor of 5 to 0.0075
BN-×30: Initial learning rate is increased by a factor of 30 to 0.045
BN-×5-Sigmoid: BN-×5 but with Sigmoid

通過比較 Inception 和 BN-Baseline,我們可以看到使用 BN 可以顯著提高訓練速度
通過觀察 BN-×5 和 BN-×30,我們可以看到初始學習率可以大大提高,以更好地提高訓練速度。
並且通過觀察BN-×5-Sigmoid,我們可以看到Sigmoid的飽和問題可以被去除

4. Comparison with the State-of-the-art Approaches

Comparison with the State-of-the-art Approaches

GoogLeNet (Inception-v1) 是 ILSVRC 2014 的獲勝者,錯誤率為 6.67%。
來自百度的Deep Image,於2015年1月13日提交,錯誤率為5.98%,之後提交的最佳錯誤率為4.58%。 Deep Image 網絡有點像 VGGNet 毫無意外,但它提出了硬體/軟體協同適應,最多可以有 64 個 GPU將batch size增加到 1024。(但由於頻繁提交違反競爭規則,百度 被禁了一年。他們也撤回了他們的論文。)

來自MicrosoftPReLU-Net,於 2015 年 2 月 6 日提交,錯誤率為 4.94%,是第一個超過人類水平的表現。
Inception-v2 / BN-Inception 於 2015 年 2 月 11 日報導,錯誤率為 4.82%,是本文中最好的結果。

--

--

Moris
Computer Vision Note

An AI engineer who loves deep learning technology and is willing to share resources and learn new technologies