ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

从L1/L2范数到机器学习实践:距离、损失与正则化的本质与应用

从L1/L2范数到机器学习实践:距离、损失与正则化的本质与应用 1. 从距离到规则理解范数与距离的数学本质在机器学习和数据科学的日常工作中我们经常听到“L1正则化防止过拟合”、“用欧式距离计算相似度”或者“这个损失函数是L2范数的形式”。这些术语——L1、L2、欧式距离、曼哈顿距离——听起来既熟悉又带着一丝抽象。很多朋友在初次接触时可能会把它们当作一组需要记忆的公式但一旦深入到模型调优、特征工程或者算法选型时就会发现如果只知其然公式而不知其所以然几何意义、统计特性、应用场景很容易陷入“拍脑袋”决策的困境。实际上这些概念都源于一个更基础的数学思想范数。你可以把范数理解为一个“度量尺”它用来衡量一个向量可以看作一组数字比如一个数据点的所有特征值的“长度”或“大小”。不同的范数就是不同的测量规则。而“距离”则是用这把尺子去测量两个向量之间的“间隔”。当我们谈论曼哈顿距离、欧式距离时本质上是在指定用哪一把“范数尺”去测量两个点之间的间隔。那么为什么我们需要这么多把“尺子”呢这就好比在生活中测量房间面积用平方米测量电线长度用米测量芯片精度用纳米。不同的场景需要不同的度量标准。在数据的世界里L1范数曼哈顿距离这把尺子更关注各维度变化的绝对值总和它对异常值不那么敏感具有“稀疏性”而L2范数欧式距离这把尺子计算的是直线距离它对大的误差惩罚更重求导平滑便于优化。理解这些差异是你在设计损失函数模型预测值与真实值差距的度量和选择正则项防止模型过于复杂的惩罚项时做出明智选择的关键。本文将从最直观的几何图像出发拆解L1、L2、Lp、L∞这些范数以及由它们衍生出的曼哈顿、欧式、切比雪夫等距离的定义与内涵。然后我们会深入探讨它们如何具体地应用于损失函数和正则化中并通过一些实际的考量与经验分享帮助你不仅记住公式更能理解其背后的逻辑从而在你的下一个项目中游刃有余地使用它们。2. 范数衡量向量大小的多元标尺在进入具体的距离公式之前我们必须先夯实“范数”这个概念。对于一个n维向量x [x₁, x₂, ..., xₙ]ᵀ范数是一个函数 ||x||它将向量映射到一个非负实数代表该向量的“大小”或“长度”并且必须满足以下三条性质非负性||x|| ≥ 0且 ||x|| 0 当且仅当x是零向量。齐次性对于任意标量 α有 ||αx|| |α| · ||x||。三角不等式对于任意向量x,y有 ||xy|| ≤ ||x|| ||y||。不同的范数定义就给出了不同的“测量法则”。我们最常见的是Lp范数族。2.1 Lp范数一个通用的家族Lp范数其中p ≥ 1的定义如下||x||_p (|x₁|^p |x₂|^p ... |xₙ|^p)^(1/p)这个公式是理解一切的基础。p是一个参数取不同的值就得到了不同的范数。绝对值运算保证了非负性p次幂加和再开p次根构成了一个满足上述三条性质的度量。为什么要有p次幂和开根这是为了满足齐次性。如果我们只做p次幂的和那么对向量乘以一个系数α后结果会变成α^p倍不满足齐次性我们期望是|α|倍。因此必须再开p次根使得缩放系数回归到|α|。2.2 特例一L1范数曼哈顿范数当p1时L1范数就是所有维度绝对值之和||x||_1 |x₁| |x₂| ... |xₙ|几何图像在二维平面上所有满足||x||_1 1的点构成一个“菱形”更准确地说是一个旋转了45度的正方形。它的边界在坐标轴上是(±1, 0)和(0, ±1)。你可以想象从原点出发只能沿着平行于坐标轴的方向行走走过的总路程就是L1范数。这也是它被称为“曼哈顿范数”的原因因为曼哈顿的街道大多是棋盘式布局。核心特性稀疏诱导性这是L1范数最重要的特性。在优化问题中L1范数作为惩罚项倾向于让解向量的部分分量直接变为0。这是因为它的等值线在二维下是菱形的“角”是尖的更容易与目标函数的等高线在坐标轴上相交。在特征选择中这意味着一部分特征的系数会被压缩至零从而实现自动特征选择。对异常值相对鲁棒由于是绝对值之和单个维度上的巨大误差异常值会被线性地计入总误差不会像平方项那样被异常放大。这使得基于L1的损失函数如平均绝对误差MAE在某些噪声较大的场景下更稳定。2.3 特例二L2范数欧几里得范数当p2时就是我们最熟悉的L2范数||x||_2 √(x₁² x₂² ... xₙ²)几何图像在二维平面上所有满足||x||_2 1的点构成一个“圆”。在更高维度是球体或超球面。它测量的是从原点到该点的直线距离。核心特性处处可导便于优化L2范数的平方即x₁²x₂²...是一个光滑的凸函数其导数处处存在且连续除原点外原点处次梯度也可处理。这使得基于梯度的优化算法如梯度下降可以高效、稳定地工作。对大误差惩罚更重因为误差被平方了所以一个大的误差项如10会对总损失产生巨大贡献100而多个小误差项如5个2平方和为20的总贡献可能更小。这使得模型会极力避免产生大的预测偏差。解具有唯一性和稠密性在优化中L2正则化通常会让所有参数的系数都向零收缩但很少会精确等于零得到的解是稠密的。2.4 极限情况L∞范数切比雪夫范数当p → ∞时Lp范数会收敛于L∞范数其定义为所有维度绝对值中的最大值||x||_∞ max(|x₁|, |x₂|, ..., |xₙ|)几何图像在二维平面上所有满足||x||_∞ 1的点构成一个“正方形”其边界是x±1和y±1这两对平行线。直观理解它只关心向量在所有维度上“最突出的那一个偏差”。例如在评估一个系统的多个性能指标时如果我们采用L∞范数来衡量其与理想指标的差距那么我们实际上是在关注其“最短板”或“最差的一项指标”有多差。在棋盘上国王可以横、直、斜走但一步只能走一格两个格子间的“国王距离”就是切比雪夫距离其对应的就是L∞范数。2.5 更一般的情况Lp范数当p为其他值时当p取1和2之外的值时Lp范数也有其应用场景尽管不如L1和L2常见。0 p 1此时公式虽然类似但严格来说不满足范数的三角不等式通常称为“准范数”。L0“范数”非零元素个数可以看作是p-0时的一种极限概念。这些在压缩感知、极度稀疏建模中有理论意义但因为其非凸性优化非常困难。p 2随着p增大范数对最大值分量的敏感性急剧增加。当p很大时Lp范数已经非常接近L∞范数。在实践中p1和p2因其良好的数学性质凸性、可导性和明确的统计解释分别对应拉普拉斯先验和高斯先验而成为绝对的主流。注意在计算Lp范数时尤其是自己实现时需要注意数值稳定性。当p很大或向量维度很高时直接计算|x_i|^p可能导致数值上溢超出计算机浮点数表示范围。一个常见的技巧是在计算时先提取出最大绝对值分量进行缩放。3. 从范数到距离度量空间中的“远近”有了范数这把“尺子”我们就可以定义两个向量a和b之间的距离了。最自然的方式就是用它们差值的范数d_p(a,b) ||a-b||_p这被称为闵可夫斯基距离。它同样是p的一个函数。通过给p赋予不同的值我们就得到了一系列具体的距离度量。3.1 曼哈顿距离 (p1)d₁(a,b) |a₁ - b₁| |a₂ - b₂| ... |aₙ - bₙ|应用场景与实操考量城市街区距离最经典的比喻。计算地图上两点的驾驶距离假设只能沿垂直的街道行驶。计算机视觉在图像处理中两个像素点颜色值的差异可以用曼哈顿距离计算例如在RGB空间。有时它比欧式距离计算更快省去了平方和开方。离散空间与网格路径规划当移动被限制在网格线上时如棋盘、集成电路布线曼哈顿距离是自然的度量。经验之谈在特征维度物理意义不同、且量纲差异大的情况下使用曼哈顿距离前必须进行特征标准化如Z-score标准化或Min-Max缩放否则量纲大的特征会完全主导距离计算。例如“年薪万元”和“年龄岁”直接相加是毫无意义的。3.2 欧式距离 (p2)d₂(a,b) √[(a₁ - b₁)² (a₂ - b₂)² ... (aₙ - bₙ)²]应用场景与实操考量最直观的空间距离在我们生活的三维物理世界中这就是直线距离。机器学习基石KNNK近邻、K-Means聚类、SVM支持向量机中的高斯核等大量算法默认或广泛使用欧式距离。主成分分析PCAPCA试图保留数据在投影后的最大方差其优化目标本质上是在欧式距离意义下的。一个关键陷阱——“维度灾难”在高维空间中比如成百上千个特征欧式距离会开始变得“反直觉”。所有点对之间的距离会趋于一个相同的值导致距离度量失去区分能力。这是因为在高维空间中体积几乎都集中在“壳”上点与点之间变得“等距”。解决方法是特征选择或降维如PCA而不是盲目使用所有特征计算距离。3.3 切比雪夫距离 (p∞)d_∞(a,b) max(|a₁ - b₁|, |a₂ - b₂|, ..., |aₙ - bₙ|)应用场景与实操考量棋盘上的国王步数这是最生动的例子。工业与质量控制当我们需要保证一组参数同时满足某个容差范围时切比雪夫距离非常有用。例如一个零件的长度、直径、硬度等多个指标都必须合格那么用切比雪夫距离衡量其与标准件的差距可以确保最差的那个指标也不超出限度。并行计算与最坏情况分析在算法分析中如果一项任务完成时间取决于其所有子任务中最慢的那个那么总时间可以用切比雪夫距离的概念来类比。实操注意由于它只关注最大值因此对数据中的异常值极度敏感。在用于聚类或相似度计算前仔细的数据清洗和异常值处理至关重要。3.4 如何选择距离度量没有放之四海而皆准的“最佳”距离。选择取决于数据的本质你的特征代表什么是物理空间坐标、统计指标、还是类别编码不同量纲的特征必须先标准化。算法的目标你是要寻找最相似的样本KNN还是要将样本分组使得组内“差异”最小聚类这个“差异”如何定义符合业务逻辑对异常值的敏感性要求L1/曼哈顿距离更鲁棒L2/欧式距离对大误差更敏感L∞/切比雪夫距离只关注最差项。计算效率曼哈顿距离计算略快于欧式距离省去开方但在现代计算中差异通常不显著。更重要的是距离矩阵能否拟合进内存。一个实用的建议是在项目初期可以尝试多种距离度量配合适当的预处理并通过领域知识或下游任务如聚类轮廓系数、分类准确率来评估哪种距离更有效。不要假设欧式距离总是最好的。4. 损失函数用距离衡量“预测的代价”损失函数是模型预测值ŷ与真实值y之间“差距”的量化。许多经典的损失函数其核心就是一个距离度量。4.1 均方误差 (MSE) —— L2距离的平方MSE (1/n) * Σ (y_i - ŷ_i)²这其实就是所有样本上欧式距离平方的均值忽略了开方因为开方不影响单调性且平方形式求导更简单。为什么用平方如前所述平方项会严重惩罚大的误差。从统计视角看MSE等价于在噪声服从高斯分布的假设下进行最大似然估计。高斯分布很常见中心极限定理所以MSE应用极广。优点凸函数处处可导优化方便。缺点对异常值非常敏感。一个离谱的错误预测会贡献巨大的损失导致模型为了拟合少数异常点而扭曲整体。实操心得在回归任务中MSE是默认的起点。但如果你的数据中有明显的异常值如金融数据中的极端事件使用MSE前务必进行异常值检测与处理或者考虑更鲁棒的损失函数。4.2 平均绝对误差 (MAE) —— L1距离MAE (1/n) * Σ |y_i - ŷ_i|这就是所有样本上曼哈顿距离的均值。为什么用绝对值它对所有误差一视同仁线性惩罚。从统计视角看MAE等价于噪声服从拉普拉斯分布假设下的最大似然估计。优点对异常值鲁棒性强。缺点在零点处不可导优化起来比MSE稍显复杂需要使用次梯度方法。收敛速度可能比MSE慢。实操心得当你怀疑数据中存在显著噪声或异常值且不希望模型被它们过度影响时MAE是很好的选择。在深度学习框架中如PyTorch, TensorFlowL1Loss的实现已经妥善处理了零点处的梯度问题可以放心使用。4.3 Huber损失 —— L1与L2的平滑折中Huber损失试图结合MSE和MAE的优点在误差较小时使用二次项像MSE保证可导和精度在误差较大时使用一次项像MAE降低异常值影响。L_δ(e) { (1/2)e², for |e| ≤ δ, { δ(|e| - 1/2δ), for |e| δ. 其中 e y - ŷδ是一个超参数。如何选择δδ决定了“小误差”和“大误差”的分界线。通常需要通过交叉验证来选择。一个经验法则是δ可以设为数据中绝对误差的中位数或某个分位数。实操心得Huber损失在稳健回归中非常有用例如在自动驾驶的车辆位置预测中既要对小的跟踪误差保持敏感又要能容忍偶尔的传感器跳变。它的实现需要条件判断但主流框架都提供了支持。4.4 自定义距离作为损失函数在一些特定领域你可以直接使用之前讨论的距离。例如在图像风格迁移中为了度量生成图像与内容图像在特征空间上的差异可能会用到余弦距离1 - 余弦相似度它关注的是方向而非绝对大小。在自然语言处理中编辑距离Levenshtein距离可以直接用作序列生成任务的损失函数的一部分以衡量预测文本与目标文本的差异。注意损失函数的选择直接影响模型的优化目标。它不仅仅是“哪个效果好就用哪个”的技术问题更是一个建模假设问题。你需要思考在我的业务场景中一个大的预测偏差到底有多“糟糕”这种糟糕程度是线性增长MAE还是指数增长MSE想清楚这个问题才能选出最合适的损失函数。5. 正则项用范数施加“约束的智慧”正则化是防止机器学习模型过拟合的核心技术之一。其思想是在原始的损失函数如MSE上增加一个对模型参数θ的惩罚项 R(θ)形成新的优化目标总损失 经验损失(数据) λ * R(θ)其中λ是正则化强度系数。而这个惩罚项R(θ)常常就是模型参数的范数。5.1 L2正则化岭回归权重衰减R(θ) (1/2)||θ||₂² (1/2) Σ θ_i²这里通常用平方L2范数系数1/2是为了求导后形式整洁导数为θ_i。工作原理L2正则化倾向于让所有参数θ_i都尽可能小且趋向于一个比较均衡的值。从几何上看它相当于在参数优化时不仅要求损失函数小还要求参数向量不能太长被限制在一个圆/球内。为什么能防止过拟合过拟合往往意味着模型为了拟合训练数据中的噪声和细节使用了过于复杂的函数这通常对应着某些参数具有异常大的正值或负值。L2正则化通过惩罚大的参数值迫使模型使用所有特征但每个特征的贡献都“温和”一些从而提高了模型的泛化能力。统计解释在贝叶斯视角下L2正则化等价于给参数赋予了均值为0的高斯先验也叫正态先验。实操要点λ是关键超参数λ太小正则化作用微弱λ太大模型会被过度约束导致欠拟合。必须通过验证集或交叉验证来调优。通常不对偏置项bias进行正则化。因为偏置项只影响输出曲线的上下平移而不影响模型的弯曲复杂度正则化它没有意义反而可能损害模型性能。在代码实现中如sklearn的Ridge或深度学习框架的权重衰减需要注意区分。5.2 L1正则化LASSO回归R(θ) ||θ||₁ Σ |θ_i|工作原理L1正则化不仅倾向于让参数变小更倾向于让一部分参数精确地变为0。这是因为L1范数在坐标轴上有“尖角”优化过程中最优解更容易落在这些尖角上即某些维度为0。核心价值——特征选择这是L1正则化最强大的地方。当模型训练完成后系数为0的特征可以被认为是不重要的可以直接从模型中剔除。这实现了嵌入式特征选择即在训练模型的同时完成特征选择。统计解释等价于给参数赋予了拉普拉斯先验。实操要点与常见陷阱特征共线性问题如果特征之间存在高度相关性LASSO可能会随机地选择其中一个而将其他相关的特征系数压缩至0。这并不总是符合业务逻辑。相比之下岭回归L2会让相关特征的系数彼此接近。解的唯一性当特征数量p大于样本数量n时岭回归仍有唯一解但LASSO的解可能不唯一。超参数λ与特征数量λ控制着稀疏度。λ越大被置零的特征越多。可以通过观察“正则化路径图”来理解不同λ下系数值的变化从而选择合适的λ。算法选择由于L1范数在零点不可导优化需要使用坐标下降、前向后向分裂FISTA等特殊算法。幸运的是sklearn.linear_model.Lasso等库已经提供了高效实现。5.3 Elastic NetL1与L2的结合为了结合L1和L2的优点特征选择 处理共线性Zou和Hastie提出了Elastic Net正则化R(θ) α * ||θ||₁ (1-α) * ||θ||₂²这里有两个超参数λ总体强度和 α混合比例α1是LASSOα0是Ridge。应用场景当特征数量非常多且你怀疑特征之间存在分组或相关性时Elastic Net通常是比单纯L1或L2更好的选择。它既能进行特征选择又能对相关特征的系数进行相似程度的收缩。实操经验调参网格可以设定为λ从大到小变化α在[0,1]之间取几个值如0.2, 0.5, 0.8。由于有两个超参数搜索成本更高但模型性能往往更稳健。6. 实战中的综合应用与经验谈理解了这些基础概念后我们来看看在真实的机器学习项目中如何将它们串联起来决策。6.1 一个完整的建模流程示例假设我们在做一个房价预测项目有100个特征有些可能是相关的如“卧室数”和“面积”。数据预处理与探索首先必须进行特征标准化StandardScaler。因为无论是计算距离KNN还是使用带正则化的模型Ridge, Lasso不同尺度的特征都会导致距离失真或正则化不公平大尺度的特征天生系数小更容易被惩罚。通过散点图、箱线图查看异常值。如果发现明显的异常房价可能是数据录入错误考虑使用更鲁棒的损失函数如Huber损失或在预处理阶段处理它们。基线模型与损失函数选择从简单的线性回归开始使用MSE损失作为基线。快速评估其性能。如果验证集表现远差于训练集说明可能过拟合或者数据中有异常值影响了MSE。此时可以尝试MAE损失看验证集性能是否更稳定。引入正则化防止过拟合如果特征数量多100个样本量相对少过拟合风险高。首先尝试岭回归L2。通过交叉验证选择最佳的λ。观察模型系数它们应该都较小但非零。如果我们还想知道哪些特征是最关键的可以换用LASSO回归L1。同样交叉验证选择λ。训练后检查有多少特征的系数被压缩为0。这些特征可以考虑剔除。注意由于特征可能存在共线性LASSO的结果需要谨慎解读可能要和业务知识结合。如果特征间相关性高且我们既想要稀疏性又想要稳定性可以尝试Elastic Net并网格搜索λ和α。距离度量的选择如果在后续步骤用到如果我们用KNN来填充缺失值或者用聚类来划分小区房源类型就需要选择距离。对于标准化后的连续特征欧式距离是默认选择。如果担心异常值影响聚类中心可以尝试曼哈顿距离。可以先在小样本上测试不同距离度量的聚类轮廓系数。6.2 深度学习中的具体体现在深度学习中范数和距离的概念无处不在权重衰减这本质上就是L2正则化。在优化器如AdamW中权重衰减参数就是λ。它被证明对于缓解过拟合、提高泛化能力至关重要。稀疏自编码器通过在损失函数中加入编码层激活值的L1惩罚项可以迫使自编码器学习到稀疏的、类似特征基的表示。损失函数除了MSEL2和MAEL1在分类任务中交叉熵损失是主流。但值得注意的是在目标检测如YOLO系列中对于边界框坐标的回归早期版本使用MSE但后来普遍采用了如IoU Loss、GIoU Loss等基于重叠面积的损失因为它们与评估指标mAP对齐得更好。这说明了损失函数的设计需要与最终任务目标一致。模型剪枝一种常见的剪枝方法是训练一个带有L1正则化的网络那些权重接近0的神经元或连接可以被安全地剪除从而实现模型压缩。6.3 避坑指南与常见误区误区正则化万能。正则化是解决过拟合的重要工具但不是唯一工具。获取更多高质量数据、使用更简单的模型、进行特征工程、使用Dropout神经网络中等方法同样重要甚至更根本。陷阱忘记标准化。这是最常犯的错误之一。如果特征未标准化量级大的特征对应的参数即使很小其贡献也可能很大导致正则化惩罚“欺软怕硬”失去公平性。只要使用基于距离的算法或带L1/L2正则化的模型标准化或归一化几乎是强制步骤。混淆L1/L2用于损失函数 vs. 用于正则项。它们数学形式相同但目的不同。在损失函数中L1/L2衡量的是预测误差在正则项中它们衡量的是模型参数的大小。一个针对数据拟合程度一个针对模型复杂度。超参数调优的优先级通常应先确定模型大致结构如多项式次数、网络层数然后再精细调节正则化强度λ。如果λ调得很大模型还是过拟合可能说明模型本身太复杂需要简化结构。可视化的重要性在调参时绘制“学习曲线”训练/验证误差随样本数变化和“正则化路径图”系数值随λ变化能给你带来巨大帮助。它们能直观地告诉你模型是过拟合还是欠拟合以及每个特征的重要性如何随正则化强度变化。从L1/L2范数到各种距离度量再到损失函数和正则项这条线索贯穿了机器学习的模型评估、优化和泛化。理解它们的几何意义和统计本质能帮助你在面对具体问题时不再机械地套用“默认设置”而是能够有理有据地做出选择并根据模型反馈进行有效调试。记住没有最好的只有最合适的。这些数学工具是你的瑞士军刀熟练了解每把刀的特性才能在解决实际问题时游刃有余。
返回列表