Normalization Methods
概
整理一下各种normalization方法.
主要内容
对于每一层, 可以简化的理解为:
\]
其中\(h^{l}\)是前一层的输入, \(W, b\)分别为该层的权重和偏置, \(f\)是对应的激活函数.
但是仅按照这种方式搭建的网络训练不稳定还非常慢, 这也是为什么各种normalization方法被提出的初衷.
这些方法可以统一为:
\]
这里用\(g(\cdot)\)表示某种normalization方法.
为了方便起见, 另外令
y = g(x).
\]
总的示意图如下(图片来自Group Normalization):

Batch Normalization
该normalization方法思想是最朴素的, 即每一次我们都recentering一下数据:
\]
这里\(\mu,\sigma\)分别表示\(x\)的均值和标准差.
但是上述的标准化存在均值和标准差的估计问题, 故在训练中我们取一个batch作为估计:
\]
其中\(x^i, i=1,2,\cdots, n\)为一个batch的数据.
在实际中, 为了安全和可扩展, 采取如下形式:
\]
其中\(\gamma, \beta\)为weight 和 bias, \(\epsilon\)常取1e-5.
在训练中, 每次forward pass都会更新running_mean \(\mu\), running_var \(\sigma^2\):
\sigma^2 = (1 - m) \cdot \sigma^2 + m \cdot \hat{\sigma}^2.
\]
这里\(m\)是用于滑动平均的momentum, 这里采取这种形式是为了和Pytorch的实现保持一致, 其选择\(m=0.1\).
在evaluation中, 我们变使用\(\mu, \sigma^2\)来normalization:
\]
注: 在处理\(dim=1\)(即向量数据)的时候, 均值和方差的计算就是普通的, 但是\(dim=2\)的时候, 比如常见的卷积mapping, 其结构为\(N \times C \times H \times W\), 则其均值方差是对于每一个通道计算的, 即\(\mu,\sigma \in \mathbb{R}^C\), 同理\(\gamma, \beta \in \mathbb{R}^C\).
Layer Normalization
显然, batch normalization的batch size 不能太小, 而layer normalization 可以处理这一点, 因为它是针对单个样本而言的.
其同样采取
\]
的形式, 只是
\]
这里\(x_i\)表示\(x\)的第\(i\)个分量, 特征维度为\(H\).
注: 在Pytorch的实现中, \(\gamma, \beta\)都是element-wise的, 即如果我们选取\(C \times H \times W\), 则\(\gamma, \beta \in \mathbb{R}^{C \times H \times W}\).
Instance Normalization
instance normalization 主要是用于消除图片之间的contrast而提出的:
\]
注意, instance的normalization同样是基于单个样本而言的, 对于卷积层而言\(N \times C \times H \times W\):
\hat{\sigma} := \sqrt{\frac{1}{HW}\sum_i \sum_j (x_{ij} - \hat{\mu})^2},
\]
显然\(\hat{\mu}, \hat{\sigma} \in \mathbb{R}^C\). 对于向量数据而言, 和layernorm其实是一致的.
注: instance normalization 通常没有放射变换(即舍弃\(\gamma, \beta\)).
Group Normalization
GN则是根据通道\(C\)分成\(G\)个group, 对每一个group沿着\(H, W\)方向估计:
\hat{\sigma}_g := \sqrt{\frac{1}{(C / G) \cdot HW} \sum_{i=1}^H\sum_{j=1}^W\sum_{k=(g - 1)\cdot \frac{C}{G} + 1}^{g * \frac{C}{G}} (x_{kij} - \hat{\mu}_g)^2}, \\
g = 1, 2, \cdots, G.
\]
注: 这里假设\(C\)能够整除\(G\).
注: 当\(G=C\)的时候, GN 就是 IN, \(G=1\)的时候, GN就是LN.
Normalization Methods的更多相关文章
- 机器学习中的标准化方法(Normalization Methods)
希望这篇随笔能够从一个实用化的角度对ML中的标准化方法进行一个描述.即便是了解了标准化方法的意义,最终的最终还是要:拿来主义,能够在实践中使用. 动机:标准化的意义是什么? 我们为什么要标准化?想象我 ...
- JabRef 文献管理软件
JabRef 文献管理软件简明教程 大多只有使用LaTeX撰写科技论文的研究人员才能完全领略到JabRef的妙不可言,但随着对Word写作平台上BibTeX4Word插件的开发和便利应用,使用Word ...
- 大规模视觉识别挑战赛ILSVRC2015各团队结果和方法 Large Scale Visual Recognition Challenge 2015
Large Scale Visual Recognition Challenge 2015 (ILSVRC2015) Legend: Yellow background = winner in thi ...
- LaTeX 的对参考文献的处理
LaTeX 的对参考文献的处理实在是非常的方便,我用过几次,有些体会,写出来供大家 参考.当然,自己的功力还不够深,有些地方问题一解决就罢手了,没有细究. LaTeX 对参考文献的处理有这 ...
- BIBTeX制作参考文献
一篇关于Latex的参考文献的好文章!基本问题都能解答~ 文章来源:http://www.cnblogs.com/longdouhzt/archive/2012/06/21/2557965.html ...
- latex bib format
LaTeX 的对参考文献的处理实在是非常的方便,我用过几次,有些体会,写出来供大家参考.当然,自己的功力还不够深,有些地方问题一解决就罢手了,没有细究. LaTeX 对参考文献的处理有这么一些优点: ...
- Spiking-YOLO : 前沿性研究,脉冲神经网络在目标检测的首次尝试 | AAAI 2020
论文提出Spiking-YOLO,是脉冲神经网络在目标检测领域的首次成功尝试,实现了与卷积神经网络相当的性能,而能源消耗极低.论文内容新颖,比较前沿,推荐给大家阅读 来源:晓飞的算法工程笔记 公众 ...
- Video processing systems and methods
BACKGROUND The present invention relates to video processing systems. Advances in imaging technology ...
- 数据预处理中归一化(Normalization)与损失函数中正则化(Regularization)解惑
背景:数据挖掘/机器学习中的术语较多,而且我的知识有限.之前一直疑惑正则这个概念.所以写了篇博文梳理下 摘要: 1.正则化(Regularization) 1.1 正则化的目的 1.2 正则化的L1范 ...
随机推荐
- 重学Git(一)
一.最最最基础操作 # 初始化仓库 git init # 添加文件到暂存区 git add readme.md # 提交 git commit -m 'wrote a readme file' 二.简 ...
- 报错:Unsupported field: HourOfDay
报错:Unsupported field: HourOfDay 这个错误就比较搞笑也比较低级了. 代码如下 LocalDate now = LocalDate.now(); String year = ...
- openwrt装载固件
方法1. 确定串口号以后(在设备管理器可以查看) 打开SecureCRT软件,选择串口,设置合适的波特率(我用的115200),然后快速连接, 板子通电启动,在启动的时候会提示按任意键中断,这时按下任 ...
- Use of explicit keyword in C++
Predict the output of following C++ program. 1 #include <iostream> 2 3 using namespace std; 4 ...
- 测试数据库并发压力的shell脚本
本节内容:一例用于测试数据库并发压力的shell脚本代码. 例子: #!/bin/bash #********************************# #并发后台运行fun # #for w ...
- Shell脚本实现乱序排列文件内容的多种方法(洗牌问题)
洗牌问题:洗一副扑克,有什么好办法?既能洗得均匀,又能洗得快?即相对于一个文件来说怎样高效率的实现乱序排列? ChinaUnix 确实是 Shell 高手云集的地方,只要你想得到的问题,到那里基本上都 ...
- React 传值 组件传值 之间的关系
react 组件相互之间的传值: 传值分父级组件传值给子组件 子组件传值给父组件 平级组件.没有嵌套的组件相互传值 1.父组件向子组件传值 父组件通过属性的形式来向子组件传值,子组件通过pr ...
- windows 查看端口被占用,解除占用
查看 (列举端口为2688) netstat -ano | findstr "2688" 解除 原文地址
- Firebug: Net Panel 使用详解
Introduction to Firebug: Net Panel Since there is not much user documentation related to Firebug fea ...
- Memcached 状态机分析
worker线程拿到了这个连接之后,就应该是分配给这个连接一个结构体,包括这个连接所有的状态,都写buf等,这个结构体就是conn,然后这个worker线程会在它自己的event_base加入对这个新 ...