工程中非凸优化利器: Successive Convex Approximation (SCA) - 知乎

注:本文能够看做对本专栏中“工程中非凸优化利器: Majorization-Minimization” 一文的补充. 如下简称"MM一文".算法

本文分为如下部分jsp

Part I SCA 原理函数

Part II A. SCA 算法flex

Part II B. SCA 算法的收敛优化

Part III SCA 使用举例spa

大部分会采用和MM对比介绍的方式进行叙述。blog


Part I SCA 原理(与MM对比介绍)get

SCA 的基本原理与MM相似,都是经过对非凸目标函数,迭代地,在一点 \mathbf{x}^t 上构造一个更易解近似函数 u(x;x^t) 来使得问题得以简化。两者区别在于近似的条件不一样,以下图 所示。it

图1:SCA vs MM 原理

下面列出两种方法对于近似函数 u(x;x^t)的要求io

二者前三点要求相同,分别是

  1. 近似函数连续性
  2. 近似函数和原函数在近似点函数值相同
  3. 近似函数和原函数在近似点的一阶导数(方向导数)相同

第四点不一样

SCA 要求近似函数是凸函数 而MM要求近似函数在近似点是原函数的upper bound(在原函数“上面“).


Part II A. SCA 算法

SCA的出现是为了解决实际应用中知足MM的条件的近似函数很难找的问题 (主要是第四点,知足uppder bound 又好解的近似函数很难找)。 然而根据no free lunch 的原则,咱们在寻找近似函数上省了力气,就得在求解的时候付出更多力气。这是由于近似函数若是不知足upper bound那么直接取近似函数的最小值会致使“步子迈的太大”“走过了”的状况。如图1所示 y^{t+1} 为近似函数的最小值,它“超过了”目标函数的local minima. 所以须要调整步长。调整的方法很是简单,采用moving average(移动平均?),公式以下

而后咱们就能够获得整个算法(这里我从[1]中截的图而后p了一下,原算法是分块求解的)

算法1:SCA算法

红框是寻找参数 \alpha 的过程。

对比MM


多了搜索参数和移动平均的过程。

Part II B. SCA 算法的收敛

下面简单说一下如何证实SCA算法收敛到stationary point

结合图1的示意和算法1,咱们发现SCA的搜索方向是 \mathbf{d}^{t+1}=\mathbf{y}^{t+1}-\mathbf{x}^{t}。那么算法是如何保证这个方向是原函数的降低方向呢,关键在于寻找步长 \alpha 这一步。

咱们有:

f'(\mathbf{x}^{t};\mathbf{d}^{t+1})=u'(\mathbf{x};\mathbf{x}^{t},\mathbf{d}^{t+1})|_{\mathbf{x}=\mathbf{x}^{t+1}}=\lim_{\lambda\to0}\frac{u(\mathbf{x}^t+\lambda\mathbf{d}^{t+1};\mathbf{x}^t)-u(\mathbf{x}^t;\mathbf{x}^t)}{\lambda}\leq0

最后一项不等式是由于 u(\mathbf{x};\mathbf{x}^t) 是凸函数 而 \mathbf{y}^{t+1}=\mathbf{x}^{t}+\mathbf{d}^{t+1}是最小值,因此在 \mathbf{d}^{t+1} 这个方向上的函数值 u(\mathbf{x}^t+\lambda\mathbf{d}^{t+1};\mathbf{x}^t) 小于 u(\mathbf{x}^t;\mathbf{x}^t) .

而后呢,咱们根据步长条件(红框中最后一行)就能够获得

f(\mathbf{x}^t)-f(\mathbf{x}^{t}+\alpha^{t+1}\mathbf{d}^{t+1})\geq-\alpha^{t+1} f'(\mathbf{x}^t,\mathbf{d}^{t+1})\geq0

f(\mathbf{x}^*)-f(\mathbf{x}^0)\leq f(\mathbf{x}^K)-f(\mathbf{x}^0) \leq\sum_{t=0}^K\alpha^{t+1} f'(\mathbf{x}^t,\mathbf{d}^{t+1})

\lim_{t\to\infty} f'(\mathbf{x}^t,\mathbf{d}^{t+1})=0


不难发现若是 u(\mathbf{x}^t;\mathbf{x}^t) 刚好也是原函数的 upper bound, 那么令 \alpha=1 自动知足算法1中的步长条件(红框中最后一行)。此时这个算法就是MM啦~




Part II SCA 使用举例

前面说到SCA 和MM的区别在于SCA要求近似函数是凸的,MM要求近似函数是upper bound。固然两个近似都要好解才行。这里举一个比较经常使用的SCA中的近似函数。

SCA 中近似函数最多见的就是二次函数,表达式以下:

\tau>0 ,保证近似函数为凸函数。其实就是拿到一个函数咱们求导就好了,而后 \tau 随便取一下。


补充:在作这个总结的时候我的挺好奇:对于MM算法咱们找到的近似函数通常不只是upper bound 并且仍是凸的。有没有是upper bound 可是 “非凸” 确又好解的近似函数的例子?最后找到了一个,本身以为还蛮有用的。[2]中提出了一个鲁棒协方差矩阵估计问题我在这里作了简化:假设要估计的协方差矩阵的变量服从某种均值为0的椭圆分布,采用最大log 似然估计获得以下优化问题:

对第二项采用“MM一文”中介绍的一阶泰勒展开方法,每一次迭代给定 \mathbf{R}_t  , MM须要解下面的近似函数

g(\mathbf{R}|\mathbf{R}_t)=\log\det(\mathbf{R})+\frac{K}{N}\sum_{i=1}^N\frac{\mathbf{x}_i^H\mathbf{R}^{-1}\mathbf{x}_i}{\mathbf{x}_i^H\mathbf{R}_t^{-1}\mathbf{x}_i}

这个问题对 \mathbf{R} 非凸,可是有最优闭式解

(证实的话就把 \mathbf{R}^{-1} 当作一个新的变量 很是容易获得近似函数对于\mathbf{R}^{-1}是凸的,而后求导等于0便可)


后面会补充

1.关于非凸constraint 的问题若是用SCA(或者MM)如何处理。其实就是把约束条件函数采用和目标函数相同的方法找一个好的近似函数就行。

2.还有进阶版本的stochastic SCA(或者MM)有时间也会讲一下。这方面的内容推荐给你们浙大刘安教授的这篇发表在TSP上的文章

Stochastic Successive Convex Approximation for Non-Convex Constrained Stochastic Optimizationarxiv.org

第一次在知乎写东西但愿有帮助~

参考

  1. ^Successive Convex Approximation: Analysis and Applications https://conservancy.umn.edu/handle/11299/163884
  2. ^Regularized Robust Estimation of Mean and Covariance Matrix Under Heavy-Tailed Distributions https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7069228
相关文章
相关标签/搜索