作者:向日葵
引子
前面一节讲过,Vladimir Vapnik的出现,在神经网络的发展过程中起到了很关键的作用,而这种所谓的作用就是挑战。Vladimir Vapnik到底提出了什么理论能有这么大的影响呢?大家都非常熟悉的分类方法:支持向量机(SVM)
Vladimir Vapnik
支持向量机(SVM)
Vapnik等人在多年研究统计学习理论基础上对线性分类器提出了另一种设计最佳准则。其原理也从线性可分说起,然后扩展到线性不可分的情况。甚至扩展到使用非线性函数中去,这种分类器被称为支持向量机(Support Vector Machine,简称SVM)。支持向量机的提出有很深的理论背景。换句话说,SVM的理论基础不是那么的好理解的。
SVM主要是针对线性可分情况进行分析,对于线性不可分的情况,通过使用非线性映射算法将低维输入空间线性不可分的样本转化为高维特征空间使其线性可分,从而使得高维特征空间采用线性算法对样本的非线性特征进行线性分析成为可能;以前讲升高维度处理问题,现在讲降维攻击。
函数间隔(functional margin)和几何间隔(geometric margin)
从下图可以看出,把x和o分开来,有非常多的直线能够把它区分出来,那什么样的直线是最优的呢?最优的过程可以取函数间距过程,每个样本到直线的垂直距离和他的分类乘积最大为最优,距离自带方向,分类也带正负,因此函数间隔代表了我们认为特征是正例还是反例的确信度。一条直线的标识方式有多种(参数的倍数也能代表同一条直线),这样就带来参数的多样性,需要采用归一化解决。
通过推到可以得到:
全局的几何间隔:
最优间隔分类器(optimal margin classifier)
回想前面我们提到我们的目标是寻找一个超平面,使得离超平面比较近的点能有更大的间距。也就是我们不考虑所有的点都必须远离超平面,我们关心求得的超平面能够让所有点中离它最近的点具有最大间距。形象的说,我们将上面的图看作是一张纸,我们要找一条折线,按照这条折线折叠后,离折线最近的点的间距比其他折线都要大。形式化表示为:
这下好了,只有线性约束了,而且是个典型的二次规划问题(目标函数是自变量的二次函数),处理二次规划问题有现成的方法,但需要较好的数学处理能力。求出w,b就能寻找到超平面,通过寻找一个线性的超平面来达到对数据进行分类的目的。不过,由于是线性方法,所以对非线性的数据就没有办法处理了,核函数能处理非线性的情况。
核函数(Kernels)
图中的两类数据,分别分布为两个圆圈的形状,不论是任何高级的分类器,只要它是线性的,就没法处理,SVM 也不行。因为这样的数据本身就是线性不可分的。
SVM 处理这种分类的方法,是把他们先投影到两外一个坐标下,再采用之前线性的方法进行处理。
对于非线性的情况,SVM 的处理方法是选择一个核函数,通过将数据映射到高维空间,来解决在原始空间中线性不可分的问题。由于核函数的优良品质,这样的非线性扩展在计算量上并没有比原来复杂多少,这一点是非常难得的。当然,这要归功于核方法——除了 SVM 之外,任何将计算表示为数据点的内积的方法,都可以使用核方法进行非线性扩展。
svm方法有很强数学理论基础,svm的方法被大量的使用在图片识别,语音识别上,都取到了很好的效果。成为了90年代到现在较为流行的算法。
90年代,在贝尔实验室里,Yann Lecun和 Vapnik 常常就 神经网络和 SVM 两种技术的优缺点,常常讨论得非常的深入,慢慢的形成了svm方法的支持者和神经网络的信徒。
Scholkopf是Vapnik的大弟子,支持向量机与核方法研究的领军人物。据Scholkopf说,Vapnik当初发明支持向量机就是想’干掉’神经网络(He wanted to kill Neural Network)。支持向量机确实很有效,一段时间支持向量机一派占了上风。
很多人都认为svm是两成的神经网络。
近年来,神经网络一派的大师Hinton又提出了神经网络的Deep Learning算法,使神经网络的能力大大提高,可与支持向量机一比。Deep Learning假设神经网络是多层的,首先用Restricted Boltzmann Machine学习网络的结构,然后再通过Back Propagation学习网络的权值。关于Deep Learning的命名,Hinton曾开玩笑地说: I want to call SVM shallow learning. (注:shallow 有肤浅的意思)。其实Deep Learning本身的意思是深层学习,因为它假设神经网络有多层。