神经网络学习:如何调参
来源:互联网 发布:js div name 编辑:程序博客网 时间:2024/05/22 12:35
如何调参是一个不断深入的过程,本文会不定时的更新。
神经网络中需要调的参数很多,如何正确地调参至关重要,需要调节的参数大概有如下几个:
- 神经网络的层数
- 每层神经元的个数
- 如何初始化Weights和biases
- loss函数选择哪一个
- 选择何种Regularization?L1,L2
- Regularization parameter lambda 选择多大合适
- 激励函数如何选择
- 是否使用dropout
- 训练集多大比较合适
- mini-batch选择多大
- 学习率多少合适
- 选择何种梯度下降算法
- 何时停止Epoch训练
前前后后有十几个需要调节的参数,遵循一定的调参顺序在一定程度上可以减少工作量,训练一次神经网络需要挺长的时间,所以调参时要从最简单的网络结果开始。
1.首先使用最简单的网络结构:只包含输入层、输出层两层的神经网络。
训练集、验证集的个数要比较小,这样可以加快训练的速度,其他的参数先随便选择一个固定值。
2.调节学习步长ang
如果ang太大,可能造成越走越高,跳过局部最低点,但ang太小,学习的速度太慢。先不设置Regularization parameter lambda 的前提下,ang可以从0.001, 0.01, 0.1,1, 10开始尝试,如果发现loss开始增大,停止,进行更小的微调。如何发现ang=0.1时效果最好,这是在尝试ang=0.05和0.5两个值。
先随便选择一个ang值,比如10,训练得到最后的准确度,如果准确度不是很好,然后再使用ang=100,假如发现准确率不但每提高甚至下降了,可能就说明ang=10就有点大了,换成ang=1再训练一遍,发现效果有了明显提高,就说明ang=1比10更合适,用同样的方法不断的尝试,就可以得到一个不错的ang值。
3.选择合适的Epoch训练次数
如果随着Epoch的次数增加,准确度在一定时间内(比如5到10次)变化很小,就可以停止Epoch。开始时可以把Epoch次数设置的大一些,观察在哪个地方准确度变化很小,就把Epoch设置成几。
4.调节Regularization parameter lambda
实验lambda,从1.0,10,100…找到一个合适的。注意:lambda的大小是和样本数成正比关系的,比如现在样本数、lambda分别是1000、0.4,以后把样本数扩大到10000时,对应的lambda也要扩大到4。
5.调节mini-batch size
mini-batch选择太小:没有充分利用计算资源;太大:更新权重和偏向比较慢,mini-batch size和其他参数相对独立,一旦找到一个合适的以后,就不需要再改了。
6.如何选择梯度下降算法
对于初学者,选择SGD就可以,
7.如何选择激励函数
如何选择激励函数,没有特别好的方法,只能靠实验比较。常用的激励函数有:
8.如何设置Weights和biases
最简单的方法:让W和b服从N(0, 1 / sqrt(n_in) ),n_in:输入神经元的个数,设置合适的W和b可以加快学习的速率,在极个别的神经网络中,W和b甚至可以影响最后训练的准确度。
9.选择何种Regularization
L1和L2是对cost函数后面增加一项。L1和L2都是为了减少连接对cost影响的权重,但是L1和L2又存在一定的区别。L1减少的是一个常量,L2减少权重的一个固定比例,如果权重本身很大,L1减少的比L2少很多,反之,如果权重本省很小,L1减少的更多。L1倾向于集中在少部分重要的连接上。
注意:对于L1,当W=0时,cost关于W的偏导没有意义,因为在W=0时不可导,此时就使用un-regulazied表达式,sgn(0)=0,本来regularization的目的就是减少权重,到权重=0时,就没有必要再减少。
10.是否使用dropout
和L1、L2 regularization不同,dropout并不对cost增加项,而是对神经网络本身的结果做改变。
11.训练集多大比较合适
一句话,训练集越大越好,增加训练集在一定程度上也可以减少过拟合
12.未完待续,稍后补充……
阅读全文
0 0
- 神经网络学习:如何调参
- 神经网络该如何调参
- Deep Learning(深度学习)神经网络如何识别
- 如何利用Java库学习神经网络
- 如何利用Java库学习神经网络
- 神经网络中的学习速率如何理解
- 神经网络学习
- 神经网络学习
- 神经网络学习
- 神经网络学习
- 神经网络学习
- 神经网络:学习
- 神经网络学习
- 神经网络学习
- 斯坦福机器学习第五周(如何训练神经网络)
- 如何估算深度神经网络的最优学习率
- 神经网络学习 之 BP神经网络
- 神经网络超参之学习率η
- java设计模式之单例模式的七种写法
- HDU 3001 Travelling (状态压缩DP +TSP问题)
- win下安装composer
- php模拟登陆
- 虚幻4环境交互【草地扰动】
- 神经网络学习:如何调参
- 1.环境搭建
- java零碎
- POI生成Excel
- String,StringBuffer,StringBuilder的区别
- jiava变量
- linux cron定时任务
- web.xml中<welcome-file-list>配置
- 四种常见线程池的基本用法