非线性规划中的序列随机优化(Sequential Stochastic Optimization, SSO)方法基础题
题目描述
考虑一个带有期望值约束的非线性规划问题:
\[\min_{x \in \mathbb{R}^n} \quad F(x) = \mathbb{E}[f(x, \xi)] \]
\[ \text{s.t.} \quad G(x) = \mathbb{E}[g(x, \xi)] \le 0, \]
\[ \quad h(x) = 0, \]
其中 \(x \in \mathbb{R}^n\) 是决策变量,\(\xi\) 是一个随机变量,\(f\) 和 \(g\) 是可能非凸且非光滑的函数,\(h\) 是确定性的等式约束(例如线性约束)。期望 \(\mathbb{E}[\cdot]\) 通常无法精确计算,只能通过随机采样来近似。序列随机优化(SSO)方法旨在通过迭代地求解一系列基于随机样本的近似的子问题,来逼近原问题的解。本题要求:详细解释SSO的基本原理、迭代步骤、关键参数选择以及一个简单的数值示例。
解题过程循序渐进讲解
第一步:理解问题结构与难点
- 问题本质:目标函数和不等式约束都包含数学期望,这属于随机规划问题。直接优化非常困难,因为每次计算函数值或梯度都需要大量采样,且精确梯度不可得。
- 核心思路:序列随机优化(SSO)将原问题转化为一系列确定性子问题。在每一步 \(k\),我们基于当前迭代点 \(x_k\) 和随机样本,构建一个随机近似模型(例如样本平均近似),然后求解这个近似问题得到下一个迭代点 \(x_{k+1}\)。通过控制样本量和迭代步长,逐步逼近解。
- 与SAA的区别:样本平均近似(SAA)是一次性用大量样本构造一个确定性问题进行求解,计算量大;SSO则是序列化地、自适应地增加样本量,更灵活。
第二步:SSO的基本算法框架
我们以随机近似(SA) 结合罚函数法处理约束为例,说明SSO的一种典型流程。
-
初始化:
- 选取初始点 \(x_0\)。
- 选择初始样本量 \(N_0\)(用于近似期望),初始步长 \(\alpha_0\),初始惩罚参数 \(\rho_0 > 0\)。
- 设定最大迭代次数 \(K\) 或收敛容差 \(\epsilon\)。
-
第 k 次迭代(k = 0, 1, 2, ...):
a. 采样:生成 \(N_k\) 个独立同分布的随机样本 \(\xi^{(1)}, \dots, \xi^{(N_k)}\)。
b. 构建随机近似函数:- 近似目标:\(\hat{F}_k(x) = \frac{1}{N_k} \sum_{i=1}^{N_k} f(x, \xi^{(i)})\)。
- 近似约束:\(\hat{G}_k(x) = \frac{1}{N_k} \sum_{i=1}^{N_k} g(x, \xi^{(i)})\)。
c. 构造惩罚子问题:将随机约束通过罚函数纳入目标。使用外点罚函数,定义:
\[ P_k(x) = \hat{F}_k(x) + \rho_k \cdot \left\| \max(0, \hat{G}_k(x)) \right\|^2 + \rho_k \cdot \|h(x)\|^2. \]
这里 $ \rho_k $ 是惩罚参数,随着迭代增加以迫使约束满足。
d. 求解子问题:以当前点 \(x_k\) 为起点,求解 \(\min_x P_k(x)\)。由于 \(P_k(x)\) 是确定性的(给定样本),可用任何无约束优化方法(如拟牛顿法、梯度下降)求解,得到新点 \(x_{k+1}\)。
e. 更新参数:
- 增加样本量 \(N_{k+1} \ge N_k\) 以提高近似精度。
- 减小步长 \(\alpha_{k+1}\)(若子问题求解使用梯度法,则步长衰减;若用二阶法,则信赖域半径等需调整)。
- 增加惩罚参数 \(\rho_{k+1} > \rho_k\)。
f. 收敛检查:若 \(\|x_{k+1} - x_k\| < \epsilon\) 且约束违反度足够小,则停止;否则继续。
第三步:关键细节与参数选择
- 样本量增长策略:样本量 \(N_k\) 应逐渐增加以减少方差。常见规则:\(N_k = \lceil N_0 \cdot (k+1)^\gamma \rceil\),其中 \(\gamma \in (0, 1]\)。例如 \(\gamma = 0.5\) 或 \(1\)。
- 步长衰减:若子问题求解采用随机梯度下降(SGD),步长需满足 Robbins-Monro 条件:\(\sum \alpha_k = \infty\),\(\sum \alpha_k^2 < \infty\)。例如 \(\alpha_k = \frac{\alpha_0}{k+1}\)。
- 惩罚参数更新:\(\rho_{k+1} = \beta \rho_k\),\(\beta > 1\),例如 \(\beta = 1.2 \sim 5\)。
- 子问题求解精度:早期迭代不需要高精度解,可限制子问题迭代次数或设置宽松容忍度,以节省计算。
第四步:简单数值示例
考虑一个简化问题以便手算演示:
\[\min_{x \in \mathbb{R}} \quad \mathbb{E}[\xi x^2] \]
\[ \text{s.t.} \quad \mathbb{E}[(\xi - 1)x] \le 0, \]
其中 \(\xi \sim \text{Uniform}(0, 2)\),其真实期望 \(\mathbb{E}[\xi] = 1\)。于是真实问题为:
\[\min_x \, x^2 \quad \text{s.t.} \quad x \le 0. \]
显然最优解为 \(x^* = 0\),最优值 \(0\)。
我们应用SSO步骤:
- 设初始点 \(x_0 = 0.5\),\(N_0 = 2\),\(\rho_0 = 1\),采用固定步长梯度法求解子问题(步长 \(\eta = 0.1\)),子问题迭代一次。
- 迭代 k=0:
- 采样:从 U(0,2) 生成两个样本,例如 \(\xi_1 = 0.3, \xi_2 = 1.7\)。
- 近似函数:\(\hat{F}_0(x) = \frac{0.3+1.7}{2} x^2 = 1.0 \cdot x^2\),\(\hat{G}_0(x) = \frac{(0.3-1)+(1.7-1)}{2} x = 0.0 \cdot x\)。
- 惩罚函数:\(P_0(x) = 1.0 x^2 + 1 \cdot (\max(0, 0)^2) = x^2\)。
- 梯度:\(\nabla P_0(x) = 2x\),在 \(x_0=0.5\) 处梯度为 1.0。
- 更新:\(x_1 = x_0 - \eta \cdot 1.0 = 0.5 - 0.1 = 0.4\)。
- 参数更新:\(N_1 = 3\),\(\rho_1 = 2\)。
- 迭代 k=1:
- 采样:三个样本,例如 0.2, 1.0, 1.8。则 \(\hat{F}_1(x) = \frac{0.2+1.0+1.8}{3} x^2 = 1.0 x^2\),\(\hat{G}_1(x) = \frac{(0.2-1)+(1.0-1)+(1.8-1)}{3} x = \frac{0.0}{3} x = 0\)。
- \(P_1(x) = 1.0 x^2\),梯度 0.8,\(x_2 = 0.4 - 0.1 \cdot 0.8 = 0.32\)。
- 参数更新:\(N_2 = 4\),\(\rho_2 = 4\)。
- 继续迭代,\(x_k\) 将趋向于 0。由于样本均值的随机性,路径会有波动,但大趋势收敛。
第五步:方法特点与注意事项
- 优点:适用于期望无法显式计算的问题;通过序列增加样本,平衡计算成本与精度;框架灵活,可结合多种确定性优化器。
- 缺点:
- 收敛速度通常较慢,为次线性或线性。
- 需仔细调参(样本量增长、步长、惩罚参数)。
- 可能陷入局部解(因原问题非凸)。
- 扩展:更先进的SSO方法会使用方差缩减技术(如SVRG)、自适应采样、随机拟牛顿更新等,以加速收敛。
总结
序列随机优化(SSO)通过迭代求解基于随机样本的近似子问题,逐步逼近随机规划的解。核心在于样本量的序列增加与子问题求解的协同。在实际应用中,需根据问题特性设计近似模型、罚函数形式及参数更新规则,以在有限计算资源下获得可靠解。