Datawhale X 李宏毅苹果书 AI夏令营 task3

74 阅读3分钟

Datawhale X 李宏毅苹果书

1. 实践方法论

  • 检查训练损失:当在Kaggle或其他平台上模型表现不佳时,首先检查训练数据上的损失。如果训练损失较高,说明模型未能很好地学习训练数据。
  • 模型偏差:如果模型过于简单,其函数集合不足以描述数据的真实分布,即使找到了最佳参数,损失也可能很高。
    • 解决方案:增加模型的灵活性,例如增加输入特征(如用56天的数据代替1天的数据),或使用深度学习模型来提升模型的表达能力。
  • 优化问题:即便模型具备足够的表达能力,也可能由于优化算法的问题(如梯度下降法)陷入局部最小值,从而未能找到全局最优解。
    • 解决方案:尝试更先进的优化技术或调整优化策略,如使用不同的优化器或引入正则化技术。

2. 模型偏差与优化问题的区分

  • 模型偏差:模型缺乏足够的灵活性来拟合训练数据。
  • 优化问题:模型有足够的灵活性,但由于优化过程中的问题未能找到合适的参数配置。
  • 判断方法:通过比较不同规模的模型来判断问题的根源。
    • 案例分析:例如,20层的网络相比56层的网络在训练集上表现出更好的损失,这表明问题在于优化而不是模型偏差。56层网络理论上应该能够达到甚至超过20层网络的表现,但由于优化不佳未能实现。

3. 过拟合

  • 定义:模型在训练数据上表现很好,但在未见过的数据(如测试集)上表现较差。
  • 原因:模型过于复杂,导致其过度适应训练数据中的噪声或细节。
  • 解决方法
    • 增加训练数据:更多的数据有助于模型更好地泛化。
    • 数据增强:通过对已有数据进行变换(如图像翻转、裁剪等)来创造新的训练样本。
    • 限制模型复杂度:减少模型参数的数量,使用特定架构如卷积神经网络(CNN)来限制模型的灵活性。
    • 正则化:在损失函数中加入惩罚项以防止模型过度拟合。
    • 早停:当验证集上的性能不再提高时,提前终止训练过程。

4. 选择模型的策略

  • 交叉验证:将数据集划分为训练集和验证集,使用验证集来评估模型并选择最佳模型。
    • 标准划分:通常将大部分数据(如90%)作为训练集,剩余部分(如10%)作为验证集。
  • k折交叉验证:将数据集分成k个子集,轮流将每个子集作为验证集,其余子集作为训练集。
    • 过程:对于k=3的情况,将数据集分为三份,每次保留一份作为验证集,其余两份用于训练。重复此过程三次,每次更换验证集。

5. 数据集匹配问题

  • 问题描述:训练集和测试集的数据分布不一致,导致模型在测试集上的表现不佳。
    • 实例:例如,训练数据来自2017年至2020年,而测试数据来自2021年,两者可能存在分布差异。
  • 解决方案:需要深入了解数据的生成方式,识别并处理潜在的数据分布不匹配问题。
    • 调整策略:基于对数据分布的理解调整数据预处理方法,确保模型能够更好地泛化到新数据。