Datawhale X 李宏毅苹果书 AI夏令营 2 实践方法论

2.1 模型偏差

1. 问题定义

模型偏差通常发生在模型过于简单,不能充分捕捉数据中的复杂性时。例如,一个简单的线性模型可能无法适应非线性数据,导致高偏差。这种情况下,模型的函数集合可能太小,没有包括能够显著降低损失的函数。

  • 示例
    • 假设有一个参数化的模型 f θ 1 ( x ) f_{\theta_1}(x) fθ1(x) f θ 2 ( x ) f_{\theta_2}(x) fθ2(x)
    • 这些模型构成的函数集合可能不包含一个真正可以最小化损失函数的模型。
2. 影响

即使我们找到了最优参数 θ ∗ \theta^* θ,该参数对应的模型 f θ ∗ ( x ) f_{\theta^*}(x) fθ(x) 在损失函数上的表现也可能不佳。这类似于在海里寻找针,但针根本不在海中。

3. 解决方案

为了解决模型过于简单的问题,可以采取以下措施提高模型的复杂度和灵活性:

  • 增加更多特征
    • 如果原始模型使用的是前一天的数据预测未来观看人数,可以考虑引入更长时间范围的数据,如使用过去 56 天的数据。
  • 使用更复杂的模型
    • 考虑应用深度学习等方法,这些方法通过增加层数和节点数量,提高模型的非线性拟合能力和灵活性。
4. 注意事项
  • 优化问题
    • 当训练模型时观察到高损失,不一定只是模型偏差的问题,也可能是优化算法未能有效寻找到最佳参数。
    • 需要确保优化算法正确实施,如梯度下降算法的学习率设置是否合适。

2.2 优化问题

在机器学习中,特别是在使用梯度下降时,我们面临两大挑战:模型偏差和优化效率。模型偏差发生在模型太简单,不能捕捉数据的复杂性时。而优化问题则关注于算法是否能找到真正最小化损失的参数设置。

优化挑战
  • 梯度下降可能会陷入局部最小值,无法达到全局最低损失。
  • 深度网络(如56层)比浅层网络(如20层)拥有更高的灵活性,理论上应能更好地减少损失。然而,如果优化未能有效执行,即使是深层网络也可能无法显著降低损失。
解决方案与判断
  • 初始测试:从浅层模型开始,使用简单模型(如SVM或线性模型)来设置基线损失。
  • 逐步增加复杂性:逐渐增加模型深度或复杂度,观察损失变化。如果深层模型未能降低损失,可能是优化算法的问题而非模型偏差。
  • 评估优化:若训练损失低但测试损失高,可能发生过拟合。如果训练损失仍高,需考虑改进优化策略或进一步调整模型结构。
实验示例
  • 残差网络论文中比较了20层和56层网络。结果显示,尽管56层网络更深,但其训练损失高于20层,说明优化未能充分发挥作用,而非过拟合问题。

2.3 过拟合

定义和识别

过拟合发生在模型过度适应训练数据的细节而忽略了泛化能力时,导致在新的或未见过的数据上表现不佳。

原因
  • 模型复杂度:高度复杂的模型(如56层的深度网络)有更大的灵活性,理论上可以实现更低的训练损失,但也更易过拟合。
  • 数据特性:如果训练数据有限或不充分代表整个数据分布,模型可能会学习到误导性的特征。
解决策略
  1. 数据增强:通过技术如图像翻转、裁剪等手段人为增加训练样本的多样性,以提高模型的泛化能力。
  2. 模型简化:减少模型的复杂度,如降低层数、减少参数数量,或使用参数共享等技术来限制模型的自由度。
  3. 正则化技术:应用如L1、L2正则化和dropout等技术,以惩罚过大的模型权重。
模型选择
  • 实验对比:通过比较不同复杂度模型的训练和测试损失来选择最佳模型。理想模型应在保持低训练损失的同时,也在测试集上表现良好。
  • 避免过度调参:避免仅根据测试集表现来过度调整模型参数,这可能导致模型特化于当前测试集而失去泛化能力。
实际应用
  • 评估指标:选择合适的评估指标来全面理解模型的表现,不仅考虑损失值,也应考虑如精确度、召回率等其他重要指标。

2.4 交叉验证

基本概念

在机器学习项目中,正确地分割数据集至关重要。传统的方法是将数据分为训练集和验证集,通常比例为 90%/10%。这种分割方式允许模型在训练集上学习,并在验证集上测试其表现,以估计模型的泛化能力。

交叉验证的必要性
  • 单一验证集的局限性:使用单一的验证集可能导致模型过度拟合于特定的数据样本,特别是当验证集不代表总体分布时。
  • 模型泛化能力的评估:交叉验证通过多次在不同的数据子集上评估模型性能,提供了更全面的模型评估方式,减少评估误差。
k-折交叉验证过程
  1. 数据分割:将数据集等分为 k 份(例如 3 份),确保每份数据分布一致。
  2. 循环验证:每次选择一份数据作为验证集,剩余的 k-1 份作为训练集。这一过程重复 k 次,每次选择不同的份作为验证集。
  3. 性能评估:计算每次实验的性能指标,最后对这些指标进行平均,得到最终的模型评估结果。
优点与挑战
  • 优点
    • 提供对模型性能更真实的估计,因为模型必须在多个独立的数据子集上表现良好。
    • 帮助检测模型对于训练数据的依赖性,识别数据分布中的偏差。
  • 挑战
    • 计算成本高,尤其是在数据集很大或模型很复杂时。
    • 数据分割的随机性可能会影响模型评估的稳定性。
实际应用
  • 案例分析:在 Kaggle 竞赛中,模型常常根据公开测试集的表现进行调整,可能导致在未公开的私人测试集上表现不佳。使用交叉验证可以减少因过度调整特定测试集而导致的过拟合风险。
  • 数据不匹配:当训练数据和测试数据背后的真实分布不一致时,交叉验证帮助揭示这种不匹配,指导如何调整模型或数据处理方式来解决问题。

2.5 不匹配

定义

数据不匹配是指模型训练时使用的数据分布与实际应用或测试时的数据分布不一致。这种不一致可能导致模型在实际应用中表现不佳,即使在训练集上表现良好。

示例分析

以2021年的观看人数预测为例,模型在预测2月26日这一天的观看人数时表现出显著的误差。原因是该日的数据与模型训练使用的历史数据在行为模式上有显著差异。例如,通常人们在周五晚上选择外出,但在这一特定日期内部情况可能发生了变化,导致观看人数激增。

主要问题
  • 预测误差:所有测试的模型(一层到四层)均未能准确预测这一异常高峰,显示出两千多到一千八百的误差。
  • 误解数据趋势:模型错误地预测该日期应为低点而非实际的高峰。
不匹配与过拟合的区别
  • 过拟合:模型学习训练数据中的噪声和细节至于无法泛化到新数据。
  • 不匹配:即使增加更多训练数据,如果这些数据的分布与测试集不一致,问题依旧无法解决。
解决策略
  1. 域适应(Domain Adaptation):调整模型以适应新的数据分布,可能包括使用在新数据上重新训练或微调模型的技术。
  2. 数据校准:分析训练数据和测试数据的差异,尝试识别和模拟这些差异的原因,以更好地准备模型对未来数据变化的适应。
  3. 增强数据表示:通过集成多种数据源或使用技术增强数据质量和代表性,例如通过生成对抗网络(GANs)生成的合成数据来模拟预期的测试场景。
  4. 持续学习和更新:实施模型的持续学习策略,使其能够适应新的数据分布。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值