课程笔记:权重衰减和dropout

正则化:
在这里插入图片描述
上面这条曲线表示验证集的loss情况;下面这条曲线表示训练集的loss情况
方差:表示的是训练集与验证集之间的差异
在这里插入图片描述
在这里插入图片描述

L2正则化

正则化:降低方差,解决过拟合
L1正则化:要cost与wi的绝对值之和都要小,参数解发生在坐标轴上,表明参数解有稀疏项。
在这里插入图片描述
L2正则化又称为权值衰减
在参数更新中多了一个(1-lamda),lamda大于0小于1,故因此L2正则化又称为权值衰减。
权值不断减小,以至于模型没那么复杂
在这里插入图片描述
在pytorch中,L2正则化加载在optimizer中实现

optim_weight_decay = torch.optim.SGD(net.parameters(), lr=lr_init, momentum=0.9, weight_decay=1e-2)

在sgd中:
L2正则化通过一下两个等式实现权值衰减:即在grad之后加上lamdaw
d_p=d_p+(p
weight_decay)
p=p-(d_p*group[‘lr’])
在这里插入图片描述

正则化Dropout

dropout:(降低方差;类似于L2正则化,收缩权重)
使某些神经元的weight=0,无法与上层或下层的神经元进行连接
作用:
1)减少依赖(不会给某些神经元权重过大的机会,解除过度依赖)
2)权重数值约束
在这里插入图片描述
但是,训练时由于对神经元进行Dropout后,神经元的数量尺度会缩小为原来的70%,以某一个神经元来说,他与上层中没有失活的神经元进行连接,而测试时不进行Dropout,以某一个神经元来说,他与上层所有的神经元进行连接。故训练阶段与测试阶段的神经元连接的尺度不匹配。
在pytorch中,故在训练时,用权重乘以1/(1-p),抵消训练阶段数据尺度的变化,在测试时无需再缩放权重,加速收敛。
在这里插入图片描述
dropout放在需要dropout层的前一层,常见的形式:
dropout—>linear----->Relu
通常在输出层前不用加dropout

在训练时,dropout起作用使某些神经元失活(通过net.train()函数控制是训练阶段)
在测试及验证时,dropout不起作用,神经元全部存在(通过net.eval()函数控制是测试及验证阶段)

net.train()和net.eval()主要是对self.training进行控制:
1)True:为训练状态
2)False:为测试及验证状态
默认为True状态
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值