我们还是假设问题是凸的(非凸难啊)、目标函数可微(不可微可以用次梯度和无梯度),且限定一下优化问题只有一个等式约束(不等式可以用内点法,但是额我还没看(?))。即,我们的标准问题为:
看看改进的拉格朗日法-增广拉格朗日法是如何推导出来的。
1.增广拉格朗日法Augmented Lagrangian Method:
【忘了提醒一下,步长都是要自己找的,比如精确线搜索orArmijo线搜索等等】
推导思路:
? 先要介绍一下增广拉格朗日函数是什么。它是由拉格朗日函数加上一个罚项得到的,记为:
?
? 它实际上是下面这个优化问题的拉格朗日函数:
?
? 也就是把原问题的等式约束罚到目标函数里面去,得到的优化问题的拉格朗日函数,被称为原问题拉格朗日函数的增广拉格朗日函数。
? 【接下来很容易可以验证,上面这个问题和开头的标准问题的最优解相同,两个问题是等价的。】
既然两个问题是等价的,也就是它们各自的拉格朗日函数的最优值是等价的。那么,自然可以想到用去替换掉。
? 回顾拉格朗日法:
?
? 替换成增广拉格朗日函数的梯度后,变为:
?
? 但是上面这组迭代式子,有个东西没有利用起来,就是第一个式子更新好的。在第二个式子计算时用的还是的信息,这是把它替换成新的,那么整个算法变为:
?
? 如果增广拉格朗日函数性质比较理想或者比较容易被优化的话,不一定非要用梯度法,比如二阶可微也可以用牛顿法,等等。所以统一改成用的形式来表达上面这个算法为:
?
? 那么问题又来了(还想呢,这tm也太折腾人了),增广拉格朗日函数里面的罚参数 还没利用到呢。为了让罚参数起作用,我们还可以把第二个式子的步长替换为罚参数,得到最终的增广拉格朗日法:
?
【坦白: 对于算法的收敛性是有帮助的,并不是上面我掰扯的单纯加上去利用起来,但是事实上因为我没看懂收敛性分析,所以只能暂时这样强词夺理了 。】
? 注:这里 要自己选定,但是选定 肯定比去线搜索 简单多了。特别的,如果选择,基本上可以保证增广拉格朗日算法收敛。而且,从收敛性分析可以知道,也可以是递增序列,不用担心不收敛。
2.算法性质[为什么增广拉格朗日函数行]:
3.用一个例子验证这两个性质:
4.交替方向乘子法ADMM:Alternating Direction Method of Multiplier
这里只从无约束优化问题引出ADMM法的思路,带约束的优化问题分块儿后可以一样求。对于一种目标函数可以分成两个部分的无约束优化问题,它的目标问题形式为:
比如有的时候单独或都好优化,但是放到一块儿去就不好优化了。亦或是咱们把约束优化问题的约束想办法丢到目标函数上去,转化成无约束问题了,那就可以假设为上面这个形式,也可以用ADMM法。
先对做等价变换为问题:
这不是在tkzfp,而是像和之前的增广拉格朗日函数联系起来。的增广拉格朗日函数为:
则该问题的增广拉格朗日算法为:
注意到,在的计算上,右边式子还是可以整理成只和和只和有关的函数。这就让人联想起了坐标轮换法里的块坐标下降。我们对第一个式子进行改进,变成先单独对求解,再单独对求解,则可以得到所谓的ADMM算法如下:
注:前两个式子里的函数形式做了一些整理和等价变换,里面的函数最优值与变化前的函数最优值是相同的,我看的时候一下子没有理解,以为是老师写错了,其实是没问题的,用原函数表达式也没问题。
额外:之前提到ADMM迭代有点块坐标下降的意思,就是先求一个变量的最优,再求另一个。其实也完全可以真的做坐标轮换,先对做坐标轮换(是维的话就要轮换次 ),再对做坐标轮换,再得到。但是,一方面,每一个维度坐标轮换后,都要做一次线搜索,很麻烦。另一方面,把完整算法格式写出来也很长。所以就不贴坐标轮换版的ADMM了。