超参数选取
-
超参数
超参数: 控制算法行为,且不会被算法本身所更新,通常决定了一个模型的能力
对于一个深度学习模型, 超参数包括
- 层数,每层的神经元数目
- 正则化系数
- 学习率
- 参数衰减率(Weight decay rate)
- 动量项(Momentum rate)
-
如何选择深度学习模型的架构
- 熟悉数据集
- 与之前见过的数据/任务比较
- 样本数目
- 图像大小, 视频长度, 输入复杂度…
- 最好从在类似数据集或任务上表现良好的模型开始
-
如何选择其它超参数
由Fei-Fei Li & Justin Johnson & Serena Yeung(CS231n 2019,Stanford University)给出的建议
-
第1步:观察初始损失
- 确保损失的计算是正确的
- 将权重衰减设为零
-
第2步:在一组小样本上过拟合
- 在一组少量样本的训练集上训练,尝试达到100%训练准确率
- 如果训练损失没有下降,说明是不好的初始化,学习率太小,模型太小
- 如果训练损失变成Inf或NaN,说明是不好的初始化,学习率太大
-
第3步:找到使损失下降的学习率
-
在全部数据上训练模型,并找到使损失值能够快速下降的学习率
当损失值下降较慢时,将学习率缩小10倍
使用较小的参数衰减
-
-
第4步:粗粒度改变学习率,训练1-5轮
- 在上一步的基础上,尝试一些比较接近的学习率和衰减率
- 常用的参数衰减率:1e-4,1e-5,0
-
第5步:细粒度改变学习率,训练更长时间
- 使用上一步找到的最好的学习率,并训练更长时间 (10-20 轮),期间不改变学习率
-
第6步:观察损失曲线
-
训练损失通常用滑动平均绘制,否则会有很多点聚集在一起
有问题的损失曲线:
-
-
延伸阅读:
- 各种深度学习模型的优化方法:http://cs231n.github.io/neural-networks-3/
- 关于不同正则化方法的讨论:https://www.cnblogs.com/LXP-
- Never/p/11566064.html Li,Chen,Hu,Yang,2019
Understanding the Disharmony Between Dropout and Batch Normalization by Variance Shift CVPR