SVM真的是一个让人从入门到放弃的东西,这次把SVM的数学技巧(转化为对偶问题)尝试着写一写,以下内容全是自己一个一个字码的,插图也是自己绘制的,有什么事可以留言~
2-1 回顾Hard Margin SVM的原问题
上一篇文章以线性可分的数据集为例,讲解了Hard Margin SVM算法的核心思想,简单来说就是两句话,在保证所有样本分类正确的前提下,尽可能大的分类间隔。
由此我们就推出了Hard Margin SVM的原问题:
min
ω
∣
∣
ω
∣
∣
2
2
\min \limits_{\bold{\omega}}\frac{||\omega||^2}{2}
ωmin2∣∣ω∣∣2
s
.
t
.
y
(
i
)
(
ω
T
x
(
i
)
+
b
)
⩾
1
i=1,2,...m
s.t.\quad y^{(i)}(\bold{\omega}^T\bold{x^{(i)}}+b)\geqslant1 \quad\text{i=1,2,...m}
s.t.y(i)(ωTx(i)+b)⩾1i=1,2,...m
这个原问题是不好求解的,因为它带有m的不等式约束的最优化问题,为了方便求解,我们要将其转化为拉格朗日对偶问题。所以这一篇文章的主题就是将如何将Hard Margin SVM的原问题转换为拉格朗日对偶问题,以及我们为什么要做这样的转换。
2-2 从原问题到拉格朗日对偶问题
首先,我们先补一下拉格朗日对偶问题的相关知识,例如怎么构造拉格朗日对偶问题,为什么要构造拉格朗日对偶问题,对偶问题与原问题是什么关系。
因为这部分内容我并没有在大学里系统学习过,都是在网上找的只言片语拼凑而成,所以有问题,还请指正。在此我仅讲下我自己的理解。
2-2-1 拉格朗日乘数法 -> 广义的拉格朗日乘子函数 ->拉格朗日对偶问题
2-2-1-1 如何使用拉格朗日乘数法
在高等数学中我们学习过拉格朗日乘数法,它是解决带有若干等式约束的极值问题的工具。
带有如果等式约束的极值问题用数学符号表示就是:
min
x
f
(
x
)
s
.
t
.
h
i
(
x
)
=
0
i=1,2,...p
\min \limits_{\bold{x}} f(\bold{x})\\ s.t. \quad h_i(\bold{x})=0 \quad \text{i=1,2,...p}
xminf(x)s.t.hi(x)=0i=1,2,...p
其中有i个等式约束,x是一个向量,可以表示多个未知数。
为了方便讲解和理解,我们举个简单的例子:
比如我们要最优化的问题是:
min
x
,
y
f
(
x
,
y
)
=
x
2
+
(
y
−
5
)
2
s
.
t
.
x
2
+
y
2
=
6
\min \limits_{x,y} f(x,y)=x^2+(y-5)^2\\ s.t. \quad x^2+y^2=6
x,yminf(x,y)=x2+(y−5)2s.t.x2+y2=6
我们可以通过换元法,很容易的得到上式最小化的结果:
当
x
=
0
,
y
=
6
x=0,y=\sqrt{6}
x=0,y=6时,取得
f
(
x
,
y
)
f(x,y)
f(x,y)的最小值,为
31
−
10
6
31-10\sqrt{6}
31−106
当然也可以使用拉格朗日乘数法,它的步骤为:
1.为每一个等式约束设置一个拉格朗日乘子变量
2.构造拉格朗日乘子函数
L
(
x
,
λ
)
=
f
(
x
)
+
∑
i
=
1
p
λ
i
h
i
(
x
)
L(\bold{x},\bold{\lambda})=f(x)+\sum \limits_{i=1}^p\lambda_ih_i(x)
L(x,λ)=f(x)+i=1∑pλihi(x)
3.对拉格朗日乘子函数中的每个变量求偏导,令其=0,求得极值点
针对我们的问题,根据上面的步骤一步步来
1.首先要最优化的函数是:
f
(
x
,
y
)
=
x
2
+
(
y
−
5
)
2
f(x,y)=x^2+(y-5)^2
f(x,y)=x2+(y−5)2
其中等式约束只有一个,所以我们只需要设置一个拉格朗日乘子变量
λ
\lambda
λ
2.构造拉格朗日乘子函数:
L
(
x
,
y
,
λ
)
=
f
(
x
,
y
)
+
λ
(
x
2
+
y
2
−
6
)
L(x,y,\lambda)=f(x,y)+\lambda(x^2+y^2-6)
L(x,y,λ)=f(x,y)+λ(x2+y2−6)
3.对拉格朗日乘子函数中的每一个变量求偏导
∂
L
(
x
,
y
,
λ
)
∂
x
=
(
2
+
2
λ
)
x
∂
L
(
x
,
y
,
λ
)
∂
y
=
(
2
+
2
λ
)
y
−
5
∂
L
(
x
,
y
,
λ
)
∂
λ
=
x
2
+
y
2
−
6
\begin{aligned} \frac{\partial L(x,y,\lambda)}{\partial x}= & (2+2\lambda)x \\ \frac{\partial L(x,y,\lambda)}{\partial y}= & (2+2\lambda)y-5 \\ \frac{\partial L(x,y,\lambda)}{\partial \lambda}=& x^2+y^2-6 \end{aligned}
∂x∂L(x,y,λ)=∂y∂L(x,y,λ)=∂λ∂L(x,y,λ)=(2+2λ)x(2+2λ)y−5x2+y2−6
令每一个偏导数为0
即
(
2
+
2
λ
)
x
=
0
(
2
+
2
λ
)
y
−
5
=
0
x
2
+
y
2
−
6
=
0
\begin{aligned} (2+2\lambda)x=0 \\ (2+2\lambda)y-5=0 \\ x^2+y^2-6=0 \end{aligned}
(2+2λ)x=0(2+2λ)y−5=0x2+y2−6=0
求解方程组,解为:
x
=
0
,
y
=
6
,
λ
=
5
2
6
−
1
x=0,y=\sqrt{6},\lambda=\frac{5}{2\sqrt{6}}-1
x=0,y=6,λ=265−1
这个结果和我们刚刚用换元法求得的结果是一致的。
2-2-1-2 构造广义的拉格朗日乘子函数
刚刚说明的拉格朗日乘数法只能求解带有等式约束的最值问题,但如果碰到的最值问题不仅带有等式约束还带有不等式约束怎么办呢?这时就可以构造广义的拉格朗日乘子函数。
所以,这时我们遇到的原问题用数学符号来表达就是:
min
x
f
(
x
)
s
.
t
.
h
i
(
x
)
=
0
i=1,2,...p
g
i
(
x
)
⩽
0
i=1,2,...m
\min \limits_{\bold{x}} f(\bold{x})\\ \begin{aligned} s.t. & \quad h_i(\bold{x})=0 &\text{i=1,2,...p}\\ & \quad g_i(\bold{x}) \leqslant0 &\text{i=1,2,...m}\\ \end{aligned}
xminf(x)s.t.hi(x)=0gi(x)⩽0i=1,2,...pi=1,2,...m
此时广义拉格朗日乘子函数的构造方法和之前类似,还是要为每一个约束添加一个拉格朗日乘子变量,即:
L
(
x
,
λ
,
ν
)
=
f
(
x
)
+
∑
i
=
1
p
λ
i
h
i
(
x
)
+
∑
j
=
1
m
ν
j
g
j
(
x
)
L(\bold{x},\bold{\lambda},\bold{\nu})=f(\bold{x})+\sum \limits_{i=1}^p\lambda_ih_i(\bold{x})+\sum \limits_{j=1}^m\nu_jg_j(\bold{x})
L(x,λ,ν)=f(x)+i=1∑pλihi(x)+j=1∑mνjgj(x)
2-2-1-3 拉格朗日对偶问题
拉格朗日对偶问题是在广义拉格朗日函数的基础上构造的,可以简单理解为是分步求 L ( x , λ , ν ) L(\bold{x},\bold{\lambda},\bold{\nu}) L(x,λ,ν)的极值
拉格朗日对偶问题:
max
λ
,
ν
min
x
L
(
x
,
λ
,
ν
)
\max \limits_{\bold{\lambda,\nu}} \min \limits_{\bold{x}} L(\bold{x},\bold{\lambda},\bold{\nu})
λ,νmaxxminL(x,λ,ν)
求解分为两步:
1先固定拉格朗日乘子变量,调整x,让函数取极小值
2再变动拉格朗日乘子变量,让函数取极大值
对于第一步,让函数取极小值的x的求解方式:
可以通过对x求偏导,让其等于0
其中还存在两个注意事项:
1为了让原问题与拉格朗日对偶问题相对应,则不等式约束前的拉格朗日乘子变量要添加一个限定条件:
ν
⩾
0
\nu \geqslant0
ν⩾0
后面也会涉及到这个约束的用途。
2不等式约束的要统一写成
⩾
0
\geqslant0
⩾0的形式,如果原不等式约束是
⩽
0
\leqslant0
⩽0则只需要✖️-1
2-2-1-4 对比原问题与拉格朗日对偶问题
我们总结下原问题与拉格朗日对偶问题
原问题:
min
x
f
(
x
)
s
.
t
.
h
i
(
x
)
=
0
i=1,2,...p
g
i
(
x
)
⩽
0
i=1,2,...m
\min \limits_{\bold{x}} f(\bold{x})\\ \begin{aligned} s.t. & \quad h_i(\bold{x})=0 &\text{i=1,2,...p}\\ & \quad g_i(\bold{x}) \leqslant0 &\text{i=1,2,...m}\\ \end{aligned}
xminf(x)s.t.hi(x)=0gi(x)⩽0i=1,2,...pi=1,2,...m
拉格朗日对偶问题:
max
λ
,
ν
min
x
L
(
x
,
λ
,
ν
)
=
f
(
x
)
+
∑
i
=
1
p
λ
i
h
i
(
x
)
+
∑
j
=
1
m
ν
j
g
j
(
x
)
s
.
t
.
ν
i
⩾
0
i=1,2,...m
\max \limits_{\bold{\lambda,\nu}} \min \limits_{\bold{x}} L(\bold{x},\bold{\lambda},\bold{\nu})=f(\bold{x})+\sum \limits_{i=1}^p\lambda_ih_i(\bold{x})+\sum \limits_{j=1}^m\nu_jg_j(\bold{x})\\ s.t. \quad\nu_i \geqslant0\quad \text{i=1,2,...m}
λ,νmaxxminL(x,λ,ν)=f(x)+i=1∑pλihi(x)+j=1∑mνjgj(x)s.t.νi⩾0i=1,2,...m
接下来就会有两个问题,为什么要转化为对偶问题以及原问题与对偶问题的关系
2-2-2 为什么要转化为拉格朗日对偶问题来求解
肯定是因为拉格朗日对偶问题更好求解,所以我们将原问题转化过来,那具体有什么优点呢?
2-2-2-1 拉格朗日对偶问题的特点(优点)
这部分主要就是为拉格朗日对偶问题打call,讲讲其优点。
归结起来,优点有2:
- 约束变得简单了:
从原本的既有等式约束又有不等式约束 到 只有不等式约束,肉眼可见得变简单了 - 拉格朗日对偶问题是凸优化问题:
只有一个全局极值点
第二个优点简直是太棒了,但这是一个肉眼不可见的优点,所以需要我们的证明
2-2-2-2 证明拉格朗日对偶问题是凸优化问题
要证明拉格朗日对偶问题是凸优化问题,就得先明确什么是凸优化问题,凸优化问题有什么特点。
2-2-2-2-1 什么是凸优化问题
如果一个最优化问题满足以下两个条件,就是凸优化问题:
- 可行域是凸集
- 目标函数是凸函数
这时候就由出现了两个子问题,什么是凸集和凸函数
2-2-2-2-1-1 凸集
凸集合的定义为,如果一个集合C中的任意两点x、y,他们连线上任意一点也属于集合C,则集合C为凸集。
画个示意图解释下:
示意图 | 是否为凸集 | 判断理由 |
---|---|---|
是 | 集合内的任意两点的连线上的任何点都在集合内 | |
否 | 集合内x,y两点的连线并不在集合内 |
如何证明一个集合是凸集呢?
最常用的方法就是定义法:
凸集定义的语言表述 | 凸集定义的数学表述 |
---|---|
如果任意的x,y属于集合C, 且x,y连线上的任意一点也属于集合C, 则为集合C为凸集 | 设
x
,
y
∈
C
x,y\in C
x,y∈C if θ x + ( 1 − θ ) y ∈ C , ∀ θ ∈ [ 0 , 1 ] \theta x+(1-\theta)y\in C,\quad \forall \theta\in[0,1] θx+(1−θ)y∈C,∀θ∈[0,1] 则C为凸集 |
其中 θ x + ( 1 − θ ) y , ∀ θ ∈ [ 0 , 1 ] \theta x+(1-\theta)y,\quad \forall \theta\in[0,1] θx+(1−θ)y,∀θ∈[0,1]表示x,y连线上的任意一点
常见的那些集合为凸集呢?
1.
R
n
R^n
Rn
2.线性等式约束,即
{
x
∈
R
n
:
A
x
+
b
=
0
}
\{\bold{x}\in R^n:A\bold{x}+b=0\}
{x∈Rn:Ax+b=0}
3.线性不等式约束,即
{
x
∈
R
n
:
A
x
⩽
b
}
\{\bold{x}\in R^n:A\bold{x}\leqslant b\}
{x∈Rn:Ax⩽b}
4.
C
1
,
C
2
,
.
.
.
C
n
C1,C2,...C_n
C1,C2,...Cn都是凸集,则他们的交集(
⋂
i
=
1
k
C
i
\bigcap\limits_{i=1}^kC_i
i=1⋂kCi)也是凸集
简单证明线性不等式约束也是凸集,毕竟我们现在首要解决的是拉格朗日对偶问题是凸优化问题。
[证明]:
设
x
,
y
∈
C
x,y\in C
x,y∈C,
所以:
A
x
⩽
b
,
A
y
⩽
b
Ax\leqslant b,Ay\leqslant b
Ax⩽b,Ay⩽b
x,y连线上的一点为
θ
x
+
(
1
−
θ
)
y
,
∀
θ
∈
[
0
,
1
]
\theta x+(1-\theta)y,\quad \forall \theta\in[0,1]
θx+(1−θ)y,∀θ∈[0,1]
A
(
θ
x
+
(
1
−
θ
)
y
)
=
A
θ
x
+
A
y
−
A
θ
y
⩽
b
θ
+
b
−
b
θ
=
b
A(\theta x+(1-\theta)y)=A\theta x+Ay-A\theta y\leqslant b\theta+b-b\theta=b
A(θx+(1−θ)y)=Aθx+Ay−Aθy⩽bθ+b−bθ=b
所以x,y连线上的任意一点也在集合C中,
故线性不等式约束为凸集
所以拉格朗日对偶问题的可行域是凸集
2-2-2-2-1-2 凸函数
凸函数的定义:如果函数上 任意两点AB的连线上的点C‘ 大于这个点C’对应的函数值C,则函数为凸函数
定义看起来比较古怪,画个示意图:
用数学符号来表示就是:
y
C
′
=
θ
f
(
A
)
+
(
1
−
θ
)
f
(
B
)
y_{C'}=\theta f(A) +(1-\theta)f(B)
yC′=θf(A)+(1−θ)f(B)
y
C
=
f
(
θ
A
+
(
1
−
θ
)
B
)
y_C=f( \theta A+(1-\theta)B )
yC=f(θA+(1−θ)B)
y
C
′
>
y
C
,
∀
θ
∈
[
0
,
1
]
y_{C'}>y_C,\forall \theta\in[0,1]
yC′>yC,∀θ∈[0,1]
凸函数的证明方法有:
- 定义
- 一阶判别法
- 二阶判别法
拉格朗日对偶函数是一个凹函数,当然凹函数和凸函数就差一个符号而已,所以凹函数的定义就是:
f
(
θ
A
+
(
1
−
θ
)
B
)
⩾
θ
f
(
A
)
+
(
1
−
θ
)
f
(
B
)
f( \theta A+(1-\theta)B ) \geqslant \theta f(A) +(1-\theta)f(B)
f(θA+(1−θ)B)⩾θf(A)+(1−θ)f(B)
我们可以使用凹函数的定义判定出拉格朗日对偶函数就是一个凹函数,证明过程见下:
[证明]:
拉格朗日对偶函数写为
g
(
λ
,
ν
)
=
min
x
L
(
x
,
λ
,
ν
)
g(\lambda,\nu)=\min\limits_{x}L(x,\lambda,\nu)
g(λ,ν)=xminL(x,λ,ν)
设
A点为
[
λ
A
ν
A
]
\begin{bmatrix} \lambda_A \\ \nu_A \end{bmatrix}
[λAνA]
B点为 [ λ B ν B ] \begin{bmatrix} \lambda_B \\ \nu_B \end{bmatrix} [λBνB]
根据凹函数定义,就是要证明:
g
(
θ
A
+
(
1
−
θ
)
B
)
⩾
θ
g
(
A
)
+
(
1
−
θ
)
g
(
B
)
g(\theta A+(1-\theta)B) \geqslant \theta g(A)+(1-\theta)g(B)
g(θA+(1−θ)B)⩾θg(A)+(1−θ)g(B)
根据对偶函数的定义可知,拉格朗日对偶函数是广义拉格朗日函数
L
(
x
,
λ
,
ν
)
L(x,\lambda,\nu)
L(x,λ,ν)把
λ
,
ν
\lambda,\nu
λ,ν当作常量,x变化为最小值,如果拉格朗日函数没有最小值,可以认为最小值为
−
∞
-\infin
−∞,所以可以把对偶函数按照下面的方式表达:
g
(
λ
,
ν
)
=
min
{
L
(
x
1
,
λ
,
ν
)
,
L
(
x
2
,
λ
,
ν
)
,
L
(
x
1
,
λ
,
ν
)
,
.
.
.
,
L
(
x
n
,
λ
,
ν
)
,
n
=
+
∞
}
g(\lambda,\nu) = \min\{ L(x_1,\lambda,\nu),L(x_2,\lambda,\nu),L(x_1,\lambda,\nu),...,L(x_n,\lambda,\nu),\quad n=+\infin \}
g(λ,ν)=min{L(x1,λ,ν),L(x2,λ,ν),L(x1,λ,ν),...,L(xn,λ,ν),n=+∞}
即无穷多个x变化时,拉格朗日函数的最小值。
所以我们要证明的就是:
(公式1)
g
(
θ
A
+
(
1
−
θ
)
B
)
=
min
{
L
(
x
1
,
θ
A
+
(
1
−
θ
)
B
)
,
L
(
x
2
,
θ
A
+
(
1
−
θ
)
B
)
,
.
.
.
,
L
(
x
n
,
θ
A
+
(
1
−
θ
)
B
)
}
,
n
=
+
∞
g(\theta A+(1-\theta)B) = \min \{ \textcolor{blue}{L(x_1,\theta A+(1-\theta)B)},L(x_2,\theta A+(1-\theta)B),...,L(x_n,\theta A+(1-\theta)B)\},\quad n=+\infin \tag{公式1}
g(θA+(1−θ)B)=min{L(x1,θA+(1−θ)B),L(x2,θA+(1−θ)B),...,L(xn,θA+(1−θ)B)},n=+∞(公式1)
(公式2)
⩾
min
{
θ
L
(
x
1
,
A
)
+
(
1
−
θ
)
L
(
x
1
,
B
)
,
L
(
x
2
,
A
)
+
(
1
−
θ
)
L
(
x
2
,
B
)
,
.
.
.
,
L
(
x
n
,
A
)
+
(
1
−
θ
)
L
(
x
n
,
B
)
}
\geqslant \min \{ \textcolor{blue}{\theta L(x_1,A)+(1-\theta)L(x_1,B)},L(x_2,A)+(1-\theta)L(x2,B),...,L(x_n,A)+(1-\theta)L(x_n,B)\} \tag{公式2}
⩾min{θL(x1,A)+(1−θ)L(x1,B),L(x2,A)+(1−θ)L(x2,B),...,L(xn,A)+(1−θ)L(xn,B)}(公式2)
(公式3)
⩾
θ
min
{
L
(
x
1
,
A
)
,
L
(
x
2
,
A
)
,
.
.
.
L
(
x
n
,
A
)
}
+
(
1
−
θ
)
min
{
L
(
x
1
,
B
)
,
L
(
x
2
,
B
)
,
.
.
.
L
(
x
n
,
B
)
}
\geqslant \theta\min\{L(x_1,A),L(x_2,A),...L(x_n,A)\}+(1-\theta)\min \{ L(x_1,B),L(x_2,B),...L(x_n,B)\} \tag{公式3}
⩾θmin{L(x1,A),L(x2,A),...L(xn,A)}+(1−θ)min{L(x1,B),L(x2,B),...L(xn,B)}(公式3)
(公式4)
=
θ
g
(
A
)
+
(
1
−
θ
)
g
(
B
)
=\theta g(A)+(1-\theta)g(B)\tag{公式4}
=θg(A)+(1−θ)g(B)(公式4)
得证
在这个证明过程中,需要解释下从公式1->公式2和公式2->公式3
公式1->公式2
我们单独取出一项来,其实就是要解释,为什么
L
(
x
1
,
θ
A
+
(
1
−
θ
)
B
)
⩾
θ
L
(
x
1
,
A
)
+
(
1
−
θ
)
L
(
x
1
,
B
)
L(x_1,\theta A+(1-\theta)B)\geqslant \theta L(x_1,A)+(1-\theta)L(x_1,B)
L(x1,θA+(1−θ)B)⩾θL(x1,A)+(1−θ)L(x1,B)
如果 L ( x 1 , λ , ν ) L(x_1,\lambda,\nu) L(x1,λ,ν)是个凹函数,自然就成立了,而 L ( x 1 , λ , ν ) L(x_1,\lambda,\nu) L(x1,λ,ν)确实是个凹函数。因为在 L ( x 1 , λ , ν ) = f ( x 1 ) + ∑ i = 1 p λ i h i ( x 1 ) + ∑ j = 1 m ν j g j ( x 1 ) L(x_1,\lambda,\nu)=f(x_1)+\sum \limits_{i=1}^p\lambda_ih_i(x_1)+\sum \limits_{j=1}^m\nu_jg_j(x_1) L(x1,λ,ν)=f(x1)+i=1∑pλihi(x1)+j=1∑mνjgj(x1)中,由于x是固定的,所以可以把 L ( x 1 , λ , ν ) L(x_1,\lambda,\nu) L(x1,λ,ν)看作是关于 λ , ν \lambda,\nu λ,ν的线性函数(仿射函数)。线性函数是即凹由凸的,所以从公式1->公式2成立。
公式2->公式3
应用
min
{
a
+
b
}
⩾
min
{
a
}
+
min
{
b
}
\min\{a+b\} \geqslant \min\{a\}+\min\{b\}
min{a+b}⩾min{a}+min{b}
所以我们得到了一个非常重要的结论,就是原函数是不是凸函数,拉格朗日对偶函数一定是凹函数。
2-2-3 拉格朗日对偶问题与原问题的关系
前面说到拉格朗日对偶问题相对于原问题的求解来说,是凸优化问题,同时约束变简单了。但我们的原问题和拉格朗日对偶问题是什么关系呢?换句话说,拉格朗日对偶问题的最优值是不是原问题的最优值呢?
答案是 不一定
我们假设原问题的最优值为
p
∗
p^*
p∗即:
p
∗
=
min
x
f
(
x
)
p^*=\min\limits_{x}f(x)
p∗=xminf(x)
同时假设对偶问题的最优值为
d
∗
d^*
d∗即:
d
∗
=
max
λ
,
ν
min
x
L
(
x
,
λ
,
ν
)
=
max
λ
,
ν
min
x
f
(
x
)
+
∑
i
=
1
p
λ
i
h
i
(
x
)
+
∑
j
=
1
m
ν
j
g
j
(
x
)
d^*=\max\limits_{\lambda,\nu}\min\limits_{x}L(x,\lambda,\nu)=\max\limits_{\lambda,\nu}\min\limits_{x} f(\bold{x})+\sum \limits_{i=1}^p\lambda_ih_i(\bold{x})+\sum \limits_{j=1}^m\nu_jg_j(\bold{x})
d∗=λ,νmaxxminL(x,λ,ν)=λ,νmaxxminf(x)+i=1∑pλihi(x)+j=1∑mνjgj(x)
s
.
t
.
ν
i
⩾
0
i=1,2,...m
s.t. \quad\nu_i \geqslant0\quad \text{i=1,2,...m}
s.t.νi⩾0i=1,2,...m
先直接给出结论:
对偶问题的最优值
d
∗
d^*
d∗一定小于等于原问题的最优值
p
∗
p^*
p∗
我们把原问题与对偶问题的这个关系称为弱对偶定理
2-2-3-1 弱对偶定理
弱对偶定理是很好证明的,接下来给出证明过程。
[证明:弱对偶定理成立]:
假设
X
~
\widetilde{X}
X
为原问题的可行解,即
X
~
\widetilde{X}
X
满足原问题的约束:
h
i
(
X
~
)
=
0
i
=
1
,
2
,
.
.
.
p
h_i(\widetilde{X})=0\quad i=1,2,...p
hi(X
)=0i=1,2,...p
g
i
(
X
~
)
⩽
0
i
=
1
,
2
,
.
.
.
m
g_i(\widetilde{X})\leqslant0\quad i=1,2,...m
gi(X
)⩽0i=1,2,...m
则
L
(
X
~
,
λ
,
ν
)
=
f
(
X
~
)
+
∑
i
=
1
p
λ
i
h
i
(
X
~
)
+
∑
j
=
1
m
ν
j
g
j
(
X
~
)
L(\widetilde{X},\lambda,\nu)=f(\widetilde{X})+\sum \limits_{i=1}^p\lambda_ih_i(\widetilde{X})+\sum \limits_{j=1}^m\nu_jg_j(\widetilde{X})
L(X
,λ,ν)=f(X
)+i=1∑pλihi(X
)+j=1∑mνjgj(X
)
其中
h
i
(
X
~
)
=
0
,
g
i
(
X
~
)
⩽
0
且
ν
i
⩾
0
h_i(\widetilde{X})=0,g_i(\widetilde{X})\leqslant0且\nu_i\geqslant0 \quad
hi(X
)=0,gi(X
)⩽0且νi⩾0
所以
L
(
X
~
,
λ
,
ν
)
⩽
f
(
X
~
)
L(\widetilde{X},\lambda,\nu)\leqslant f(\widetilde{X})
L(X
,λ,ν)⩽f(X
)
∴
g
(
λ
,
ν
)
=
min
x
L
(
x
,
λ
,
ν
)
⩽
L
(
X
~
,
λ
,
ν
)
⩽
f
(
X
~
)
\therefore g(\lambda,\nu)=\min\limits_{x}L(x,\lambda,\nu)\leqslant L(\widetilde{X},\lambda,\nu)\leqslant f(\widetilde{X})
∴g(λ,ν)=xminL(x,λ,ν)⩽L(X
,λ,ν)⩽f(X
)
∵
\because
∵对于任何一个可行点,都有
g
(
λ
,
ν
)
⩽
f
(
X
~
)
g(\lambda,\nu)\leqslant f(\widetilde{X})
g(λ,ν)⩽f(X
)
∴
g
(
λ
,
ν
)
⩽
p
∗
\therefore g(\lambda,\nu)\leqslant p^*
∴g(λ,ν)⩽p∗
而
d
∗
=
max
λ
,
ν
g
(
λ
,
ν
)
d^*=\max\limits_{\lambda,\nu}g(\lambda,\nu)
d∗=λ,νmaxg(λ,ν)
而整个
g
(
λ
,
ν
)
g(\lambda,\nu)
g(λ,ν)函数都在
p
∗
p^*
p∗的下方,
∴
d
∗
⩽
p
∗
\therefore d^* \leqslant p^*
∴d∗⩽p∗
画一个简单的
g
(
λ
,
ν
)
g(\lambda,\nu)
g(λ,ν)与
p
∗
p^*
p∗的示意图
同时定义
p
∗
−
d
∗
p^*-d^*
p∗−d∗为对偶间隙,
根据弱对偶定理,我们知道
p
∗
−
d
∗
⩽
0
p^*-d^*\leqslant0
p∗−d∗⩽0
但似乎就有这样一个问题,原问题与对偶问题并不等价,我们只能通过对偶问题找到原问题的下界。如果 p ∗ = d ∗ p^*=d^* p∗=d∗就好了。
确实 d ∗ d^* d∗有等于 p ∗ p^* p∗的时候,这时我们称之为强对偶,但是强对偶是有其成立的条件的,接下来我们讨论更有用的强对偶。
2-2-3-2 强对偶
某些情况下,原问题与对偶问题有相同的最优值,也就是强对偶成立的一种情况就是满足Slater条件。
Slater条件主要有2个要素:
- 原问题是凸优化问题
也就是f(x)是凸函数,且可行域是凸集 - 至少存在一个x,严格满足等式约束和不等式约束
也就是意味着存在x,使得 h ( x ) = 0 h(x)=0 h(x)=0同时 g ( x ) < 0 g(x)<0 g(x)<0(即不等号不取等号,不在边界取点)
Slater条件是强对偶成立的充分条件而不是必要条件,也就是说,还有其他情况也可以使得强对偶成立。
但这里还有一个问题,我们的目标是 min x f ( x ) \min_x f(x) minxf(x),我们最终不仅要知道 f ( x ) f(x) f(x)的最优值即 min f ( x ) \min f(x) minf(x),还需要知道此时对应的最优解 x x x的值。
而在强对偶成立的时候,不仅原问题与对偶问题有相同的最优值,其最优解也是相同的。在此我们证明一下这个结论。
[证明:在强对偶成立的情况下,原问题的最优解就是对偶问题的最优解]:
记
X
∗
X^*
X∗为原问题的最优点
(
λ
∗
,
ν
∗
)
(\lambda^*,\nu^*)
(λ∗,ν∗)为对偶问题的最优点
(因为强对偶成立) f ( X ∗ ) = g ( λ ∗ , ν ∗ ) f(X^*)=g(\lambda^*,\nu^*)\tag{因为强对偶成立} f(X∗)=g(λ∗,ν∗)(因为强对偶成立) = min x ( f ( x ) + ∑ i = 1 p λ i ∗ h i ( x ) + ∑ j = 1 m ν j ∗ g j ( x ) ) =\min\limits_x\big(f(x)+\sum \limits_{i=1}^p\lambda^*_ih_i(x)+\sum \limits_{j=1}^m\nu^*_jg_j(x)\big) =xmin(f(x)+i=1∑pλi∗hi(x)+j=1∑mνj∗gj(x)) (因为上面是取最小的) ⩽ f ( X ∗ ) + ∑ i = 1 p λ i ∗ h i ( X ∗ ) + ∑ j = 1 m ν j ∗ g j ( X ∗ ) \leqslant f(X^*)+\sum \limits_{i=1}^p\lambda^*_ih_i(X^*)+\sum \limits_{j=1}^m\nu^*_jg_j(X^*)\tag{因为上面是取最小的} ⩽f(X∗)+i=1∑pλi∗hi(X∗)+j=1∑mνj∗gj(X∗)(因为上面是取最小的) (因为X*满足原问题的约束) ⩽ f ( X ∗ ) \leqslant f(X^*) \tag{因为X*满足原问题的约束} ⩽f(X∗)(因为X*满足原问题的约束)
得到结论:
- 原问题的最优点 X ∗ X^* X∗是使得 min x L ( x , λ , ν ) \min\limits_x L(x,\lambda,\nu) xminL(x,λ,ν)的极小点
-
∑
i
=
1
m
ν
i
∗
g
i
(
X
∗
)
=
0
\sum\limits_{i=1}^m\nu^*_i g_i(X^*)=0
i=1∑mνi∗gi(X∗)=0
这个条件又名松弛互补条件,之后在KKT条件中还会在见到。
因为只有满足这个条件,在上式的推导过程中,才能得到 f ( X ∗ ) = f ( X ∗ ) f(X^*)=f(X^*) f(X∗)=f(X∗),所以对于原问题的最优点来说,一定要满足这个条件。
进一步理解松弛互补条件
由于原问题的限定条件,所以
ν
i
∗
g
(
X
∗
)
\nu_i^*g(X^*)
νi∗g(X∗)每项都是小于等于0的,那如果想要加和项为0的话,则需要每一项都等于0,也就是
ν
i
∗
g
(
X
∗
)
\nu_i^*g(X^*)
νi∗g(X∗)=0。
再进一步分析可得,让每一项=0,其实可以分为两种情况
{
ν
i
∗
>
0
if
g
(
X
∗
)
=
0
o
r
g
(
X
∗
)
<
0
if
ν
i
∗
=
0
\begin{cases} \nu_i^*>0 &\text{ if }g(X^*)=0\\ or\\ g(X^*)<0 &\text{ if }\nu_i^*=0 \end{cases}
⎩⎪⎨⎪⎧νi∗>0org(X∗)<0 if g(X∗)=0 if νi∗=0
松弛互补条件是建立在强对偶的前提下的对不等式约束的说明,帮助我们求解最优解。
2-3 将Hard Margin SVM的原问题转换为拉格朗日对偶问题
前面我们已经知道了,如果原问题满足Slater条件,那么强对偶成立,也就是求得对偶问题的最优解,就得到了原问题的最优解。
既然我们要把Hard Margin SVM的原问题转换为拉格朗日对偶问题,首先就要判断下,对于Hard Margin SVM的原问题,强对偶是否成立。
2-3-1 证明Hard Margin SVM的原问题满足Slater条件,强对偶成立
原问题为:
min
ω
∣
∣
ω
∣
∣
2
2
\min \limits_{\bold{\omega}}\frac{||\omega||^2}{2}
ωmin2∣∣ω∣∣2
s
.
t
.
y
(
i
)
(
ω
T
x
(
i
)
+
b
)
⩾
1
i=1,2,...m
s.t.\quad y^{(i)}(\bold{\omega}^T\bold{x^{(i)}}+b)\geqslant1 \quad\text{i=1,2,...m}
s.t.y(i)(ωTx(i)+b)⩾1i=1,2,...m
回忆下,Slater条件的2个要素:
- 原问题是凸优化问题
也就是f(x)是凸函数,且可行域是凸集 - 至少存在一个x,严格满足等式约束和不等式约束
也就是意味着存在x,使得 h ( x ) = 0 h(x)=0 h(x)=0同时 g ( x ) < 0 g(x)<0 g(x)<0(即不等号不取等号,不在边界取点)
2-3-1-1 证明要素1:原问题是凸优化问题
可行域为线性不等式约束,所以一定为凸集
目标函数是典型的凸函数
2-3-1-2 证明要素2:至少存在一个(w,b),严格满足等式约束和不等式约束
在Hard Margin SVM问题中,只有不等式约束,所以我们证明存在一个(w,b)能严格满足不等式约束即可。
因为目前我们要解决的问题的数据集是线性可分的,所以一定存在一个可行解(w,b),使得:
y
(
i
)
(
w
T
x
(
i
)
+
b
)
⩾
1
y^{(i)}(w^Tx^{(i)}+b) \geqslant1
y(i)(wTx(i)+b)⩾1
由于(2w,2b)也是可行解
∴
2
y
(
i
)
(
w
T
x
(
i
)
+
b
)
⩾
2
>
1
\therefore 2y^{(i)}(w^Tx^{(i)}+b) \geqslant2>1
∴2y(i)(wTx(i)+b)⩾2>1
因此存在可行解使得不等式约束严格满足
Hard Margin SVM的原问题满足Slater条件,强对偶成立
2-3-2 SVM对偶问题的推导
先梳理下从原问题到对偶问题的推导流程:
2-3-2-1 构造广义拉格朗日函数
原问题:
min
ω
∣
∣
ω
∣
∣
2
2
\min \limits_{\bold{\omega}}\frac{||\omega||^2}{2}
ωmin2∣∣ω∣∣2
s
.
t
.
y
(
i
)
(
ω
T
x
(
i
)
+
b
)
⩾
1
i=1,2,...m
s.t.\quad y^{(i)}(\bold{\omega}^T\bold{x^{(i)}}+b)\geqslant1 \quad\text{i=1,2,...m}
s.t.y(i)(ωTx(i)+b)⩾1i=1,2,...m
针对m个不等式约束,设置m个拉格朗日乘子 α = [ α 1 , α 2 , . . . α m ] T \alpha=[\alpha_1,\alpha_2,...\alpha_m]^T α=[α1,α2,...αm]T,且 α i ⩾ 0 i = 1 , 2 , . . . , m \alpha_i\geqslant0\quad i=1,2,...,m αi⩾0i=1,2,...,m
由于我们要求不等式约束的形式为
g
(
x
)
⩽
0
g(x)\leqslant0
g(x)⩽0,所以需要对原有的不等式约束进行变形,转化为:
1
−
y
(
i
)
(
w
T
x
(
i
)
+
b
)
⩽
0
1-y^{(i)}(w^Tx^{(i)}+b)\leqslant0
1−y(i)(wTx(i)+b)⩽0
所以拉格朗日函数为:
L
(
w
,
b
,
α
)
=
1
2
w
T
w
−
∑
i
=
1
m
α
i
(
y
(
i
)
(
w
T
x
(
i
)
+
b
)
−
1
)
L(w,b,\alpha)=\frac{1}{2}w^Tw-\sum\limits_{i=1}^m\alpha_i\big(y^{(i)}(w^Tx^{(i)}+b)-1\big)
L(w,b,α)=21wTw−i=1∑mαi(y(i)(wTx(i)+b)−1)
2-3-2-2 求解对偶问题
因为满足Slater条件,强对偶成立,原问题与对偶问题有相同的最优解,故我们将求解的目光集中到对偶问题中。
对偶问题是先调整变量x,使得拉格朗日函数最小,在调整拉格朗日乘子,使得函数最大。对应我们的问题就是:
max
α
min
w
,
b
L
(
w
,
b
,
α
)
\max\limits_{\alpha}\min\limits_{w,b}L(w,b,\alpha)
αmaxw,bminL(w,b,α)
首先求解令 L ( w , b , α ) L(w,b,\alpha) L(w,b,α)取得最小值的w,b,并将其带入函数中。
求解办法:
把
α
\alpha
α看作是常数,对w和b求导并令导数为0,即求:
∂
L
∂
b
=
0
\frac{\partial L}{\partial b}=0
∂b∂L=0
∇
w
L
=
0
\nabla_wL=0
∇wL=0
求得:
∂
L
∂
b
=
−
∑
i
=
1
m
α
i
y
i
=
0
\frac{\partial L}{\partial b}=-\sum\limits_{i=1}^m\alpha_iy_i=0
∂b∂L=−i=1∑mαiyi=0
∇
w
L
=
w
−
∑
i
=
1
m
α
i
y
i
x
(
i
)
=
0
\nabla_wL= w-\sum\limits_{i=1}^m\alpha_iy_ix^{(i)}=0
∇wL=w−i=1∑mαiyix(i)=0
整理的:
∑
i
=
1
m
α
i
y
i
=
0
\sum\limits_{i=1}^m\alpha_iy_i=0
i=1∑mαiyi=0
w
=
∑
i
=
1
m
α
i
y
(
i
)
x
(
i
)
w=\sum\limits_{i=1}^m\alpha_iy^{(i)}x^{(i)}
w=i=1∑mαiy(i)x(i)
再将求得w和b的最优解带入目标函数,得到:
=
1
2
w
T
w
−
∑
i
=
1
m
(
α
i
y
i
w
T
x
(
i
)
+
α
i
y
i
b
+
α
i
)
=
1
2
w
T
w
−
∑
i
=
1
m
α
i
y
i
w
T
x
(
i
)
−
∑
i
=
1
m
α
i
y
i
b
+
∑
i
=
1
m
α
i
=
1
2
w
T
w
−
w
T
w
+
∑
i
=
1
m
α
i
=
−
1
2
(
∑
i
=
1
m
α
i
y
i
x
(
i
)
)
⋅
(
∑
j
=
1
m
α
j
y
j
x
(
j
)
)
+
∑
i
=
1
m
α
i
=
−
1
2
∑
i
=
1
m
∑
j
=
1
m
α
i
α
j
y
i
y
j
x
(
i
)
⋅
x
(
j
)
+
∑
i
=
1
m
α
i
\begin{aligned} &=\frac{1}{2}w^Tw -\sum\limits_{i=1}^m\Big(\alpha_iy_iw^Tx^{(i)}+\alpha_iy_ib+\alpha_i\Big)\\ &=\frac{1}{2}w^Tw -\sum\limits_{i=1}^m\alpha_iy_iw^Tx^{(i)}-\sum\limits_{i=1}^m\alpha_iy_ib+\sum\limits_{i=1}^m\alpha_i\\ &=\frac{1}{2}w^Tw -w^Tw+\sum\limits_{i=1}^m\alpha_i\\ &=-\frac{1}{2}\Big(\sum\limits_{i=1}^m\alpha_iy_ix^{(i)}\Big)\cdot\Big(\sum\limits_{j=1}^m\alpha_jy_jx^{(j)}\Big)+\sum\limits_{i=1}^m\alpha_i\\ &=-\frac{1}{2}\sum\limits_{i=1}^m\sum\limits_{j=1}^m\alpha_i\alpha_jy_iy_jx^{(i)}\cdot x^{(j)}+\sum\limits_{i=1}^m\alpha_i \end{aligned}
=21wTw−i=1∑m(αiyiwTx(i)+αiyib+αi)=21wTw−i=1∑mαiyiwTx(i)−i=1∑mαiyib+i=1∑mαi=21wTw−wTw+i=1∑mαi=−21(i=1∑mαiyix(i))⋅(j=1∑mαjyjx(j))+i=1∑mαi=−21i=1∑mj=1∑mαiαjyiyjx(i)⋅x(j)+i=1∑mαi
对偶问题为:
max
α
−
1
2
∑
i
=
1
m
∑
j
=
1
m
α
i
α
j
y
i
y
j
x
(
i
)
⋅
x
(
j
)
+
∑
i
=
1
m
α
i
\max\limits_{\alpha}-\frac{1}{2}\sum\limits_{i=1}^m\sum\limits_{j=1}^m\alpha_i\alpha_jy_iy_jx^{(i)}\cdot x^{(j)}+\sum\limits_{i=1}^m\alpha_i
αmax−21i=1∑mj=1∑mαiαjyiyjx(i)⋅x(j)+i=1∑mαi
也等价转换为
min
α
1
2
∑
i
=
1
m
∑
j
=
1
m
α
i
α
j
y
i
y
j
x
(
i
)
⋅
x
(
j
)
−
∑
i
=
1
m
α
i
\min\limits_{\alpha} \frac{1}{2}\sum\limits_{i=1}^m\sum\limits_{j=1}^m\alpha_i\alpha_jy_iy_jx^{(i)}\cdot x^{(j)}-\sum\limits_{i=1}^m\alpha_i
αmin21i=1∑mj=1∑mαiαjyiyjx(i)⋅x(j)−i=1∑mαi
限定条件有:
α
i
⩾
0
i
=
1
,
2
,
.
.
.
,
m
\alpha_i\geqslant0\quad i=1,2,...,m
αi⩾0i=1,2,...,m
∑
i
=
1
m
α
i
y
i
=
0
\sum\limits_{i=1}^m\alpha_iy_i=0
i=1∑mαiyi=0
还有已知的条件
w
=
∑
i
=
1
m
α
i
y
(
i
)
x
(
i
)
w=\sum\limits_{i=1}^m\alpha_iy^{(i)}x^{(i)}
w=i=1∑mαiy(i)x(i)
2-3-2-3 对偶问题相对于原始问题的特点
1.只剩下未知量
α
\alpha
α
2.约束变得很简单
3.对偶问题是凸优化问题,所以我们一定够可以找到他的全局极小值点
2-3-2-4 支持向量的解释
根据
w
=
∑
i
=
1
m
α
i
y
(
i
)
x
(
i
)
w=\sum\limits_{i=1}^m\alpha_iy^{(i)}x^{(i)}
w=i=1∑mαiy(i)x(i)
我们在求解出
α
\alpha
α的值之后,就可以求出w的值。
同时决策函数也就可以写成
s
i
g
n
(
∑
i
=
1
m
α
i
y
(
i
)
x
(
i
)
⋅
x
预
测
样
本
)
sign\Big(\sum\limits_{i=1}^m\alpha_iy^{(i)}x^{(i)}\cdot x_{预测样本}\Big)
sign(i=1∑mαiy(i)x(i)⋅x预测样本)
在这个式子中,可以发现,对于乘子变量为0的对应的训练样本在决策时,是不起到作用的。而不为0的乘子变量对应的训练样本起到真正的决策作用,也就是支持向量。
而我们之前将SVM算法的核心思想时,曾经说过,支持向量就是在边界点上的向量,决定决策边界的向量。而其他内部的点在训练时对结果没有任何影响。
2-4 总结
最终,我们将Hard Margin SVM从原问题转换为拉格朗日对偶问题,并证明了强对偶关系,求得拉格朗日对偶问题,原问题也就得到了求解。
原问题:
min
ω
∣
∣
ω
∣
∣
2
2
\min \limits_{\bold{\omega}}\frac{||\omega||^2}{2}
ωmin2∣∣ω∣∣2
s
.
t
.
s.t.
s.t.
y
(
i
)
(
ω
T
x
(
i
)
+
b
)
⩾
1
i=1,2,...m
y^{(i)}(\bold{\omega}^T\bold{x^{(i)}}+b)\geqslant1 \quad\text{i=1,2,...m}
y(i)(ωTx(i)+b)⩾1i=1,2,...m
对偶问题:
min
α
1
2
∑
i
=
1
m
∑
j
=
1
m
α
i
α
j
y
i
y
j
x
(
i
)
⋅
x
(
j
)
−
∑
i
=
1
m
α
i
\min\limits_{\alpha} \frac{1}{2}\sum\limits_{i=1}^m\sum\limits_{j=1}^m\alpha_i\alpha_jy_iy_jx^{(i)}\cdot x^{(j)}-\sum\limits_{i=1}^m\alpha_i
αmin21i=1∑mj=1∑mαiαjyiyjx(i)⋅x(j)−i=1∑mαi
s
.
t
.
s.t.
s.t.
α
i
⩾
0
i
=
1
,
2
,
.
.
.
,
m
\alpha_i\geqslant0\quad i=1,2,...,m
αi⩾0i=1,2,...,m
∑
i
=
1
m
α
i
y
i
=
0
\sum\limits_{i=1}^m\alpha_iy_i=0
i=1∑mαiyi=0
终于把拉格朗日对偶问题的部分整理好啦,写完了好爽啦~
大部分的讲解在接下来就会讲讲soft margin SVM 或者核映射,但我想先完整结束hard margin SVM,尝试造下车轮。
所以接下来一篇文章打算讲讲,用来求解对偶问题的SMO算法