Pytorch学习08——过拟合欠拟合

1、基础概念

  • ground-truth:正确标记的数据
  • noise:模型与实际之间的不可避免的观察误差等
  • model capacity:模型的能力,指可以表达的分布情况有多复杂。一次表达式和高次表达式的能力相比,显然高次的能力更强

2、欠拟合&过拟合

  • estimated表示模型复杂度,ground-truth表示真实数据复杂度
  • estimated < ground-truth,欠拟合
    训练bad、测试bad
  • ground-truth < estimated,过拟合
    训练good、测试bad

3、过拟合检测与减少

3.1 检测过拟合

  • 划分数据集:train、validation、test
  • 使用train进行训练,backward
  • 利用val进行反馈,取哪一个时间戳上的参数,防止过拟合
  • test不能用来反馈、只能测试

3.2 k-fold交叉验证

  • 将test和val混合在一起然后平均分k份
  • 每次取一份作为val、k-1份作为test进行训练

3.3 减少过拟合

  • 奥卡姆剃刀定理:不是必要的就不用
几种减少过拟合的方式
(1)more data

(2)constraint model complexity
shallow
regularization

(3)dropout

(4)data augmentation

(5)early stopping

3.3.1 regularization / weight decay
在这里插入图片描述
其中 θ 代表了模型的参数,加入 λ 之后可以迫使 θ 趋于0

  • regularization的分类
    在这里插入图片描述

3.3.2 动量

  • momentum(动量,源自惯性的思想)
    梯度下降时:同时考虑当前梯度方向和历史梯度方向,新的梯度方向为二者加权求和
    在这里插入图片描述

3.3.3 学习率衰减

  • lr decay
  • 学习率的衰减可能引起loss的突降,因为在训练一段时间后,loss可能接近最小值但始终无法到达,而采用小的 lr 可能刚好到达
  • 使用:ReduceLROnPlateau(优化器,‘min’)
    同时监视损失函数是否一直在保持下降

3.3.4 early stop

  • 一般认为,validation的表现随训练epoch先上升再下降,early stop就是让其停在最高点

3.3.5 dropout

  • pytorch和tensorflow对于随机失活的概率设置刚好相反
  • pytorch:torch.nn.Dropout§ 里面的p是失活概率
  • tensorflow:tf.nn.dropout§ 里面的p是存活概率
  • 用于训练时才失活:net_dropped.train()
  • 用于测试时不失活:net_dropped.eval()

3.3.6 stochastic gradient descent(随机梯度下降)

  • stochastic:不是完全随机,而是对于某个x,对应生成f(x)符合某种分布

  • deterministic:确定的,对于某个x,确定生成f(x)

  • 实际中SGD的意义在于,每次求解梯度的时候不是求所有样本的梯度均值的求解,而是随机选取一个sample,求解该sample的梯度均值,节省显存,速度更快
    在这里插入图片描述
    在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值