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,
非线性激活函数
- 选择收敛快的非线性函数(双曲线正切比标准的logistic函数收敛更快)
- 选择计算量小的非线性函数(f(x)=1.7159tanh(2x/3))
- 增加线性项,避免梯度饱和,即曲面平缓的那段。如f(x)=tanh(x)+ax
cost函数优化过程
目标值的选择
为避免不稳定和输出饱和。
目标值应当设置在非线性函数的最大二阶导数的位置。
学习率的选择
- 每个参数有自己的学习率
- 学习率和该节点的输入个数的平方根成比例
- 底层参数的学习率应比高层的大
- 随着收敛进行,自适应学习率
0 0
- BP算法之tricks
- BP tricks
- 神经网络训练中的Tricks之高效BP(反向传播算法)
- 神经网络训练中的Tricks之高效BP(反向传播算法)
- 神经网络训练中的Tricks之高效BP(反向传播算法)
- 神经网络训练中的Tricks之高效BP(反向传播算法)
- 神经网络训练中的Tricks之高效BP(反向传播算法)
- 神经网络训练中的Tricks之高效BP(反向传播算法)
- 神经网络训练中的Tricks之高效BP(反向传播算法)
- 神经网络之BP算法
- 神经网络之BP算法
- BP 算法之向后传导
- BP 算法之向后传导
- 算法 tricks
- Matlab之BP神经网络反向传播算法
- BP 算法之一种直观的解释
- 文本分类算法之--BP神经网络
- BP神经网络算法之matlab具体实现
- |和||、&&和&
- Android:Intent Filter 过滤器与隐式Intent
- Java.util中的排序
- Bom编程和Dom编程
- Linux下which、whereis、locate、find命令的区别
- BP算法之tricks
- 安卓应用程序的启动流程(源码分析)
- 说说Linux系统调用那些事儿
- delphi xe 10 学习起步
- js入门篇之ajax
- 理性摘录——来自那些说好的人
- 华为OJ——进制转换
- 华为OJ——质数因子
- asp.net 学习记录2