凸优化算法 I: 内点法(interior point method)求解线性规划问题
0前言
内点法是一种处理带约束优化问题的方法,其在线性规划,二次规划,非线性规划等问题上都有着很好的表现。在线性规划的问题上,相对于鼎鼎大名的单纯形法,内点法是多项式算法,而单纯形法并非多项式算法。从实际应用的效果来说,内点法也达到了足以和单纯形法分庭抗衡的地步,尤其针对大规模的线性规划问题内点法有着更大的发展潜力。
- 线性规划单纯形法:通过一系列迭代达到最优解,迭代点沿着可行多面体的边界从一个顶点到另一个顶点,直到得到最优解。一般而言单纯形法每次迭代的开销相对内点法来说较小,但所需迭代次数较多。
- 线性规划内点法:同样是通过一系列迭代达到最优解,但其是从多面体内部逐渐收敛到最优解。一般而言内点法每次迭代的开销相对单纯形法来说较大,但所需迭代次数较少。
内点法并不仅仅用于线性规划的求解,值得一提的是内点法的很多思想有着更广泛的应用,例如障碍函数法的思想。
1导论
线性规划问题的一般形式为
min cT x, s.t. Ax <= b
这里,目标函数为线性函数 cT x: Rn -> R,约束条件为 Aij<= bi,i=1,2,……。矩阵 A为 m x n 的满秩矩阵,其中 m为约束条件的个数, n为变量的个数。通常约束条件的个数大于变量的个数,所以有 m>n .
2线性规划问题的等价(近似)表述
这个线性规划问题可以重新表述为计算 ,其中
这里,我们使用了一个indicator函数,定义为
引入这个函数的意义在于可以将约束条件直接写入到目标函数里面,这样我们直接求新的函数的极小值就可以了,而不必借助于未知乘子。 但是这里有一个问题,那就是indicator函数存在不可求导的点,因此在求函数极小值的时候我们没法通过普通的微分法来确定函数的极小值。为了规避这个问题,我们可以用一个光滑的函数来近似这个indicator函数。一个不错的选择是用 来代替indicator函数。 It (u)只有在 u<0的时候有定义,我们规定当u>0的时候 It (u)=∞ . 而且参数 t>0 越大,函数 It (u) 就越接近于 I (u) . 所以我们可以通过调节 的值来调节这个函数的近似程度。使用这个近似的indicator函数,我们新的的目标函数可以写作
因为线性函数是凸函数,并且 It (u) 也是凸函数,所以 f(x) 是凸函数,因此我们可以很容易用凸优化的经典方法得到该函数的极小值。
3计算函数的梯度和Hessian矩阵
为了求函数的极小值,根据微积分的经典结果,我们只需令函数的梯度等于零,然后计算梯度为零时对应的解 x* .
函数的梯度为
Hessian 矩阵为
定义对角型矩阵为
于是Hessian矩阵可以写作
Hf = AT D A
因为 D 为正定矩阵,所以Hessian矩阵至少为半正定矩阵。所以函数 f(x)是一个凸函数。而且矩阵 D为可逆矩阵,矩阵 A满秩,所以Hessian矩阵为可逆矩阵。于是函数 f(x) 为强凸函数。所以,要计算 ▽f = 0的根,我们可以用高效的牛顿迭代法。
4牛顿迭代法
https://zhuanlan.zhihu.com/p/32685234
程序地址为PrimerLi/linear-programming.
非线性规划:ADMM(Alternating direction method of multipliers)
http://www.doc88.com/p-1911764923145.html
对偶问题
首先我们考虑一个带约束的优化问题:
minimize f(x) st. Ax = b
将其转化为拉格朗日形式:L(x,y) = f(x) + yT(Ax- b)
那么其对偶函数为: g(x,y) = infx L(x,y)
对偶问题就是: maximize g(y)
假设对偶问题的解为 y*,那么原问题就是可以等价为:
X* = argmaxx L(x,y*)
对偶问题的梯度迭代形式是: yk+1 = yk + ak▽g(yk)
由此可以得到Dual Ascent迭代方法:
上述的方法可以解决函数的在最优化问题, 但是要满足很强的假设条件(KKT条件)
增广拉格朗日函数
为了弱化拉格朗日对偶上升法的强假设,Hestenes, Powell等人在六十年代提出了增广拉格朗日(augmented Lagrangian)的方法:
其中 p>0,这相当于在后面加入了一个惩罚项。
增广拉格朗日法的迭代优化过程如下:
这里的 p>0可以看作更新步长,相对于Dual Ascent,增光拉格朗日法的更新步长变成固定值而不是变化的 ak 。同时其优化也在更为宽松条件下收敛,例如目标函数不再是要求严格凸了。
Alternating direction method of multipliers(ADMM)
虽然增广拉格朗日法弱化了优化条件,但是同时也破坏了Dual Ascent的可分解性,难以进行并行优化操作。
ADMM方法进一步整合Dual Ascent的可分解性以及Method of Multiplier很好的收敛性质,同时它也利用了增光拉格朗日法的性质来弱化优化条件,可以说ADMM方法是多种方法的一个集大成者。
ADMM问题的一般形式为( f,g为凸函数):
可以看出ADMM优化的是有两个参数的分离的目标函数,他们其实是原目标函数的拆分,通过对 x和 z的交替更新来求得原始问题的最优解。
其拉格朗日形式为:
优化过程为:
最优化停止准则为(可微分情况):
- 原始条件: Ax + Bz – c = 0
- 对偶性: ▽f(x) + ATy = 0, ▽g(x) + BTy = 0,
收敛需要满足的假设:
- f,gconvex,closed,proper
L0( p=0,即增广拉格朗日函数)有鞍点。
Conclusion
ADMM方法整合很多经典优化的思路,被证明可用于大规模的带约束的优化问题,同时因为其可分解性可用于分布式运算。
最后给出Stanford实现的源码以及实例:http://www.stanford.edu/~boyd/papers/admm/
Reference:
1、ADMM
2、Distributed Optimization and Statistical Learning via the Alternating Direction Method of Multipliers