范数、正则化、归一化、标准化

article/2025/9/30 23:37:27

在总结正则化(Regularization)之前,我们先谈一谈正则化是什么,为什么要正则化。

个人认为正则化这个字眼有点太过抽象和宽泛,其实正则化的本质很简单,就是对某一问题加以先验的限制或约束以达到某种特定目的的一种手段或操作。在算法中使用正则化的目的是防止模型出现过拟合。一提到正则化,很多同学可能马上会想到常用的L1范数和L2范数,在汇总之前,我们先看下LP范数是什么鬼。

LP范数

范数简单可以理解为用来表征向量空间中的距离,而距离的定义很抽象,只要满足非负、自反、三角不等式就可以称之为距离。

LP范数不是一个范数,而是一组范数,其定义如下:

 

 

那问题来了,L0范数是啥玩意?

L0范数表示向量中非零元素的个数,用公式表示如下:

  

我们可以通过最小化L0范数,来寻找最少最优的稀疏特征项。但不幸的是,L0范数的最优化问题是一个NP hard问题(L0范数同样是非凸的)。因此,在实际应用中我们经常对L0进行凸松弛,理论上有证明,L1范数是L0范数的最优凸近似,因此通常使用L1范数来代替直接优化L0范数。

 

L1范数

根据LP范数的定义我们可以很轻松的得到L1范数的数学形式:

  

通过上式可以看到,L1范数就是向量各元素的绝对值之和,也被称为是"稀疏规则算子"(Lasso regularization)。那么问题来了,为什么我们希望稀疏化?稀疏化有很多好处,最直接的两个:

  • 特征选择
  • 可解释性

L2范数

L2范数是最熟悉的,它就是欧几里得距离,公式如下:

  

L2范数有很多名称,有人把它的回归叫“岭回归”(Ridge Regression),也有人叫它“权值衰减”(Weight Decay)。以L2范数作为正则项可以得到稠密解,即每个特征对应的参数ww都很小,接近于0但是不为0;此外,L2范数作为正则化项,可以防止模型为了迎合训练集而过于复杂造成过拟合的情况,从而提高模型的泛化能力。

L1范数和L2范数的区别

引入PRML一个经典的图来说明下L1和L2范数的区别,如下图所示:

 

如上图所示,蓝色的圆圈表示问题可能的解范围,橘色的表示正则项可能的解范围。而整个目标函数(原问题+正则项)有解当且仅当两个解范围相切。从上图可以很容易地看出,由于L2范数解范围是圆,所以相切的点有很大可能不在坐标轴上,而由于L1范数是菱形(顶点是凸出来的),其相切的点更可能在坐标轴上,而坐标轴上的点有一个特点,其只有一个坐标分量不为零,其他坐标分量为零,即是稀疏的。所以有如下结论,L1范数可以导致稀疏解,L2范数导致稠密解。
从贝叶斯先验的角度看,当训练一个模型时,仅依靠当前的训练数据集是不够的,为了实现更好的泛化能力,往往需要加入先验项,而加入正则项相当于加入了一种先验。
  • L1范数相当于加入了一个Laplacean先验;
  • L2范数相当于加入了一个Gaussian先验。

如下图所示:

 

Dropout

Dropout是深度学习中经常采用的一种正则化方法。它的做法可以简单的理解为在DNNs训练的过程中以概率pp丢弃部分神经元,即使得被丢弃的神经元输出为0。Dropout可以实例化的表示为下图:

我们可以从两个方面去直观地理解Dropout的正则化效果:

  • 在Dropout每一轮训练过程中随机丢失神经元的操作相当于多个DNNs进行取平均,因此用于预测时具有vote的效果。
  • 减少神经元之间复杂的共适应性。当隐藏层神经元被随机删除之后,使得全连接网络具有了一定的稀疏化,从而有效地减轻了不同特征的协同效应。也就是说,有些特征可能会依赖于固定关系的隐含节点的共同作用,而通过Dropout的话,就有效地组织了某些特征在其他特征存在下才有效果的情况,增加了神经网络的鲁棒性。


Batch Normalization

批规范化(Batch Normalization)严格意义上讲属于归一化手段,主要用于加速网络的收敛,但也具有一定程度的正则化效果。

这里借鉴下魏秀参博士的知乎回答中对covariate shift的解释(这里)。

注以下内容引自魏秀参博士的知乎回答:

大家都知道在统计机器学习中的一个经典假设是“源空间(source domain)和目标空间(target domain)的数据分布(distribution)是一致的”。如果不一致,那么就出现了新的机器学习问题,如transfer learning/domain adaptation等。而covariate shift就是分布不一致假设之下的一个分支问题,它是指源空间和目标空间的条件概率是一致的,但是其边缘概率不同。大家细想便会发现,的确,对于神经网络的各层输出,由于它们经过了层内操作作用,其分布显然与各层对应的输入信号分布不同,而且差异会随着网络深度增大而增大,可是它们所能“指示”的样本标记(label)仍然是不变的,这便符合了covariate shift的定义。

BN的基本思想其实相当直观,因为神经网络在做非线性变换前的激活输入值(X=WU+BX=WU+B,UU是输入)随着网络深度加深,其分布逐渐发生偏移或者变动(即上述的covariate shift)。之所以训练收敛慢,一般是整体分布逐渐往非线性函数的取值区间的上下限两端靠近(对于Sigmoid函数来说,意味着激活输入值X=WU+BX=WU+B是大的负值或正值),所以这导致后向传播时低层神经网络的梯度消失,这是训练深层神经网络收敛越来越慢的本质原因。而BN就是通过一定的规范化手段,把每层神经网络任意神经元这个输入值的分布强行拉回到均值为0方差为1的标准正态分布,避免因为激活函数导致的梯度弥散问题。所以与其说BN的作用是缓解covariate shift,倒不如说BN可缓解梯度弥散问题。



归一化、标准化 & 正则化

正则化我们以及提到过了,这里简单提一下归一化和标准化。

归一化(Normalization):归一化的目标是找到某种映射关系,将原数据映射到[a,b][a,b]区间上。一般a,ba,b会取[1,1],[0,1][−1,1],[0,1]这些组合。

一般有两种应用场景:

  • 把数变为(0, 1)之间的小数
  • 把有量纲的数转化为无量纲的数

常用min-max normalization:

  

标准化(Standardization):用大数定理将数据转化为一个标准正态分布,标准化公式为:

 

其中$\mu$是所有$x$的平均值,$\sigma$是这个特征的标准差。

归一化和标准化的区别:

我们可以这样简单地解释:

归一化的缩放是“拍扁”统一到区间(仅由极值决定),而标准化的缩放是更加“弹性”和“动态”的,和整体样本的分布有很大的关系。

值得注意:

归一化:缩放仅仅跟最大、最小值的差别有关。

标准化:缩放和每个点都有关系,通过方差(variance)体现出来。与归一化对比,标准化中所有数据点都有贡献(通过均值和标准差造成影响)。

为什么要标准化和归一化?

  • 提升模型精度:归一化后,不同维度之间的特征在数值上有一定比较性,可以大大提高分类器的准确性。
  • 加速模型收敛:标准化后,最优解的寻优过程明显会变得平缓,更容易正确的收敛到最优解。如下图所示:

Reference

1. Andrew Ng深度学习教程

2. Must Know Tips/Tricks in Deep Neural Networks (by Xiu-Shen Wei)

 

转自:https://www.cnblogs.com/maybe2030/p/9231231.html

 

=========================================================

关于范数的更多信息可参考:几种范数的简单介绍

 

L1-norm和L2-norm哪个对噪声/异常点更敏感

1.https://blog.csdn.net/w5688414/article/details/78046960

对于L2-norm,由于是均方误差,如果误差>1的话,那么平方后,相比L-norm而言,误差就会被放大很多。因此模型会对样例更敏感。如果样例是一个异常值,模型会调整最小化异常值的情况,以牺牲其它更一般样例为代价,因为相比单个异常样例,那些一般的样例会得到更小的损失误差。

2.https://www.jianshu.com/p/ac26866e81bc

因为L1范数在误差接近0的时候不平滑,所以比较少用到这个范数。
L2范数的缺点是当存在离群点(outliers)的时候,这些点会占loss的主要组成部分。比如说真实值为1,预测10次,有一次预测值为1000,其余次的预测值为1左右,显然loss值主要由1000主宰。

 

转载于:https://www.cnblogs.com/bymo/p/9542069.html


http://chatgpt.dhexx.cn/article/w1p0w6j6.shtml

相关文章

常见向量范数和矩阵范数

1、向量范数 1-范数:,即向量元素绝对值之和,matlab调用函数norm(x, 1) 。 2-范数:,Euclid范数(欧几里得范数,常用计算向量长度),即向量元素绝对值的平方和再开方&#xf…

欧氏距离,l2范数,l2-loss,l2正则化

欧式距离,l2范数,l2-loss,l2正则化 1.欧氏距离2.L2范数范数计算公式L1范数L2范数在机器学习方面的区别为什么L2范数可以防止过拟合? 3.L2-Loss4.L2正则化正则化L2正则化 参考文献 1.欧氏距离 距离度量(Distance)用于衡量个体在空间上存在的距离&#x…

pytorch求范数函数——torch.norm

torch.norm(input, pfro, dimNone, keepdimFalse, outNone, dtypeNone) 返回所给定tensor的矩阵范数或向量范数,所谓范数也就是把一个高纬度的东西,压缩成为一个大于等于零的数,用以估算这里东西的大小(幅度) 参数: input:输入tensorp (int, float, i…

来自知乎的范数理解

以下分别列举常用的向量范数和矩阵范数的定义。 向量范数 1-范数: ,即向量元素绝对值之和,matlab调用函数norm(x, 1) 。 2-范数: ,Euclid范数(欧几里得范数,常用计算向量长度)&…

16.1 几何空间

文章目录 1 欧几里得范数2 距离3 标准内积5 夹角与正交6 叉乘7 平行四边形法则8 欧几里得运动 几何空间是用线性代数解决几何问题的一类空间,这是线性代数学习绕不过去的槛。几何空间,学习起来我觉得吧,主要是三个点:内积、长度、…

常见向量范数和矩阵范数及其MATLAB实现

参考 常见向量范数和矩阵范数及其MATLAB实现 - 云社区 - 腾讯云 1、向量范数 1-范数:,即向量元素绝对值之和,matlab调用函数norm(x, 1) 。 2-范数:,Euclid范数(欧几里得范数,常用计算向量长度…

MATLAB 欧几里得算法

MATLAB 欧几里得算法以及扩展欧几里得算法 前言一、Euclid算法二、Code1.引入库2.读入数据 前言 提示:在线性代数或高等代数中以熟悉求两个多项式最大公因子 一、Euclid算法 输入两个多项式 g(x) , h(x) ∈ F(x),满足 deg g(x) ≥ deg h(x) , 且 g(x) ≠ 0, 二、…

【 MATLAB 】norm ( Vector and matrix norms )(向量范数以及矩阵范数)

norm Vector and matrix norms Syntax n norm(v) n norm(v,p) n norm(X) n norm(X,p) n norm(X,fro) Description n norm(v)返回向量v的欧几里德范数。该范数也称为2范数,向量幅度或欧几里德长度。 n norm(v&#…

向量范数

向量范数的定义如下: 若实值函数(n维向量空间向一维向量空间的映射):满足下列条件: (1),;当且仅当; (2),,&…

向量和矩阵的各种范数

向量和矩阵的各种范数 一、向量的范数 首先定义一个向量为:a[-5,6,8, -10] 1.1 向量的1范数 向量的1范数即:向量的各个元素的绝对值之和,上述向量a的1范数结果就是:29,MATLAB代码实现为&…

欧几里得范数

原文链接 点击打开链接 1 范数 向量的范数可以简单形象的理解为向量的长度,或者向量到零点的距离,或者相应的两个点之间的距离。 2 距离 欧式距离(对应L2范数):最常见的两点之间或多点之间的距离表示法,…

p-范数(2-范数 即 欧几里得范数)

规范化矩阵 p-范数定义vecnorm和normvecnorm应用 废了废了,2016版本用不起vecnormnormnorm规范化矩阵 p-范数定义 常见 1-范数、2-范数(欧几里得范数) vecnorm和norm vecnorm 应用 计算欧式距离别再傻憨憨地去背两点之间的距离公式了&am…

L2范数-欧几里得范数

L1范数 L1范数是指向量中各个元素绝对值之和 L2范数 L2范数、欧几里得范数一些概念。 首先,明确一点,常用到的几个概念,含义相同。 欧几里得范数(Euclidean norm) 欧式长度 L2 范数 L2距离 Euclidean norm Eucl…

欧几里得范数(L2范数)

L1范数和L2范数我们应该经常接触,但是欧几里得范数可能有些人听着会有些陌生,乍一看以为是多么难的东西,其实欧几里得范数就是L2范数,只是叫法不同而已。 L1范数 L1范数是指向量中各个元素绝对值之和。 L2范数(欧几…

SVM算法的介绍

一、SVM算法的介绍 1.什么是SVM算法? SVM(Support Vector Machine)是一种常见的监督学习算法,用于进行二分类或多分类任务。它的主要思想是找到一个最优的超平面,将不同类别的样本分隔开。 超平面最大间隔介绍&#…

SVM原理及代码实现(学习笔记)

1.概念 支持向量机(Support Vector Machine, SVM)是一类按监督学习(supervised learning)方式对数据进行二元分类的广义线性分类器(generalized linear classifier),其决策边界是对学习样本求解…

SVM原理详解

SVM 原理详解 转自:http://www.blogjava.net/zhenandaci/category/31868.html (一)SVM的简介 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本、非线性及高维模式识别中表现出许多特有的…

SVM算法原理解读

-----------------------------------------------------需要死记硬背的部分--------------------------------------------- 超平面划分正负数据 支持向量上对应的公式: 转换为: 转换为: 正样例yi1,此时 负样例yi-1&#xff…

最容易理解的SVM算法原理

基于最大间隔分隔数据 1.1支持向量与超平面 SVM(Support Vector Mac)又称为支持向量机,是一种二分类的模型。当然如果进行修改之后也是可以用于多类别问题的分类。支持向量机可以分为线性核和非线性两大类。其主要思想为找到空间中的一个更够将所有数据样本划开的…

SVM介绍

SVM 概念 支持向量机(support vector machines,SVM)是一种二分类模型。基本原理是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。 作用 svm不仅可以支持这种简单的线性可分离的数据,还可以 借助“软间隔(soft margi…