拉格朗日乘法和L1、L2正则化

拉格朗日乘法和L1、L2正则化

本篇博客是作为学习正则化的时候的笔记,难免可能存在一些错误,欢迎各位指出不对的地方。

拉格朗日乘法

在介绍L1、L2正则化之前,必须先介绍的是拉格朗日乘法。拉格朗日乘法解决的是在约束条件下求一个函数的极值问题。

例如以L2正则化为例,如下图所示,彩色椭圆等高线是目标函数 J(w),约束条件是黑色圆

请添加图片描述

我们要在 ∑ i d w i 2 ≤ C ( d 是维度 ) 的情况下最小化目标函数 J ( w ) 将约束条件改写为 g ( w ) = ∑ i d w i 2 − C = 0 我们要在 \sum_i^dw_i^2 \leq C(d是维度) 的情况下最小化目标函数 J(w)\\ 将约束条件改写为g(w) = \sum_i^dw_i^2-C = 0\\ 我们要在idwi2C(d是维度)的情况下最小化目标函数J(w)将约束条件改写为g(w)=idwi2C=0

要在约束条件下取到极值,在本例中,很显然即意味着是在彩色等高线与黑色圆的第一次交点处取到,而在交点处取到极值,则意味着两个函数有着相同的切平面,因此也有公法线。而对于曲面来说,对每个方向求偏导就是其法向量。

J ( w ) 的法向量: ( ∂ J ∂ w 1 w ⃗ 1 , ∂ J ∂ w 2 w ⃗ 2 ) g ( w ) 的法向量: ( ∂ g ∂ w 1 w ⃗ 1 , ∂ g ∂ w 2 w ⃗ 2 ) J(w)的法向量:(\frac{\partial J}{\partial w_1} \vec w_1, \frac{\partial J}{\partial w_2} \vec w_2)\\ g(w)的法向量:(\frac{\partial g}{\partial w_1} \vec w_1, \frac{\partial g}{\partial w_2} \vec w_2) J(w)的法向量:(w1Jw 1,w2Jw 2)g(w)的法向量:(w1gw 1,w2gw 2)

又因为二者的法向量必定平行,我们通常让其作为相加的方式,有

λ = ∣ ∇ J ( w ) ∇ g ( w ) ∣ \lambda = |{\frac{\nabla J(w)}{\nabla g(w)}}|\\ λ=g(w)J(w)

∇ J ( w ) + λ ∇ g ( w ) = 0 \nabla J(w) +\lambda\nabla g(w) = 0 J(w)+λg(w)=0

question
  1. 为什么在交点处取得极值?

    答:因为这是离目标函数最低点最近的位置

  2. 为什么不能是减号?

    答:加减都可以,习惯上取加

构造一个新函数,
J n e w ( w ) = J o l d ( w ) + λ g ( w ) J^{new}(w) = J^{old}(w) + \lambda g(w) Jnew(w)=Jold(w)+λg(w)
根据上述结论,对这个函数有
{ ∂ J o l d ( w ) ∂ w 1 + λ ∂ g ( w ) ∂ w 1 = 0   ∂ J o l d ( w ) ∂ w 2 + λ ∂ g ( w ) ∂ w 2 = 0   g ( w ) = 0 \begin{aligned} &\begin{cases} & \frac{\partial J^{old}(w)}{\partial w_1} + \lambda \frac{\partial g(w)}{\partial w_1} = 0\\ \space\\ & \frac{\partial J^{old}(w)}{\partial w_2} + \lambda \frac{\partial g(w)}{\partial w_2} = 0\\ \space\\ & g(w) = 0 \end{cases} \end{aligned}   w1Jold(w)+λw1g(w)=0w2Jold(w)+λw2g(w)=0g(w)=0
因此,实际上上面的方程组大概率可以解出
w 1 0 , w 2 0 , λ w_1^0, w_2^0, \lambda w10,w20,λ
三个未知数的。这里举个例子:

我们假设目标函数为
J o l d ( w ) = − 2 e − ( w 1 − 1 ) 2 − ( w 2 − 1 ) 2 J^{old}(w) = -2e^{-(w_1-1)^2-(w_2-1)^2} Jold(w)=2e(w11)2(w21)2
我们的约束条件为
g ( w ) = w 1 2 + w 2 2 − c 2 g(w) = w_1^2+w_2^2-c^2 g(w)=w12+w22c2
按照上述方法得到方程组
{ 4 e − ( w 1 − 1 ) 2 − ( w 2 − 1 ) 2 ( w 1 − 1 ) + λ 2 w 1 = 0 4 e − ( w 1 − 1 ) 2 − ( w 2 − 1 ) 2 ( w 2 − 1 ) + λ 2 w 2 = 0 w 1 2 + w 2 2 − c 2 = 0 \begin{cases} 4e^{-(w_1-1)^2-(w_2-1)^2}(w_1-1) + \lambda2w_1 = 0\\ 4e^{-(w_1-1)^2-(w_2-1)^2}(w_2-1) + \lambda2w_2 = 0\\ w_1^2+w_2^2-c^2 = 0 \end{cases} 4e(w11)2(w21)2(w11)+λ2w1=04e(w11)2(w21)2(w21)+λ2w2=0w12+w22c2=0
由于方程过于复杂,我们用python来辅助求解,可以求得
{ w 1 = − 2 2 w 2 = − ( 2 ) 2 λ = − ( 2 + 2 2 ) e − 3 − 2 2 或  { w 1 = 2 2 w 2 = ( 2 ) 2 λ = − ( 2 − 2 2 ) e − 3 + 2 2 \begin{cases} w_1 = -\frac{\sqrt{2}}{2}\\ w_2=-\frac{\sqrt(2)}{2}\\ \lambda = -(2 + 2\sqrt2)e^{-3 - 2\sqrt2}\\ \end{cases} 或 \space \begin{cases} w_1 = \frac{\sqrt{2}}{2}\\ w_2=\frac{\sqrt(2)}{2}\\ \lambda = -(2 - 2\sqrt2)e^{-3 + 2\sqrt2}\\ \end{cases}\\ w1=22 w2=2( 2)λ=(2+22 )e322   w1=22 w2=2( 2)λ=(222 )e3+22
可视化结果为:

请添加图片描述

一个是最远处,一个是最近处。我们修改了代码中关于 λ 的符号,结果是一样的,证明加减都是没有关系的。

C和λ的关系

Cλ 是反比关系(例如sklearn中的逻辑回归函数的参数c,就是正则化系数的倒数),这里以L2范数为例:

g ( w ) = w 1 2 + w 2 2 − C   λ = ∣ ∇ J ( w ) ∇ g ( w ) ∣ = ∣ ∇ J ( w ) 2 w 1 + 2 w 2 ∣ ∼ ∣ ∇ J ( w ) ∣ C g(w) = w_1^2+w_2^2-C\\ \space\\ \lambda = |\frac{\nabla J(w)}{\nabla g(w)}| = |\frac{\nabla J(w)}{2w_1+2w_2}| \sim \frac{|\nabla J(w)|}{C}\\ g(w)=w12+w22C λ=g(w)J(w)=2w1+2w2J(w)C∣∇J(w)

L1、L2正则化

如上所述,我们的损失函数就是 J(w) ,我们发现如果不给参数加上限制, w 1 w_1 w1 w 2 w2 w2 可能会导致模型过拟合的问题,即损失函数为0了,那么当他遇到含有噪声的时候,就会把噪声也学进去。其次,当参数过大的时候,样本一点点微小的变动,都会导致变化非常大。例如
y = w 1 ∗ x 1 + w 2 ∗ x 2 y = w_1 * x_1 + w_2 * x_2 y=w1x1+w2x2
w 1 w_1 w1 w 2 w_2 w2 都非常大的时候,只要 x 1 x_1 x1 和训练数据相差一点点,都会导致 y y y 变化特别大.

出于以上的目的,我们需要对参数 w 进行约束。比如进行L2正则化,即
∑ i w i 2 ≤ C \sum_iw_i^2 \leq C iwi2C
因此
约束条件 g ( w ) = ∑ i w i 2 − C = 0 约束条件 g(w) = \sum_iw_i^2-C = 0\\\\ 约束条件g(w)=iwi2C=0
由拉格朗日乘法,构建一个新的目标函数
J n e w ( w ) = J o l d ( w ) + λ g ( w ) J^{new}(w) = J^{old}(w) + \lambda g(w)\\ Jnew(w)=Jold(w)+λg(w)
其中,g(w)中的 C 是超参,我们认为是已知的,

那么很明显,当 C 越大,也就是 λ 越小的时候,约束条件几乎可以包含原来函数的最优值的时候,就意味着其实没有进行正则化惩罚。这和表达式中的含义也是一样的,λ 越小,则正则化函数几乎就没用上,就可能会导致过拟合;以上述的情况为例,C很大的时候,就把红色的最低点包括在内了,这与我们表达式的结论一致。而当 C 越小,也就是 λ 越大的时候,约束条件过于严苛,根本到不了一个比较小的地方,就可能会导致欠拟合。

L1正则化的独有作用

请添加图片描述

如图所示,L1正则化有个很明显的作用就是能做特征提取。即在大多数情况下,L1约束下去求极值的时候,大多会在顶点取到。这就会导致一些维度的值为0,这就从侧面帮我们选出了更有用的特征,在一定程度上做到了特征提取。
而相比于L1,L2则没有那么容易在某个维度为0的时候取到极值。
请添加图片描述

代码

Gitee地址:https://gitee.com/hou_zhitian/ml_math/tree/master/%E9%AB%98%E7%AD%89%E6%95%B0%E5%AD%A6
Github地址:https://github.com/Zhi-tian-Hou/ML_math/tree/master/%E9%AB%98%E7%AD%89%E6%95%B0%E5%AD%A6

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值