原理就是这么简单 机器学习算法 - SVM上篇(理论基础)

Date: 02/01/2018

在学习SVM的时候,很多小伙伴总是觉得这个高大上的算法不好理解,学习的时候还有点印象,但是时间一长,又忘记了。
随着学习进一步的理解我发现数学理论是理解SVM必不可少的要素。

那需要什么数学理论才能将SVM算法理解的深刻到位呢?

答案: 就是这些凸优化的知识(拉格朗日函数,对偶函数,KKT条件

很多小伙伴说看见数学公式和这些抽象的概念推导就感觉到头痛。

如果你是这样的小伙伴那这篇文章就很适合你。

接下来我会用很直观的角度来描述SVM的必备数学知识:

拉格朗日函数,对偶函数,KKT条件

拉格朗日函数

首先 我们都知道无约束的优化问题(例如:线性回归),我们可以用梯度下降法和拟牛顿法等方法来进行求解,这很好理解,但是针对有约束的优化问题(例如:SVM),我们该怎么办呢?

聪明的小伙伴可能会想到能不能把有约束优化问题转化成无约束的优化问题呢?

答案是肯定的,那么就要用到我们要介绍的第一个利器“拉格朗日函数”。下面有个例子:
我们有如下的优化目标:


1.JPG

其中 subject to 表示约束条件, 通常来讲约束条件分为 不等式约束条件等式约束条件

我们第一个主角拉格朗日函数就是将这两种约束条件和目标函数放入同一个函数中,那么我们只需要关注这个新的函数就可以了。(是不是觉得拉格朗日函数没那么难理解了呢?)

下面就是拉格朗日函数:


2.PNG

fi(x) 为不等式约束 就是上面的h1(x)
vi(x) 为等式约束 就是上面的h2(x)

和 v 被称为对偶变量(只是个名字没什么大不了)

  • 其中 >=0, 这个需要好好理解一下, 因为fi(x) 需要<=0 所以如果当fi(x)不满足约束条件的时候,也就是fi(x)>0时 要进一步惩罚使得这一项成为一个更大的数 所以 i fi(x) 要保证和 fi(x) 保证同号。
    从而得到 i * fi(x) <= 0

  • 其中 hi(x)= 0, 因为是等式约束的部分,所以都是等于0的
    所以 vi * hi(x) = 0

那么为了使得 L(x, ,v)= f0(x),我们就可以不关心约束项的部分了。
其实就是让约束等于0。

那我们该怎么办呢?
请注意 : 入*i fi(x) <= 0 , vi * hi(x) = 0 , 那他们两个和的最大值不就是0嘛!
也就是取一个max即可,即如下:


3.PNG

这样我们原来的优化问题就变成了:

min max(L(x, ,v))

那变型成这样约束为0的式子之后该怎么办呢?
接下来就是我们要介绍的对偶理论可以很好的解决这个问题。

对偶

首先我先给出对偶函数的定义:


4.PNG

我们可以看到 对偶函数只不过就是把拉格朗日函数以(,v)为变量,取得使其最小的函数嘛,请注意这时候变量不是x哦!

我们再来仔细看看这个函数,因为此时变量是(,v),
我们也可以有如下定义

  • Z = [,v] ( 变量 )
  • F = [f(x),v(x)] (系数)
  • B = f0(x) (偏置)

那么原来的g函数也就变成了 g(,v) = min ( F.T * Z + B ), 其中 f(Z) = F.T * Z + B是一个仿射函数。

这样很清晰的可以得出这个g 是 f(Z)的逐点下确界 (也就是把每项取最小)。

并且我们知道有如下结论:
结论一,所有仿射函数都是即凸且凹函数(Boyd 的 《Convex Optimization》)
结论二,凹函数的逐点下确界还是凹函数(Boyd 的 《Convex Optimization》)

那么可以得出对偶函数是一个凹函数,那么它的局部最大解,即是全局最大解,直观的认识如下图:


5.png

这个结论就非常的重要,不论原函数有多么复杂,有多么的难优化,但是它的对偶函数总是一个凹函数,总能找到最大的点。
到这里我们已经将对偶函数解释清楚了。

那么问题来了:

对偶函数又是怎么运用而来获得原函数的最优解的呢?

首先我们重新看一下之前拉格朗日函数的形式:

min max(L(x, ,v))

其中max(L(x, ,v)) = f0(x). 所以拉格朗日函数的最优解必然是
Optimal = min f0(x).

刚才我们又得到对偶函数
其中:

  • i * fi(x) <= 0
  • hi(x)= 0
  • vi * hi(x) = 0

那么 max g(,v) <= f0(x)

那么也就是说对偶函数的最大值小于等于原拉格朗日函数的最小值

那么如果对偶函数的最大值恰好等于拉格朗日函数的最小值, 那么用对偶函数来解原问题就会变得很简单。(此时被称为强对偶

怎么才能得到强对偶呢?接下来就是我们要讲的KKT条件了。

KKT 条件

我们现在已经知道了 KKT 条件其实就是得到强对偶的充分必要条件,那它具体都是些什么条件呢?

我们重新看一下刚才的对偶函数 g(,v)

2.PNG

其中:

  • i * fi(x) <= 0
  • hi(x)= 0
  • vi * hi(x) = 0

若要取得他的最大值。

最重要的一条: 让 i * fi(x) 这一项等于0

若x* 是取得最优的x 那么KKT条件如下:

1 - fi(x) <=0
2 - hi(x
) = 0
3 - i >= 0
前三条很简单之前已经讲解过

4 - 入*i * fi(x) = 0
第四条就是最重要的一条, 其中 i 和 fi(x) 不全为 0

5 - (∂L(x,λ,μ))/∂x |(x=x* )=0
第五条就是让其梯度为0,因为极值点梯度为0

到现在我们已经一环扣一环的讲解了这三个理解SVM的必备数学推导。

其实SVM就是一个满足KKT条件的有约束优化问题,如果具备了这些理论基础我相信记忆SVM会变得非常有层次。

接下来的文章我会讲解到底SVM是怎么运用这些原理来进行分析的解决的,如果你已经了解了本篇文章的所有内容,相信SVM会变得非常简单!

由于作者水平有限,如有错误请多多包涵,欢迎指正!非常感谢!

  • Boyd, Stephen, and Lieven Vandenberghe. Convex optimization. Cambridge
    university press, 2004.

  • 李航,《统计学习方法》

你可能感兴趣的:(原理就是这么简单 机器学习算法 - SVM上篇(理论基础))