机器学习——求解优化问题的Lagrange乘子法、KKT条件

        优化问题一般是给定一个函数f(x),求这个函数在给定作用域上的最小值(若是求最大值可通过加负号转化为最小值问题)。

       在高等数学上,常用的函数最优化方法有三种:1、利用函数的单调性,求导找到目标函数的最值;2、拉格朗日(Lagrange)乘子法;3、KKT条件法。上述三种方法均能求解函数的优化问题,不同之处在于应用的情况不同。第一种利用函数单调性的方法一般运用在目标函数无约束条件的情况下;第二种拉格朗日乘子法,主要运用在目标函数有等式约束的情况下;第三种方KKT条件法,主要运用在目标函数有不等式约束的条件的情况下。

        下面分别对上述三种情况进行介绍:

        1、目标函数无约束条件

这是最简单的一种情况,相信学过高等数学的同学都能很容易的求解这类问题。对于可行域无约束的连续函数,在定义域R上求令目标函数的导数(或梯度)等于零的点。


        如果上式求解比较困难,可以运用梯度下降和牛顿方法等迭代方法对上式进行迭代逼近极小值。

        2、目标函数具有等式约束条件

        这种情况一般可写作:


        上式中的s.t.意思是“subject to”意思是“受限于”、“受某某约束”。求f(x)的极小值,但x的取值必须满足m个h(x)等式。自变量x被限定在一个可行域内,在这个可行域内不一定存在着一个x令f(x)的导数或梯度等于0。

       对于这种情况,一般采用拉格朗日(Lagrange)乘子法。首先需要定义一个拉格朗日函数:


其中m是等式约束条件的个数;αi是约束条件的待定系数。

       具体的求解方法是,对上面的拉格朗日函数求各个变量的偏导:

       根据上式,求得x和α的值,将其此x的值带入f(x),便求得在m个hi(x)=0(不好写公式,见谅)等式约束的条件下,f(x)的最小值。运用几何解释能够更加便于理解。


机器学习——求解优化问题的Lagrange乘子法、KKT条件_第1张图片
a
机器学习——求解优化问题的Lagrange乘子法、KKT条件_第2张图片
b

        如上图a所示,目标函数f(x,y)可以看做是一个在(x,y)平面的等高线,图中的红线是一个约束等式h(x,y)。其在(x,y)平面上的投影如图b所示,d1>d2,越往中间函数f(x,y)的值越小。在图b中,目标函数f(x,y)与h(x,y)有三种位置情况:相交、相切、相离(没有交集)。当二者相离时没有交点,那么没有解,只有相交或相切f(x,y)才有最优值。如果g(x,y)与f(x,y)相交,交点不一定是其最优值点,因为一定还会有交点内侧的点带入f(x)使其值比交点处的小。

        也可以换种方式理解,x沿着约束的曲线运动,当x的运动方向与f(x,y)的负梯度方向的夹角是锐角时,目标函数f(x,y)的值在减小(因为根据梯度下降法,f(x,y)的负梯度方向是f(x,y)的值下降最快的方向),当x的运动方向与f(x,y)的负梯度方向的夹角是钝角时,目标函数f(x,y)的值在增大,所以当x的运动方向与f(x,y)的负梯度方向的夹角是直角时,f(x,y)取得最小值,即f(x,y)与g(x,y)相切的时候。因为g(x,y)的法线与x的运动方向相垂直,所以此时f(x,y)的梯度与g(x,y)的梯度应该是平行的。这便是拉格朗日乘子法的条件。


        这个条件与等式约束条件联立即可得解。

        3、含有不等式约束的优化

        首先看一个相对简单的只含有一个不等式的约束优化,其一般形式如下:


建立一个对应的拉格朗日函数:


        求在满足g(x)<=0的条件下,f(x)的最小优化(其中β>=0,因为g(x)<=0,若β<0,则βg(x)有最小值没有最大值,不再满足对偶性,无法可靠的求解,β>=0也是运用拉格朗日乘子法的内在要求),这包括三种情况。


机器学习——求解优化问题的Lagrange乘子法、KKT条件_第3张图片

β

        如上图a、b、c所示的三种情况,图中红色区域是g(x)<=0,即x的可行域。

        其中a所示为f(x)原来的最优解的点落在可行域的内部,约束后的最优解与原来f(x)函数的最优解相同,此时,有没有这个g(x)<=0的约束,对f(x)的最优解没有影响,也就是说g(x)<=0这个约束此时不起作用。

        其中b所示为f(x)原来的最优解落在可行域的外部,此时f(x)在可行域内的最优解不再是原来的最优解,其最优解应该在g(x)与f(x)相切的位置,即在g(x)的边界上。

      c所示的为f(x)原来的最优解落在可行域的边界上,其最优解与f(x)原来的最优解相同。这种情况与上面的b所述的情况类似,为了便于理解分开来说。

        从上面的描述可以看出,在g(x)<=0约束条件下,f(x)的最优解要么落在可行域的边界g(x)=0上;要么落在g(x)<0的内部,使g(x)不在起作用,此时,可使λ=0,消除g(x)。所以可得下面这个式子:


        由上可知,含有不等式的约束问题,只要满足一定的条件也可以运用拉格朗日乘子法来进行求解,而这个条件便是KKT条件。

        含有不等式约束优化问题的一般形式如下:

机器学习——求解优化问题的Lagrange乘子法、KKT条件_第4张图片
既包含等式约束有包含不等式约束

定义一个拉格朗日函数如下:

        由以上的分析可知,运用拉格朗日乘子求解含有不等式约束的优化问题,需要满足的KKT条件如下:

机器学习——求解优化问题的Lagrange乘子法、KKT条件_第5张图片
(不好写公式啊啊啊啊啊啊啊啊)

        其中,公式1表示,拉格朗日函数取得最小值时,其对x的梯度必须等于0,无论是最优解是落在g(x)<=0内部还是边界上,其对x的梯度都是等于0的(落在内部,最优解就是无约束的极小值,则对x的偏导等于0;最优解落在边界上,这个最优解要么是无约束的最优解,要么是f(x)与g(x)相切的点,则其对x的梯度也等于0)。

        公式2在上面的叙述中已经分析了,约束后的最优解要么落在g(x)<=0内部,此时g(x)不起作用,可使β=0消除g(x);要么落在g(x)<=0的边界上,此时g(x)=0。总之βg(x)=0。

        公式3和公式4是约束的条件。

        公式5是运用拉格朗日乘子法的内在要求,这个在前文也已经叙述。

你可能感兴趣的:(机器学习——求解优化问题的Lagrange乘子法、KKT条件)