本节介绍在训练网络时的一些技巧。
如果训练好的模型表现不尽人意,第一步是检查损失函数在训练集上的表现,如果Loss太大,说明在训练资料上没学好。接下来对于多种可能的原因,给出了应对思路。
(1)Model Bias
当模型过于简单时,可能找不到很好的函数去预测。
解决思路:重新设计model,给它更大的弹性,如使用更多的特征、更深的网络
(2)Optimization的问题
可能是在优化过程中陷入局部最小值。
如何确定是model bias还是优化的问题呢?可以对比层数更少的网络或非深度学习方法(SVM)在训练数据上的误差,如果随着训练轮次的进行,层数更少的网络能够实现更小的误差,那就说明是优化存在问题。
在解决了训练Loss大的问题之后,检查在测试集上的表现,如果测试的Loss很小,说明找到了性能好的模型;但如果在测试集上的Loss很大,这就有可能是Overfitting(过拟合)的问题了。
为了解决Overfitting,最有效的方法就是增加训练数据,或data augmentation,还有一种解决思路是限制模型不要有那么大的弹性,如减少模型参数。常见的解决过拟合思路如下图所示。
下面这张图很好地解释了Validation set(验证集)的作用,对于一些公开数据集的刷榜,怎样挑选模型能够在未公开数据上也取得好的效果呢?就是训练的时候留一部分数据作为验证集,把重点放在选择验证集的Loss最小的模型。
N-fold Cross Validation方法可以帮助选择最佳的模型超参数。通过在不同的折上评估模型的性能,可以选择那些在交叉验证中表现最好的超参数组合,从而提高最终模型的性能。
N-fold Cross Validation的步骤
- 数据分割:将数据集分成N个大小相近的折(子集)。
- 训练和验证:对每一个折,使用剩余的N-1个折进行训练,使用当前折进行验证。这样,模型会进行N次训练和验证,每个折都作为一次验证集。
- 评估性能:计算N次验证的平均性能指标(如准确率、F1分数等),作为模型的最终性能评估结果。
- 选择模型:根据交叉验证的结果选择最佳的模型或超参数。