手推公式带你轻松理解L1/L2正则化

前言

L1/L2正则化的目的是为了解决过拟合,因此我们先要明白什么是过拟合、欠拟合。

  • 过拟合:训练出的模型在测试集上Loss很小,在训练集上Loss较大
  • 欠拟合:训练出的模型在测试集上Loss很大,在训练集上Loss也很大
  • 拟合:训练的刚刚好,在测试集上Loss很小,在训练集上Loss也很小

现在,让我们开启L1/L2正则化正则化之旅吧!

L1/L2正则化原理

L1与L2正则是通过在损失函数中增加一项对网络参数的约束,使得参数渐渐变小,模型趋于简单,以防止过拟合。

损失函数Loss
在这里插入图片描述
上述Loss,MSE均方误差的Loss

L1正则化的损失函数
在这里插入图片描述
W代表网络中的参数,超参数λ需要人为指定。需要注意的是,L1使用绝对值来约束参数

L2正则化的损失函数
在这里插入图片描述
相比于L1正则化,L2正则化则使用了平方函数来约束网络参数

需要注意的是,在有的文献中,把L2正则项定义为权值向量w中各个元素的平方和然后再求平方根,其实,L2正则加不加平方根影响不大,原理都是一样的,但不加平方根更容易数学公式推导

我们知道,当W的值比较大时(即W的值距离0很远,取几百甚至几千的值),则拟合的曲线比较陡,x稍微一变化,y的影响就比较大,如下图所示:
在这里插入图片描述
可以看到,你的模型复杂度越大,拟合的曲线就越陡,惩罚项W就越大,在这种情况容易出现过拟合,所以要避免W出现比较大的值,一个有效的方法是给loss加上一个与W本身有关的值,即L1正则项或L2正则项,这样,我们在使用梯度下降法让Loss趋近于0的时候,也必须让W越来越小,W值越小,模型拟合的曲线会越平缓,从而防止过拟合。也可以从奥卡姆剃刀原理的角度去解释,即在所有可以选择的模型中,能够很好拟合当前数据,同时又十分简单的模型才是最好的。

L1与L2正则化让W变小的原理是不同的:

  • L1能产生等于0的权值,即能够剔除某些特征在模型中的作用(特征选择),即产生稀疏的效果
  • L2可以得迅速得到比较小的权值,但是难以收敛到0,所以产生的不是稀疏而是平滑的效果

下面,从两个角度理解L1/L2正则化这两个结论

从数学的角度理解L1/L2正则化

我们来看看L1正则化的损失函数的求导及梯度更新公式

在这里插入图片描述
lr是学习率(更新速率),上述求导是Loss或 L o s s l 1 Loss_l1 Lossl1 w i w_i wi的偏导,为了方便书写,将 w i w_i wi写成W

  • 上面是加上L1正则化的损失函数后,W更新公式及loss对W求梯度的公式(准确的说是对wi求偏导),|W|对Wi的导数是1或-1,这样W更新公式就变为加上或减去一个常量lr,
  • 就是说权值每次更新都固定减少一个特定的值(比如0.01),那么经过若干次迭代之后,权值就有可能减少到0。

L1正则化的损失函数的求导及梯度更新公式(假设 λ = 1 / 4 \lambda=1/4 λ=1/4)
在这里插入图片描述

  • 从上面的公式中可以看到,加上L2正则项后,W实际上每次变为原来的C倍(另一项忽略不计),假如C=0.5,那么,W每次缩小为原来的一半,虽然权值W不断变小,但是因为每次都等于上一次的一半,所以很快会收敛到较小的值但不为0。

从几何的角度理解L1/L2正则化

由于L1正则化项是 ∣ w 1 + w 2 + . . . + w n ∣ |w_1+w_2+...+w_n| w1+w2+...+wn,为了便于理解,我们假设,L1正则项是 w 1 + w 2 w_1+w_2 w1+w2,将其画在二维坐标轴上如下所示:
在这里插入图片描述

  • 横轴是w1,纵轴是w2,优化空间是一个等高线图,可以看优化曲线在圆圈上移动时,只有直达W2轴的交点处,才能满足两个条件:让loss最小,让w1+w2最小,此时w2=0,所以说,L1中两个权值倾向于一个较大另一个为0即产生稀疏的效果

由于L2正则化使用了平方函数,而如果两个参数的平方和相同,呈现出的形状会是一个圆。

在这里插入图片描述

  • 可以看优化曲线在圆圈上移动时,只有在两个圆圈的交点处,才能满足两个条件:让loss最小,让 w 1 + w 2 w^1+w^2 w1+w2最小,此时L2中两个权值都倾向于为非零的较小数,所以说,L2产生平滑的效果。

L1/L2正则化使用情形

  • L1能产生等于0的权值,即能够剔除某些特征在模型中的作用(特征选择),即产生稀疏的效果,如果需要做模型的压缩,L1正则是一个不错的选择。

  • 如果不做模型的压缩,在实际中更倾向于L2正则化,因为在实际操作的过程中,模型该用多少层,模型的参数量,这个不好确定,我们也不知道解决这个实际问题要用多少层网络,用多少个参数,只能去试。在试的过程中,最快最经济的做法是:在模型最开始的时候就加上正则化,不管是在欠拟合或过拟合都加上正则化,然后就不断的去训练,后面根据模型的拟合情况只要增加模型参数和模型结构就行了,不用考虑其他的,即把正则化作为默认的选项去试就可以了。

  • 12
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
逻辑回归是一种常用的分类算法,可以用于解决二分类问题。在手推逻辑回归中,我们需要先定义一个代价函数,然后使用梯度下降算法最小化这个代价函数。 首先,我们可以使用sigmoid函数将线性模型的输出转化为一个概率值。sigmoid函数定义如下: h(x) = 1 / (1 + e^(-z)) 其中,h(x) 表示预测的概率,z 表示线性模型的输出。 然后,我们需要定义代价函数。在逻辑回归中,常用的代价函数是交叉熵损失函数。对于单个样本而言,交叉熵损失函数定义如下: cost(h(x), y) = -y * log(h(x)) - (1 - y) * log(1 - h(x)) 其中,y 表示样本的真实标签,h(x) 表示预测的概率。 接下来,我们需要最小化代价函数。梯度下降是一种常用的优化算法,在每一次迭代中,我们根据当前模型参数的梯度方向更新参数,使得代价函数不断减小。 对于逻辑回归来说,我们可以使用偏导数来计算代价函数对参数的梯度。对于参数θ_j(j表示第j个特征),梯度的计算公式如下: ∂cost(h(x), y) / ∂θ_j = (h(x) - y) * x_j 然后,我们可以更新参数: θ_j := θ_j - α * ∂cost(h(x), y) / ∂θ_j 其中,α 表示学习率,控制参数更新的步长。 通过不断迭代更新参数,直到达到一定的迭代次数或者满足停止条件,我们就可以得到逻辑回归模型的最优参数。 这就是手推逻辑回归中使用梯度下降算法的基本步骤。当然,在实际应用中,还涉及到特征工程、正则化等技巧,以及对学习率的选择和参数初始化等问题,这些都是需要根据具体情况进行调整和优化的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雷恩Layne

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值