帶你讀論文系列之計算機視覺–Inception v2/BN-Inception
我們終其一生,就是要擺脫他人的期待,找到真正的自己。–《無聲告白》
概述
論文:Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
回顧GoogLeNet
Inception-v2結構的改進就是将原來的Inception-v1結構中的5✖️5卷積層進行修改,用兩個3✖️3卷積層代替。
Batch Normalization是google在2015提出的深度學習的優化技巧。
它不僅可以加快模型的收斂速度,而且更重要的是在一定程度緩解了深層網絡中“梯度彌散”的問題,進而使得訓練深層網絡模型更加容易和穩定。
神經網絡在訓練時候,每一層的網絡參數會更新,也就是說下一層的輸入的分布都在發生變化,這就要求網絡的初始化權重不能随意設定,而且學習率也比較低。是以,我們很難使用飽和非線性部分去做網絡訓練,作者稱這種現象為internal covariate shift。
Batch Normalization的提出,就是要解決在訓練過程中,中間層資料分布發生改變的情況。
因為現在神經網絡的訓練都是采用min-batch SGD,是以Batch Normalization也是針對一個min-batch做歸一化,這也就是Batch Normalization中batch的由來。在神經網絡的訓練中,如果将輸入資料進行白化預處理(均值為0,方差為1,去相關)可以加快收斂速度。
但是白化處理計算量太大,而且不是處處可微的,是以作者做了兩個簡化處理。一是對每個次元單獨計算,二是使用mini-batch來估計估計均值和方差。
摘要
- 資料分布變化導緻訓練困難;
- 低學習率,初始化可解決,但訓練慢;
- 資料分布變化現象稱為ICS;
- 提出Batch Normalization層解決問題;
- Batch Normalization 優點:大學習率不關心初始化,正則項不用Dropout;
- 成果:ImageNet分類的最佳釋出結果:達到4.9%的top-5驗證錯誤(和4.8%的測試錯誤),超過了人類評估者的準确度。
BN-Inception網絡—關鍵點
- Batch Normalization(批歸一化)。意義,目前BN已經成為幾乎所有卷積神經網絡的标配技巧。
- 5×5卷積核→2個3×3卷積核。相同的感受野。
BN 的好處:
- BN 減少了内部協方差,提高了梯度在網絡中的流動,加速了網絡的訓練。
- BN使得可以設定更高的學習速率。
- BN正則了模型。
論文詳情
深度學習極大地提高了視覺、語音和許多其他領域的技術水準。随機梯度下降(SGD)已被證明是訓練深度網絡的有效方法,并且諸如momentum和
Adagrad等SGD變體已被用于實作最先進的性能。SGD優化網絡的參數Θ,進而最小化損失。
使用SGD,訓練分步進行,在每一步我們考慮mini-batch。mini-batch用于近似損失函數相對于參數的梯度。
使用mini-batch的的2個好處:
穩定,提高精度;
高效,加快速度。
SGD要調參數:
Learning Rate
權重初始化
缺點:
每層的輸入受前面所有層的影響,而前面層微小的的改變都會被放大。
将Internal Covariate Shift(ICS)定義為訓練過程中網絡參數的變化引起的網絡激活分布的變化。為了改進訓練,我們尋求減少内部協變量偏移。通過将層輸入的分布固定為訓練進度,我們期望提高訓練速度。衆所周知,如果輸入被白化,網絡訓練收斂得更快——即線性變換為具有零均值和機關方差,并且去相關。由于每一層都觀察由下面的各層産生的輸入,是以對每一層的輸入實作相同的白化将是有利的。通過對每一層的輸入進行白化,我們将朝着實作輸入的固定分布邁出一步,進而消除内部協變量移位的不良影響。
已知經驗:
當輸⼊資料為whitened ,即0均值1方差,訓練收斂速度會快。
實作白化(whitened):
- 直接改網絡
- 根據激活值,優化參數,使得輸出是白化的。
我們可以在每個訓練步驟或某個時間間隔考慮白化激活,通過直接修改網絡或通過更改優化算法的參數以取決于網絡激活值。然而,如果這些修改穿插在優化步驟中,那麼梯度下降步驟可能會嘗試以需要歸一化的方式更新參數被更新,這減少了梯度步驟的影響。
其中期望和方差是在訓練資料集上計算的。即使特征不相關,這種歸一化也會加速收。通過以上公式把每層的特征進行白化并且是逐個次元的。簡單的标準化特征值,會改變網絡的表達能力例如sigmoid,限制線上性區域。
其中gamma和beta是可學習允許模型自動控制是否需要保留原始表征。以上共識是為了保留網絡的表征能力。
在批量設定中,每個訓練步驟都是基于整個訓練集的,我們将使用整個訓練集來對激活進行管理。然而,在使用随機優化時,這是不現實的。是以,我們做了第二個簡化:由于我們在随機梯度訓練中使用mini-batch,每個mini-batch都産生每個激活的平均值和方差的估計值。這樣,用于歸一化的統計學可以完全參與到梯度反向傳播中。請注意,mini-batch的使用是通過計算每個次元的變量而不是聯合協方差來實作的;在聯合的情況下,由于mini-batch的大小可能小于被白化的激活的數量,是以需要進行調節,導緻奇異協方差矩陣。
在算法1中詳細說明了BN。在該算法中,ϵ是一個為了數值穩定性而加到mini-batch variance上的常數。
但需要注意的是,BN變換并不是獨立處理每個訓練示例中的激活。相反,BNγ,β(x)取決于訓練示例和mini-batch中的其他示例。
在傳統的深度網絡中,過高的學習率可能會導緻梯度爆炸或消失,以及陷入不良的局部最小值。批量标準化有助于解決這些問題。通過對整個網絡的激活進行标準化,它可以防止參數的微小變化放大為梯度激活的較大和次優變化;例如,它可以防止訓練陷入非線性的飽和狀态。
使用批量歸一化進行訓練時,可以看到一個訓練示例與小批量中的其他示例相結合,并且訓練網絡不再為給定的訓練示例生成确定性值。在我們的實驗中,我們發現這種效果有利于網絡的泛化。Dropout通常用于減少過拟合,在批量歸一化網絡中,我們發現它可以被移除或降低強度。
實驗
a)使用和不使用批量歸一化訓練的MNIST網絡的測試準确率與訓練步驟的數量。Batch Normalization幫助網絡更快地訓練并獲得更高的準确率。
(b,c)在訓練過程中,輸入分布向典型的sigmoid演變,顯示為{15,50,85}的百分位數。批量歸一化使分布更加穩定,并減少了内部協變量的轉移。
将批量歸一化應用Inception網絡的新變體(2014),在ImageNet分類任務上進行訓練(2014)。該網絡有大量的卷積層和池化層,有一個softmax層以從1000種可能性中預測圖像類。卷積層使用ReLU函數作為非線性。與Inception網絡的新變體中描述的網絡的主要差別在于,5×5卷積層被兩個連續的3×3卷積層替換,最多128 個濾波器。網絡包含13.6·106個參數,除了最上面的softmax層,沒有全連接配接層。
簡單地将批量歸一化添加到網絡并不能充分利用我們的方法。為此,我們進一步更改了網絡及其訓練參數,如下:
- 增大學習率;
- 移除Dropout;
- 降低weight decay 降低5倍,減輕限制權重的大小,因為BN允許權重大一些;
- 更早的學習率下降總共下降6次; 這個圖展示了為什麼是6。
- 移除LRN v1中進入inception之前用了LRN;
- 徹底shuffle 充當正則;
- 減少光照變化因為訓練次數少,期望模型看到的是真實的樣本。 在提供的包含50000個圖像的驗證集上,與以前的最新技術進行批量标準化初始比較。*根據測試伺服器的報告,在ImageNet測試集的100000張圖像上,BN初始內建已達到4.82% top-5。
其中BN-Inception Ensemble,則采用多個網絡模型內建學習後得到的結果。
為了啟用深度網絡訓練中常用的随機優化方法,對每個小批量執行歸一化,并通過歸一化參數反向傳播梯度。批量歸一化每次激活僅添加兩個額外參數,并且這樣做保留了網絡的表示能力。文章提出了一種使用批量歸一化網絡建構、訓練和執行推理的算法。由此産生的網絡可以用飽和非線性進行訓練,對增加的訓練率有更大的容忍度,并且通常不需要Dropout進行正則化。
隻加2個參數就保持表征能力。
優點:
- 可訓練飽和激活函數;
- 可⽤⼤學習率;
- 不需要dropout。
Inception+bn+優化
單模型SOTA
多模型SOTA
批量歸一化的目标是在整個訓練過程中實作激活值的穩定分布,在我們的實驗中,我們在非線性之前應用它,因為這時比對第一和第二時刻更有可能産生穩定的分布。相反,将标準化層應用于非線性的輸出,這導緻了更稀疏的激活。在我們的大規模圖像分類實驗中,我們沒有觀察到非線性輸入是稀疏的,無論是使用還是不使用批量規範化。
下一步研究
- BN+RNN,RNN的ICS更嚴重;
- BN+domain adaptation 僅重新計算mean+std 就可以了。