深度学习笔记 —— SVM 支持向量机

来源:互联网 发布:ai人工智能设计软件 编辑:程序博客网 时间:2024/06/10 07:49

支持向量机Support Vector Machine (SVM)是有监督学习中最有影响的方法之一。

SVM与逻辑回归Logistic Regression相似, 都基于线性函数 wTx+b

SVM的关键创新在与kernel trick, 采用样本点乘的形式我们可以将SVM使用的线性函数写成

wTx+b=b+i=1mαixTx(i)
其中x(i) 是训练样本,α 是系数向量

我们用特征函数 ϕ(x) 替代 x ,则点乘部分可替换为函数 k(x,x(i))=ϕ(x)ϕ(x(i)) ,这里的函数 k 就被称为kernel。

这样我们可以将函数写成

f(x)=b+iαik(x,x(i))

这个函数相对于 x 是非线性的,但相对于 ϕ(x) 是线性的,尤其重要的是 f(x) 对于 α 是线性的。

这就相当于我们首先使用 ϕ(x) 对所有样本进行了预处理,然后使用一个线性模型。

由于我们这里要优化的是 α ,这就使我们能用线性的模型来处理非线性的任务。

最常用到的kernel是Gaussian kernel高斯核 k(u,v)=N(uv;0,σ2I) ,其中N(x;μ,Σ) 是标准正态密度,它也被称为radial basis function (RBF) kernel,

我们可以将高斯核视作执行模板匹配,首先训练样本 x 与对应的标签 y 成为 y 类别的模板,当测试样本 x, 的欧几里德距离接近 x 时,认为 x,x 的模板非常相似,模型给对应的 y 一个非常大的权重。

SVM不是唯一可以用kernel trick提高的算法,所有使用kernel trick的算法被称为kernel machines或kernel methods。

SVM的一个弱点是评估决策函数的成本与训练样本数量成线性相关,减轻影响的方法是学习一个大多为0的 α 向量,这样分类新样本时只需评估那些 αi 不为0的训练样本,这些训练样本被称为support vectors 支撑向量。

Kernel machines当数据集规模巨大时计算成本非常高,相应的有了Stochastic Gradient Descent,同时核机器也不能很好的泛化,为克服核机器这个弱点引发了深度学习的复兴。