机器学习——支持向量机(数学基础推导篇【未完】)

在一个周日下午,夏天的雨稀里哗啦地下着
我躺在床上,捧着ipad看支持向量机
睡了好几个觉…支持向量机太好睡了
拉格朗日乘数法太好睡了
几何函数太好睡了
在我看来,支持向量机是目前学下来,最难以理解的内容
希望日后不要太难…脑子不支持的

1. 支持向量机的分类原理

支持向量积的原理,网上已经有很多人解释了。
支持向量机(SVM)——原理篇
机器学习笔记(五):支持向量机(SVM)
支持向量机算法(SVM)详细讲解(含手推公式)
但即使看了原理篇,依然有绊倒自己的地方,或许是自己数学基础跟不上各大阿婆主,只好自己列出困惑的数学问题。

当数据集线性可分时,假设有一个线性函数能将数据集分类,这就是感知机模型该做的事:找到能让数据集线性划分的一个线性函数 y = ∑ w i x i + b y = ∑w_ix_i + b y=wixi+b

但实际上,不一定只有一个线性函数,能线性划分数据集,那么哪个线性函数的划分效果更好呢?这就是支持向量机进一步要做的事。

支持向量机是以感知机为基础,进一步要求线性函数划分距离更宽:也就是线性函数两侧的数据集,距离最远,即求出线性函数对称两侧的最大宽度距离2d
在这里插入图片描述

这挺好理解的,要想井水不犯河水,那就离得远远的。最好是一个天上,一个地下,互不打扰
比如深海里的鲨鱼,和高空上的雄鹰,这俩就不是一类…因为离得太远…好吧,这个比喻纯粹扯淡了
从逻辑上来说,空间距离越大,差异越大,这是公认事实。

但要怎么求出2d的最大值呢?

这就要涉及到我困惑很久的第一个问题:点到线(点到面或超平面)的距离计算公式

1.2 第一个数学困惑:点到线(面)的距离公式

d = ∣ W T X + b ∣ ∣ ∣ W ∣ ∣ 2 d = \frac{|W^TX+b|}{||W||_2} d=∣∣W2WTX+b

为什么是这个公式??这让我困惑很久…数学没学好

我试着从几何的角度,从一元线性函数、二元线性函数图像上去推导,但仅仅能推导到二元,一旦涉及到三元【三维空间】,我脑子就废了

后来,无意间看到一个博主的解释

在这里插入图片描述

恍然大悟,哦~~~~
但哦什么呢。。。。这个法向量n是怎么算的

如果超平面的函数为 A x 1 + B x 2 + C x 3 + D = 0 Ax_1+Bx_2+Cx_3+D = 0 Ax1+Bx2+Cx3+D=0
求点 x b x_b xb到超平面 A x 1 + B x 2 + C x 3 + D = 0 Ax_1+Bx_2+Cx_3+D = 0 Ax1+Bx2+Cx3+D=0的距离,(设点 x a x_a xa位于平面上)

那个博主说法向量设为 n → = ( A , B , C ) n^→=(A,B,C) n=(A,B,C)

则向量 x a x b → = ( x a 1 − x b 1 , x a 2 − x b 2 , x a 3 − x b 3 ) {x_ax_b}^→=(x_{a1}-x_{b1},x_{a2}-x_{b2},x_{a3}-x_{b3}) xaxb=(xa1xb1,xa2xb2,xa3xb3)

d = x a x b → ∗ n → ∣ n → ∣ = A ( x a 1 − x b 1 ) + B ( x a 2 − x b 2 ) + C ( x a 3 − x b 3 ) A 2 + B 2 + C 2 d = \frac{{x_ax_b}^→*n^→}{|n^→|}=\frac{A(x_{a1}-x_{b1})+B(x_{a2}-x_{b2})+C(x_{a3}-x_{b3})}{\sqrt{A^2+B^2+C^2}} d=nxaxbn=A2+B2+C2 A(xa1xb1)+B(xa2xb2)+C(xa3xb3)

由于点 x a x_a xa位于平面上,因此 A x a 1 + B x a 2 + C x a 3 + D = 0 Ax_{a1}+Bx_{a2}+Cx_{a3}+D = 0 Axa1+Bxa2+Cxa3+D=0
A x a 1 + B x a 2 + C x a 3 = − D Ax_{a1}+Bx_{a2}+Cx_{a3}= -D Axa1+Bxa2+Cxa3=D

则分子部分: A ( x a 1 − x b 1 ) + B ( x a 2 − x b 2 ) + C ( x a 3 − x b 3 ) A(x_{a1}-x_{b1})+B(x_{a2}-x_{b2})+C(x_{a3}-x_{b3}) A(xa1xb1)+B(xa2xb2)+C(xa3xb3)
= − ( A x b 1 + B x b 2 + C x b 3 + D ) =-(Ax_{b1}+Bx_{b2}+Cx_{b3}+D) =(Axb1+Bxb2+Cxb3+D)

整合起来的 d = ∣ x a x b → ∗ n → ∣ ∣ n → ∣ = ∣ A ( x a 1 − x b 1 ) + B ( x a 2 − x b 2 ) + C ( x a 3 − x b 3 ) ∣ A 2 + B 2 + C 2 = ∣ − ( A x b 1 + B x b 2 + C x b 3 + D ) ∣ A 2 + B 2 + C 2 d = \frac{|{x_ax_b}^→*n^→|}{|n^→|}=\frac{|A(x_{a1}-x_{b1})+B(x_{a2}-x_{b2})+C(x_{a3}-x_{b3})|}{\sqrt{A^2+B^2+C^2}}=\frac{|-(Ax_{b1}+Bx_{b2}+Cx_{b3}+D)|}{\sqrt{A^2+B^2+C^2}} d=nxaxbn=A2+B2+C2 A(xa1xb1)+B(xa2xb2)+C(xa3xb3)=A2+B2+C2 (Axb1+Bxb2+Cxb3+D)

这不就是 d = ∣ W T X + b ∣ ∣ ∣ W ∣ ∣ 2 d = \frac{|W^TX+b|}{||W||_2} d=∣∣W2WTX+b 的公式了嘛!!!

但要注意: d = ∣ W T X + b ∣ ∣ ∣ W ∣ ∣ 2 d = \frac{|W^TX+b|}{||W||_2} d=∣∣W2WTX+b公式,表示的是点到中间分类函数线的距离

不同的点,计算出的d值是不同的。

顿悟!!
但问题又来了

凭什么法向量可以设为 n → = ( A , B , C ) n^→=(A,B,C) n=(A,B,C)

这也是困惑很久的小问题,但也可以证明:首先知道法向量是垂直于平面的

求法向量 n → = ( x n 1 , x n 2 , x n 3 ) n^→=(x_{n1},x_{n2},x_{n3}) n=(xn1,xn2,xn3)

那么当平面上有两个不共线的向量 Q → = ( x q 1 , x q 2 , x q 3 ) Q^→=(x_{q1},x_{q2},x_{q3}) Q=(xq1,xq2,xq3), F → = ( x f 1 , x f 2 , x f 3 ) F^→=(x_{f1},x_{f2},x_{f3}) F=(xf1,xf2,xf3)

法向量与这两个向量的乘积均为0
n → ∗ Q = x n 1 x q 1 + x n 2 x q 2 + x n 3 x q 3 = 0 n^→*Q^=x_{n1}x_{q1}+x_{n2}x_{q2}+x_{n3}x_{q3} = 0 nQ=xn1xq1+xn2xq2+xn3xq3=0
n → ∗ F = x n 1 x f 1 + x n 2 x f 2 + x n 3 x f 3 = 0 n^→*F^=x_{n1}x_{f1}+x_{n2}x_{f2}+x_{n3}x_{f3} = 0 nF=xn1xf1+xn2xf2+xn3xf3=0
上述两个式子相减得到 x n 1 ( x f 1 − x q 1 ) + x n 2 ( x f 1 − x q 2 ) + x n 3 ( x f 1 − x q 3 ) = 0 x_{n1}(x_{f1}-x_{q1})+x_{n2}(x_{f1}-x_{q2})+x_{n3}(x_{f1}-x_{q3})=0 xn1(xf1xq1)+xn2(xf1xq2)+xn3(xf1xq3)=0

并且由于向量 Q → 和 F → Q^→和F^→ QF都在平面上,因此:
A x q 1 + B x q 2 + C x q 3 + D = 0 Ax_{q1}+Bx_{q2}+Cx_{q3}+D = 0 Axq1+Bxq2+Cxq3+D=0
A x f 1 + B x f 2 + C x f 3 + D = 0 Ax_{f1}+Bx_{f2}+Cx_{f3}+D = 0 Axf1+Bxf2+Cxf3+D=0
上述两个式子相减 A ( x f 1 − x q 1 ) + B ( x f 1 − x q 2 ) + C ( x f 1 − x q 3 ) = 0 A(x_{f1}-x_{q1})+B(x_{f1}-x_{q2})+C(x_{f1}-x_{q3}) = 0 A(xf1xq1)+B(xf1xq2)+C(xf1xq3)=0

综合可得:
x n 1 ( x f 1 − x q 1 ) + x n 2 ( x f 1 − x q 2 ) + x n 3 ( x f 1 − x q 3 ) = 0 x_{n1}(x_{f1}-x_{q1})+x_{n2}(x_{f1}-x_{q2})+x_{n3}(x_{f1}-x_{q3})=0 xn1(xf1xq1)+xn2(xf1xq2)+xn3(xf1xq3)=0
A ( x f 1 − x q 1 ) + B ( x f 1 − x q 2 ) + C ( x f 1 − x q 3 ) = 0 A(x_{f1}-x_{q1})+B(x_{f1}-x_{q2})+C(x_{f1}-x_{q3}) = 0 A(xf1xq1)+B(xf1xq2)+C(xf1xq3)=0

因此,可以设 x n 1 = A x_{n1}=A xn1=A, x n 2 = B x_{n2}=B xn2=B, x n 3 = C x_{n3}=C xn3=C
因此法向量可以设为函数的系数!!!!

又悟了!!!数学渣渣的困惑。。。终于悟了

1.3 第二个数学困惑:距离公式的分子用1来计算

教科书,包括很多up主,在求解最大宽度距离 2 d = 2 ∣ W T X + b ∣ ∣ ∣ W ∣ ∣ 2 2d= \frac{2|W^TX+b|}{||W||_2} 2d=∣∣W22∣WTX+b时,又转化为 求 2 ∣ ∣ W ∣ ∣ 2 \frac{2}{||W||_2} ∣∣W22的最大值

why??

其实我也悟了。。。但太困了。。。明天再搞吧

公式推导一下:

将划分数据集的分类函数为 A x 1 + B x 2 + C x 3 + D = 0 Ax_1+Bx_2+Cx_3+D = 0 Ax1+Bx2+Cx3+D=0

而两侧对称的边界函数分为设为:

  • A x 1 + B x 2 + C x 3 + D = Q Ax_1+Bx_2+Cx_3+D = Q Ax1+Bx2+Cx3+D=Q,移项得 A x 1 + B x 2 + C x 3 + D − Q = 0 Ax_1+Bx_2+Cx_3+D - Q=0 Ax1+Bx2+Cx3+DQ=0
  • A x 1 + B x 2 + C x 3 + D = − Q Ax_1+Bx_2+Cx_3+D = -Q Ax1+Bx2+Cx3+D=Q,移项得 A x 1 + B x 2 + C x 3 + D + Q = 0 Ax_1+Bx_2+Cx_3+D + Q=0 Ax1+Bx2+Cx3+D+Q=0

这两个函数之间的距离,并不是2Q,而是 2 Q ∣ ∣ W ∣ ∣ 2 \frac{2Q}{||W||_2} ∣∣W22Q

为什么是这样呢?

假设
x a x_a xa位于 A x 1 + B x 2 + C x 3 + D − Q = 0 Ax_1+Bx_2+Cx_3+D - Q=0 Ax1+Bx2+Cx3+DQ=0边界函数上
x b x_b xb位于 A x 1 + B x 2 + C x 3 + D + Q = 0 Ax_1+Bx_2+Cx_3+D + Q=0 Ax1+Bx2+Cx3+D+Q=0边界函数上
A x 1 + B x 2 + C x 3 + D − Q = 0 Ax_1+Bx_2+Cx_3+D - Q=0 Ax1+Bx2+Cx3+DQ=0 A x 1 + B x 2 + C x 3 + D + Q = 0 Ax_1+Bx_2+Cx_3+D + Q=0 Ax1+Bx2+Cx3+D+Q=0是平行的边界函数
设点 x a x_a xa和点 x b x_b xb的连线,垂直于这两条边界函数,则向量 x a x b → x_ax_b^→ xaxb则相当于这两个边界函数的法向量,同时模| x a x b → x_ax_b^→ xaxb|表示两个边界函数的距离。

现在要求的就是模| x a x b → x_ax_b^→ xaxb|,即两个边界函数的距离。

法向量设为 n → = ( A , B , C ) n^→=(A,B,C) n=(A,B,C)

则向量 x a x b → = ( x a 1 − x b 1 , x a 2 − x b 2 , x a 3 − x b 3 ) {x_ax_b}^→=(x_{a1}-x_{b1},x_{a2}-x_{b2},x_{a3}-x_{b3}) xaxb=(xa1xb1,xa2xb2,xa3xb3)

d 边界 = x a x b → ∗ n → ∣ n → ∣ = A ( x a 1 − x b 1 ) + B ( x a 2 − x b 2 ) + C ( x a 3 − x b 3 ) A 2 + B 2 + C 2 d_{边界} = \frac{{x_ax_b}^→*n^→}{|n^→|}=\frac{A(x_{a1}-x_{b1})+B(x_{a2}-x_{b2})+C(x_{a3}-x_{b3})}{\sqrt{A^2+B^2+C^2}} d边界=nxaxbn=A2+B2+C2 A(xa1xb1)+B(xa2xb2)+C(xa3xb3)

由于点 x a x_a xa A x a 1 + B x a 2 + C x a 3 + D − Q = 0 Ax_{a1}+Bx_{a2}+Cx_{a3}+D -Q= 0 Axa1+Bxa2+Cxa3+DQ=0
x b x_b xb A x b 1 + B x b 2 + C x b 3 + D + Q = 0 Ax_{b1}+Bx_{b2}+Cx_{b3}+D +Q= 0 Axb1+Bxb2+Cxb3+D+Q=0
则上述两式相减可得: A ( x a 1 − x b 1 ) + B ( x a 2 − x b 2 ) + C ( x a 3 − x b 3 ) − 2 Q = 0 A(x_{a1}-x_{b1})+B(x_{a2}-x_{b2})+C(x_{a3}-x_{b3})-2Q=0 A(xa1xb1)+B(xa2xb2)+C(xa3xb3)2Q=0

d 边界 = ∣ x a x b → ∗ n → ∣ ∣ n → ∣ = ∣ A ( x a 1 − x b 1 ) + B ( x a 2 − x b 2 ) + C ( x a 3 − x b 3 ) ∣ A 2 + B 2 + C 2 = 2 Q A 2 + B 2 + C 2 d_{边界} = \frac{|{x_ax_b}^→*n^→|}{|n^→|}=\frac{|A(x_{a1}-x_{b1})+B(x_{a2}-x_{b2})+C(x_{a3}-x_{b3})|}{\sqrt{A^2+B^2+C^2}}=\frac{2Q}{\sqrt{A^2+B^2+C^2}} d边界=nxaxbn=A2+B2+C2 A(xa1xb1)+B(xa2xb2)+C(xa3xb3)=A2+B2+C2 2Q

因此,两个边界函数的公式可对应为

  • W T X + b = Q W^TX+b = Q WTX+b=Q
  • W T X + b = − Q W^TX+b = -Q WTX+b=Q
    且两个边界函数的距离为 2 Q ∣ ∣ W ∣ ∣ 2 \frac{2Q}{||W||_2} ∣∣W22Q

而实际边界函数的W、b系数同比例增大或减小,对函数是毫无影响的

就比如2x + 4 = 0 与 x+2 = 0 本质都是相同的函数。

因此可对两个边界函数的W和b参数进行同比例的缩放

  • W T X + b = Q W^TX+b = Q WTX+b=Q,变为 W Q T X + b Q = 1 \frac{W}{Q}^TX+\frac{b}{Q} = 1 QWTX+Qb=1
  • W T X + b = − Q W^TX+b = -Q WTX+b=Q,变为 W Q T X + b Q = − 1 \frac{W}{Q}^TX+\frac{b}{Q} = -1 QWTX+Qb=1

此时,系数更新为 W = W Q W = \frac{W}{Q} W=QW b = b Q b=\frac{b}{Q} b=Qb
因此两个边界函数最终变为了

  • W T X + b = 1 W^TX+b = 1 WTX+b=1
  • W T X + b = − 1 W^TX+b = -1 WTX+b=1

并且两个边界函数的距离为 d 边界 = 2 ∣ ∣ W ∣ ∣ 2 d_{边界} = \frac{2}{||W||_2} d边界=∣∣W22

至此,证成!!!
妈呀…应该是对的吧!!!

但其实我有个困惑,最初证明的点到线(面)的距离公式,以及两个边界函数的距离公式,分别有什么意义呢?

支持向量机,到底是要求距离中间分类线最近的点到线(面)的距离最大,还是要求两个边界函数的距离最大呢?

本质上看,这两个要求其实都是同一个要求,但实际上这两个要求所进行的计算方式是不同的。

如果是要求距离中间分类线最近的点,到中间分类函数的距离最大,那就必须先能求出中间分类函数——但实际我们没有边界函数,是没办法求出中间分类函数的。

- 因此,应该是要求两个边界函数的距离最大,因为两个边界函数的距离,实际是可以根据某个分类函数来求的。

听起来很绕口,但实际就是我们可以根据感知机模型,求出一个分类函数,但这个分类函数并不一定是能将数据集平均分的函数

但这个不怎么完美的函数,却是一个有着明确参数W的函数,那么假设两个边界函数分别在这个分类函数的两侧【注:两个边界函数未必对称分布在分类函数的两边】

我们无需计算出具体的参数b,只要根据参数W,就可以求出两个边界函数的距离

  • d 边界 = 2 ∣ ∣ W ∣ ∣ 2 d_{边界} = \frac{2}{||W||_2} d边界=∣∣W22
    但要注意,边界函数是要能够将数据集分类的,因此边界函数的还要满足以下两个条件
  • W T X + b ≥ 1 W^TX+b ≥ 1 WTX+b1时, y = 1 y=1 y=1,要求分类正确,即 y ∗ ( W T X + b ) ≥ 1 y*(W^TX+b)≥1 y(WTX+b)1
  • W T X + b ≤ − 1 W^TX+b ≤ -1 WTX+b1时, y = − 1 y=-1 y=1,要求分类正确,即 y ∗ ( W T X + b ) ≥ 1 y*(W^TX+b)≥1 y(WTX+b)1
  • 整合起来就是两条边界函数均满足: y ∗ ( W T X + b ) ≥ 1 y*(W^TX+b)≥1 y(WTX+b)1

因此,我们只需求出 d 边界 d_{边界} d边界的最大值,并且满足条件 y ∗ ( W T X + b ) ≥ 1 y*(W^TX+b)≥1 y(WTX+b)1,即可得到模型的最优解。

那么究竟要怎么在有条件限制的情况下,求出极值呢?
这就涉及到拉格朗日乘数法了
这痛苦的让人哭泣的拉格朗日
明天继续吧!!

  • d 边界 m a x = 2 ∣ ∣ W ∣ ∣ 2 d_{边界max} = \frac{2}{||W||_2} d边界max=∣∣W22,实际相当于求 W 2 2 \frac{W^2}{2} 2W2的最小值

要是换以前,求最小值,要么用求导法或是用梯度下降法,就可以实现。
但现在不行了,因为求最小值时,是有条件约束的。

如何求条件约束下的极小值呢?

1.4 第三个数学困惑:拉格朗日乘数法的数理推导

这就要用到号称“条件极值杀手”的【拉格朗日乘数法】了。

死脑筋用拉格朗日乘数法,其实会比较简单,
但真的要理解拉格朗日乘数法,真的是头疼

首先,当要求的原函数为f(x,y),条件约束为等式约束g(x,y)=0时,求条件约束下的原函数极小值。

  • 原函数: f ( x , y ) f(x,y) f(x,y)
  • 等式约束条件: g ( x , y ) = 0 g(x,y)=0 g(x,y)=0
  • m i n ( f ( x , y ) ) min(f(x,y)) min(f(x,y))

拉格朗日乘数法的计算过程为求 L ( x , y ) = f ( x , y ) + λ g ( x , y ) L(x,y) = f(x,y)+λg(x,y) L(x,y)=f(x,y)+λg(x,y)的极值

  • L x ′ = f x ′ + λ g x ′ L'_x= f'_x+λg'_x Lx=fx+λgx
  • L y ′ = f x ′ + λ g x ′ L'_y= f'_x+λg'_x Ly=fx+λgx
  • L λ ′ = g ( x , y ) L'_λ= g(x,y) Lλ=g(x,y)
  • 并解出x,y,λ的值,其中 x,y就是可能的符合约束条件下的极小值

看到这的时候,我直觉是合理的,但不知道是如何得出这样的计算过程,并产生了几个问题:

  • 为什么有λ?
  • 为什么可以构成拉格朗日函数?
  • 为什么求出拉格朗日函数极值,就可以求出符合约束条件的极小值???

所以自己又翻阅了很多知乎阿婆主的各种解释
终于功夫不负爱搜索的人

很多人的解释是:用等高线来绘制原函数f(x,y)时,会呈现层层嵌套的圈圈,然后绘制g(x,y)时,很多人却又不是用等高线来绘制g(x,y),然后很多人的解析就直接说g(x,y)取到极值的时候(与f(x,y)相切),就取到了符合约束条件的最小值。

说实话,几何法我还是不太理解

找到有个up主的数理推导:
通过g(x,y)=0,说明这个g(x,y)是隐函数,然后我们可设为显函数y = φ(x)

然后代入f原函数: z = f ( x , φ ( x ) ) z=f(x,φ(x)) z=f(x,φ(x)),用z表示代入后的函数表达,使得z与原函数f区分开

从KKT条件推导穿越回来的我,不得不俯首痛哭:下边关于拉格朗日乘数法的推导,all bullshit
是的,我想,我应该全盘推翻
还是要把基础打好,先理解好导数、偏导数、微分、偏微分、全微分、梯度、方向导数这些基础概念
不然自己理解起来,会十分混淆
是的,基础很重要

【错误的开始:

z x ′ = ə f ə x + ə f ə y d φ ( x ) d x = f x ′ + f y ′ ∗ φ x ′ z'_x= \frac{əf}{əx}+\frac{əf}{əy}\frac{dφ(x)}{dx}=f'_x+f'_y*φ'_x zx=əxəf+əyəfdxdφ(x)=fx+fyφx

根据隐函数求导法则: d y d x = − F x ′ F y ′ \frac{dy}{dx}= - \frac{F'_x}{F'_y} dxdy=FyFx为什么隐函数求导法则是这样的,后续再证明
则知道 φ x ′ = d y d x = − g x ′ g y ′ φ'_x=\frac{dy}{dx}=-\frac{g'_x}{g'_y} φx=dxdy=gygx

因此 z x ′ = f x ′ + f y ′ ∗ φ x ′ = f x ′ − f y ′ ∗ g x ′ g y ′ = f x ′ − f y ′ g y ′ ∗ g x ′ z'_x = f'_x+f'_y*φ'_x= f'_x-f'_y*\frac{g'_x}{g'_y}= f'_x-\frac{f'_y}{g'_y}*g'_x zx=fx+fyφx=fxfygygx=fxgyfygx

λ = − f y ′ g y ′ ,则有 f x ′ ( x , y ) = f x ′ − f y ′ g y ′ ∗ g x ′ = f x ′ + λ ∗ g x ′ λ =- \frac{f'_y}{g'_y},则有f'_x(x,y) = f'_x-\frac{f'_y}{g'_y}*g'_x= f'_x+λ*g'_x λ=gyfy,则有fx(x,y)=fxgyfygx=fx+λgx

而此时,y的偏导数为 z y ′ = f y ′ + λ ∗ g y ′ = f y ′ − f y ′ g y ′ ∗ g y ′ = 0 z'_y = f'_y+λ*g'_y=f'_y-\frac{f'_y}{g'_y}*g'_y=0 zy=fy+λgy=fygyfygy=0

融入了约束条件的函数f求得极值点,需要令x,y的偏导数均为0

  • 要使 z x ′ = f x ′ + λ ∗ g x ′ = 0 ,则可能 λ = − f x ′ g x ′ 要使z'_x = f'_x+λ*g'_x=0,则可能 λ = -\frac{f'_x}{g'_x} 要使zx=fx+λgx=0,则可能λ=gxfx
  • 要使 z y ′ = f y ′ + λ ∗ g y ′ = 0 ,则可能 λ = − f y ′ g y ′ 要使z'_y = f'_y+λ*g'_y=0,则可能 λ = -\frac{f'_y}{g'_y} 要使zy=fy+λgy=0,则可能λ=gyfy

此时,要求的λ既等于 λ = − f y ′ g y ′ λ =- \frac{f'_y}{g'_y} λ=gyfy,又 λ = − f x ′ g x ′ λ = -\frac{f'_x}{g'_x} λ=gxfx

那么 λ = − f y ′ g y ′ = − f x ′ g x ′ λ =- \frac{f'_y}{g'_y}= -\frac{f'_x}{g'_x} λ=gyfy=gxfx因此可推出: f x ′ f y ′ = g x ′ g y ′ \frac{f'_x}{f'_y}= \frac{g'_x}{g'_y} fyfx=gygx
em。。。这式子很整齐,但这是个什么式子呢????
根据隐函数的求导法则可知 f x ′ f y ′ = − d y d x \frac{f'_x}{f'_y}=-\frac{dy}{dx} fyfx=dxdy, g x ′ g y ′ = − d y d x \frac{g'_x}{g'_y}=-\frac{dy}{dx} gygx=dxdy
所以, f x ′ f y ′ = g x ′ g y ′ \frac{f'_x}{f'_y}= \frac{g'_x}{g'_y} fyfx=gygx可以表示f(x,y)和g(x,y)的切线斜率相等
哇!!!这不就出来了吗!!!这不就是很多人用几何作图来表示的,为什么f(x,y)和g(x,y)在两函数的切线处取到极值吗!!!!用数学推导应该是这样证明的吧!!!!

但是,后边KKT条件推导的我穿越回到这里,还是要唾骂一声: λ = − f y ′ g y ′ = − f x ′ g x ′ λ =- \frac{f'_y}{g'_y}= -\frac{f'_x}{g'_x} λ=gyfy=gxfx不一定能推出 f y ′ f x ′ = g y ′ g x ′ \frac{f'_y}{f'_x}= \frac{g'_y}{g'_x} fxfy=gxgy
因为如果 f x ′ f'_x fx f y ′ f'_y fy都是0的时候,就推不出 f y ′ f x ′ = g y ′ g x ′ \frac{f'_y}{f'_x}= \frac{g'_y}{g'_x} fxfy=gxgy啦!!!!!!!

总之,当 λ = − f y ′ g y ′ = − f x ′ g x ′ λ =- \frac{f'_y}{g'_y}= -\frac{f'_x}{g'_x} λ=gyfy=gxfx,如果$ f x ′ f'_x fx f y ′ f'_y fy都不为0,可推出 f y ′ f x ′ = g y ′ g x ′ \frac{f'_y}{f'_x}= \frac{g'_y}{g'_x} fxfy=gxgy,得到两个方程:

  • z x ′ = f x ′ + λ ∗ g x ′ = 0 z'_x = f'_x+λ*g'_x=0 zx=fx+λgx=0
  • z y ′ = f y ′ + λ ∗ g y ′ = 0 z'_y = f'_y+λ*g'_y=0 zy=fy+λgy=0
    对这两个式子左右两边分别乘以dx和dy,得到:
  • z x ′ d x = f x ′ d x + λ ∗ g x ′ d x = ə f ə x d x + λ ∗ ə g ə x d x = 0 z'_x dx = f'_xdx+λ*g'_xdx=\frac{əf}{əx}dx+λ*\frac{əg}{əx}dx=0 zxdx=fxdx+λgxdx=əxəfdx+λəxəgdx=0
  • z y ′ d y = f y ′ d y + λ ∗ g y ′ d y = ə f ə y d y + λ ∗ ə g ə y d y = 0 z'_ydy = f'_ydy+λ*g'_ydy=\frac{əf}{əy}dy+λ*\frac{əg}{əy}dy=0 zydy=fydy+λgydy=əyəfdy+λəyəgdy=0
    对上述两个式子左右两边相加,得到:
  • z x ′ d x + z y ′ d y = ə f ə x d x + ə f ə y d y + λ ∗ ə g ə x d x + λ ∗ ə g ə y d y = 0 z'_xdx +z'_ydy =\frac{əf}{əx}dx+\frac{əf}{əy}dy+λ*\frac{əg}{əx}dx+λ*\frac{əg}{əy}dy=0 zxdx+zydy=əxəfdx+əyəfdy+λəxəgdx+λəyəgdy=0
    对上述式子左右两边进行积分
  • z ( x , y ) = f ( x , y ) + λ g ( x , y ) z(x,y)=f(x,y)+λg(x,y) z(x,y)=f(x,y)+λg(x,y)

而这个z函数,正是我们最后的拉格朗日函数 L ( x , y , λ ) = f ( x , y ) + λ g ( x , y ) L(x,y,λ)=f(x,y)+λg(x,y) L(x,y,λ)=f(x,y)+λg(x,y)

将g(x,y)=0约束条件转变为显示函数y = φ(x),并融入原函数f(x,y)后,原函数f(x,y)不再是那个自由自在的纯粹的原函数了,它有了条件约束就称为拉格朗日函数 L ( x , y , λ ) = f ( x , φ ( x ) ) L(x,y,λ)=f(x,φ(x)) L(x,y,λ)=f(x,φ(x))

并且当 λ = − f y ′ g y ′ = − f x ′ g x ′ λ =- \frac{f'_y}{g'_y}= -\frac{f'_x}{g'_x} λ=gyfy=gxfx时,且 f y ′ f x ′ = g y ′ g x ′ \frac{f'_y}{f'_x}= \frac{g'_y}{g'_x} fxfy=gxgy,即原函数f(x,y)与约束条件g(x,y)函数相切时,下列式子成立,即可根据下列式子,求出x,y,λ后,求出拉格朗日函数的极值

  • L x ′ = f x ′ + λ ∗ g x ′ = 0 L'_x = f'_x+λ*g'_x=0 Lx=fx+λgx=0
  • L y ′ = f y ′ + λ ∗ g y ′ = 0 L'_y = f'_y+λ*g'_y=0 Ly=fy+λgy=0
  • L λ ′ = g ( x , y ) = 0 L'_λ = g(x,y)=0 Lλ=g(x,y)=0

我天呐!!!!我感觉完成了一大壮举!!!虽然我觉得偏导数、导数符号可能稍微有点儿问题
但没关系啊。。。至少,在我目前的认知层面来说。。。能圆过去

主要参照了两篇文章,并结合理解(其实这两篇文章中间都有我不理解的地方,但这么一相互融合理解,忽然就懂了呀!)
拉格朗日乘数法推导
拉格朗日乘数法理解

但问题尚未结束,因为之前引用了隐函数求导法则,但还不知道隐函数求导法则究竟是怎么推导出来的

:错误的结束】

1.4 第四个数学困惑:隐函数求导法则的公式推导

这是很简单的,看别人的就好

隐函数求导法则的证明——某博主

1.5 第五个数学困惑:KKT条件的推导

这是我理解到一半,就头晕地想放弃的
好难理解

首先,为什么拉格朗日乘数法不够用了呢?

因为支持向量机要解决的是:

  • 求 m i n : w 2 2 求min:\frac{w^2}{2} min2w2,约束条件是: y i ( w i x i + b ) ≥ 1 y_i(w_ix_i+b)≥1 yi(wixi+b)1
    `但拉格朗日乘数法要求的约束条件是等式约束,但支持向量机却不是等式约束

那这种情况下,就需要对进一步地讲解KKT条件,KKT条件其实是拉格朗日乘数法的进化形态。

只有先理解拉格朗日乘数法,才能更好地理解KKT条件。

约束条件是非等式约束时,我们要将它化为等式约束,再进一步应用拉格朗日乘数法来求解

非等式约束: y i ( w i x i + b ) ≥ 1 y_i(w_ix_i+b)≥1 yi(wixi+b)1,要转化为与求解的极值同向:

  • 即求min时,非等式约束需要转化为 1 − y i ( w i x i + b ) ≤ 0 1-y_i(w_ix_i+b)≤0 1yi(wixi+b)0👉求min时,约束必须是≤0
  • 求max时,非等式约束需要转化为 y i ( w i x i + b ) − 1 ≥ 0 y_i(w_ix_i+b)-1≥0 yi(wixi+b)10👉求max时,约束必须是≤0
    why????说实话,我到现在都不理解为什么一定要同向,为什么为什么为什么???后续再慢慢想吧

考虑到支持向量机求得是 求 m i n : w 2 2 求min:\frac{w^2}{2} min2w2,则约束条件应该化为 1 − y i ( w i x i + b ) ≤ 0 1-y_i(w_ix_i+b)≤0 1yi(wixi+b)0

  • 为了后边表示简便,将 1 − y i ( w i x i + b ) 1-y_i(w_ix_i+b) 1yi(wixi+b)表示为 g ( x , y ) g(x,y) g(x,y),则不等式约束条件为 g ( x , y ) ≤ 0 g(x,y)≤0 g(x,y)0
  • 当前不等式约束条件有两种情况:
      1. 约束条件g(x,y)=0,则表示约束

g ( x , y ) ≤ 0 g(x,y)≤0 g(x,y)0化为等式约束,则可以在右侧加上一个参数 α 2 α^2 α2
即: g ( x , y ) + α 2 = 0 g(x,y)+α^2=0 g(x,y)+α2=0
为什么是α²,而不是α,因为避免了要去判断α为负的情况。

化为等式约束 g ( x , y ) + α 2 = 0 g(x,y)+α^2=0 g(x,y)+α2=0后,就可以应用拉格朗日乘数法

  • 求min: w 2 2 \frac{w^2}{2} 2w2,约束条件应该是对w的约束,为 g ( w ) + α 2 = 0 g(w)+α^2=0 g(w)+α2=0
  • 建立拉格朗日函数: L ( w , λ , a ) = w 2 2 + λ ( g ( w ) + α 2 ) = w 2 2 + λ g ( w ) + λ α 2 L(w,λ,a) = \frac{w^2}{2}+λ(g(w)+α^2)=\frac{w^2}{2}+λg(w)+λα^2 L(w,λ,a)=2w2+λ(g(w)+α2)=2w2+λg(w)+λα2

如果按我之前推导的,当 λ = − f y ′ g y ′ = − f x ′ g x ′ λ =- \frac{f'_y}{g'_y}= -\frac{f'_x}{g'_x} λ=gyfy=gxfx时,且 f y ′ f x ′ = g y ′ g x ′ \frac{f'_y}{f'_x}= \frac{g'_y}{g'_x} fxfy=gxgy时,可取到极值
注意:支持向量机中已知数据是x,y,而参数w,b未知,因此是通过拉格朗日求取w和b
对应之前推导的

  • f ( x , y ) = f ( w ) = w 2 2 f(x,y)=f(w) = \frac{w^2}{2} f(x,y)=f(w)=2w2
    g ( x , y ) = g ( w ) = − λ y ( w x + b ) + λ ( 1 − α 2 ) g(x,y) = g(w)=-λy(wx+b)+λ(1-α^2) g(x,y)=g(w)=λy(wx+b)+λ(1α2)

  • f w ′ = w f'_w = w fw=w

  • g w ′ = − λ x y g'_w=-λxy gw=λxy

因此, λ = − f y ′ g y ′ = − f x ′ g x ′ λ =- \frac{f'_y}{g'_y}= -\frac{f'_x}{g'_x} λ=gyfy=gxfx时,且 f y ′ f x ′ = g y ′ g x ′ \frac{f'_y}{f'_x}= \frac{g'_y}{g'_x} fxfy=gxgy并不是拉格朗日函数法求得极值的唯一条件。因为可能原函数变量只有一个w,此时的我,要穿越回拉格朗日乘数法推导的过程中,纠正历史错误。。。。

根据拉格朗日函数构建后, L ( w , λ , a ) = w 2 2 + λ g ( w ) + λ α 2 L(w,λ,a)=\frac{w^2}{2}+λg(w)+λα^2 L(w,λ,a)=2w2+λg(w)+λα2如下计算出 L L L的极值

  • L w ′ = w + λ d ( 1 − y ( x w + b ) ) d w = w − λ y x = 0 ,可得到 w = λ y x L'_w=w+λ\frac{d(1-y(xw+b))}{dw}=w-λyx=0,可得到w=λyx Lw=w+λdwd(1y(xw+b))=wλyx=0,可得到w=λyx
  • L λ ′ = g ( w ) + α 2 = 0 , 可得到 w = 1 − a 2 − y b x y L'_λ=g(w)+α^2=0,可得到w=\frac{1-a^2-yb}{xy} Lλ=g(w)+α2=0,可得到w=xy1a2yb
  • L a ′ = 2 λ α = 0 ,可得到 λ = 0 或是 α = 0 L'_a=2λα=0,可得到λ=0或是α=0 La=2λα=0,可得到λ=0或是α=0
    • 如果λ=0,根据上式 ② g ( w ) + α 2 = 0 ②g(w)+α^2=0 g(w)+α2=0,则得到g(w)≤0,g(w)≤0表示约束不起作用【约束不起作用就相当于,我要求你考试不低于0分,这个要求无效,因为底线太低】

    • 如果λ≠0,则α=0,根据上式 ② g ( w ) + α 2 = 0 ②g(w)+α^2=0 g(w)+α2=0,则说明g(w)=0,表示当L求得极值时,恰好是在g(w) =0的时候取到的。

      • 注意,α的引入,是为了让函数能够满足g(w)≤0。
      • 另外,此时的λ只能是λ≥0 ,为什么呢?后续有机会再证明
    • 由③知2λα=0,因此原本求min: L ( w , λ , a ) = w 2 2 + λ g ( w ) + λ α 2 L(w,λ,a)=\frac{w^2}{2}+λg(w)+λα^2 L(w,λ,a)=2w2+λg(w)+λα2,就可以转化为求min: L ( w , λ ) = w 2 2 + λ g ( w ) L(w,λ)=\frac{w^2}{2}+λg(w) L(w,λ)=2w2+λg(w)

    • 于是,方程组的求解重新列为如下式子条件,这些条件正是KKT条件

      • L w ′ = w + λ d ( 1 − y ( x w + b ) ) d w = w + λ d ( g ( w ) ) d w = w − λ y x = 0 L'_w=w+λ\frac{d(1-y(xw+b))}{dw}=w+λ\frac{d(g(w))}{dw}=w−λyx=0 Lw=w+λdwd(1y(xw+b))=w+λdwd(g(w))=wλyx=0
      • λ g ( w ) = λ ( 1 − y ( x w + b ) ) = 0 λg(w)=λ(1-y(xw+b))=0 λg(w)=λ(1y(xw+b))=0
      • g ( w ) ≤ 0 g(w)≤0 g(w)0
      • λ ≥ 0 λ≥0 λ0
        得到KKT条件,则可以确保函数满足约束条件。
        然后呢?这些条件如何能够推导出最大间隔的支持向量,也就是如何能够求出所构造的拉格朗日函数极小值,也就是如何能够得到边界函数的参数w和b呢?
      • 当g(w,b)=0时,表示 y i ( x i w + b ) = 1 y_i(x_iw+b)=1 yi(xiw+b)=1,倒推分为了两种情况:
        • y i = 1 , x i w + b = 1 ,表示上边界函数上的点 y_i=1, x_iw+b=1,表示上边界函数上的点 yi=1,xiw+b=1,表示上边界函数上的点
        • y i = − 1 , x i w + b = − 1 ,表示下边界函数上的点 y_i=-1, x_iw+b=-1,表示下边界函数上的点 yi=1,xiw+b=1,表示下边界函数上的点
        • 因此如果取λ>0时,g(w,b)=0,表示的是两边的边界函数(即支持向量)
        • 但是如果取λ=0时,要保证g(w,b)≤0,如果出现g(w,b)>0的情况,说明λ值使分类结果不正确,应重新调整λ值
        • 所以要KKT条件是要λ>0求g=0的最优解,λ=0要验证g≤0“
          目标是要求出边界函数的参数w和b,并且符合KKT条件,因此这里需要调整三个未知量w、b、λ,来实现拉格朗日函数对这三个参数求偏导,最终求得极值的情况。

同时调整三个参数,会使约束条件变得非常复杂,因此,能不能想办法找到这三个参数之间的关系,然后通过调整其中一个参数,来推导出另外两个参数呢?

这就是接下来要引出的对偶问题的意义

  • 原目标是要求出 w 2 2 \frac{w^2}{2} 2w2的极小值,对应为求拉格朗日函数的极小值 min:L(w,b,λ)
  • 由于假设在w、b固定的情况下,要使 L ( w , b ) = w 2 2 + λ g ( w , b ) L(w,b)=\frac{w^2}{2}+λg(w,b) L(w,b=2w2+λg(w,b)取到极小值,应该要让λ取到最大值,因为λ≥0,而g(w,b)≤0,只有当λ最大,λg(w,b)才会最小。
    • 因此第一步:max_λ(L(w,b)),表示取λ的最大值时的拉格朗日函数值
    • 但由于λ达最大值时,或许有多个拉格朗日函数值(因为有多个λ)
    • 则应该在这些拉格朗日函数值中,选取拉格朗日值最小的那个,即min:max_λ(L)
    • 但由于还含有参数w和b,因此即使求导,也无法得到具体的数值,所以考虑将w,b用λ来代替即可
    • L ( w , b , λ ) = w 2 2 + λ g ( w , b ) = w 2 2 + λ ( 1 − y ( x y + b ) ) L(w,b,λ)=\frac{w^2}{2}+λg(w,b)=\frac{w^2}{2}+λ(1-y(xy+b)) L(w,b,λ=2w2+λg(w,b)=2w2+λ(1y(xy+b))对w和b分别求偏导,并设为0,表示拉格朗日在极值点时的w和b方向上的偏导分为0:
      • L w ′ = w − λ x y = 0 , w = λ x y L'_w = w-λxy = 0,w=λxy Lw=wλxy=0w=λxy
      • L b ′ = λ y = 0 L'_b = λy = 0 Lb=λy=0
      • 将上式代入拉格朗日函数得到
    • L ( w , b , λ ) = w 2 2 + λ ( 1 − y ( x w + b ) ) = − 1 2 λ 2 x 2 y 2 + λ L(w,b,λ)=\frac{w^2}{2}+λ(1-y(xw+b))=-\frac{1}{2}λ^2x^2y^2+λ L(w,b,λ=2w2+λ(1y(xw+b))=21λ2x2y2+λ
    • 且要求λ≥0
    • 这时要求L的min值,是需要求出max_λ,即当λ达到最大时,L会是最小的
  • 现在的问题是,如何求解λ

对偶问题

1.5.1 KKT条件的乘子为什么必须≥0

1.5.2 KKT条件的约束和原函数为什么同向

1.5.3 课本为什么可以直接用拉格朗日乘数法

2.支持向量机的数学推导

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/16157.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

邮票面值-2022年全国青少年信息素养大赛Python国赛第5题

[导读]:超平老师计划推出《全国青少年信息素养大赛Python编程真题解析》50讲,这是超平老师解读Python编程挑战赛真题系列的第7讲。 全国青少年信息素养大赛(原全国青少年电子信息智能创新大赛)是“世界机器人大会青少年机器人设计…

CopyRE关系抽取

CopyRE 模型包括编码器和解码器两部分 编码器:将输入的句子(源句子)转换为固定长度的语义向量 解码器:读取该矢量并直接生成三元组 Encoder 编码器使用Bi-RNN对输入句子进行编码。 Decoder 解码器会直接生成三元组。 1、 解码…

Grafana 使用Rest API 作为数据源的实践

本文使用最新版本的Grafana 10 进行操作。 如果要使用Rest API 作为grafana 的数据源,可以选择安装一个Infinity的数据源插件。 如果创建数据源时,搜不到infinity,点击find more 查找安装该数据源插件 1. 安装 Infinity 数据源插件&#xf…

HNU-操作系统OS-学习感悟

初次接触如此底层的计算机基础课程,我还是很不适应的。 教材用的这本书,实验用的清华大学的ucore实验 好在应试水平没有丢。最后总评94/100。 下面仅从应试角度谈一谈学习的理解 总领 HNU的OS课程平时分给的比较模糊,大致由 作业实验验…

自营外卖配送平台的商家如何对接第三方美饿的订单

自营外卖跑腿平台对接第三方美饿的好处 单说美团饿了么自身的流量优势,很多商家不能忽视,但是美团饿了么的高额配送成本与抽成,同样也不能忽视。很多商家希望选择自配送或者其他更划算的配送方式来节省成本。这时,区域性的自建外…

菜比:你还不会接口测试?

很多人会谈论接口测试。到底什么是接口测试?如何进行接口测试?这篇文章会帮到你。 一、前端和后端 在谈论接口测试之前,让我们先明确前端和后端这两个概念。 前端是我们在网页或移动应用程序中看到的页面,它由 HTML 和 CSS 编写…

自制游戏引擎之shader预编译

shader预编译为二进制,在程序运行时候加载,可以提升性能,节省启动时间. 1. 采用google shaderc预编译与加载shader 1.1 下载代码 https://github.com/google/shaderc third_party文件里需要放依赖的第三方 因为电脑访问google的问题,无法通过shaderc-2023.4\utils\git-sync-de…

赛效:如何一键生成印章

1:在电脑上打开标小智印章生成器,点击输入框,在输入框里输入印章内容。 2:文本内容输入后,点击右侧的“生成按钮”。 3:在生成的印章模板里,挑一个满意的,鼠标放上去就可以看到下载按…

DM8:达梦数据库数据文件与日志文件介绍

DM8:达梦数据库数据文件与日志文件介绍 环境介绍1 表空间中的数据文件1.1 表空间1.2 数据文件1.3 系统自带的表空间1.3.1 SYSTEM 表空间1.3.2 ROLL 表空间1.3.3 TEMP 表空间1.3.4 MAIN 表空间1.3.5 用户自定义表空间 1.4 DM数据库的表空间和数据文件分布 2 日志文件2.1 重做日志…

Java入门教程||Java 网络编程||Java 发送邮件

Java 网络编程 网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来。 java.net包中J2SE的API包含有类和接口,它们提供低层次的通信细节。你可以直接使用这些类和接口,来专注于解决问题&#…

CTFHub XSS 过滤关键词 WriteUp

前文链接&#xff1a;DOM反射xss 这次直接浏览器输入payload&#xff0c;发现 script 被过滤掉了 </textarea>"><script srchttp://xsscom.com//cZ2vvZ></script>碰到这种情况不要慌&#xff0c;下面给出两种方法绕过过滤关键字。 双写绕过 <…

Spring Boot 中的 CD 工具

Spring Boot 中的 CD 工具 在现代软件开发中&#xff0c;持续交付&#xff08;Continuous Delivery&#xff0c;简称 CD&#xff09;已经成为了一个非常重要的开发模式。CD 工具可以帮助我们自动化构建、测试、部署和发布软件&#xff0c;提高软件交付的速度和质量。在 Spring…