批標準化處理,批:指一批資料,通常為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 ...
深度學習中的正則化 一
一般來說,深度學習所要做的事情是用已有的訓練集訓練乙個網路模型,然後針對新的資料給出 我們期望我們的模型在訓練集和測試集上都有良好的表現,但是有的時候兩者不可兼得。一種情況是在訓練集上表現很好,在測試集上表現不好或表現一般 另一種情況是在訓練集上表現不好或表現一般,在測試集上表現很好。相比較而言我們...