深度友好的梯度下降策略
在深度学习中,梯度下降是一种常用的优化算法,但传统的最速下降方向在处理较大步长时可能会使目标函数恶化,导致需要多次修正方向。本文将介绍几种在这种情况下表现良好的学习策略。
1. 预处理和初始化的重要性
预处理和初始化策略对于避免梯度下降过程中的病态条件非常重要。一般来说,当不同层的激活值大小稳定时,各层的梯度也会更稳定。可以通过以下预处理和归一化方法来实现稳定性:
- 特征归一化的重要性 :当某些特征的方差远大于其他特征时,会导致某些权重对损失函数的影响远大于其他权重,从而使损失函数对不同权重的敏感性不同,引发锯齿状的更新行为。常见的做法是使用标准化,使所有输入的方差相等。白化处理还可以去除特征之间的相关性,将权重的相关移动合并为更少的非冗余权重。特征中心化也有帮助,它使不同输入特征值具有不同的符号,确保从输入层指向同一神经元的所有权重不会被限制在同一方向移动,从而避免锯齿状更新。
- 初始化的重要性 :深度网络中的不良初始化可能会加剧梯度消失和梯度爆炸问题。某些初始化权重可能在一开始就使这些问题恶化,导致梯度下降难以恢复。一种常见的初始化方法是将连接到节点的初始化权重设置为与该节点的扇入(fan - in)的平方根的倒数成正比,即从均值为 0、标准差为 $1/\sqrt{r_{in}}$ 的正态分布中采样。但这种初始化方法没有考虑节点的扇出(fan - out)对后续层激活值大小的影响。Xavier 初始化或 Glorot 初始化使用均值为 0、标准差为 $\sqrt{2/(r_{in} + r_{out})}$ 的正态分布,其中 $r_{in}$ 是扇入,$r_{out}$ 是
超级会员免费看
订阅专栏 解锁全文
5899

被折叠的 条评论
为什么被折叠?



