深度學習之Batch歸一化

2022-07-16 00:48:10 字數 1255 閱讀 9189

前言

batch歸一化

在神經網路中,我們常常會遇到梯度消失的情況,比如下圖中的sigmod啟用函式,當離零點很遠時,梯度基本為0。為了

解決這個問題,我們可以採用batch歸一化。

通過bn法,我們將每層的啟用值都進行歸一化,將它們拉到均值為0、方差為1的區域,這樣大部分資料都從梯度趨於0變

換到中間梯度較大的區域,如上圖中紅線所示,從而解決梯度消失的問題。但是做完歸一化後,函式近似於乙個線性函式,多

層網路相當於一層,這不是我們想要的效果,故又加入了兩個引數γ、β,整體步驟如下所示:

引數的加入固然可以解決問題,但是如何求解引數又增加了任務量。求法很簡單,和求wx+b中的w、b引數一樣,不斷

迭代減去代價函式對於υ、β的倒數。

此演算法的優勢:

(1) 可以使用更高的學習率。如果每層的scale不一致,實際上每層需要的學習率是不一樣的,同一層不同維度的scale往往也需

要不同大小的學習率,通常需要使用最小的那個學習率才能保證損失函式有效下降,batch normalization將每層、每維的scale

保持一致,那麼我們就可以直接使用較高的學習率進行優化。

(2) 移除或使用較低的dropout。 dropout是常用的防止overfitting的方法,而導致overfit的位置往往在資料邊界處,如果初始化權重

就已經落在資料內部,overfit現象就可以得到一定的緩解。**中最後的模型分別使用10%、5%和0%的dropout訓練模型,與之前

的40%-50%相比,可以大大提高訓練速度。

(3) 降低l2權重衰減係數。 還是一樣的問題,邊界處的區域性最優往往有幾維的權重(斜率)較大,使用l2衰減可以緩解這一問題,

現在用了batch normalization,就可以把這個值降低了,**中降低為原來的5倍。

(4) 取消local response normalization層。 由於使用了一種normalization,再使用lrn就顯得沒那麼必要了。而且lrn實際上

也沒那麼work。

(5) 減少影象扭曲的使用。 由於現在訓練epoch數降低,所以要對輸入資料少做一些扭曲,讓神經網路多看看真實的資料。

機器學習之 歸一化

之前我們討論了幾個機器學習的模型,線性回歸模型 linear regression 和邏輯回歸模型 logistic regression 這一次我們討論一下關於模型資料擬合的問題以及歸一化方法 regularization 過擬合問題 the problem of overfitting 如果我們...

機器學習補漏之歸一化

1.只能在訓練集當中,然後應用到測試集上面。不能兩部分一起歸一化,也不能各自用自己資料歸一化。因為我們預設兩部分都有足夠的資料,並且資料分布相同。當然最重要的是,測試集是不可以偷看的,更不要說計算這些統計資料。sklearn.preprocessing.standardscaler方便把訓練集上面的...

機器學習之資料歸一化

機器學習中,資料歸一化是非常重要,如果不進行資料歸一化,可能會導致模型壞掉或者訓練出乙個奇怪的模型。現在有乙個訓練資料集,包含兩個樣本,內容如下 腫瘤大小 cm 發現時間 day 樣本11 200樣本2 5100 以 k 近鄰演算法為例,發現時間 的數值比 腫瘤大小 的數值大很多,樣本間的距離被 發...