常用 Normalization 方法的总结与思考:BN、LN、IN、GN

Normalization 归一化方法 BN LN IN GN 1.分类 BN是在batch上,对N、H、W做归一化,而保留通道 C 的维度。BN对较小的batch size效果不好。BN适用于固定深度的前向神经网络,如CNN,不适用于RNN; LN在通道方向上,对C、H、W归一化,主要对RNN效果明显; IN在图像像素上,对H、W做归一化,用在风格化迁移; GN将channel分组,然后再做归一化。 2.BN 为什么要进行BN呢? 1)在深度神经网络训练的过程中,通常以输入网络的每一个mini-batch进行训练,这样每个batch具有不同的分布,使模型训练起来 阅读详情

作者:G-kdom

知乎链接:https://zhuanlan.zhihu.com/p/72589565

本文仅供学习参考,如有侵权,请联系删除!

常用的Normalization方法主要有:Batch Normalization(BN,2015年)、Layer Normalization(LN,2016年)、Instance Normalization(IN,2017年)、Group Normalization(GN,2018年)。它们都是从激活函数的输入来考虑、做文章的,以不同的方式对激活函数的输入进行 Norm 的。

我们将输入的 feature map shape 记为[N, C, H, W],其中N表示batch size,即N个样本;C表示通道数;H、W分别表示特征图的高度、宽度。这几个方法主要的区别就是在:

1. BN是在batch上,对N、H、W做归一化,而保留通道 C 的维度。BN对较小的batch size效果不好。BN适用于固定深度的前向神经网络,如CNN,不适用于RNN;

2. LN在通道方向上,对C、H、W归一化,主要对RNN效果明显;

3. IN在图像像素上,对H、W做归一化,用在风格化迁移;

4. GN将channel分组,然后再做归一化。

每个子图表示一个特征图,其中N为批量,C为通道,(H,W)为特征图的高度和宽度。通过蓝色部分的值来计算均值和方差,从而进行归一化。

如果把特征图比喻成一摞书,这摞书总共有 N 本,每本有 C 页,每页有 H 行,每行 有W 个字符。

1. BN 求均值时,相当于把这些书按页码一一对应地加起来(例如第1本书第36页,第2本书第36页......),再除以每个页码下的字符总数:N×H×W,因此可以把 BN 看成求“平均书”的操作(注意这个“平均书”每页只有一个字),求标准差时也是同理。

2. LN 求均值时,相当于把每一本书的所有字加起来,再除以这本书的字符总数:C×H×W,即求整本书的“平均字”,求标准差时也是同理。

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

4. GN 相当于把一本 C 页的书平均分成 G 份,每份成为有 C/G 页的小册子,求每个小册子的“平均字”和字的“标准差”。

一、 Batch Normalization, BN   

论文链接:https://arxiv.org/pdf/1502.03167.pdf

为什么要进行BN呢?

(1)在深度神经网络训练的过程中,通常以输入网络的每一个mini-batch进行训练,这样每个batch具有不同的分布,使模型训练起来特别困难。

(2)Internal Covariate Shift (ICS) 问题:在训练的过程中,激活函数会改变各层数据的分布,随着网络的加深,这种改变(差异)会越来越大,使模型训练起来特别困难,收敛速度很慢,会出现梯度消失的问题。

BN的主要思想:针对每个神经元,使数据在进入激活函数之前,沿着通道计算每个batch的均值、方差,‘强迫’数据保持均值为0,方差为1的正态分布,避免发生梯度消失。具体来说,就是把第1个样本的第1个通道,加上第2个样本第1个通道 ...... 加上第 N 个样本第1个通道,求平均,得到通道 1 的均值(注意是除以 N×H×W 而不是单纯除以 N,最后得到的是一个代表这个 batch 第1个通道平均值的数字,而不是一个 H×W 的矩阵)。求通道 1 的方差也是同理。对所有通道都施加一遍这个操作,就得到了所有通道的均值和方差。

BN的使用位置:全连接层或卷积操作之后,激活函数之前。

BN算法过程:

  • 沿着通道计算每个batch的均值 

  • 沿着通道计算每个batch的方差 

  • 做归一化

  • 加入缩放和平移变量  和 

其中  是一个很小的正值,比如  。加入缩放和平移变量的原因是:保证每一次数据经过归一化后还保留原有学习来的特征,同时又能完成归一化操作,加速训练。 这两个参数是用来学习的参数。

BN的作用:

(1)允许较大的学习率;

(2)减弱对初始化的强依赖性

(3)保持隐藏层中数值的均值、方差不变,让数值更稳定,为后面网络提供坚实的基础;

(4)有轻微的正则化作用(相当于给隐藏层加入噪声,类似Dropout)

BN存在的问题:

(1)每次是在一个batch上计算均值、方差,如果batch size太小,则计算的均值、方差不足以代表整个数据分布。

(2)batch size太大:会超过内存容量;需要跑更多的epoch,导致总训练时间变长;会直接固定梯度下降的方向,导致很难更新。

二、 Layer Normalization, LN

论文链接:https://arxiv.org/pdf/1607.06450v1.pdf

针对BN不适用于深度不固定的网络(sequence长度不一致,如RNN),LN对深度网络的某一层的所有神经元的输入按以下公式进行normalization操作。

LN中同层神经元的输入拥有相同的均值和方差,不同的输入样本有不同的均值和方差。

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

Layer Normalization (LN) 的一个优势是不需要批训练,在单条数据内部就能归一化。LN不依赖于batch size和输入sequence的长度,因此可以用于batch size为1和RNN中。LN用于RNN效果比较明显,但是在CNN上,效果不如BN。

三、  Instance Normalization, IN

论文链接:https://arxiv.org/pdf/1607.08022.pdf

IN针对图像像素做normalization,最初用于图像的风格化迁移。在图像风格化中,生成结果主要依赖于某个图像实例,feature map 的各个 channel 的均值和方差会影响到最终生成图像的风格。所以对整个batch归一化不适合图像风格化中,因而对H、W做归一化。可以加速模型收敛,并且保持每个图像实例之间的独立。

对于,IN 对每个样本的 H、W 维度的数据求均值和标准差,保留 N 、C 维度,也就是说,它只在 channel 内部求均值和标准差,其公式如下:

四、 Group Normalization, GN

论文链接:https://arxiv.org/pdf/1803.08494.pdf

GN是为了解决BN对较小的mini-batch size效果差的问题。GN适用于占用显存比较大的任务,例如图像分割。对这类任务,可能 batch size 只能是个位数,再大显存就不够用了。而当 batch size 是个位数时,BN 的表现很差,因为没办法通过几个样本的数据量,来近似总体的均值和标准差。GN 也是独立于 batch 的,它是 LN 和 IN 的折中。

GN的主要思想:在 channel 方向 group,然后每个 group 内做 Norm,计算  的均值和方差,这样就与batch size无关,不受其约束。

具体方法:GN 计算均值和标准差时,把每一个样本 feature map 的 channel 分成 G 组,每组将有 C/G 个 channel,然后将这些 channel 中的元素求均值和标准差。各组 channel 用其对应的归一化参数独立地归一化。

伪代码如下:

代码如下:


def GroupNorm(x, gamma, beta, G=16):

    # x_shape:[N, C, H, W]
    results = 0.
    eps = 1e-5
    x = np.reshape(x, (x.shape[0], G, x.shape[1]/16, x.shape[2], x.shape[3]))

    x_mean = np.mean(x, axis=(2, 3, 4), keepdims=True)
    x_var = np.var(x, axis=(2, 3, 4), keepdims=True0)
    x_normalized = (x - x_mean) / np.sqrt(x_var + eps)
    results = gamma * x_normalized + beta
    return results

总结

我们将feature map shape 记为[N, C, H, W]。如果把特征图比喻成一摞书,这摞书总共有 N 本,每本有 C 页,每页有 H 行,每行 有W 个字符。


1. BN是在batch上,对N、H、W做归一化,而保留通道 C 的维度。BN 相当于把这些书按页码一一对应地加起来,再除以每个页码下的字符总数:N×H×W。

2. LN在通道方向上,对C、H、W归一化。LN 相当于把每一本书的所有字加起来,再除以这本书的字符总数:C×H×W。

3. IN在图像像素上,对H、W做归一化。IN 相当于把一页书中所有字加起来,再除以该页的总字数:H×W。

4. GN将channel分组,然后再做归一化。GN 相当于把一本 C 页的书平均分成 G 份,每份成为有 C/G 页的小册子,对每个小册子做Norm。

另外,还需要注意它们的映射参数和的区别:对于 BN,IN,GN, 其和都是维度等于通道数 C 的向量。而对于 LN,其和都是维度等于 normalized_shape 的矩阵。

最后,BN 和 IN 可以设置参数:momentum和track_running_stats来获得在整体数据上更准确的均值和标准差。LN 和 GN 只能计算当前 batch 内数据的真实均值和标准差。

Unity 把向量归一化的normalized和Normalized的联系和区别【权威】 Unity 把向量归一化的normalized和Normalized官方解释: 两者联系: 其实两个方法是一模一样,结果目的都一样,把一个向量拿到或者改变成 归一化向量,所谓归一化就是 把原来某个向量变成 x,y,z平方之和的平方根为1,也就是新向量长度为1.但是!方向与原向量一样! 两者区别: 一个是方法Normalized(); 他会把一个向量直接变成 长度为一的 单位向量。 ThirdVectorPoint.Normalize(); 一个小写normalize 这是一个属性,只.. 阅读详情

相关推荐

HIDL概述

HIDL背景 Treble 是 Google Android 团队的一项重大项目,意在 Android 操作系统框架在架构方面的一项重大改变,旨在让制造商以更低的成本更轻松、更快速地将设备更新到新版 Android 系统。Android 7.x 及更早版本中没有正式的供应商接口,因此设备制造商必须更新大量 Android 代码才能将设备更新到新版 Android 系统: 图1 Treble ...

u013357557的专栏 2万+

归一化函数normalize详解

opencv 2 归一化函数normalize详解 1. 归一化定义与作用     归一化就是要把需要处理的数据经过处理后(通过某种算法)限制在你需要的一定范围内。首先归一化是为了后面数据处理的方便,其次是保证程序运行时收敛加快。归一化的具体作用是归纳统一样本的统计分布性。归一化在0-1之间是统计的概率分布,归一化在某个区间上是统计的坐标分布。归一化有同一、统一和合一的意思。     归一

Solomon1558的专栏 11万+

在linux上本地大模型部署与推理

您的Python脚本(客户端)可能在您的个人电脑上,而模型服务(服务器)在远程Linux服务器上。如果您的服务器有强大的NVIDIA GPU,并且您对性能有更高的要求(例如需要高吞吐量),vLLM是更好的选择。这种方式无需向公网暴露服务器端口,而是通过加密的SSH通道将服务器的端口“映射”到您的本地电脑上。我们将启动一个API服务器,它会加载您指定的模型,并等待您的代码前来调用。如果您直接在SSH窗口运行上面的命令,一旦您关闭窗口,服务就会停止。这是根据您的原始代码修改的版本,适配本地vLLM服务。

frostmelody 全网同名,大家多多关注呀~ 持续分享优质内容! 2053

常用的 Normalization 方法:BN、LN、IN、GN

点击上方“AI算法与图像处理”,选择加"星标"或“置顶”重磅干货,第一时间送达作者:G-kdom链接:https://zhuanlan.zhihu.com/p/72589...

weixin_38754361的博客 722

正版63棋牌源代码游戏+728游戏全套带前端源代码解析

这俩天抽时间仔细看了一下这套项目包含完整的前端、后端及后台管理系统。从上传的截图可以看出,前端基于资源目录,后端采用和,后台管理界面提供数据查询与管理功能。本篇文章将从前端结构、后端接口、数据库设计、常见 BUG 及优化方法等方面逐步拆解,并给出相应的代码示例和实践经验。

aa2031171的博客 3571

代码审计工具学习之RISP(安装以及初步操作)

1 代码审计 1.1名词解释 代码审计(Code audit)是一种以发现程序错误,安全漏洞和违反程序规范为目标的源代码分析。软件代码审计是对编程项目中源代码的全面分析,旨在发现错误,安全漏洞或违反编程约定。 它是防御性编程范例的一个组成部分,它试图在软件发布之前减少错误。 C和C ++源代码是最常见的审计代码,因为许多高级语言(如Python)具有较少的潜在易受攻击的功能(例如,不检查边界的函数)。 顾名思义就是检查源代码中的安全缺陷,检查程序源代码是否存在安全隐患,或者有编码不规范的地方,通过..

weixin_52515588的博客 1万+

Normalized Frequency(x PI rad/sample)含义

matlab信号处理工具规定单位频率为奈圭斯特频率(采样频率的一半),所以基本的滤波器设计函数的截止频率参数均以奈圭斯特频率为基准做归一化。例如,对于一个采样频率为1000Hz的系统,300Hz则对应300/500=0.6。若要将归一化频率转换为单位圆上的弧度,则将归一化值乘以π(PI)即可。 下图为ISE中FIR滤波器显示的频率响应,横坐标是归一化的。若要求Hz为单位的截止频率,只需乘以fs/

正在格式化…… 1万+

NPP/VIIRS夜间灯光数据:从下载到应用的完整指南

本文提供了NPP/VIIRS夜间灯光数据从下载、处理到应用的完整实战指南。详细介绍了如何从官方源获取数据、解读文件结构、进行坐标校正与数据清洗,并深入探讨了其在城市扩张监测、社会经济指标估算、重大事件影响评估等领域的核心应用。文章旨在帮助研究者与从业者快速掌握这一强大的空间数据,将其转化为研究中的实用工具。

gpu4optimizer的博客 862

归一化函数 normalized()

1. 归一化定义与作用     归一化就是要把需要处理的数据经过处理后(通过某种算法)限制在你需要的一定范围内。 首先归一化是为了后面数据处理的方便,其次是保证程序运行时收敛加快。归一化的具体作用是归纳统一样本的统计分布性。归一化在0-1之间是统计的概率分布,归一化在某个区间上是统计的坐标分布。归一化有同一、统一和合一的意思。     归一化的目的是使得没有可比性

飞舞哲 3万+

SAP MTO模式实战:从库存管理到成本核算的深度解析

本文深入解析SAP MTO(Make-to-Order)模式在制造业中的应用,从库存管理到成本核算的全流程实战技巧。通过对比MTS模式,详细阐述MTO的核心逻辑、库存管理配置、成本核算路径及与PP模块的集成要点,帮助企业实现按单生产的高效管理,优化库存水平和资金占用。

weixin_29204205的博客 709

lammps多晶正弦粗糙界面建模

其中,30可以理解为正弦曲线的幅度,150为正弦曲线的基准坐标值,80控制周期,改变参数多试试就能找到规律。很久之前介绍过lammps粗糙界面建模,主要是在lammps中进行一维和二维的正弦粗糙面建模。运行完成后,会生成final.data,这个模型即为上表面为正弦波动的粗糙界面。新建1.py文件,粘贴下面内容后,运行:python 1.py。多晶需要在atomsk中进行,因此上述的方法就不再适用。最近有学员咨询多晶模型的正弦粗糙界面建模应该如何实现。在cmd窗口按顺序运行以下命令创建多晶模型。

lammps_jiayou的博客 387

【CV】常用 Normalization 方法的总结与思考:BN、LN、IN、GN、BGN

批处理归一化(BN)是早期提出的一种归一化方法,也是应用最为广泛的方法。BN利用计算出的均值和方差对特征图进行归一化,再对归一化后的特征图进行重新缩放和移位,以保证DCNN(深度卷积神经网络)的表征能力。同时,在BN的基础上,提出了许多其他任务的归一化方法。 目前在深度学习中常用的Normalization如下: Batch Normalization(BN,2015年) Layer Normalization(LN,2016年) Instance Normalization(IN,2017年) Grou

学无止境、积少成多、厚积薄发 1848

03 Token、Embedding、上下文窗口:开发者必须懂的三个基本概念

Token、Embedding 和上下文窗口是大模型应用开发的三个基础概念。本文从成本、速度、检索和上下文设计四个角度讲清它们的工程意义,帮助开发者理解为什么同一段内容会超限、变贵,为什么 RAG 能做语义检索。

老于的笔记的专栏 407

【基础积累】 常用 Normalization 方法的总结与思考:BN、LN、IN、GN

点击上方“机器学习与生成对抗网络”,关注"星标"获取有趣、好玩的前沿干货!来自 | 知乎 G-kdomhttps://zhuanlan.zhihu.com/p/7258...

idol24的博客 433

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

深度学习中的Normalization总结(BN/LN/WN/IN/GN)

文章目录简介独立同分布(i.i.d)Internal Covariate ShiftBatch-Normalization为什么用BNBN怎么操作InferenceBatchNorm的好处 简介 在深度学习领域,Normalization用得很多,最近在学习各种Normalization方法的时候颇有感悟和收获,特此记录。 BN(Batch Normalization)于2015年由 Google...

aift的专栏 8045

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

BN, LN, IN, GN分别是什么 区别在哪里

常用的Normalization方法主要有:Batch Normalization(BN,2015年)、Layer Normalization(LN,2016年)、Instance Normalization(IN,2017年)、Group Normalization(GN,2018年)。它们以不同的方式对进行 Norm 的。我们将输入的 feature map shape 记为[N, C, H, W],其中N表示batch size,即N个样本;C表示通道数;H、W分别表示特征图的高度、宽度。

weixin_47755728的博客 3639

各种归一化Normalization(BN、LN、IN、GN、WN)

一. 本文的内容包括: 1.Batch Normalization,其论文:https://arxiv.org/pdf/1502.03167.pdf 2.Layer Normalizaiton,其论文:https://arxiv.org/pdf/1607.06450v1.pdf 3.Instance Normalization,其论文:https://arxiv.org/pdf/1607.08022.pdf 4.Group Normalization,其论文:...

Drug discovery 1万+

关于归一化BN IN LN GN相关梳理

原来写过BN(Batch-Normal)在全连接层当中的使用。在更多情况下,我们处理图像的特征图、特征层时也会用到归一化操作,其中就包括BN,也包括LN,IN以及它们的变式等。这篇来整理一下在卷积池化过程当中,对于特征图feature map的各类归一化方法。 关于BN的具体计算公式、优势和特点之类的还是参考上篇写过的(BN批量归一化操作_TranSad的博客-优快云博客_bn批量归一化),这篇我还是侧重于整理不同归一化方法在特征图上的计算方式——也就是每个方法到底是归一化哪部分,归一化时特征图...

TranSad的博客 2360

常用的归一化(Normalization) 方法:BN、LN、IN、GN

常用的Normalization方法主要有:Batch Normalization(BN,2015年)、Layer Normalization(LN,2016年)、Instance Normalization(IN,2017年)、Group Normalization(GN,2018年)。它们都是从激活函数的输入来考虑、做文章的,以不同的方式对激活函数的输入进行 Norm 的。 我们将输入的 fe...

qq_38410428的博客 9540

归一化方法 BN、LN、IN、GN、SN

目录 1 概念 2 图解 3 公式 4 Batch normalization和Layer normalization有什么区别? 4.1为什么ML中用BN比较多? 4.1.1 ML & batch normalization 4.1.2 ML & layer normalization 4.1.3WhyML&BN? 4.2为什么NLP中用LN比较多? 4.2.1NLP & batch normalization 4.2.2NLP &am...

weixin_39910711的博客 3245

Pytorch —— BN、LN、IN、GN

1、为什么要Normalization? 深度学习中存在Internal Covariate Shift(ICS):数据尺度/分布异常,导致训练困难; 在权值初始化部分介绍了深度神经网络训练过程中的数据尺度变化问题: H11=∑i=0nXi∗W1i\mathrm{H}_{11}=\sum_{i=0}^{n} X_{i} * W_{1 i}H11​=i=0∑n​Xi​∗W1i​D(H11)=∑i=0nD(Xi)∗D(W1i)\mathbf{D}\left(\mathrm{H}_{11}\right)=\su

然后就去远行 2042
上一篇: 机器学习算法工程师求职必备“面经”--《百面机器学习》
下一篇: 知乎超热门话题:为什么要考985?
机器学习算法那些事
博客等级 码龄9年 1633粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值