训练深度神经网络
2018-03-06 10:06
162 查看
1.训练数据
(1)数据量越大越好,模型泛化能力越强;(2)去除损坏的训练样本;
(3)数据扩张(Data Augmentation)--拿图像为例,通过翻转、模糊等操作生成新的样例。
2.选择恰当的激励函数(Activation Function)
激励函数是神经网络的核心部分之一。激励函数将模型非线性(none-linearity)化。之前的神经网络大多选用Sigmoid函数作为激励函数,但是Sigmoid存在两个缺陷:(1)函数在两端饱和,使得梯度小时;(2)不以0为中心,输出结果在0到1之间。目前用的比较多的激活函数是RELU。ReLU能够保持在x>0时梯度不衰减,从而缓解了梯度消失的问题。3.隐藏单元和隐藏层的数量(Hidden Units and Layers)
保留超出最优数量的隐藏单元,一般是比较保险的做法。这是因为任何正则化方法( regularization method)都会处理好超出的单元。保留比最优数量更少的隐藏单元,会导致更高的模型欠拟合(underfitting)几率。通过增加隐藏单元的数目,模型会得到所需的灵活性,以在预训练表示中过滤出最合适的信息。
选择隐层的最优数目比较直接:“你只需不停增加层,直到测试误差不再减少。”
4.权重初始化(Weight Initialization)
远用小的随机数字初始化权重,以打破不同单元间的对称性(symmetry)。当使用 Sigmoid 激励函数时,如果权重初始化为很大的数字,那么 sigmoid 会饱和(尾部区域),导致死神经元(dead neurons)。如果权重特别小,梯度也会很小。因此,最好是在中间区域选择权重,比如说那些围绕平均值均衡分布的数值。5.学习率
学习率是重要的超参数之一,调节着整个的学习过程。如果学习率太小,模型收敛速度很慢;如果学习率很大并且样本数目太小,损失可能会很高。相比固定的学习率,在每个周期或者若干样例后逐渐降低学习率可能得到较好的训练效果。
基于动能(momentum based)的方法来调整学习率。该方法取决于误差函数的曲率。
目前有多种优化方法:Adagrad、Adam、RMSProp等。
[1] https://www.leiphone.com/news/201701/gOwAU7YFQkJcFkVB.html
相关文章推荐
- 训练深度神经网络的时候需要注意的一些小技巧
- 用spark训练深度神经网络
- 人工智能深度学习框架MXNet实战:深度神经网络的交通标志识别训练
- 【计算机视觉】【神经网络与深度学习】YOLO v2 detection训练自己的数据2
- 【神经网络与深度学习】在Windows8.1上用VS2013编译Caffe并训练和分类自己的图片
- Deep Learning(深度学习)之(五)神经网络训练中的高效BP(反向传播算法)
- 神经网络与深度学习笔记——第5章 深度神经网络为何很难训练
- C++从零实现深度神经网络之三——神经网络的训练和测试
- [计算机视觉][神经网络与深度学习]Faster R-CNN配置及其训练教程
- 【深度学习】③--神经网络细节与训练注意点
- [计算机视觉][神经网络与深度学习]SSD安装及其训练教程
- 深度学习-训练深度神经网络的难点:vanishing gradient problem与exploding gradient problem
- 【论文笔记】SparkNET: 用Spark训练深度神经网络
- 训练深度神经网络失败的罪魁祸首不是梯度消失,而是退化
- [计算机视觉][神经网络与深度学习]Faster R-CNN配置及其训练教程2
- 分布式深度学习:神经网络的分布式训练
- 基于PyTorch的深度学习入门教程(五)——训练神经网络分类器
- 【神经网络与深度学习】深度学习实战——caffe windows 下训练自己的网络模型
- 深度学习之五:使用GPU加速神经网络的训练
- 王小草【深度学习】笔记第三弹--神经网络细节与训练注意点