1. SCA / SCP

1.1 它是什么

SCA = Successive Convex Approximation,逐次凸近似。
SCP = Sequential Convex Programming,序列凸规划。

这两个名字非常接近,很多文献里几乎混用。核心思想都是:

原问题非凸,但我在当前点附近,把它近似成一个凸子问题
解出这个凸子问题后得到新点;
再在新点附近重新凸化;
不断迭代。

所以它本质上是:

  • 用一串凸问题逼近一个非凸问题
  • 每一步都尽量调用成熟的凸优化工具

1.2 它怎么做

设原问题是

其中目标或约束有非凸项。
SCA / SCP 在第 步常做的是:

  • 对非凸部分在当前点 附近做一阶或二阶近似
  • 构造一个凸上界 / 局部近似模型

其中 是当前的凸近似。

常见技术:

  • 一阶泰勒展开
  • trust region
  • 罚函数
  • DC 分解后局部线性化

1.3 适合什么问题

非常适合:

  • 工程优化
  • 通信资源分配
  • 控制
  • 轨迹规划
  • 稀疏优化
  • 带非凸约束但“局部凸化”容易的问题

尤其当原问题的非凸性来自:

  • 差分凸结构
  • 某些可微非线性项
  • 乘积项、分式项、对数项等可局部线性化的结构

1.4 优点

  • 每一步只解凸问题,数值稳定
  • 能直接利用 CVX、MOSEK、ECOS、OSQP 等工具
  • 对中大规模问题很实用
  • 工程上很常见

1.5 缺点

  • 一般只保证收敛到驻点 / 局部最优 / KKT 点
  • 不保证全局最优
  • 近似模型设计不好时可能不收敛或收敛慢
  • 初值依赖很强

1.6 和其他方法的关系

  • MM 很接近,很多 SCA 可以写成 MM
  • SQP 也近:SQP 是“二次近似 + 线性化约束”的特殊强力版本
  • 可作为 Branch-and-Bound 每个节点的局部求解器

2. MM 算法(Majorization-Minimization)

2.1 它是什么

MM 的思想比 SCA 更抽象一些。
它不是简单说“凸化”,而是说:

在当前点构造一个容易优化的代理函数
这个代理函数在当前点与原函数接触,并且对原函数有某种上界或下界关系;
然后优化这个代理函数。

对于最小化问题,典型要求是:

然后令

这叫 majorization-minimization
先 majorize(构造上界),再 minimization(最小化这个上界)。

2.2 它的本质

MM 的关键不是“凸”,而是“代理函数好解且保证下降”。

因为如果 满足上面条件,那么:

所以目标值单调下降。

这很重要。
MM 最大的特点就是:很强调单调改进

2.3 常见来源

MM 代理函数常来自:

  • Jensen 不等式
  • 一阶上界
  • Lipschitz 梯度上界
  • 二次上界
  • 凹函数线性上界
  • EM 算法(EM 可以视为 MM 的特例)

2.4 适合什么问题

适合:

  • 目标函数结构复杂,但容易构造“好优化的代理函数”
  • 统计学习
  • 稀疏正则化
  • 矩阵分解
  • 鲁棒估计
  • 最大似然 / 后验估计

2.5 优点

  • 经常能保证目标单调下降
  • 代理函数设计灵活
  • 很适合推导新算法
  • 对复杂目标很有表达力

2.6 缺点

  • 代理函数设计靠经验和结构洞察
  • 仍然通常只有局部收敛保证
  • 代理函数过松时收敛慢