凸优化学习
我们前面说过,拉格朗日法在实际中应用不大。为什么呢?因为的取值很难取,这就导致拉格朗日法鲁棒性很低,收敛很慢,解很不稳定。于是就有了今天的增广拉格朗日法和ADMM。
学习笔记
一、增广拉格朗日法(Augmented Lagrange Method)
1、定义
一句话总结:在拉格朗日法的基础上,将拉格朗日函数替换为增广拉格朗日函数。
有问题形如:
定义其增广拉格朗日函数为:
增广拉格朗日法:
2、证明增广拉格朗日法的解是原问题的解
有问题形如:
增广拉格朗日函数对应的问题:
即证:
对,其条件中的稳定性有:
对,其条件中的稳定性有:
因为,比较上下两式,得:
证毕。
3、从拉格朗日法角度理解增广拉格朗日法(联系、对比)
有问题形如:
拉格朗日法:
增广拉格朗日法:
可以看到,增广拉格朗日法去掉了,之后在性质分析中我们会讲到,在取得不是很精确的时候,收敛性也很好。还有一个变化是将换为,这是因为这两步是分开执行的,当算的时候,已经算出来了,我们当然可以用更好的来替换它。其中一般取1,也可以取成递增序列。
拉格朗日法:我已经有了时刻的和的优化变量,根据给定规则去优化。本质上是和的方法,从和两个角度同时优化。
增广拉格朗日法:非同步优化,只更新,只算对偶最优解,可将带入下式,只是副产品。
4、增广拉格朗日法的两条性质以及其收敛性探究
- 若,则。
- 若,则。
第一条性质表明得到后,可以马上算出,只要就可以。第二条就更厉害了,如果你老是解不出,那就将,一样解的出,所以这个算法的鲁棒性是很好的。
下面用一个例子来体会一下这两条性质:
例:
直接用条件得到解:
我们探究一下两条性质,其增广拉格朗日函数为:
性质一:当,有:
可以直接解出。
性质二:当,离还很远时:
分析一下说明什么?即当,这就是增广拉格朗日法的两条性质,也可以看出它的鲁棒性非常好。
收敛性探究:
在这道题中,我们可以得到:
是线性收敛的。
二、交替方向乘子法(ADMM)
对于这么一个优化问题:
假设它的性质是当分开优化很简单,但是合起来优化很难时,我们就可以将它们拆开优化,上面问题等价于:
用增广拉格朗日法进行优化:
在第一步的时候,我们固定中的一个,使用坐标轮换法迭代优化另一个。即将步分为次,迭代中迭代,有点像二维数组的遍历,这样第一步就可以写为:
但是这个二重循环复杂度实在太高,一旦迭代次数过多收敛会非常慢,更别说这里只是两个函数求和,那我要是多个函数求和怎么办?于是就有了交替方向乘子法(ADMM),它采用分布式的计算来解决了这个问题。
假设我们现在有一个中心计算机和它所通信的一个计算机群,我们考虑这么一个优化问题:
类似于上面的转换,我们构造一下它的等价问题:
其增广拉格朗日函数:
接下来我们按照上面的写出三步,同时对每一步进行一些等价变换,就得到了ADMM。
第一步的转换是将求和转换为分布,第二步就是直接解出来了。
梳理一下,我们得到ADMM为:
对于问题:
可以按照如下方法求解:
其中是中心计算机要算的东西,计算机群更新。在每一步,中心计算机得到后计算然后将发给计算机群;计算机群得到后计算并提交给中心计算机,如此循环往复,最终得到解。
个人思考
ADMM是集所有精华于一身的算法,无论是凸集凸函数对偶性拉格朗日函数的定义,还是梯度下降法最速下降法(坐标轮换法)的算法,都在其中有所体现。细细缕来,感觉就像搭积木一样,一层一层的搭。之前各种方法有着这样那样的性质,这样那样的缺点,通过取长补短提出一种新的方法,解决新的问题,很有意思。
纸质笔记