Press "Enter" to skip to content
写在前面
- 昨天, 我们对SVM进行了大致的介绍, 相信大家对支持向量机都有了个大致的了解, 今天我们将继续学习对偶问题.
对偶问题
- 我们希望求得大间隔划分超平面所对应的模型:

其中,
和
是模型参数. 注意到其本身是一个凸二次规划(Convex Quadratic Programming)问题, 能直接用现成的优化计算包求解, 但我们可以有更高效的办法. 使用拉格朗日乘子法可得到其'对偶问题'(Dual Problem). 具体来说, 就是对每条约束添加拉格朗日乘子
, 则该问题的拉格朗日函数可写为:

- 其中
. 令
对
和
的偏导为零可得:


- 最终得到:

s.t. 

- 解出
后, 求出
与
即可得到模型:


- 解出
后, 求出
与
即可得到模型:


- 上述过程满足KKT(Karush-Kuhn-Tucker)条件, 即要求:

- 于是, 对任意训练样本
, 总有
或
. 若
, 则该样本不会对
有任何影响; 若
, 则必有
, 所对应的样本点位于最大间隔边界上, 是一个支持向量. 这显示出支持向量机的一个重要性质: 训练完成后, 大部分的训练样本都不需保留, 最终模型仅与支持向量有关.
- 不难发现, 这是个二次规划问题, 可使用通用的二次规划算法来求解; 然而该问题的规模正比于训练样本数, 这回在实际任务中造成很大的开销. 为了避开这个障碍, 人们通过利用问题本身的特性, 提除了很多高效算法, SMO(Sequential Minimal Optimization)是其中一个著名的代表.
- SMO的基本思路是先固定
之外的所有参数, 然后求
上的极值. 由于存在约束
, 若固定
之外的其他变量, 则
可由其他变量导出. 于是, SMO每次选择两个变量
和
, 并固定其他参数. 这样, 在参数初始化后, SMO不断执行如下两个步骤直至收敛:
1.选取一对需更新的变量
和
;
2.固定
和
以外的参数, 求解获得更新后的
和
.
- SMO算法之所以高效, 恰由于在固定其他参数后, 仅优化两个参数的过程能做到非常高效. 具体来说, 仅考虑
和
时, 可重写为:

- 其中:

- 是使
成立的常数. 用:

- 注意到对任意支持向量
都有
, 即:

- 其中
为所有支持向量的下标集. 理论上, 可选取任意支持向量并通过求解释获得
, 但现实任务中常采用一种更鲁棒的做法: 使用所有支持向量求解的平均值:

写在后面
- 今天, 我们学习了SVM的对偶问题, 并对其原理进行了大致的介绍.
- 明天, 我们将会继续学习, SVM的核函数.
Related
Be First to Comment