模型调参
2018-07-17 18:00 xplorerthik 阅读(501) 评论(0) 编辑 收藏 举报1、神经网络调参
由简单到复杂
不同的特征分通道输入,对于某一路特征过拟合的情况下,可以输出前加大dropout的概率,降低它的影响能力(FM的思想)
迭代次数很少验证数据就达到最优,可以考虑增大网络dropout的概率
BN层可以降低模型对初始化的敏感性
-
learning rate: 1 0.1 0.01 0.001, 一般从1开始尝试。很少见learning rate大于10的。学习率一般要随着训练进行衰减。衰减系数一般是0.5。 衰减时机,可以是验证集准确率不再上升时,或固定训练多少个周期以后。
不过更建议使用自适应梯度的办法,例如adam,adadelta,rmsprop等,这些一般使用相关论文提供的默认值即可,可以避免再费劲调节学习率。对RNN来说,有个经验,如果RNN要处理的序列比较长,或者RNN层数比较多,那么learning rate一般小一些比较好,否则有可能出现结果不收敛,甚至Nan等问题。 -
网络层数: 先从1层开始。
-
每层结点数: 16 32 128,超过1000的情况比较少见。超过1W的从来没有见过。
-
batch size: 128上下开始。batch size值增加,的确能提高训练速度。但是有可能收敛结果变差。如果显存大小允许,可以考虑从一个比较大的值开始尝试。因为batch size太大,一般不会对结果有太大的影响,而batch size太小的话,结果有可能很差。
-
clip c(梯度裁剪): 限制最大梯度,其实是value = sqrt(w1^2+w2^2….),如果value超过了阈值,就算一个衰减系系数,让value的值等于阈值: 5,10,15
-
dropout: 0.5
-
L2正则:1.0,超过10的很少见。
-
词向量embedding大小:128,256
-
正负样本比例: 这个是非常忽视,但是在很多分类问题上,又非常重要的参数。很多人往往习惯使用训练数据中默认的正负类别比例,当训练数据非常不平衡的时候,模型很有可能会偏向数目较大的类别,从而影响最终训练结果。除了尝试训练数据默认的正负类别比例之外,建议对数目较小的样本做过采样,例如进行复制。提高他们的比例,看看效果如何,这个对多分类问题同样适用。
在使用mini-batch方法进行训练的时候,尽量让一个batch内,各类别的比例平衡,这个在图像识别等多分类任务上非常重要。
2、样本数量估计
从模型的角度考虑:至少为vc维的10倍
从数据的角度考虑:不太好确定