拉格朗日乘子法与KKT条件

欢迎转载,转载请注明出处:https://blog.csdn.net/qq_41709378/article/details/106599811
————————————————————————————————————————————————————

拉格朗日乘子法与KKT条件:
  最近学习支持向量机的时候用到了最优化理论,但是我没有多少这方面的理论基础。于是翻了很多大神的博客把容易理解的内容记载到这篇博客中。因此这是篇汇总博客,不算是全部原创,但是基础理论,应该也都差不多吧。因才疏学浅,有纰漏的地方恳请指出。
  KKT条件是解决最优化问题的时用到的一种方法。我们这里提到的最优化问题通常是指对于给定的某一函数,求其在指定作用域上的全局最小值。提到KKT条件一般会附带的提一下拉格朗日乘子。对学过高等数学的人来说比较拉格朗日乘子应该会有些印象。二者均是求解最优化问题的方法,不同之处在于应用的情形不同。

一、凸优化问题

1 凸集与凸函数

在讲解凸优化问题之前我们先来了解一下凸集和凸函数的概念。
凸集: 在点集拓扑学与欧几里得空间中,凸集是一个点集,其中每两点之间的直线上的点都落在该点集中。如果不明白,请看下图。

在这里插入图片描述

凸函数: 一个定义在向量空间的凸子集C(区间)上的实值函数f,如果在其定义域C上的任意两点x,y以及t∈[0,1]有:
                  f ( t x + ( 1 − t ) y ) ≤ t f ( x ) + ( 1 − t ) f ( y ) f\left( {tx + \left( {1 - t} \right)y} \right) \le tf\left( x \right) + \left( {1 - t} \right)f\left( y \right) f(tx+(1t)y)tf(x)+(1t)f(y)

则该函数为凸函数!【可以使用拉格朗日中值定理或者是泰勒公式进行证明】。凸函数另一个判别方式是:如果一个凸函数是一个二阶可微函数,则它的二阶导数是非负的。如下图。

在这里插入图片描述

注意: 中国大陆数学界某些机构关于函数凹凸性定义和国外的定义是相反的。Convex Function在某些中国大陆的数学书中指凹函数。Concave Function指凸函数。但在中国大陆涉及经济学的很多书中,凹凸性的提法和其他国家的提法是一致的,也就是和数学教材是反的。举个例子,同济大学高等数学教材对函数的凹凸性定义与本条目相反,本条目的凹凸性是指其上方图是凹集或凸集,而同济大学高等数学教材则是指其下方图是凹集或凸集,两者定义正好相反。 另外,也有些教材会把凸定义为上凸,凹定义为下凸。碰到的时候应该以教材中的那些定义为准。

在机器学习领域大多数是采用上文中所描述的凸函数和凹函数的定义,下文中凸函数的定义也采用上文描述的那种。

2 凸优化问题

凸优化: 凸优化是指一种比较特殊的优化,是指求取最小值的目标函数为凸函数的一类优化问题。其中,目标函数为凸函数且定义域为凸集的优化问题称为无约束凸优化问题。而目标函数和不等式约束函数均为凸函数,等式约束函数为仿射函数,并且定义域为凸集的优化问题为约束优化问题

上面是来自百度百科定义,下面我们对其总结,将其公式化!

凸优化性质:
1、目的是求取目标函数的最小值;
2、目标函数和不等式约束函数都是凸函数,定义域是凸集;
3、若存在等式约束函数,则等式约束函数为仿射函数;
4、对于凸优化问题具有良好的性质,局部最优解便是全局最优解。一个凸优化问题用公式描述为:
                           min ⁡ x f ( x ) \mathop {\min }\limits_x f\left( x \right) xminf(x)
                         s . t . g i ( x ) ≤ 0 s.t.{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {g_i}\left( x \right) \le 0 s.t.gi(x)0
                           h i ( x ) = 0 {h_i}\left( x \right) = 0 hi(x)=0

所以其目标函数f(x)以及不等式约束条件g(x)便是凸函数,而等式约束条件h(x)是仿射函数。
大家可能要问:何为仿射函数???

仿射函数即由 1 阶多项式构成的函数,一般形式为 f(x)=Ax+b,这里,A 是一个 m×k 矩阵,x 是一个 k 向量,b是一个 m 向量,实际上反映了一种从 k 维到 m 维的空间映射关系。

同时,从 R n {R^n} Rn R m {R^m} Rm的映射 x → A x + b x \to Ax + b xAx+b称为仿射变换(affine transform)或仿射映射(affine map),其中 A 是一个 m × n m \times n m×n矩阵,b 是一个 m 维向量。当时b 的维度为1时,称上述仿射变换为仿射函数。同时,当常数项b=0时的仿射函数称为线性函数。

补充一下:

  1. 凸优化问题的局部解就是全局解。因为严格凸函数只有一个局部最优解。所以局部最优解等同于全局最优解。
  2. 凸优化问题会运用到SVM最优化问题求解中。无论原始问题是否是凸的,对偶问题都是凸优化问题。这样可以将原问题转换为对偶函数求解,考虑满足KKT的条件,对于拉格朗日函数求导等于0即可得到解。

二、拉格朗日乘子法与KKT条件

1 无约束优化

对于无约束优化问题中,如果一个函数f是凸函数,那么可以直接通过f(x)的梯度等于0来求得全局极小值点。例如: y = x 2 y=x^2 y=x2求导后,在x=0处梯度等于0,全局极小值点在x=0处取得。

假设:让f(x)在Ω→R上,是一个连续可微的函数。
局部最小值的充要条件: x ∗ x^* x是f(x)当且仅当的局部最小值的条件是:
在这里插入图片描述

为了避免陷入局部最优,人们尽可能使用凸函数作为优化问题的目标函数。
下面是定义部分:

凸集定义: 欧式空间中,对于集合中的任意两点的连线,连线上任意一点都在集合中,我们就说这个集合是凸集。
凸函数定义: 对于任意t属于[0,1]的a和任意属于凸集的两点x, y,有f( tx + (1-t)y ) <= t * f(x) + (1-t) * f(y),几何上的直观理解就是两点连线上某点的函数值,大于等于两点之间某点的函数值。凸函数的任一局部极小点也是全局极小点
半正定矩阵的定义: 特征值大于等于0的实对称矩阵。
半正定矩阵的充要条件: 行列式(n阶顺序主子式)等于0,行列式的i阶顺序主子式>=0,i=1…n-1
凸函数的充要条件: 如果f(x)在开凸集S上具有二阶连续偏导数,且f(x)的海塞矩阵(二阶偏导的矩阵)在S上处处半正定,则f(x)为S上的凸函数。

2 约束优化定义

考虑带约束的优化问题,可以描述为如下形式:
                      { min ⁡ x f ( x ) s . t . g i ( x ) ≤ 0 , i = 1 , 2... m h j ( x ) = 0 , j = m + 1 , . . . n \left\{ \begin{array}{l} \mathop {\min }\limits_x f\left( x \right)\\ s.t.{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {g_i}\left( x \right) \le 0,{\kern 1pt} {\kern 1pt} {\kern 1pt} i = 1,2...m\\ {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {h_j}\left( x \right) = 0,j = m + 1,...n \end{array} \right. xminf(x)s.t.gi(x)0,i=1,2...mhj(x)=0,j=m+1,...n
其中f(x)是目标函数,g(x)为不等式约束,h(x)为等式约束。
若f(x),h(x),g(x)三个函数都是线性函数,则该优化问题称为线性规划。若任意一个是非线性函数,则称为非线性规划
若目标函数为二次函数,约束全为线性函数,称为二次规划
若f(x)为凸函数,g(x)为凸函数,h(x)为线性函数,则该问题称为凸优化问题。注意这里不等式约束g(x)<=0则要求g(x)为凸函数,若g(x)>=0则要求g(x)为凹函数。
同时,我们知道凸优化的任一局部极值点也是全局极值点,局部最优也是全局最优。

3 等式约束

考虑一个简单的问题目标函数 f ( x ) = x 1 + x 2 f(x) = x1 + x2 f(x)=x1+x2,等式约束 h ( x ) = x 1 2 + x 2 2 − 2 h(x)=x_1^2+x_2^2-2 h(x)=x12+x222,求解极小值点。f(x)在二维平面上画出等高线(contour)就是一条条斜率相同的直线,h(x)=0在二维平面上画出等高线就是一个圆,如下图所示。
在这里插入图片描述
可以明显的看出,在圆圈h(x)的限制下,直线f(x)的最小值为-2,在左下角直线 x 1 + x 2 = − 2 x1+x2=-2 x1+x2=2和圆的交点上。

细化这个过程,在目标函数 f ( x ) = x 1 + x 2 f(x) = x1 + x2 f(x)=x1+x2移动的过程中,目标函数与约束条件相交的点 X F X_F XF,变化 δ x \delta x δx的方向有很多种,到底哪一种是朝着目标函数最小值的趋势下降呢?也就是满足 f ( X F + α ⋅ δ x ) < f ( X F ) f\left( {{X_F} + \alpha \cdot \delta x} \right) < f\left( {{X_F}} \right) f(XF+αδx)<f(XF)

在这里插入图片描述

f(x)要得到极小值,需要往f(x)的负梯度(下降最快的方向)的方向走,如下下图蓝色箭头。当变化 δ x \delta x δx的方向要与负梯度( − ∇ x f ( x ) -{\nabla _x}f\left( x \right) xf(x))方向的夹角要小于90度,也就是 δ x ⋅ ∇ x f ( x ) > 0 \delta x \cdot {\nabla _x}f\left( x \right) > 0 δxxf(x)>0时,保证了下降方向的正确能够寻找到最优值,而往f(x)的负梯度(下降最快的方向)的方向走下降速度最快。
在这里插入图片描述

在这里插入图片描述
如下图,考虑圆h(x)的限制,要得到极小值,需要沿着圆正交于∇x h(x)的方向[圆的切线方向]移动,如下图红色粗箭头。注意这里的方向不是h(x)的梯度,而是正交于h(x)的梯度,h(x)梯度如下图的红色细箭头。
在这里插入图片描述
在极小值点,f(x)和h(x)的等高线是相切的。
在这里插入图片描述

容易发现,在关键的极小值点处,f(x)的负梯度和h(x)的梯度在同一直线上,如上图左下方critical point的蓝色和红色箭头所示。
注意图中所示左下角critical point是同向的,但是并不一定是同向,有可能反向(因为等式约束h(x)=0是认为以原点(0,0)为中心向外发散,把h(x)变成-h(x)求解是一样的,这个时候h(x)的梯度就相反了,左下角critical point是反向的,红色的箭头会指向原点(0,0))。

由此可知,在极小值点,h(x)和f(x)的梯度在同一线上,有
                        ∇ x f ( x ∗ ) = μ ∇ x h ( x ∗ ) {\nabla _x}f\left( {{x^*}} \right) = \mu {\nabla _x}h\left( {{x^*}} \right) xf(x)=μxh(x)

所以,对于f(x)和h(x)而言,只要满足上面这个式子,同时使得h( x ∗ x^* x) = 0,解得的 x ∗ x^* x就是我们要求的极小值点。

要做到这一点,可以构造一个拉格朗日函数,对拉格朗日函数令偏导等于0恰好等价于“满足上面这个式子【下图中,蓝色方框所示】,同时使得h( x ∗ x^* x) = 0",原问题转化为对拉格朗日函数求极值问题,这就是拉格朗日乘子法在SVM推导中的应用。如下图所示(注意一下这个μ的正负变化)。

在这里插入图片描述

特别注意:
优化问题是凸优化的话,通过上图两个条件求得的解就是极小值点(而且是全局极小)。
不是凸优化的话,这两个条件只是极小值点的必要条件,还需要附加多一个正定的条件才能变成充要条件【下图,蓝色方框】,如下图所示。
在这里插入图片描述

4 不等式约束

对于不等式约束g(x)<=0,和等式约束h(x)=0不一样,h(x)=0可以在平面上画出一条等高线,而g(x)<=0是一个区域,很多个等高线堆叠而成的一块区域,我们把这块区域称为可行域

例如:这些同心圆中, x 2 + y 2 = 4 {x^2} + {y^2}=4 x2+y2=4是平面中的一个圆,看成众多等高线中的一条。我们可以定义圆内为可行域,也可以定义圆外,因题而异,在可行域区域内是存在很多等高线。
在这里插入图片描述
平面中的同心圆是三维图在x,y轴上的投影,可以看作是函数 f ( x , y ) = x 2 + y 2 f\left( {x,y} \right) = {x^2} + {y^2} f(x,y)=x2+y2的等高线。

在这里插入图片描述

根据梯度的性质(关于梯度可以查看如何通俗地理解梯度?),梯度向量:
                       ∇ f = ( ∂ f ∂ x ∂ f ∂ y ) = ( 2 x 2 y ) \nabla f = \left( \begin{array}{l} \frac{{\partial f}}{{\partial x}}\\ \frac{{\partial f}}{{\partial y}} \end{array} \right) = \left( \begin{array}{l} 2x\\ 2y \end{array} \right) f=(xfyf)=(2x2y)
是等高线的法线,是梯度投影的方向,如下图中橙色箭头的方向。
在这里插入图片描述
理解等高线、等高线的法线是梯度投影的方向后,更能直观理解平面上的梯度方向。

不等式约束分两种情况来讨论:

第一种是(不考虑可行域限制时的)极小值点落在可行域内(不包含边界)
第二种是(不考虑可行域限制时的)极小值点落在可行域外(包含边界)。

下面举两个例子来解释这两种情况,然后总结两种情况给出转换求解。

4.1 极小值点落在可行域内(不包含边界)

考虑目标函数 f ( x ) = x 1 2 + x 2 2 f(x)=x_1^2+x_2^2 f(x)=x12+x22,不等值约束 g ( x ) = x 1 2 + x 2 2 − 1 g(x)=x_1^2+x_2^2-1 g(x)=x12+x221 g ( x ) ≤ 0 g(x)≤0 g(x)0
在这里插入图片描述

可行域以原点为圆心,半径为1。显然f(x)的极小值为原点(0,0),落在可行域内。

这种情况约束不起作用,也就是说有约束局部极小值的充要条件与无约束局部极小值的充要条件相同。

再考虑目标函数f(x)是凸函数,见下面两张图,满足文章开始定义的凸函数的充要条件。局部最小值解是全局最小值解,也是唯一解。
在这里插入图片描述
在这里插入图片描述
这个时候,g(x*) < 0,极小值点x* 处f(x*)的梯度等于0。

4.2 极小值点落在可行域外(包含边界)

考虑目标函数 f ( x ) = ( x 1 − 1.1 ) 2 + ( x 2 + 1.1 ) 2 f(x)=(x_1−1.1)^2+(x_2+1.1)^2 f(x)=(x11.1)2+(x2+1.1)2,不等值约束 g ( x ) = x 1 2 + x 2 2 − 1 g(x)=x_1^2+x_2^2−1 g(x)=x12+x221 g ( x ) ≤ 0 g(x)≤0 g(x)0

在这里插入图片描述

如果没有约束条件,显然f(x)的极小值为原点(1.1, -1.1),落在可行域外。可行域以原点为圆心,半径为1。

但是要考虑求解f(x)在约束条件,要在可行域内寻找极小值点。

对于f(x)而言,要沿着f(x)的负梯度方向走,才能走到极小值点,如上图的蓝色箭头。由上节介绍过,蓝色箭头的方向(梯度的负方向方向)是垂直于等高线的。

这个时候g(x)的梯度往区域外发散,如下图红色箭头。当目标函数的值不断变大,f(x)的负梯度方向与g(x)的梯度方向一致且在约束条件的可行域内时,寻到最优值,也就是
在这里插入图片描述
同时 g ( x ) ≤ 0 g(x)≤0 g(x)0,此时,取得最小值点。

在这里插入图片描述
显然,走到极小值点的时候,g(x)的梯度和f(x)的负梯度同向。因为极小值点在边界上,这个时候g(x)等于0。

4.3 总结

极小值点落在可行域内(不包含边界): 这个时候可行域的限制不起作用,相当于没有约束,直接f(x)的梯度等于0求解,这个时候g(x极小值点)<0(因为落在可行域内)。

极小值点落在可行域外(包含边界): 可行域的限制起作用,极小值点应该落在可行域边界上即g(x)=0,类似于等值约束,此时有g(x)的梯度和f(x)的负梯度同向。
在这里插入图片描述

总结以上两种情况,可以构造拉格朗日函数来转换求解问题。

对于不等式约束的优化,设目标函数f(x),不等式约束为g(x)【目前只有一个】,此时的约束优化问题描述如下:
在这里插入图片描述
则我们定义不等式约束下的拉格朗日函数L,则L表达式为:
在这里插入图片描述

此时若要求解上述优化问题,必须满足下述条件(也是我们的求解条件):
在这里插入图片描述

这些求解条件就是KKT条件,整合了上面Case1、Case2两种情况的条件。
(1)是对拉格朗日函数取极值时候带来的一个必要条件
(2)是不等式约束情况
(3)是互补松弛条件
(4)是原约束要满足的条件
(5)是凸优化问题中的正定条件

ps:不是凸优化的话,还需要附加多一个正定的条件才能变成充要条件,上图中蓝色方框。

稍微解释下条件(3)
  关于条件(3),直观的解释可以这么看:分两种情况去讨论( λ ∗ = 0 λ^*=0 λ=0 λ ∗ ≠ 0 λ^*≠0 λ=0),总的来说整合了Case1、Case2这两种情况。
万一,还没明白这里有一篇博客是由引入松弛变量推导(3)的条件:KKT条件介绍.

特别注意:
优化问题是凸优化的话,KKT条件就是极小值点(而且是全局极小)存在的充要条件。
不是凸优化的话,KKT条件只是极小值点的必要条件,不是充分条件,KKT点是驻点,是可能的极值点。
也就是说,就算求得的满足KKT条件的点,也不一定是极小值点,只是说极小值点一定满足KKT条件。

5 约束优化总结

拓展一下,对于同时有多个等式约束和多个不等式约束,构造的拉格朗日函数就是在目标函数后面把这些约束相应的加起来,KKT条件也是如此,如下图所示。
在这里插入图片描述

6 优化问题的总结

简单总结一下,考虑凸优化问题。
  对于无约束的优化问题,直接令梯度等于0求解。
  对于含有等式约束的优化问题,拉格朗日乘子法,构造拉格朗日函数,令偏导为0求解。
  对于含有不等式约束的优化问题,同样构造拉格朗日函数,利用KKT条件求解【同时考虑约束条件起作用和不起作用的两种情况,不论是内部解或边界解, λ g ( x ) = 0 λg(x)=0 λg(x)=0恒成立】。
  对于含有约束的优化问题,还可以转化为对偶问题来求解。

参考资料

凸优化问题:
https://www.zhihu.com/question/30434540/answer/486366689
https://www.cnblogs.com/liaohuiqiang/p/7818448.html

拉格朗日乘子法与KKT条件问题:
https://blog.csdn.net/johnnyconstantine/article/details/46335763
https://www.cnblogs.com/liaohuiqiang/p/7805954.html
https://zhuanlan.zhihu.com/p/38163970
瑞典皇家理工学院(KTH)“统计学习基础”课程的KKT课件:http://www.csc.kth.se/utbildning/kth/kurser/DD3364/Lectures/KKT.pdf

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值