歸一化通常用於解決神經網路中梯度爆炸或消失的問題。它透過將特徵的值映射到[0,1]範圍內來工作,使得所有值都處於相同的比例或分佈中。簡單來說,歸一化規範了神經網路的輸入並提高了訓練速度。
歸一化的兩種型別
主要有兩種類型的歸一化技術,分別是:
批次歸一化(Batch Normalization)
#為了獲得隱藏層的輸出,我們通常會使用非線性激活函數對輸入進行處理。而對於每個特定層中的神經元,我們可以對其進行預激活,使其具有零均值和單位標準差。這可以透過對小批量輸入特徵進行平均值減法和標準差除法來實現。
然而,將所有預激活強制為零並且所有批次的單位標準差可能過於嚴格,因此引入一定的波動分佈可以更好地幫助網路學習。
為了解決這個問題,批量歸一化引入了兩個參數:比例因子gamma(γ)和偏移量beta(β),兩者均為可學習的參數。
在批次歸一化中,我們需要注意使用批次統計。當批量較小時,樣本平均值和標準差不足以代表實際分佈,這會導致網路無法學到有意義的東西。因此,我們需要確保批量大小足夠大,以獲取更準確的統計信息,從而提高模型的性能和學習效果。
層歸一化(Layer Normalization)
層歸一化是由研究者Jimmy Lei Ba、Jamie Ryan Kiros和Geoffrey E.Hinton提出的方法。該方法的核心思想是在特定層中的所有神經元上,對於給定輸入的所有特徵,都具有相同的分佈。
與批歸一化不同,層歸一化是在每個樣本的特徵維度上進行歸一化操作。它透過計算每個神經元在輸入特徵上的平均值和方差,來對該層的輸出進行歸一化。這種方法可以幫助模型對資料的小批量進行適應,並提高模型的泛化能力。
層歸一化的優點在於,它不依賴批次
對所有特徵進行歸一化,但對特定層的每個輸入進行歸一化,消除了對批次的依賴。這使得層歸一化非常適合序列模型,例如流行的Transformer和遞歸神經網路(RNN)。
批量歸一化和層歸一化的主要區別
1.批量歸一化在小批量中獨立地歸一化每個特徵。層歸一化跨所有特徵獨立歸一化批次中的每個輸入。
2.由於批量歸一化取決於批量大小,因此它對小批量無效。層歸一化與批量大小無關,因此它也可以應用於較小尺寸的批量。
3.批量歸一化需要在訓練和推理時進行不同的處理。由於層歸一化是沿著特定層的輸入長度完成的,因此可以在訓練和推理時間使用同一組操作。
以上是批歸一化與層歸一化的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!