L1/L2正则化模拟器 返回
机器学习

L1/L2正则化模拟器 — Lasso和Ridge

机器学习中两种抑制过学习的正则化方法——L1(Lasso)和L2(Ridge)的行为可视化工具。通过改变正则化强度λ和原始回归系数,可实时看到L1如何将权重变为正好为0来创建稀疏模型,而L2如何对全部系数进行比例缩小。

参数设置
正则化强度 λ
越大权重缩小越强。为0时无正则化(OLS)
原始权重A(OLS估计值)
不做正则化得到的系数A(强效特征)
原始权重B
较小的系数B(可能是噪声特征)
原始权重C
负系数C(方向相反的特征)
计算结果
权重A (L1)
权重A (L2)
权重B (L1)
权重B (L2)
L1零权重数
L1平均缩小率 (%)
缩小映射 — 输入权重 w₀ → 正则化后的权重

横轴为原始权重w₀,纵轴为正则化后的权重。L1在[−λ,λ]范围内(脉动区域)将权重变为0,L2是通过原点斜率为1/(1+λ)的直线。点A·B·C是当前的3个权重。

权重A vs 正则化强度 λ
3个权重的对比(原始·L1·L2)
理论·主要公式

$$w_{L2}=\frac{w_0}{1+\lambda}\qquad\text{(Ridge: 比例缩小)}$$

L2正则化将原始权重w₀乘以系数1/(1+λ)来统一缩小。无论λ多大,也不会达到0。

$$w_{L1}=\operatorname{sign}(w_0)\max(|w_0|-\lambda,\,0)\qquad\text{(Lasso: 软阈值)}$$

L1正则化用软阈值函数来缩小权重。当|w₀|≤λ时权重变为正好0,得到稀疏(疏)的模型。L2不会产生这种严格的零化。

$$\hat{w}=\arg\min_w\;\tfrac12(w-w_0)^2+\lambda\,R(w),\quad R_{L1}=|w|,\;R_{L2}=\tfrac12 w^2$$

两者都是在「原估计值w₀的接近度」和「惩罚R(w)」间取得平衡的优化。在正交设计下,这个解可以用上面的两个公式来闭式表示。

L1/L2正则化简介

🙋
机器学习中经常听到「正则化」,但它的目的到底是什么?
🎓
简单说,这是「抑制过学习的刹车」。模型试图与训练数据完全匹配,会让系数(权重)越来越大。结果就是对训练数据拟合得完美,但对新数据完全失效。所以「如果权重变得太大就要受罚」这一规则被加到损失函数中。最常见的有L1和L2两种。在这个工具中增大λ,你会看到两者都在缩小权重。
🙋
L1和L2都是「缩小权重」,区别在哪里?
🎓
「缩小的方式」有根本区别。L2(Ridge)用w₀/(1+λ)来缩小,是按同一比例缩小全部权重。比如3变成1.5,0.6变成0.3。但L1(Lasso)用软阈值的方式,把|w₀|小于λ的权重「正好变为0」。在左边试试:权重B设为0.6,λ设为1.0。L2会变成0.30,但L1会变成0.00。特征B从模型中完全消失。
🙋
变为0?那就是在丢弃特征吧?
🎓
完全正确,这就是「自动特征选择」。权重为0的特征在预测中完全不用,实际上从模型中被去掉了。比如有100个说明变量,但真正有效的只有10个——这在现实中很常见。用Lasso的话,那80个系数就会变为0,一眼就能看出「哪些变量有效」,模型容易理解。看缩小映射中间的平坦区域,那就是λ决定的「零化范围」。
🙋
那样的话L1似乎总是更好?L2有什么用处吗?
🎓
各有各的领地。L2「光滑地」缩小权重,当特征间存在强相关时,会均等地缩小整个相关特征组来稳定模型。L1在这种情况下倾向从相关特征组中只保留一个,其他都变为0,而且剩下哪一个会因为数据波动而改变。所以「很多变量都略有影响」或「变量间相关性强」就用Ridge,「少数变量有效」就用Lasso。想要两者的优点就混合使用Elastic Net。
🙋
λ的大小怎么决定?越大越安全吗?
🎓
不对,太大了也不行。增大λ会缩小权重,模型变简单,但过大会连真正需要的权重都压小了,模型无法捕捉数据结构——这就是「欠学习」。太小λ又会过学习。所以实务中用交叉验证,用对数刻度试很多λ值,选验证数据误差最小的那个。看「权重A vs λ」的图,你会看到λ增大时L1的权重在某处变为0,L2虽然趋近0但永远不会触及0。

常见问题

最大的区别是「是否能将权重变为正好为0」。L1正则化(Lasso)用软阈值函数w_L1 = sign(w0)·max(|w0|−λ, 0)来缩小权重,将|w0|不超过λ的权重变为正好为0。这样不必要的特征会被自动丢弃,得到稀疏(疏)的模型。相反,L2正则化(Ridge)用w_L2 = w0/(1+λ)对所有权重按相同比例缩小,但永远不会严格为0。L1用于特征选择,L2用于平滑的缩小——这样记就容易理解了。
因为L1惩罚λ|w|在w=0处导数不连续(有尖角)。在优化中,只要将权重从0稍微移动带来的损失降低量小于L1惩罚的增加量(斜率λ),权重就会「粘着」在0上。对于正交设计,这个条件可以写成|w0|≤λ,所以就得到了软阈值函数sign(w0)·max(|w0|−λ,0)。L2惩罚λw²在w=0处导数为0,非常光滑,所以没有「粘着」于0的力,只会产生比例缩小。
当特征量很多,但只有少数特征真正有效时,应使用Lasso(L1)。不必要特征的系数会变为0,模型更易解释。反之,当很多特征都略有影响,或者特征间存在强相关时,Ridge(L2)更稳定。Lasso在相关性强的变量组中倾向只保留一个,而Ridge会均等地缩小整个组。想同时获得两者的优点时,可以使用同时使用L1和L2的Elastic Net。
λ是决定过学习和欠学习权衡的超参数,标准方法是用交叉验证(交叉检验)来选择。增大λ会强烈缩小权重,模型更简单,但过度增大会导致无法捕捉数据结构而欠学习(偏差增加)。减小λ会让模型对训练数据拟合更好,但易陷入过学习(方差增加)。实务中通常用对数刻度尝试多个λ值,选择验证数据误差最小的值。通过在本工具中调整λ,可以直观看到权重如何缩小和零化。

实际应用

高维数据的特征选择:像基因表达数据或文本的词向量这样,说明变量有数千乃至数万,但样本少的问题,Lasso(L1)是标准做法。它只保留真正有预测效果的少数变量,其余系数变为0,这样「哪些基因与疾病相关」或「哪些词对分类有效」就清楚了。本工具的缩小映射,就是在可视化这个「λ决定的零化区域」。

多重共线性模型的稳定化:传感器数据或经济指标这样,说明变量间存在强相关的回归中,不做正则化的最小二乘(OLS)系数会波动得很厉害,不稳定。Ridge(L2)通过均等地缩小相关变量组来稳定系数,降低预测方差。Lasso在这种情况下容易从相关组中只选一个,导致被选中的变量会因数据波动而改变。

神经网络权重衰减:深度学习中广泛使用的「Weight Decay(权重衰减)」就是L2正则化。每次更新都让权重略微向0靠近,防止巨大网络在训练数据上死记硬背的过学习。结合L1的话还能把不必要的连接权重变为0,使网络稀疏,推理更轻量。

压缩传感和信号恢复:从少量观测恢复原始信号的压缩传感中,基于「信号是稀疏的(大部分成分为0)」这一前提,使用L1最小化。L1能正确地将本该为0的成分推断为0的性质在这里起关键作用。在MRI高速成像、雷达和通信信号处理等广泛领域都有应用。

常见误解和注意事项

最常见的错误是「不对特征进行标准化就做正则化」。L1和L2都对权重的大小施加惩罚,如果特征尺度差异大,惩罚就会不公平。比如在同一个模型中「身高(cm)」和「年收(万元)」,尺度大的变量系数自然偏小,不公平地逃过了缩小。本工具也是「特征已标准化」为前提,使用w_L2=w₀/(1+λ)这样的简单公式。实际数据必须先把每个特征标准化到均值0、方差1再做正则化。

其次是「把Lasso选出的变量解释为有因果关系的重要变量」。Lasso只是为了降低预测误差而划分系数的零非零,不保证因果关系。特别是当变量间相关性强时,Lasso只会「碰巧」从相关组中选一个,其他都变为0,而且换一份数据可能选的就是另一个。如果变量选择的稳定性重要,可以用自助法多次推断来确认「总是被选的变量」,或用Elastic Net更保险。

最后是「λ越大模型越好」的思维定式。正则化在抑制过学习的同时,必然引入偏差(系统性偏离)。λ过大会把真正需要的权重也压小甚至变为0,模型无法捕捉数据的结构,陷入欠学习。在本工具中让λ接近5,你会看到权重A在L1下甚至变为0,L2也大幅缩小。最优λ应该在过学习和欠学习的中间某处,用交叉验证来选择验证误差最小的值才是正攻法。

使用指南

  1. 在−5.0~5.0范围内设置初始权重A·B·C(w0a, w0b, w0c),确定线性回归模型的起点
  2. 用滑块调节正则化强度λ(0.0~2.0),实时观察Lasso和Ridge两者的系数缩小行为
  3. 对比左右图表,看L1范数(菱形约束)和L2范数(圆形约束)的最优解轨迹,确认λ越大时零压缩和连续缩小的差异越明显

具体计算例子

在金融风险预测模型中,初始权重w0a=3.2、w0b=−1.8、w0c=0.5,λ=0.8时应用Lasso,权重A会缩小到2.4(降低25%),权重C会压缩为0。同样的λ用Ridge的话,权重A为2.7、权重B为−1.5、权重C为0.3,全部权重连续缩小。当λ=1.5时,Lasso让3个系数中的2个变为0,平均缩小率达到68%;Ridge也实现了平均44%的缩小来抑制过学习。

实务中的注意点

  1. 文本分类或基因分析这种需要特征选择的场景,采用Lasso并用λ=1.0~1.5来故意产生稀疏性(零权重)
  2. 时间序列回归或图像识别的迁移学习中优先用Ridge,λ=0.3~0.8来保留全部特征同时缓解多重共线性
  3. 用交叉验证(5分割)决定最优λ,选择训练误差和验证误差差距最小的值用于生产环境