正则化全面解析:从L1/L2到软阈值与深度学习实践

发布时间:2026/9/19 21:52:55
正则化全面解析:从L1/L2到软阈值与深度学习实践 1. 先从一个反直觉的结论说起惩罚参数为什么能提升泛化能力我第一次接触机器学习时怎么也想不通一件事为什么要在损失函数后面加一个惩罚项去主动降低模型的表现训练模型不就是为了让损失尽量小吗加一个额外的约束不是自己给自己找麻烦直到自己动手拟合了一组数据才彻底明白。当时我用一个9次多项式去拟合10个样本点训练损失几乎为0曲线完美穿过了每一个点看起来漂亮极了。可一到测试集上预测结果完全失控误差比随便猜一个数还大。那个拟合曲线在样本点之间疯狂震荡稍微偏离训练数据一点预测值就飞到天上去。这个现象让我第一次意识到能让训练集上完美的模型未必是真正有用的模型。正则化Regularization解决的就是这个问题——它主动给模型增加约束压低模型的复杂度防止模型死记硬背训练数据从而提升在未知数据上的泛化能力。你可以把它理解成一位纪律委员训练损失负责让学生尽可能考高分正则化管的是不许作弊、不许死记硬背、要真正理解解题思路。L2正则化会让模型权重趋向于0但不等于0L1正则化则会把一部分不重要的权重直接变成0。无论是哪一种本质都是在把训练集拟合好和别把训练集记得太死之间找平衡点。打个比方一个学生背下了所有练习册的题目考试时只要题目稍微变个说法就懵了另一个学生只学了核心公式和解题方法虽然做原题时未必更快但遇到没见过的新题也能应付。正则化逼着模型走第二条路——用尽量简单的规则解释训练数据而不是把每个样本当作特殊情况单独记住。正则化几乎决定了这个模型上线之后是真正能干活还是只在训练集上自嗨。理解了这一点后面所有的技术细节都有了落脚点。2. 正则化到底在解决什么过拟合、偏差方差以及那张躲不开的示意图2.1 过拟合的实质模型把噪声当成了信号说正则化之前必须先说清楚过拟合Overfitting。真实世界的数据几乎都带噪声——传感器误差、人工标注的偏差、采样偶然性等等。我们把一组带噪声的数据喂给模型模型的任务是找出x与y之间稳定的规律。问题来了模型复杂度越高它的记忆力就越强。高复杂度模型完全可以不学规律直接背下每个训练样本的x和y包括其中随机噪声的部分。它在训练集上表现近乎完美但在新数据上由于那些规律其实是噪声根本不能复现预测自然一塌糊涂。这就是过拟合的实质模型把采样噪声当成了真实信号学到了一堆在训练集上成立、在总体数据上失效的函数细节。任何领域的建模都会遇到这个问题——本质上就是把偶然当必然。你需要的不是一味提高训练集准确率而是保住模型对真实世界的解释力。2.2 偏差-方差分解正则化是在和哪一项较量理解正则化绕不开偏差-方差分解。理论推导不展开了直接说结论一个模型的期望泛化误差可以分解成三部分泛化误差 偏差² 方差 噪声偏差Bias模型假设本身与真实规律之间的差距。比如用线性模型拟合抛物线数据偏差就很大因为线性模型天花板太低。方差Variance模型对训练集变化的敏感程度。换一批训练数据模型就大幅变化说明方差高。噪声Noise数据本身含有的不可约减的随机扰动。在这个框架里过拟合对应的是方差过大模型过于依赖某一批特定样本换个数据集就面目全非。正则化通过约束模型参数的活动范围直接压制方差——它让模型的变化幅度变小不允许某个特征或某种模式对预测产生过于极端的贡献本质上是给参数空间画了个圈。回忆起那张几乎每个机器学习课件里都会出现的经典图横轴是模型复杂度纵轴是误差。总误差曲线是一个U形——模型太简单时偏差主导误差偏高模型太复杂时方差主导误差再次走高最优点藏在中间某处。正则化就是在这个横轴上把模型往左拉的旋钮防止你一不小心跑到了U形曲线的右侧斜坡上。2.3 正则化的作用边界它提升的不是训练精度正则化的目标不是降低训练损失它实际上会让训练损失略微升高——因为模型被约束不能完美拟合每个训练样本。但随之换来的是训练集与测试集之间的鸿沟变小。这正是很多初学者的认知盲区加了正则化之后看到训练准确率降了一两个点就以为模型变差了。实际应该看验证集或测试集指标。如果加了正则化后验证集指标明显提升训练集指标小幅下降说明此前模型一直处于过拟合状态。我再强调一次正则化管的是泛化能力就是在样本外数据上的表现它不是提升训练集分数的工具。后面所有关于L1、L2、调参的讨论全部围绕这个核心展开。3. L1 和 L2 的岔路口同样的惩罚两种截然不同的解3.1 数学形式上的差异一个平方一个绝对值在标准线性模型里L2正则化经常被称为岭回归Ridge Regression目标函数长这样损失 MSE_loss λ * Σwᵢ²L1正则化则被称为 Lasso目标函数是损失 MSE_loss λ * Σ|wᵢ|看起来只是平方与绝对值的区别实际产生的行为差异极其巨大。L2会把权重压到接近0的小值但不等于0L1则会把一部分权重直接压成精确的0。这背后的数学直觉值得展开说。L2的惩罚是平滑的它的梯度在零点附近是2λw越靠近0梯度越小于是参数会一直在0附近徘徊但永远到不了0。L1的惩罚在非零处梯度恒为±λ在接近0时会以恒定力度把所有参数推向0——一旦某参数足够小就直接被零点捕获。一句话总结L2擅长把模型的整体规模控制在一个合理范围L1则擅长做特征筛选。3.2 从几何直观理解为什么L1能产生稀疏解都说L1能产生稀疏解这里必须解释清楚几何原因。把目标函数拆成两项看误差项和惩罚项。误差项在参数空间中对应一族等高线——越靠近最优解没有惩罚时的最优参数误差越低通常是一个椭圆形等值线族。惩罚项则对应一个约束区域L2对应圆形区域L1对应菱形区域。最优点就是误差椭圆第一次碰到约束区域的点。对于L2约束区域圆表面光滑无棱角最优切点大概率落在圆周任意位置某个维度的坐标一般不为0。对于L1约束区域菱形四个角正好位于坐标轴上。随着λ增大菱形缩小误差椭圆被挤向菱形边界的概率增大而撞上顶点的概率也显著提高。一旦切点落在顶点上其他维度的坐标就是0——这正是稀疏解。用生活化的话说L2像一个圆润的球球上的点随便落在哪都能站稳很难恰好站在坐标轴上L1像一个带尖角的钻石当你把误差椭圆压向它时很容易被角扎中那个角恰好就是某个坐标为0的位置。3.3 岭回归的闭式解为什么L2能稳定病态矩阵一个很容易被忽略但实际很有用的性质L2正则化让原本可能不可逆的矩阵变得可逆。线性最小二乘的闭式解是w* (XᵀX)⁻¹Xᵀy如果特征之间高度相关或样本数少于特征数XᵀX可能奇异性或接近奇异求逆时数值极不稳定。加入L2惩罚后闭式解变成w* (XᵀX λI)⁻¹Xᵀy加上一个λI后矩阵对角线整体抬升最小特征值从接近0变为至少λ求逆操作数值上就稳定了。这就是为什么在特征数量很大时岭回归往往比朴素线性回归能直接跑出结果。L1没有类似简洁的闭式解因为它不是处处可导的求解必须走专门的优化算法。这也引出后面要讲的软阈值算子。3.4 弹性网络当L1遇到高度相关特征时L1虽然能做特征选择但存在一个实际痛点当一组特征高度相关时Lasso倾向于随机挑一个把其他的清零。这会让选择结果不稳定还丢失了一组特征共同作用的信息。弹性网络Elastic Net把L1和L2组合起来损失 MSE_loss λ₁ * Σ|wᵢ| λ₂ * Σwᵢ²这是纯L1和纯L2的折中方案。L1部分负责做特征筛选L2部分负责让强相关特征的系数不要差异过大学出来更稳。实际项目里如果特征数量巨大、相关性又强我一般直接上弹性网络而不是纯L1。4. 软阈值算子L1正则化求解中最关键的落地术4.1 为什么L1没有闭式解不可导点的麻烦前面提到L1的目标函数里出现了绝对值项这个函数在参数等于0的位置不可导。梯度下降依赖梯度计算而绝对值函数在0点处左导数是-λ、右导数是λ两者不相等梯度直接不存在。如果对不可导点视而不见优化过程可能在0附近震荡迟迟无法收敛。处理办法有两种思路一种是用次梯度subgradient代替梯度虽然能算但收敛速度慢另一种是近端梯度法Proximal Gradient Method把可导的损失项和不可导的惩罚项拆开用近端算子一步到位完成更新。L1惩罚对应的近端算子就是软阈值算子。4.2 软阈值公式的推导从一维问题看透本质考虑一个极简问题给定一个值z想找一个w使下面的目标函数最小min ½(w - z)² λ|w|这个形式看起来抽象实际理解起来很直观z是当前模型想更新的方向第一项让w尽可能接近z第二项则对w偏离0施加惩罚。λ越大w被拽向0的力度越大。由于函数简单可以分段分析。当w0时目标是 ½(w-z)² λw对w求导并令其为0得到w z - λ。这个结果仅在zλ时成立因为此时w确实为正。当w0时同理可得w z λ仅在z-λ时成立。当z落在[-λ, λ]区间时最优解就是w0。整理一下这就是著名的软阈值公式w* sign(z) * max(|z| - λ, 0)它的行为可以拆成两步第一步把z向零的方向收缩幅度等于λ第二步若收缩后穿过0就直接停在0。如果用一句话描述小石料直接被筛掉大石料削去一层皮再放行。4.3 ISTA把软阈值装进梯度下降里回到实际问题。Lasso的目标函数是 ½‖Xw - y‖² λ‖w‖₁其中第一部分可导第二部分不可导。近端梯度法在每个迭代步里这样工作Repeat: 1. 对损失项做一步梯度下降z w - η * ∇loss(w) 2. 对z施加软阈值w soft_threshold(z, ηλ)第一步照常更新——让模型沿着损失下降的方向移动。第二步用软阈值算子把上一步更新得到的参数压一压。这个算法就是著名的ISTAIterative Shrinkage-Thresholding Algorithm。可以这样理解梯度下降负责往前跑软阈值负责别跑太远顺便清理掉那些对预测没什么贡献的维度。两者交替进行最终收敛到Lasso的解。值得注意的是第二步的阈值大小是ηλ——学习率越大、正则化系数越大被清零的力度就越强。我在这里放一个可以直接用的Python实现帮助你直观理解每一步都在做什么import numpy as np def soft_threshold(z, threshold): 软阈值算子向零收缩并截断 return np.sign(z) * np.maximum(np.abs(z) - threshold, 0) def ista_solve(X, y, lam0.1, eta0.001, n_iters500): 用ISTA求解Lasso问题 n_features X.shape[1] w np.zeros(n_features) for _ in range(n_iters): residual X w - y grad X.T residual z w - eta * grad w soft_threshold(z, eta * lam) return w4.4 一个具体例子帮你建立直觉设λ1当前梯度下降更新后z3那么w*sign(3)*max(3-1,0)2。也就是说规则的L2衰减只会把3变成略小于3的值L1则直接给它减了1。再设另一个维度的z0.5那么w*sign(0.5)*max(0.5-1,0)0。这个维度连缩水资格都没有直接被消灭。这个过程就是L1产生精确零系数的微观机制也是特征选择四个字背后的数学解释。5. 正则化系数怎么定调参策略、退化风险与实践经验5.1 λ的含义从不管到全砍掉正则化系数λ控制惩罚的力度。λ0时模型退化成无正则化的普通模型λ趋向无穷大时L1把所有系数清零模型输出变成纯截距项几乎退化为预测常数的平凡模型。这两个极端之间存在一个合适的区间。实际调参时我习惯把λ按对数尺度排列比如从0.0001到100之间取几十个候选值画一条系数的变化轨迹——每个维度随λ增大逐渐收缩甚至清零。这条轨迹就是正则化路径它能直接显示哪些特征最顽固最后才被清零哪些特征最脆弱λ稍微一加就被淘汰。在做特征重要性分析时这个图的信息量远大于单纯看系数大小。5.2 交叉验证在候选λ中找最优选择λ的核心方法就是交叉验证Cross Validation。常用K折交叉验证把训练数据切成K份轮流用其中K-1份训练、1份验证记录不同λ的验证误差最后选平均验证误差最低的那个λ。sklearn里直接封装好了现成工具from sklearn.linear_model import LassoCV, RidgeCV from sklearn.preprocessing import StandardScaler from sklearn.pipeline import make_pipeline import numpy as np # 用管道先把特征标准化再做弹性网络交叉验证 model make_pipeline( StandardScaler(), LassoCV(alphasnp.logspace(-3, 3, 100), cv5, max_iter100000) ) model.fit(X_train, y_train) best_alpha model.named_steps[lassocv].alpha_ print(f最优lambda: {best_alpha})注意这里一定要先做特征标准化。L1/L2惩罚对参数绝对量级敏感如果某个特征的取值范围是0到10000另一个是0到1同一个λ对它们的惩罚力度完全不同。不标准化的后果就是大尺度特征的系数被严重惩罚小尺度特征的系数几乎不受约束——整个正则化过程被量纲带偏了。我自己踩过这个坑所以现在任何带正则化的模型第一件事就是标准化。5.3 选λ时的三个常见误区误区一用训练误差选择λ。训练误差在λ0时永远最低因为约束越少模型越能施展记忆术。要选λ必须用验证集或交叉验证误差否则选出来的λ永远是0。误区二选了λ之后没有重新拟合模型。交叉验证只是用来选参数选好λ后应该用全量训练数据重新训练一次最终模型。有的工具会直接给你这个最终模型但换框架时容易忘。误区三正则化系数固定后又回到全量数据上微调了很久。一旦你对最终模型重新训练或调整这个λ已经不在最优状态了需要重新验证。还有一个细节截距项一般不参与惩罚。正则化惩罚的是特征的贡献权重而截距只代表数据的整体偏移不该被压缩。sklearn默认也是这么处理的但在自己实现时容易把小权重全压缩干净导致模型输出整体偏移。5.4 实践中选择L1还是L2的标准我的选择标准一般是这样特征数量中等、可解释性要求高 → 先用L1看哪些特征被清零特征高度相关不想丢失太多信息 → 弹性网络特征多、关系复杂暂时不需要特征筛选 → L2优先稳定性和数值表现更好深层网络 → 基本用L2权重衰减不用L1。6. 正则化的现代形态从权重衰减到隐式正则化家族6.1 深度学习里的权重衰减L2的另一个名字在神经网络领域L2正则化通常被称为权重衰减Weight Decay。名字的来历很直白每次参数更新时权重都会额外乘上一个小于1的因子相当于对它做了一次衰减。深层网络里很少用L1做主要正则化手段。深层网络的特征是高度分布式表征——几乎所有神经元都参与表达强行清零一部分会破坏网络的表达能力。L2的整体缩小、保持结构特性更适合这种场景。一个实用经验在深层网络训练中把权重衰减系数设为5e-4即0.0005是很多经典卷积网络的常见配置但这并不代表在你的任务里这个值就是最优的。它应该和learning rate一起进入超参数搜索清单。6.2 Dropout让网络记不全Dropout是深度学习里最著名的正则化技巧之一它做的事情很朴素训练时每次前向传播随机丢弃一部分神经元他们的输出置0。之所以有效可以从两个角度理解。从集成学习角度看每次随机丢弃都相当于训练了一个不同的子网络预测时等价于大量子网络的集成。从记忆角度看Dropout让网络无法依赖某个固定的路径来记住样本——神经元之间不能形成过于默契的配合逼着每个神经元独立学到有用特征。你可以理解为对任何单个神经元来说队友随时可能消失所以它必须自己足够可靠。在Bert、GPT这些大规模预训练模型里Dropout依然起着关键作用。只不过Dropout比例需要按任务调推理任务时比例过高模型会学不动数据充足时它的作用会减弱。6.3 早停用迭代次数做隐式正则化早停是深度学习团队最常用、又经常意识不到它其实是一种正则化的方法。训练过程中验证集误差通常先降后升——模型从学到真规律转向死记训练数据的临界点往往就是验证误差的最低点。在这个点停止训练模型复杂度就被控制住了。为什么限制迭代次数能限制复杂度因为梯度下降本质上是从小权重逐步走向大权重的过程训练时间越长权重的有效复杂度越高。早期停止相当于从外部切断了这个进程让模型停留在还没开始记忆噪声的位置。它简单、不增加任何超参数以外的计算成本是性价比最高的正则化手段。我自己训练深度学习模型时的标准流程是优先开早停盯验证集指标然后再考虑要不要叠加权重衰减或Dropout。很多时候早停本身就解决了一大半过拟合问题。6.4 数据增强与标签平滑从数据侧施加先验另一类正则化手段不直接作用在参数上而是作用在数据和标签上。数据增强是一种典型的先验注入方式。一张猫的图片水平翻转、轻微旋转、改变亮度语义仍然是猫。通过制造这些变体模型被强制学习对光照、位置、角度不敏感的特征。这相当于告诉模型同一个目标可以有多种表现形式你要认本质不要抓表象。在图像识别里如果训练数据有限数据增强带来的泛化提升甚至超过精心调参的权重衰减。标签平滑是另一种工程上很常见的技巧。普通分类任务用one-hot标签模型会把正类的输出概率推向1这容易让置信度过高、泛化变差。标签平滑的做法是把正类的标签从1改成0.9假设平滑系数0.1把剩下的0.1均分给其他类别模型不再需要极端自信就能达到训练目标。6.5 一个值得警惕的方向正则化手段叠加过多正则化手段不是越多越好。这些方法都在给模型加约束约束过强会走向另一个极端——欠拟合。我在一个项目里同时开了权重衰减、Dropout、早停、标签平滑结果模型在验证集上怎么都提不上去训练损失也迟迟降不下来。后来把权重衰减调小、Dropout关掉模型才恢复正常。合理的策略是先用小模型跑通并确认能够过拟合训练集说明模型容量足够且优化过程没问题再逐步加入正则化手段每次只加一种观察验证集变化最后对不同手段做简单的组合调优。这样你才能真正知道是哪一种手段在起作用而不是在一片正则化大杂烩里碰运气。我个人在实际训练中的体会是正则化的本质不是让你把惩罚系数调得多精妙而是让你对自己的数据有了更清醒的判断——你的数据有多大的信噪比你的模型需要多复杂才能表达规律又不超过噪声的边界。把数据标准化做好、早停开上、交叉验证选λ再按需叠加别的正则化手段绝大部分任务都能得到稳妥的结果。不要一上来就叠一堆正则化方法先让数据自己说话。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询