梯度的衰减是有连续乘法导致的,如果在连续乘法中出现一个非常大的值,最后计算出的梯度就会很大,就想当优化到断崖处是,会获得一个很大的梯度值,如果以这个梯度值进行更新,那么这次迭代的步长就很大,可能会一下子飞出了合理的区域。
解决的方法是:
梯度裁剪:
把沿梯度下降方向的步长限制在一个范围之内,计算出来的梯度的步长的范数大于这个阈值的话,就以这个范数为基准做归一化,使这个新的的梯度的范数等于这个阈值就行了。
梯度检查:
梯度计算很不稳定,使用梯度检查来检查梯度计算是否出了错误。
通过解析的梯度值与计算得到的梯度值进行对比计算相对误差,如果这个误差小于一个很小的下限值,那么就没什么问题。
原文地址:https://www.cnblogs.com/pacino12134/p/11110304.html
时间: 2024-10-09 13:17:51