什麼是Batch Normalization
Batch Normalization就是對資料進行批次規範化,使得其成為均值為0,方差為1的分佈。當然整體資料的期望和方差是難以獲得的,在實際使用中,用Batch資料的均值和方差替代,這就要求Batch Size不能太小,否則與整體資料的期望和方差就可能有較大偏差。
但是如果僅僅進行歸一化操作,會降低整個網路的Capity,所以引入"Scale And Shift"操作增強網路的表達能力。舉個例子,當啟用函式採用的是sigmoid函式並且當輸入資料滿足均值為0,單位方差的分佈時,由於sigmoid函式的曲線特性,在0附近的範圍內,整個sigmoid曲線接近線性,激勵函式的非線性特性就得不到體現,這樣整個網路的表達能力會降低,
首先說說ICS(Internal Covariate Shift),在統計機器學習中有一個經典假設,要求源空間和目標空間的資料分佈是一致的。對於深度神經網路而言,深度神經網路涉及到很多層的疊加,而每一層的引數更新會導致上層的輸入資料分佈發生變化,透過層層疊加,高層的輸入分佈變化會非常劇烈,這就使得高層需要不斷去重新適應底層的引數更新,使得訓練收斂速度緩慢。為了訓好模型,我們需要非常謹慎地去設定學習率、初始化權重、以及儘可能細緻的引數更新策略。
透過對每層資料做Batch Normalization,則可以降低對初始化權重,學習率等的依賴,加快神經網路的收斂速度。
當神經網路訓練時遇到收斂速度很慢,或者梯度彌散無法訓練時,都可以嘗試用BN來解決。
什麼是Batch Normalization
Batch Normalization就是對資料進行批次規範化,使得其成為均值為0,方差為1的分佈。當然整體資料的期望和方差是難以獲得的,在實際使用中,用Batch資料的均值和方差替代,這就要求Batch Size不能太小,否則與整體資料的期望和方差就可能有較大偏差。
但是如果僅僅進行歸一化操作,會降低整個網路的Capity,所以引入"Scale And Shift"操作增強網路的表達能力。舉個例子,當啟用函式採用的是sigmoid函式並且當輸入資料滿足均值為0,單位方差的分佈時,由於sigmoid函式的曲線特性,在0附近的範圍內,整個sigmoid曲線接近線性,激勵函式的非線性特性就得不到體現,這樣整個網路的表達能力會降低,
為什麼Batch Normalization可以獲得不錯的效果首先說說ICS(Internal Covariate Shift),在統計機器學習中有一個經典假設,要求源空間和目標空間的資料分佈是一致的。對於深度神經網路而言,深度神經網路涉及到很多層的疊加,而每一層的引數更新會導致上層的輸入資料分佈發生變化,透過層層疊加,高層的輸入分佈變化會非常劇烈,這就使得高層需要不斷去重新適應底層的引數更新,使得訓練收斂速度緩慢。為了訓好模型,我們需要非常謹慎地去設定學習率、初始化權重、以及儘可能細緻的引數更新策略。
透過對每層資料做Batch Normalization,則可以降低對初始化權重,學習率等的依賴,加快神經網路的收斂速度。
什麼時候可以用BN當神經網路訓練時遇到收斂速度很慢,或者梯度彌散無法訓練時,都可以嘗試用BN來解決。