解决含有条件约束的优化问题——拉格朗日乘子法和KKT条件

一、要解决什么问题

在求取有约束条件的优化问题时,拉格朗日乘子法和KKT条件是非常重要的两个求取方法。

1)对于等式约束的优化问题,可以应用拉格朗日乘子法去求取最优值;

2)如果含有不等式约束,可以用于KKT条件去求取。

当然,这两个方法求得的结果只是必要条件,只有当是凸函数的情况下,才能保证是充分必要条件。

二、解决问题的思路

为什么拉格朗日乘子法和KKT条件能够起作用,为什么要这样去求取最优值呢?

KKT条件是一个必要条件,最小值必须要满足KKT条件,但是不一定是充分条件。

KKT条件反应:目标函数f(x)的梯度df被起作用的不等式约束函数g(x)的负梯度线性表现且系数u全部非负(红色箭头被绿色箭头夹在中间)。其它不等式不起作用的约束函数g(x)的KKT乘子u为0。

2.1 优化问题

1、无约束的优化问题

         minf(x)

f(x)在局部极小值点x*处的梯度必然为0,这个梯度为0的条件是局部极小值点的必要条件。

这样,优化问题的求解变成了对该必要条件解方程组。

2. 带等式约束的优化问题

          minf(x)

          s.t.   h(x) = 0.

与无约束的问题不同。我们所要求的极小值点被限制在曲线h(x)=0上,我们将{x|h(x)=0}称为可行域,解只能在这个可行域里取。

如下图所示,曲线h(x)=0经过无约束极小值点(黑点)附近。那么满足约束的极小值点应该与黑点尽可能近。我们将f(x)的等高线不断放大,直到与曲线h(x) = 0相切,切点即为所求。相切是关键,是极小点的必要条件。

         

原始问题转换成了如下拉格朗日函数:

             

令其偏导为0,正好就得到拉格朗日条件

如此,带等式约束的优化问题转化为了无约束的优化问题,只需要对拉格朗日条件解方程即可。

这里lamda是拉格朗日乘子,有多少个等式约束就有多少个拉格朗日乘子。

3.带不等式约束的优化问题

   minf(x),

   s.t.

        h(x)<=0, 

 当只有一个不等式其作用时,如我们把问题2的等式约束h(x)=0改为h(x)<=0,如下图所示,可行域变成了阴影部分,最小值还是切点,情况和问题2完全一样,只需要把不等号当做等号去求解即可。

                           

当两个不等式起作用时,那么问题就来了

      minf(x),

      s.t.

        g1(x)<=0,

       g2(x)<=0.

如下图,当f(x)的等高线慢慢扩大时,等高线与可行域(阴影部分)第一次相遇的点是个顶点,2个不等式同时起作用了。满足约束的最小值点从原来的黑点位置(切点)移动到了红点位置,现在跟哪条约束函数曲线都不相切。这时候就需要用到KKT条件了。

这里的KKT“条件”是指:某一个点如果是最小值点的话,就必须满足这个条件(在含不等式约束的优化问题里)。这是必要条件。

                     

这个问题的解x*应满足的KKT条件为:

            

其中,μ叫KKT乘子,有多少个不等式约束就有多少个KKT乘子。加上问题3中的约束部分,就是完整版的KKT条件。对于有等式的情况,你把其中一个不等式约束换成等式,可行域变成了半条曲线,最小值点还是那个红点,和下面这种情况是一样的。

下面看看KKT条件是怎么来的:

在问题2中我们知道了约束曲线的梯度方向与曲线垂直,我在上图画出了两条约束曲线的负梯度方向(绿色箭头)和等高线的梯度想法(红色箭头)。如果这个顶点是满足约束的最小值点,那么该点处(红点),红色箭头一定在两个绿色箭头之间(-dg方向一定指向g(x)减小的方向,即g(x)<0的那一边)。即df(x*)能被-dg1和-dg2线性表达(df = -u1*dg1 - u2*dg2),且系数必须非负(u1>=0, u2>=0)。也就是KKT条件中的1和2.

有时候,有的不等式约束实际上不起作用,如下面这个优化问题

                       

                       

 

了几个不起作用的不等式约束,条件2都能完美实现:目标函数f(x)的梯度df被起作用的不等式约束函数g(x)的负梯度线性表现且系数u全部非负(红色箭头被绿色箭头夹在中间)。这样,优化问题的求解就变成了对所有KKT条件解方程组。

如果再等一一个拉格朗日函数

          

令它对x的偏导为0,就是KKT条件中的条件2了。

优化问题的求解变成了对所有KKT条件解方程组。

整理一遍KKT条件:

            

最后说明一下,以上所有都是局部极小值点的必要条件。据此求得的解不一定是局部极小值点。原因是上图中我所画的等高线也许根本就不闭合,也就说我们一直想要靠近的等高线中间的黑点压根就是个鞍点或者近似鞍点!

 

四、为什么SVM要用拉格朗日对偶算法来解最大化间隔问题?

 

 

 

 

 

 

 

 

拉格朗日乘子法是一种用于寻找多元函数在其变量受到一个或多个条件限制时的局部极值的方法。这种方法引入了新的未知数——称为拉格朗日乘子,来构建一个新的无约束的目标函数,即所谓的拉格朗日函数。 对于对偶问题,在数学规划中指的是从原问题出发构造出另一个优化问题的过程。通常情况下,给定一个最小化问题(原问题),其对应的对偶问题是最大化某个下界;反之亦然。这种关系可以通过拉格朗日对偶性建立起来。 ### 拉格朗日乘子法的应用 - **等式约束下的最优化** 当存在等式约束g(x) = c时,为了找到f(x)在这些约束下的极值点,可以构造拉格朗日函数$L(x,\lambda)=f(x)-\sum \lambda_i(g_i(x)-c_i)$,其中$\lambda_i$就是拉格朗日乘子。 - **不等式约束下的最优化** 如果还有不等式约束$h_j(x)\leq b_j$,那么就需要考虑广义形式的拉格朗日函数以及KKT(Karush-Kuhn-Tucker)条件来进行分析。 ### 对偶原理的理解 当处理含有复杂约束问题时,直接解决可能比较困难。此时通过对原始问题应用拉格朗日乘子法得到拉格朗日对偶函数$d(\lambda, \mu) = inf_x[L(x, \lambda, \mu)]$,进而形成对偶问题$max_{\lambda>=0} d(\lambda, \mu)$。这样做的好处是可以简化计算或者提供更好的数值稳定性。 此外,在某些特定条件下(比如强对偶成立的情况下),原问题它的对偶问题有着相同的最优解价值,这意味着我们既可以从原问题也可以从更简单的对偶问题入手解决问题。 ### 应用领域 - **经济学**: 分析生产者行为、消费者选择等问题; - **工程设计**: 寻找满足性能指标的设计方案; - **机器学习**: 支持向量机(SVMs),特征选择其他正则化的模型训练过程都涉及到这类优化技巧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值