深度神經網路中的歸一化技術

2021-09-10 16:54:38 字數 3475 閱讀 3864

歸一化一直是深度學習研究的乙個活躍領域。歸一化技術可以大大減少機器學習模型的訓練時間。讓我們看看歸一化的一些好處。

它對每個特徵進行歸一化,以便它們保持每個特徵的貢獻,因為某些特徵具有比其他特徵更高的數值。通過這種方式,我們的網路可以不帶偏見(對於值很大的特徵)。

它減少了內部協變數shift。它是由於訓練過程中網路引數的變化而引起的網路啟用分布的變化。為了提高訓練質量,我們尋求減少內部協變shift

在**中(作者聲稱batch norm使損失表面更平滑(即它更嚴格地限制了梯度的大小)。

它使優化更快,因為歸一化不允許權重**並將它們限制在一定範圍內。

歸一化的乙個意想不到的好處是它有助於網路的正則化(只是輕微的,不是顯著的)。

從上面我們可以得出結論,正確歸一化可能是讓你的模型有效訓練的關鍵因素,但這並不像聽起來那麼容易。讓我先看一些問題。

歸一化層在分布式訓練中的表現如何呢?

您應該使用哪種歸一化技術來完成cnn,rnn,風格轉移等任務?

在訓練中更改資料集的批量大小時會發生什麼?

哪種歸一化技術是網路計算和準確性的最佳平衡呢?

為了回答這些問題,讓我們逐一深入研究每種歸一化技術的細節。

批歸一化是一種歸一化網路中確定大小的小批量啟用的方法。對於每個特徵,批歸一化計算小批量中該特徵的均值和方差。然後它減去均值並通過其小批量標準差來劃分特徵。

如果增加權重的大小能使網路表現得更好呢?

為了解決這個問題,我們可以分別新增γ和β作為scale和shift學習引數。這一切可以概括為:

ε是等式中的穩定常數

可變批量大小→如果批量大小為1,則方差將為0,這不允許batch norm工作。此外,如果我們的mini-batch小,那麼它會變得太嘈雜,而且訓練可能會影響。分布式訓練也會出現問題。因為,如果您在不同的機器中進行計算,那麼您必須採用相同的批量大小,否則對於不同的系統,γ和β將是不同的。

迴圈神經網路 →在rnn中,在rnn中,每個時間步的重複啟用將有不同的統計資料。這意味著我們必須為每乙個時間步設定乙個單獨的batch norm層。這使得機器學習模型更加複雜和占用空間,因為它迫使我們儲存訓練過程中每個時間步的統計資訊。

我們為什麼不直接對啟用進行歸一化,而對層的權重進行歸一化呢?權重歸一化確實是這樣。

權重歸一化將權重(ω)重新引數化為:

它將權重向量與其方向分開,這與具有方差的批歸一化具有類似的效果。唯一的區別在於變化而不是方向。

至於平均值,**的作者巧妙地將僅平均批歸一化和權重歸一化結合起來,即使在small mini-batches中也能獲得所需的輸出。這意味著他們減去了minibatch 的平均值,但沒有除以方差。最後,他們使用權重歸一化而不是除以方差。

注:由於大數定律,與方差相比,均值的雜訊較小(這使得均值優於方差)。

權重歸一化與僅平均批歸一化相結合,可在cifar-10上獲得最佳結果。

層歸一化對跨特徵的輸入進行歸一化,而不是在批歸一化中對跨batch維度的輸入特徵進行歸一化。

mini-batch包含具有相同數量特徵的多個示例。mini-batches是矩陣(或張量),其中乙個軸對應於批次,另乙個軸(或多個軸)對應於特徵尺寸。

i代表批次,j代表特徵。xᵢ,ⱼ是輸入資料的第i,第j個元素。

在rnn的情況下,層歸一化比批歸一化更好。

層歸一化和例項歸一化彼此非常相似,但它們之間的區別在於例項歸一化在每個訓練示例中的每個通道上歸一化,而不是在訓練示例中跨輸入特徵進行歸一化。與批歸一化不同,例項歸一化層也在測試時應用(由於mini-batch的非依賴性)。

在這裡,x ∈ℝt×c×w×h為輸入包含批次ť影象的張量。x ₜᵢⱼₖ表示第tijk個元素,其中k和j跨空間維度(影象的高度和寬度),i為特徵的通道(如果輸入是乙個rgb顏色通道影象),t是batch中影象的索引。

該技術最初設計用於風格轉移,例項歸一化試**決的問題是網路應該與原始影象的對比度無關。

顧名思義,組歸一化針對每個訓練樣例對通道組進行標準化。我們可以說,group norm介於instance norm和layer norm之間。

當我們將所有通道放入乙個組時,組歸一化將成為層歸一化。並且,當我們將每個通道放入不同的組時,它將成為例項歸一化。

sᵢ定義如下

這裡,x是由層計算的特徵,i是索引。在2d影象的情況下,i =(i n,i c,i h,i w)是以(n,c,h,w)順序索引特徵的4d向量,其中n是batch軸,c是通道軸,h和w是空間高度和寬度軸。g是組的數量,它是預定義的超引數。c / g是每組的通道數。⌊.⌋是floor操作,「 ⌊kc/(c / g)⌋=⌊ic/(c / g)⌋ 」表示索引i和k假設每組通道沿c軸按順序儲存,則它們位於同一組通道中。gn計算沿(h,w)軸和沿著一組c / g通道的μ和σ。

例項歸一化的問題在於它完全刪除了樣式資訊。雖然,這有其自身的優點(例如在風格轉移中),但在對比度很重要的條件下(如天氣分類,天空的亮度很重要)可能會出現問題。batch-instance歸一化試圖通過了解應該為每個通道(c)使用多少樣式資訊來處理這種情況。

batch-instance歸一化只是批歸一化和例項歸一化之間的插值。

ρ的值在0和1之間

batch-instance歸一化的有趣方面是通過梯度下降來學習平衡引數ρ。

從batch-instance歸一化,我們可以得出結論,模型可以學習使用梯度下降自適應地使用不同的歸一化方法。

答案是肯定的。

可切換歸一化方法從批歸一化、例項歸一化和層歸一化出發,採用不同均值和方差統計量的加權平均。

在影象分類和物件檢測等任務中,切換歸一化可能優於批歸一化。

例項歸一化在較早的層中更常使用,中間優選批歸一化,最後更常使用層歸一化。batch sizes越小,就越傾向於層歸一化和例項歸一化。

神經網路要做歸一化的原因

見到乙個有意思的討論,在此複述。無容置疑,歸一化的確可以避免一些不必要的數值問題。輸入變數的數量級未致於會引起數值問題,因為tansig的非線性區間大約在 1.7,1.7 意味著要使神經元有效,tansig w1x1 w2x2 b 裡的 w1x1 w2x2 b 數量級應該在 1 1.7所在的數量級 ...

神經網路為什麼要歸一化

神經網路為什麼要歸一化 1.數值問題。無容置疑,歸一化的確可以避免一些不必要的數值問題。輸入變數的數量級未致於會引起數值問題吧,但其實要引起也並不是那麼困難。因為tansig的非線性區間大約在 1.7,1.7 意味著要使神經元有效,tansig w1 x1 w2 x2 b 裡的 w1 x1 w2 x...

神經網路為什麼要歸一化

這裡是分割線 1.數值問題。無容置疑,歸一化的確可以避免一些不必要的數值問題。輸入變數的數量級未致於會引起數值問題吧,但其實要引起也並不是那麼困難。因為tansig的非線性區間大約在 1.7,1.7 意味著要使神經元有效,tansig w1 x1 w2 x2 b 裡的 w1 x1 w2 x2 b 數...