支持向量机学习
前言
对于支持向量机,最早是在大学毕业设计时接触到的,那时已经大概把原理看了看,知道是利用最优的超平面将两类数据分开。但好像也仅限于此了,对于其中的核函数以及算法的实现什么的都没有过深的了解,最后也只是调用MATLAB里面以有的支持向量机的函数,然后把输入的特征输入进去,进行训练就可以实现对不同目标的分类了。然而时过两年,现在又要再次用到支持向量机,还是打算把其中的一些原理搞懂,今天不欠账,以后就不用还。
问题描述
也已经无数次的看到过SVM可以找出一个最优超平面将不同的数据分开 ,也无数次的见识过各种文章写道核函数可以使得SVM有可能处理无数维的数据。但是却还是似懂非懂,现在也还是有点似懂非懂,所以还是打算先从简单入手,不涉及核函数和线性不可分。就考虑一个实际的问题:如下图,在直角坐标系上存在两类点,请用支持向量机把这两类点分开。这里,数据的特征就是各个点的横纵坐标了,也就是一个二维的特征。
在直角坐标系下,我们很容易可以理解,就是只找到直线2的解析式,那么我们就可以顺利的将两类数据分开了,至于直线1和直线3,一眼可以看出没有直线2分的效果好。当然,我们肯定需要严格的理论推导来确定直线2,不可以靠眼睛看就断定直线2比直线1和3好。这里的判断方法就是希望有最大的分类间隔。什么是间隔呢?如图,也可以说是离分类的直线距离最近的点(其实这些点就是支持向量)到分类直线的距离。也就是在准确分类的基础上,改变改变直线的斜率什么的,使得这个间隔最大。当然,我们找直线2的这个过程不可以真用笔在纸上画画用数学知识直接把直线2的解析式算出来,肯定利用计算机来找啊,因为一旦数据量变得很大,计算变得很复杂人们很难直接算出来。而通过计算机找直线2的方法也有多种,后面介绍一种叫序列最小优化的算法(smo,Sequential Minimal Optimization)
问题转化
对于我们拿到的训练集
D
=
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
(
x
3
,
y
3
)
.
.
.
D={(x_1,y_1),(x_2,y_2),(x_3,y_3)...}
D=(x1,y1),(x2,y2),(x3,y3)...,可以包含N个样本点,由
x
x
x和
y
y
y组成,我们也可以把每一个样本点叫做一个实例。
x
x
x作为输入变量,可以是一个数,也可以是一个向量。对于本文中的例子,
x
x
x就是一个二维向量,也就是每个点的横纵坐标。
y
y
y为输出,在二分类问题中,
y
y
y只能取+1或-1(或者0或1)。
例如
x
1
=
(
x
1
1
,
x
1
2
)
x_1=(x_1^1,x_1^2)
x1=(x11,x12),其中
x
1
1
,
x
1
2
x_1^1,x_1^2
x11,x12分别对应横纵坐标。这一个点对应一个
y
1
=
+
1
(
或
−
1
)
y_1=+1(或-1)
y1=+1(或−1)类。我们的任务就是通过这些训练集的点来找出一个条直线,然后在测试集时或者有新的数据输入时能够正确的将每一个数据分类。
前面已经说过我们想找一个有最大分类间隔的超平面,我们定义这个超平面,在简单的二维情况下就是一条直线,设为:
0
=
w
T
x
+
b
0=w^Tx+b
0=wTx+b,我们要求
w
w
w和
b
b
b,使得这个直线到最近点的几何距离最大(可以看看几何距离函数距离的差别,以及训练集到超平面距离的定义)。其中几何距离就是我们高中经常用到的点到直线的距离,写成数学形式:
max
w
,
b
min
x
i
(
∣
w
T
x
i
+
b
∣
∣
∣
w
∣
∣
)
(*)
\max_{w,b}\min_{x_i}(\frac{|w^Tx_i+b|}{||w||}) \tag{*}
w,bmaxximin(∣∣w∣∣∣wTxi+b∣)(*)
稍微理解一下这个式子,其中
∣
∣
w
∣
∣
||w||
∣∣w∣∣代表求
w
w
w的二范数,也就是相当于常用的
a
2
+
b
2
\sqrt{a^2+b^2}
a2+b2。这个式子中也出现了绝对值,
∣
w
T
x
+
b
∣
|w^Tx+b|
∣wTx+b∣,一般绝对值运算比较麻烦,想着把他去掉,我们知道,y只能是+1或者-1,而一般规定为正样本时,y为+1,此时
w
T
x
+
b
w^Tx+b
wTx+b也为正的。为负样本时,y为-1,此时
w
T
x
+
b
w^Tx+b
wTx+b也为负的。(一条直线的一边的点全为正,为正样本;另外一边的点全为负,为负样本。这样规定方便简化计算)也就是
∣
w
T
x
+
b
∣
=
y
(
w
T
x
+
b
)
|w^Tx+b|=y(w^Tx+b)
∣wTx+b∣=y(wTx+b),另外
∣
∣
w
∣
∣
||w||
∣∣w∣∣是
x
i
,
y
i
x_i,y_i
xi,yi无关的,所以可以移出来。最后前面的
(
∗
)
(*)
(∗)式可以改写为:
max
w
,
b
1
∣
∣
w
∣
∣
min
x
i
,
y
i
(
y
i
(
w
T
x
i
+
b
)
)
(**)
\max_{w,b}\frac{1}{||w||}\min_{x_i,y_i}(y_i(w^Tx_i+b)) \tag{**}
w,bmax∣∣w∣∣1xi,yimin(yi(wTxi+b))(**)
还是稍微理解一下这个式子,这个式子的意思就是,首先通过尝试不同的
w
,
b
w,b
w,b使得后面的式子能够取得最大值,而后面的式子是指尝试所有已知点,也就是我们的训练数据,找出离这个直线最近距离的点,然后求出来的这个最近的距离。合起来也就是前面所说的求一条直线
0
=
w
T
x
+
b
0=w^Tx+b
0=wTx+b,使得这个直线到最近点的几何距离最大,我们要求的就是
w
,
b
w,b
w,b。
接着转化
假如支持向量为
(
x
v
,
y
v
)
(x_v,y_v)
(xv,yv),因为支持向量就是离超平面最近的点,所以对于(**)式,可以简化写成:
max
w
,
b
1
∣
∣
w
∣
∣
(
y
v
(
w
T
x
v
+
b
)
)
(***)
\max_{w,b}\frac{1}{||w||}(y_v(w^Tx_v+b)) \tag{***}
w,bmax∣∣w∣∣1(yv(wTxv+b))(***)
对于一条直线x+y=0,我们将等式两边同时乘2得到2x+2y=0,很容易知道这两者并没有本质区别。对于
w
T
x
+
b
=
0
w^Tx+b=0
wTx+b=0也一样,两边同乘一个常数并没有改变这条直线。这里我们就进行这样的操作使得
y
v
(
w
T
x
v
+
b
)
=
1
y_v(w^Tx_v+b)=1
yv(wTxv+b)=1(直线上的点带入
w
T
x
+
b
w^Tx+b
wTx+b才等于0,支持向量带入是不等于0的)这样式
(
∗
∗
∗
)
(***)
(∗∗∗)就变成了:
max
w
,
b
1
∣
∣
w
∣
∣
\max_{w,b}\frac{1}{||w||}
w,bmax∣∣w∣∣1
也就是求
w
,
b
w,b
w,b使得
1
∣
∣
w
∣
∣
\frac{1}{||w||}
∣∣w∣∣1最大。为了方便后面的计算,改写成求
1
2
∣
∣
w
∣
∣
2
\frac{1}{2}||w||^2
21∣∣w∣∣2最小。但是是在
min
x
i
,
y
i
(
y
i
(
w
T
x
i
+
b
)
)
=
1
\min_{x_i,y_i}(y_i(w^Tx_i+b))=1
minxi,yi(yi(wTxi+b))=1的情况下(与
y
v
(
w
T
x
v
+
b
)
=
1
y_v(w^Tx_v+b)=1
yv(wTxv+b)=1等价)求
∣
∣
w
∣
∣
||w||
∣∣w∣∣最小 。所以现在的问题变成了:
min
w
,
b
1
2
∣
∣
w
∣
∣
2
\min_{w,b}\frac{1}{2}||w||^2
w,bmin21∣∣w∣∣2
s
.
t
.
min
x
i
,
y
i
(
y
i
(
w
T
x
i
+
b
)
)
=
1
(-)
s.t. \min_{x_i,y_i}(y_i(w^Tx_i+b))=1 \tag{-}
s.t.xi,yimin(yi(wTxi+b))=1(-)
但是,一般最后约束条件都会写成:
s
.
t
.
y
i
(
w
T
x
i
+
b
)
≥
1
s.t. y_i(w^Tx_i+b) \geq 1
s.t.yi(wTxi+b)≥1
其实对这个约束条件是否和前面约束(-)的是否等价,我抱有疑问。我在想会不会出现所有点都离超平面的距离都比1大很多,而没有等于1的,这样会不会造成分类出现问题。最后和同学稍微讨论一下,感觉最后对
w
,
b
w,b
w,b进行优化时,最先是假设一个点为支持向量,然后让这个点到这个超平面的距离为1来改变
w
,
b
w,b
w,b,接着考验其余的点,来一点点优化的。所以开始应该会有一个点离超平面的距离为1,或者说接近1。
对上面的问题稍微有了一点不同的理解,就是所谓约束就是肯定可以取到约束情况下所有点的啊。就比如限制
x
2
+
y
2
≤
1
x^2+y^2 \leq 1
x2+y2≤1,这就是一个圆的区域,我们这个范围上的点都是可以取得到的,所以圆上的点当然也可以取到,所以会有等于1的啊
拉格朗日乘数法
这部分是高数中学过的知识,记得还算比较牢固。但是也只是学了最简单的等式约束的情况。例如:
在
x
y
=
1
xy=1
xy=1的情况下,求
x
2
+
y
2
x^2+y^2
x2+y2的最大值。可以写成数学形式:
max
(
x
2
+
y
2
)
\max(x^2+y^2)
max(x2+y2)
s
.
t
.
x
y
=
1
s.t. xy=1
s.t.xy=1
该怎么求呢?书中给出了一个比较简单的方法,就是可以构造一个拉格朗日函数:
L
(
x
,
y
,
λ
)
=
x
2
+
y
2
+
λ
(
x
y
−
1
)
L(x,y,\lambda)=x^2+y^2+\lambda(xy-1)
L(x,y,λ)=x2+y2+λ(xy−1)
然后分别对
x
,
y
,
λ
x,y,\lambda
x,y,λ求导联立就可以求出最后的结果。现在回过头来想,这只是给了我们一个既定的解决问题的程序,但却好像没有告诉我们为什么可以这样。下面稍微深入理解一下
考虑更一般的情况,求:
max
f
(
x
,
y
)
\max f(x,y)
maxf(x,y)
s
.
t
.
g
(
x
,
y
)
=
0
s.t. g(x,y)=0
s.t.g(x,y)=0
对于凸函数来说,极值点就是最值点,设为
(
x
0
,
y
0
)
(x_0,y_0)
(x0,y0)。通过画图就可以容易知道(应该也有严谨的推导)极值点的梯度方向一样,也就是平行,由向量平行的性质,可以得到:
f
x
′
(
x
0
,
y
0
)
g
x
′
(
x
0
,
y
0
)
=
f
y
′
(
x
0
,
y
0
)
g
y
′
(
x
0
,
y
0
)
=
−
λ
0
\frac{f_x^{'}(x_0,y_0)}{g_x^{'}(x_0,y_0)}=\frac{f_y^{'}(x_0,y_0)}{g_y^{'}(x_0,y_0)}=-\lambda_0
gx′(x0,y0)fx′(x0,y0)=gy′(x0,y0)fy′(x0,y0)=−λ0
上式变形得:
f
x
′
(
x
0
,
y
0
)
+
λ
0
g
x
′
(
x
0
,
y
0
)
=
0
f_x^{'}(x_0,y_0)+\lambda_0g_x^{'}(x_0,y_0)=0
fx′(x0,y0)+λ0gx′(x0,y0)=0
f
y
′
(
x
0
,
y
0
)
+
λ
0
g
y
′
(
x
0
,
y
0
)
=
0
f_y^{'}(x_0,y_0)+\lambda_0g_y^{'}(x_0,y_0)=0
fy′(x0,y0)+λ0gy′(x0,y0)=0
g
(
x
0
,
y
0
)
=
0
g(x_0,y_0)=0
g(x0,y0)=0
通过上面三个式子就可以求出最后我们想要的结果了,这时我们可以回头看看前面的拉格朗日函数
L
(
x
,
y
,
λ
)
L(x,y,\lambda)
L(x,y,λ),知道其实我最后通过
L
(
x
,
y
,
λ
)
L(x,y,\lambda)
L(x,y,λ)分别对
x
,
y
,
λ
x,y,\lambda
x,y,λ求导得到的就是上面的三个式子。这也就是为什么按照书中规定的程序构造拉格朗日函数然后求导联立就可以求得最后结果的原因。这也只是一种比较简单的理解,还有些通过等高线什么来理解的,还没搞清楚,而且对于如果有两个或者多个约束条件的情况,上面的推导肯定就会更麻烦了,更更复杂的还有不等式约束的情况,慢慢理解。下面还是要理解理解不等式约束的情况,因为我们前面支持向量机的约束就是不等式的约束。
不等式约束下的拉格朗日法
这里加一下对于对偶问题的简单描述,所谓对偶问题,就是在一些条件下,
min
max
f
(
x
)
\min\max f(x)
minmaxf(x)和
max
min
f
(
x
)
\max\min f(x)
maxminf(x)是相等的。具体的看后面的图片里的关于KKT条件的推导,其中会提到。
\quad
参考https://blog.csdn.net/lijil168/article/details/69395023中的推导,感觉自己才大概理解拉格朗日乘数法的由来,也顺带理解了KKT条件和对偶问题。就直接照着里面的图片敲一遍公式啦,加深一下印象。
让
L
(
x
,
μ
)
=
f
(
x
)
+
∑
k
=
1
q
μ
k
g
k
(
x
)
L(x,\mu)=f(x)+\sum^q_{k=1}\mu_kg_k(x)
L(x,μ)=f(x)+∑k=1qμkgk(x)
其中
μ
k
≥
0
,
g
k
(
x
)
≤
0
\mu_k\geq0,g_k(x)\leq0
μk≥0,gk(x)≤0
∵
μ
k
≥
0
g
k
(
x
)
≤
0
}
=
>
μ
g
(
x
)
≤
0
\because \left.\begin{matrix}\mu_k \geq 0 \\ g_k(x) \leq 0 \end{matrix}\right\}=> \mu g(x) \leq 0
∵μk≥0gk(x)≤0}=>μg(x)≤0
∴
max
μ
L
(
x
,
μ
)
=
f
(
x
)
(2)
\therefore \max_{\mu}L(x,\mu)=f(x) \tag{2}
∴μmaxL(x,μ)=f(x)(2)
∴
min
f
(
x
)
=
min
x
max
μ
L
(
x
,
μ
)
(3)
\therefore \min f(x)=\min_x \max_\mu L(x,\mu) \tag{3}
∴minf(x)=xminμmaxL(x,μ)(3)
max
μ
min
x
L
(
x
,
μ
)
=
max
μ
[
min
x
f
(
x
)
+
min
x
μ
g
(
x
)
]
=
max
μ
min
x
f
(
x
)
+
max
μ
min
x
μ
g
(
x
)
=
min
f
(
x
)
+
max
μ
min
x
μ
g
(
x
)
\max_\mu \min_x L(x,\mu) = \max_\mu[\min_x f(x)+\min_x \mu g(x)]=\max_\mu\min_x f(x)+\max_\mu\min_x \mu g(x)=\min f(x)+\max_\mu\min_x \mu g(x)
μmaxxminL(x,μ)=μmax[xminf(x)+xminμg(x)]=μmaxxminf(x)+μmaxxminμg(x)=minf(x)+μmaxxminμg(x)
又
∵
μ
k
≥
0
g
k
(
x
)
≤
0
}
=
>
min
x
μ
g
(
x
)
=
{
0
i
f
μ
=
0
o
r
g
(
x
)
=
0
−
∞
i
f
μ
>
0
o
r
g
(
x
)
<
0
}
\because \left.\begin{matrix}\mu_k \geq 0 \\ g_k(x) \leq 0 \end{matrix}\right\}=> \min_x \mu g(x)=\left\{\begin{matrix} 0 & if\mu=0 or g(x)=0 \\ - \infty & if\mu>0 or g(x)<0 \end{matrix}\right\}
∵μk≥0gk(x)≤0}=>minxμg(x)={0−∞ifμ=0org(x)=0ifμ>0org(x)<0}
$\therefore $放弃了,打公式太麻烦了,直接贴个图。打的这么多还先是留着吧,说不定后面可以复制粘贴。直接看图片吧
考虑等式约束和不等式约束都存在的情况,设目标函数
f
(
x
)
f(x)
f(x),不等式约束为
g
(
x
)
g(x)
g(x),等式约束
h
(
x
)
h(x)
h(x),此时约束优化问题描述如下:
min
f
(
x
)
\min f(x)
minf(x)
s
.
t
.
h
j
(
x
)
=
0
j
=
1
,
2...
p
s.t.\ h_j(x)=0 \quad j=1,2...p
s.t. hj(x)=0j=1,2...p
s
.
t
.
g
k
(
x
)
≤
0
k
=
1
,
2...
q
s.t. \ g_k(x) \leq 0 \quad k=1,2...q
s.t. gk(x)≤0k=1,2...q
则定义拉格朗日函数为:
L
(
x
,
μ
)
=
f
(
x
)
+
∑
j
=
1
p
λ
j
h
j
(
x
)
+
∑
k
=
1
q
μ
k
g
k
(
x
)
L(x,\mu)=f(x)+ \sum_{j=1}^p \lambda_jh_j(x) + \sum _{k=1}^q \mu_k g_k(x)
L(x,μ)=f(x)+j=1∑pλjhj(x)+k=1∑qμkgk(x)
其中
f
(
x
)
f(x)
f(x)是原目标函数,
h
j
(
x
)
h_j(x)
hj(x)是第j个等式约束条件,
λ
j
\lambda_j
λj对应的约束系数,
g
k
(
x
)
g_k(x)
gk(x)是不等式约束,
μ
k
\mu_k
μk是对应的约束系数想要得到我们最后的结论
min
x
max
μ
f
(
x
)
=
max
μ
min
x
L
(
x
,
μ
)
=
min
x
f
(
x
)
\min_x \max_\mu f(x)=\max_\mu \min_x L(x,\mu)=\min_x f(x)
minxmaxμf(x)=maxμminxL(x,μ)=minxf(x), 必须满足下述条件,也就是KKT条件:(推导过程会用到这些条件)
KKT条件:
∂
L
∂
x
∣
x
=
x
∗
=
0
(1*)
\frac {\partial L} {\partial x}|_{x=x^*}=0 \tag{1*}
∂x∂L∣x=x∗=0(1*)
λ
j
≠
0
(2*)
\lambda_j \neq 0 \tag{2*}
λj=0(2*)
μ
k
≥
0
(3*)
\mu_k \geq 0 \tag{3*}
μk≥0(3*)
μ
k
g
k
(
x
∗
)
=
0
(4*)
\mu_kg_k(x^*)=0 \tag{4*}
μkgk(x∗)=0(4*)
h
j
(
x
∗
)
=
0
j
=
1
,
2...
,
p
(5*)
h_j(x^*)=0 \quad j=1,2...,p \tag{5*}
hj(x∗)=0j=1,2...,p(5*)
g
k
(
x
∗
)
≤
0
k
=
1
,
2...
,
q
(6*)
g_k(x*) \leq 0 \quad k=1,2...,q \tag{6*}
gk(x∗)≤0k=1,2...,q(6*)
这些求解条件就是KKT条件。(1*)是对拉格朗日函数取极值时候带来的一个必要条件,要注意的是,这里的x可能是多维,比如
x
1
,
x
2
x_1,x_2
x1,x2,所以是对
x
1
,
x
2
x_1,x_2
x1,x2的偏导都等于0,(2*)是拉格朗日系数约束(同等式情况),(3*)是不等式约束情况,(4*)是互补松弛条件,(5*)、(6*)是原约束条件。
对于一般的任意问题而言,KKT条件是使一组解成为最优解的必要条件,当原问题是凸问题的时候,KKT条件也是充分条件。
稍微谈一下自己的理解,对于前面图片中的推导,最开始比较疑惑为什么由
μ
g
(
x
)
≤
0
\mu g(x) \leq 0
μg(x)≤0就可以推出(2)中的
max
μ
L
(
x
,
μ
)
=
f
(
x
)
\max_\mu L(x,\mu)=f(x)
maxμL(x,μ)=f(x),因为我认为既然
μ
g
(
x
)
≤
0
\mu g(x) \leq 0
μg(x)≤0,那么可能不会取到0这个值,而是为一个负数,也就是
L
(
x
,
μ
)
L(x,\mu)
L(x,μ)的最大值可能比
f
(
x
)
f(x)
f(x)的最大值要大。想了想,感觉应该是这里的
g
(
x
)
≤
0
g(x) \leq 0
g(x)≤0是一个约束范围,就比如限制
x
2
+
y
2
≤
1
x^2+y^2 \leq 1
x2+y2≤1,这就是一个圆的区域,我们这个范围上的点都是可以取得到的,所以圆上的点当然也可以取到,而当取圆上的点时就是
g
(
x
)
=
0
g(x)=0
g(x)=0时,所以g(x)肯定是可以取到0这个值的。
还有为什么
max
μ
max
x
f
(
x
)
=
min
x
f
(
x
)
\max_\mu \max_x f(x)=\min_xf(x)
maxμmaxxf(x)=minxf(x)?这是因为后面的f(x)和
μ
\mu
μ没有关系啊
对支持向量机中条件约束问题求解
前面的问题为:
min
w
,
b
1
2
∣
∣
w
∣
∣
2
\min_{w,b} \frac{1}{2} ||w||^2
w,bmin21∣∣w∣∣2
s
.
t
.
y
i
(
w
T
x
i
+
b
)
≥
1
s.t. \quad y_i(w^Tx_i+b) \geq 1
s.t.yi(wTxi+b)≥1
将约束改写成
s
.
t
.
1
−
y
i
(
w
T
x
i
+
b
)
≤
0
s.t. \quad 1-y_i(w^Tx_i+b) \leq 0
s.t.1−yi(wTxi+b)≤0
由前面图片中的推导得到的结论:
min
x
f
(
x
)
=
max
μ
min
x
L
(
x
,
μ
)
\min_x f(x)=\max_\mu \min_x L(x,\mu)
minxf(x)=maxμminxL(x,μ),我们可以先求
min
x
L
(
x
,
μ
)
\min_xL(x,\mu)
minxL(x,μ),也就是先求
min
w
,
b
L
(
w
,
b
,
α
1
,
.
.
.
,
α
n
)
\min_{w,b}L(w,b,\alpha_1,...,\alpha_n)
minw,bL(w,b,α1,...,αn)。
\quad
这里是要保证所有的点都满足上面的约束,所以最后约束条件的个数和总共的点数(或者说实例数)是一样的。则拉格朗日函数
L
(
w
,
b
,
α
1
,
.
.
.
,
α
n
)
L(w,b,\alpha_1,...,\alpha_n)
L(w,b,α1,...,αn)可以写成为:
L
(
w
,
b
,
α
1
,
α
2
,
.
.
.
α
n
)
=
1
2
∣
∣
w
∣
∣
2
+
∑
i
=
1
n
α
i
(
1
−
y
i
(
w
T
x
i
+
b
)
)
L(w,b,\alpha_1,\alpha_2,...\alpha_n)=\frac{1}{2}||w||^2+ \sum_{i=1}^n \alpha_i(1-y_i(w^Tx_i+b) )
L(w,b,α1,α2,...αn)=21∣∣w∣∣2+i=1∑nαi(1−yi(wTxi+b))
由上面的拉格朗日函数和前面说的KKT条件,考虑只有不等式约束的情况,我们可以得到下面的一些式子。
α
i
\alpha_i
αi就相当于高数中构造拉格朗日函数中的
λ
\lambda
λ,这里有多个约束,所以会有很多
α
\alpha
α
由(1*)可以得到:
∂
L
∂
w
=
w
−
∑
i
=
1
n
α
i
y
i
x
i
=
0
(1#)
\frac{\partial L}{\partial w}=w-\sum_{i=1}^n \alpha_i y_i x_i =0 \tag{1\#}
∂w∂L=w−i=1∑nαiyixi=0(1#)
∂
L
∂
b
=
∑
i
=
1
n
α
i
y
i
=
0
(2#)
\frac{\partial L}{\partial b}=\sum_{i=1}^n \alpha_i y_i =0 \tag{2\#}
∂b∂L=i=1∑nαiyi=0(2#)
这里面可能涉及到2范数求导的问题,这里就先不研究了,总之上面的式子是对的。还要说明的是
x
1
,
x
2
x_1,x_2
x1,x2…是不同的点,但是每一个不同的点会有许多维数,例如
x
1
x_1
x1可能会有横坐标也会有纵坐标可以记成
(
x
1
1
,
x
1
2
)
(x_1^1,x_1^2)
(x11,x12)。我们式子中的
y
y
y是对应的类别额,可以取-1,+1。(最前面说过一遍了已经)
由(3*)可以得到:
α
1
≥
0
,
α
1
≥
0...
α
n
≥
0
(4#)
\alpha_1 \geq 0,\alpha_1 \geq 0...\alpha_n \geq 0 \tag{4\#}
α1≥0,α1≥0...αn≥0(4#)
由(4*)可以得到前面的(2#)
∂
L
∂
b
=
∑
i
=
1
n
α
i
y
i
=
0
(2#)
\frac{\partial L}{\partial b}=\sum_{i=1}^n \alpha_i y_i =0 \tag{2\#}
∂b∂L=i=1∑nαiyi=0(2#)
由(6*)可以得到:
s
.
t
.
1
−
y
i
(
w
T
x
i
+
b
)
≤
0
(3#)
s.t. \quad 1-y_i(w^Tx_i+b) \leq 0 \tag{3\#}
s.t.1−yi(wTxi+b)≤0(3#)
说明一下,也就是说要满足KKT条件,我们才可以通过拉格朗日法求最大或者最小值。这里面有的KKT条件最开始已经满足了例如(3#),有的是为了满足KKT条件而出现的例如(1#)(2#)。
\quad
将(1#)和(2#)带入拉格朗日函数
L
(
w
,
b
,
α
1
,
.
.
.
α
n
)
L(w,b,\alpha_1,...\alpha_n)
L(w,b,α1,...αn)中,特别注意(1#)(2#)在化简式子中的作用,注意
x
i
,
x
j
,
w
x_i,x_j,w
xi,xj,w为列向量,注意求和符号后的变量如果和求和符号的下标i or j没有关系,就可以移到求和符号的外面或者里面 有:
min w , b L ( w , b , α 1 , . . . α n ) = min w , b { 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 n α i ( 1 − y i ( w T x i + b ) ) } = min w , b { 1 2 w T w + ∑ i = 1 n α i − ∑ i = 1 n α i y i w T x i − ∑ i = 1 n α i y i b } = min w , b { 1 2 ∑ i = 1 n α i y i x i T ∑ i = 1 n α i y i x i + ∑ i = 1 n α i − ∑ i = 1 n α i y i w T x i − b ∑ i = 1 n α i y i = min w , b { 1 2 ∑ i = 1 n ∑ j = 1 n α i y i α j y j x i T x j + ∑ i = 1 n α i − ∑ i = 1 n α i y i ∑ j = 1 n α j y j x i T x i } = − 1 2 ∑ i = 1 n ∑ j = 1 n α i y i α j y j x i T x j + ∑ i = 1 n α i \begin {aligned} \min_{w,b}L(w,b,\alpha_1,...\alpha_n)&=\min_{w,b}\{ \frac{1}{2}||w||^2+ \sum_{i=1}^n \alpha_i(1-y_i(w^Tx_i+b) ) \} \\ &=\min_{w,b}\{\frac{1}{2} w^Tw +\sum_{i=1}^n\alpha_i -\sum_{i=1}^n\alpha_iy_iw^Tx_i-\sum_{i=1}^n\alpha_i y_i b \} \\ &=\min_{w,b}\{\frac{1}{2} \sum_{i=1}^n \alpha_i y_i x_i ^T \sum_{i=1}^n \alpha_i y_i x_i +\sum_{i=1}^n\alpha_i -\sum_{i=1}^n\alpha_iy_iw^Tx_i - b\sum_{i=1}^n\alpha_i y_i \\ &=\min_{w,b} \{ \frac{1}{2}\sum_{i=1}^n \sum_{j=1}^n\alpha_iy_i \alpha_jy_j x_i^T x_j + \sum_{i=1}^n\alpha_i - \sum_{i=1}^n \alpha_iy_i \sum_{j=1}^n\alpha_jy_j x_i^T x_i \}\\ &= -\frac{1}{2}\sum_{i=1}^n \sum_{j=1}^n\alpha_iy_i \alpha_jy_j x_i^T x_j + \sum_{i=1}^n\alpha_i \end{aligned} w,bminL(w,b,α1,...αn)=w,bmin{21∣∣w∣∣2+i=1∑nαi(1−yi(wTxi+b))}=w,bmin{21wTw+i=1∑nαi−i=1∑nαiyiwTxi−i=1∑nαiyib}=w,bmin{21i=1∑nαiyixiTi=1∑nαiyixi+i=1∑nαi−i=1∑nαiyiwTxi−bi=1∑nαiyi=w,bmin{21i=1∑nj=1∑nαiyiαjyjxiTxj+i=1∑nαi−i=1∑nαiyij=1∑nαjyjxiTxi}=−21i=1∑nj=1∑nαiyiαjyjxiTxj+i=1∑nαi
所以:
min
w
,
b
1
2
∣
∣
w
∣
∣
2
=
max
α
1
,
.
.
.
,
α
n
min
w
,
b
L
(
w
,
b
,
α
1
,
.
.
.
α
n
)
=
max
α
1
,
.
.
.
,
α
n
{
−
1
2
∑
i
=
1
n
∑
j
=
1
n
α
i
y
i
α
j
y
j
x
i
T
x
j
+
∑
i
=
1
n
α
i
}
\begin{aligned} \min_{w,b} \frac{1}{2} ||w||^2 &= \max_{\alpha_1,...,\alpha_n} \min_{w,b}L(w,b,\alpha_1,...\alpha_n) \\ &=\max_{\alpha_1,...,\alpha_n} \{- \frac{1}{2}\sum_{i=1}^n \sum_{j=1}^n\alpha_iy_i \alpha_jy_j x_i ^Tx_j + \sum_{i=1}^n\alpha_i \} \end{aligned}
w,bmin21∣∣w∣∣2=α1,...,αnmaxw,bminL(w,b,α1,...αn)=α1,...,αnmax{−21i=1∑nj=1∑nαiyiαjyjxiTxj+i=1∑nαi}
我们已经将最开始的问题简化成只和
α
,
x
,
y
\alpha,x,y
α,x,y有关的问题了,其中
x
x
x点的坐标,
y
y
y是其所对应的类别 ,这两个是我们已知的。
α
\alpha
α是未知的,需要我们优化,但是要注意
α
\alpha
α也是有约束条件的,如(4#)(2#) 或所以最终的问题变成了:
max
α
1
,
.
.
.
,
α
n
{
∑
i
=
1
n
α
i
−
1
2
∑
i
=
1
n
∑
j
=
1
n
α
i
y
i
α
j
y
j
x
i
T
x
j
}
\max_{\alpha_1,...,\alpha_n} \{ \sum_{i=1}^n\alpha_i - \frac{1}{2}\sum_{i=1}^n \sum_{j=1}^n\alpha_iy_i \alpha_jy_j x_i ^Tx_j \}
α1,...,αnmax{i=1∑nαi−21i=1∑nj=1∑nαiyiαjyjxiTxj}
s
.
t
.
α
1
≥
0
,
α
1
≥
0...
α
n
≥
0
s.t. \quad \alpha_1 \geq 0,\alpha_1 \geq 0...\alpha_n \geq 0
s.t.α1≥0,α1≥0...αn≥0
∑
i
=
1
n
α
i
y
i
=
0
\sum_{i=1}^n \alpha_i y_i =0
i=1∑nαiyi=0
一般还会引入松弛变量C(现在没搞明白松弛变量是怎么回事),令所有的
α
<
C
\alpha < C
α<C,所以最后可以写成:
max
α
1
,
.
.
.
,
α
n
{
∑
i
=
1
n
α
i
−
1
2
∑
i
=
1
n
∑
j
=
1
n
α
i
y
i
α
j
y
j
x
i
T
x
j
}
\max_{\alpha_1,...,\alpha_n} \{ \sum_{i=1}^n\alpha_i - \frac{1}{2}\sum_{i=1}^n \sum_{j=1}^n\alpha_iy_i \alpha_jy_j x_i^Tx_j \}
α1,...,αnmax{i=1∑nαi−21i=1∑nj=1∑nαiyiαjyjxiTxj}
s
.
t
.
0
≤
α
≤
C
s.t. \quad 0 \leq \alpha \leq C
s.t.0≤α≤C
∑
i
=
1
n
α
i
y
i
=
0
\sum_{i=1}^n \alpha_i y_i =0
i=1∑nαiyi=0
这一篇就先写到这吧,~
参考
https://www.jianshu.com/p/e74eb43960a1(这是latex公式的一些用法)
https://zhuanlan.zhihu.com/p/88249368?utm_source=qq(这是latex公式的一些用法)
https://www.cnblogs.com/xxrxxr/p/7535587.html
b站深度之眼官方帐号
https://blog.csdn.net/hao5335156/article/details/82320082
https://www.cnblogs.com/ooon/p/5721119.html
https://zhuanlan.zhihu.com/p/99945521(拉格朗日乘数法推导)
https://blog.csdn.net/lijil168/article/details/69395023(不等式约束拉格朗日乘数法推导)