CCCP(convex-concave procedure)优化算法的一些理解

Convex-Concave procedure(凹凸过程)

CCCP是一种单调递减全局优化的方法。其形式可以表示为凸函数-凸函数 或者 凸函数+凹函数。


一、问题模型:DC(difference of convex)问题/规划

令f是一个DC函数,定义存在凸函数, g(x),h(x) :{R^{n}\rightarrow R},使得f可以被分解为g和h之间的差值:

                         \mathbf { f } ( \mathbf { x } ) = \mathbf { g } ( \mathbf { x } ) - \mathbf { h } ( \mathbf { x } ) \quad \forall \mathbf { x } \in \mathbb { R } ^ { n }

对于DC问题:

                          { \min _ { \mathbf { x } \in \mathbb { R } ^ { n } } \mathbf { f } _ { 0 } ( \mathbf { x } ) } \\ { \text { s.t. } } & { \mathbf { f } _ { i } ( \mathbf { x } ) \leq 0 , \quad \mathbf { i } = 1 , \dots , \mathbf { m } }

在这里f_i:R^n\rightarrow R对于{ i } = 0 , \dots , \mathbf { m }是一个可导的DC函数。本文探讨使用CCCP算法来优化这一问题


二、CCCP

假设一个能量函数E(x),其Hessian矩阵(二阶偏导矩阵)有界,y写成E(x)=E_{cave}(x)+E_{vex}(x)形式。

CCCP(convex-concave procedure)优化算法的一些理解_第1张图片CCCP(convex-concave procedure)优化算法的一些理解_第2张图片

下证明该优化形式以及过程是收敛的:

证明:∀F(x) 是凸的,Hessian 矩阵F(\vec x) > 0,由于其Hessian矩阵有界,所以\exists\lambda>0,Hessian矩阵E(\vec x)+\lambda F(\vec x))>0,则E(\vec x)+\lambda F(\vec x)是凸的。所以 E(x)可以写成E(x) = E(\vec x)+\lambda F(\vec x) +(- \lambda F(\vec x))

           其次,对于一个函数E(x)=E_{cave}(x)+E_{vex}(x),则离散迭代CCCP算法\vec {x}^t\rightarrow \vec{X}^{t+1}为:

                                \nabla E_{vex}(x^{t+1})=-\nabla E_{cave}(x^t) or \nabla E_{vex}(x^{t+1})=\nabla E'_{vex}(x^t) 

证明收敛:如果函数E_{vex}(\cdot)E_{cave}(\cdot)分别为凸函数和凹函数,下为证明和示意图。   

                                 

图中表示为两个凸函数 上面假设为E1,下面为E2,,本质上寻找两个凸函数之间梯度相同的两个点就是在逐步减小两个函数之间的距离,使其收敛到距离最接近的点。首先在E2找到一个x0,寻找E1中与x0梯度相同的点,投影到E2上,一直重复下去,直到收敛到最小距离的点(图中为5.0)。

根据以上理论,凹凸问题相减问题可以得到解决。首先在这个算法中,应该设置初始点x_0,然后线性初始化凹陷部分函数,可以把x_{k+1}设置为上面凸函数的解,通过迭代优化进行收敛,找到全局最优点。


结论:

在实际应用中,经常把两个函数利用线性约束/正则化写成两个凸函数相减的形式,进行优化。但是由于CCCP会有两层循环,一层优化\arg \min _ { \theta } \left( E _ { \mathrm { vex } } ( \theta ) + E _ { \mathrm { cav } } ^ { \prime } \left( \theta ^ { i } \right) \cdot \theta \right),一层分别对凸函数进行梯度下降,程序速度会比较慢。待补充优化思想。

 

你可能感兴趣的:(机器学习)