如何理解歸一化(Normalization)對於神經網路(深度學習)的幫助?

時間 2021-05-11 11:17:35

1樓:

對神經網路的輸入進行歸一化,對每一層的歸一化(Batch Normalization、Layer Normalization),對權重的歸一化(Weight Normalization)都有效的提公升了神經網路的表現。

BatchNorm

BatchNorm是對一批樣本進行處理, 對一批樣本的每個特徵分別進行歸一化,舉個簡單的例子,加入我有一批樣本, 每個樣本有三個特徵,,分別是身高,體重,年齡,那麼我做歸一化的時候,就是對體重做歸一化,對身高做歸一化,對年齡做歸一化,三者之間不會有交叉影響。

這個看起來很符合直觀的感覺,可以看做是降低每個特徵量綱的影響,我們也經常會在CTR等深度模型的MLP部分見到BatchNorm操作。

也正因為如此,

所以BatchNorm會受到Batch size的影響;

當Batchsize小的時候效果往往不是非常穩定.

LayerNorm

LayerNorm是對乙個樣本進行處理, 對乙個樣本的所有特徵進行歸一化,乍一看很沒有道理,因為如果對身高體重和年齡一起求乙個均值方差,都不知道這些值有什麼含義,但存在一些場景卻非常有效果--NLP領域。

在NLP中,N個特徵都可能表示不同的詞,這個時候我們仍然採用BatchNorm的話,對第乙個詞進行操作,很顯然意義就不是非常大了,因為任何乙個詞都可以放在第乙個位置,而且很多時候詞序對於我們對於句子的影響沒那麼大,而此時我們對N個詞進行Norm等操作可以很好地反映句子的分布。(LN一般用在第三維度,[batchsize, seq_len,dims]),因為該維度特徵的量綱是相同的,所以並沒有太多區別。

特徵Embedding上加入Normalization是否有效?

從上面的實驗中,我們發現,在特徵Embedding層加入Normalization都是有效的,而且LayerNorm以及相關的變種是效果相對穩定以及最好的;

從上面的實驗中,我們發現,在MLP層加入Normalization都是有效的,但是具體選用哪種Normalization需要依據不同的任務進行選擇;

從上面的實驗中,我們發現,在MLP層以及特徵Embedding層都加入Normalization都是比單個加入都有效的,在MLP側加入VO-LN的Normalization往往能取得更好的效果;

從上面的實驗中,我們發現,對數值的EMbedding使用LayerNorm相關的效果更好,對數值特徵使用LayerNorm相關的正則化方法,在MLP處使用VO-LN往往可以取得最好的效果.

出乎意料,在三個資料集上,我們只需要對不同層做Normalization的處理就可以取得比DeepFM,xDeepFM更好的效果;

NormDNN: Numerical Embedding用LayerNorm相關的處理; Categorical Feature使用BatchNorm相關的處理; 在MLP部分使用VO-LN

我們把初始化的方案應用到更加複雜的網路結構上也都取得了更好的效果;也就是說這種Normalization的方案可以擴充到其他的所有最新網路結構上

2樓:佳雨

前面各位大佬理論上講得很細了,我這裡就說簡單點,給出乙個較為全域性的認識。

其實深度學習裡的正則化方法就是 通過把一部分不重要的複雜資訊損失掉,以此來降低擬合難度以及過擬合的風險,從而加速了模型的收斂 。Normalization目的就是讓分布穩定下來(降低各維度資料的方差)。

不同正則化方法的區別只是操作的資訊維度不同,即選擇損失資訊的維度不同。

在CV中常常使用BN,它是在NHW維度進行了歸一化,而Channel維度的資訊原封不動,因為可以認為在CV應用場景中,資料在不同channel中的資訊很重要,如果對其進行歸一化將會損失不同channel的差異資訊。

而NLP中不同batch樣本的資訊關聯性不大,而且由於不同的句子長度不同,強行歸一化會損失不同樣本間的差異資訊,所以就沒在batch維度進行歸一化,而是選擇LN,只考慮的句子內部維度的歸一化。 可以認為NLP應用場景中乙個樣本內部維度間是有關聯的,所以在資訊歸一化時,對樣本內部差異資訊進行一些損失,反而能降低方差。

選擇什麼樣的歸一化方式,取決於你關注資料的哪部分資訊。如果某個維度資訊的差異性很重要,需要被擬合,那就別在那個維度進行歸一化。

這些歸一化手段是否有基於一些共同的想法?歸一化手段為什麼能對神經網路的訓練和表現帶來幫助?看了這個回答,應該有些感覺了吧哈哈

過擬合其實就是擬合了資料過於複雜的細節,正則化方法是讓模型不去擬合這些資料細節。無論是通過消除這些影響泛化的差異資訊,還是通過讓模型引數變得更簡單,根本出發點都是一樣的。

3樓:小蓮子

以下摘自我的另乙個回答,小蓮子:碎碎念:Transformer的細枝末節。原本是介紹 Layer Normalization 的。

所有的規範化技術,都可以概括為如下的公式:

對於隱層中某個節點的輸出為對啟用值 進行非線性變換 後的,先使用均值 和方差 對 進行分布調整。如果將其理解成正態分佈,就是把「高瘦」和「矮胖」的都調整回正常體型(深粉色),把偏離x=0的拉回中間來(淡紫色)。

不同均值和方差下的正態分佈 | sigmoid函式

這樣做的第乙個好處(平移)是,可以讓啟用值落入 的梯度敏感區間(紅色虛線的中間段)。梯度更新幅度變大,模型訓練加快第二個好處是,可以將每一次迭代的資料調整為相同分布(相當於「白化」),消除極端值,提公升訓練穩定性

然而,在梯度敏感區,隱層的輸出接近於「線性」,模型表達能力會大幅度下降。引入 gain 因子 和 bias 因子 ,為規範化後的分布再加入一點「個性」。需要注意的是, 和 作為模型引數訓練得到, 和 在限定的資料範圍內統計得到

BN 和 LN 的差別就在這裡,前者在某乙個 Batch 內統計某特定神經元節點的輸出分布(跨樣本),後者在某一次迭代更新中統計同一層內的所有神經元節點的輸出分布(同一樣本下)。盜用一張 @gylight 的圖:

4樓:趙英俊

舉個不是特別恰當但是能說明問題的例子,起起伏伏的路肯定沒有平坦的跑起來舒服,速度也會更慢,如果是有懸崖的登山之路一不小心就會摔死。訓練神經網路模型是類似的,歸一化了就相當於修了乙個高速公路,把高速不平的路給壓平。

5樓:

Batch Normalizing是深度學習中最重要的技巧之一。是由Sergey Ioffe和Christian Szeged建立的。Batch Normalizing使超引數的搜尋更加快速便捷,也使得神經網路魯棒性更好。

這裡有乙個非常簡單但很容易理解的文章。

深度學習技巧之Batch Normalizing一般來說,在訓練類似邏輯回歸或者深度學習的演算法的時候,我們需要對輸入資料進行標準化,這樣可以保證輸入的資料均值為0,且輸入資料都在一定範圍內,這樣做主要原因是非標準化的資料優化的時候目標函式是乙個扁平的結果,會影響學習的速度,而標準化之後的目標函式是接近圓形的結果,對於梯度下降求解來說能顯著加快找到最優值的速度。

既然如此,那麼對於深度神經網路來說,我們是否可以對每一層的輸出也做乙個標準化,作為下一層的輸入以此來加快求解速度呢?答案是可以的,這就是Batch Normalizing。

化學中用的 歸一化 (normalisation)是什麼概念?它的規則和技巧又有哪些?

清華大學洗剪吹專 波函式的平方是在某時刻這一點出現的概率,積分後是出現在整個空間的概率.這個粒子總得找個地方呆吧?所以它出現在整個空間的概率是百分百滴QAQ John 補充一點 歸一化的應用意義。理論上說,任何自洽的概率密度函式都應該自動的保證總概率為1,所以歸一化是計算概率密度函式的乙個步驟。那為...

如何看待松鼠ai最近更新的歸一化產品?

武漢古田校區張凱 市面上的課程大多是按照年級來安排的,歸一化課程回歸到了知識點本身,從知識點之間的關聯性出發,橫向延伸,幫助學生構建學科知識框架,同時也能夠更精準地尋找知識漏洞,繼而針對性解決問題! 我又來了!歸一化的 水軍 產品做得真不怎麼樣。一群連是啥都不知道的人,就開始說 哦,雖然不知道是什麼...

blinn phong的歸一化係數是怎麼計算出來的?

張三三 首先,說明一下,對BRDF進行歸一化的原因是為了保證渲染出來的效果更加符合實際情況。這個在 Real Time Rendering 3rd 這本書 P254頁 裡面是講的很清楚的。從圖中 截至RTR3 可以看到,第一排的球使用非歸一化的Phong BRDF來渲染的,隨著光滑程度的提高,他的高...