深度學習中的正則化處理Normalization

2021-10-23 22:14:23 字數 1595 閱讀 6644

批標準化處理,批:指一批資料,通常為mini-batch;標準化:0均值,1方差。

其中,normalize步驟中ϵ

\epsilon

ϵ為修正項,為了防止分母為零的情況出現。處理後x

^\hat

x^即為0均值1方差,但bn演算法仍未結束,最後還需要進行一步affine transform,即γxi

^+

β\gamma\hat+\beta

γxi​^​

+β其中γ

\gamma

γ與β\beta

β稱為scale與shift,這兩個引數是可學習的,可通過反向傳播改變。

pytorch中的batch normalization實現

以下三個方法具體的實現都繼承於_batchnorm

主要屬性:

均值和方差根據訓練與測試的不同,擁有不同的計算式。

在訓練時:不止考慮當前時刻,還會考慮之前的結果,計算式如下:

m ea

nrun

ning

=(1−

mome

ntum

)∗me

anpr

e+mo

ment

urm∗

mean

tvar

runn

ing=

(1−m

omen

tum)

∗var

pre+

mome

ntum

∗var

tmean_ = (1 - momentum) * mean_ + momenturm * mean_t\\ var_ = (1 - momentum) * var_ + momentum * var_t

meanru

nnin

g​=(

1−mo

ment

um)∗

mean

pre​

+mom

entu

rm∗m

eant

​var

runn

ing​

=(1−

mome

ntum

)∗va

rpre

​+mo

ment

um∗v

art​

除bn之外,還有ln,in,gn等normaliazation方法,與bn的區別僅僅是均值和方差的計算方式不同。

起因:bn不適用於變長的網路,如rnn

思路:逐層計算均值和方差

起因:bn在影象生成(image generation)中不適用

思路:逐instance(channel)計算均值和方差

起因:小batch樣本中,bn估計的值不准

思路:資料不夠,通道來湊

應用場景:大模型(小batch size)任務

注意:由於資料尺度變化,測試時,所有權重乘以1-p

注意:在pytorch中為了測試更加方便,在訓練時權重已經預先乘以11−

p\frac

1−p1

​,故如果使用pytorch中的nn.dropout,則測試時,不需要再乘上(1-p)

深度學習中的正則化

任何可以使學習演算法有降低泛化誤差意向的改動都是正則化。乙個有效的正則化就是能顯著地降低方差而不過度增加偏差。最好的擬合模型總是乙個適當正則化的大型模型!資料增強是一種便宜且簡單的方法來增加你訓練資料的數量的方法。上面資料增強已經提到,向輸入中注入方差極小的雜訊等價於對權重施加範數懲罰,一般情況下,...

十二 機器學習 偏差和方差以及正則化處理

在構建完成神經網路後,我們會對資料進行處理,使得演算法在合理的時間進行訓練。但是如何在驗證和訓練資料集的過程中做出決策,以及訓練過程中的偏差和方差,和如何處理這些問題而出現的正則化處理。1 訓練 開發 測試集 2 偏差和方差 3 正則化 d w l 反 向傳播的 計算結果 djd w l dw l ...

深度學習中的正則化 一

一般來說,深度學習所要做的事情是用已有的訓練集訓練乙個網路模型,然後針對新的資料給出 我們期望我們的模型在訓練集和測試集上都有良好的表現,但是有的時候兩者不可兼得。一種情況是在訓練集上表現很好,在測試集上表現不好或表現一般 另一種情況是在訓練集上表現不好或表現一般,在測試集上表現很好。相比較而言我們...