神经网络中有各种归一化算法:Batch Normalization (BN)、Layer Normalization (LN)、Instance Normalization (IN)、Group Normalization (GN)。从公式看它们都差不多,如 (1) 所示:无非是减去均值,除以标准差,再施以线性映射。

Batch Normalization

Batch Normalization (BN) 是最早出现的,也通常是效果最好的归一化方式。feature map: 包含 N 个样本,每个样本通道数为 C(在NLP中为词向量长度),高为 H(在NLP中为时间长度),宽为 W(在NLP中为1)。对其求均值和方差时,将在 N、H、W上操作,而保留通道 C 的维度。具体来说,就是把第1个样本的第1个通道,加上第2个样本第1个通道 ...... 加上第 N 个样本第1个通道,求平均,得到通道 1 的均值(注意是除以 N×H×W 而不是单纯除以 N,最后得到的是一个代表这个 batch 第1个通道平均值的数字,而不是一个 H×W 的矩阵)。求通道 1 的方差也是同理。对所有通道都施加一遍这个操作,就得到了所有通道的均值和方差。具体公式为:

如果把类比为一摞书,这摞书总共有 N 本,每本有 C 页,每页有 H 行,每行 W 个字符。BN 求均值时,相当于把这些书按页码一一对应地加起来(例如第1本书第36页,第2本书第36页......),再除以每个页码下的字符总数:N×H×W,因此可以把 BN 看成求“平均书”的操作(注意这个“平均书”每页只有一个字),有C页,求标准差时也是同理。最后求出来应该是:1*C, 保证每个样本两两之间不会偏差太大

Layer Normalization

BN 的一个缺点是需要较大的 batchsize 才能合理估训练数据的均值和方差,这导致内存很可能不够用,同时它也很难应用在训练数据长度不同的 RNN 模型上。Layer Normalization (LN) 的一个优势是不需要批训练,在单条数据内部就能归一化

对于LN 对每个样本的 C、H、W 维度上的数据求均值和标准差,保留 N 维度。其均值和标准差公式为:

继续采用上一节的类比,把一个 batch 的 feature 类比为一摞书。LN 求均值时,相当于把每一本书的所有字加起来,再除以这本书的字符总数:C×H×W,即求整本书的“平均字”,有N本书,求标准差时也是同理。最后求出来的是:N*1,保证的是每个批次两两之间不会偏差较大。

Instance Normalization

Instance Normalization (IN) 最初用于图像的风格迁移。作者发现,在生成模型中, feature map 的各个 channel 的均值和方差会影响到最终生成图像的风格,因此可以先把图像在 channel 层面归一化,然后再用目标风格图片对应 channel 的均值和标准差“去归一化”,以期获得目标图片的风格。IN 操作也在单个样本内部进行,不依赖 batch。

IN 求均值时,相当于把一页书中所有字加起来,再除以该页的总字数:H×W,即求每页书的“平均字”,求标准差时也是同理。

最新文章

  1. ssh项目java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoade错误
  2. 真机测试-Please enter a different string错误解决
  3. The Template method pattern
  4. Windows Azure Virtual Machine (32) 如何在Windows操作系统配置SFTP
  5. python——第一天
  6. phalcon:model 事件与事件管理器
  7. 安全-分析深圳电信的新型HTTP劫持方式
  8. poj1637--Sightseeing tour(最大流)
  9. RPC实现原理(HSF、dubbo) 从头开始(一)
  10. 计算机中的大小端模式及C语言中如何鉴别他们
  11. 教你修改Linux下高并发socket最大连接数所受的各种限制
  12. 去除VS2010中中文注释下的红色波浪线
  13. Git 和 Github的关系
  14. Codeforces Round #336 (Div. 2)【A.思维,暴力,B.字符串,暴搜,前缀和,C.暴力,D,区间dp,E,字符串,数学】
  15. postman Could not get any response。
  16. UVA 11582 Colossal Fibonacci Numbers(数学)
  17. [CodeForces-1036E] Covered Points 暴力 GCD 求交点
  18. 【转载】SeleniumIDE入门
  19. 使用Arraylist将数组中元素随机均等乱序分为N个子数组
  20. MySQL优化技巧之四:mysql数据库开发常见问题及优化[转]

热门文章

  1. [debug] 解决在C++编写过程中的“找到一个或多个多重定义的符号”
  2. C# Task ContinueWith
  3. 3 JDK并发包
  4. FCC---Make a CSS Heartbeat using an Infinite Animation Count----超级好看的心跳,粉色的
  5. RPM包安装——手动安装
  6. DQL---连接查询(内连接、外连接)、子查询、分页查询
  7. CSS基本选择器是什么?基本选择器是如何工作
  8. 微信小程序底部导航栏(tabbar)
  9. 【JavaWeb】Ajax基础
  10. BayaiM__MySQL 5.7 新特性详解