一、 什么是范数
范数(Norm)是数学中用于衡量向量大小(或距离)的一种概念。在几何和代数中,范数可以提供一个向量长度或大小的量度。更正式地说,范数是一个函数,它将向量的集合映射到非负实数,满足以下性质:
在数学上,范数包括向量范数和矩阵范数,向量范数表征向量空间中向量的大小,矩阵范数表征矩阵引起变化的大小。一种非严密的解释就是,对应向量范数,向量空间中的向量都是有大小的,这个大小如何度量,就是用范数来度量的,不同的范数都可以来度量这个大小,就好比米和尺都可以来度量远近一样
二、 L1范数------曼哈顿范数(Manhattan Norm)
表示向量各元素的绝对值之和,它对应于在坐标轴上移动到向量端点所需的最小步伐数。
使用 L1范数可以度量两个向量间的差异,如绝对误差和(Sum of Absolute Difference): 。
由于L1范数的天然性质,对L1优化的解是一个稀疏解, 因此L1范数也被叫做稀疏规则算子。 通过L1可以实现特征的稀疏,去掉一些没有信息的特征,例如在对用户的电影爱好做分类的时候,用户有100个特征,可能只有十几个特征是对分类有用的,大部分特征如身高体重等可能都是无用的,利用L1范数就可以过滤掉。
2.1 L1范数的性质
- 稀疏性:L1范数倾向于产生稀疏解,即解中的许多元素为零。这在某些情况下非常有用,比如在稀疏编码或压缩感知中。
- 线性:L1范数是一个线性算子,意味着它满足线性性质,即对于任意标量 α和向量 𝑥 和𝑦,有∣∣𝛼𝑥+𝑦∣∣=∣𝛼∣⋅∣∣𝑥∣∣+∣∣𝑦∣∣。
- 次梯度:L1范数不是处处可微的,因为它在原点处有一个尖角。但是,它具有次梯度(subgradient),这允许在优化问题中使用它,即使它不是处处可微的。
2.2 L1范数的应用
- 稀疏编码:在机器学习中,L1正则化(Lasso回归)通过惩罚较大的系数来促进特征选择和稀疏解。
- 压缩感知:在信号处理中,L1范数用于从少量的随机测量中恢复稀疏信号。
- 优化问题:在许多优化问题中,L1范数被用作正则化项,以防止模型过拟合。
在OpenCV中,cv2.norm() 函数可以用来计算两个点集之间的L1范数距离,通过指定 cv2.NORM_L1 作为参数。这在比较图像或点集时特别有用,尤其是在需要稀疏解的情况下。
三、 L2范数------欧几里得范数(Euclidean Norm)
表示向量元素的平方和再开平方,这是最直观的向量长度定义,对应于我们通常所说的"长度"。。
距离欧氏距离就是一种L2范数,如小学学过的求坐标轴上P(x,y)与坐标原点o的距离。
像L1范数一样,L2也可以度量两个向量间的差异,如平方差和(Sum of Squared Difference): (或者可以理解为两点之间的距离)
3.1 L2范数的性质:
3.2 L2范数的应用:
- 几何距离:L2范数在几何上表示两点之间的直线距离,因此常用于计算两点之间的距离。
- 优化问题:在优化问题中,L2范数用作正则化项,有助于控制模型的复杂度,防止过拟合。这种方法被称为L2正则化或Ridge Regression。
- 机器学习:在机器学习算法中,如线性回归和支持向量机,L2范数用于惩罚模型参数的大值,从而促进模型的平滑性和泛化能力。
在OpenCV中,可以使用cv2.norm()函数计算两个点集之间的L2范数距离,通过指定cv2.NORM_L2作为参数。这在比较图像或点集时特别有用,尤其是在需要考虑真实距离或误差时。
3.3 与L1范数的比较:
- L1范数(曼哈顿距离)是向量元素绝对值之和,它在几何上表示在坐标轴上移动到向量端点所需的最小步伐数。
- L2范数与L1范数相比,通常会产生更平滑的解,而L1范数则倾向于产生稀疏解(即解中的许多元素为零)。
四、 L∞范数------最大值范数(Maximum Norm)
表示向量所有元素绝对值的最大值。
五、 总结
5.1 范数的一般形式:L-P范数
当 p=2 时,它是欧几里得范数;当 p=1 时,它是曼哈顿范数;当 𝑝→∞时,它是最大值范数。
在实际应用中,选择哪种范数取决于问题的特性和所需的解的性质。例如,L1范数促进稀疏解,而L2范数则倾向于产生平滑解。其他p-范数可能在需要特定平衡时使用。
5.2 L1正则化产生稀疏的权值, L2正则化产生平滑的权值为什么会这样?
在支持向量机学习过程中,L1范数实际是一种对于成本函数求解最优的过程,因此,L1范数正则化通过向成本函数中添加L1范数,使得学习得到的结果满足稀疏化,从而方便提取特征。
L1范数可以使权值稀疏,方便特征提取。 L2范数可以防止过拟合,提升模型的泛化能力。
5.3 L1和L2正则先验分别服从什么分布
L1服从拉普拉斯分布,L2服从高斯分布。