梯度的衰減是有連續乘法導致的,如果在連續乘法中出現一個非常大的值,最后計算出的梯度就會很大,就想當優化到斷崖處是,會獲得一個很大的梯度值,如果以這個梯度值進行更新,那么這次迭代的步長就很大,可能會一下子飛出了合理的區域。
解決的方法是:
梯度裁剪:
把沿梯度下降方向的步長限制在一個范圍之內,計算出來的梯度的步長的范數大於這個閾值的話,就以這個范數為基准做歸一化,使這個新的的梯度的范數等於這個閾值就行了。
梯度檢查:
梯度計算很不穩定,使用梯度檢查來檢查梯度計算是否出了錯誤。
通過解析的梯度值與計算得到的梯度值進行對比計算相對誤差,如果這個誤差小於一個很小的下限值,那么就沒什么問題。
