[Datawhale X 李宏毅苹果书 AI夏令营]task3 第2章 实践

实践方法论能够帮助我们更好地训练模型。如果测试集上的结果不太好,要先检查训练数据地损失。如果训练数据地损失很大,显然它在训练集上也没有训练好。

1 模型偏差

模型过于简单,可以让损失变低的函数不在描述的范围里。

这个时候需要增加更多的特征或者使用更复杂的模型,比如深度学习模型。

2 优化问题

并不是训练损失大就一定是模型的问题,也有可能是优化做的不好。

一般只会使用梯度下降进行优化,这种优化的方法有很多的问题。可能卡在局部最小值,参数再怎么优化也无法找到损失低的函数

模型中存在着某个函数的损失是够低的,梯度下降没有找到这一个函数。

怎么判断是模型问题还是优化问题呢?可以通过比较不同的模型来判断。比如20层的网络和56层的网络:

显然,56层的网络虽然更复杂,但是损失还更高,说明他的优化没做好。

3 过拟合

如果模型的自由度很大的话,它可以产生非常奇怪的曲线,导致训练集上的结果好,测试集上的损失很大。

解决方法1

增加训练集,比如做数据增强。数据增强就是根据问题的理解创造出新的数据。比如左右翻转图片。数据增强需要根据对数据的特性以及要处理的问题的理解,来选择合适的数据增强的方式。

解决方法2

限制模型的灵活性。模型最好跟背后产生数据的过程一样。比如都是二次函数。

  • 给模型比较少的参数。减少深度学习的神经元数量,或者让模型共用参数,让一些参数保持相同的数值。全连接网络(fully-connected network)其实是一个比较有灵活性的架构,而卷积神经网络(Convolutional Neural Network,CNN)是一个比较有限制的架构。CNN 是一种比较没有灵活性的模型,其是针对图像的特性来限制模型的灵活性。所以全连接神经网络,可以找出来的函数所形成的集合其实是比较大的,CNN 所找出来的函数,它形成的集合其实是比较小的,其实包含在全连接网络里面的,但是就是因为CNN 给了,比较大的限制,所以 CNN 在图像上,反而会做得比较好
  • 用比较少的特征
  • 还有别的方法,比如早停(early stopping)、正则化(regularization)和丢弃法(dropoutmethod)
  • 但是如果限制太多,就会出现模型偏差。

模型的复杂程度,或这样让模型的灵活性越来越大。但复杂的程度和灵活性都没有给明确的定义。比较复杂的模型包含的函数比较多,参数比较多。如图 2.10 所示,随着模型越来越复杂,训练损失可以越来越低,但测试时,当模型越来越复杂的时候,刚开始,测试损失会跟著下降,但是当复杂的程度,超过某一个程度以后,测试损失就会突然暴增了。这就是因为当模型越来越复杂的时候,复杂到某一个程度,过拟合的情况就会出现,所以在训练损失上面可以得到比较好的结果。在测试损失上面,会得到比较大的损失,可以选一个中庸的模型,不是太复杂的,也不是太简单的,刚刚好可以在训练集上损失最低,测试损失最低。

4 交叉认证

不能光靠损失低选择最优模型,因为损失可能也是随机的在数据集上的表现。

比较合理选择模型的方法是把训练的数据分成两半,一部分称为训练集(training set),一部分是验证集(validation set)。比如 90% 的数据作为训练集,有 10% 的数据作为验证集。在训练集上训练出来的模型会使用验证集来衡量它们的分数,根据验证集上面的分数去挑选结果

随机分验证集,可能会分得不好,分到很奇怪的验证集,会导致结果很差,如果有这个担心的话,可以用 k 折交叉验证(k-foldcross validation),如图 2.11 所示。k 折交叉验证就是先把训练集切成 k 等份。在这个例子,训练集被切成 3 等份,切完以后,拿其中一份当作验证集,另外两份当训练集,这件事情要重复 3 次。即第一份第 2 份当训练,第 3 份当验证;第一份第 3 份当训练,第 2 份当验证;第一份当验证,第 2 份第 3 份当训练。

5 不匹配

不匹配指的是训练集和测试集的分布不同,训练集无法模拟测试集的情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值