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

拉格朗日乘法和L1、L2正则化,第1张

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

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

拉格朗日乘法

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

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

我 们 要 在 ∑ i w i 2 ≤ C 的 情 况 下 最 小 化 目 标 函 数 J ( w ) 将 约 束 条 件 改 写 为 g ( w ) = ∑ i w i 2 − C = 0 我们要在 sum_iw_i^2 leq C 的情况下最小化目标函数 J(w)\ 将约束条件改写为g(w) = sum_iw_i^2-C = 0\ 我们要在i∑​wi2​≤C的情况下最小化目标函数J(w)将约束条件改写为g(w)=i∑​wi2​−C=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)的法向量:(∂w1​∂J​w 1​,∂w2​∂J​w 2​)g(w)的法向量:(∂w1​∂g​w 1​,∂w2​∂g​w 2​)

又因为二者的法向量必定平行,有

λ = ∇ J ( w ) ∇ g ( w ) 即 ∇ J ( w ) − λ ∇ g ( w ) = 0 lambda = frac{nabla J(w)}{nabla g(w)}\ 即 nabla J(w) -lambdanabla g(w) = 0 λ=∇g(w)∇J(w)​即∇J(w)−λ∇g(w)=0

构造一个新函数,
根 据 上 述 结 论 J n e w ( w ) = J o l d ( w ) + λ g ( w ) , 对 这 个 函 数 有   { J w 1 o l d ( w 1 , w 2 ) + λ g w 1 ( w 1 , w 2 ) = 0   J w 2 o l d ( w 1 , w 2 ) + λ g w 2 ( w 1 , w 2 ) = 0   g ( w ) = 0 begin{aligned} &根据上述结论\ &J^{new}(w) = J^{old}(w) + lambda g(w),对这个函数有\ space\ &begin{cases} & J_{w1}^{old}(w_1, w_2) + lambda g_{w1}(w_1, w_2) = 0\ space\ & J_{w2}^{old}(w_1, w_2) + lambda g_{w2}(w_1, w_2) = 0\ space\ & g(w) = 0 end{cases} end{aligned}  ​根据上述结论Jnew(w)=Jold(w)+λg(w),对这个函数有⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧​  ​Jw1old​(w1​,w2​)+λgw1​(w1​,w2​)=0Jw2old​(w1​,w2​)+λgw2​(w1​,w2​)=0g(w)=0​​
其中,g(w)中的 C 我们是超参,我们认为是已知的,因此,实际上上面的方程组可以解出
w 1 0 , w 2 0 , λ w_1^0, w_2^0, lambda w10​,w20​,λ
三个未知数的。而对于 C 和 λ 又是反比关系(例如sklearn中的逻辑回归函数的参数c,就是正则化系数的倒数):

λ = ∣ ∇ J ( w ) ∇ g ( w ) ∣ = ∣ ∇ J ( w ) ∣ ∣ ∇ g ( w ) ∣ = ∣ ∇ J ( w ) ∣ 2 C lambda = |frac{nabla J(w)}{nabla g(w)}| = frac{|nabla J(w)|}{|nabla g(w)|} = frac{|nabla J(w)|}{2sqrt{C}} λ=∣∇g(w)∇J(w)​∣=∣∇g(w)∣∣∇J(w)∣​=2C ​∣∇J(w)∣​

L1、L2正则化

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

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

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

对于L1、L2正则化的几何意义以及解释下面这篇博客讲得就非常详细了。

https://blog.csdn.net/jinping_shi/article/details/52433975

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5689270.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存