拉格朗日乘子法

 

之前两篇blog介绍了等式约束最优化,不等式约束最优化的最优性条件。

http://blog.csdn.net/ice110956/article/details/17557795

http://blog.csdn.net/ice110956/article/details/17562429

了解最优性条件后,我们通过最优性条件的性质可以来求解,或者验证最优解。通常会构造一个拉格朗日乘子,求导构造得到最优性条件的形式来求解。

 

回顾下最优化问题的三个基本形式:

拉格朗日乘子法

 

无约束问题

可以通过微积分的知识直接求解。

 

等式约束问题


我们可以构造拉格朗日乘子后直接求解,也就是拉格朗日乘子法。如下:

我们可以定义如下的n+l元函数:

拉格朗日乘子法

称为lagrange函数。也就是把目标函数与约束函数写在一起求解,并用向量的形式来表示。

上式分别对x与lamda求导为零求解后,即为可能极值点。(证明可见开头两篇blog)

不过上述的点可能是鞍点,也可能是极值点,具体判断要用二阶充分条件。

 

不等式约束问题


上一篇blog我们得到不等式约束的最优性条件是KKT条件,如下:

拉格朗日乘子法

上式的第一个式子,我们也可以写成这样的式子:

拉格朗日乘子法

然后求导,也就是拉格朗日乘子。(证明可见开头两篇blog)

上式虽然我们得出了KKT条件,但是还是解不了的,因为第二个式子理解为lambda=0或者ci(x)=0;也就是单独使用最优性条件无法直接解出不等式约束的最优解。我们只能通过KKT条件来验证某个解是否是最优解。

 不过,前一篇blog中(http://blog.csdn.net/ice110956/article/details/17631765 )提到的外罚函数和内罚函数,把不等式约束问题转化为等式约束问题。然后,我们再通过拉格朗日乘子法来求解等式问题。也就是说,通过罚函数+乘子法,我们可迭代求解不等式约束问题。

小结

通过构造拉格朗日乘子,我们可以解等式约束问题,验证但不可求解不等式约束问题。

拉格朗日乘子法

上一篇:系列笔记 | 深度学习连载(2):梯度下降


下一篇:深入理解java虚拟机【内存溢出实例】