机器学习中,许多优化算法可以归结为凸优化问题,像正则化。我觉得SVM可以说是凸优化的一个非常优秀的应用。随着机器学习的深入,慢慢去推导各种机器学习的算法,在推导SVM的算法过程并不顺利,最先就卡在SVM的对偶上,从推导公式上觉得并没有问题,可总觉得抽象晦涩,没有直观的感觉。为此,找了许多关于SVM的资料,仍然如此,最后只得去快速刷一遍凸优化,总算理解了这个问题。
首先,我们来看一下SVM优化目标的拉格朗日方程:
我们假定a是一个常数,将上式看作关于(w,b)的函数,则有
只要违反约束,这个函数值马上会做出惩罚。
令
,约束项
由凸优化中的定义可以知道,这是凸二次规划线性约束问题,是一个凸函数,它必然有极小值。它的意义可以这么理解,对于给定的w,b,找出一个a,使得该函数值最大。为什么这么做呢?假定w,b使得约束成立,a为非负,要达到最大值,a只能为0,函数值为。而当约束不成立时,函数值必然会等于。所以,通过在(w,b)两个参数构建的空间中搜索后,我们可以得到集合包含了和,这里w是一个变量,按照我们的优化目标,我们是需要找到一个最小的w,使得最小。
那么通过 ,我们最终可以得到优化目标的解。但是,对这个问题没办法直接求解
对原问题做求极值,得到仍然是原来的约束条件。
凸优化的核心 对偶 来了。
我们先假设w*,b*,a*是最优解,则有,这是原问题的全局最优解,找不到比这个更好的解了。
原问题的对偶问题,就是把原问题的max和min交换一下
先看这个函数, ,对于给定的a,求出使其最小的(w,b),由于(w,b)并没有什么约束,可以任意取值。假设a = 0时候,约束失效,这个函数值无疑为0,只要w允许取零向量。
对于上式而言,假设w在可行解内,在w不变的时候,我们总可以找到一个b使得约束成立。使得上式的最小值的(w,b)总是落在可行解范围内。那么w有没有可能落在可行解之外呢,答案是没有可能。假设w在可行解之外,则有
那么我们可以不改变w的模的前提下,进行旋转w,调整b,使得(w,b)成为可行解
因此,w总是落在可行解中。
我们只需要在(w,b)的可行解里面,对原问题和对偶问题进行等价性比较。(w,b)是存在一个可行解范围的,无论是w还是b中的每一个元素,不可能像a任意取。好了,关键点来了,在可行解里面,对于任意给定的a1而言,总有
推广一下,在可行解空间中,w,b,a都满足以下条件
下面用一张简陋的图描述一下整个情况。wi,bi,ai为都是向量,不是标量,为了简单起见,每一列代表一个a向量的取值,每一行代表了一个(w,b)的一个组合。这样,二维矩阵表示了所有w,b,a组合
可以看到新问题的最优值q*是小于等于p*。对于SVM来说,只要满足KKT条件,两者是等价,就是强对偶问题。KKT又是一个复杂的问题,这里不展开讨论。