BN的作用與使用過程


引自:https://www.seotest.cn/jishu/36125.html

BN被廣泛應用於深度學習的各個地方,由於在實習過程中需要修改網絡,修改的網絡在訓練過程中無法收斂,就添加了BN層進去來替換掉LRN層,網絡可以收斂。現在就講一下Batch Normalization的工作原理。

BN層和卷積層,池化層一樣都是一個網絡層。

首先我們根據論文來介紹一下BN層的優點。

1)加快訓練速度,這樣我們就可以使用較大的學習率來訓練網絡。

2)提高網絡的泛化能力。

3)BN層本質上是一個歸一化網絡層,可以替代局部響應歸一化層(LRN層)。

4)可以打亂樣本訓練順序(這樣就不可能出現同一張照片被多次選擇用來訓練)論文中提到可以提高1%的精度。

下面我們就講一下BN層是如何實現的:

從論文中給出的偽代碼可以看出來BN層的計算流程是:

1.計算樣本均值。

2.計算樣本方差。

3.樣本數據標准化處理。

4.進行平移和縮放處理。引入了γ和β兩個參數。來訓練γ和β兩個參數。引入了這個可學習重構參數γ、β,讓我們的網絡可以學習恢復出原始網絡所要學習的特征分布。

下面我們討論一下樣本是如何得到的

Batch Normalization顧名思義,mini-batch就是我們每次訓練的Batch_size。

從上圖卷積過程可以得出一張5*5的圖片經過卷積核3*3的卷積之后得到一張3*3的特征圖。特征圖就會包含了9個特征值,這9個特征值就是我們上面所提到的樣本。假設我們的batch-size設為m,那么就會有m*9個特征值傳到BN層里面作為樣本來訓練參數γ和β。

在網絡訓練中以batch-size作為最小單位來不斷迭代。每當有新的batch-size進入到網絡里面就會產生新的γ和β。也就是說我們訓練過程中要生成  圖片總量/batch-size 組參數。

圖像卷積的過程中,通常是使用多個卷積核,得到多張特征圖,對於多個的卷積核需要保存多個的γ與β。

BN層的整體流程如下圖:

輸入:待進入激活函數的變量 

輸出: 

1.這里的K,在卷積網絡中可以看作是卷積核個數,如網絡中第n層有64個卷積核,就需要計算64次。 

 需要注意,在正向傳播時,會使用γ與β使得BN層輸出與輸入一樣。 

2.在反向傳播時利用γ與β求得梯度從而改變訓練權值(變量)。 

3.通過不斷迭代直到訓練結束,求得關於不同層的γ與β。

4.不斷遍歷訓練集中的圖片,取出每個batch_size中的γ與β,最后統計每層BN的γ與β各自的和除以圖片數量得到平均直,並對其    做無偏估計直作為每一層的E[x]與Var[x]。 

5.在預測的正向傳播時,對測試數據求取γ與β,並使用該層的E[x]與Var[x],通過圖中11:所表示的公式計算BN層輸出。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM