美文网首页
L1正则化与L2正则化学习笔记

L1正则化与L2正则化学习笔记

作者: 教训小磊 | 来源:发表于2021-04-18 16:51 被阅读0次

本文是本人学习了相关机器学习课程后的一个关于L1正则化与L2正则化的学习笔记。

正则化

图1 训练损失图

从上图1 可知,随着训练迭代次数的增加,训练集损失曲线稳步下降,但是测试集损失曲线先是不断下降,然后是上升,这种现象我们称之为过拟合,这样训练得到的模型一般迁移到其他数据集后,表现会非常差。

为防止模型在训练过程中过拟合现象的发生,通常采用正则化的方式进行处理,即降低复杂模型的的复杂度。我们一般衡量一个模型的复杂度主要有下面两种方式:

1.将模型复杂度作为模型中所有的权重的函数,如L2正则化;

2.将模型复杂度作为具有非零权重的特征总数的函数,如L1正则化。

正则化往往作为惩罚项加入到原来的损失函数中,所以说,加入了正则化后,原先以最小化损失(经验风险最小化)为目标:

                                       minimize(Loss(Data|Model))

转变为以最小化损失和复杂度为目标,这称为结构风险最小化:

                        minimize(Loss(Data|Model)+Complexity(Model))

其中minimize为最小化操作,Data为模型需要拟合的数据,Model为需要训练的模型,Loss(Data|Model)为损失项,用来衡量模型与数据的拟合度;Complexity(Model)为正则化项,用于衡量模型的复杂度。

L2 正则化

L2正则化公式

其中w={w1,w2,...,wn}代表特征权重,n代表特征权重的个数。L2越小,则\vert w1\vert ,\vert w2 \vert ,...,\vert wn \vert 整体就越小,则模型的复杂度就越小。

L2正则化又称为权重腐蚀,主要是缓减模型训练过程中过拟合的,跟接下来要说的L1正则化是有点不同的,L2主要是将所有的权重都降到0附近,保持在一个较小的值,一般不会将权重直接降到0。接下来通过梯度下降的方法来讲解以下为什么为这样。

L2权重更新举例

这里边C为整体的损失函数,C0是我们通常使用的损失函数(比如均方根误差、交叉熵等),\lambda 是正则化率,一般比较小。

从式5可知每一次迭代,w1 都要先乘以一个小于1的因子,从而使\vert w1 \vert 不断减小(加绝对值是因为w1可正可负)。

执行L2正则化对模型有一下影响:

1.使权重接近与0(但并非正好为0,原因后面解释);

2.使权重的平均值接近于0,且呈正态分布。

L1正则化

稀疏矢量通常包含许多维度,创建特征组合会导致包含更多维度,由于使用此类高维度的特征矢量,因此模型可能非常庞大,而且需要大量内存资源,在高维稀疏矢量中,最好将不重要的权重降为0,正好为0的权重基本上会使相应的特征从模型中移除,这样是可以减少内存资源占用以及模型中的噪点。

L1正则化公式

一般认为L1是有助于生成一个稀疏权值矩阵,进而用于特征选择。比如通道剪枝技术。

L1 vs L2

采用不同的方式降低权重:

\bullet L2会降低权重的平方,w^2;

\bullet L1会降低权重的绝对值,\vert w \vert

则L2与L1具有不同的导数:

\bullet L2为2*权重;

\bullet L1为k(常数,因为是绝对值,一般是一个阶跃函数sgn)

所以L2的导数可以理解为每次迭代移除权重的x%,则相当于每次权重更新后都变为原来的1-x%,打个比方说x=10,则权重每更新一次就为原来的90%,那么经过成百上千次迭代后,这个权重只会无限逼近0,但不会取到0。这个是通俗的理解,不是很严谨。

而L1的导数可以理解为每次迭代从权重中去除一个常数,这个常数是跟权重本身没有关系的,所以它更加容易取到0,比如权重本身为1,k=0.2,那么经过5次迭代,权重就取到0了。当然这种说法也是不够严谨的,只是帮助理解。这里边还涉及到绝对值在0处不连续不可导的问题,就当忽略吧!

相关文章

网友评论

      本文标题:L1正则化与L2正则化学习笔记

      本文链接:https://www.haomeiwen.com/subject/dmwrvhtx.html