模型不收敛


作者Lou Xiao创建时间2020-09-18 15:24:00更新时间2020-09-18 14:59:00

深度学习(deep learning)中,常常遇到模型在训练时不收敛的问题,本文简要地给出解决的思路。

1. 检查数据

  • 检查数据集的features和labels是否一一对应?
  • 检查数据集是否客观存在相关性,采用简单随机森林模型(RandomForestClassifier和RandomForestRegressor等)进行验证
  • 检查数据预处理的过程有无错误
  • 核对原始数据的真实性和可靠性

2. 检查代码

  • 检查代码的编码错误(bug)
    • 书写错误
    • 进入模型的训练样本是否正确
    • 是否正确更新模型参数
  • 考虑对样本进行规范化处理
    • 如果不同特征的取值范围相差很大,那么取值范围越大的特征,隐含的权重就越大。规范化处理就是把所有的特征映射到相同的取值范围。
    • 常用的规范化处理有:Min-Max规范化,标准正态化等。 👉 数据集含有缺测值的Min-Max规范化和标准正态化
  • 检查模型的结构设计是否合理,参考其他类似模型的结构设计(就是查阅文献)
  • 检查模型的输出层的激活函数、loss function、换优化器(Optimizer)是否配套
  • 如果网络层数比较深(depth > 16),考虑使用残差网络(Residual Networks)和 Inception
  • 如果使用卷积操作,且image尺寸较大,考虑使用BN(Batch Normalization)和 增加batch size
    • Batch Normalization是用来对每个batch(批次)的样本进行正态化,保证每层BN的输出都有稳定的概率分布。一般来说深度学习模型时都考虑在每个卷积层后便加上一个Batch Normalization。
    • batch size是一个很重要的因素,足够大的batch size,才有可能解决不收敛的问题。

3. Links

文章目录