当前位置:   article > 正文

机器学习——支持向量机(数学基础推导篇)_支持向量机优化问题的推导

支持向量机优化问题的推导

在一个周日下午,夏天的雨稀里哗啦地下着
我躺在床上,捧着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是以 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和点 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,即可得到模型的最优解。

那么究竟要怎么在有条件限制 y ∗ ( W T X + b ) ≥ 1 y*(W^TX+b)≥1 y(WTX+b)1的情况下,求出极值 d 边界 = 2 ∣ ∣ W ∣ ∣ 2 d_{边界} = \frac{2}{||W||_2} d边界=∣∣W22呢?
这就涉及到拉格朗日乘数法了
这痛苦的让人哭泣的拉格朗日
明天继续吧!!

  • 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)相切),就取到了符合约束条件的最小值。

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

从KKT条件推导穿越回来的我,不得不俯首痛哭
还是要把基础打好,先理解好导数、偏导数、微分、偏微分、全微分、梯度、方向导数这些基础概念
不然自己理解起来,会十分混淆,一知半解
是的,基础很重要

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

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

  • z x ′ = ə f ə x + ə f ə y d φ 1 ( x ) d x = f x ′ + f y ′ ∗ φ 1 x ′ z'_x= \frac{əf}{əx}+\frac{əf}{əy}\frac{dφ_1(x)}{dx}=f'_x+f'_y*φ'_{1x} zx=əxəf+əyəfdxdφ1(x)=fx+fyφ1x
    同样的,g(x,y)=0也可以推出 x = φ 2 ( y ) x = φ_2(y) x=φ2(y),代入f原函数: z = f ( φ 2 ( y ) , y ) z=f(φ_2(y),y) z=f(φ2(y),y)
  • z y ′ = ə f ə y + ə f ə x d φ 2 ( y ) d y = f y ′ + f x ′ ∗ φ 2 y ′ z'_y= \frac{əf}{əy}+\frac{əf}{əx}\frac{dφ_2(y)}{dy}=f'_y+f'_x*φ'_{2y} zy=əyəf+əxəfdydφ2(y)=fy+fxφ2y

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

  • φ 1 x ′ = d y d x = − g x ′ g y ′ φ'_{1x}=\frac{dy}{dx}=-\frac{g'_x}{g'_y} φ1x=dxdy=gygx
  • φ 2 y ′ = d x d y = − g y ′ g x ′ φ'_{2y}=\frac{dx}{dy}=-\frac{g'_y}{g'_x} φ2y=dydx=gxgy
    因此
  • z x ′ = f x ′ + f y ′ ∗ φ 1 x ′ = f x ′ − f y ′ ∗ g x ′ g y ′ = f x ′ − f y ′ g y ′ ∗ g x ′ z'_x = f'_x+f'_y*φ'_{1x}= f'_x-f'_y*\frac{g'_x}{g'_y}= f'_x-\frac{f'_y}{g'_y}*g'_x zx=fx+fyφ1x=fxfygygx=fxgyfygx
  • z y ′ = f y ′ + f y ′ ∗ φ 2 y ′ = f y ′ − f 2 ′ ∗ g y ′ g 2 ′ = f y ′ − f x ′ g x ′ ∗ g y ′ z'_y = f'_y+f'_y*φ'_{2y}= f'_y-f'_2*\frac{g'_y}{g'_2}= f'_y-\frac{f'_x}{g'_x}*g'_y zy=fy+fyφ2y=fyf2g2gy=fygxfxgy

要使z取到极值,必要条件是偏导数都为0

  • z x ′ = 0 ,因此 f x ′ − f y ′ g y ′ ∗ g x ′ = 0 ,推出 f x ′ f y ′ = g x ′ g y ′ = 0 z'_x=0,因此f'_x-\frac{f'_y}{g'_y}*g'_x=0,推出\frac{f'_x}{f'_y}=\frac{g'_x}{g'_y}=0 zx=0,因此fxgyfygx=0,推出fyfx=gygx=0
  • z y ′ = 0 ,因此 f y ′ − f x ′ g x ′ ∗ g y ′ = 0 ,推出 f y ′ f x ′ = g y ′ g x ′ = 0 z'_y=0,因此f'_y-\frac{f'_x}{g'_x}*g'_y=0,推出\frac{f'_y}{f'_x}=\frac{g'_y}{g'_x}=0 zy=0,因此fygxfxgy=0,推出fxfy=gxgy=0

λ = − f y ′ g y ′ = − f x ′ g x ′ λ =- \frac{f'_y}{g'_y}=-\frac{f'_x}{g'_x} λ=gyfy=gxfx,则有

  • z x ′ = f x ′ − f y ′ g y ′ ∗ g x ′ = f x ′ + λ ∗ g x ′ z'_x = f'_x-\frac{f'_y}{g'_y}*g'_x= f'_x+λ*g'_x zx=fxgyfygx=fx+λgx
  • z y ′ = f y ′ − f x ′ g x ′ ∗ g y ′ = f y ′ + λ ∗ g y ′ = 0 z'_y =f'_y-\frac{f'_x}{g'_x}*g'_y=f'_y+λ*g'_y=0 zy=fygxfxgy=fy+λgy=0

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

那么令 λ = − f y ′ g y ′ = − f x ′ g x ′ λ =- \frac{f'_y}{g'_y}=-\frac{f'_x}{g'_x} λ=gyfy=gxfx,函数取到极值
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 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,可推出,得到两个方程:

  • 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约束条件融入原函数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)

  • 于是,原本有约束条件的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)求极值问题

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

拉格朗日乘数法的求极值,可以转化为 ( f x ′ , f y ′ ) + λ ( g x ′ , g y ′ ) = Δ f + λ Δ g = 0 ( f'_x,f'_y)+λ(g'_x,g'_y)=Δf+λΔg=0 (fxfy)+λ(gxgy)=Δf+λΔg=0

  • 这不就是原函数f(x,y)的梯度与约束条件g(x,y)的梯度共线的意思吗!!!!
  • 这个非常重要,尤其在后边KKT问题的理解上,显得尤为重要。

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

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

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

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

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

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

1.5 第五个数学困惑:不等式约束条件为什么可以用拉格朗日乘数法

这是我理解到一半,就头晕地想放弃的
好难理解,如果要更透彻的了解【透彻!!!】,需要铺垫的知识:

  • 梯度与偏导数的关系
  • 偏导数与全微分的关系
  • 梯度总是指向函数增长最大的方向
    • 涉及了偏导数与切平面的理解
    • 涉及了切线与切平面的理解

首先,拉格朗日乘数法是在约束条件为等式的情况下推导出来的。

但支持向量机要解决的是:

  • 求 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
    但拉格朗日乘数法要求的约束条件是等式约束,但支持向量机却是非等式约束

那这种情况下,就需要对进一步地讲解拉格朗日乘数法为什么可以用在不等式条件约束下。

假设原函数是f(x,y),约束条件为不等式g(x,y)≤0

那么,可以引入松弛变量α²,使得g(x,y)+α²=0,这样就可以应用拉格朗日乘数法,将约束条件融入原函数中,求得极值,即
L ( x , y , λ , α ) = f ( x , y ) + λ g ( x , y ) + λ α 2 L(x,y,λ,α) = f(x,y)+λg(x,y)+λα² L(x,y,λ,α)=f(x,y)+λg(x,y)+λα2,对L函数中的未知数、系数分别求偏导,并使偏导分别为0,即可求出极值

  • 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 ) + α 2 = 0 L'_λ = g(x,y)+α²=0 Lλ=g(x,y)+α2=0 - - - - -③
  • L α ′ = 2 λ α = 0 L'_α = 2λα=0 Lα=2λα=0 - - - - -④
    对于①中 2 λ α = 0 2λα=0 2λα=0,有两种情况:λ=0或α=0
    • 当λ=0时,相当于α²≠0,由③g(x,y)+α²=0可推出g(x,y)<0【当然α²还是又可能=0的,但无所谓】
      • 此时, L ( x , y , λ , α ) = f ( x , y ) L(x,y,λ,α) = f(x,y) L(x,y,λ,α)=f(x,y),说明λ=0时,g(x,y)≤0对原函数f(x,y)并无约束作用
    • 当α=0时,λ要>0【这个是需要另外证明】,则g(x,y)+α²=0可推出g(x,y)=0【当然α²还是又可能=0的,但无所谓】
    • 因此可总结得到
      • 当g(x,y)<0时,必须使λ=0
      • 当g(x,y)=0时,λ≥0
    • α对于求原函数极值无任何影响,因此,为了更简便的计算,则可将原拉格朗日函数转化为以下无α的不等式条件约束下的拉格朗日函数
    • 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 ′ = 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 - - - - -③
      • g(x,y)≤0 - - - - -④
      • λ≥0 - - - - -⑤
        约束条件是非等式约束时,通过引入α²松弛变量,我们可以将它化为等式约束,再进一步应用拉格朗日乘数法,并通过求偏导后发现,α对约束条件和原函数的影响,可以转化为λ与原函数的关系,因此去掉松弛变量,以简约的方式呈现拉格朗日乘数法
    • 当λ>0时,极值还是在相切的地方,即Δf + λΔg = 0 处取得
    • 当λ=0 时,极值点不在相切处,但满足条件g(x,y)<0

1.6 第六个数学困惑:不等式约束的拉格朗日乘子为什么要λ≥0

这就要用到之前推导拉格朗日乘数法时,得到的推导结果:
拉格朗日乘数法的求极值,可以转化为 ( f x ′ , f y ′ ) + λ ( g x ′ , g y ′ ) = Δ f + λ Δ g = 0 ( f'_x,f'_y)+λ(g'_x,g'_y)=Δf+λΔg=0 (fxfy)+λ(gxgy)=Δf+λΔg=0

  • 这不就是原函数f(x,y)的梯度与约束条件g(x,y)的梯度共线的意思吗!!!!

并且要知道,梯度的方向,指向函数值增长最大的方向【为什么?这个后续证明

实在懒得在电脑画图了,但其实我还是有点儿小困惑的,λ<0,会妨碍到原函数在切线处取到极值
如果 f ( w ) = w 2 2 f(w) = \frac{w²}{2} f(w)=2w2,在g(w,b)≤0的可行域内,f(w)的梯度,极有可能与g(w,b)共线同向
那么当λ<0时, Δ f + λ Δ g Δf + λΔg Δf+λΔg,就可以等于0,这意味着拉格朗日函数取到极值
但实际,此时在可行域内取到的拉格朗日极值,并非等同于原函数取到极值
因为在可行域内,原函数f(w)值是 w 2 2 > 0 \frac{w^2}{2}>0 2w20,实际原函数的极值点,应该在可行域圈上取得。
即,λ<0,会使得函数在Δf≠0处取到拉格朗日极值
因此λ不应小于0,而是λ≥0【至于论证λ大于0就可以的活,还是留给别人吧,算了还是自己分析吧】

  • 因为λ>0时,当f的极值点在可行域圈上时,Δf和Δg同向,那么Δf+λΔg≠0,因此,λ>0可以避免在可行域内取到拉格朗日极值点
    在这里插入图片描述

1.7 第七个数学困惑:为什么梯度指向函数增长最大的方向

首先,梯度是各个方向的偏导数形成的向量

  • 如果是一元函数,则导数是函数值对单个变量的一条切线
  • 如果是二元函数,则函数值对两个变量的偏导数,梯度为 ( f x ′ , f y ′ ) (f'_{x},f'_{y}) (fx,fy),这两个偏导数表示的切线即为两条切线且这两条切线不共线,这两条不共线的切线构成了一个切平面,
    如果是…

以二元函数为例,讲解为什么梯度指向函数增长最大的方向

首先,梯度是由各个偏导数形成的向量,函数的增长量为 d z = f x ′ d x + f y ′ d y dz=f'_{x}dx+f'_{y}dy dz=fxdx+fydy

如果x偏导数 f x ′ = Δ z Δ x > 0 f'_x=\frac{Δz}{Δx}>0 fx=ΔxΔz>0,意味着当固定y不变,沿着x正方向移动时,z是增长最大的
如果x偏导数 f x ′ = Δ z Δ x < 0 f'_x=\frac{Δz}{Δx}<0 fx=ΔxΔz0,意味着当固定y不变,沿着x负方向移动时,z是增长最大的

  • 由此可见,偏导数为正或为负,均指向了函数值增长最大的方向
  • 对于y的偏导数分析亦是如此

那么,偏导数均指向了函数值增长最大的方向,即由偏导数构成的梯度向量,即指向函数值增长最大的方向 Δ z = ( f x ′ , f y ′ ) Δz = (f'_{x},f'_{y}) Δz=(fx,fy)

那么在函数值等高线中,梯度方向则是由内指向外侧的向量

非等式约束: 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
    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/604968
推荐阅读
相关标签