在了解增广拉格朗日乘子法之前,先了解一下拉格朗日乘子法和罚函数。
拉格朗日乘子法
基本的拉格朗日乘子法(又称为拉格朗日乘数法),就是求函数f(x1,x2,...)在约束条件下极值的方法。其主要思想是引入一个新的参数λ(即拉格朗日乘子),将约束条件函数与原函数联系到一起,使能配成与变量数量相等的等式方程,从而求出得到原函数极值的各个变量的解。
假设目标函数为,约束条件为
其中l表示有l个约束条件。
在这里我们举一个例子进行理解。
假设有一个方程为的椭球,我们要求这个椭球内接长方体的最大体积。
那么也就是说我们要在的条件下,求
的最大值。
现在我们定义一个拉格朗日函数:
其中是各个约束条件的待定系数。
接下来求偏导为0的解:
回到我们的题目,就可以将问题转化为:
接下来对求偏导可得:
联立前三个方程并代入第四个方程后可以求出:
最后可得
罚函数
罚函数法是一种广泛采用的约束优化方法,用于解决约束条件下的最优化问题。
考虑我们的问题为:
将原约束优化问题转变为无约束优化问题:
其中表示惩罚参数。对于等式约束,我们可以定义罚函数为:
如果满足约束条件则无影响,但是如果没有满足约束条件,则会施加惩罚。
对偶函数
对偶函数也称为拉格朗日对偶函数。
对于一个拉格朗日函数:
我们称为拉格朗日乘子(或对偶变量)。称
为原变量。
拉格朗日函数就是一个关于的函数
拉格朗日对偶函数的定义为:对于定义域D上x的所有取值,求拉格朗日函数的最小值即为拉格朗日对偶函数。
即:
其中inf (下确界)的定义:一个集合的最大下界。
对偶上升法
对于一个等式约束的优化问题:
首先我们可以得到拉格朗日函数:
则对偶上升法的算法流程如下:
1.假设是对偶问题的最优解。
2.求解。即在
时不同x对应的F的值,F值最小处得到
3.
其中称为步长,类似于学习率。
5.1-4迭代进行。
增广拉格朗日乘子法
拉格朗日乘子法的对偶上升法的主要缺点是要求约束优化目标具有局部凸结构。
罚函数的不足在于收敛慢,大的惩罚参数容易造成算法的数值不稳定性。
将两种方法结合起来的增广拉格朗日乘子法是能够减缓二者缺点的一种简单有效的途径。
我们假设优化问题只有等式约束:
并对拉格朗日目标函数添加罚函数,如下:
这就是增广拉格朗日乘子法。若惩罚参数为0,则增广拉格朗日乘子法退化为拉格朗日乘子法;若
为0,则增广拉格朗日乘子法退化为罚函数法。
求最优解时使用对偶上升法
1.假设是当前对偶问题的最优解
2.
3.1-2步迭代进行。