HOOOS

L1正则化数学原理大揭秘

0 39 AI科普君 L1正则化机器学习数学
Apple

L1正则化数学原理大揭秘

哎呀,说到L1正则化,你是不是感觉脑瓜子嗡嗡的?别怕!今天咱就用大白话,把L1正则化这玩意儿的数学原理掰开了揉碎了,给你讲得明明白白!保证你听完之后,感觉就像吃了炫迈一样,根本停不下来!

啥是正则化?

在聊L1正则化之前,咱先得搞清楚“正则化”是个啥。你想啊,咱们训练模型的时候,是不是希望模型既能在训练数据上表现好(也就是“拟合”得好),也能在没见过的数据上表现好(也就是“泛化”能力强)?

但是!模型这玩意儿,有时候太“聪明”了也不好。它可能会把训练数据里的那些乱七八糟的噪声也给学进去,结果在遇到新数据的时候,反而傻眼了,表现得一塌糊涂。这就好比你考试前死记硬背,把书上的每个字都背下来了,结果考试的时候稍微变个花样,你就懵圈了。

为了避免这种情况,咱就得给模型加点“约束”,让它别那么“放飞自我”。这个“约束”就是正则化!正则化就像给模型戴上了一个“紧箍咒”,限制了它的“自由度”,让它不能随便乱学,只能老老实实地学习那些真正有用的东西。

L1正则化又是啥?

正则化有很多种,L1正则化就是其中一种。那L1正则化是怎么给模型戴上“紧箍咒”的呢?

简单来说,L1正则化就是在模型的损失函数后面,加上一项“惩罚项”。这个惩罚项是模型参数的绝对值之和,再乘以一个系数(这个系数叫做“正则化系数”或者“惩罚系数”)。

你想啊,模型参数的绝对值越大,说明模型越“复杂”,越容易过拟合。所以,L1正则化就是通过惩罚那些绝对值大的参数,来“逼迫”模型变得更“简单”,从而提高模型的泛化能力。

用数学公式表示就是这样:

$$J(\theta) = \frac{1}{2m}\sum_{i=1}^{m}(h_\theta(x^{(i)}) - y^{(i)})^2 + \lambda \sum_{j=1}^{n}|\theta_j|$$

你看,这个公式里,前面那一坨是原来的损失函数(比如均方误差),后面那一坨就是L1正则化项。$\lambda$ 就是正则化系数,$\theta_j$ 就是模型的参数。

L1正则化为啥能让模型参数变小,甚至变成0?

这可是L1正则化的精髓所在!你想想,L1正则化项是模型参数的绝对值之和,这玩意儿的图像长啥样?

假设模型只有一个参数$\theta$,那么L1正则化项的图像就是一个V字形,V字的尖尖就在$\theta=0$ 的地方。当模型的损失函数加上这个V字形的“惩罚项”之后,整个损失函数的最小值,就有可能被“拉”到$\theta=0$ 的地方,或者至少是靠近$\theta=0$ 的地方。

如果有多个参数,L1正则化项的图像就是一个“超菱形”(在二维空间里是菱形,在三维空间里是八面体,更高维度就是“超菱形”)。这个“超菱形”有很多“尖尖”,这些“尖尖”对应着某些参数为0的情况。所以,L1正则化也有可能把某些参数“逼”到0,从而实现“特征选择”的效果。

梯度下降法和L1正则化

咱都知道,训练模型的时候,一般都是用梯度下降法来找到损失函数的最小值。但是,L1正则化项在$\theta=0$ 的地方是不可导的(因为V字形的尖尖那里没有导数)。这可咋整?

别慌!虽然L1正则化项在$\theta=0$ 的地方不可导,但是咱可以用“次梯度”的概念来解决这个问题。

啥是次梯度?简单来说,就是把不可导的点“圆滑”一下,用一个“范围”来代替导数。比如,对于绝对值函数$|\theta|$,在$\theta=0$ 的地方,它的次梯度可以是[-1, 1]之间的任意一个数。

有了次梯度,咱就可以对L1正则化项求导了。具体来说,就是:

  • 当$\theta_j > 0$ 时,L1正则化项的导数是$\lambda$。
  • 当$\theta_j < 0$ 时,L1正则化项的导数是$-\lambda$。
  • 当$\theta_j = 0$ 时,L1正则化项的次梯度是$[-\lambda, \lambda]$。

然后,咱就可以把这个导数(或者次梯度)加到原来的损失函数的导数上,然后用梯度下降法来更新模型参数了。

更新公式大概长这样:

$$\theta_j := \theta_j - \alpha (\frac{\partial}{\partial \theta_j}J_0(\theta) + \lambda \cdot sign(\theta_j))$$

其中,$J_0(\theta)$ 是原来的损失函数,$\alpha$ 是学习率,$sign(\theta_j)$ 是符号函数(当$\theta_j > 0$ 时为1,当$\theta_j < 0$ 时为-1,当$\theta_j = 0$ 时可以取[-1, 1]之间的任意一个数)。

你看,这个公式里,当$\theta_j$ 的绝对值比较大的时候,正则化项的导数会“抵消”一部分原来的损失函数的导数,从而让$\theta_j$ 的更新幅度变小。当$\theta_j$ 的绝对值比较小的时候,正则化项的导数可能会让$\theta_j$ 直接变成0。

L1正则化的应用

L1正则化有很多应用,比如:

  • 特征选择:L1正则化可以把某些不重要的特征的权重“逼”到0,从而实现特征选择的效果。
  • 稀疏模型:L1正则化可以让模型的参数变得稀疏(也就是有很多参数为0),从而减少模型的存储空间和计算复杂度。
  • 图像处理:L1正则化可以用于图像去噪、图像重建等任务。

总结

好啦,关于L1正则化的数学原理,咱就聊到这里啦!希望你已经对L1正则化有了一个更深入的了解。记住,L1正则化就是通过给模型参数的绝对值之和加上一个“惩罚项”,来“逼迫”模型变得更“简单”,从而提高模型的泛化能力。L1正则化还可以实现特征选择和稀疏模型的效果。下次再遇到L1正则化,你就可以自信地说:“这个我懂!”

是不是感觉还挺简单的?其实,很多机器学习的算法,背后的数学原理并没有那么可怕。只要你肯花点时间,用大白话把它们掰开了揉碎了,你也能轻松掌握它们!

这感觉,真像吃了炫迈,完全停不下来啊,对吧?

点评评价

captcha
健康