深度学习中的过拟合和欠拟合

原文地址:https://blog.csdn.net/willduan1/article/details/53070777

    上面这篇文章总结的很好,我没有什么想多说的,就总结几点。

    首先,欠拟合是在训练和预测都会出现不好的情况,其实简单想想,如果模型在训练的时候都会表现不好,多半是训练的模型不够复杂,不是一个良好的模型,所以这时候应该优化一下原来的模型,为模型增加一些新的参数等。

    过拟合是指在训练数据上表现的很好但是对于新出现的数据表现不好,这里可能有两个原因,一是样本数量过少,二是参数太多模型过于复杂,所以能够拟合更复杂的特征内容。这时我们可以增加样本的数量来改进。

   对于欠拟合和过拟合,其实举几个例子就会让人很容易理解。我们以追求一个女孩为例,什么是欠拟合,就是你对她不是很理解,也许你只知道她几岁、多高、体重等,但是她的其他参数你并不了解,比如说她爱吃什么、喜欢什么电影之类,你都不了解,这就叫做欠拟合。过拟合就是你把你前女友的爱好套用到现在在追求的女孩上,也就是说你以为你的前女友爱吃的东西,爱看的电影现在你追的女孩也一样喜欢,当然这是不可能的啦,每个人的爱好都是不一样的。所以这就是为什么出现欠拟合的时候会在训练集表现良好,但是出现新数据的时候差别很大的原因了。 

    在现在以深度学习为技术基础的工程实现方面来说,通常会把拿到的所有的样本分成三份(这个在google的学习视频中有讲过),训练集、验证机和测试集。

    训练集:用来学习的样本通常占样本数据的大部分70%,80%甚至更多,训练集一般用来确定网络中的待定系数。

    验证集:用来调整分类器的样本集,在训练的过程中,网络模型会立刻在验证集中进行验证,我们就能在这个验证数据集上观察到我们的模型的表现如何,损失函数有没有下降,准确率有没有提高。

    测试集:为了在训练后测试模型的能力而设置的一小部分数据集。

    验证集是我们用来预防过拟合的手段之一,在使用深度学习进行训练的时候一般都会设置一个验证集。tensorflow在训练过程中在用训练集进行训练的同时也将模型在验证集上做一个测试。一般来说,训练过程中损失函数是越来越小的而准确率是在不断升高的,这是因为在训练过程中,通过不断学习更深层的信息,损失函数是会不断进行调整的。但是有的时候你会发现这么一种现象就是损失函数Loss在下降到一定程度后突然又开始上升,或者准确率在达到一定程度的时候又开始下降,其实这时候就是出现过拟合的时候,我们可以在这点开始的时候停止训练。


    这篇文章记录我对过拟合和欠拟合的一些看法,也记录解决他们的方法。当然了,由于才疏学浅,肯定有周到的地方,欢迎大家的批评与指正。

    


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值