模型不收敛
作者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
文章目录