神经网络不收敛的查缺补漏

  • 数据归一化

数据归一化包括三个内容:数据缩放的本质、区别,以及选择合适的缩放方法。缩放包括归一化和标准化,两者的本质都是一个线性变换,线性变换有很多良好的性质,这些性质决定了为什么对数据进行改变后竟然不会失效,反而还能提高数据的表现。例如线性变换不会改变数值的排序。 归一化和标准化的而区别,归一化是统一到一定的区间(由极值决定),而标准化和整体样本由很大关系。
什么时候使用归一化/标准化, 如果对输出结果范围要求,用归一化;如果数据较为稳定,不存在极端的最大最小值,用归一化;如果存在噪音和异常值,可以使用标准化处理。
数据归一化后,最优解在寻优过程中变得平缓,更容易正确收敛到最优解。引入归一化,是由于不同评价指标中,其量纲单位往往不同,变化区间处于不同的数量级,不进行归一化,可能导致某些目标被忽视。

  • 没有检测预处理结果和最终的训练测试集结果
  • 预处理结果的标签是否对应;
  • 忘了做数据预处理
  • 直接输入了源数据,导致了输入网络源端错误,致使整个网络无法收敛;
  • 忘了使用正则化

过拟合现象很普遍,根本原因还是数据量不足以支撑复杂度高的模型,因此最直接的解决过拟合问题的办法是增加训练数据量。但要获得带标签的数据成本是很高的。 正规化不仅仅是控制过度拟合。通过在训练过程中引入一些随机过程,您在某种意义上“平滑”了成本环境。这可以加速培训,帮助处理数据中的异常值,并防止网络的极端重量配置。

  • Batch Size设的太大

合适的Batch,内存利用率提高,矩阵乘法的并行效率高;跑完一次epoch所需要的迭代次数减少;批次越大,确定下降的维度方向越准确,引起训练震荡越小。
过大的batch: 内存利用率提高,可能导致内存容量撑不住;跑完一次epoch的次数减少,但要达到相同的精度,从而对参数的修正也显得更加缓慢;增大到一定程度,其确定的下降方向已经不再变化。
太大导致了下降方向变化不大,从而引起模型的不收敛现象产生。

  • 学习率设置的不对

学习率是一个重要的超参数,学习率越小,沿着损失梯度下降的速度越慢,从模型训练过程而言,学习率的选择 很重要,防止错过任何局部最优解,也意味着着我们要花更多的时间收敛,尤其是如果我们处于曲线的至高点。
如果学习率太小,网络很可能会陷入局部最优,局部最优导致了不收敛;但是如果太大,超过了极值,损失就会停止下降,在某一位置反复震荡, 反复震荡也会导致模型的不收敛。

  • 激活函数使用的不对

激活函数导致了隐含层输出特征表示出现了数据未归一化的问题。

  • 网络存在坏梯度

一般梯度存在为0,在模型训练中可以默认一个梯度值,如超过改梯度值,则设为该值,否则就以原先值进行梯度衰减。

  • 参数初始化错误
  • 网络太深

第一:层数的增多会使每一层任务都变得简单,例如计算乘法,可以在第一层计算按位加法,第二层计算两个数的加法,第三层计算乘法,这样的算法逻辑更加简单,清晰。也就是说中间层可以做更深的抽象。
第二:数学上可以证明只有一层隐藏层的神经网络可以表示任意的函数,但是神经元的数量却是指数级增加的,但是使用深层网络可以解决这个问题。
一味的增加隐藏层数量并不会给最终的结果带来好处,但是上文已经说了层数的增加可以使神经网络提升,那么问题的原因就是增加后的网络的权重不对。实际上,梯度消失和梯度爆炸都是梯度不稳定的表现,这是因为浅层的神经元=后面所有神经元的乘积,所以当层数增多后容易引起不稳定的表现。
隐藏层神经元数量错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值