前导

有这样一个场景,二维坐标轴有一个曲线g(x,y) = x2*y = 3,如何求这个曲线到原点的最短距离呢?

在高等数学中,正常的方法将其转换成附加条件下的求极值问题。这是后话,先看下几何直观上,该如何求?

假设曲线到原点的最短距离为a,则与原点距离为a的点全部在半径为a的圆上。所以在不知道a为何值的情况下,可以渐渐从0加大以原点为圆心的圆半径,知道圆与曲线相切,则相切的圆半径就是我们要找到最短距离a,相切点就是我们要找的极值点

SVM理论疏导——拉格朗日乘子法

实际上,上面的几个圆可以看成f(x,y)= x2+y2的等高线,而g(x,y) = x2*y = 3可以看成g(x,y) = x2*y的一条等高线。
SVM理论疏导——拉格朗日乘子法
上一篇讲到梯度有提到,梯度的方向与等高线切线的法向量是平行的。

问题转换

这里对前导进行总结,在相切点,圆的梯度向量和曲线的梯度向量是平行的。
SVM理论疏导——拉格朗日乘子法

有前面可以将求最短距离的问题进行转换,转换为两种等高线f(x,y)= x2+y2和g(x,y) = x2*y在某一点的梯度方向相同,且g(x,y)= 3 .
梯度平行得到下面的公式。
SVM理论疏导——拉格朗日乘子法
联立g(x,y)= 3 可得:
SVM理论疏导——拉格朗日乘子法

拉格朗日乘子法

函数f在g约束下的极值这种问题可以表示为:
SVM理论疏导——拉格朗日乘子法
最后联立方程进行求解:
SVM理论疏导——拉格朗日乘子法

多条件下的拉格朗日乘子法

如果求的是没有条件的极值,梯度等于0的点就是我们要找的极值点。
SVM理论疏导——拉格朗日乘子法

上面的例子是一个单条件的极值点问题,通过下面联立方程,即可求得极值点。SVM理论疏导——拉格朗日乘子法

对于多条件极值呢?比如多加一个条件h(x,y)= x-y-3 = 0.很显然求到的极值点如下所示。
SVM理论疏导——拉格朗日乘子法
可以看到,极值点圆的法线是两条附加线的法线的线性组合。故三种线的梯度可以表示为:
SVM理论疏导——拉格朗日乘子法
同理,联立已知方程可得:
SVM理论疏导——拉格朗日乘子法

不等式条件下的拉格朗日乘子法

上面提到的同心圆,在没有任何附加条件下,它离原点最近的距离就是半径为0的圆。
若有一个附加条件 x+y <= 1,但其可行解包含了原点,故其约束无效。
SVM理论疏导——拉格朗日乘子法

若将约束条件换成x+y <= -2。
SVM理论疏导——拉格朗日乘子法
上图可以看出,它的约束条件跟x+y = -2是一样的效果,故可得:
SVM理论疏导——拉格朗日乘子法
这里有一个疑问,不等式和等式条件既然效果一样,那有什么区别呢?下面接着看。
我们都知道梯度的方向指向函数增大的最快方向,故下图可以看出两条曲线在相切点的梯度是相反的,故SVM理论疏导——拉格朗日乘子法
SVM理论疏导——拉格朗日乘子法

因此刚才的方程组可以再增加一个条件:
SVM理论疏导——拉格朗日乘子法

KKT条件

KKT条件就是上面联立的方程组,只不过KKT汇总了所有的等式和不等式条件。
SVM理论疏导——拉格朗日乘子法
联立方程如下:
SVM理论疏导——拉格朗日乘子法

相关文章:

  • 2021-11-28
  • 2021-11-28
  • 2021-09-07
猜你喜欢
  • 2021-05-24
  • 2021-11-19
  • 2021-09-06
相关资源
相似解决方案