Task 3 机器学习框架&实践攻略 “Datawhale X 李宏毅苹果书 AI夏令营”

实践方法论

实际上手进行机器学习时候,由一个好的实践方法论可以让我们更好的训练我们的模型。

一,先检查训练数据的损失。如果在训练数据上的损失就很大,则没有必要去查看测试的结果,要重新对模型进行设计训练。

1,训练失败的原因:
①模型偏差:

如果我们设计的模型过于简单,即我们可以让损失降低的函数不在模型包含的范围内。在这种情况下,即使我们通过训练找出了θ*,是目前函数里最好的一个,但是损失依然不会降低下来。

因此我们需要重新设计一个模型,给予模型更大的灵活性。

②优化问题

一般我们使用坡度下降进行优化的时候,会遇到很多问题。如可能会卡在局部最小值的地方,无法找到一个真正可以使损失降的很低的参数。

2,如何判断具体是由哪种原因引起?

    通过比较不同的模型来判断现在的模型够不够大。

看到一个从未做过的问题,可以先跑一些小的,浅的网络乃至线性模型等,这些比较不会出现优化失败的问题。看看浅的模型可以得到一个什么样的损失。

接下来设计一个深的模型,如果深的模型跟浅的模型比起来,深的模型明明灵活性比较大,但损失却没有办法比浅的模型压得更低代表说优化有问题,梯度下降不给力,因此要有一些其它的方法来更好地进行优化。

二,如果在训练数据上的损失已经很小了,接下来查看测试数据中的损失。

  1,如果测试数据中的损失也已经很小,则表示我们训练成功。
  2,如果在测试数据中的损失比较大,说明我们遇到了问题。
①过拟合(overfitting)

模型在训练数据上表现很好,但是在测试数据上损失就很大。其可能产生的原因可见下图。

那么怎么解决过拟合问题呢?有两个可能的方向:

第一个方向,即增加训练集。增加训练集,可以给灵活的模型予以限制。

第二个方向,是给模型一些限制,让模型不要有过大的灵活性。

给模型制造限制有如下方法:

  1. 给模型比较少的参数。如深度学习的话,就给它比较少的神经元的数量。全连接网络(fully-connected network)其实是一个比较有灵活性的架构,而卷积神经网络(Convolutional Neural Network,CNN)是一个比较有限制的架构。CNN 是一种比较没有灵活性的模型,其是针对图像的特性来限制模型的灵活性。
  2. 用比较少的特征
  3. 还有别的方法如早停(early stopping)、正则化(regularization)和丢弃法(dropout method)。

如何选择模型

比较合理选择模型的方法是把训练的数据分成两半,一部分称为训练集(training set),一部分是验证集(validation set)。在训练集上训练出来的模型会使用验证集来衡量它们的分数,根据验证集上面的分数去挑选结果,再把这个结果上传到 Kaggle 上面得到的公开分数。最好的做法,就是用验证损失,最小的直接挑就好了,不要过于在意公开测试集的结果。

那么如何将数据分为训练集和验证集呢?可以用k折交叉验证(k-foldcross validation)即将数据分为k份,将其中一份当验证集,其余当训练集。重复k次。把模型每次的结果都平均起来即可得到此模型的结果。如下图所示:

②不匹配

不匹配不同于过拟合,不匹配是指训练集和测试集的分布不同,训练集和测试集数据不匹配,训练集再增加数据也是毫无帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值