一、引言
在老猿CSDN的博文《人工智能基础概念3:模型陷阱、过拟合、模型幻觉》中介绍了通过L1或L2正则化来限制模型的复杂度来解决过拟合的问题,老猿当时并不了解这背后的原理,这2天通过查阅资料终于明白了相关知识,在此一L1正则化来分享一下相关原理。
二、相关概念
2.1、范数
范数是数学中的一个概念,用于衡量向量的“大小”或者说是长度。在线性代数和相关的数学领域中,范数是定义在向量空间上的一个函数,它将每一个向量映射到非负实数,满足一定的性质,使得这个函数可以被视为该向量空间中的“长度”或“大小”。
范数的常见性质包括:
- 非负性:对于任意向量x,其范数∥x∥总是大于或等于0,且当且仅当x是零向量时∥x∥=0;
- 齐次性:对于任意标量α和任意向量x,有∥αx∥=∣α∣∥x∥;
- 三角不等式:对于任意两个向量x和y,有∥x+y∥≤∥x∥+∥y∥。
以下是几种常见的范数:
- L1范数(也称为曼哈顿距离):对于向量x = (x1, x2, …, xn),其L1范数定义为
∥
x
∥
1
=
∑
i
=
1
n
∣
x
i
∣
\|x\|_1 = \sum_{i=1}^{n} |x_i|
∥x∥1=i=1∑n∣xi∣
这可以被视为从原点到向量x点的最短路径(曼哈顿距离); - L2范数(欧几里得范数):对于向量x = (x1, x2, …, xn),其L2范数定义为 ∥ x ∥ 2 = x 1 2 + x 2 2 + . . . + x n 2 \|x\|_2 = \sqrt{x_1^2 + x_2^2 + ... + x_n^2} ∥x∥2=x12+x22+...+xn2这是最常见的范数类型,它表示向量在欧几里得空间中的“直线”距离
- 无穷范数:对于向量xx = (x1, x2, …, xn),其无穷范数定义为: ∥ x ∥ ∞ = max i = 1 n ∣ x i ∣ \|x\|_{\infty} = \max_{i=1}^{n} |x_i| ∥x∥∞=maxi=1n∣xi∣,这表示向量中的最大绝对值。
范数在多个领域都有广泛的应用,如在优化问题中作为目标函数或约束条件,以及在机器学习中作为正则化项来防止过拟合。通过使用不同的范数,可以引导算法关注不同的目标,比如L1范数倾向于产生稀疏解,而L2范数则倾向于平滑权重分布。
2.2、L1正则化
L1正则化,也称为Lasso正则化(Least Absolute Shrinkage and Selection Operator)、Lasso回归,是一种用于防止过拟合的线性回归方法。
Lasso回归是一种用于处理线性回归模型中变量选择和正则化的技术,它通过目标函数中添加一个与权重绝对值成正比的惩罚项的方法,具体是用一个与模型参数权重对应的L1范数的惩罚项的来实现这一目标。这种方法不仅可以应用于线性回归模型,还可以扩展到其他类型的模型中,尽管在其他模型中的应用可能不如在线性回归中那么直接或常见。
L1正则化的惩罚项是模型权重的绝对值之和。具体来说,如果有一个线性模型,其损失函数为L,那么L1正则化的损失函数可以表示为:
L L1 = L + λ ∑ i = 1 n ∣ w i ∣ L_{\text{L1}} = L + \lambda \sum_{i=1}^{n} |w_i| LL1=L+λi=1∑n∣wi∣
其中,wi是模型的权重,即线性模型L中各个xi的系数参数,λ 是正则化参数,它控制着惩罚项的强度。较大的λ值会导致权重的压缩,从而可能产生稀疏权重,即许多权重会变为零。
2.3、最小二乘回归
最小二乘回归(Least Squares Regression)是一种统计学方法,用于估计自变量(解释变量)和因变量(响应变量)之间的关系。该方法的核心思想是通过最小化误差的平方和来寻找数据的最佳函数匹配。
该方法假设模型的自变量xi和因变量y之间是线性关系,即
y
=
β
0
+
β
1
x
1
+
β
2
x
2
+
.
.
.
+
β
n
x
n
y=β0+β_1x_1+β_2x_2+...+β_nx_n
y=β0+β1x1+β2x2+...+βnxn
,其中 x1, x2, …, xn是自变量,而 β1,β2,…,βn是与每个自变量相对应的系数。通过计算每个数据点的实际观测值和模型预测值之间的差异(残差,即
y
i
−
y
i
^
yi-\hat{yi}
yi−yi^),然后计算这些残差的平方和(
Σ
(
y
i
−
y
i
^
)
2
Σ(yi-\hat{yi})²
Σ(yi−yi^)2),要求参数β1,β2,…,βn使得残差平方和最小。(请参考老猿在CSDN的博文《人工智能基础概念4:似然函数、最大似然估计案例详解》的相关介绍)
三、L1正则化解决模型幻觉和过拟合的原理分享
3.1、L1正则化解决模型幻觉的过程分析
在线性模型中引入L1正则化后,模型的回归优化过程可以通过以下几个步骤来解释:
- 初始化权重:优化算法首先会初始化权重向量w的值,这些值可以是随机的或者基于某种启发式方法得到的
- 计算梯度:在每次迭代中,算法会计算目标函数关于权重向量的梯度。目标函数包括损失函数和L1正则化项,对于L1正则化项,梯度是权重向量 \mathbf{w}w 的元素-wise绝对值
- 更新权重:根据计算出的梯度,算法会更新权重向量的值。在标准的梯度下降中,权重的更新公式为:
w new = w old − η ∇ L ( w ) \mathbf{w}_{\text{new}} = \mathbf{w}_{\text{old}} - \eta \nabla \mathcal{L}(\mathbf{w}) wnew=wold−η∇L(w)
其中,η 是学习率,∇L(w) 是目标函数关于权重向量的梯度。 - 应用L1正则化:在L1正则化的影响下,权重更新的过程中会考虑到正则化项。当 λ 增加时,正则化项的影响变得更大,导致更新后的权重更倾向于接近零
- 检查权重:在更新权重后,算法会检查每个权重的新值。如果一个权重更新后非常接近零(例如,小于某个阈值),算法可能会决定将其设置为精确的零。这样做的原因是,保留一个非常小的非零权重对模型的贡献微乎其微,而且还会因为L1正则化项而带来额外的惩罚
- 重复迭代:这个过程在多次迭代中重复进行,直到满足停止条件(例如,梯度接近零,损失函数不再显著改善,或者达到预设的迭代次数)
上述过程中:
- 通过调整惩罚参数(通常表示为λ)来影响模型的输出值。当λ的值较小时,惩罚项的作用较弱,模型更接近于普通的最小二乘回归。随着λ的增大,惩罚项的作用对模型影响越大,为了抵消λ的影响,就会使得进行回归时会对模型的权重系数各个值wi往下调整,即L1正则化使得每个权重的L1范数项(即权重的绝对值)都会受到惩罚;
- 权重的惩罚与其绝对值成正比,这意味着,即使是一个很小的权重,只要它不为零,也会受到惩罚。随着正则化参数 λ 的增加,这个惩罚变得更加严厉(即权重各系数的绝对值缩小更厉害);
- 在某个点上,优化算法可能会发现小于指定阈值的权重,此时优化算法会将该权重强制设置为0,因为这样可以减少整体的正则化惩罚,而对损失函数的影响不大。这就是“较小的权重会受到更大的影响”。
通过这种方式,优化算法在每次迭代中都会评估权重的更新,并在必要时将它们设置为零,在正则化的影响下,较小的权重更容易被压缩到零。这个过程是自动的,由算法的迭代更新规则和L1正则化项的惩罚性质共同决定的。最终,这导致了一些权重变为零,从而实现了模型的稀疏性和特征选择,从而简化模型。
L2正则化的原理和过程与L1实现方法类似,只是L1正则化的惩罚项是模型权重的绝对值(范数)之和,即 ∥ w ∥ 1 = ∑ i = 1 n ∣ w i ∣ \|w\|_1 = \sum_{i=1}^{n} |w_i| ∥w∥1=∑i=1n∣wi∣,L2正则化的惩罚项是模型权重的平方和,即 ∥ w ∥ 2 = ∑ i = 1 n w i 2 \|w\|_2 = \sum_{i=1}^{n} w_i^2 ∥w∥2=∑i=1nwi2 。
L2正则化不会将权重压缩至零,而是倾向于均匀地缩减所有权重的大小,这意味着它不具备特征选择的能力,但具有其他优点,在此就不展开介绍。
3.2、L1正则化解决模型幻觉和过拟合的过程举例
假设有一个线性回归模型,其目标函数的损失函数为均方误差(MSE):
L
(
w
)
=
1
n
∑
i
=
1
n
(
y
i
−
(
w
⋅
x
i
)
)
2
L(\mathbf{w}) = \frac{1}{n} \sum_{i=1}^{n} (y_i - (\mathbf{w} \cdot \mathbf{x}_i))^2
L(w)=n1i=1∑n(yi−(w⋅xi))2
其中,yi是观测值,Xi是特征向量,W是权重向量。
对上述模型引入L1正则化项,优化问题变为:
min
w
L
(
w
)
+
λ
∥
w
∥
1
\min_{\mathbf{w}} L(\mathbf{w}) + \lambda \|\mathbf{w}\|_1
minwL(w)+λ∥w∥1
其中,
∣
∣
W
∣
∣
1
=
∑
j
=
1
m
∣
w
j
∣
||W||_1 = \sum_{j=1}^{m} |w_j|
∣∣W∣∣1=∑j=1m∣wj∣是权重向量W的L1范数,λ 是正则化参数,控制正则化的强度。
假设权重向量 w 有两个权重 w1、w2,初始时 w1 = 0.1,w2 = 0.01。在没有正则化的情况下,这两个权重对模型的贡献可能相似。但当引入L1正则化项时,情况会发生变化。
由于L1正则化是与权重的绝对值成正比的,所以 w2的惩罚项λ×0.01 会比 w1的惩罚项 λ×0.1 小。然而,随着λ 的增加,两个权重都会受到更大的惩罚,比如分别变为0.005和0.05。
在某个点上,优化算法可能会发现 w2低于指定阈值(如0.00001),此时优化算法会将w2设置为零,因为这样可以减少整体的正则化惩罚,而对损失函数的影响不大。
因此,即使 w2原本对模型有一定的贡献,它也可能因为L1正则化的惩罚而变为零。这就是“较小的权重会受到更大的影响”,因为在正则化的影响下,它们更容易被压缩到零,从而实现特征的选择和权重的稀疏性。
3.3、为什么压缩模型参数权重会解决线性回归模型的幻觉和过拟合
在在老猿CSDN的博文《人工智能基础概念3:模型陷阱、过拟合、模型幻觉》中介绍了过拟合和模型幻觉的概念和关系,过拟合是模型幻觉的一种表现,而模型参数过多导致模型过于复杂是导致过拟合和模型幻觉的主要原因,因此通过压缩模型中的权重参数就会简化模型,从而在一定程度上解决模型幻觉的问题。
四、小结
L1正则化通过给线性模型增加一个与权重参数的L1范数作为惩罚,并使得目标函数变为原线性模型加上λ倍惩罚,通过调节λ的值影响模型权重参数的值,最终压缩部分权重参数的值为0来减少部分特征(自变量)对模型的影响。
虽然L1正则化最初是为线性模型设计的,但其核心思想——通过正则化来选择重要的特征并减少模型复杂度——是可以应用于其他模型的。在实践中,这通常需要对L1正则化的原理进行适当的调整和扩展,以适应不同模型的特点和需求。
更多人工智能基础知识请参考专栏《人工智能基础知识》。
写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!
关于老猿的付费专栏
- 付费专栏《https://blog.csdn.net/laoyuanpython/category_9607725.html 使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,对应文章目录为《 https://blog.csdn.net/LaoYuanPython/article/details/107580932 使用PyQt开发图形界面Python应用专栏目录》;
- 付费专栏《https://blog.csdn.net/laoyuanpython/category_10232926.html moviepy音视频开发专栏 )详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/107574583 moviepy音视频开发专栏文章目录》;
- 付费专栏《https://blog.csdn.net/laoyuanpython/category_10581071.html OpenCV-Python初学者疑难问题集》为《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的伴生专栏,是笔者对OpenCV-Python图形图像处理学习中遇到的一些问题个人感悟的整合,相关资料基本上都是老猿反复研究的成果,有助于OpenCV-Python初学者比较深入地理解OpenCV,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/109713407 OpenCV-Python初学者疑难问题集专栏目录 》
- 付费专栏《https://blog.csdn.net/laoyuanpython/category_10762553.html Python爬虫入门 》站在一个互联网前端开发小白的角度介绍爬虫开发应知应会内容,包括爬虫入门的基础知识,以及爬取CSDN文章信息、博主信息、给文章点赞、评论等实战内容。
前两个专栏都适合有一定Python基础但无相关知识的小白读者学习,第三个专栏请大家结合《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的学习使用。
对于缺乏Python基础的同仁,可以通过老猿的免费专栏《https://blog.csdn.net/laoyuanpython/category_9831699.html 专栏:Python基础教程目录)从零开始学习Python。
如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。