本篇博客是作为学习正则化的时候的笔记,难免可能存在一些错误,欢迎各位指出不对的地方。
拉格朗日乘法在介绍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∂Jw 1,∂w2∂Jw 2)g(w)的法向量:(∂w1∂gw 1,∂w2∂gw 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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)