SGD訓練時收斂速度的變化研究。


一個典型的SGD過程中,一個epoch內的一批樣本的平均梯度與梯度方差,在下圖中得到了展示。

無論什么樣的網絡結構,無論是哪一層網絡的梯度,大體上都遵循下面這樣的規律:

高信號/噪音比一段時間之后,信號/噪音比逐漸降低,收斂速度減緩,梯度的方差增大,梯度均值減小。

 

噪音增加的作用及其必要性會在另一篇文章中闡述,這里僅討論噪音的產生對於模型收斂速度能夠產生怎樣的影響。

首先定義模型收斂速度:訓練后期,噪音梯度導致權重更新時,導致系統新增的熵 H(混亂度)對於SGD迭代次數 t 的導數。

對於第k層的權重的梯度,每一輪(時間t)更新:

\[\frac{\partial {{\mathbf{W}}^{\left( k \right)}}}{\partial t}=-\nabla \operatorname{E}({{\mathbf{W}}^{\left( k \right)}})+\beta _{\left( k \right)}^{-1}\xi \left( t \right)\]

其中E是全局損失函數, $\beta $是信號/噪音比,$\xi $是高斯白噪音, $P\left( \xi \left( t \right) \right)=Norm\left( 0,\sigma \left( t \right) \right)$ ,方差$\sigma \left( t \right)$隨着時間增加而變大。

 

因為使用高噪音進行梯度下降更新權重W時引進了額外的熵,考慮熵的變化$\Delta H({{\mathbf{W}}^{(k)}})$ 

假設將損失函數E分割成非常多個小區間,問題轉化為:$\Delta H({{\mathbf{W}}^{(k)}})\text{=}\Delta H({{\text{E}}_{1}}({{\mathbf{W}}^{(k)}}),{{\text{E}}_{2}}({{\mathbf{W}}^{(k)}})......{{\text{E}}_{N}}({{\mathbf{W}}^{(k)}}))$ 

已知$\operatorname{H}\left( E \right)=-\underset{\text{i}}{\mathop{\sum }}\,p\left( {{\text{E}}_{\text{i}}} \right)\log p\left( {{\text{E}}_{\text{i}}} \right)$

\[\frac{\partial \operatorname{H}}{\partial p}=-\left( \sum\limits_{\text{i}}{\log \left( p\left( {{E}_{i}} \right) \right)+1} \right)\]

又已知系統達到熱平衡后,使熵最大的p(W)分布是玻爾茲曼分布(參見Boltzmann與最大熵的關聯文章

${{p}_{E={{E}_{i}}}}\left( \mathbf{W} \right)=\frac{1}{\text{Z}}{{\text{e}}^{-\beta {{E}_{i}}\left( \mathbf{W} \right)}}$ ,Z是配分函數partition function $Z=\sum\limits_{E'}{{{e}^{-\beta E'(\mathbf{W})}}}$

考慮熱平衡附近時,p怎樣隨着E改變:

\[\frac{\partial p}{\partial E}=\frac{\partial }{\partial {{E}_{\text{i}}}}\left( {{{e}^{-\beta {{E}_{i}}}}}/{\left( {{e}^{-\beta {{E}_{i}}}}+\sum\nolimits_{k\ne i}{{{e}^{-\beta {{E}_{k}}}}} \right)}\; \right)=-\beta p(1-p)\]

 

使用鏈式法則得到:

$\frac{\partial \text{H}}{\partial t}=\sum\limits_{i}{\frac{\partial \text{H}}{\partial {{p}_{i}}}\frac{\partial {{p}_{i}}}{\partial {{\text{E}}_{i}}}\frac{\partial {{\text{E}}_{i}}}{\partial \mathbf{W}}\frac{\partial \mathbf{W}}{\partial t}}$ 

訓練到接近收斂時,盡管每次更新權重時計算的loss的白噪音會越來越大,但全局loss E會穩定得多,並且逐漸下降到一個比較小的區間內,所以只考慮該區間內對應的$\Delta \text{H}$以及$\Delta \text{t}$,帶入前面求出的偏導得到:

\[\frac{\partial H}{\partial t}=\sum\limits_{\text{i}}{\left( \log \left( {{p}_{\text{i}}} \right)+1 \right)\beta {{p}_{i}}(1-{{p}_{i}})\nabla {{E}_{i}}(\mathbf{W})(-\nabla {{E}_{i}}(\mathbf{W})+\beta _{(k)}^{-1}\xi (t))}\]

 噪音項在求期望時被平均成0,同時使用泰勒級數在p=1附近展開ln(p) :$\ln (p)=(p-1)-\frac{1}{2}{{(p-1)}^{2}}+\frac{1}{3}{{(p-1)}^{3}}-......$ 

可推出

$(\log (p)+1)(1-p)=-p\log p+1-p+\log p\approx -p\log p+1-p+(p-1)-\frac{1}{2}{{(p-1)}^{2}}=-p\log p-\frac{1}{2}{{(p-1)}^{2}}$ 

當p_i接近1時,忽略二次項,得到熵H,既 -plogp

繼續帶入可得(注意beta后面是預期值符號,不是損失函數E)

\[\frac{\partial H}{\partial t}\approx \beta \sum\limits_{\text{i}}{-{{p}_{i}}{{\left( \nabla {{E}_{i}}(\mathbf{W}) \right)}^{2}}}H=-\beta \operatorname{E}\left[ {{\left( \nabla E(\mathbf{W}) \right)}^{2}} \right]H\]

 這里看出當訓練時在全局loss逐漸收斂到一個小區間E_i內,p_i趨近於1,這時候熵的該變量與訓練迭代次數滿足上述微分方程。

解微分方程得到:

$H=H_{0}\exp\left(-\beta\mathbb{E}\left[(\nabla E(W))^{2}\right])t\right)$

該方程只在全局loss相對穩定之后成立,此時SGD噪音帶來的熵隨訓練時間的增加而指數減少。

半衰期之前一直被當做常量來看待,但其實半衰期隨着全局梯度平方的預期值的減小,會逐漸增大。

也就是說要從噪音里引入固定量的熵,所消耗的時間(迭代輪數)會越來越多,甚至比普通的指數衰減花費更多的時間。

 

 

第k層權重更新噪音引入的熵 會以 給定下一層特征層時輸入數據X的熵 的形式展現。

\[\Delta H(\delta {{\mathbf{W}}^{(k)}})=\Delta H(X|{{T}^{(k+1)}})\]

 噪音引入的熵的作用,會在下面幾篇介紹信息瓶頸理論的文章里詳細闡述。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM