SVM 和最优化

共 3066字,需浏览 7分钟

 ·

2021-04-29 11:26

点击上方小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

本文转自:机器学习算法那些事

前言


解支持向量机(SVM)的文章数不胜数,不过大多缺乏中间很多推导细节。

相比其他经典机器学习算法,SVM里面有更多的数学推导,用到拉格朗日乘子法,KKT条件,线性和非线性的核函数,这些都对非数学专业的入门者造成一定门槛。

不过挑战意味着机遇,完全打通这些知识,可能会助你提升一个台阶,尽管当下SVM用的可能没有之前火爆,但SVM作为在深度学习模型之前应用最广泛的模型之一,仍然有必要研究推导,尤其是如果想继续深造,读博、做科研的。

这篇文章是我之前写的SVM数学推导部分,用的方法比较直白,自信这个推导方法大家都能看明白。

SVM 直接从目标函数和约束部分开始。

2 拉格朗日乘子法

SVM经过拉格朗日乘子法,引入了 m 个系数,目标函数的形式如下:

变量含义和相关假设如下:

  • 设 w 向量维度是 m,

  • a 的维度是 m (特征个数),

  • 样本(X,Y)的第一维度代表样本个数,设为n; 第二维度是特征维度m,如第 i 个样本的向量表示为:

  • b是标量

因此,下式可以化简为:


为了更好地理解,先对w向量的第一个分量w1求偏导,和w1无关的分量全部消除,式子立即化简为如下:


这些只涉及到最简单的求导公式,求出偏导:

这样对w1的求导完毕,然后对整个的 w 向量求导:


已经求得L对w1的偏导,w1,w2,…,wn的地位是相同的,所以依次带入即可,上式可以化简为如下:

下面再利用一些基本的线性代数中行列式的一些知识,就可以转化为向量的表达,具体操作如下:


回到文章开始对w向量和xi向量的定义,得到如下向量表达:

因此,对w向量的偏导求解完毕,结果如下:


下面再对b求导,b是标量,直接一步可以得到结果:

根据拉格朗日乘子法的理论,令L对w偏导等于0,得到关系式:

同理,令L对b偏导等于0,得到关系式:


3 化简L

接下来,将得到2个关系式代入到L中,化简L.

为了更好理解,仍然采用更直观地表达方式,将向量完全展开,

将上面关系式代入到L之前,我们先展开这个式子,

仍然还是先抽出w的第一个分量w1,因为L完全展开中涉及到其平方,

所以,先化简w1的平方这一步。因为w1可以进一步展开成如下形式:

w1的平方,因此可以展成如下形式:


上面这个式子就是基本的多项式求和,w1的平方进一步浓缩下:

至此,w1的平法化简完毕,再整合所有其他w分量并求和,如下,整个推导过程依然相清晰,如下:

再对上式拆分成两个向量,如下:

再写成浓缩式子:


至此,代入w后化简中的第一项已经完毕。


再化简第二块:

对上式展开,并利用条件:,化简如下:


代入w满足的等式后,


提取出公因子后变为如下:




将上式写为向量形式:

因为都是向量,所以转置相等,故,


至此,第一二项求解完毕,整理后得到:




目标函数终于变为系数的函数,接下来使用KKT求解上式的最优解。关于 KKT 的理解,可以先尝试理解拉格朗日乘子法,而它的推导可借助下面这些图更加容易理解



4 拉格朗日乘子法



机器学习是一个目标函数优化问题,给定目标函数f,约束条件会有一般包括以下三类:
  1. 仅含等式约束
  2. 仅含不等式约束
  3. 等式和不等式约束混合型
当然还有一类没有任何约束条件的最优化问题
关于最优化问题,大都令人比较头疼,首先大多教材讲解通篇都是公式,各种符号表达,各种梯度,叫人看的云里雾里。
有没有结合几何图形阐述以上问题的?很庆幸,还真有这么好的讲解材料,图文并茂,逻辑推导严谨,更容易叫我们理解拉格朗日乘数法KKT条件为什么就能求出极值。

1 仅含等式约束

假定目标函数是连续可导函数,问题定义如下:


然后,

通过以上方法求解此类问题,但是为什么它能求出极值呢
下面解释为什么这种方法就能求出极值。

2 找找 sense

大家时间都有限,只列出最核心的逻辑,找找sense, 如有兴趣可回去下载PPT仔细体会。
此解释中对此类问题的定义:
为了更好的阐述,给定一个具体例子,锁定:

所以,f(x)的一系列取值包括0,1,100,10000等任意实数:


但是,约束条件h(x)注定会约束f(x)不会等于100,不会等于10000...



一个可行点:

3 梯度下降

我们想要寻找一个移动x的规则,使得移动后f(x+delta_x)变小,当然必须满足约束h(x+delta_x)=0

使得f(x)减小最快的方向就是它的梯度反方向,即


因此,要想f(x+delta_x) 变小,通过图形可以看出,只要保持和梯度反方向夹角小于90,也就是保持大概一个方向,f(x+delta_x)就会变小,转化为公式就是:

如下所示的一个delta_x就是一个会使得f(x)减小的方向,但是这种移动将会破坏等式约束: h(x)=0,关于准确的移动方向下面第四小节会讲到



4 约束面的法向

约束面的外法向:


约束面的内法向:

绿圈表示法向的正交方向

x沿着绿圈内的方向移动,将会使得f(x)减小,同时满足等式约束h(x) = 0
我们不妨大胆假设,如果满足下面的条件:


根据第四小节讲述,delta_x必须正交于h(x),所以:

所以:

至此,我们就找到f(x)偏导数等于0的点,就是下图所示的两个关键点(它们也是f(x)与h(x)的临界点)。且必须满足以下条件,也就是两个向量必须是平行的:

6 完全解码拉格朗日乘数法


至此,已经完全解码拉格朗日乘数法,拉格朗日巧妙的构造出下面这个式子:

还有取得极值的的三个条件,都是对以上五个小节中涉及到的条件的编码

关于第三个条件,稍加说明。

对于含有多个变量,比如本例子就含有2个变量x1x2,就是一个多元优化问题,需要求二阶导,二阶导的矩阵就被称为海塞矩阵(Hessian Matrix)

与求解一元问题一样,仅凭一阶导数等于是无法判断极值的,需要求二阶导,并且二阶导大于0才是极小值,小于0是极大值,等于0依然无法判断是否在此点去的极值。

下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲
小白学视觉公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲
小白学视觉公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群


欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


浏览 11
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报