3.29-机器学习任务攻略

如果今天出问题了,问题就是在testing data上的loss值太大了

先讲怎么判断问题出在哪儿,注意这里的着重点,一定是先看training data上的loss。问题是testing data上的情况不好,但是检查问题还是得看training上的。

1.如果test data上的loss很大(这就是出现的问题),并且training data上的loss也很大,那就是training中就出了问题。

2.training data上的loss很小,


training data上的loss很大,有两种原因,系统偏差和优化做的不够好

1.系统偏差就是说硬件不行,模型设计的太简单了,简单到根本就不包括最优解的small loss,如同大海捞针但是针根本就不在大海里面。

解决办法:重新设计model,让它弹性更大,more flexible。比如从只考虑昨天一天的数据,到考虑过去56天的数据;比如从线性到深度学习多个很多layer。在某种程度上讲,增加层数一定会让这个大海有更大的容量,更大的可能覆盖最佳loss的那一组θ。

2.optimization没做好,相当于大海里有针,但是目前的方法(梯度下降)找不到这个最值,它只能找到极值,它找不到针。这个没办法,除非用其他的优化方法。

如图,黄色就是最小的loss,带※的θ是model能给出的最好的一组,蓝色是model能包括的θ的多少。

那怎么判断training data上的loss很大是哪个原因造成的,有公式方法可以用:

用同样的训练数据,训练不同大小的model,因为层数更多的网络效果就是会比层数少的好。那么如果小的网络能找到很低的loss,而大的网络找不到,那么就是优化没做好。注意这里不是testing data上的loss比较,这里是training data上的。如果是testing上的,那就有可能是过拟合,但是training上的是铁板钉钉的有能力排名,深度的方法就是会比非深度的能找到更好的loss,层数多的就是比层数小的更有弹性,能找到更小的loss,如果没有,就是优化没做好。

并且先用小的网络来做,能帮你看清loss下限。


如果现在training data上的loss小,但是testing data上的loss大,那就是过拟合over fitting。如果都小那就是皆大欢喜没什么问题。

先论证over fitting能存在吗:

举一个极端的例子,今天的function定义为如果x存在在train data里面,就输出它对应的y,如果没有,就输出random值,那么这个function在traindata上的loss会非常小,是0,因为全对。而在test data上面会非常大,因为他输出random。这个function被叫做一无是处的function。

over fitting的原因:

如图,蓝色是train的,黄色是预测的test的

本身样本点就是真实情况的采样,这里的线就是真实情况,点就是我们观察到的,采到的数据点

层数多的model弹性会很大,那么在没有数据点的地方,他会因为弹性太大而有一些freestyle,过度发挥,反而就偏离了真实值

那么可以很容易的看出来,增加data的数量可以抑制over fitting,相当于把这个蓝色的点增加,那么就越贴近真实情况,就不会有那么多的过度发挥。

这个增加也有两种方法:

1.采集更多

2.数据增强data augmentation。比如把图片镜像翻转,截取一部分,拼合起来等。但是一定要合理,比如一只猫,你可以镜像可以缩放截取,但是如果你把它上下翻转,那就是真实世界不存在的东西,这反而会让机器学到怪怪的东西。

也很容易看出来另一种方法是让它的弹性不要那么大,可以加一些限制,比如减小层数之类的,可以用到领域知识来设计具体的。比如图中,可以给限制说function就是一个二次函数,那就不会这样freestyle了。

还有很多其他方法,以后会讲到。


所以会发现,现在的结果就是这样的,如图,在train上,越复杂一定越好,但是在test上,越复杂反而不会越好。(这里的好,一律是loss值小)

那么,明显的选出中间的这个就是最好的结果。如何选出这个中间的结果呢。

很简单的思路就是我找一系列model来跑,选loss最小的这个。但是前提是不让所有数据都作为train,而是将training set分为training set和validation set验证集,然后选择validation上mse最小的model就好了。这样的话就不会出现一无是处的function那样了。如果没有验证集,那么这个模型可信度其实不高。

关于如何分validation也有讲一种方法

思路是先随机分三等分,两个做train,一个做valid。然后分三种情况,让每个部分都当一次valid,然后比如有三个model,按照这三中情况都训练,最后求avg mse,然后这个最小的就是最好的们就可以拿它去在public和private上训练了


其实框图里面还有一种与over fitting对应的情况叫做mismatch错配。他就是比如说按照观看规律周五周六学习的人少,但是因为老师上节课说要预测观看人数,导致很多人来点击了视频,所以真实结果就与预测的结果有很大的偏差。错配就是指这种测试资料与训练资料不匹配的情况。比如下图,train是正常的图,test是简笔画的框图。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值