理解各种 Normalization

article/2025/8/15 23:10:48

引言

Batch Normalization(BN)似乎已经成为构建网络不可缺少的一部分,它是如此“熟悉”以至于我天天使用却不明白原理。对此,本文梳理了 BN 的意义,实现以及一系列变体:Layer Norm,Instance Norm 和 Group Norm,这些变体和 BN 的唯一区别是均值和方差的统计范围不同。


Batch Normalization:2015

为了解决什么问题?

在 BN 出现之前,为了稳定地训练深度网络,需要小心地初始化网络参数,使用较低的学习率,来避免由于 saturating nonlinearities 引起的梯度消失等问题 ,这大大降低了网络的训练效率。作者认为,训练不稳定的原因是网络每一层输入的分布随着网络更新不断发生改变,网络需要不断去学习新的分布,存在 internal covariate shift。通过 BN,使每一层的输入大致满足均值为0,方差为1,从而加速训练,可以使用更大的学习率,不需要过分关注网络初始化,并且可以在一定程度上舍弃 dropout。

实现原理

一种直观的解决方法是对网络每一层的输入进行标准化,假设 x x x 是某一层的输入, X \mathcal{X} X 是训练集在这一层输入的集合,那么 norm 操作可以表示为:
x ^ = N o r m ( x , X ) \hat{x} = Norm(x, \mathcal{X}) x^=Norm(x,X)
这种 norm 方式十分昂贵,因为它需要在整个训练集上统计协方差矩阵 C o v [ x ] = E x ∈ X [ x x T ] − E [ x ] E [ x ] T Cov[x] = E_{x \in \mathcal{X}}[xx^T] - E[x]E[x]^T Cov[x]=ExX[xxT]E[x]E[x]T,因此,希望找到一种简化方法,不需要在整个训练集上统计,并且可导。对此,作者增加了两种优化:

  1. 独立 norm 输入的每一维而不是联合 norm 整个输入,且统计范围改为 mini-batch

假如某一层的输入有 d 维 x = ( x 1 , x 2 , . . . , x d ) x = (x^1,x^2,...,x^d) x=(x1,x2,...,xd),将独立 norm 每一维,且此时均值和方差的统计范围是本次的 batch,用 batch 上的统计结果近似整个训练集的统计结果,因此使用 BN 时,一般把 batch size 设置的大一些,当 batch size = 1 时,相当于没有使用 BN
x ^ k = x k − E [ x k ] V a r [ x k ] \hat{x}^k = \frac{x^k - E[x^k]}{\sqrt{Var[x^k]}} x^k=Var[xk] xkE[xk]

  1. 引入参数 γ k , β k \gamma^k,\beta^k γk,βk

仅仅 norm 输入可能会改变网络层的表达,例如,对 sigmoid 的输入进行 norm 会将非线性限制在线性区域,为了解决这个问题,作者认为 norm 层应该也能表达 identity function,因此,针对每个 x ^ k \hat{x}^k x^k,还引入一对参数 γ k , β k \gamma^k,\beta^k γk,βk
y k = γ k x ^ k + β k y^k = \gamma^k\hat{x}^k + \beta^k yk=γkx^k+βk
BN算法流程如下,经计算 BN 是可导的[1]:
I n p u t : Values of  x over a mini-batch  B = { x 1... m } ; Parameters to be learned  γ , β O u t p u t : { y i = B N γ , β ( x i ) } μ B = 1 m ∑ i = 1 m x i σ B 2 = 1 m ∑ i = 1 m ( x i − μ B ) 2 x ^ i = x i − μ B σ B 2 + ϵ y i = γ x ^ i + β ≡ B N γ , β ( x i ) \begin{aligned} &\bold{Input:}\ \text{Values of } x \text{ over a mini-batch } \mathcal{B}=\{x_{1...m}\};\\ &\qquad \quad \ \ \ \text{Parameters to be learned } \gamma,\beta\\ &\bold{Output:}\ \{y_i = BN_{\gamma,\beta}(x_i)\}\\ &\qquad \mu_{\mathcal{B}} = \frac{1}{m}\sum^m_{i=1}x_i\\ &\qquad \sigma^2_{\mathcal{B}} = \frac{1}{m}\sum^m_{i=1}(x_i-\mu_{\mathcal{B}})^2\\ &\qquad \hat{x}_i = \frac{x_i-\mu_{\mathcal{B}}}{\sqrt{\sigma^2_{\mathcal{B}} + \epsilon}}\\ &\qquad y_i = \gamma\hat{x}_i + \beta \equiv BN_{\gamma,\beta}(x_i) \end{aligned} Input: Values of x over a mini-batch B={x1...m};   Parameters to be learned γ,βOutput: {yi=BNγ,β(xi)}μB=m1i=1mxiσB2=m1i=1m(xiμB)2x^i=σB2+ϵ xiμByi=γx^i+βBNγ,β(xi)
其中 ϵ \epsilon ϵ 是为了稳定计算引入的常数。

推理过程

推理过程中,每一层学习到的 γ k , β k \gamma^k,\beta^k γk,βk 固定,且每一层的 E [ x ] , V a r [ x ] E[x],Var[x] E[x],Var[x] 不再是 batch 上的统计结果,而是训练集上的统计结果,因此推理过程中的 BN 是一个线性映射。训练中会记录每一个 batch 的 μ B , σ B 2 \mu_{\mathcal{B}},\sigma^2_{\mathcal{B}} μB,σB2,推理时利用它们的移动平均近似训练集上的 E [ x ] , V a r [ x ] E[x],Var[x] E[x],Var[x]
E [ x ] ← E B [ μ B ] V a r [ x ] ← m m − 1 E B [ σ B 2 ] y = γ V a r [ x ] + ϵ ⋅ x + ( β − γ E [ x ] V a r [ x ] + ϵ ) \begin{aligned} E[x] &\gets E_{\mathcal{B}}[\mu_{\mathcal{B}}]\\ Var[x] &\gets \frac{m}{m-1}E_{\mathcal{B}}[\sigma^2_{\mathcal{B}}]\\ y &= \frac{\gamma}{\sqrt{Var[x]+\epsilon}} \cdot x + (\beta - \frac{\gamma E[x]}{\sqrt{Var[x]+\epsilon}}) \end{aligned} E[x]Var[x]yEB[μB]m1mEB[σB2]=Var[x]+ϵ γx+(βVar[x]+ϵ γE[x])

Layer Normalization:2016

Layer Normalization(LN)认为 BN 不好应用到 RNN 上,且当 batch size = 1 时 BN 也无法使用(在 RNN 中,当序列很长时,由于存储容量的限制使 batch size 不能设置的很大)。其统计范围是数据的通道,设网络某一层的输入是 x ∈ R B × C × H × W x \in \mathbb{R}^{B \times C \times H \times W} xRB×C×H×W,B,C,HW 分别代表数据的 batch size,通道数和空间维度,有:
μ b = 1 C ∑ i = 1 C x i σ b 2 = 1 C ∑ i = 1 C ( x i − μ b ) 2 \begin{aligned} \mu_{b} &= \frac{1}{C}\sum^C_{i=1}x_i\\ \sigma^2_{b} &= \frac{1}{C}\sum^C_{i=1}(x_i-\mu_{b})^2 \end{aligned} μbσb2=C1i=1Cxi=C1i=1C(xiμb)2

Instance Normalization:2017

IN 是研究风格迁移问题时提出的,作者认为迁移图像的对比度应该和风格图像相似,生成器应该丢弃内容图像的对比度信息,从而提出 IN 为了 norm 图像中的对比度信息。

Intuitively, the normalization process allows to remove instance-specific contrast information from the content image, which simplifies generation.

设网络某一层的输入是 x ∈ R B × C × H × W x \in \mathbb{R}^{B \times C \times H \times W} xRB×C×H×W,B,C,HW 分别代表数据的 batch size,通道数和空间维度,有:
μ b , c = 1 H W ∑ i = 1 H W x i σ b , c 2 = 1 H W ∑ i = 1 H W ( x i − μ b , c ) 2 \begin{aligned} \mu_{b,c} &= \frac{1}{HW}\sum^{HW}_{i=1}x_i\\ \sigma^2_{b,c} &= \frac{1}{HW}\sum^{HW}_{i=1}(x_i-\mu_{b,c})^2 \end{aligned} μb,cσb,c2=HW1i=1HWxi=HW1i=1HW(xiμb,c)2

Group Normalizaztion 2018

作者认为当 batch size 很小(例如 batch size = 2)时,BN 的性能会剧烈下降,GN 在 batch size 很小时性能比 BN 好,且在 batch size 大时两者性能相当,GN 将通道分成 groups,然后在 groups 上统计均值和方差。设网络某一层的输入是 x ∈ R B × G × H × W x \in \mathbb{R}^{B \times G \times H \times W} xRB×G×H×W,B,G,HW 分别代表数据的 batch size,组数和空间维度,有:
μ b , g = 1 G ∑ i = 1 G x i σ b , g 2 = 1 G ∑ i = 1 G ( x i − μ b , g ) 2 \begin{aligned} \mu_{b,g} &= \frac{1}{G}\sum^G_{i=1}x_i\\ \sigma^2_{b,g} &= \frac{1}{G}\sum^G_{i=1}(x_i-\mu_{b,g})^2 \end{aligned} μb,gσb,g2=G1i=1Gxi=G1i=1G(xiμb,g)2

总结

BN,LN,IN,GN 在理解 BN 的基本原理后,用一张图记忆即可:
在这里插入图片描述

参考

[1] Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
[2] Layer Normalization
[3] Instance Normalization: The Missing Ingredient for Fast Stylization
[4] Group Normalization


http://chatgpt.dhexx.cn/article/Hi2b6nm7.shtml

相关文章

Layer Normalization解析

原论文名称:Layer Normalization 原论文地址: https://arxiv.org/abs/1607.06450 之前有讲过Batch Normalization的原理,链接,今天来简单讲讲Layer Normalization。Layer Normalization是针对自然语言处理领域提出的,…

Eigen中norm、normalize、normalized的区别

Eigen中norm、normalize、normalized的区别 norm() 对于Vector&#xff0c;norm返回的是向量的二范数&#xff0c;即 例如&#xff1a; Vector2d vec(3.0,4.0); cout << vec.norm() << endl; //输出5 对于Matrix&#xff0c;norm返回的是矩阵的弗罗贝尼乌斯范数…

归一化函数 normalized()

1. 归一化定义与作用 归一化就是要把需要处理的数据经过处理后&#xff08;通过某种算法&#xff09;限制在你需要的一定范围内。 首先归一化是为了后面数据处理的方便&#xff0c;其次是保证程序运行时收敛加快。归一化的具体作用是归纳统一样本的统计分布性。归一化在0-1之间…

手机锁屏后微信收款语音不播报?-by:nixs

荣耀10&#xff0c;之前用荣耀7x就没这毛病&#xff01; 我确认与设置无关&#xff0c;微信语音播报是开启状态&#xff0c;通知设置都是允许的&#xff0c;我更不会二到把手机关静音&#xff01; 反正就是黑屏待机时&#xff0c;没有任何声音&#xff0c;一但点亮屏幕就有语音…

App微信小程序测试流程及要点

1 APP测试基本流程 1.1流程图 1.2测试周期 测试周期可按项目的开发周期来确定测试时间&#xff0c;一般测试时间为两三周&#xff08;即15个工作日&#xff09;&#xff0c;根据项目情况以及版本质量可适当缩短或延长测试时间。正式测试前先向主管确认项目排期。 1.3测试资源…

微信小程序,分享如何封装一个全局支持暂停,拖动等各类操作的音视频等多媒体管理器

不知不觉埋头于业务已许久&#xff0c;距离上一篇分享应该很久很久以前&#xff0c;具体何时&#xff0c;已无从知晓。慢慢的开始觉得锅有点热&#xff0c;感觉呼吸有点困难&#xff0c;温水里面的青蛙趁着腿还没完全麻木的时候&#xff0c;也想着开始重拾旧梦&#xff0c;稍微…

html微信登录密码输入密码,不用输密码,只要8个数字就能登录你的微信

不知道大家有没有遇到过这样的问题&#xff0c;就是当我们换新手机之后&#xff0c;在登录微信的时候就需要密码了。 打开凤凰新闻&#xff0c;查看更多高清图片 可是有些人记性不好&#xff0c;经常忘记微信登录密码&#xff0c;这该怎么办呢&#xff1f;今天小Q来教大家一招可…

微信上隐藏着6个功能,实在是太厉害了,真令人相见恨晚

很多人都说微信不太好用,那是因为你还没有找到好用的功能,如果你只会聊天和付款那就太out了,今天才知道,微信上隐藏着6个功能实在是太厉害了。 一、无线极速传输 微信不仅方便了生活,在办公上也是一个小能手,无需数据线就能与电脑相互传输文件,找到文件传输助手,将文件…

基于微信小程序音乐播放器的设计与实现毕业设计源码271156

Springboot音乐播放小程序的设计与实现 摘 要 本文设计了一种基于微信小程序的音乐播放器&#xff0c;系统为人们提供了方便快捷、即用即搜的音乐搜索播放服务&#xff0c;包括音乐资讯、音乐库推荐、交流论坛、注册登录、最近播放列表功能等&#xff0c;用户不仅能够方便快捷地…

微信按钮翻译中英对照表

申明&#xff1a;发文方便自己查阅&#xff0c;当然如对看到的朋友有所帮助&#xff0c;也是乐事一件。 代码中需要调用微信&#xff0c;翻译连续翻车&#xff0c;比如朋友圈&#xff0c;做个记录方便查阅&#xff1a; /** * 微信 中英文对照 * 微信 wechat * 朋友圈…

微信更新了 版本8.0.30

这次新功能包括&#xff1a; 朋友圈扩展文字输入区域&#xff1a;发朋友圈或朋友圈评论时&#xff0c;编辑文案&#xff0c;文本区域会随文字数量而增大。长按订阅号可以取消关注&#xff1a;在订阅号列表中&#xff0c;此前长按封面只有悬浮功能&#xff0c;更新后现在加入了…

android微信消息无提醒,OPPO手机微信消息不提醒怎么办?(附多种解决方法)

微信来新消息不提醒&#xff0c;不能第一时间看到微信消息&#xff0c;一般是设置不到位。现在就可以通过以下几步来进行排除解决。 小编以R9手机为例&#xff0c;这就告诉你们相关设置哈&#xff0c;一起来学习吧~~ OPPO手机微信消息不提醒怎么办&#xff1f;(附多种解决方法)…

ipad如何与手机微信连接服务器地址,如何设置微信在手机和ipad同步 - 卡饭网

微信怎么设置空白头像和昵称?iPhone手机设置微信空白头像和昵称的方法介绍 微信怎么设置空白头像和昵称?iPhone手机设置微信空白头像和昵称的方法介绍 iPhone手机应该如何设置微信空白名字和头像?微信头像往往能反映出一个人的性格,让自己的微信头像和别人不一样,彰显出自己…

苹果微信密码服务器,苹果微信怎么记住密码的登录

满意答案 tanwandewo 2020.09.14 采纳率&#xff1a;48% 等级&#xff1a;6 已帮助&#xff1a;210人 在进行手机各类密码设置的时候&#xff0c;总是会有一种这辈子不会忘的错觉&#xff0c;于是怎么复杂怎么来&#xff0c;忘记密码就崴泥了&#xff0c;悔恨啊…… 是不是看…

微信能用声音作为密码来登录了,你的应用也可以

自从苹果在iPhone上普及了指纹解锁,以个人生理特征作为密码的生物识别已经成为了越来越流行的身份鉴别手段,冲击着使用多年的传统文字密码方式。 毕竟,在脑袋里记住密码,真的不如用你独一无二的身体特征直接作为密码那么方便。 就说我们每天都在用的微信,现在也赶上这个潮…

模仿微信声音锁的实现(运用DTW算法)

自己写了模仿微信声音锁的一个android程序&#xff0c;先录两段相同的语音信号作为模板&#xff0c;解锁时通过对比输入语音和该两段语音模板的相似度&#xff0c;如果相似度高则解锁成功。 程序界面如下&#xff0c;仿照微信设置&#xff0c;当然跟原版比效果略渣。 launche…

微信声音锁会上传到服务器吗,微信声音锁:你再也不用担心忘记密码了

科客点评&#xff1a;声音登录并不是让用户重新说一遍原先设置的内容&#xff0c;而是可以根据声纹进行自动识别。 你微信密码是怎么设置的?用的QQ 密码?还是单独设立了一个?通常我们不会把微信登出&#xff0c;所以很少用到密码&#xff0c;以至于一旦需要用到微信密码的时…

微信声音锁会上传到服务器吗,微信的声音锁是什么样的操作?

原标题&#xff1a;微信的声音锁是什么样的操作&#xff1f; 说到微信的声音锁也许没有多少人注意过&#xff0c;今天简单介绍一下微信的声音锁功能。 声音锁的操作步骤&#xff1a; 在微信设置→账号与安全→声音锁&#xff0c;然后根据以下操作即可完成。 “声音锁”这个功能…

微信声音锁会上传到服务器吗,微信声音锁安全吗?微信声音锁可以换吗?

大家可能都知道了有一个微信声音锁&#xff0c;那么今天主要要跟大家分析的是微信声音锁安全吗?我想这个大家肯定想知道。那么微信声音锁可以换吗?关于这个问题小编都将在下文中为大家解答。详情请见微信声音锁安全吗?微信声音锁可以换吗? 1.微信声音锁安全吗? 微信声音锁…

微信声音锁会上传到服务器吗,微信声音锁原理是什么?微信声音锁安全吗?

微信声音锁是一种先进的技术&#xff0c;用户可以用声音给手机上锁&#xff0c;听起来还是很猛的哈。 关键词&#xff1a;声纹 所谓声纹(Voiceprint)&#xff0c;是用电声学仪器显示的携带言语信息的声波频谱。现代科学研究表明&#xff0c;声纹不仅具有特定性&#xff0c;而且…