神经网络不收敛的原因

没有对数据进行归一化处理

原因
这是由于不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性。原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价。

此外,大部分神经网络流程都假设输入输出是在0附近的分布,从权值初始化到激活函数、从训练到训练网络的优化算法。

使用过大的样本

原理:
使用太大的训练样本可能会对网络在训练过程中的准确性造成负面影响,这是由于大样本会破坏梯度下降的随机性。
使用小样本与更为随机的权重。这样做有两大好处。首先,这样可以帮助训练跳出鞍点。其次,可以使训练在更为平缓的局部最小值停止。一般而言,后者具备更好的泛化性能。

学习率不正确

很多深度学习框架会启用梯度裁剪(Clipping Gradient)。这可以防止训练过程中出现的梯度爆炸。它会在每一步中强制改变权重,让权重发生最大限度的改变。这在数据中含有大量异常时尤为有效。但是,开启这个选项也会让用户难以手动找到最佳的学习率。大多数用户由于梯度裁剪将学习率设置的过高,使整体训练行为变慢、也使结果不可预测。

在输出层使用错误的激活函数

在最后一层使用激活函数时,无法产生所需全部范围的值。假使你使用Relu这类限制范围的函数,神经网络便只会训练得到正值。
如果你的输出值只在特定的范围有意义,例如0-1。那么最终应使用特定的激活函数例如Sigmoid。但如果你的输出为不限制范围的正数或复数,则不应在最终层使用激活函数。

http://theorangeduck.com/page/neural-network-not-working

你可能感兴趣的:(神经网络不收敛的原因)