Tricks of Training Deep Neural Works
Overfitting
训练数据包含抽样误差,训练时,复杂的模型将抽样误差也考虑在内,将抽样误差也进行了很好的拟合。最终模型在训练集上效果好;在测试集上效果差。模型泛化能力弱
过拟合的表现:
减少模型的复杂程度(容量)
L2正则化
Dropout:提高dropout的rate
减少预训练的锁定层数
更多的数据
让模型感受更多的数据,逼迫模型泛化
数据增强
采集更多的数据
查看数据集的分割是否合适
学习率的调整
trick是 warm up(热身),就是先采用小的学习率(0.01)进行训练,训练了400iterations之后将学习率调整至0.1开始正式训练
在学习遇到瓶颈,即训练和验证损失均趋于不变时,适当调小batch_size,用更细的笔来画画
进行交叉验证
当数据集比较小的时候,交叉验证可以“充分利用”有限的数据找到合适的模型参数,防止过度拟合
做法:就是把样本集S分成k份,分别使用其中的(k-1)份作为训练集,剩下的1份作为交叉验证集,最后取最后的平均误差,来评估这个模型
最后对k个模型的结果取平均
Early Stopping
Owe fitting
若准确率很低,检查数据和标签的对应关系,或者损失函数是否导致无法梯度下降
1、观察数据中是否有异常样本或异常label导致数据读取异常
2、调小初始化权重,以便使softmax输入的feature尽可能变小
3、降低学习率,这样就能减小权重参数的波动范围,从而减小权重变大的可能性。这条也是网上出现较多的方法。
4、调大batch_size
5、如果有BN(batch normalization)层,finetune时最好不要冻结BN的参数,否则数据分布不一致时很容易使输出值变的很大。
6、神经网络不够深。
7、训练的epoch不够。