训练神经网络的建议与参数设置

训练神经网络的建议

(1)一般情况下,在训练集上的目标函数的平均值(cost)会随着训练的深入而不断减小,如果这个指标有增大情况,停下来。

  • 两种情况:
    • 采用的模型不够复杂,以至于不能在训练集上完全拟合
    • 已经训练很好了

(2)分出一些验证集,训练的本质目标是在验证集上获取最大的识别率。因此训练一段时间后,必须在验证集上测试识别率,保存使验证集上识别率最大的模型参数,作为最后的结果。

(3)注意调整学习率,如果刚训练几步损失函数cost就增加,一般来说是学习率太高了。如果每次cost变化很小,说明学习率太低。

训练神经网络的各种经验

(1) 目标函数可以加入正则项
M i n i m i z e   E ( ω , b ) = L ( ω , b ) + λ 2 ∥ W ∥ 2 \text Minimize \ E(\omega,b)=L(\omega,b)+\frac{\lambda}{2}\parallel W \parallel ^2 Minimize E(ω,b)=L(ω,b)+2λW2
λ \lambda λ:权值衰减系数,我们的优化不仅要使目标函数尽可能的小,也要使所有W的模尽可能的小,防止W过大造成的过拟合现象
(2)训练数据的归一化
在这里插入图片描述
n e w X = X − m e a n ( X ) s t d ( X ) newX = \frac{X-mean(X)}{std(X)} newX=std(X)Xmean(X)
(3)参数和W和b的初始化

在随机梯度下降法中,第一步是随机的取所有的(w,b),这时会出现一个问题,如果激活函数是sigmoid或tanh函数,这两个函数在值很大的地方梯度都很小,通过后向传播后前边相关的梯度也将趋近于0,从而产生梯度消失的现象,导致训练缓慢,因此,我们需要将
W T + b W^T+b WT+b
在一开始就落在0附近:

  • 一种比较简单有效的方法是:
    • (W,b)初始化从区间 ( − 1 d -\frac{1}{\sqrt d} d 1, − 1 d -\frac{1}{\sqrt d} d 1)均匀随机取值,d是(w,b)所在层的神经元个数。

(4)BATCH NORMALIZATION
基本思想:既然希望没一层获得的值都在0附近,从而避免梯度小时现象,那么我们为什么不直接把每一层的值做基于均值和方差的归一化
在这里插入图片描述
在这里插入图片描述
(5)参数的更新策略

  • 常规的更新策略使用随机梯度下降法

    • (W,b)的每一个分量获得的梯度绝对值有大有小,一些情况下,将会迫使优化路径变成Z字形状。
    • 在这里插入图片描述
    • ADAGRAD:将梯度的平方不断的累积,用归一化因子来规范最终的结果
  • SGD求梯度的策略过于随机,每一次都是用的不同batch的数据,会出现优化方向随机化
    在这里插入图片描述

  • MOMENTUM:解决梯度随机性问题
    在这里插入图片描述

  • 同时解决两个问题

    • Adam:结合了ADAGRAD和MOMENTUM,同时解决梯度绝对值分量不平衡和梯度方向随机性,并且引入逐渐降低梯度搜索步长的机制

在这里插入图片描述

  • 对梯度做累积处理,所以开始更新快,之后会越来越慢
    在这里插入图片描述
  • 与ADAGRAD的唯一不同就是对r的处理,加入参数p,也就是说通过参数p来调整梯度更重视以前的影响还是当前的影响,可以把adagrad看作是rmspro的特列,即p=0.5。

在这里插入图片描述
momentum是模拟物理里动量的概念,积累之前的动量来替代真正的梯度。公式如下:

				mt=μ∗mt−1+gt


				Δθt=−η∗mt

其中,μ是动量因子
让第一次算出来的方向对第二次的方向还有那么一点影响,即t时刻梯度下降的方向,由之前的梯度共同决定。

在这里插入图片描述

  • 同时解决两个问题

参考:深度学习最全优化方法总结比较(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)
简单认识Adam优化器
优化算法选择:SGD、SGDM、NAG、Adam、AdaGrad、RMSProp、Nadam

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值