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范 ...
随机推荐
- LeetCode移除元素
LeetCode 移除元素 题目描述 给你一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,并返回移除后数组的新长度. 不需要使用额外的数组空间,你必须仅使用 O(1) ...
- 随录、EJB和JTA
说道JTA(Java Transction Api),即事务的一种. 事务:说白了就是一组原子操作,是为了保证数据的安全性. 它,分为三类:JDBC事务,JTA事务,还有容器事务. JDBC是由Con ...
- Linux基础命令---host域名查询工具
host host是一个常用的DNS查询工具,经常用来查询域名.检查域名解析是否正确. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.Fedora. 1.语法 ...
- 搭建内网Yum源
搭建内网yum源 阅读(2,238) 一:因内网服务器 众多,当统一安装一些比较大的rpm的时候全部从外网下载就比较慢,而且还占用了一定的出口流量,因此在内网部署了一台yum服务器,将阿里云的epel ...
- Default Constructors
A constructor without any arguments or with default value for every argument, is said to be default ...
- When do we pass arguments by reference or pointer?
在C++中,基于以下如下我们通过以引用reference的形式传递变量. (1)To modify local variables of the caller function A reference ...
- SpringMVC(1):SpringMVC入门
一,MVC 概述 MVC:模型,视图,控制器,是一种软件设计规范,本质是将业务逻辑,数据,显示,分离的方式来编写代码:前后端分离 Model:数据模型,提供要展示的数据,一般我们都会把这两个分离开来. ...
- ANTLR 相关术语
下面介绍很多重要的与语言识别相关的术语. 语言(Language) A language is a set of valid sentences 一门语言是一个有效语句的集合. Sentences a ...
- Java oop 笔记
摘要网址:http://note.youdao.com/noteshare?id=bbdc0b970721e40d327db983a2f96371
- Pythonweb采集
一.访问页面 import webbrowser webbrowser.open('http://www.baidu.com/') pip3 install requests import re ...