BP算法之tricks

来源:互联网 发布:js防水浆料检测设备 编辑:程序博客网 时间:2024/05/29 14:08

数据样本

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
原创粉丝点击