关于 train loss、val loss训练时遇到的问题

数据集说明

  • 训练集是用于模型的训练的样本集合,确定模型的权重参数。
    • 训练集的数量随着模型的复杂度要增多。
    • 反向传播确定最优参数。
  • 验证集用于验证模型的评估、模型的选择、参数的调整。
    • 选择模型、调整超参、初步评估模型。
  • 测试集是用于模型的无偏估计。
    • 再找个集合评估模型看看是否是偶然稳定,即验证无偏性。
  • 保证同分布,最好保证测试集的正负比和实际环境的一致。

如果模型在训练集、验证集、测试集的表现都很好,但是在实际用的新数据表现很差,可能的问题:

分布不一致,新数据与原数据的特征之间存在差异,网络对新数据特征的提取能力不足。

loss说明

  • train loss 下降↓,val loss 下降 ↓:训练正常,网络仍在学习,最好的情况。
  • train loss 下降 ↓,val loss:上升/不变:有点过拟合overfitting,可以停掉训练,用过拟合方法如数据增强、正则、dropout、max pooling等。
  • train loss 稳定,val loss 下降:数据有问题,检查数据标注有没有错,分布是否一直,是否shuffle。
  • train loss 稳定,val loss 稳定:学习过程遇到瓶颈,可以尝试调小学习率或batch数量
  • train loss 上升 ↑,val loss 上升 ↑:网络结构设计不当,参数不合理,数据集需清洗等,最差情况。

loss震荡

轻微震荡是正常的,在一定范围内,一般来说batch size越大,其确定的下降方向越准,引起训练震荡越小。如果震荡十分剧烈,估计是batch size设置太小了。

train loss下降,val loss上升

网络过拟合的解决

  • 学习率衰减
  • dropout
  • 减少层数、神经元个数
  • 加BN
  • Early Stopping,可以让val loss有上升趋势的时候早停掉

loss上升,acc也上升

  • 如果val loss平稳,可以接着训。
  • 如果val loss轻微震荡,也可以接受。以对数损失为例,假如正类预测概率为0.51,但是>0.5的。此时的loss很大,但acc是增加的。
  • 如果val loss一直在上升,就要考虑过拟合的问题。因为,既然val的acc在上升,那多半train的损失还在降或者收敛了,而val的损失不断上升,一直下去就变成train loss远小于val loss了,就意味着过拟合。如果准确率达到要求,可以早停掉。或尝试过拟合方法。

train loss不下降

  1. 模型结构问题。当模型结构不好、规模小时,模型对数据的拟合能力不足。
  2. 训练时间问题。不同的模型有不同的计算量,当需要的计算量很大时,耗时也会很大
  3. 权重初始化问题。常用的初始化方案有全零初始化、正态分布初始化和均匀分布初始化等,合适的初始化方案很重要,神经网络初始化为0可能会带来影响
  4. 正则化问题。L1、L2以及Dropout是为了防止过拟合的,当训练集loss下不来时,就要考虑一下是不是正则化过度,导致模型欠拟合了。
  5. 激活函数问题。全连接层多用ReLu,神经网络的输出层会使用sigmoid 或者 softmax。在使用Relu激活函数时,当每一个神经元的输入为负时,会使得该神经元输出恒为0,导致失活,由于此时梯度为0,无法恢复。
  6. 优化器问题。优化器一般选取Adam,但是当Adam难以训练时,需要使用如SGD之类的其他优化器。
  7. 学习旅问题。学习率决定了网络的训练速度,但学习率不是越大越好,当网络趋近于收敛时应该选择较小的学习率来保证找到更好的最优点。所以,我们需要手动调整学习率,首先选择一个合适的初始学习率,当训练不动之后,稍微降低学习率。
  8. 梯度消失和爆炸。这时需要考虑激活函数是否合理,网络深度是否合理,可以通过调节sigmoid -> relu,假如残差网络等。
  9. batch size问题。过小,会导致模型损失波动大,难以收敛,过大时,模型前期由于梯度的平均,导致收敛速度过慢。
  10. 数据集问题。(1)数据集未打乱,可能会导致网络在学习过程中产生一定的偏见(2)噪声过多、标注有大量错误时,会导致神经网络难以学到有用的信息,从而出现摇摆不定的情况,(3)数据类别不均衡使得少数类别由于信息量不足,难以学到本质特征。
  11. 特征问题。特征选择不合理,会使网络学习难度增加。

val loss不下降

  1. 训练的时候过拟合导致效果不好
  • 通过交叉检验得到较优的模型参数;
  • 减少特征数或使用较少的特征组合,对于按区间离散化的特征,增大划分的区间;
  • 常用的有 L1、L2 正则。而且 L1正则还可以自动进行特征选择;
  • 增加训练数据可以有限的避免过拟合;
  • Bagging ,将多个弱学习器Bagging 一下效果会好很多,比如随机森林等.
  • 早停策略。本质上是交叉验证策略,选择合适的训练次数,避免训练的网络过度拟合训练数据。
  • DropOut
  1. 应用场景不同导致。本来训练任务是分类猫和狗,测试用的皮卡丘和葫芦娃。
  2. 噪声问题。训练数据大概率都是经过去噪处理的,而真实测试时也应该去除噪声。

你可能感兴趣的:(#,深度学习,深度学习,神经网络)