首页
学习
活动
专区
圈层
工具
发布

用Welford算法实现LN的方差更新

它使用了一种在线更新算法,速度更快,数值稳定性更好,这篇笔记就当一篇总结。...最后再分别计算两者的均值,通过上述关系式子得到结果 根据维基百科的介绍,前面这两种方法的一个共同缺点是,其结果依赖于数据的排序,存在累加的舍入误差,对于大数据集效果较差 Welford算法 此前大部分深度学习框架都采用的是...Naive的计算方法,后续Pytorch转用了这套算法。...左右两遍,同时乘上N+1,并进行化简,可以得到: 把 挪到右边就可以得到 而根据平方公式的特性有 我们将其中一项用前面推导得到的均值来进行转换 然后替换到前面的公式进行化简就可以得到最终结果...额外拓展: 这样子更新方差,每一次都可能会加一个较小的数字,也会导致舍入误差,因此又做了个变换: 每次统计: 最后再得到方差: 这个转换是一个等价转换,感兴趣的读者可以从头一项一项的推导。

2.3K10

一文理解 PyTorch 中的 SyncBatchNorm

而计算均值和方差的 CUDA kernel 具体实现是实现采用的 Welford迭代计算算法 https://en.wikipedia.org/wiki/Algorithms_for_calculating_variance...#Welford's_online_algorithm 我们知道传统方法计算均值,是要先把所有数据加起来然后再除以个数,而方差是在平均值的基础上做进一步的计算。...而Welford迭代计算算法,则只需要对数据集进行单次遍历,然后根据迭代公式计算均值,可以避免传统算法可能导致的精度溢出的问题,且 Welford 算法可以并行化。...当 i = 1 的时候, 对于线程 id 0 和 1, 0 xor 1 = 1 , 1 xor 1 = 0,则就是线程 0 和 1 交换各自的均值和方差,然后就都持有了合并之后的均值和方差了。...前向第二步,GPU之间同步均值和方差 通过集合通信操作 AllGather 让每个 GPU 上的进程都拿到所有 GPU 上的均值和方差,最后就是每个GPU内计算得到全局的均值和方差,同时更新 running_mean

3.9K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    深度学习常用的 Normalization 方法:BN、LN、IN、GN

    每个子图表示一个特征图,其中N为批量,C为通道,(H,W)为特征图的高度和宽度。通过蓝色部分的值来计算均值和方差,从而进行归一化。 如果把特征 ?...BN算法过程: 沿着通道计算每个batch的均值 μ 沿着通道计算每个batch的方差 σ2 做归一化 加入缩放和平移变量 γ 和 β ? 其中 ε 是一个很小的正值,比如 ? 。...LN中同层神经元的输入拥有相同的均值和方差,不同的输入样本有不同的均值和方差。 对于特征图 ? ,LN 对每个样本的 C、H、W 维度上的数据求均值和标准差,保留 N 维度。...其均值和标准差公式为: ? Layer Normalization (LN) 的一个优势是不需要批训练,在单条数据内部就能归一化。...,IN 对每个样本的 H、W 维度的数据求均值和标准差,保留 N 、C 维度,也就是说,它只在 channel 内部求均值和标准差,其公式如下: ?

    6.6K21

    【BBuf的CUDA笔记】十二,LayerNormRMSNorm的重计算实现

    下面对其简单解析一下,另外Welford算法可以看这篇博客的介绍:用Welford算法实现LN的方差更新(感叹一下,zzk写这篇文章的时候还是萌新,经过2年时间已经成长为国内顶级的工程师了,开挂般学习能力...具体解释如下: // 这段代码是个CUDA函数,名叫cuWelfordOnlineSum,擅长用Welford算法来边收数据边算这些数据的平均值和变化范围(就是均值和方差)。...// 用Welford算法来算这个,特别稳,不会因为数据太多而出错,而且每加一个数据就能更新一次均值和方差。 // const U curr: 这个是新来的数据点。...sigma2 = sigma2 + sigma2B + delta * delta * nA * nB * nX; // 然后用一点复杂的公式,把方差也算出来,这个公式考虑了两堆数据的方差和它们平均值的差异...// `cuWelfordMuSigma2` 是一个CUDA设备函数,旨在高效计算张量某一特定维度上的均值(mu)和方差(sigma2)。 // 它基于Welford算法实现,以提高数值稳定性。

    2K10

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

    每个子图表示一个特征图,其中N为批量,C为通道,(H,W)为特征图的高度和宽度。通过蓝色部分的值来计算均值和方差,从而进行归一化。...BN算法过程: 沿着通道计算每个batch的均值μ 沿着通道计算每个batch的方差σ² 做归一化 加入缩放和平移变量 γ 和 β 其中 ε 是一个很小的正值,比如 。...LN中同层神经元的输入拥有相同的均值和方差,不同的输入样本有不同的均值和方差。 对于特征图 ,LN 对每个样本的 C、H、W 维度上的数据求均值和标准差,保留 N 维度。...其均值和标准差公式为: Layer Normalization (LN) 的一个优势是不需要批训练,在单条数据内部就能归一化。...对于,IN 对每个样本的 H、W 维度的数据求均值和标准差,保留 N 、C 维度,也就是说,它只在 channel 内部求均值和标准差,其公式如下: 四、 Group Normalization,

    4.5K20

    干货 | 进化策略入门:最优化问题的另一种视角

    协方差矩阵自适应进化策略(CMA-ES) 简单的进化策略和遗传算法有一个共同的缺点,即我们噪声的标准差参数是固定的。有时,我们会希望在更大的解空间中探索更好的解,因此我们需要增加我们搜索空间的标准差。...在我们讨论该算法做到自适应的方法之前,我将先带大家复习一下如何对协方差矩阵做估计。这对于我们之后理解 CMA-ES 算法所使用的自适应方法十分重要。...然而,这个思想与其他的进化策略算法是相同的,它们都在每一代中更新了多元正态分布的均值和标准差,并且从更新后的概率分布中进行抽样得到新的解集。下图是这两个公式执行动作的可视化图解: ? ?...我认为,理论上来说,这个并行更新规则应该也对那些同样能够调整标准差 σ 的算法奏效。然而,实际的情况是,他们只是为了大规模的并行计算,希望将需要传输的部分降到最少。...这个强化适应度的集合会被用来计算梯度的更新。从某种程度上来说,这类似于在深度学习中直接使用批量归一化(batch-normalization)处理结果,但我们这种方式更为直接。

    2.7K50

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

    每个子图表示一个特征图,其中N为批量,C为通道,(H,W)为特征图的高度和宽度。通过蓝色部分的值来计算均值和方差,从而进行归一化。 如果把特征 ?...BN算法过程: 沿着通道计算每个batch的均值 μ 沿着通道计算每个batch的方差 σ2 做归一化 加入缩放和平移变量 γ 和 β ? 其中 ε 是一个很小的正值,比如 ? 。...LN中同层神经元的输入拥有相同的均值和方差,不同的输入样本有不同的均值和方差。 对于特征图 ? ,LN 对每个样本的 C、H、W 维度上的数据求均值和标准差,保留 N 维度。...其均值和标准差公式为: ? Layer Normalization (LN) 的一个优势是不需要批训练,在单条数据内部就能归一化。...,IN 对每个样本的 H、W 维度的数据求均值和标准差,保留 N 、C 维度,也就是说,它只在 channel 内部求均值和标准差,其公式如下: ?

    2.9K30

    常用的 Normalization 方法:BN、LN、IN、GN(附代码&链接)

    每个子图表示一个特征图,其中N为批量,C为通道,(H,W)为特征图的高度和宽度。通过蓝色部分的值来计算均值和方差,从而进行归一化。 如果把特征图 ?...BN算法过程: 沿着通道计算每个batch的均值μ 沿着通道计算每个batch的方差σ² 做归一化 加入缩放和平移变量 γ 和 β ? 其中 ε 是一个很小的正值,比如 ? 。...LN中同层神经元的输入拥有相同的均值和方差,不同的输入样本有不同的均值和方差。 对于特征图 ? ,LN 对每个样本的 C、H、W 维度上的数据求均值和标准差,保留 N 维度。...其均值和标准差公式为: ? Layer Normalization (LN) 的一个优势是不需要批训练,在单条数据内部就能归一化。...对于,IN 对每个样本的 H、W 维度的数据求均值和标准差,保留 N 、C 维度,也就是说,它只在 channel 内部求均值和标准差,其公式如下: ?

    1.6K50

    小数据| 描述性统计(PythonR 实现)

    1.3 中位数 对于数据集合(x1, x2, …, xn) , 将所有的数值按照它们的大小, 从高到低或从低到高进行排序, 如果数据集合包含的数值个数是基数, 那么排在最中间的数值就是该数据集合的中位数...2.2 方差和标准差 1)总体的方差和标准差 如果数据集合(x1, x2, …, xn) 就是数据总体, 并且数据集合有N个数值(个案) , 假设数据总体的均值为μ,那么 总体方差σ2...总体标准差是方差的正值平方根, 其计算公式为: ? 2)样本的方差和标准差 从数据总体中随机抽取一定数量的样本数值, 然后用样本数值的方差和标准差来估计总体的方差和标准差。...为了区分, 样本的均值用x-表示, 样本方差用s2表示, 样本标准差用s表示。假设样本容量为n, 那么样本方差的计算公式为: ?...2.3 变异系数 变异系数实质上是标准差相对于算术平均值的大小 . 总体的变异系数计算公式为: ? 样本的变异系数计算公式为 : ?

    1.7K20

    一文读懂:控制界的万能公式——PID算法到底是什么?

    一文读懂:控制界的万能公式——PID算法到底是什么? 对于每一位踏入工科大门的学生或是初入职场的工程师来说,在自动控制、机器人、电子工程等领域,有一个名字几乎如影随形——PID算法。...尽管现代控制理论已经发展出了诸如模糊控制、神经网络控制、模型预测控制等前沿技术,但PID算法依然占据了工业控制领域90%以上的江山。为什么一个诞生于百年前的算法拥有如此顽强的生命力?...它到底是如何运作的?今天,我们将拨开晦涩的数学迷雾,用最通俗易懂的语言,带你全面解析PID算法的核心原理与广阔应用。 一、 什么是PID算法?...结构简单,参数易调:PID算法的数学公式极为简洁,占用单片机或PLC的计算资源极小。工程师只需在现场根据系统的实际表现,调整Kp(比例)、Ki(积分)、Kd(微分)三个参数,就能优化系统性能。...它没有极其高深的数学门槛,却蕴含着深刻的哲学智慧:用比例把握当下,用积分弥补过往,用微分防患未然。 对于工科学生和入门工程师而言,理解PID的公式仅仅是第一步。

    3K21

    机器学习入门 7-3 求数据的主成分pca

    ,也停止梯度的更新,因此此时的epsilon是梯度更新停止的一个条件; 在代码中有一个注意1的注释,通过前一小节的推导,我们需要找到一个样本映射的轴,即我们关注的是轴的方向,因此在公式推导的过程中,通过单位向量来表示轴...,样本的方差就变为1了,这个方差的最大值也就不存在了。...所以在pca的过程中不使用Standardscaler进行样本的标准化。其实demean操作就是Standardscaler的一部分操作,少了将标准差变为1的另一半操作。...所以我们可以通过这样的一个极端的测试用例来验证一下我们的算法是否正确。 首先需要进行demean操作,结果算出了轴的坐标为(0.8, 0.6),这说明我们算法整体是正确的。 ?...在前面介绍梯度下降法的时候提到了批量梯度下降法、随机梯度下降法以及小批量梯度下降法,同理对于梯度上升法而言,也可以使用批量梯度上升法、随机梯度上升法以及小批量梯度上升法,本小节使用的是批量梯度上升法,即将每次对所有样本计算梯度

    87450

    算法金 | 协方差、方差、标准差、协方差矩阵

    大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」1. 方差方差是统计学中用来度量一组数据分散程度的重要指标。...,得到方差对方差取平方根,得到标准差标准差的公式为:2.2 实际应用 标准差广泛应用于各种领域。...方差公式为:标准差:标准差是方差的平方根,因此其单位与数据本身一致。...标准差公式为:5.2 标准差与协方差 标准差和协方差虽然都是度量数据分布和关系的指标,但它们用于不同的情景标准差:标准差用于度量单个变量的分散程度,是方差的平方根。...协方差矩阵公式为:[ 抱个拳,总个结 ]- 科研为国分忧,创新与民造福 -日更时间紧任务急,难免有疏漏之处,还请大侠海涵 内容仅供学习交流之用,部分素材来自网络,侵联删[ 算法金,碎碎念 ]入选 CSDN

    2.7K00

    如何区分并记住常见的几种 Normalization 算法

    从公式看它们都差不多,如 (1) 所示:无非是减去均值,除以标准差,再施以线性映射。 ? 这些归一化算法的主要区别在于操作的 feature map 维度不同。...求通道 1 的方差也是同理。对所有通道都施加一遍这个操作,就得到了所有通道的均值和方差。具体公式为: ? 如果把 ?...其均值和标准差公式为: ? 继续采用上一节的类比,把一个 batch 的 feature 类比为一摞书。...对于 ? ,IN 对每个样本的 H、W 维度的数据求均值和标准差,保留 N 、C 维度,也就是说,它只在 channel 内部求均值和标准差,其公式为: ?...,求每个小册子的“平均字” 计算方差同理 此外,还需要注意它们的映射参数γ和β的区别:对于 BN,IN,GN, 其γ和β都是维度等于通道数 C 的向量。

    2.8K20

    深度学习中的网络优化与正则化

    基于上述公式,影响小批量梯度下降的主要因素有: 「批量大小」 「学习率」 「梯度估计」 下面将分别从三个方面介绍神经网络优化中的常用算法,大部分算法对批量或随机梯度下降同样适用。...动量法将每次迭代的梯度看成加速度,计算负梯度的「加权移动平均」作为参数的更新方向。第 次迭代时参数的更新公式为: 其中 为动量因子,通常设为 0.9, 为学习率。...在迭代初期, 由于衰减率接近 1, 和 的值会比真实的均值和方差要小,因此需要对计算公式进行「修正」: Adam 算法的参数更新差值为: 其中学习率 通常设置为 0.001,并且也可以进行衰减...对于每一维特征 ,先计算其均值和方差: 然后,将特征 减去均值,并除以标准差,得到新的特征值 : 如果标准差为 0,说明这一维特征没有任何区分性,可以直接删掉。 「白化」。...由于优化算法使用的是基于小批量的随机梯度下降,因此在训练过程中通常用当前「小批量」的均值和方差近似估计: 其中 为小批量样本的数量。

    1.4K11

    算法金 | 平均数、众数、中位数、极差、方差,标准差、频数、频率 一“统”江湖

    2.3 生活实例比如,你问一群小朋友,他们最喜欢的动画片是什么。结果《熊出没》被提到了5次,《喜羊羊与灰太狼》提到了3次,其他动画片都只提到了1次。那《熊出没》就是众数,因为它被提到的次数最多。3....如果你们的成绩都差不多,那方差就小,说明你们的水平稳定;如果成绩差距很大,方差就大,说明你们的水平波动很大。6. 什么是标准差6.1 定义标准差,江湖上叫它“标准偏差”,是方差的平方根。...它和方差一样,也是用来衡量一帮数字的波动性。不过,标准差的单位和原始数据的单位相同,更容易直观理解。6.2 计算方法标准差的计算,就是先求出方差,然后取方差的平方根。...公式是:6.3 生活实例比如,你和你的兄弟们比武的成绩,如果方差是25,那标准差就是5。这就意味着成绩的波动大约在5分上下。接下来是频数和频率,这两个概念就像是江湖中的兄弟会,总是成双成对出现。7....极差 和 方差(以及 标准差)告诉我们数据的波动性。频数 和 频率 描述了数据出现的模式。9.2 实际案例分析假设你是一个门派的掌门人,想要了解门派内弟子的武功水平。

    1.4K00

    技术干货 | 一文详解高斯混合模型原理

    接下来看下严格的高斯公式定义,高斯分布的概率密度函数公式如下: 公式中包含两个参数,参数μ表示均值,参数σ表示标准差,均值对应正态分布的中间位置,在本例中我们可以推测均值在180cm附近。...本例中大约20到30左右是标准差参数的取值,因为大多数数据都分布在120cm到240cm之间。 上面的公式是概率密度函数,也就是在已知参数的情况下,输入变量指x,可以获得相对应的概率密度。...反复迭代这个过程很多次,直到两个概率值非常接近时,我们停止更新并完成模型训练。 现在我们要将这个过程用算法来实现,所使用的方法是模型生成的数据来决定似然值,即通过模型来计算数据的期望值。...该过程和k-means的算法训练过程很相似(k-means不断更新类中心来让结果最大化),只不过在这里的高斯模型中,我们需要同时更新两个参数:分布的均值和标准差 高斯混合模型(GMM) 高斯混合模型是对高斯模型进行简单的扩展...高斯混合模型则不会受到这个约束,因为它对每个类簇分别考察特征的协方差模型。 K-means算法可以被视为高斯混合模型(GMM)的一种特殊形式。

    3K60

    小白面经 | 拼多多 AI算法岗 附带解析

    YOLO训练的数据集是什么 8. CNN参数初始化的方法 1 介绍项目 答案:略。...3 python撕BN层前向算法 之前的文章详细讲解了BN的算法,所以这个不算太难哈哈。核心思想就是把数据沿着batch的维度,标准化成 均值, 标准差的分布。减均值处以方差那种。...公式(2)中的 是Sigmoid激活函数。 这两个公式其实可以统一起来: ?...SVM的处理方法是只考虑分类效果不够好的样本,对于已经分类正确的样本,就不再更新他们了,给他们0损失;逻辑回归希望正样本尽可能的大,副样本尽可能的小,所以就算已经分类正确了,也还是会给分类正确的样本一个损失...,对于年龄识别和性别识别的研究有着重要的意义。

    99420

    深度学习500问——Chapter03:深度学习基础(3)

    Full Batch Learning可以使用Rprop只基于梯度符号并且针对性单独更新各权值。...对于更大的数据集,假如采用全数据集的形式,坏处是: 随着数据集的海量增长和内存限制,一次性载入所有的数据进来变得越来越不可行。...标准差标准化 含义:经过处理的数据符合标准正态分布,即均值为0,标准差为1,其中 为所有样本数据的均值, 为所有样本数据的标准差。 3....3.6.10 批归一化(BN)算法流程 下面给出BN算法在训练时的过程 输入:上一层输出结果 ,学习参数 算法流程: 1. 计算上一层输入数据的均值 其中, 是此次训练样本 batch 的大小。...群组归一化 Group Normalization (简称 GN) GN 将通道分成组,并在每组内计算归一化的均值和方差。GN 的计算与批量大小无关,并且其准确度在各种批量大小下都很稳定。

    38110

    深度学习与CV教程(6) | 神经网络训练技巧 (上)

    这将会导致梯度下降权重更新时出现 z 字型的下降。该问题相对于上面的神经元饱和问题来说只是个小麻烦,没有那么严重。 缺点③: 指数型计算量比较大。...在神经网络中使用批量归一化已经变得非常常见,在实践中使用了批量归一化的网络对于不好的初始值有更强的鲁棒性。...; 这个公式其实就是随机变量转化为标准高斯分布的公式,是可微的; 前向传播与反向传播也是利用小批量梯度下降(SGD),也可以利用这个小批量进行归一化; 在训练开始前进行归一化,而不是在初始化时; 卷积层每个激活图都有一个均值和方差...我们会做一个简化:由于我们在 SGD 中使用小批量,每个小批量都可以得到激活数据的均值和方差的估计。这样,用于归一化的数据完全可以参与梯度反向传播。 批量归一化的思想:考虑一个尺寸为 m 的小批量B。...比如,因为某些错误,数据点的特征是随机的,这样算法也可能对小数据进行过拟合,但是在整个数据集上跑算法的时候,就没有任何泛化能力。

    1.5K61

    搞懂标准差和方差

    标准差和方差 差的意思是离正常有多远 标准差 标准差是数值分散的测量。 标准差的符号是 σ (希腊语字母 西格马,英语 sigma) 公式很简单:方差的平方根。那么…… "方差是什么?"...方差 方差的定义是: 离平均的平方距离的平均。 按照以下的步骤来计算方差: 求数值的 平均 从每一个数值减去平均,然后求差的平方。 求结果的平均。(为什么要求平方?)...我们画在图上: 接着求每条狗和平均的距离: 要计算方差,求每个距离的平方,然后求平均: 方差是 21,704 标准差是方差的平方根: 标准差 σ = √21,704 = 147.32……...公式 这是在 标准差公式 网页里的两个公式(你可以去看看来了解更多): "对象总体标准差": "样本标准差": 乍看很复杂,但其实只是在计算样本方差时,有个重要的改变: 以除以 N-1 来代替除以...所以,为了更好的用样本估计总体的标准差,统计学家就将标准差的公式做了改造:即原来的标准差公式是除以n,为了用样本估计总体标准差,现在是除以n-1。这样就使得标准差略大。

    2.5K30
    领券