什么是范数(norm)?以及L1,L2范数的简单介绍

什么是范数?

范数,是具有“距离”概念的函数。我们知道距离的定义是一个宽泛的概念,只要满足非负、自反、三角不等式就可以称之为距离。范数是一种强化了的距离概念,它在定义上比距离多了一条数乘的运算法则。有时候为了便于理解,我们可以把范数当作距离来理解。

在数学上,范数包括向量范数和矩阵范数,向量范数表征向量空间中向量的大小,矩阵范数表征矩阵引起变化的大小。一种非严密的解释就是,对应向量范数,向量空间中的向量都是有大小的,这个大小如何度量,就是用范数来度量的,不同的范数都可以来度量这个大小,就好比米和尺都可以来度量远近一样;对于矩阵范数,学过线性代数,我们知道,通过运算AX=B,可以将向量X变化为B,矩阵范数就是来度量这个变化大小的。

这里简单地介绍以下几种向量范数的定义和含义

在这里插入图片描述
2、L0范数
当P=0时,也就是L0范数,由上面可知,L0范数并不是一个真正的范数,它主要被用来度量向量中非零元素的个数。用上面的L-P定义可以得到的L-0的定义为:

在这里插入图片描述
这里就有点问题了,我们知道非零元素的零次方为1,但零的零次方,非零数开零次方都是什么鬼,很不好说明L0的意义,所以在通常情况下,大家都用的是:
在这里插入图片描述
表示向量x中非零元素的个数。对于L0范数,其优化问题为:
在这里插入图片描述
在实际应用中,由于L0范数本身不容易有一个好的数学表示形式,给出上面问题的形式化表示是一个很难的问题,故被人认为是一个NP难问题。所以在 实际情况中L0的最优问题会被放宽到L1或L2下的最优化。

3、L1范数
L1范数是我们经常见到的一种范数,它的定义如下:

在这里插入图片描述
表示向量x中非零元素的绝对值之和。
L1范数有很多的名字,例如我们熟悉的 曼哈顿距离、最小绝对误差等。使用 L1范数可以度量两个向量间的差异,如绝对误差和(Sum of Absolute Difference)
在这里插入图片描述
对于L1范数,它的优化问题如下:
在这里插入图片描述
由于L1范数的天然性质,对L1优化的解是一个稀疏解, 因此L1范数也被叫做稀疏规则算子通过L1可以实现特征的稀疏,去掉一些没有信息的特征,例如在对用户的电影爱好做分类的时候,用户有100个特征,可能只有十几个特征是对分类有用的,大部分特征如身高体重等可能都是无用的,利用L1范数就可以过滤掉。

4、L2范数
L2范数是我们最常见最常用的范数了,我们用的最多的度量距离欧氏距离就是一种L2范数,它的定义如下:


在这里插入图片描述
表示向量元素的平方和再开平方。
像L1范数一样,L2也可以度量两个向量间的差异,如平方差和(Sum of Squared Difference):

在这里插入图片描述

对于L2范数,它的优化问题如下:
在这里插入图片描述

L2范数通常会被用来做优化目标函数的正则化项,防止模型为了迎合训练集而过于复杂造成过拟合的情况,从而提高模型的泛化能力

5、L 范数
当 p=∞时,也就是L范数,它主要被用来度量向量元素的最大值,与L0一样,通常情况下表示为

在这里插入图片描述

以上内容转载于SethChai的博客,再次感谢博主的分享,转载请附上原文链接: https://blog.csdn.net/a493823882/article/details/80569888

扩展一点:

使用机器学习方法解决实际问题时,我们通常要用L1或L2范数做正则化(regularization),从而限制权值大小,减少过拟合风险。特别是在使用梯度下降来做目标函数优化时,

L1和L2的区别

L1范数(L1 norm)是指向量中各个元素绝对值之和,也有个美称叫“稀疏规则算”(Lasso regularization)。
比如 向量A=[1,-1,3], 那么A的L1范数为 |1|+|-1|+|3|.

简单总结一下就是:
L1范数: 为x向量各个元素绝对值之和。
L2范数: 为x向量各个元素平方和的1/2次方,L2范数又称Euclidean范数或者Frobenius范数
Lp范数: 为x向量各个元素绝对值p次方和的1/p次方.

L1正则化产生稀疏的权值, L2正则化产生平滑的权值为什么会这样?
在支持向量机学习过程中,L1范数实际是一种对于成本函数求解最优的过程,因此,L1范数正则化通过向成本函数中添加L1范数,使得学习得到的结果满足稀疏化,从而方便提取特征。
L1范数可以使权值稀疏,方便特征提取。 L2范数可以防止过拟合,提升模型的泛化能力。
L1和L2正则先验分别服从什么分布
面试中遇到的,L1和L2正则先验分别服从什么分布,L1是拉普拉斯分布,L2是高斯分布。

  • 157
    点赞
  • 674
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: l1范数是指向量中各个元素绝对值的和,也被称为绝对值范数。它衡量向量中所有元素对整体贡献的绝对大小。l1范数的计算公式如下:||x||1 = |x1| + |x2| + ... + |xn|。 l1范数的代码实现如下(MATLAB): ```matlab function norm_l1 = l1_norm(x) norm_l1 = sum(abs(x)); end ``` l2范数是指向量中所有元素的平方和的平方根,也被称为欧几里得范数。它衡量向量的整体长度。l2范数的计算公式如下:||x||2 = sqrt(x1^2 + x2^2 + ... + xn^2)。 l2范数的代码实现如下(MATLAB): ```matlab function norm_l2 = l2_norm(x) norm_l2 = sqrt(sum(x.^2)); end ``` matlab源码.zip是一个压缩文件,其中包含了l1范数l2范数的MATLAB代码实现。你可以下载这个压缩文件,解压后使用其中的代码进行l1l2范数的计算。 ### 回答2: L1范数是指向量中所有元素绝对值的和,而L2范数是指向量中所有元素平方和的平方根。 下面是一个计算L1范数的MATLAB源码示例: ``` function l1norm = calculateL1Norm(vector) l1norm = sum(abs(vector)); end ``` 这段代码接受一个向量作为输入参数,并计算该向量的L1范数。它通过调用MATLAB内置函数`abs`来计算向量中每个元素的绝对值,并使用`sum`函数来计算所有元素绝对值的和。 L2范数可以通过MATLAB内置函数`norm`来计算,下面是一个示例: ``` function l2norm = calculateL2Norm(vector) l2norm = norm(vector); end ``` 这段代码接受一个向量作为输入参数,并计算该向量的L2范数。它使用`norm`函数来计算向量的L2范数,默认情况下`norm`函数会计算L2范数。 你提到的`matlab源码.zip`可能是包含上述代码的MATLAB源码文件的压缩文件。你可以将该文件解压缩,并使用MATLAB软件加载源码文件来查看和运行这些代码。 ### 回答3: L1范数是指向量中各个元素的绝对值之和。在数学上,给定一个向量x=(x1,x2,...,xn),它的L1范数表示为||x||_1,计算公式为: ||x||_1 = |x1| + |x2| + ... + |xn| L2范数是指向量中各个元素的平方和再开方。在数学上,给定一个向量x=(x1,x2,...,xn),它的L2范数表示为||x||_2,计算公式为: ||x||_2 = sqrt(x1^2 + x2^2 + ... + xn^2) 可以看出,L1范数是各个元素的绝对值求和,而L2范数是各个元素的平方和开方。 至于所提到的"l1范数代码,l1范数l2范数,matlab源码.zip",我无法直接提供该文件,因为不能以文本形式输入文件。但你可以在网上搜索相关的代码或者Matlab源码,以学习如何实现L1范数L2范数的计算。常见的实现方式包括循环遍历向量的元素并累计求和,以及使用内置函数进行计算。对于Matlab而言,可以使用sum()函数计算L1范数,使用norm()函数计算L2范数。 希望以上信息对你有所帮助。如果你有任何进一步的问题,请随时提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值