BP算法之tricks

数据样本

1.Stochastic learning(Online learning)vs Batch learning

传统的batch神经网络训练缺点:

  • BP:一阶梯度 收敛速度慢
  • cost函数为非凸函数,局部最小值多

Online learning是利用单个或者极少数样本进行一次模型参数更新,因此收敛速度快,而且容易跟踪网络的变化。
另一方面,由于单个或极少数样本很容易引入噪声。噪声对于训练有利有弊:
利:不容易陷入局部最优点,噪声的存在会使算法收敛在不同的局部最优,容易找到更优的局部最优点。
弊:不会真的达到某局部最优点,因为有噪声,收敛点会在最优点附近徘徊。
综上所得,

原因结果
样本少收敛速度快
网络跟踪能力强
存在噪声获得更优的解

对于噪声的缺点处理方法:1)使用自适应学习率;2)使用自适应batch大小(batch越大,噪声被平均化)。接近收敛点时,学习率减小,batch增大。

对于batch收敛速度慢的问题,还可通过改变优化方法:二阶优化方法,如牛顿法。不仅估计cost函数曲面在某点处的梯度(一阶信息),还可估计曲面的曲率(二阶信息),利用曲率可加速收敛。

2.打乱样本顺序

从意料之外的样本进行学习
1)打乱样本,使得同类样本分散开来,邻近样本尽量不同类。
2)挑选更大误差的样本输入网络训练。

3.输入样本标准化

将输入样本变换到统一的尺度空间:均值接近0,方差相同,彼此不相关。

网络

参数初始化

参数最好初始化在梯度足够大的地方。
前提是数据已标准化,非线性函数为sigmoid函数。因为要求是标准差为1的初始输出,所以初始值可从均值为0, σw=m1/2 的分布中随机采样可得(m为与该节点连接的输入个数)。

非线性激活函数

  • 选择收敛快的非线性函数(双曲线正切比标准的logistic函数收敛更快)
  • 选择计算量小的非线性函数(f(x)=1.7159tanh(2x/3))
  • 增加线性项,避免梯度饱和,即曲面平缓的那段。如f(x)=tanh(x)+ax

cost函数优化过程

目标值的选择

为避免不稳定和输出饱和。
目标值应当设置在非线性函数的最大二阶导数的位置。

学习率的选择

  • 每个参数有自己的学习率
  • 学习率和该节点的输入个数的平方根成比例
  • 底层参数的学习率应比高层的大
  • 随着收敛进行,自适应学习率
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值