摘抄自https://zhuanlan.zhihu.com/p/28958014, 膜拜

最闪光的就是下面加粗的两句话,其他建议直接看原链接

我们先以经典的线性可分的二分类问题为例子,从这个非常直观的例子切入SVM的核心思想,对比SVM和神经网络的不同。

[搬运] SVM和神经网络的区别

我要找一条线把两类点分开,如上图所示。对于上图的情况,可以找到无数条线能把这两类完全分开的(处于两条虚线之间的线都是可行解)。如果用传统的神经网络来做这个分类问题的话,最终得到的是这无数条线当中的一条而已,而且如果是采用BP的话由于每次初始点选择不一样的话每次得到的结果不一定会一样。如果用SVM同样来做这个分类问题的话,那么得到的就是最中间那条线。SVM这样一个机制实际上是要求不仅仅把两类分开,而且要尽可能的离两边都远一些。如果把仅仅分开这两类的解称为可行解,那么SVM就是在可行解里边找一个最好的,采用优化的思想来这样理解SVM显得更加有趣一些。也就是神经网络仅仅是找了一个可行解,SVM不满足现状从这些可行解里边找了一个最优解。

加点自己的思考(仅供参考):深度学习实际上是完全依赖于样本的,如果一个训练样本分类错误了,那么反向传播就会让这条直线向着将该样本分类正确的方向去移动。 如果所有的样本都分类正确了,那么模型不会再移动(也就是说,深度学习学到的模型可能会停止在无数条线中的任一条。)

另外我们想一想,如果样本数量够多的话,实际上两组样本之间的间隔(margin) 也会逐渐缩小,导致SVM和深度学习的解逐渐趋向相同。(当然,这里说的都是over-fitting的模型,保证训练集正确率100%的模型,SVM也是硬间隔SVM)。

既然是最优解那么如何用数学表达出来呢? 很多的SVM书都有如下的一个优化问题形式:

[搬运] SVM和神经网络的区别

其中 (w,b) 就是我们要找的直线的斜率和截距, (xi,yi) 是图中第i个点的坐标值(是已知的),一共有m个点。

至于这个优化问题的形式是怎么来的这里不进行展开了,具体可以参考SVM相关书籍。我们可以看到这是一个QP问题,约束线性,目标函数二次,自然也是一个凸优化问题了。到这里我们实际上可以直接求解这个QP问题也是可以的。而采用LR转化成对偶问题之后,我们就可以得到后边,关于支持向量还有kernal这些概念了,同时和直接求解QP比较来看,转出对偶问题的求解更加效率一些。那么我们就套用LR方法把约束放上去,得到如下形式:

[搬运] SVM和神经网络的区别

由于之前说了,如果S1是凸优化问题,且满足Slater条件的话,那么就满足强对偶性,也就是求解对偶问题和求解原问题是等价的。在这里我们知道S1是凸优化问题,Slater条件也容易验证满足。这就是SVM的一个数学基础,没有这个强对偶性SVM就没有那么漂亮。

得到 L(w,b,lambda) ,实际上我们借助KKT条件就能导出一个关于SVM的类似解析解的形式,这样一个形式比直接求解原问题S1要快的多。具体过程可以参考 零基础学Support Vector Machine(SVM),这里就不赘述了。

 

 

相关文章: