神经网络正则化之BN/LN/GN的原理

BN层用于加速训练,防止梯度消失,通过拉回激活值分布至标准正态分布。γ和β用于保持层间信息。LayerNorm沿通道维度归一化,而InstanceNorm针对每个样本的通道单独计算。GroupNorm介于两者之间,按通道分组归一化,提供更好的灵活性。

1. BN层原理

torch.nn.BatchNorm2d(num_features, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True,device=None,dtype=None)

  • 为什么用BN?
    加速训练。之前训练慢是因为在训练过程中,整体分布逐渐往非线性函数的取值区间的上下限端靠近(参考sigmoid函数,大的正值或负值),链式求导导致低层的神经网络梯度消失。BN就是将越来越偏的分布强行拉回(标准)正态分布,使得激活值落在非线性函数对输入比较敏感的区域,这样输入小的变化就会导致损失函数较大变化,让梯度变大,避免梯度消失问题。

  • 为什么要给BN的分布乘以可学习参数γ\gammaγβ\betaβ?
    如果强行归一化为标准正态分布,则之前该层学习到的分布也丢失信息。引入这两个重构参数,来使得我们的网络中可以学习恢复出原始网络要学习的特征分布.

  • 公式(torch):
    y=x−E[x]Var[x]+ϵ×γ+β y = \frac{x-E[x]}{\sqrt{Var[x]+\epsilon}}\times \gamma + \beta y=Var[x]+ϵ xE[x]×γ+β
    在这里插入图片描述

  • 反向传播.
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k6uCO3wH-1689670017182)(:/b9265fb96a1348ee97121a7aba9a92be)]

  • 均值和方差是在mini-batch的每一个维度上分别计算的

  • 因为是再CC

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值