• ## Norm

2018-08-25 18:13:00
The unknow Word The First Column The Second Column leq less than or equal to geq ...Euclidean norm [ju:klidien]欧几里得 2.5 Norms Sometimes we need to measure the size...
The unknow Word
The First Column
The Second Column
leq
less than or equal to
geq
greater than or equal to
Euclidean norm
[ju:klidien]欧几里得
2.5 Norms

Sometimes we need to measure the size of a vector. In machine learning, we usually measure the size of vectors using a function called a norm. Formally, the $$L^p$$ norm is given by

有时我们需要衡量一个向量的大小。在机器学习中，我们经常使用被称为 范数(norm)的函数衡量向量大小。形式上,$$L^p$$范数定义如下:$||x||_p=(\sum_{i}|x_i|^p)^\frac{1}{p}\tag{2.30}$
for $$\in \mathbb{R} , p\geq1$$.

Norms, including the $$L^p$$ norm, are functions mapping vectors to non-negativevalues. On an intuitive level, the norm of a vector x measures the distance fromthe origin to the point x. More rigorously, a norm is any functionfthat satisfies the following properties:

范数（包括 $$L^p$$ 范数）是将向量映射到非负值的函数。直观上来说，向量 x 的范数衡量从原点到点 x 的距离。更严格地说，范数是满足下列性质的任意函数：

f(x)=0 => x=0

$$f(x+y)\leq f(x)+f(y)$$ (the triangle inequality 三角不等式)

$$\bigvee \alpha \in \mathbb{R},f(\alpha x)=|\alpha|f(x)$$

The $$L^2$$ norm,with p=2,is known as the Euclidean norm,which is simply the Euclidean distance from the origin to the point identified by x。The $$L^2$$ norm is used so frequently in machine learning that it is often denoted simply as ||x||,with the subscript 2 omitted.It is also common to measure the size of a vector using the squared $$L^2$$ norm,which can be calculated simply as $$x^T x$$.

当 p = 2 时,$$L^2$$范数被称为 欧几里得范数（ Euclidean norm）。它表示从原点出发到向量 x 确定的点的欧几里得距离。$$L^2$$范数在机器学习中出现地十分频繁，经常简化表示为 ||x||，略去了下标 2。平方 L2 范数也经常用来衡量向量的大小，可以简单地通过点积$$x^T x$$ 计算。

转载于:https://www.cnblogs.com/hugeng007/p/9534933.html
展开全文
• ## norm

千次阅读 2018-07-17 15:33:39
欧几里得距离(Euclidean distance) 又名欧氏距离，欧几里德度量，在n维空间里，最短的线的长度即为欧氏距离，它是最常用的...Frobenius norm：定义与L2 norm类似（差别在哪里，还没有搞清楚。。。），求解公式如下：
欧几里得距离(Euclidean distance)

又名欧氏距离，欧几里德度量，在n维空间里，最短的线的长度即为欧氏距离，它是最常用的距离定义方法。

在二维和三维空间中的欧氏距离是指两点之间的距离。公式如下

点 x = (x1,...,xn) 和 y = (y1,...,yn) 之间的距离为

曼哈顿距离(Manhattan distance)：

又名出租车几何，是由十九世纪的赫尔曼·闵可夫斯基所创词汇，是使用在几何度量空间的几何学用语。

曼哈顿距离正式定义为L1距离或城市区距离，就是在欧几里德空间的固定直角坐标系上所形成的线段对轴产生的投影的距离总和。

要注意的是，曼哈顿距离依赖坐标系统的转度，而非系统在坐标轴上的平移或映射。

图中红线代表曼哈顿距离，绿色代表欧氏距离，也就是直线距离，而蓝色和黄色代表等价的曼哈顿距离。

L1 norm：向量各个元素绝对值之和，即为曼哈顿距离

L2 norm：向量各个元素的平方求和，然后求平方根，也即欧氏距离。

Frobenius norm：定义与L2 norm类似（差别在哪里，还没有搞清楚。。。），求解公式如下：
展开全文
• ## np.linalg.norm(求范数)

万次阅读 多人点赞 2018-01-15 10:13:24
1、linalg=linear（线性）+algebra（代数），norm则表示范数。 2、函数参数 x_norm=np.linalg.norm(x, ord=None, axis=None, keepdims=False) ①x: 表示矩阵（也可以是一维） ②ord：范数类型 向量的范数： ...
1、linalg=linear（线性）+algebra（代数），norm则表示范数。

2、函数参数

x_norm=np.linalg.norm(x, ord=None, axis=None, keepdims=False)

①x: 表示矩阵（也可以是一维）

②ord：范数类型

向量的范数：

矩阵的范数：

ord=1：列和的最大值

ord=2：|λE-ATA|=0，求特征值，然后求最大特征值得算术平方根(matlab在线版，计算ans=ATA，[x,y]=eig(ans)，sqrt(y)，x是特征向量，y是特征值)

ord=∞：行和的最大值

ord=None：默认情况下，是求整体的矩阵元素平方和，再开根号。（没仔细看，以为默认情况下就是矩阵的二范数，修正一下，默认情况下是求整个矩阵元素平方和再开根号）

③axis：处理类型

axis=1表示按行向量处理，求多个行向量的范数

axis=0表示按列向量处理，求多个列向量的范数

axis=None表示矩阵范数。

④keepding：是否保持矩阵的二维特性

True表示保持矩阵的二维特性，False相反

3、代码实现

import numpy as np
x = np.array([
[0, 3, 4],
[1, 6, 4]])
#默认参数ord=None，axis=None，keepdims=False
print "默认参数(矩阵整体元素平方和开根号，不保留矩阵二维特性)：",np.linalg.norm(x)
print "矩阵整体元素平方和开根号，保留矩阵二维特性：",np.linalg.norm(x,keepdims=True)

print "矩阵每个行向量求向量的2范数：",np.linalg.norm(x,axis=1,keepdims=True)
print "矩阵每个列向量求向量的2范数：",np.linalg.norm(x,axis=0,keepdims=True)

print "矩阵1范数：",np.linalg.norm(x,ord=1,keepdims=True)
print "矩阵2范数：",np.linalg.norm(x,ord=2,keepdims=True)
print "矩阵∞范数：",np.linalg.norm(x,ord=np.inf,keepdims=True)

print "矩阵每个行向量求向量的1范数：",np.linalg.norm(x,ord=1,axis=1,keepdims=True)

结果显示：

4、总结

①矩阵的三种范数求法（应该是4种了，在默认情况下，又多出了一种情况）

②向量的三种范数求法

展开全文
• 本文主要分析各种norm化方法，包括batch norm， group norm， instance norm，等，用的最多的肯定是batch norm，后续凯明何大佬又提出了gropu norm，但是其实在cv里面还没有真正的普及，尤其是在工业界部署上面，用...
本文主要分析cv中常用的batch norm， group norm方法，由于目标检测中不常见，因此只是简单介绍并理解Layer norm和Instance Norm的概念。首先cv中用的最多的肯定是batch norm，后续凯明何大佬又提出了gropu norm，但是其实在检测领域里面还没有真正的普及，尤其是在工业界部署上面，用的最多的还是batch norm，尤其是前两年大量paper提出基于BN层的模型剪枝方法、基于BN的融合卷积计算方法等（本文不提及，后续文章有需要会单独分析此类论文）后，batch-norm凸显的更加重要了，本文将不按照论文结构解析。

1、batch norm

paper：https://arxiv.org/abs/1502.03167

首先我们直接看paper的摘要：在dnn的训练过程中，各层的参数发生变化，则每层的输入分布也会发生变化，此时则需要通过降低学习率和通过更为仔细的参数初始化来减慢训练速度，使得神经网络变成饱和的非线性的模型，这个现象称之为internal covariate shift（内部协变量偏移）。 更进一步的，通过将归一化变为模型的一部分，为每个训练的小批量数据执行归一化，这样可以在训练时使用更高的学习率，并且参数初始化时不用那么小心和仔细，同时充当正则化器，在某些情况下可以不适用droupout。（注意：这是原文提出的batch-norm的初衷，其他的网上流传的似是而非的功能都是扯淡的！！！！）

internal covariate shift：在训练过程中每层输入的分布会改变，因为前面层的参数在不断更新，意味着层会需要连续不断的去适应新的分布。我们称它经历了covariate shift

接下来我们直接看paper的重点，注意，从paper的结构来说，是从随机梯度下降开始描述的，但本文只讲其batch-norm的部分，如下：

如上图所示，在训练时，对其每个batch输入求均值和方差，然后将输入进行归一化，，此时再加上β偏移量，得到最终的输出值，则此时的输出值会呈现稳定的分布输出。此处的重点来了：为什么非要对normalize后的输入进行scale和shift，把输入拉到均值为0，方差为1的正态分布已经很棒了，这是因为使用了norm后95%的数值会落在[-2, 2]之间，对应的sigmod是类似线性区间，而我们的多层神经网络要求的是非线性激活，因此，会导致dnn没有意义，降低网络的表达能力，因此normalization后在经过scale+shift（注意：这个γ和β是可训练的，后续经典的剪枝算法之一就是利用γ来进行剪枝，再后续又提出了基于γ和β一起的剪枝方法）

此时bn层的链式求导法则如下：

其中L为损失函数，xi为输入特征，y为bn层输出特征、方差、β、γ参数就不提了，具体的公式推导此处不研究，有兴趣的同学可以仔细推理一下。接下来paper给出了整个bn层的算法流程：

如上图所示，简单介绍一下训练流程，看上去很复杂，去掉专业符号就很简单了，N代表所有的可训练参数，首先对每一层输入进行x（当前层网络计算值）->y（BN）的替换，在训练时优化N，同时优化γ和β，在测试时，frozen BN参数，取多个batch的均值作为推理时的参数，然后进行bn层的推理计算。

进一步的，paper提出，bn层的位置问题，bn层是放在非线性激活的前面还是后面的问题，回到原paper：

假定原始的卷积层结构如上，加入BN层后，变形为如下：

即明显可以看出，原paper中BN层的结构是放在激活函数前面的，但是实际上，到底BN层放在前面还是后面呢，有很多争论，目前来看，主流应该是放在激活函数前面，从而在进入激活函数前面时将深层网络的输出从饱和拉至不饱和，当然也有说放在后面的，能够提升是收敛速度并且解决过拟合问题，而且跟激活函数有关，具体怎么样，本文就不讨论了。

实验结果：

综上，BN层的paper重点就到这里技术了，总结一下，BN层的优点是什么呢？大大的加快了DNN的训练速度，并给网络的权重提供了正则化，一定程度上防止了过拟合的问题。

2、group norm

group-norm ：https://arxiv.org/abs/1803.08494

Layer norm：https://arxiv.org/pdf/1607.06450.pdf

Instance norm：https://arxiv.org/pdf/1607.08022.pdf

本节详细介绍group norm，layer norm主要应用于RNN领域，在cnn领域效果不如BN，Instance norm主要用于风格迁移等，因此，本节只借用group norm对这两种方法进行概念解析，详情请参见原始paper。

2.1 batch-norm的缺点

首先看到Batch-norm的缺点：极度依赖与batch_size的大小的问题，当bs较小时，当前的批数据的均值和方差没有办法代表整体输入数据的分布，此时效果就会变差，如下图所示：

从上图中，我们可以明显看出，当bs变小是，BN层的精度差异很大，而本paper提出来的layer-norm便不存在这个问题，那既然bs对精度影响这么大，能不能提出一个norm方法，剔除掉bs的影响，从而取代Batch norm呢，？paper提出了这个思想。

2.2 Norm方式的定义

首先来看定义，什么叫做BN，Layer Norm、Instance Norm、Group Norm。

直接回到paper中给出的定义，如下图所示：

我们需要简单的说明一下这张图，很多博客都只是简单的举例，其实这张图还是有点抽象的。上图中，N代表batch-size的维度，H\W代表feature-map尺寸，C代表feature-map的通道数。但是上图是只有3个维度的，结合paper，是将H/W融合到了一个维度上，怎么理解呢，原来HW是一个面（二维），现在将其变成竖直的一条直线（1列-1维），其他维度不变，也就将4维变成了3维。

接下来我们看不同的norm方式：

BN是将整个N（batch-szie）维度归一化，对N维度的feature值求均值和方差，然后将特征点的值归一化；

Layer norm是将C维度进行归一化，对于每个输入数据的所有通道（整层），即所有feature-map，求其所有像素点的均值和方差；

Instance norm是对每个输入数据的单通道，即每张feature-map的单通道的像素点求均值和方差；

Group norm是将channels分为很多组，对每组求均值和方差，然后对每组进行归一化，则当group=1时，Group norm=Instance norm，当group=C时，Group norm=Instancenorm。

注意：BN需要通过滑动平均来记录全局的均值和方差，但是其他norm方法与batch无关，实现了训练与测试的统一。

2.3  Group norm的实现方式

idea来源，我们直接看paper：

从上图指出，视觉的表征的channels并不是独立的，sift、hog和gist等都是按照组设计的分组表示。类似的，cnn的特征也可以使用这种方式。

首先，paper给出了norm方法的一般形态，如式1：

其中均值和方差的定义如下式：

其中Si是代计算的均值和方差的像素集合，基于上式和Si的定义，我们分开讨论各种情况：

在batch-norm中，Si定义如下，其中ic和kc是在channel维度，如何理解呢，就是将channel-0的所有输入（N）维度做均值方差计算，将channel-1的所有输入（N）维度做均值方差计算，依次...，则最终体现的就是输入batch的归一化：

pytorch的api接口为：         torch.nn.BatchNorm2d(num_features, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

在Layer norm中，Si被定义为式4，kn和in是在整个(c,h,w)维度，也就是以单张输入数据为单位计算均值和方差：

pytorch的api接口为：torch.nn.LayerNorm(normalized_shape, eps=1e-05, elementwise_affine=True)

在Instance norm中，Si被定义为式5，kn和in是在整个HW维度上完成求和计算，也就是单通道、单输入的均值和方差计算：

pytorch的api接口为：torch.nn.InstanceNorm2d(num_features, eps=1e-05, momentum=0.1, affine=False, track_running_stats=False)

归一化后，最终通过下式来完成尺度和平移变换：

Group norm的定义如下（本文重点）：

如上图所示，Group norm时将通道分组，每次计算取同一个输入（N）、一组通道（group channels）、所有hw的均值和方差，将以上维度的特征点数值进行归一化。

测试结果：

上述图像为res50的测试结果，我们可以看到，gn的norm方式在各个阶段都是最接近于bn和超过bn的方法。

最重要的，上图可以看出Group norm对batch-size不敏感，且当bn的batch-size变小时，效果是比Group-norm要差的。

综上，便是cv领域中常用的batch-norm和group-norm。

展开全文
• Currently there are four distinct norm functions, which I don't think is really necessary. The attachment provides two norm functions, one for general iterables (essentially norm_p, but I think &#...
• <div><p>Adds a norm=... option to filters.mel, the mel-weight-matrix generation routine. <p>The default behavior (norm=1) continues to be "sum normalization" (as in Slaney's mfcc ...
• L1-norm 加 L2-norm 稀疏参数用于图像识别
• t a symbol for vector norm in asciimath. I'm happy to add it to the code, but need some input: <p>1) What should the asciimath symbol be? While ||x|| would be intuitive, I think it would be ...
• <div><p>NoRM can't be referenced from a strongly named assembly right now since it doesn't have a strong name key and is not signed. Could you please create a key so that it can be signed.</p>...
• <div><p>This PR adds batch norm. I've been using it in my private branch for a long time and think there should be no issues. I'll send some model code that actually uses batch norm later.</p>...
• MXnet LayerNorm pytorch LayerNorm 说明 LayerNorm中不会像BatchNorm那样跟踪统计全局的均值方差，因此train()和eval()对LayerNorm没有影响。 LayerNorm参数 torch.nn.LayerNorm( normalized_shape: ...
• L1 norm就是绝对值相加，又称曼哈顿距离 L2 norm就是欧几里德距离 转载于 http://blog.sina.com.cn/s/blog_76b240910101cust.html
• 范数 normAbsolute-value normℓ1\ell_1ℓ1​-范数（ℓ1\ell_1ℓ1​-norm)Euclidean normℓp{\displaystyle \ell _{p}}ℓp​-normuniform norm (ℓ∞\ell_{\infty}ℓ∞​-norm) Absolute-value norm If xxx is one-...
• 自Batch Norm出现之后，Layer Norm和Weight Norm作为Batch Norm的变体相继出现。最近又出来一个很”简单”的激活函数Selu，能够实现automatic rescale and shift。这些结构都是为了保证网络能够堆叠的更深的基本条件...
• <p>I have a question regarding bcftools norm ( bcftools norm Left-align and normalize indels; check if REF alleles match the reference; split multiallelic sites into multiple rows; recover ...
• <p>I couldnt find the implementation of Instance Norm in mlpack. Link to pytorch doc: <a href="url">https://pytorch.org/docs/stable/nn.html#instancenorm1d</a></p> <p>Is it implemented? If not can I ...
• I have question about norm in 78 line in train.py <a href="url">https://github.com/tkipf/gae/blob/master/gae/train.py</a> So ,can you explain it?</p><p>该提问来源于开源项目：tkipf/gae</p></div>
• BN，LN，IN，GN从学术化上...LayerNorm：channel方向做归一化，算CHW的均值 InstanceNorm：一个channel内做归一化，算H*W的均值 GroupNorm：将channel方向分group，然后每个group内做归一化，算(C//G)HW的均值 ...
• 1. Batch Norm 深度学习的话尤其是在CV上都需要对数据做归一化，因为深度神经网络主要就是为了学习训练数据的分布，并在测试集上达到很好的泛化效果，但是，如果我们每一个batch输入的数据都具有不同的分布，显然会...
• 文章目录一、L0 Norm二、L1 Norm三、L2 Norm 一、L0 Norm L0 范数对应于向量中非零元素的总数 例如，向量（0,0）和（0,2）的L0范数为1，因为只有一个非零元素。 L0范数的一个很好的实用示例是当具有两个向量（用户名...
• ## L2 norm L1 norm

千次阅读 2013-11-25 15:22:13
L2 norm就是欧几里德距离 L1 norm就是绝对值相加，又称曼哈顿距离 搞统计的人总是喜欢搞什么“变量选择”，变量选择实际上的 限制条件是L0 Norm，但这玩艺不好整，于是就转而求L1 Norm(使用均方误差，就是Lasso ,...
• batch norm： 每一batch的样本具有相同的均值和方差 我们在对数据训练之前会对数据集进行归一化，归一化的目的归一化的目的就是使得预处理的数据被限定在一定的范围内（比如[0,1]或者[-1,1]），从而消除奇异样本数据...
• d like to implement a norm method for <code>NMatrix</code> and would like to ask for your assistance. How do you see the function? At the moment, here's what I think: <pre><code> ruby mat = N...
• Batch Norm 本文总结自吴恩达深度学习系列视频：优化深层神经网络的Batch Norm部分，有所删减。 在tensorflow中，实现Batch Norm只需要一行代码： tf.nn.batch_normalization 下面我们就了解一下Batch Norm的...
• ve mentioned in your paper, Region Norm should be a generation to Instance Norm. However, from your implementation, rn is still based on the distribution of mask/unmask regions in the whole batch. Is ...

...