『PyTorch』正则化

1. 正则化

  • 减小方差的策略

误 差 = 偏 差 + 方 差 + 噪 声 \Large误差=偏差+方差+噪声 =++

  • 偏差
    偏差度量了学习算法的期望预测和真实结果的偏离程度,即刻画了学习算法的本身的拟合能力
  • 方差
    方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响
  • 噪声
    噪声则表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界

在这里插入图片描述

2. 减小方差的策略

c o s t = 1 n ∑ i = 1 n l o s s + r e g u l a r i z a t i o n _ t e r m cost=\frac{1}{n}\sum_{i=1}^nloss + regularization\_term cost=n1i=1nloss+regularization_term

2.1 L1正则化

  • 正则项: ∑ l = 1 L ∣ ∣ W [   l   ] ∣ ∣ m 1 \large\displaystyle\sum_{l=1}^{L}||W^{[\,l \,]}||_{m_1} l=1LW[l]m1,其中 l l l 是层号

2.2 L2正则化(权值衰减)

  • 正则项: ∑ l = 1 L ∣ ∣ W [   l   ] ∣ ∣ F 2 \large\displaystyle\sum_{l=1}^L||W^{[\, l\,]}||^2_F l=1LW[l]F2,其中 l l l 是层号

所以,我们在实际应用中,目标函数就为
o b j = L o s s + λ 2 ∑ l = 1 L ∣ ∣ W [   l   ] ∣ ∣ F 2 obj = Loss + \frac{\lambda}{2}\sum_{l=1}^L||W^{[\, l\,]}||^2_F obj=Loss+2λl=1LW[l]F2
其中, λ \lambda λ 就是超参数,通常 λ ∈ ( 0 , 1 ) \lambda \in(0,1) λ(0,1)

  • 使用(以随机梯度下降为例):

    optim.SGD(params, lr=required, momentum=0, dampening=0, weight_decay=0, nesterov=False)
    

此处的参数weight_decay就是L2正则化的超参 λ \lambda λ

3. Dropout

随机失活一定概率的中间层神经元,在修改后的网络进行前向传播和误差反向传播,在一个mini-batch执行完后,继续对另一个mini-batch重复此操作。

nn.Dropout(p=0.5, inplace=False)
  • 主要参数:

    • p: 失活概率,也就是被舍弃的神经元的概率,一般默认0.5,因为可以生成的网络种类最多,增强泛化能力
  • 一般Dropout放在Convolution层或Linear层之前,也就是激活函数的后面

一般代码实现是在训练时,权重乘以 1 1 − p \displaystyle\frac{1}{1-p} 1p1,这样在测试时,不用对网络进行调整。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值