浅析SVM中的对偶问题

浅析SVM中的对偶问题

关于SVM对偶问题求解的博客有很多,但是关于为什么要进行对偶问题的分析却很零散,这里做一个总结

1. 为什么要研究对偶问题?

广义上讲,将原问题的研究转换为对偶问题的研究主要有一下几个优势:

  • 原始问题的约束方程数对应于对偶问题的变量数, 而原始问题的变量数对应于对偶问题的约束方程数, 而约束方程数目越少, 优化问题求解的复杂度越低
    如在线性SVM的原问题中,样本量为N
    \[ p^* = min \ \frac{1}{2}||w||^2 \\ s.t. \ y_{i}(w^{T}x_{i} + b ) \geq 1 \]
    其中2个变量:w, b,但在优化目标函数中只有1个w   N个限制条件

    在线性SVM的对偶问题中
    \[ d^* = min ( \sum\limits_{i=1}^{N}\sum\limits_{j=1}^{N}\alpha_{i}\alpha_{j}y_{i}y_{j}x_{i}x_{j} - \frac{1}{2}\sum\limits_{i=1}^{N}\alpha_{i} )\\ s.t. \ \sum\limits_{i=1}^{N}\alpha_{i}y_{i} = 0\\ \alpha_{i} \geq 0 \]
    其中N个变量: \(\alpha_{i}: \ i=1,2...N\),1个限制条件

  • 无论原问题本身是不是一个凸优化问题, 对偶问题总是可以转换为凸优化问题来研究;当原问题的难以求解时, 对偶问题可以给出一个下界,即:
    \[ d^{*} \leq p^{*} \]

2. 在SVM中研究对偶问题的优势?


假设训练集一共有N个样本,每个样本点维数为n,映射到特征空间中的维度为d
原问题的求解形式为:\(f(x) = sign(w^{T}\phi(x_{i}) + b)\)  所需计算的乘法次数为:d
对偶问题的求解形式为:\(f(x) = \sum\limits_{i=1}^{N}\alpha_{i}y_{i}\kappa(x_{i}, x_{j}) + b\)  可以通过KKT条件推导,只有支撑向量对应的\(\alpha_{i}\)不为0,设支撑向量的总个数为\(N_{sv}\),对偶问题所需计算的乘法次数为:\(N_{sv}n\) (最少仅由2个支撑向量就可以确定一个超平面,见< <统计学习方法> >P101)
当训练样本总数不大,特征空间的维度d>>n时,选择在对偶问题中求解将有效减少计算量
同时,当前解决对偶问题已经有了非常高效的算法,如SMO

 

3. 为什么在实际问题中原问题反而应用得更多?


主要有三点:

  • 当训练集很大时,支撑向量很多,计算量:\(N_{sv}n >> d\)
  • 当求解一个SVM的近似解时,研究原问题反而比对偶问题更好(可以参考Chapelle等人的论文)
  • 对偶问题的Gram矩阵的大小为N * N,当训练集很大时,如N = \(10^{6}\),N * N = \(10^{12}\),1T,内存根本开不了这么大的空间,训练都没办法训练!

4. 参考资料

Advantages of dual over primal solution of an optimization problem
Why do we prefer Dual Problem over Primal Problem in convex optimization
Why study duality in optimization?

猜你喜欢

转载自www.cnblogs.com/MoonJian/p/11165725.html