Datawhale X 李宏毅苹果书 AI夏令营第五期深度学习入门 task 3

        首先,我们先在开篇回答一个问题——如何衡量一个模型的性能

        或许你会说是泛化能力,或许你会说是鲁棒性。但归根到底,是它的误差足够小。通常我们仅仅训练几次是得不到我们满意的模型的,我们需要在实践中分析它的误差来优化我们的训练过程。

1 机器学习的总框架

        在机器学习中,我们的训练过程无非是:

        如果想要更详细的过程,可参考:Datawhale X 李宏毅苹果书 AI夏令营第五期 深度学习入门(1)-CSDN博客

2 误差分析

        在机器学习的训练过程中,我们最容易看见的、最直观的就是模型的误差。当我们的模型不理想时,我们可以利用好误差这一指标来分析我们在训练过程哪一步出了差错。

        我们可以参考以下流程,自顶向下判断转入:

3 模型本身的局限性——模型偏差 (Model Bias)

        在上一篇中,我们也有提到这个问题,即模型本身的局限性。例如,简单的线性函数无论如何也无法较好拟合复杂的非线性函数。

        从集合论来看就是,如下情况:

        我们通过优化找到的函数是不可能出现在我们预先构建的模型集合里面的。苹果书中的比喻很好地表述了这个问题,我们想从大海中捞针,可是针根本不在大海里,再怎么找也是徒劳。

        如何解决这个问题呢?其实就是构建一个更复杂更灵活的模型,具体过程可参考:

Datawhale X 李宏毅苹果书 AI夏令营第五期深度学习入门 task 2-CSDN博客

4 优化问题 (Optimazation Issue)

        在第一篇中,我们也有提到优化过程可能会出现的问题,即梯度下降找到的是局部最优解而不是全局最优解,导致我们无法得到误差足够小的参数。

        如下情况:

                               

                  ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

        最优模型已经包含在我们构建的模型集合里了,可是我们却无法得到。

        如何解决这个问题呢?首先,这个局部最优解问题来自梯度下降方法的局限性,我们可以尝试其他优化方法,如遗传算法、模拟退火算法等。或者,因为简单的模型的优化过程通常比较顺利,不会出现太多问题。我们可以尝试降低模型的复杂性,使用更简单的模型,如线性模型。

5 不匹配 (Dismatch)

        在我的理解中,不匹配问题就是训练集与验证集的数据的假设条件是不一致的。我们可以从金融的“量化投资”来理解,比如我们在2018年构建了一个很厉害的模型,来根据市场上的实时指标进行投资,我们赚得盆满钵满。但2020年新冠疫情爆发,市场总体经济情况衰退,我们的模型也就不再奏效了。究其原因是,我们利用的是新冠疫情前的数据训练的模型,但我们却想很好地预测出现新冠疫情后的数值,这显然不奏效。就相当于,我们使用了在一个特定的条件下使用了一个定律,当情况发生转变,不再满足特定条件,我们使用的定律也就失效了。

        如何解决这个问题呢?这需要我们合理地选择与划分训练集与验证集了。

6 过拟合 (Overfitting)

        过拟合问题就是在训练集中误差极小,但是在验证集中误差极大。

        通常有两种可能性,一种是模型很好地几乎完美地拟合包含较多样本的训练集的曲线,但几乎不经过验证集的样本;另外一种是模型拟合了包含比较少的样本的训练集曲线,模型灵活性还很大。

        两种情况如下:

        如何解决这个问题呢?我们可以做数据增强,降低模型灵活性、正则化、早停和丢弃等。我们比较常用且有效的是数据增强与降低模型灵活性。

        数据增强并不是去寻找额外的数据,而是从旧数据挖掘新的数据。从数值来看,我们可以做特征工程;从图片来看,我们可以水平翻转数据,调色等。无论怎么操作,新的数据需要是有效的符合原来实际问题意义的。

        要注意的是,降低模型灵活性需要权衡训练集误差问题,避免从过拟合问题又转回到模型偏差问题,不但没有解决问题,反而制造了新问题。

7 选择模型

        最后,如果我们的模型在训练集与验证集中误差都足够小,表现都很棒。我们可以变得更挑剔一些来选择最优模型,根据其泛化能力、鲁棒性等。我们可以进行交叉检验、数据正则化和集成模型等方法来提高模型的性能,选择最佳的模型。

        我们简单介绍一个交叉检验的方法——K折交叉检验(K-Fold Cross-Validation)。

        K折交叉验证是一种统计学方法,用于评估并比较机器学习模型的性能。它将数据集分为K个大小相等的子集,然后通过以下步骤进行模型的训练和验证:

  1. 训练和验证:在K折交叉验证中,每次迭代选择其中一个子集作为验证集,剩下的K-1个子集合并作为训练集。这个过程重复K次,每个子集都恰好被用作一次验证集。

  2. 性能评估:每次迭代结束后,都会记录模型在验证集上的性能指标,如准确率、MSE等。

  3. 平均性能:所有K次迭代完成后,计算模型在所有验证集上的性能指标的平均值,以此作为模型最终的性能评估。

        当K=3,如图:

8 总结

        通过本篇的学习,我想我们可以回答上一篇的问题了。“神经网络做宽还是做深,怎么设计一个神经网络的结构?怎么选择激活函数?迭代次数越多越好吗?什么是过拟合问题,我们该如何解决?”

        其实从实际问题的性质、数据本身与模型的实践表现出发,这些问题都会迎刃而解。

参考文献与图片来源:

1. 《深度学习详解》李宏毅

感谢Datawhale AI夏令营为广大学习者提供的一切!!!

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值