明白了这个问题就可以从直觉上理解SVM为什么会产生大间隔。
- 普通的感知器不能产生大间隔(margin),而SVM可以,所以这两个肯定不是一个东西。
- 带margin的感知器可以通过两种手段产生大间隔:一种是早停,另一种是加正则化项。
- 加入了L2正则化项的带 margin的感知器就是SVM。
大家都知道,感知器是不能产生大间隔的,因为它只以分对为目的,不关心分界面离数据点有多远,从它的目标函数很容易看出来(这里直接搬了 @猪猪专业户 的公式),它公平对待每一个数据:
带margin的感知器是这样的,只改动了一个地方:
有没有发现,损失函数就是hinge loss,这个改进使得感知器具备了产生大间隔的潜质,因为hinge loss有一段平坦区,允许平坦区内的点被分错,这样就可以撑起来一个管道(类似于SVM)。
虽然带margin的感知器有了hinge loss,但是它依然不能产生大间隔,看下面这个目标函数:
目标函数(2)和(3)是等价的,因为把(2)的一个解
带margin的感知器可以通过增大权向量的模长而增大函数间隔,但是几何间隔却是不变的,这显然不是我们想要的。如果我们能限制模长的增长,就有可能获得大的几何间隔。而限制模长的方法有两个:早停和正则化。
先来看早停是如何产生大间隔的,如下图(来自[1]):
(a)是普通感知器得到的分界面,过拟合且没有产生大间隔;(b)(c)(d)分别是带margin的感知器迭代1, 10, 100个epoch之后得到的分类面,可以看出随着迭代次数的增多,间隔渐渐消失,具体的讲解可以看参考文献[1]。一种直觉而不太严谨的理解是:趁着权向量还没有来得及快速增大就停止学习。
除了早停,还有一种方法可以产生大间隔,那就是加入对权向量的L2正则化,限制模长的增长:
与(2)相比,(4)加入了对权向量模长的惩罚项,从而避免了产生像(2)一样的无意义的大函数间隔。
而(4)就是SVM。
所以,SVM可以视为对感知器的二阶改进:第一阶改进是加入了
参考文献:
[1] Collobert R, Bengio S. Links between perceptrons, MLPs and SVMs[C]//Proceedings of the twenty-first international conference on Machine learning. ACM, 2004: 23.