处理消失梯度问题的具体步骤是什么?

人工智能 神经网络 机器学习 反向传播 数据集 梯度下降
2021-10-27 11:30:02

我正在训练 ANN 用于 3 个类之间的分类。ANN 有一个输入层、一个隐藏层和一个 3 节点输出层。

我面临的问题是 3 个输出节点产生的输出非常接近 1(至少在前几次迭代中,所以我假设问题也会传播到未来的输出)权重没有更新(或几乎没有更新)由于溢出(大约1011)。我可以解决溢出问题(但我不认为这是罪魁祸首)。我认为如此低的误差值是罪魁祸首,我无法弄清楚是什么导致了如此低的误差值。

什么会导致网络响应更快,也就是说,我将如何真正掌握权重更新,而不是按顺序1011?

数据集包含按顺序排列的值10's,随机初始化的权重依次为0<w<1. 我已经尝试过特征规范化,但它不是那么有效。

1个回答

梯度消失问题没有单一的答案。但是,有一些事情可以提供帮助。

正如评论中提到的,使用整流线性单元 (ReLU) 作为激活函数会有所帮助,因为它不会因大型神经元输入而饱和。

接下来,仔细选择权重初始化也有助于避免饱和。有关详细信息,请参阅 Andre Ng 的Coursera 视频

最后,如果您担心训练输入的规模会导致训练出现问题,您可以通过减去均值并除以标准差来标准化训练示例。这里有一个正态假设,但这通常可以帮助避免一个特征与另一个特征远超出规模的问题。然而,这通常会导致优化在细长槽壁之间弹跳的问题,这会使收敛复杂化,但不会导致梯度消失。