非线性规划中的交替最小二乘与序列二次规划混合算法基础题
题目描述
考虑如下带有线性等式约束的非线性最小二乘问题:
\[\begin{aligned} & \min_{\mathbf{x} \in \mathbb{R}^n} \quad f(\mathbf{x}) = \frac{1}{2} \sum_{i=1}^{m} r_i(\mathbf{x})^2 \\ & \text{s.t.} \quad \mathbf{A} \mathbf{x} = \mathbf{b}, \end{aligned} \]
其中:
- \(r_i: \mathbb{R}^n \to \mathbb{R}\) 是二阶连续可微的残差函数,通常非线性。
- \(\mathbf{A} \in \mathbb{R}^{p \times n}\) 为行满秩矩阵,\(\mathbf{b} \in \mathbb{R}^p\)。
- 目标函数 \(f\) 是非线性的,约束为线性等式。
本题要求设计一种 交替最小二乘(Alternating Least Squares, ALS)与序列二次规划(Sequential Quadratic Programming, SQP)的混合算法,适用于此类问题,并解释其基本原理与步骤。
解题过程
步骤 1:问题分析
- 问题结构:目标函数为非线性最小二乘,约束为线性等式。
- 直接使用标准 SQP 需要求解每一迭代步的二次规划子问题,计算量可能较大。
- ALS 思想:若将变量分解为两组或多组,交替固定其中一组、优化另一组,可以简化子问题。
- 混合策略:将 ALS 作为外层迭代,用于分解变量并简化问题结构;对每个子问题(固定部分变量)应用 SQP 进行精确求解。
步骤 2:变量分解策略
假设将变量分为两组:\(\mathbf{x} = [\mathbf{y}, \mathbf{z}]^T\),其中:
- \(\mathbf{y} \in \mathbb{R}^{n_1}\),\(\mathbf{z} \in \mathbb{R}^{n_2}\),\(n_1 + n_2 = n\)。
- 分解原则:尽量使每个子问题(固定一个变量组)的结构更简单(如约束变为低维线性等式)。
线性约束 \(\mathbf{A} \mathbf{x} = \mathbf{b}\) 可写为:
\[\mathbf{A}_y \mathbf{y} + \mathbf{A}_z \mathbf{z} = \mathbf{b}, \]
其中 \(\mathbf{A} = [\mathbf{A}_y, \mathbf{A}_z]\) 对应分块。
步骤 3:交替迭代框架
- 初始化:选取初始点 \(\mathbf{x}^0 = (\mathbf{y}^0, \mathbf{z}^0)\),满足 \(\mathbf{A} \mathbf{x}^0 = \mathbf{b}\)。
- 交替迭代(\(k = 0, 1, 2, \dots\)):
- 固定 \(\mathbf{z}^k\),优化 \(\mathbf{y}\):
子问题为:
- 固定 \(\mathbf{z}^k\),优化 \(\mathbf{y}\):
\[ \begin{aligned} & \min_{\mathbf{y}} \quad \frac{1}{2} \sum_{i=1}^{m} r_i(\mathbf{y}, \mathbf{z}^k)^2 \\ & \text{s.t.} \quad \mathbf{A}_y \mathbf{y} = \mathbf{b} - \mathbf{A}_z \mathbf{z}^k. \end{aligned} \]
该问题仍为带线性等式约束的非线性最小二乘问题,但变量维数降低为 $ n_1 $。
- 固定 \(\mathbf{y}^{k+1}\),优化 \(\mathbf{z}\):
子问题为:
\[ \begin{aligned} & \min_{\mathbf{z}} \quad \frac{1}{2} \sum_{i=1}^{m} r_i(\mathbf{y}^{k+1}, \mathbf{z})^2 \\ & \text{s.t.} \quad \mathbf{A}_z \mathbf{z} = \mathbf{b} - \mathbf{A}_y \mathbf{y}^{k+1}. \end{aligned} \]
步骤 4:子问题的求解——SQP 方法
以固定 \(\mathbf{z}^k\) 后的 \(\mathbf{y}\) 子问题为例,应用 SQP:
- 记 \(f_y(\mathbf{y}) = \frac{1}{2} \sum_{i=1}^{m} r_i(\mathbf{y}, \mathbf{z}^k)^2\)。
- 在当前迭代点 \(\mathbf{y}^t\),构造二次近似子问题:
\[ \begin{aligned} & \min_{\mathbf{d}_y} \quad \nabla f_y(\mathbf{y}^t)^T \mathbf{d}_y + \frac{1}{2} \mathbf{d}_y^T \mathbf{H}_y^t \mathbf{d}_y \\ & \text{s.t.} \quad \mathbf{A}_y (\mathbf{y}^t + \mathbf{d}_y) = \mathbf{b} - \mathbf{A}_z \mathbf{z}^k, \end{aligned} \]
其中 \(\mathbf{H}_y^t\) 是 \(f_y\) 的 Hessian 或其近似(如 Gauss-Newton 矩阵 \(\mathbf{J}_y^T \mathbf{J}_y\),\(\mathbf{J}_y\) 为残差对 \(\mathbf{y}\) 的 Jacobian)。
- 该二次规划(QP)可通过 KKT 系统解析求解或使用积极集法。
- 更新 \(\mathbf{y}^{t+1} = \mathbf{y}^t + \alpha_t \mathbf{d}_y\),其中 \(\alpha_t\) 由线搜索确定(满足充分下降条件)。
- 重复直至子问题收敛。
步骤 5:混合算法流程
- 初始化 \(\mathbf{x}^0 = (\mathbf{y}^0, \mathbf{z}^0)\),满足约束。
- 外层循环(交替次数 \(k\)):
a. 固定 \(\mathbf{z}^k\),求解关于 \(\mathbf{y}\) 的子问题(使用 SQP 内层迭代)得到 \(\mathbf{y}^{k+1}\)。
b. 固定 \(\mathbf{y}^{k+1}\),求解关于 \(\mathbf{z}\) 的子问题(使用 SQP 内层迭代)得到 \(\mathbf{z}^{k+1}\)。
c. 检查外层收敛条件:例如,相对变化 \(\| \mathbf{x}^{k+1} - \mathbf{x}^{k} \| / (1 + \| \mathbf{x}^{k} \|) < \epsilon\) 或目标函数下降量足够小。 - 输出最终解 \(\mathbf{x}^*\)。
步骤 6:收敛性说明
- ALS 框架能保证目标函数在每一步交替中不增(若子问题精确求解)。
- 由于子问题使用 SQP(局部超线性收敛),整个混合算法在合理条件下(如子问题凸性良好、初始点靠近解)可收敛到稳定点。
- 线性等式约束在每一步交替中均被严格满足,因为子问题的约束是原约束的重新表述。
步骤 7:示例与数值考虑
假设 \(n=4\),分解为 \(\mathbf{y} \in \mathbb{R}^2, \mathbf{z} \in \mathbb{R}^2\)。
- 残差函数:\(r_1 = y_1 z_1 - 1, r_2 = y_2 + z_2^2 - 2\) 等。
- 线性约束:\(y_1 + y_2 + z_1 + z_2 = 5\)。
- 交替求解时,子问题的变量数减半,SQP 的 QP 子问题规模减小,计算更高效。
总结
本混合算法结合了 ALS 的变量分解思想(降低问题维度)与 SQP 的局部快速收敛性,特别适合目标为非线性最小二乘且具有可分离结构(或近似可分离)的线性约束问题。实际应用中需注意变量分解方式(依赖问题结构)和子问题收敛精度控制。