范数(norm) 几种范数的简单介绍

本文深入浅出地介绍了向量范数和矩阵范数的概念,详细解释了L-P范数、L0范数、L1范数、L2范数以及范数的定义、特性和应用场景。了解不同范数如何度量向量大小和矩阵变化,及其在优化问题中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是范数?

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

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

这里简单地介绍以下几种向量范数的定义和含义 
1、 L-P范数 
与闵可夫斯基距离的定义一样,L-P范数不是一个范数,而是一组范数,其定义如下: 

                                 
根据P 的变化,范数也有着不同的变化,一个经典的有关P范数的变化图如下: 
                这里写图片描述
上图表示了p从无穷到0变化时,三维空间中到原点的距离(范数)为1的点构成的图形的变化情况。以常见的L-2范数(p=2)为例,此时的范数也即欧氏距离,空间中到原点的欧氏距离为1的点构成了一个球面。
实际上,在0时,Lp并不满足三角不等式的性质,也就不是严格意义下的范数。以p=0.5,二维坐标(1,4)、(4,1)、(1,9)为例,。因此这里的L-P范数只是一个概念上的宽泛说法。

2、L0范数 

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

                                            

这里就有点问题了,我们知道非零元素的零次方为1,但零的零次方,非零数开零次方都是什么鬼,很不好说明L0的意义,所以在通常情况下,大家都用的是: 

                                            

表示向量x中非零元素的个数。
对于L0范数,其优化问题为: 

                                           
                                           s.t. Ax=b 
在实际应用中,由于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、范数

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

                                         

来表示

 

### 范数的定义 范数是一种用于衡量向量或矩阵“大小”的工具,在数学和机器学习领域具有重要意义。具体来说,范数满足以下三个基本性质[^1]: 1. **非负性**:对于任意向量 \( \mathbf{x} \),有 \( \| \mathbf{x} \| \geq 0 \),且仅当 \( \mathbf{x} = \mathbf{0} \) 时取等号。 2. **齐次性**:对于任何标量 \( c \) 和向量 \( \mathbf{x} \),有 \( \| c \cdot \mathbf{x} \| = |c| \cdot \| \mathbf{x} \| \)。 3. **三角不等式**:对于任意两个向量 \( \mathbf{x}, \mathbf{y} \),有 \( \| \mathbf{x} + \mathbf{y} \| \leq \| \mathbf{x} \| + \| \mathbf{y} \| \)。 这些性质使范数成为一种有效的度量方式,尤其是在描述向量的空间特性方面。例如,二维或三维向量的模长实际上也是一种特殊的范数(即欧几里得范数),它同样遵循上述三条性质。 在更广义的情况下,\( L_p \) 范数的形式化定义为: \[ \| \mathbf{x} \|_p = \left( \sum_{i=1}^{n} |x_i|^p \right)^{\frac{1}{p}}, \quad p \geq 1 \] 其中 \( x_i \) 是向量 \( \mathbf{x} \) 的第 \( i \) 个分量[^2]。 --- ### 范数的具体种类及其特点 #### 1. \( L_0 \) 范数 \( L_0 \) 范数表示向量中非零元素的数量。尽管严格意义上 \( L_0 \) 并不是一个真正的范数(因为它不符合齐次性和其他一些技术条件),但在实际应用中常被提及。由于计算 \( L_0 \) 正则化的优化问题是 NP 难问题,通常用 \( L_1 \) 正则化作为替代方法来实现稀疏性[^3]。 #### 2. \( L_1 \) 范数 \( L_1 \) 范数是向量各分量绝对值之和: \[ \| \mathbf{x} \|_1 = \sum_{i=1}^{n} |x_i| \] 相比 \( L_2 \) 范数,\( L_1 \) 更倾向于产生稀疏解,因为其惩罚机制会让某些系数变为零。这种特性使其广泛应用于特征选择场景中[^3]。 #### 3. \( L_2 \) 范数 \( L_2 \) 范数又称为欧几里得范数,是最常用的范数之一: \[ \| \mathbf{x} \|_2 = \sqrt{\sum_{i=1}^{n} x_i^2} \] 该范数主要用于测量向量长度以及两向量间的距离。在机器学习中,\( L_2 \) 正则化(Ridge 回归)通过对权重施加平方约束,有效防止模型过拟合[^5]。 --- ### 范数在机器学习中的应用 1. **正则化** - 在监督学习任务中,通过加入基于范数的正则项可以控制模型复杂度并减少过拟合风险。例如,\( L_1 \) 正则化鼓励稀疏解决方案,而 \( L_2 \) 则平滑参数分布[^3][^5]。 2. **距离度量** - 许多算法依赖于样本间相似性的评估,比如 k 近邻分类器(KNN)、聚类分析等。此时可利用不同类型的范数构建相应的距离函数。例如,欧几里得距离本质上对应着 \( L_2 \) 范数[^4]。 3. **优化目标设计** - 对于神经网络训练过程而言,合理选取损失函数内的成分有助于提升泛化能力。部分研究者尝试结合多种范数值构造复合型代价表达式以改善性能表现。 以下是 Python 实现的一个简单例子展示如何计算几种常见的范数: ```python import numpy as np def compute_norms(vector): l0_norm = np.count_nonzero(vector) l1_norm = np.linalg.norm(vector, ord=1) l2_norm = np.linalg.norm(vector, ord=2) return {"L0": l0_norm, "L1": l1_norm, "L2": l2_norm} vector_example = [3, -7, 0, 8] result = compute_norms(vector_example) print(result) ``` --- ### 总结 综上所述,范数不仅提供了量化向量特性的基础框架,还在现代数据科学实践中扮演重要角色。无论是促进模型简洁还是增强预测稳定性,恰当运用各类范数均能显著提高建模效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值