Active set strategies
Active set的基本思想和Simplex方法(Simplex方法参考 “一步一步走向锥规划 - LP”)的基本思想大体一致,就是要先找到一个可行解 feasible solution, fs, 然后沿着边或者面继续找可行解。 但是对应到QP和LP还是有很不一样的,就是LP的最优解肯定是在角(extreme points)上, 但是QP不是,并且如果QP对应的不是凸问题(non-convex),那么Active set可能只能找到一个局部最优(local optimum)。
前面我大体对比了Active Set和Simplex的基本思想, 下面我们详细说一下Active Set的思路。 为了, 囊括前面的4种情况, Active Set算法, 首先从feasible region, FR里面选择一个点, 然后沿着梯度方向(如果有最值definite,就是最值方向, 如果没有最值indefinite,就是梯度方向), 直到feasible region, FR 的边界, 如果最值点在FR里面inner, 那么就找到最值。但是如果不在, 那么就找到一个边界点。 那么沿着前面的限制和梯度夹角小的方向继续前进。 这时候可能又遇到另外一个限制, 这时候就找到一个顶点, 然后继续沿着新遇到的限制和梯度夹角小的方向前行。 直到在某个点,限制方向和梯度方向垂直了。
什么叫 active set 和 inactive set ?
这个问题相对比较简单,就是如果在一个点x所在的feasible region的所有边界就叫这些边界在x这个点被active, 而其他边界就是 inactive。
给定一个可行点, 如何找到这点和最优点的方向(点0')?
如下图所示,随机给定一个可行点 feasible point, 但是如果这个点是一个内部点inner, 那么这个点对应的active set就是空集。既然是空集, 那么就是一个unconstrained/equality constrained quadratic problem, 所以对应的最优点(optimum)就是0'点。
给定一个可行点, 如何找到这点和最优点方向上的限制点(点1)?
这时候, 我们利用截距之间的比例,计算到占比uk, 然后根据uk计算出dk于边界的交点的位置。 有三点要注意:
1, 选择最大的uk是为了保证最接近无限制极值点0'。 越接近越优
2, 如果uk>1意味着无限制极值点就在可行区域(feasible region)里面, 那么直接用这个点。
3, 限制ai dk > 0为了保证求到的方向上是向着区域外面的,这样才有交点。
如果找到一个交点(点1), 如何找到下一个交点(点2)?
换到术语来说, 就是已经 有一个working set了,如何换到另外一个working set。
在找到一个交点(点1)之后我们就找到了一个限制, 然在这个限制下我们求解equality-constrainted QP, EQP就找一个新的最优点1', 再通过截距比例就得到了两个限制的交点了(点2)这时候,就会更新2对应的working set, 然后就可以同理求解到点3了。
算法什么时候停止呢?
其实很简单, 当我们发现对应的最优点x*和working set都无法再更新了, 那么算法就停止了。 譬如上图对应的最优点3, 对应的限制直线,已经在我们的working set里面了, 那么就无法再更新了, 意味着我们已经求解到了最优解了。
这样我们把Active Set的算法小结一下如下:
再举个例子!
随意一个点(2,0)x0 出发确定了直线A限制, 然后找到A和B的交点(x1)加入直线B限制, 然后找到最优点(x2),不是交点,更新到B, 然后再找, 发现和D的交点(x4), 然后再找到x5,然后发现点和working set都不再更新了。
另外可以看到本质上, active set算法和simplex算法思想一致, 所以active set算法不是多项式polynomial时间算法。 另外, 对于非凸情况, 由于梯度方向不太一致, 算法会变得很复杂。
Interior-point methods
一般来说Path-following methods,或者trajectory-following, 或者barrier都是 interior-point methods 的别称或者一种。
前面我们讲了active set本质思想是和simplex思想一致的, 但是这样的算法复杂度依赖于限制条件组成的边或者角数量,所以都不是多项式复杂度的。 在线性问题中,我们提到了Karmarkar算法的基本思想(参考 “一步一步走向锥规划 - LP”), 通过仿射投影(affine projection)的方法,通过内部(interior)向最优点靠近。 在QP里面, 主要利用了central path 和 barrier的两种思想。
什么是central path?
在我们利用标准形式(Standard) [ Ax = b, x >= 0 ]进行KKT条件求解之后, 我们发现, primal feasible, dual feasible一起满足形式F(x, y, z) = 0, 所以一个KKT条件解要满足F=0。 为了一步步达到这个目标,我们让F = [0, 0, t I ]^T。 然后让 t -> 0 逐步逼近, 而这个逼近的途径叫做central path。
而要求解一个函数与自变量轴的交点(F(x,y,z)=0),牛顿法是一个很好的办法。 因此接下来,经常用牛顿法进行优化处理。
至此, 我们似乎完美的搞定了这个问题了, 其实没有,如何找到第一个满足要求的点呢?v( t0 ) 必须可以取到,从而使得 t0 > 0。还记得在讲述Simplex算法的时候, 也有类似的经历, 如何找到第一个可行解(feasible solution), 那时候我们讲述了Big-M的思想(参考 “一步一步走向锥规划 - LP”), 这个思想改造了目标公式进行求解到第一个可行解。 这里我们讲述另外一个思想,barrier思想, 也是类似, 对目标公式进行改造求解到第一个可行解。
什么barrier思想?
由于沿着边界会带来复杂度不可以控制, 那么如何避免接近边界呢?这里分了两步走:
引入slack variables把限制形式标准化, 把不等式放到第一象限。
定义barrier function 函数,使得接近边界时候变得过大。
其实Logarithmic Barrier Method最早是由K.R. Frisch在他的书 Principles of linear programming中提出来的, 大概1954年就提出来了。 最后Barrier思想的完善是下面两位牛人完成的,Anthony Fiacco和 Garth McCormick。 他们都是美国最早研究nonlinear programming, NLP方面的早期奠基人。 但是这个方法在大型线性规划的时候,过于复杂,直到来自印度的Karmarkar在1984年提出基于递归的仿射投影的了Karmarkar算法(参考 “一步一步走向锥规划 - LP”)。 从此极大促进了NLP的发展。
Logarithmic barrier functions是什么?
在barrier思想要求下, 很容易就扎到一个Logarithmic Barrier函数
直接通过图示来看是如何避开原点的和坐标轴的。
为什么要选择log函数呢?
其实log函数有一些很好的性质导致的:
log函数是凸函数
log函数可以模拟indicatorfunction 指示函数
log函数的导数形式比较好。
大家会不会想起, 逻辑回归里面的sigmoid函数么。
对应的一阶和二阶导数的形式, 在Gradient decent,或者Newton method里面会用到。
有人就问了, 既然是为了模拟指示函数indicator function, 那么别的函数也可以的吧? 对的, 除了logarithmic barrier还有inverse barrier等。
如何做到interior的?
这样我们再来看, 如果feasible region, FE里面的点,离边界越近的点, 在logarithmic barrier情况下, 越难以取到, 那么容易取到的就是中线的点了。 从而实现了interior!
具体的数学上, barrier是如何一步一步实现的呢?
通过利用log函数极好的 导数性质, 我们通过构建找到了一个关系式, 刚好满足central path的要求。 所以我们就可以通过logarithmic的关系来替代原来的形式。 这就是log barrier 强大的地方。 把一个有限制的形式, 通过改写目标关系式求解一个无限制的形式。
Central Path 其他情况?
除了利用Log Barrier method进行求解, 还有一些实用的方法可以改进central path的适用范围, 譬如引入scalar function进行缩放, 再引入centering parameter,引入bias。
另外,对于非凸情况的时候, Central Path的表现就要很奇怪了,要看起始点的位置了。
QP 对偶(duality)
什么是QP对偶?
QP对偶, 就是通过lagrange 对偶构造后得到的对偶问题, 前面在线性规划LP里面, 我们直接给出线性规划的对偶(参考“一步一步走向锥规划 - LP”), 但是在QP中,已经没有了形式上的完美的对称关系,需要从对偶的本质进行构造了。
怎么得到对偶? 什么是 Lagrange duality construction?
对偶的构造, Lagrange提出了很好的一个构造过程, 这里就不详细讲述更多数学上的充要条件了(更多细节参考 “一挑三, FJ vs KKT”)。
如何理解Lagrange duality construction ?
如同线性规划里面一致, 我们依然可以通过类似资源(原料)价格的关系理解, 通过购买的原料, 造出产品后,产品的成本价格(cost price)在最大的情况下应该和原料价格最低一致(resource cost), 这样达到资源配置最优(optimum), 没有浪费。 下面给出了图形化的理解, 在线性规划里面有一个详细的线性规划的例子(参考 “一步一步走向锥规划 - LP”)可以作为类比。
这样, 我们来看最大化这个截距(与L线的交点)的高度是如何等价于求Lagrange duality?
由此我么对比一下convex和strong duality的关系:
再进一步, 在对偶间隙duality gap的基础上我们再来看一下,在公式上,Interior-point method是如何发展而来的?
相比active set method, ASM, interior point method, IPM还是有很多优势的, 对于中大型问题, 部分IPM可以保证polynominal时间复杂度。 这还是极大的优势!
QP的扩展概述
二次限制QP, QCQP
QCQP 是Robust QP的一种数学体现。所谓Robust,就是我们对x分布的方差进行限制, 有一个上限。 更多细节就不展开了。
在引入了二次限制后, 就顺带引入augmented Lagrangian 和 Penalty method思想了。 这里就举个例子引入一下:
引入了Penalty思想和Augmented Lagrangian之后, 我们就能把二次限制转换成无限制的二次规划。 简单对比active set method, ASM和penalty method, PM,可以看到penalty方法还是有很大的局限性的, iterations次数多,而且,找的点不够精确。
小结, 这里我们总结了一下QP的作为LS和LP扩展的含义, 以及QP里面拉格朗日和对偶是如何发挥作用的, 尤其是active set和interior point method是如何工作的。 下次, 我们会进一步理解Second order cone programming (SOCP)是如何进一步扩展QP的。再补充下下, QP是个爆发式发展和应用的部分, 不可能一个短文介绍到所有, 这里抛砖引玉的介绍下基本思想, 希望有讲清楚。 如果大家捧场, 以后希望继续多介绍点QP的其他方面, 譬如iterative 的KKT system求解, interior point方法的收敛性。
参考:
http://www.cs.cityu.edu.hk/~cheewtan/CS8292Class/Lec4.pdf
https://neos-guide.org/content/quadratic-programming-algorithms
https://www.math.uh.edu/~rohop/fall_06/Chapter3.pdf
http://www.math.uiuc.edu/documenta/vol-ismp/41_cottle-richard.pdf
https://www-user.tu-chemnitz.de/~helmberg/workshop04/vandenbussche.pdf
http://faculty.uml.edu/hung_phan/572optim/ntKKT.pdf
https://gilkalai.wordpress.com/2008/11/04/a-diameter-problem-6-abstract-objective-functions/
https://www.cs.umd.edu/users/oleary/a607/607constrbarhand.pdf