机器学习:线性SVM损失函数转换拉格朗日乘数

线性SVM的拉格朗日对偶函数和决策函数

有了损失函数,就需要对损失函数进行求解。这个求解过程异常复杂,涉及到的数学的难度不是推导损失函数的部分可比。并且,在sklearn当中,我们作为使用者完全无法干涉这个求解的过程。因此作为使用sklearn的人,这部分属于进阶内容。
之前得到了线性SVM损失函数的最初形态:
m i n ω , b ∣ ∣ ω ∣ ∣ 2 2 min_{ω,b}\frac {{||ω||}^2}2 minω,b2ω2
服从
y i ( ω ⋅ x i + b ) ⩾ 1 , i = 1 , 2 , . . . N y_i(ω\cdot x_i+b)\geqslant 1, \quad i=1,2,...N yi(ωxi+b)1,i=1,2,...N
这个损失函数分为两部分:需要最小化的函数,以及参数求解后必须满足的约束条件。这是一个最优化问题。

将损失函数从最初形态转换为拉格朗日乘数形态

Why need

我们的目标是求解让损失函数最小化的ω,但其实很容易看得出来,如果||ω||为0,f(ω)必然最小。但是,||ω||=0其实是一个无效值,因为:首先,决策边界是 ω ⋅ x + b = 0 \boldsymbol{ω\cdot x}+b=0 ωx+b=0,如果ω为0,则这个向量里包含的所有元素都为0,那就有b = 0这个唯一值。然而,如果b和ω都为0,决策边界就不再是一条直线了,函数间隔 y i ( ω ⋅ x i + b ) y_i(\boldsymbol{ω\cdot x_i}+b) yi(ωxi+b)就会为0,条件中的 y i ( ω ⋅ x i + b ) ⩾ 1 y_i(\boldsymbol{ω\cdot x_i}+b)\geqslant1 yi(ωxi+b)1就不可能实现,所以ω不可以是一个0向量。可见,单纯让 f ( ω ) = ∣ ∣ ω ∣ ∣ 2 2 f(ω)=\frac {{||ω||}^2}2 f(ω)=2ω2为0,是不能求解出合理的ω的,我们希望能够找出一种方式,能够让条件 y i ( ω ⋅ x i + b ) ⩾ 1 y_i(\boldsymbol{ω\cdot x_i}+b)\geqslant1 yi(ωxi+b)1在计算中也被纳入考虑,一种业界认可的方法是使用拉格朗日乘数法(standard Lagrange multiplier method)

Why can

损失函数是二次的(quadratic),并且损失函数中的约束条件在参数ω和b下是线性的,求解这样的损失函数被称为“凸优化问题”(convex optimization problem)。拉格朗日乘数法正好可以用来解决凸优化问题,这种方法也是业界常用的,用来解决带约束条件,尤其是带有不等式的约束条件的函数的数学方法。首先第一步,使用拉格朗日乘数来将损失函数改写为考虑了约束条件的形式:
L ( ω , b , α ) = ∣ ∣ ω ∣ ∣ 2 2 − ∑ i = 1 N α i ( y i ( ω ⋅ x i + b ) − 1 ) ( α i ⩾ 0 ) L(ω,b,α)=\frac {{||ω||}^2}2-\sum_{i=1}^Nα_i(y_i(\boldsymbol{ω\cdot x_i}+b)-1)\quad (α_i\geqslant0) L(ω,b,α)=2ω2i=1Nαi(yi(ωxi+b)1)(αi0)
这是一个非常聪明而且巧妙的表达式,它被称为拉格朗日函数,其中αi就叫做拉格朗日乘数。此时,要求解的就不只有参数向量ω和截距b了,也要求解拉格朗日乘数α,而xi和yi都是已知的特征矩阵和标签。

How

拉格朗日函数也分为两部分。第一部分和原始的损失函数一样,第二部分呈现了带不等式的约束条件。我们希望,L(ω,b,α)不仅能够代表原有的损失函数f(ω)和约束条件 y i ( ω ⋅ x i + b ) ⩾ 1 , i = 1 , 2 , . . . N y_i(\boldsymbol{ω\cdot x_i}+b)\geqslant 1, \quad i=1,2,...N yi(ωxi+b)1,i=1,2,...N,还能够表示想要最小化损失函数来求解ω和b的意图,所以要先以α为参数,求解L(ω,b,α)的最大值,再以ω和b为参数,求解L(ω,b,α)的最小值。因此,目标可以写作:
m i n ω , b m a x α i ⩾ 0 L ( ω , b , α ) ( α i ⩾ 0 ) min_{ω,b}max_{α_i\geqslant0}L(ω,b,α)\quad (α_i\geqslant0) minω,bmaxαi0L(ω,b,α)(αi0)
怎么理解这个式子呢?首先,我们第一步先执行max,即L(ω,b,α)最大化,那就有两种情况:
y i ( ω ⋅ x i + b ) > 1 y_i(\boldsymbol{ω\cdot x_i}+b)>1 yi(ωxi+b)>1,函数的第二部分 ∑ i = 1 N α i ( y i ( ω ⋅ x i + b ) − 1 ) \sum_{i=1}^Nα_i(y_i(\boldsymbol{ω\cdot x_i}+b)-1) i=1Nαi(yi(ωxi+b)1)就一定为正,式子 ∣ ∣ ω ∣ ∣ 2 2 \frac {{||ω||}^2}2 2ω2就要减去一个正数,此时若要L(ω,b,α)最大化,则α必须取0。
y i ( ω ⋅ x i + b ) < 1 y_i(\boldsymbol{ω\cdot x_i}+b)<1 yi(ωxi+b)<1,函数的第二部分 ∑ i = 1 N α i ( y i ( ω ⋅ x i + b ) − 1 ) \sum_{i=1}^Nα_i(y_i(\boldsymbol{ω\cdot x_i}+b)-1) i=1Nαi(yi(ωxi+b)1)就一定为负,式子 ∣ ∣ ω ∣ ∣ 2 2 \frac {{||ω||}^2}2 2ω2就要减去一个负数,相当于加上一个正数,此时若要L(ω,b,α)最大化,则α必须取正无穷。
若把函数第二部分当作一个惩罚项来看待,则 y i ( ω ⋅ x i + b ) y_i(\boldsymbol{ω\cdot x_i}+b) yi(ωxi+b)大于1时函数没有受到惩罚,而 y i ( ω ⋅ x i + b ) y_i(\boldsymbol{ω\cdot x_i}+b) yi(ωxi+b)小于1时函数受到了极致的惩罚,即加上了一个正无穷项,函数整体永远不可能取到最小值。所以第二步,执行min的命令,求解函数整体的最小值,永远不能让α必须取到正无穷的状况出现,即是说永远不让 y i ( ω ⋅ x i + b ) < 1 y_i(\boldsymbol{ω\cdot x_i}+b)<1 yi(ωxi+b)<1的状况出现,从而实现了求解最小值的同时让约束条件被满足。
现在, L(ω,b,α)就是新的损失函数了,我们的目标是要通过先最大化,再最小化它来求解参数向量ω和截距b的值

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值