SVM支持向量机(一)
支持向量机(support vector machine)是一种二分类模型,它的基本模型就是特征空间上的间隔最大的线性分类器,它的优化目标就是间隔最大化,一般将其转换为一个凸二次规划问题的求解。李宏毅老师从深度学习的角度解读了SVM模型,用梯度下降的方法求解使损失函数最小的参数,下面进行具体的介绍。
1. 分类模型
给定一个训练样本集,训练样本属于不同类别,我们需要在样本空间中找到一个分类器(划分超平面)将不同类别的样本分开,这就是分类问题。对于二分类问题,假设样本为 x ,类别为 y,y 可能的取值是 +1 和 -1。将样本 x 输入分类器,分类器将预测所给样本的类别。分类模型从某种意义上来说是假设函数的集合(Function set),我们通过假设函数假定输入样本x和类别y之间的关系,不同参数下的假设函数构成集合就是分类模型(Model)。下图给出了不同参数下的二分类模型。
一般使用损失函数(Loss function)来评估假设函数的优劣。损失函数的值越小则假设函数越好,我们期望找到一组最优参数使损失函数的值最小。深度学习一般采用梯度下降法寻找最优的参数。
下图给出了一个二分类模型的构造方法。右上角的蓝色实线框中给出了样本 x 及其对应的类别 y(取值为+1 和 -1)。第一步:设计一组假设函数Function set,给定一个样本 x,并输出其对应 Output。 第二步:设计一个损失函数。第三步:梯度下降,训练模型。
2. SVM
SVM是一种二分类模型,它的两个亮点是Hinge Loss 和 Kernel Method。
如果想使用梯度下降法优化损失函数,那么损失函数一定得是可微的。上面的二分类模型(Binary Classification)中的损失函数是不可微的,SVM中用Hinge Loss替代它。此外SVM针对线性不可分问题还提出了Kernel Method。
3. hinge loss
由于ideal loss 是不可微的,因此用一个函数近似它,如下图所示。ideal loss 给出了预测值 g(x) 和 类别 y 之间的关系,如果 g(x) 的输出 output 和 类别 y 两者不等,损失函数值加1,如果相等则损失值不变。将 y * f(x) 作为横轴,因此 y * f(x) 越大,loss 值越小。近似ideal loss 的函数也应该满足相同的原则,即 loss值随横轴坐标增加而减小。
- 首先考虑用 Square loss 近似,损失函数在图中用红色曲线表示。函数不满足上述原则,y * f(x) 大于1时,loss值随横轴坐标增加而增大。因此用Square loss函数近似 ideal loss 是不合理的。
- 考虑用 sigmoid + Square loss 近似,损失函数在图中用蓝色曲线表示。
- 考虑用 sigmoid + cross entropy 近似,即 logistic regression 在图中用绿色曲线表示。
相比 sigmoid + Square loss,使用 logistic regression 作为损失函数,模型训练更容易。如上图所示,相同的横坐标变化下 logistic regression 的 loss 下降更快,“努力可以有回报”;sigmoid + Square loss 的 loss 下降更慢,“没有回报,不想努力”。 - 用 hinge loss 近似, 在图中用紫色曲线表示。
hinge loss 不会随横坐标的增加,一直下降下去。当横坐标达到某一值时,loss就不会再减小,“及格就好”。logistic regression 则不会这样,它随横坐标增加,loss 会一直下降,“还要更好”。
参考文献
- 支持向量机通俗导论
- 《机器学习》周志华
- 李宏毅机器学习特训营的课程链接
课程链接