非线性规划中的自适应步长随机梯度下降法进阶题
题目描述
考虑一个带有等式约束的非光滑随机优化问题:
\[\min_{x \in \mathbb{R}^n} \mathbb{E}_{\xi}[f(x, \xi)] \quad \text{s.t.} \quad c(x) = 0 \]
其中目标函数 \(f(x, \xi)\) 关于 \(x\) 可能是非光滑的(例如带有 \(\ell_1\) 正则化项),随机变量 \(\xi\) 服从某个分布,约束 \(c(x) = 0\) 是光滑的等式约束(\(c: \mathbb{R}^n \to \mathbb{R}^m\))。假设我们只能通过采样得到随机次梯度 \(g(x, \xi) \in \partial_x f(x, \xi)\)(即 \(f\) 关于 \(x\) 的次梯度)。请设计一种自适应步长随机梯度下降法,使其能够处理非光滑目标与等式约束,并说明算法如何自适应调整步长、确保收敛性。
解题过程循序渐进讲解
1. 问题分析
这是一个随机约束优化问题,难点在于:
- 目标函数是非光滑的随机函数,无法直接使用梯度。
- 有等式约束,需要将约束纳入迭代过程。
- 随机性要求算法在每次迭代中只使用一个样本(或小批量)的次梯度,计算高效。
传统随机梯度下降(SGD)需要修改以适应约束和非光滑性,同时步长需要自适应调整(例如根据历史梯度信息),避免手动调参并提升收敛速度。
2. 算法框架设计
我们结合随机次梯度法、拉格朗日函数和自适应步长策略。
第一步:转化为无约束问题(增广拉格朗日法)
引入拉格朗日乘子 \(\lambda \in \mathbb{R}^m\),定义增广拉格朗日函数:
\[\mathcal{L}(x, \lambda; \rho) = \mathbb{E}_{\xi}[f(x, \xi)] + \lambda^\top c(x) + \frac{\rho}{2} \|c(x)\|^2 \]
其中 \(\rho > 0\) 是惩罚参数。增广项 \(\frac{\rho}{2} \|c(x)\|^2\) 可帮助约束违反较小时使子问题更稳定。
在随机设定下:我们无法计算期望,改为每次迭代 \(k\) 采样一个随机样本 \(\xi_k\),得到随机增广拉格朗日:
\[L_k(x, \lambda) = f(x, \xi_k) + \lambda^\top c(x) + \frac{\rho}{2} \|c(x)\|^2 \]
第二步:迭代更新公式
采用交替更新:
- 更新 \(x\):用 \(L_k\) 的次梯度下降,步长 \(\alpha_k\):
\[ x_{k+1} = x_k - \alpha_k \cdot g_k \]
其中 \(g_k \in \partial_x L_k(x_k, \lambda_k) = \partial_x f(x_k, \xi_k) + J_c(x_k)^\top (\lambda_k + \rho c(x_k))\),\(J_c\) 是 \(c(x)\) 的雅可比矩阵。
注意:对非光滑 \(f\),\(\partial_x f\) 是次梯度集合,我们从中随机取一个。
- 更新 \(\lambda\):用梯度上升(因为对 \(\lambda\) 是光滑的):
\[ \lambda_{k+1} = \lambda_k + \beta_k \cdot \nabla_{\lambda} L_k(x_k, \lambda_k) = \lambda_k + \beta_k \cdot c(x_k) \]
其中 \(\beta_k > 0\) 是乘子更新步长,通常取 \(\beta_k = \rho\) 或更小。
第三步:自适应步长设计
关键点:目标非光滑,且随机次梯度方差可能大,需自适应调整步长 \(\alpha_k\)。
采用AdaGrad风格的步长:
\[\alpha_k = \frac{\eta}{\sqrt{\sum_{i=0}^{k} \|g_i\|^2 + \epsilon}} \]
其中:
- \(\eta > 0\) 是初始步长参数(可设为 0.1 或 0.01)。
- \(\epsilon > 0\) 很小(如 \(10^{-8}\)),防止除零。
- 分母累积历史次梯度范数,使得步长逐渐减小,且对每个方向自适应调整(此处是标量版本,也可推广为对角矩阵版本)。
为什么有效:
- 当历史梯度大时,步长自动变小,避免振荡。
- 适用于非光滑问题,因为次梯度范数可能不稳定,自适应能平衡探索与利用。
- 随机次梯度的方差大时,累积范数增长快,步长下降快,有助于收敛。
第四步:完整算法步骤
- 初始化 \(x_0, \lambda_0, \rho > 0, \eta > 0, \epsilon > 0, G_0 = 0\)。
- 对 \(k = 0, 1, 2, \dots\) 执行:
a. 采样随机变量 \(\xi_k\)。
b. 计算约束值 \(c(x_k)\) 和雅可比 \(J_c(x_k)\)。
c. 从次微分集合中随机取 \(s_k \in \partial_x f(x_k, \xi_k)\)。
d. 计算 \(g_k = s_k + J_c(x_k)^\top (\lambda_k + \rho c(x_k))\)。
e. 更新累积梯度范数平方:\(G_{k+1} = G_k + \|g_k\|^2\)。
f. 计算步长:\(\alpha_k = \eta / \sqrt{G_{k+1} + \epsilon}\)。
g. 更新 \(x_{k+1} = x_k - \alpha_k g_k\)。
h. 更新 \(\lambda_{k+1} = \lambda_k + \rho c(x_k)\)(这里取 \(\beta_k = \rho\))。 - 直到满足停止准则(如 \(\|c(x_k)\| < \text{tol}\) 且 \(\|g_k\|\) 很小)。
3. 收敛性说明
- 步长条件:自适应步长满足 \(\alpha_k \to 0\) 且 \(\sum_{k=0}^{\infty} \alpha_k = \infty\)(因为 \(\alpha_k \sim O(1/\sqrt{k})\)),这是随机近似收敛的典型条件。
- 约束收敛:由于 \(\lambda\) 更新类似梯度上升,在 \(\rho\) 足够大时,\(c(x_k)\) 会逐渐趋于零(增广拉格朗日法的性质)。
- 目标收敛:在非光滑情况下,次梯度方法的收敛性要求步长递减。这里自适应步长自动递减,能保证在期望意义下收敛到稳定点(临界点)。
- 方差控制:自适应分母减少了随机次梯度噪声的影响,类似于 AdaGrad 在随机优化中的效果。
4. 注意事项与扩展
- 若 \(f\) 是复合形式(光滑+非光滑),可用近端算子代替梯度步骤,成为自适应步长随机近端梯度法。
- 可扩展为小批量版本,用多个样本的平均次梯度降低方差。
- 惩罚参数 \(\rho\) 也可自适应增加,以加强约束满足。
总结:本算法结合了随机次梯度、增广拉格朗日法和 AdaGrad 步长,能处理非光滑随机目标与等式约束。自适应步长免去了手动调参,且适合非光滑问题的收敛要求。