L1正则化及其推导

本文介绍了L1正则化的基本概念及作用原理,并详细推导了其如何使参数稀疏化的过程。通过几何解释与解析解推导,揭示了L1正则化在机器学习中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

\(L1\)正则化及其推导

在机器学习的Loss函数中,通常会添加一些正则化(正则化与一些贝叶斯先验本质上是一致的,比如\(L2\)正则化与高斯先验是一致的、\(L1\)正则化与拉普拉斯先验是一致的等等,在这里就不展开讨论)来降低模型的结构风险,这样可以使降低模型复杂度、防止参数过大等。大部分的课本和博客都是直接给出了\(L1\)正则化的解释解或者几何说明来得到\(L1\)正则化会使参数稀疏化,本来会给出详细的推导。

\(L1\)正则化

大部分的正则化方法是在经验风险或者经验损失\(L_{emp}\)(emprirical loss)上加上一个结构化风险,我们的结构化风险用参数范数惩罚\(\Omega(\theta)\),用来限制模型的学习能力、通过防止过拟合来提高泛化能力。所以总的损失函数(也叫目标函数)为:

\[ J(\theta; X, y) = L_{emp}(\theta; X, y) + \alpha\Omega(\theta) \tag{1.1} \]

其中\(X\)是输入数据,\(y\)是标签,\(\theta\)是参数,\(\alpha \in [0,+\infty]\)是用来调整参数范数惩罚与经验损失的相对贡献的超参数,当\(\alpha = 0\)时表示没有正则化,\(\alpha\)越大对应该的正则化惩罚就越大。对于\(L1\)正则化,我们有:

\[ \Omega(\theta) = \|w\|_1 \tag{1.2} \]

其中\(w\)是模型的参数。

几何解释

Figure1

图1 上面中的蓝色轮廓线是没有正则化损失函数的等高线,中心的蓝色点为最优解,左图、右图分别为$L2$、$L1$正则化给出的限制。

可以看到在正则化的限制之下,\(L2\)正则化给出的最优解\(w^*\)是使解更加靠近原点,也就是说\(L2\)正则化能降低参数范数的总和。\(L1\)正则化给出的最优解\(w^*\)是使解更加靠近某些轴,而其它的轴则为0,所以\(L1\)正则化能使得到的参数稀疏化。

解析解的推导

有没有偏置的条件下,\(\theta\)就是\(w\),结合式\((1.1)\)\((1.2)\),我们可以得到\(L1\)正则化的目标函数:

\[ J(w; X, y) = L_{emp}(w; X, y) + \alpha\|w\|_1 \tag{3.1} \]

我们的目的是求得使目标函数取最小值的\(w^*\),上式对\(w\)求导可得:

\[ \nabla_w J(w; X, y) = \nabla_w L_{emp}(w; X, y) + \alpha \cdot sign(w) \tag{3.2} \]
其中若\(w>0\),则\(sign(w)=1\);若\(w<0\),则\(sign(w) = -1\);若\(w=0\),则\(sign(w)=0\)。当\(\alpha = 0\),假设我们得到最优的目标解是\(w^*\),用秦勤公式在\(w^*\)处展开可以得到(要注意的\(\nabla J(w^*)=0\)):

\[ J(w; X, y) = J(w^*; X, y) + \frac{1}{2}(w - w^*)H(w-w^*) \tag{3.3} \]

其中\(H\)是关于\(w\)的Hessian矩阵,为了得到更直观的解,我们简化\(H\),假设\(H\)这对角矩阵,则有:

\[ H = diag([H_{1,1},H_{2,2}...H_{n,n}]) \tag{3.4} \]

将上式代入到式\((3.1)\)中可以得到,我们简化后的目标函数可以写成这样:

\[ J(w;X,y)=J(w^*;X,y)+\sum_i\left[\frac{1}{2}H_{i,i}(w_i-w_i^*)^2 + \alpha_i|w_i| \right] \tag{3.5} \]

从上式可以看出,\(w\)各个方向的导数是不相关的,所以可以分别独立求导并使之为0,可得:

\[ H_{i,i}(w_i-w_i^*)+\alpha \cdot sign(w_i)=0 \tag{3.6} \]

我们先直接给出上式的解,再来看推导过程:

\[ w_i = sign(w^*) \max\left\{ |w_i^*| - \frac{\alpha}{H_{i,i}},0 \right\} \tag{3.7} \]

从式\((3.5)\)与式\((3.6)\)可以得到两点:

  • 1.可以看到式\((3.5)\)中的二次函数是关于\(w^*\)对称的,所以若要使式\((3.5)\)最小,那么必有:\(|w_i|<|w^*|\),因为在二次函数值不变的程序下,这样可以使得\(\alpha|w_i|\)更小。
  • 2.\(sign(w_i)=sign(w_i^*)\)\(w_1=0\),因为在\(\alpha|w_i|\)不变的情况下,\(sign(w_i)=sign(w_i^*)\)\(w_i=0\)可以使式\((3.5)\)更小。

由式\((3.6)\)与上述的第2点:\(sign(w_i)=sign(w_i^*)\)可以得到:

\[ \begin{split} 0 &= H_{i,i}(w_i-w_i^*)+\alpha \cdot sign(w_i^*) \cr w_i &= w_i^* - \frac{\alpha}{H_{i,i}}sign(w_i^*) \cr w_i &= sign(w_i^*)|w_i^*| - \frac{\alpha}{H_{i,i}}sign(w_i^*)\cr &=sign(w_i^*)(|w_i^*| - \frac{\alpha}{H_{i,i}}) \cr \end{split} \tag{3.8} \]
我们再来看一下第2点:\(sign(w_i)=sign(w_i^*)\)\(w_1=0\),若\(|w_i^*| < \frac{\alpha}{H_{i,i}}\),那么有\(sign(w_i) \neq sign(w_i^*)\),所以这时有\(w_1=0\),由于可以直接得到解式\((3.7)\)
从这个解可以得到两个可能的结果:

  • 1.若\(|w_i^*| \leq \frac{\alpha}{H_{i,i}}\),正则化后目标中的\(w_i\)的最优解是\(w_i=0\)。因为这个方向上\(L_{emp}(w; X, y)\)的影响被正则化的抵消了。
  • 2.若\(|w_i^*| > \frac{\alpha}{H_{i,i}}\),正则化不会推最优解推向0,而是在这个方面上向原点移动了\(\frac{\alpha}{H_{i,i}}\)的距离。

【防止爬虫转载而导致的格式问题——链接】:http://www.cnblogs.com/heguanyou/p/7582578.html

转载于:https://www.cnblogs.com/heguanyou/p/7582578.html

<think>好的,我现在要解答用户关于L1正则化如何使权重稀疏化的问题。首先,我需要回顾一下L1正则化的基本概念和原理。根据用户提供的引用资料,L1正则化正则化项是权重向量的绝对值之和,也就是$||w||_1 = \sum |w_i|$。优化过程中,这个正则化项会引导模型将某些权重压缩为零,这是因为它倾向于让不重要的权重趋近于零[^1]。 接下来,我需要理解为什么L1正则化能够导致稀疏性。引用中提到,L1正则化是L0正则化的最优凸近似,而L0正则化直接计算非零权重的数量,但因其NP难问题,难以求解。L1正则化作为凸优化问题更容易处理[^2]。这说明L1正则化在保持稀疏性的同时,避免了计算上的困难。 然后,我需要分析L1正则化的梯度下降过程。根据引用[3],L1正则化的梯度更新涉及符号函数sign(w),这会导致每次更新时,权重会被减去一个固定量(学习率和正则化系数有关)。这种更新方式L2正则化的线性缩放不同,会使得部分权重逐渐趋近于零,尤其是当权重本身较小时,可能会直接变为零。 引用[5]中的几何解释也很有帮助。在优化过程中,最优解可能出现在可行域的边界上,即某些权重为零的位置。例如,当损失函数的梯度正则化项的梯度方向不同时,参数更新的方向会使得某些权重被“挤压”到零,从而实现稀疏性。 现在,我需要将这些点整合成一个清晰的解释,涵盖原理、数学推导和实现机制。同时,用户可能想知道具体的实现步骤,比如如何在代码中应用L1正则化,以及实际应用中的例子。 可能还需要比较L1和L2正则化的不同,以突出L1的特点。例如,L2正则化通过平方项对权重进行缩放,不会导致稀疏性,而L1的绝对值项则允许部分权重完全为零。此外,特征选择的应用也是一个重要点,可以提到引用[3]中提到的稀疏性用于特征选择。 最后,生成相关问题时,需要考虑用户可能进一步想了解的内容,比如数学证明、优化算法(如坐标下降)、具体代码实现等。</think>### L1正则化如何使权重稀疏化至零? #### 1. **基本原理** L1正则化通过在损失函数中添加权重向量的绝对值之和作为惩罚项,引导优化过程将不重要的权重压缩至零。其目标函数为: $$ J(w) = \text{原损失函数} + \lambda \sum_{i=1}^n |w_i| $$ 其中$\lambda$是正则化强度系数,控制稀疏化程度。 #### 2. **数学机制** - **梯度下降中的更新规则** 对权重$w_i$求导时,L1正则项的导数为$\text{sign}(w_i)$。因此,权重更新公式为: $$ w_i \leftarrow w_i - \eta \left( \frac{\partial \text{原损失}}{\partial w_i} + \lambda \cdot \text{sign}(w_i) \right) $$ 当$|w_i|$较小时,每次更新会以固定步长$\eta \lambda$向零靠近,直至变为零[^3]。 - **几何解释** 在参数空间中,L1正则化的约束区域是菱形(二维)或多面体(高维)。最优解更容易出现在这些几何体的“顶点”或“边”上,对应某些权重为零的情况(如图示)[^5]。 #### 3. **实现稀疏化的关键步骤** 1. **选择合适的$\lambda$**:$\lambda$越大,稀疏化越强,但可能损害模型性能。 2. **优化算法调整**:使用如**坐标下降法**或**近端梯度法**,显式处理不可导的绝对值项。 3. **软阈值操作**:在更新权重时,对接近零的值进行截断。例如,当$w_i$满足$|w_i| \leq \lambda$时,直接将其置零[^4]。 #### 4. **代码示例(Python)** ```python import numpy as np def l1_regularized_gradient_descent(X, y, learning_rate=0.01, lambda_=0.1, epochs=1000): n_samples, n_features = X.shape w = np.zeros(n_features) for _ in range(epochs): y_pred = X.dot(w) gradient = X.T.dot(y_pred - y) / n_samples # 原损失梯度 w = w - learning_rate * (gradient + lambda_ * np.sign(w)) # L1正则化项 w = np.where(np.abs(w) < 1e-6, 0, w) # 软阈值截断 return w ``` #### 5. **实际应用场景** - **特征选择**:通过稀疏化自动筛选出重要特征,简化模型。 - **压缩感知**:在信号处理中利用稀疏性恢复原始信号。 - **轻量化模型**:减少神经网络中不必要的连接权重。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值