您可能會感到驚訝,但這是有效的。
最近,我閱讀了arXiv平台上的Jonathan Frankle,David J. Schwab和Ari S. Morcos撰寫的論文“Training BatchNorm and Only BatchNorm: On the Expressive Power of Random Features in CNNs”。 這個主意立刻引起了我的注意。 到目前為止,我從未將批標准化(BN)層視為學習過程本身的一部分,僅是為了幫助深度網絡實現優化和提高穩定性。 經過幾次實驗,我發現我錯了。 在下文中,我將展示我復制的論文的結果以及從中學到的東西。
更詳細地講,我使用Tensorflow 2 Keras API成功復現了論文的主要實驗,得出了相似的結論。 也就是說,ResNets可以通過僅訓練批標准化層的gamma(γ)和beta(β)參數在CIFAR-10數據集中獲得不錯的結果。 從數字上講,我使用ResNet-50、101和152架構獲得了45%,52%和50%的Top-1精度,這遠非完美,但也並非無效。
在下文中,我概述了批標准化概念以及其常見解釋。 然后,我分享我使用的代碼以及從中獲得的結果。 最后,我對實驗結果進行評論,並對其進行分析。
批標准化 Batch Normalization
簡而言之,批標准化層估計其輸入的平均值(μ)和方差(σ²),並產生標准化的輸出,即平均值和單位方差為零的輸出。 在實驗中,此技術可顯着提高深度網絡的收斂性和穩定性。 此外,它使用兩個參數(γ和β)來調整和縮放其輸出。
x作為輸入,z作為輸出,z由以下公式給出:
圖1:批標准化表達式
根據輸入數據估算μ和σ²參數,而γ和β是可訓練的。 因此,反向傳播算法可以利用它們來優化網絡。
綜上所述,已經發現此操作可以顯着改善網絡訓練的速度以及其保留數據的性能。 而且,它沒有與其他網絡層不兼容的地方。 因此,大多數模型經常在所有Conv-ReLU操作之間頻繁使用它,形成“ Conv-BN-ReLU”三重奏(及其變體)。 然而,盡管這是最常出現的層之一,但其優勢背后的原因在文獻中卻有很多爭議。 下面三個主要的說法:
內部方差平移:簡單地說,如果輸出的均值和單位方差為零,則下一層會在穩定的輸入上訓練。 換句話說,它可以防止輸出變化太大。 這是最初的解釋,但后來的工作發現了相互矛盾的證據,否定了這一假設。 簡而言之,如果訓練VGG網絡(1)不使用BN,(2)使用BN和(3)使用BN加上人工協方差平移。盡管進行了人工協方差平移,方法(2)和(3)仍然優於(1) 。
輸出平滑化:BN被認為可以平滑化優化范圍,減少損失函數的變化量並限制其梯度。 較平滑的目標在訓練時預測效果會更好,並且不易出現問題。
長度方向解耦合:一些作者認為BN是針對優化問題的改進公式,因此可以擴展到更傳統的優化設置。 更詳細地說,BN框架允許獨立優化參數的長度和方向,從而改善收斂性。
總之,所有這三種解釋都集中在批標准化的標准化方面。 下面,我們將看一下由γ和β參數實現的BN的平移和縮放點。
完整文章請訪問 :https://imba.deephub.ai/p/af8e0630755211ea90cd05de3860c663
或關注公眾號查看