跳转到正文
2022-10-23 zh

面向无线系统的优化方法:凸性、对偶与 KKT 条件

无线系统中的许多设计都可以写成优化问题,例如分配发射功率、设计波束、调度用户、放置计算任务,或平衡能耗与时延。真正困难的往往不是调用求解器,而是把变量、目标和约束定义准确,并判断问题结构究竟支持怎样的最优性结论。

一项可信的优化工作通常要完成几件事:先把问题写完整,再判断凸性,随后借助对偶变量和 KKT 条件理解解的性质,最后选择适合的算法,并明确所得结果是全局最优解、驻点、松弛界还是启发式解。

先把问题写完整

一个带约束的优化问题可以写成

minimizexf0(x)subject tofi(x)0,i=1,,m,hj(x)=0,j=1,,p.\begin{aligned} \underset{x}{\operatorname{minimize}}\quad & f_0(x) \\ \operatorname{subject\ to}\quad & f_i(x)\le 0,\quad i=1,\ldots,m,\\ & h_j(x)=0,\quad j=1,\ldots,p. \end{aligned}

这组符号本身并不足以构成可执行的模型。还需要交代变量的单位、决策发生的时间尺度、作出决策时能够获得的信息,以及问题是否可行。每个衰落块只调整一次的功率,与每个符号都能更新的功率,对应的是不同系统。若时延约束依赖尚未出现的队列状态,就必须说明预测方法、概率分布或鲁棒不确定集合。

开始求解前,至少应检查以下四项:

  1. 变量: 是连续功率、离散关联、矩阵、概率,还是控制策略。
  2. 目标: 是单一可测量指标,还是有充分依据的多目标标量化。
  3. 约束: 是否完整包含硬件上限、守恒关系、QoS 要求和信息可用性。
  4. 基本可行性: 是否至少存在一个同时满足全部硬约束的点。

如果模型本身不可行,那么求解器返回状态码或罚函数迭代点,也不能让问题获得工程意义。

凸性决定“求得一个解”意味着什么

在标准最小化形式中,若 f0f_0 和全部 fif_i 都是凸函数,每个等式函数 hjh_j 都是仿射函数,而且变量定义域为凸集,那么该问题是凸优化问题。此时,任何局部最优点都是全局最优点。若目标函数在可行集上严格凸且最优解存在,则最优决策唯一;这并不意味着乘子或等价表示也一定唯一。

熟悉闭包规则往往比反复计算 Hessian 更高效。凸函数的非负加权和与逐点最大值仍为凸函数,凸函数与仿射映射复合后仍保持凸性,凸集的交集仍是凸集,但并集未必是。对二次可微函数,Hessian 半正定是一种方便的判别方法,不过它既不是凸性的定义,也不适用于所有凸函数。

无线系统模型有时需要经过变量替换或等价改写,凸结构才会显现。最大化凹的速率效用等价于最小化其负值;几何规划可通过对数变换转化出隐藏的凸问题。相反,二元用户关联、秩约束、耦合干扰以及许多保密速率表达式通常确实是非凸的。

对偶问题与 KKT 条件

对于上述标准形式,不等式约束在拉格朗日函数中对应非负乘子。候选的原始—对偶解应满足 Karush–Kuhn–Tucker 条件:

fi(x)0,hj(x)=0,λi0,λifi(x)=0,f0(x)+i=1mλifi(x)+j=1pνjhj(x)=0.\begin{aligned} & f_i(x^\star)\le 0,\qquad h_j(x^\star)=0,\\ & \lambda_i^\star\ge 0,\\ & \lambda_i^\star f_i(x^\star)=0,\\ & \nabla f_0(x^\star)+\sum_{i=1}^{m}\lambda_i^\star\nabla f_i(x^\star) +\sum_{j=1}^{p}\nu_j^\star\nabla h_j(x^\star)=0. \end{aligned}

四组条件分别对应原始可行性、对偶可行性、互补松弛和驻点条件。对可微凸问题而言,满足 KKT 条件足以保证全局最优;在适当的约束资格条件下,它们也是必要条件。Slater 条件是凸问题中保证强对偶的常用充分条件。若问题非凸,KKT 条件通常只能给出驻点候选,不能证明全局最优。

乘子 λi\lambda_i^\star 还能反映约束的局部边际价值。若功率预算对应的乘子很大,说明在当前模型和工作点附近,稍微放宽功率上限就可能明显改善目标。与只看原始变量相比,这类灵敏度信息通常更有解释力。

算法选择要服从问题结构

对于光滑无约束问题,线搜索方法先确定搜索方向,再寻找能产生充分下降的步长。梯度下降每步计算便宜,但在病态问题上可能收敛很慢;牛顿法利用曲率,在条件良好的解附近收敛迅速,但当 Hessian 不定或迭代点离解较远时,必须对方向加以保护;BFGS 则在不显式形成精确 Hessian 的情况下近似曲率。

对于 Hessian 为 QQ 的二次目标,沿方向 dd 进行精确线搜索时还需满足 dTQd>0d^{\mathsf T}Qd>0;下面的步长公式不能直接用于任意非线性函数:

α=f(x)TddTQd.\alpha^\star=-\frac{\nabla f(x)^{\mathsf T}d}{d^{\mathsf T}Qd}.

信赖域方法采用不同策略:只在局部模型可信的邻域内求步长,再根据预测改善与实际改善的一致程度调整邻域大小。带约束的凸问题常用原始—对偶内点法或一阶分裂方法。具体算法要结合问题规模、稀疏性、精度要求以及决策是否必须在线完成来选择。

对于非凸无线问题,交替优化、逐次凸近似、半定松弛和差分凸方法都很常见。报告结果时必须说明保证的边界:收敛到驻点、得到松弛界或获得启发式解,都不能写成已经证明全局最优。

例子:并行信道功率分配

考虑一组增益为 gi>0g_i>0 的并行信道,分配给各信道的功率为 pip_i,并要求功率非负,总功率预算为 PP。标准的总速率最大化问题为

maximizep1,,pni=1nlog2(1+gipi)subject topi0,i=1npiP.\begin{aligned} \underset{p_1,\ldots,p_n}{\operatorname{maximize}}\quad & \sum_{i=1}^{n}\log_2(1+g_i p_i)\\ \operatorname{subject\ to}\quad & p_i\ge 0,\qquad \sum_{i=1}^{n}p_i\le P. \end{aligned}

目标函数是凹函数,可行集是凸集,因此这是凸优化的最大化形式。应用 KKT 条件可得到注水结构:

pi=[1λln21gi]+,i=1npi=P,p_i^\star=\left[\frac{1}{\lambda^\star\ln 2}-\frac{1}{g_i}\right]_+, \qquad \sum_{i=1}^{n}p_i^\star=P,

其中 [z]+=max(z,0)[z]_+=\max(z,0)λ\lambda^\star 决定水位。质量较好的信道会先获得功率,而所有被激活信道的边际速率收益最终相等。

这个推导只对当前模型成立。逐天线功率上限、干扰耦合、离散调制、信道不确定性、公平性权重以及有限分组长度速率,都会改变解的结构。注水算法的意义不是提供一条万能规则,而是展示如何从凸性出发,利用 KKT 条件得到可以解释的资源分配策略。

研究代码的检查清单

  1. 先写清数学问题,再开始编写求解代码。
  2. 缩放变量和约束,使各数值量级便于计算。
  3. 证明问题的凸性,或明确指出非凸部分。
  4. 把硬性要求写成约束,不要用随意设置的罚权重掩盖它们。
  5. 独立检查可行性、残差和目标值,不只依赖求解器状态。
  6. 对非凸方法采用多组初始化,并在条件允许时报告上下界或基线。
  7. 区分求解器的数值容差与系统允许的物理性能误差。
  8. 记录模型、随机种子、求解器版本和停止条件。

优化结果的可信度取决于结论是否与模型匹配:经过验证的凸问题可以报告全局最优解,松弛方法应报告可认证的界,非凸设计则应如实报告经过充分评估的驻点解。

延伸阅读