接上一篇支持向量机SVM——间隔最大化
我们知道了支持向量所需要解决的问题如下:
m
i
n
(
w
,
b
)
1
2
∣
∣
w
∣
∣
2
s
.
t
.
y
i
(
w
T
x
i
+
b
)
≥
1
,
i
=
1
,
2
,
.
.
.
,
m
min_{(w,b)} \frac{1}{2}||w||^{2}\\s.t.\quad y_i(w^Tx_i+b)\geq1 ,\quad i=1,2,...,m
min(w,b)21∣∣w∣∣2s.t.yi(wTxi+b)≥1,i=1,2,...,m
上面是一个有条件约束情况下的目标函数优化(求极值),这类问题也称为条件极值。而条件极值的问题我们通常可以通过构造拉格朗日函数来进行求解。
1.拉格朗日函数
首先我们看到一个二元函数的例子:
求函数
z
=
f
(
x
,
y
)
z=f(x,y)
z=f(x,y)在条件
ϕ
(
x
,
y
)
=
0
\phi(x,y)=0
ϕ(x,y)=0限制下的极值?
消元法:
设函数
f
(
x
,
y
)
f(x,y)
f(x,y),
ϕ
(
x
,
y
)
\phi(x,y)
ϕ(x,y)在
(
x
0
,
y
0
)
(x_0,y_0)
(x0,y0)附近具有连续偏导数,且
ϕ
x
′
(
x
,
y
)
\phi^{'}_x(x,y)
ϕx′(x,y),
ϕ
y
′
(
x
,
y
)
\phi^{'}_y(x,y)
ϕy′(x,y)不同时为0,将y视为由方程
ϕ
(
x
,
y
)
\phi(x,y)
ϕ(x,y)确定的x的函数
y
=
ψ
(
x
)
y=\psi(x)
y=ψ(x),于是二元函数的条件极值问题就化为了一元函数
z
=
f
(
x
,
ψ
(
x
)
)
z=f(x,\psi(x))
z=f(x,ψ(x))的无条件极值问题。
因此在极值点处必须满足一元函数极值存在的必要条件(即导数等于0):
d
z
d
x
=
0
\frac{d_z}{d_x}=0
dxdz=0
进一步z对x求导得:
d
z
d
x
=
f
x
′
(
x
,
y
)
+
f
y
′
(
x
,
y
)
d
y
d
x
(
1
)
\frac{d_z}{d_x}=f^{'}_x(x,y)+f^{'}_y(x,y)\frac{d_y}{d_x} \qquad(1)
dxdz=fx′(x,y)+fy′(x,y)dxdy(1)
又由
ϕ
(
x
,
y
)
=
0
\phi(x,y)=0
ϕ(x,y)=0得(这里使用了隐函数的微分法):
d
y
d
x
=
−
ϕ
x
′
(
x
,
y
)
ϕ
y
′
(
x
,
y
)
(
2
)
\frac{d_y}{d_x}=-\frac{\phi^{'}_x(x,y)}{\phi^{'}_y(x,y)} \qquad (2)
dxdy=−ϕy′(x,y)ϕx′(x,y)(2)
将(2)式代入(1)中,可得:
d
z
d
x
=
f
x
′
(
x
,
y
)
−
ϕ
x
′
(
x
,
y
)
ϕ
y
′
(
x
,
y
)
f
y
′
(
x
,
y
)
\frac{d_z}{d_x}=f^{'}_x(x,y)-\frac{\phi^{'}_x(x,y)}{\phi^{'}_y(x,y)}f^{'}_y(x,y)
dxdz=fx′(x,y)−ϕy′(x,y)ϕx′(x,y)fy′(x,y)
根据极值存在必要条件的等式
d
z
d
x
=
0
\frac{d_z}{d_x}=0
dxdz=0以及题目中的约束可得极值点的坐标必须满足以下方程:
{
f
x
′
(
x
,
y
)
−
ϕ
x
′
(
x
,
y
)
ϕ
y
′
(
x
,
y
)
f
y
′
(
x
,
y
)
=
0
(
3
)
ϕ
(
x
,
y
)
=
0
(
4
)
\begin{cases}f^{'}_x(x,y)-\frac{\phi^{'}_x(x,y)}{\phi^{'}_y(x,y)}f^{'}_y(x,y)=0 \qquad(3)\\\phi(x,y)=0\qquad\qquad\qquad\qquad\quad(4)\end{cases}
⎩⎨⎧fx′(x,y)−ϕy′(x,y)ϕx′(x,y)fy′(x,y)=0(3)ϕ(x,y)=0(4)
我们将方程(3)(4)联立求解即可得到我们的极值点。
拉格朗日函数的做法:
令
F
(
x
,
y
)
=
f
(
x
,
y
)
+
λ
ϕ
(
x
,
y
)
F(x,y)=f(x,y)+\lambda\phi(x,y)
F(x,y)=f(x,y)+λϕ(x,y)(这里的F(x,y)就是我们的拉格朗日函数,
λ
\lambda
λ称为拉格朗日乘数)
对上式求偏导,得:
{
F
x
′
(
x
,
y
)
=
f
x
′
(
x
,
y
)
+
λ
ϕ
x
′
(
x
,
y
)
F
y
′
(
x
,
y
)
=
f
y
′
(
x
,
y
)
+
λ
ϕ
y
′
(
x
,
y
)
\begin{cases} F^{'}_x(x,y)=f^{'}_x(x,y)+\lambda\phi^{'}_x(x,y)\\ F^{'}_y(x,y)=f^{'}_y(x,y)+\lambda\phi^{'}_y(x,y) \end{cases}
{Fx′(x,y)=fx′(x,y)+λϕx′(x,y)Fy′(x,y)=fy′(x,y)+λϕy′(x,y)
令
F
x
′
(
x
,
y
)
=
0
,
F
y
′
(
x
,
y
)
=
0
F^{'}_x(x,y)=0,F^{'}_y(x,y)=0
Fx′(x,y)=0,Fy′(x,y)=0
此时我们得到无条件极值的极值点要满足的必要条件:
{
f
x
′
(
x
,
y
)
+
λ
ϕ
x
′
(
x
,
y
)
=
0
f
y
′
(
x
,
y
)
+
λ
ϕ
y
′
(
x
,
y
)
=
0
\begin{cases} f^{'}_x(x,y)+\lambda\phi^{'}_x(x,y)=0\\ f^{'}_y(x,y)+\lambda\phi^{'}_y(x,y)=0 \end{cases}
{fx′(x,y)+λϕx′(x,y)=0fy′(x,y)+λϕy′(x,y)=0
上式中消去
λ
\lambda
λ我们可以得到与消元法最后相同的结果,这也证明了为什么要这样构造拉格朗日函数。
推广到n元函数在m个附加条件下的极値问题,拉格朗日函数的一般形式:
F
(
x
1
,
x
2
,
.
.
.
,
x
n
)
=
f
(
x
1
,
x
2
,
.
.
.
,
x
n
)
+
∑
i
=
1
m
λ
i
ϕ
i
(
x
1
,
x
2
,
.
.
.
,
x
n
)
F(x_1,x_2,...,x_n)=f(x_1,x_2,...,x_n)+\sum_{i=1}^m\lambda_i\phi_i(x_1,x_2,...,x_n)
F(x1,x2,...,xn)=f(x1,x2,...,xn)+i=1∑mλiϕi(x1,x2,...,xn)
然后对其求偏导解方程就可以得到极值点了。
(了解完拉格朗日函数之后,我们回到SVM的所要解决的问题,即在给定条件下求最小值,这里的条件主要分为了等式约束条件和不等式两种。)
2.等式约束条件
这和我们上面的例子是差不多的,假设我们的目标函数是
f
(
x
)
f(x)
f(x),约束条件
h
i
(
x
)
=
0
h_i(x)=0
hi(x)=0,即:
m
i
n
f
(
x
)
\qquad\qquad\qquad\qquad\qquad minf(x)
minf(x)
s
.
t
.
h
i
(
x
)
=
0
,
i
=
1
,
2
,
3...
\qquad\qquad \qquad s.t. \quad h_i(x)=0,i=1,2,3...
s.t.hi(x)=0,i=1,2,3...
这里的x表示的是向量
(
x
1
,
x
2
,
.
.
.
,
x
n
)
(x_1,x_2,...,x_n)
(x1,x2,...,xn)。
解决这类问题主要有以下几个步骤:
1.构造拉格朗日函数:
F
(
x
)
=
f
(
x
)
+
∑
i
=
1
m
λ
i
h
i
(
x
)
\qquad\qquad\qquad\qquad F(x)=f(x)+\sum_{i=1}^m\lambda_ih_i(x)
F(x)=f(x)+∑i=1mλihi(x)
2.对变量求偏导
3.联合等式约束条件和偏导等于0进行求解得到极值点(最优解),再将极值点代入我们的目标函数,得到最小值。
3.不等式约束条件
对于本文开头所说SVM所需要解决的问题,因为
w
w
w是向量,我们可以将
∣
∣
w
∣
∣
2
||w||^2
∣∣w∣∣2写成
w
T
w
w^Tw
wTw:
{
m
i
n
(
w
,
b
)
1
2
w
T
w
s
.
t
.
y
i
(
w
T
x
i
+
b
)
≥
1
⟺
1
−
y
i
(
w
T
x
i
+
b
)
≤
0
\begin{cases}min_{(w,b)}\frac{1}{2}w^Tw\\ s.t. \quad y_i(w^Tx_i+b)\geq1\iff1- y_i(w^Tx_i+b)\leq0\end{cases}
{min(w,b)21wTws.t.yi(wTxi+b)≥1⟺1−yi(wTxi+b)≤0
(注:min的下标(w,b)表示是找到一个w和b,来最小化目标函数,并且i=1,2,…N)
(1)首先构造拉格朗日函数:
L
(
w
,
b
,
λ
)
=
1
2
w
T
w
+
∑
i
=
1
N
λ
i
(
1
−
y
i
(
w
T
x
i
+
b
)
)
\qquad\qquad\qquad L(w,b,\lambda)=\frac{1}{2}w^Tw+\sum_{i=1}^N\lambda_i(1-y_i(w^Tx_i+b))
L(w,b,λ)=21wTw+∑i=1Nλi(1−yi(wTxi+b))
(2)接下来我们可以把原问题转为如下形式:
{
m
i
n
(
w
,
b
)
m
a
x
λ
L
(
w
,
b
,
λ
)
s
.
t
.
λ
i
≥
0
\begin{cases}min_{(w,b)}\;max_{\lambda}L(w,b,\lambda)\\ s.t. \quad \lambda_i\geq0\end{cases}
{min(w,b)maxλL(w,b,λ)s.t.λi≥0
原问题中w,b是要满足条件 1 − y i ( w T x i + b ) ≤ 0 1- y_i(w^Tx_i+b)\leq0 1−yi(wTxi+b)≤0的,那么这么转换后和原问题是否等价,并且我们的优化目标是否也和原优化目标等价?
这里我看到了网上的一种粗略的证明方法,比较好理解:
首先我们求解一下
m
a
x
λ
L
(
w
,
b
,
λ
)
max_{\lambda}L(w,b,\lambda)
maxλL(w,b,λ)到底等于多少?
我们构造的拉格朗日函数中
1
−
y
i
(
w
T
x
i
+
b
)
1- y_i(w^Tx_i+b)
1−yi(wTxi+b)这一项无非两种情况大于0或小于等于0.
1)如果
1
−
y
i
(
w
T
x
i
+
b
)
>
0
1- y_i(w^Tx_i+b)>0
1−yi(wTxi+b)>0,当
λ
→
∞
\lambda\to\infty
λ→∞时,
∑
i
=
1
N
λ
i
(
1
−
y
i
(
w
T
x
i
+
b
)
)
\sum_{i=1}^N\lambda_i(1-y_i(w^Tx_i+b))
∑i=1Nλi(1−yi(wTxi+b))也趋于
∞
\infty
∞,所以
m
a
x
λ
L
(
w
,
b
,
λ
)
=
∞
max_{\lambda}L(w,b,\lambda)=\infty
maxλL(w,b,λ)=∞
2)如果 1 − y i ( w T x i + b ) ≤ 0 1- y_i(w^Tx_i+b)\leq0 1−yi(wTxi+b)≤0,当 λ = 0 \lambda=0 λ=0时, ∑ i = 1 N λ i ( 1 − y i ( w T x i + b ) ) \sum_{i=1}^N\lambda_i(1-y_i(w^Tx_i+b)) ∑i=1Nλi(1−yi(wTxi+b))取得最大值为0,所以 m a x λ L ( w , b , λ ) = 1 2 w T w max_{\lambda}L(w,b,\lambda)=\frac{1}{2}w^Tw maxλL(w,b,λ)=21wTw。
最后,
m
i
n
(
w
,
b
)
m
a
x
λ
L
(
w
,
b
,
λ
)
=
m
i
n
(
w
,
b
)
(
∞
,
1
2
w
T
w
)
=
m
i
n
(
w
,
b
)
1
2
w
T
w
min_{(w,b)}\;max_{\lambda}L(w,b,\lambda)=min_{(w,b)}\,(\infty,\frac{1}{2}w^Tw)=min_{(w,b)}\frac{1}{2}w^Tw
min(w,b)maxλL(w,b,λ)=min(w,b)(∞,21wTw)=min(w,b)21wTw.
可以看到我们的优化目标是等价的,并且在求min的时候我们自动忽略掉等于
∞
\infty
∞的那部分(也就是忽舍弃w,b满足
1
−
y
i
(
w
T
x
i
+
b
)
>
0
1- y_i(w^Tx_i+b)>0
1−yi(wTxi+b)>0),所以我们
λ
,
b
\lambda,b
λ,b也就自动满足原问题中的条件,构造拉格朗日函数的好处就是我们把原问题中带约束转换为了对w,b无约束的问题,这就很方便我们后面求最优解了。
转换后的问题也称作原始问题的对偶问题。
(3)利用对偶关系将我们上面得到的新问题再次转换为如下形式(即将极小极大问题转换为极大极小问题):
{
m
a
x
λ
m
i
n
(
w
,
b
)
L
(
w
,
b
,
λ
)
s
.
t
.
λ
i
≥
0
\begin{cases}max_{\lambda}\;min_{(w,b)}L(w,b,\lambda)\\ s.t. \quad \lambda_i\geq0\end{cases}
{maxλmin(w,b)L(w,b,λ)s.t.λi≥0
转换后的优化问题也称为(2)的对偶问题。
这里需要引用一个定理,即凸二次规划问题是具有强对偶关系的,因此我们可以这么转换(凸二次规划问题就是目标函数是二次的连续可微的凸函数,条件是最高次为1的多项式函数的这种情况),但是需要满足KKT条件,灾后面会提出。
这么转换的原因是此时w,b无约束, λ i \lambda_i λi有约束(要满足 λ i ≥ 0 \lambda_i\geq0 λi≥0),而无约束的情况是很好求极值的,所以通过对偶关系转换之后我们可以先求min这部分达到化简的作用。
那么接下来就可以直接求解无约束极值问题
m
i
n
(
w
,
b
)
L
(
w
,
b
,
λ
)
min_{(w,b)}L(w,b,\lambda)
min(w,b)L(w,b,λ):
因为此时w,b是无约束的,所以我们就可以通过直接对w,b求偏导的方式来求极值。(求导的过程就不写出来了,直接放结果)
{
∂
L
(
w
,
b
,
λ
)
∂
b
=
0
⟺
∑
i
=
1
N
λ
i
y
i
=
0
∂
L
(
w
,
b
,
λ
)
∂
w
=
0
⟺
w
=
∑
i
=
1
N
λ
i
y
i
x
i
\begin{cases}\frac{∂ L(w,b,\lambda)}{∂ b}=0\iff\sum_{i=1}^N\lambda_iy_i=0\\\\\frac{∂ L(w,b,\lambda)}{∂ w}=0\iff w=\sum_{i=1}^N\lambda_iy_ix_i\end{cases}
⎩⎪⎨⎪⎧∂b∂L(w,b,λ)=0⟺∑i=1Nλiyi=0∂w∂L(w,b,λ)=0⟺w=∑i=1Nλiyixi
此时我们求得的w就是最优解,虽然还没求得b,但是将求得的结果代入
L
(
w
,
b
,
λ
)
L(w,b,\lambda)
L(w,b,λ)也会把b消掉,代入后的结果就得到了最小值,即:
m
i
n
(
w
,
b
)
L
(
w
,
b
,
λ
)
=
−
1
2
∑
i
=
1
N
∑
j
=
1
N
λ
i
λ
j
y
i
y
j
x
i
T
x
j
+
∑
i
=
1
N
λ
i
min_{(w,b)}L(w,b,\lambda)=-\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\lambda_i\lambda_jy_iy_jx^T_ix_j+\sum_{i=1}^N\lambda_i
min(w,b)L(w,b,λ)=−21i=1∑Nj=1∑NλiλjyiyjxiTxj+i=1∑Nλi
(4)将上面求得的最小值代入优化问题中,(3)中的问题就变成如下形式:
{
m
a
x
λ
(
−
1
2
∑
i
=
1
N
∑
j
=
1
N
λ
i
λ
j
y
i
y
j
x
i
T
x
j
+
∑
i
=
1
N
λ
i
)
s
.
t
.
λ
i
≥
0
∑
i
=
1
N
λ
i
y
i
=
0
\begin{cases}max_{\lambda}\;(-\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\lambda_i\lambda_jy_iy_jx^T_ix_j+\sum_{i=1}^N\lambda_i)\\ s.t. \quad \lambda_i\geq0\\\qquad\sum_{i=1}^N\lambda_iy_i=0\end{cases}
⎩⎪⎨⎪⎧maxλ(−21∑i=1N∑j=1NλiλjyiyjxiTxj+∑i=1Nλi)s.t.λi≥0∑i=1Nλiyi=0
前面我们已经求得了w的最优解,现在我们的任务是通过上面的优化问题来求b的最优解。
(5)KKT条件:
{
λ
i
(
1
−
y
i
(
w
T
x
i
+
b
)
)
=
0
λ
i
≥
0
1
−
y
i
(
w
T
x
i
+
b
)
≤
0
\begin{cases}\lambda_i(1- y_i(w^Tx_i+b))=0\\ \lambda_i\geq0\\1- y_i(w^Tx_i+b)\leq0\end{cases}
⎩⎪⎨⎪⎧λi(1−yi(wTxi+b))=0λi≥01−yi(wTxi+b)≤0
注意:原问题和对偶问题满足“强对偶关系”的充要条件就是他们满足KKT条件。
而前面(3)中我们说过凸二次规划问题具有强对偶关系,所以我们(4)中的问题是需要满足KKT条件的。
现在我们要用这个条件来求b:
对于任意支持向量
(
x
k
,
y
k
)
(x_k,y_k)
(xk,yk),都有
1
−
y
k
(
w
T
x
k
+
b
)
=
0
1- y_k(w^Tx_k+b)=0
1−yk(wTxk+b)=0。
将w代入求得求得
b
=
y
k
−
∑
i
=
1
N
λ
i
y
i
x
i
T
x
k
b=y_k-\sum_{i=1}^N\lambda_iy_ix^T_ix_k
b=yk−∑i=1NλiyixiTxk
即最优解为:
{
w
=
∑
i
=
1
N
λ
i
y
i
x
i
b
=
y
k
−
∑
i
=
1
N
λ
i
y
i
x
i
T
x
k
\begin{cases}w=\sum_{i=1}^N\lambda_iy_ix_i\\b=y_k-\sum_{i=1}^N\lambda_iy_ix^T_ix_k\end{cases}
{w=∑i=1Nλiyixib=yk−∑i=1NλiyixiTxk
但是现实中会采用一种更鲁棒的做法:使用所有支持向量来取平均值。 b = 1 ∣ S ∣ ∑ k ∈ S ( 1 y k − ∑ i = 1 N λ i y i x i T x k ) b=\frac{1}{|S|}\sum_{k\in S}(\frac{1}{y_k}-\sum_{i=1}^N\lambda_iy_ix^T_ix_k) b=∣S∣1∑k∈S(yk1−∑i=1NλiyixiTxk)
(S是所有支持向量的下标集合,|S|即集合的大小)
小结:现在只需要求得 λ i \lambda_i λi就可以得到超平面方程,但是目前都是基于数据集线性可分的情况,但是现实情况数据集往往并不线性可分,可能只是近似线性可分,因此就有了软间隔最大化的做法。