AI面试之SVM推导

SVM现在主流的有两个方法。一个是传统的推导,计算支持向量求解的方法,一个是近几年兴起的梯度下降的方法。 梯度下降方法的核心是使用了hinge loss作为损失函数,所以最近也有人提出的深度SVM其实就是使用hinge loss的神经网络。

本文的目的是讲解传统的推导。

SVM的超平面

SVM模型的基本原理,就是寻找一个合适的超平面,把两类的样本正确分开。单个SVM只能处理二分类,多分类需要多个SVM

【什么是超平面?】
超平面就是n维度空间的n-1维度的子空间。换成人话就是2维空间中的1维度的线,三维立体空间的二维平面。


图中总共有5个超平面,那么哪一个是最好的呢?我们认为中间的那个是最好的。因为他对两侧的间隔较大。

SVM基本型

超平面我们可以用这个方程来表示:
w T x + b = 0 \bm{w^Tx}+b=0 wTx+b=0

空间中任意一个点x到这个超平面的垂直距离为:
d = ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ d = \frac{|\bm{w^Tx}+b|}{||\bm{w}||} d=wwTx+b

这里不得不提到一下逻辑回归,对于逻辑回归来说:

就是在超平面一侧的样本,逻辑回归给出的预测类别是1,另外一侧就是0.

但是SVM觉得这样有一些过于绝对了,所以:

不仅仅要一个样本在平面的一侧,还要在平面的这一侧足够远的地方,才能算作某一类的样本。


从图中可以看到,两条虚线之外的点,才是SVM能确定是正样本还是负样本的点。

【什么是支持向量?】
图中距离超平面最近的几个训练样本,并且这几个训练样本可以让上式的等号成立。这个点就是支持向量。

【什么是SVM的间隔】
两个不同类别的支持向量到超平面的最小距离之和。其实也就是 2 ∣ ∣ w ∣ ∣ \frac{2}{||w||} w2


到这里,我们可以隐隐约约的发现,寻找最优的超平面其实等价于寻找一个最大的间隔,或者说让间隔最大化。所以可以得到:
max ⁡ w , b 2 ∣ ∣ w ∣ ∣ \max_{w,b} \frac{2}{||\bm{w}||} maxw,bw2
这个的约束条件就是:让SVM给正样本的打分大于1,给负样本的打分小于-1,也就是:

简化一下这个约束条件,可以得到:
y i ( w T x i + b ) > = 1 y_i(\bm{w^Tx_i}+b)>=1 yi(wTxi+b)>=1

一般我们都是求取最小化问题,所以把最大化max问题取倒数,变成最小化问题:
min ⁡ w , b ∣ ∣ w ∣ ∣ 2 \min_{w,b} \frac{||\bm{w}||}{2} minw,b2w
这里为了后续的计算方便,最小化 ∣ ∣ w ∣ ∣ ||w|| w等价于最小化 ∣ ∣ w ∣ ∣ 2 ||w||^2 w2,所以得到:
min ⁡ w , b ∣ ∣ w ∣ ∣ 2 2 \min_{w,b} \frac{||\bm{w}||^2}{2} minw,b2w2

总之SVM的基本型就是:

SVM求解

现在求得了基本型。现在可以来进一步优化这个最小化问题。但是首当其冲的问题便是,如何处理这个约束条件。这里用到的方法是拉格朗日乘子法。将约束条件以 α i \alpha_i αi的权重加入到优化问题中,所以可以得到:
L o s s ( w , b , α ) = 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 m α i ( 1 − y i ( w T x i + b ) ) Loss(\bm{w},b,\bm{\alpha})=\frac{1}{2}||w||^2+\sum^m_{i=1}\alpha_i(1-y_i(w^Tx_i+b)) Loss(w,b,α)=21w2+i=1mαi(1yi(wTxi+b))

  • 这里的loss就是我们要最小化的对象;
  • 这里的m就是支持向量的数量。

为了最小化这个问题,对w和b求偏导数,可以得到:
w = ∑ i = 1 m α i y i x i w = \sum^m_{i=1}{\alpha_iy_ix_i} w=i=1mαiyixi
0 = ∑ i = 1 m α i y i 0 = \sum^m_{i=1}{\alpha_iy_i} 0=i=1mαiyi

然后把这两个公式代入到:
L o s s ( w , b , α ) = 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 m α i ( 1 − y i ( w T x i + b ) ) Loss(\bm{w},b,\bm{\alpha})=\frac{1}{2}||w||^2+\sum^m_{i=1}\alpha_i(1-y_i(w^Tx_i+b)) Loss(w,b,α)=21w2+i=1mαi(1yi(wTxi+b))

可以消掉w和b,得到:

约束条件为:

从而根据这个计算出 α i \alpha_i αi的取值,然后得到w和b的取值。

【到底如何求解 α \alpha α?】
上面说的最后一部求解alpha,都是理论可以求解,但是实际中如何做到呢?其实这里如何求解 α \alpha α要用到另外一个条件。

就是上述过程要满足一个叫做KKT的条件(KKT具体是什么有点复杂,就不多说了):

  • 想要第三个公式成立,要么 α i \alpha_i αi等于0,要么 y i f ( x i ) − 1 = 0 y_if(x_i)-1=0 yif(xi)1=0.如果alpha=0,那么意味着这个样本不是支持向量,不应该对SVM超平面起到任何影响,所以是不可能的。所以只有 y i f ( x i ) − 1 = 0 y_if(x_i)-1=0 yif(xi)1=0

加上了这个条件,我们可以求解出来 α i \alpha_i αi的具体数值,然后求解w和b的数值。

假设有3个支持向量,那么就会有三个 α 1 , α 2 , α 3 \alpha_1, \alpha_2, \alpha_3 α1,α2,α3 ,然后根据 y i f ( x i ) − 1 = 0 y_if(x_i)-1=0 yif(xi)1=0可以列出3个关于 α 1 , α 2 , α 3 \alpha_1,\alpha_2,\alpha_3 α1,α2,α3的三元一次方程组,然后得到唯一解。




http://www.niftyadmin.cn/n/1358385.html

相关文章

【评价指标】详解F1-score与多分类MacroF1MicroF1

基本概念 首先,要背住的几个概念就是:accuracy,precision,recal, TP,FP,TN,FN TP:true positive。预测是正确的正样本FP:false positive。预测是错误的正样本TN:true negative。预测是正确的负样本FP:false positive。预测是错误的负样本 …

干货 | 这可能全网最好的BatchNorm详解

其实关于BN层,我在之前的文章“梯度爆炸”那一篇中已经涉及到了,但是鉴于面试经历中多次问道这个,这里再做一个更加全面的讲解。 Internal Covariate Shift(ICS) Batch Normalization的原论文作者给了Internal Covar…

项目总结 | 对【时间】构建的特征工程

写文章的目的在于之前面试的时候,提到某一个时间序列项目的特征工程处理。我说的大多数都是一些数据清洗、数据去除异常点、针对数据特性做出的特别的特征工程的操作,然后面试官给我的建议是下一次面试多说一下常规的特征工程处理,因为这样面…

图像增强 | CLAHE 限制对比度自适应直方图均衡化

1 基本概述 CLAHE是一个比较有意思的图像增强的方法,主要用在医学图像上面。之前的比赛中,用到了这个,但是对其算法原理不甚了解。在这里做一个复盘。 CLAHE起到的作用简单来说就是增强图像的对比度的同时可以抑制噪声 CLAHE的英文是Contr…

项目总结 | 九种缺失值处理方法总有一种适合你

为什么要处理缺失值 这一段完全是废话了。含有缺失数据的样本,你要么删了,要了就填充上什么值。删了就会损失一部分的样本信息,填充要是填充的不合适,会给样本增加噪音。 所以这就是一个选择的问题: 选择删除还是填…

一分钟速学 | NMS, IOU 与 SoftMax

非极大抑制 NMS的英文是Non-maximum suppression的缩写。 简单的说,就是模型给出了多个重叠在一起的候选框,我们只需要保留一个就可以了。其他的重叠的候选框就删掉了,效果可见下图: 交并比 IoU的英文全称Intersection over …

大汇总 | 一文学会八篇经典CNN论文

本文主要是回顾一下一些经典的CNN网络的主要贡献。 论文传送门 【google团队】 [2014.09]inception v1: https://arxiv.org/pdf/1409.4842.pdf[2015.02]inception v2: https://arxiv.org/pdf/1502.03167.pdf[2015.12]inception v3: https://arxiv.org/pdf/1512.00567.pdf[20…

通俗易懂 | 拉格朗日乘子法

在SVM中,将约束问题转化成非约束问题采用到了拉格朗日乘子法。这个文章就讲一下拉格朗日乘子法与KKT约束是怎么回事。本人不是数学科班出身,但是也只能硬着头皮讲一讲了。 从零理解 现在我们要解决这样一个问题: x2y3x^2y3x2y3 这个函数距离…