文章目录
前言
上一篇介绍了 一个点到直线距离的向量理解。
知道这个点到超平面的距离公式:
d i s t a n c e = ∣ d ∣ = ∣ w T x + b ∣ ∥ w ∥ \begin{array}{c} distance = \left |d \right | = \frac{\left |w^Tx+b\right | }{\left \| w \right \| } \end{array} distance=∣d∣=∥w∥∣wTx+b∣
我们为什么要强调这个点的概念呢,很简单,因为这个点表示的就是数据点,也就是模型的特征。有多少个特征也就意味着这个 x 的长度大小 。
接下来将介绍SVM的原理以及详细的 拉格朗日对偶问题 推导过程。
一、SVM问题的基本形式
以二分类为例子
对于一组已经知道的数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . ( x N , y N ) } \begin{array}{c} D=\left \{(x_1,y_1),(x_2,y_2),...(x_N,y_N) \right \} \end{array} D={
(x1,y1),(x2,y2),...(xN,yN)}其中
- x 表示为特征向量 x = ( x 0 , x 1 , . . . , x k ) T \begin{array}{c} x = (x_0,x_1,...,x_k)^T \end{array} x=(x0,x1,...,xk)T表示有k个特征.
- D 中有N 个数据样本。
- y表示的是改数据集的标签 label , y i = + 1 \begin{array}{c} y_i = +1 \end{array} yi=+1 与 y i = − 1 \begin{array}{c} y_i = -1 \end{array} yi=−1 分别标记为二分类的两个类。
为什么一个是+1,一个是-1?
前面我们推导过计算点到直线的距离的时候要再分子加个绝对值,这是因为一个超平面必然会划分出两个半空间,超平面是一个等于0 的方程。在超平面的上方的为正,则在下方的为负数。所以将一类标记为+1,一类标记为-1 时,可以化掉绝对值符号,用来表示距离:
d i s t a n c e = ∣ w T x + b ∣ ∥ w ∥ = y i ( w T x + b ) ∥ w ∥ \begin{array}{c} distance = \frac{\left | \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b \right | }{\left \| w \right \| } = \frac{y_i(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b)}{\left \| w \right \|} \end{array} distance=∥w∥∣wTx+b∣=∥w∥yi(wTx+b)
由上图可知,要区分D中的两个类目标就是找出一个合理的超平面,图中的直线就是一个超平面。这个超平面必须具备两个功能。
1. 尽可能地让两个类别分在两个不同的半空间。
2. 两个类的点到超平面的距离越大越好。
超平面可以表示为:
w T x + b = 0 \begin{array}{c} \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b = 0 \end{array} wTx+b=0
显然两个半空间就是
w T x + b > 0 \begin{array}{c} \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b> 0 \end{array} wTx+b>0和 w T x + b < 0 \begin{array}{c} \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b <0 \end{array} wTx+b<0
在SVM问题中,这由于标签 y 标记为+1 ,-1 ,在数学上这两个半空间需要做小小改动。也就是:
{ w T x + b ⩾ + 1 , y i = + 1 w T x + b ⩽ − 1 , y i = − 1 \begin{array}{c} \left\{\begin{array}{ll} \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b \geqslant+1, & y_{i}=+1 \\ \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b \leqslant-1, & y_{i}=-1 \end{array}\right. \end{array} {
wTx+b⩾+1,wTx+b⩽−1,yi=+1yi=−1
为什么需要这样改动?/为什么是1?
这是因为要描述最优的超平面,最优在这里的含义就是尽可能地讲连个类别分开。在距离上定义上版空间要>1 ,下半空间<-1 是为了引出一个两个平行直线之间的 间隔 这一概念,然后“两个分类的数据点点到划分超平面的距离越远越好”问题就可以转换为 间隔越大越好。如图:
这样很容易得到这个间隔的大小为 γ = 2 ∥ w ∥ \begin{array}{c} \gamma = \frac{2}{\left \| w \right \| } \end{array} γ=∥w∥2,也就是优化的目标。
“尽可能地让两个类别分在两个不同的半空间。”则是优化的约束条件,不能让样本点落在间隔之内。
也就是样本点到超平面的距离大于1,也就是: y i ( w T x + b ) ≥ 1 \begin{array}{c} y_i(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b)\ge 1 \end{array} yi(wTx+b)≥1
为什么是1?不用纠结这个数值,他就是表示一个“间隔”的意义,后面我们知道只需要最小化分母即可,与分母无关,这是一种问题的等价思想。
将它表示为凸优化问题:
max 2 ∥ w ∥ s . t . y i ( w T x i + b ) ≥ 1 , i = 1 , 2 , … , N \begin{array}{c} \max\frac{2}{\|w\|} \\ s.t. \quad y_{i}\left(\boldsymbol{w}^{\boldsymbol{T}} \boldsymbol{x}_{\boldsymbol{i}}+b\right) \geq 1, \quad i=1,2, \ldots, N \end{array} max∥w∥2s.t.yi(wTxi+b)≥1,i=1,2,…,N
最大化 γ = 2 ∥ w ∥ \begin{array}{c} \gamma = \frac{2}{\left \| w \right \| } \end{array} γ=∥w∥2, 在凸优化问题上与最小化分母 ∥ w ∥ \begin{array}{c} \left \|w \right \| \end{array} ∥w∥是等价的。因此就可以得出SVM 问题的基本形式:
min 1 2 ∥ w ∥ 2 s . t . y i ( w T x i + b ) ≥ 1 , i = 1 , 2 , … , N \begin{array}{c} \min \frac{1}{2}\|w\|^{2}\\ s.t. \quad y_{i}\left(\boldsymbol{w}^{\boldsymbol{T}} \boldsymbol{x}_{\boldsymbol{i}}+b\right) \geq 1, \quad i=1,2, \ldots, N \end{array} min21∥w∥2s.t.yi(wTxi+b)≥1,i=1,2,…,N
二、拉格朗日对偶算法
这就是一个典型的条件最值问题 (凸优化问题,约束最优化问题)
- 插上一句:如果你学过高数,求解一个条件最值问题的时候,通常用拉格朗日乘子法来解。
1.构造拉格朗日函数,
2.分别求各个参数的一阶偏导数=0,
3.分情况讨论,求解最值。 - 在最优化理论里面步骤3就是作为的KKT条件。
什么叫做对偶性?
- 回顾语文:对偶的修辞手法。“海阔凭鱼跃,天高任鸟飞。”这就是对偶。
- 那么拉格朗日的对偶性也是同样的含义:
简单来说: 一个极小极大问题,它的对偶问题就是极大极小问题。
以下latex 图片识别次数有限。手推了。
用拉格朗日对偶算法求解SVM的问题
min 1 2 ∥ w ∥ 2 s . t . y i ( w T x i + b ) ≥ 1 , i = 1 , 2 , … , N \begin{array}{c} \min \frac{1}{2}\|w\|^{2}\\ s.t. \quad y_{i}\left(\boldsymbol{w}^{\boldsymbol{T}} \boldsymbol{x}_{\boldsymbol{i}}+b\right) \geq 1, \quad i=1,2, \ldots, N \end{array} min21∥w∥2s.t.yi(wTxi+b)≥1,i=1,2,…,N
构造拉格朗日函数:
L ( x , λ , ν ) = f 0 ( x ) + ∑ i = 1 m λ i f i ( x ) + ∑ i = 1 p ν i h i ( x ) \begin{array}{c} L(x, \lambda , \nu )=f_0(x)+\sum_{i=1}^{m} \lambda _{i} f_{i}(x)+\sum_{i=1}^{p} \nu _{i} h_{i}(x) \end{array} L(x,λ,ν)=f0(x)+∑i=1mλifi(x)+∑i=1pνihi(x)
原问题是拉格朗日函数的极小极大,则其对偶问题是拉格朗日函数的极大极小。
因此SVM问题的对偶算法求解思路是:
-
构造拉格朗日函数 L ( x , λ , ν ) \begin{array}{c} L(x,\lambda ,\nu) \end{array} L(x,λ,ν)
-
求一阶偏导数=0的x,代入拉格朗日函数,目的是找到最小的 L ( x , λ , ν ) \begin{array}{c} L(x,\lambda ,\nu) \end{array} L(x,λ,ν)使得求出对偶函数:
-
转化为通过优化拉格朗日乘子来优化出最大的对偶函数问题:
具体步骤:
- 非等式约束一律化为左边<= 右边的形式
min 1 2 ∥ w ∥ 2 s . t . − y i ( w T x i + b ) + 1 ≤ 0 , i = 1 , 2 , … , N \begin{array}{c} \min \frac{1}{2}\|w\|^{2}\\ s.t. \quad -y_{i}\left(\boldsymbol{w}^{\boldsymbol{T}} \boldsymbol{x}_{\boldsymbol{i}}+b\right) +1\le0, \quad i=1,2, \ldots, N \end{array} min21∥w∥2s.t.−yi(wTxi+b)+1≤0,i=1,2,…,N - 构造拉格朗日函数:
化简一下等价于:
- 求w,b 的一阶偏导数,并且令一阶偏导数为0 得到:
即可得到:
- 将上面等式代入原拉格朗日函数即可得到对偶函数:
所以对 对偶函数 优化 λ \lambda λ 的极大 既得到原问题的对偶问题:
对偶问题描述:
三、对偶性以及强对偶的成立条件
KKT条件
- 先看下面的 【 对偶问题 , 拉格朗日函数 , 原问题的关系】
- 原问题和对偶问题等价时,就是强对偶,即存在对偶最优解和原问题最优解等价,要先知道中间这个等号成立的条件是什么。
回顾下高数里面用拉格朗日乘子法求解条件约束问题的最值问题:
-
对于约束问题,先构造拉格朗日函数,高数里考试一般是等式约束。
-
对拉格朗日函数的所有参数都求偏导,然后令偏导为0.得出几个约束条件组。
-
对符合条件的 解代入原函数,求取最值。
以上为拉格朗乘子法求解条件约束问题最值的步骤。为什么要说这个求解方法?因为这跟KKT条件极其相像。或者说步骤2 的三个约束条件 就是KKT条件。
求的最值的解一定要符合KKT条件,这是充分条件。
那么什么是KKT条件呢?KKT条件有三个结构 -
1.原问题的约束条件
-
2.对偶问题的约束条件----->非等式约束的拉个朗日乘子
-
3.互补松弛条件 —>下面细说一下
-
4.梯度条件 -->偏导为0
,对于一个拉格朗日函数来说,是怎么得出其KKT条件的呢?
KKT 条件:
1.原问题的约束条件:
2.对偶问题的约束条件:
这个就是拉格朗日乘子的非等式约束的乘子,要求是大于等于0.所以对偶约束为:
3.互补松弛条件与梯度条件
这个互补松弛是什么概念呢?这是一个原目标函数的最优解与对偶函数最优解的相等。其中下面公式的 x ∗ , λ ∗ , ν ∗ \begin{array}{c} x^*,\lambda ^*,\nu ^* \end{array} x∗,λ∗,ν∗表示的是原问题和对偶问题的最优解,那么依照这样的可以得出以下推导:
-
从(1)到(2),不难推断出,优化x取最小值的解,必须是最优解,
显然这必要要求这个在最优解取值时一阶偏导数为0,这就是KKT梯度条件。也就是拉格朗日函数的原函数 参数x 的偏导必须为0。
这就是KKT条件4,梯度条件。
这也是为什么拉格朗日乘子法需要求偏导取0 的做法。
(可能你会问对拉格朗日乘子求偏导又是为何呢?)
很简单,对拉格朗日乘子求导得到的其实就是KKT条件1 原问题的初始约束条件。 -
再看(2),到(3),这个步骤成立的条件是什么?我们看其第二项,非等式约束项,拉格朗日乘子与非等式约束相乘,一个为大于等于0,一个为小于等于0,那么这一项必然是小于等于0,也就是:
要使(2)到(3)成立必须要上述不等式条件取等号! 这就是KKT互补松弛条件:
 < 0 , i = 1 , … , m , A x = b , \begin{array}{c} f_{i}(x)<0, i=1, \ldots, m, A x=b, \end{array} fi(x)<0,i=1,…,m,Ax=b,那么凸问题和它的对偶问题一定是强对偶。
(relint D 的含义就是既满足不等式约束,又满足等式约束的点集)
这就是强对偶的条件,SCQ 条件还可以用另一句经常听到的话“拉格朗日函数存在鞍点”,但是这也不是充要条件,因为没有鞍点也可以强对偶,拉格朗日函数有鞍点一定是强对偶。这里不在证明。
如果你不懂什么是鞍点,来看一下这个马鞍的形状,来脑补一下极大极小,和极小极大,留给大家思考。