【PyTorch】07正则化

7 PyTorch的正则化

7.1 正则化之weight_decay

Regularization:减小方差的策略,从而解决过拟合问题,常见的方法有:L1正则化和L2正则化

weight decay(权值衰减)= L2 Regularization

在PyTorch的优化器中提供了 weight decay(权值衰减)的实现

【PyTorch】6.1 正则化之weight_decay

误差可分解为:偏差、方差与噪声之和,即误差=偏差+方差+噪声

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

image-20220520152529937

L1正则项 ∑ i = 1 N ∣ w i ∣ \sum\limits_{i = 1}^N {\left| {{w_i}} \right|} i=1Nwi

L2正则项 ∑ i = 1 N w i 2 \sum\limits_{i = 1}^N {w_i^2} i=1Nwi2

在这里插入图片描述

7.2 正则化之Dropout

Dropout随机失活神经元

  • 随机:dropout probability
  • 失活:weight=0

注意事项下面二选一即可解决【权值数据尺度变化/分布异常,导致训练困难】

  1. 测试模式时,所有权重需乘以 1 − p 1-p 1p
  2. PyTorch实现细节:】训练模式时,所有权重均乘以 1 1 − p \frac{1}{1-p} 1p1,即除以 1 − p 1-p 1p

【PyTorch】6.1 正则化之Dropout

在这里插入图片描述

  • nn.Dropout()
    image-20220520163733607
    功能:Dropout层

    参数说明:

    • p:被舍弃概率,失活概率

7.3 Batch Normalization

Batch Normalization(BN)批标准化目的是使一批(Batch)所对应的feature map的数据满足均值为0、方差为1的分布规律
【重点】Batch Normalization详解以及PyTorch实验

  • 批:一批数据,通常为mini-batch
  • 标准化:0均值,1方差

使用之处卷积层之后,激活函数层之前

优点:

  1. 可以更大学习率,加速模型收敛
  2. 可以不用精心设计权值初始化
  3. 可以不用dropout或较小的dropout
  4. 可以不用L2或者较小的weight decay
  5. 可以不用LRN(局部响应标准化)

【PyTorch】6.2 Batch Normalization

在这里插入图片描述

  • _BatchNorm类
    image-20220520211642361
    • nn.BatchNorm1d()

    • nn.BatchNorm2d()

    • nn.BatchNorm3d()

      • 参数说明:
        • num_features:一个样本特征数量(最重要)
        • eps:分母修正项,防止分母为零
        • momentum:指数加权平均估计当前mean/var
        • affine:是否需要affine transform
        • track_running_stats:是训练状态还是测试状态
      • 主要属性:
        • running_mean:均值
        • running_var:方差
        • weight:affine transform中的gamma
        • bias:affine transform中的beta

      在这里插入图片描述
      注意事项:

      • 训练时:均值和方差采用指数加权平均计算

        • 计算公式:

          running_mean=(1-momentum)*pre_running_mean+momentum*mean_t

          running_var=(1-momentum)*pre_running_var+momentum*var_t

      • 测试时:均值和方差采用当前统计值

      在这里插入图片描述

7.4 Normalization in DL

Normalization:可以约束数据尺度,避免出现数据梯度爆炸或者梯度消失的情况,利于模型训练

常见的Normalization:

  1. Batch Normalization(BN)
  2. Layer Normalization(LN)
  3. Instance Normalization(IN)
  4. Group Normalization(GN)

【PyTorch】6.2 Normalizaiton in DL

img

  • Layer Normalization(LN)
    在这里插入图片描述
    起因:BN不适用于变长的网络,如RNN

    思路:逐层计算均值和方差

    注意事项:

    • 不再有running_mean和running_var
    • gamma和beta为逐元素的
  • nn.LayerNorm()
    在这里插入图片描述
    参数说明:

    • normalized_shape:该层特征形状,即C*H*W
    • eps:分母修正项,防止分母为零
    • elementwise_affine:是否需要affine transform
  • Instance Normalization(IN)

    起因:BN在图像生成(Image Generation)中不适用

    思路:逐Instance(channel)计算均值和方差

  • nn.InstanceNorm()
    在这里插入图片描述
    参数说明:

    • num_features:一个样本特征数量(最重要)
    • eps:分母修正项,防止分母为零
    • momentum:指数加权平均估计当前mean/var
    • affine:是否需要affine transform
    • track_running_stats:是训练状态还是测试状态
  • Group Normalization(GN)
    在这里插入图片描述
    起因:小batch样本中,BN估计的均值和方差不准确

    思路:数据不够,通道来凑

    注意事项:

    • 不再有running_mean和running_var
    • gamma和beta为逐通道(channel)的

    应用场景:大规模(小batch size)任务

  • nn.GroupNorm()
    在这里插入图片描述
    参数说明:

    • num_groups:分组数,通常设置为 2 n 2^n 2n

    • num_channels:通道数(特征数)

    • eps:分母修正项,防止分母为零

    • affine:是否需要affine transform

img

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值