BN與LN的區別
RNN是可以用BN的,只需要讓每個Batch的長度相等,可以通過對每個序列做補長,截斷來實現。RNN不適合用BN的原因:Normalize的對象(position)來自不同分布。CNN中使用BN,對一個batch內的每個channel做標準化。多個訓練圖像的同一個channel,大概率來自相似的分布。(例如樹的圖,起始的3個channel是3個顏色通道,都會有相似的樹形狀和顏色深度)RNN中使用BN,對一個batch內的每個position做標準化。多個sequence的同一個position,很難說來自相似的分布。(例如都是影評,但可以使用各種句式,同一個位置出現的詞很難服從相似分布)所以RNN中BN很難學到合適的μ和σ,將來自不同分布的特征做正確變換,甚至帶來反作用,所以效果不好。

BN是不適用于RNN這種動態結構的。如果將BN應用在RNN中,由于BN是以batch為單位統計歸一化變量的,所以不同長度的樣本的時間片如何計算將十分困難。在BN中我們需要根據訓練數據保存兩個統計量 μ和σ,如果在測試時一組樣本的長度大于訓練的所有樣本,那么它的后面的時間片需要的μ和σ該怎么辦?
LN是按與x軸平行的方向做歸一化(即[C,T]),這個被證明是在RNN中表現比較好的一種歸一化方法,因為在每個時間片都會獲得相同的數量(通道數)個數值的歸一化統計量。LN中不同時間片的μ和σ是共享的。
batch是“豎”著來的,各個維度做歸一化,所以與batch size有關系。
layer是“橫”著來的,對一個樣本,不同的神經元neuron間做歸一化。
Batch Normalization 的處理對象是對一批樣本, Layer Normalization 的處理對象是單個樣本。
Batch Normalization 是對這批樣本的同一維度特征(每個神經元)做歸一化, Layer Normalization 是對這單個樣本的所有維度特征做歸一化。
機器學習 神經網絡
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。