机器学习-SVM

SVM  模型函数如下,如果f(x)>0, 类别为+1, f(x)<0,类别为-1. 这和逻辑回归类别为0和1不一样。

用y简单表示。当f(x)>0时,希望y是+1,f(x)<0时,希望y是-1.所以yf(x)是正数,当yf(x)越大,loss越小。

SVM的loss function是hinge loss。 定义为 L(f(x),y) = max(0, 1 - yf(x)). 当y=1时,为了让loss为0,则需要f(x)>1,当y=-1时,为了让loss为0,需要f(x)<-1. hinge loss 的曲线如下图紫色所示。其实当yf(x)>0时,就可以说模型的效果比较好,但是在x轴的0-1区间loss还是大于0,有一个penalty,会让yf(x)越大越好。

下图中黑色的线是理想的loss,当yf(x)>0时,loss为0, 当yf(x)<0时,loss为1. 但是理想的loss不好微分,所以需要选择其他的loss函数。

为什么hinge loss中是选择1来减去yf(x),因为这样,hinge loss才能更好的表现ideal loss(?)。

hinge loss 和sigmoid+cross entropy的区别是横轴1之后的区别,当yf(x)>1时,hinge loss就觉得已经很好了,不需要再调整,而sigmoid+cross entropy还希望能更好。hinge loss和cross entropy相比,对outlier没有那么敏感,会更鲁棒一些。

sigmoid + square loss 和sigmoid+cross entropy的区别是在横轴小于1的部分,sigmoid +cross entropy会下降得更快。

而square loss就不适合svm,因为当yf(x)很大时,square loss没有降到很小,而是一个很大的值。

线性SVM

线性SVM的model function是一个线性函数。它的loss function是hinge loss 加上一个正则化项。由于hinge loss 和正则化项都是convex函数,所以加起来loss function 也是一个convex函数。它是可以微分的。

线性SVM和逻辑回归相比,区别只是在于loss function不一样。逻辑回归是用cross entropy来做损失函数,而线性svm是用hinge loss函数。

另外,SVM 的模型函数也可以不是线性函数,只是是linear的时候有一些比较好的特征。当它不是linear的时候,也可以用gradient descent 来训练,所以SVM也有deep的版本,它的model function是非线性函数。所以当在做deep learning的时候,不是用cross entropy做为loss function,而是用hinge loss的话,其实就是一个deep 版本的SVM。所以不要说做的deep learning,做的是SVM,其实他们背后的精神都是可以相通的。

梯度下降

当用gradient descent来求解loss function时,使用链式法则,

由于f(x) =wx+b, 所以后面部分对w求偏微分后为x

前面部分是分段的,按分段条件求偏微分。所以将两个部分合起来后,损失函数对w的偏微分是,设x前面部分为c,w的更新公式为

完整内容见下图。

另一种公式,可以推出yf(x) > 1-epsilon.其中epsilon表示松弛因子。表示yf(x)并不 一定要严格地大于1,可以有一个epsilon的松弛因子,其中epsilon必须要大于0.

参考:

1. 李宏毅-机器学习 https://www.bilibili.com/video/av68199226/?p=28

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值