投影梯度法
字数 1291 2025-10-28 20:05:42
投影梯度法
- 基本概念
投影梯度法是求解约束优化问题的一类迭代算法,特别适用于变量带有简单约束(如边界约束)的情形。考虑问题:
\[\min_{x \in \Omega} f(x) \]
其中 \(\Omega \subset \mathbb{R}^n\) 是一个闭凸集(例如 \(\Omega = [a,b]^n\))。其核心思想是:在每一步迭代中,先沿目标函数 \(f(x)\) 的负梯度方向移动(梯度下降),然后将结果投影回可行域 \(\Omega\),确保迭代点始终满足约束。
- 投影操作的定义
对于任意点 \(y \in \mathbb{R}^n\),其在 \(\Omega\) 上的投影定义为:
\[P_\Omega(y) = \arg\min_{x \in \Omega} \|x - y\| \]
即找到 \(\Omega\) 中与 \(y\) 欧氏距离最近的点。投影的唯一性由 \(\Omega\) 的凸性保证。
- 算法步骤
固定步长 \(\alpha_k > 0\),投影梯度法的迭代格式为:
\[x^{k+1} = P_\Omega\left(x^k - \alpha_k \nabla f(x^k)\right) \]
具体流程:
- 步骤1:计算当前点 \(x^k\) 的梯度 \(\nabla f(x^k)\)。
- 步骤2:沿负梯度方向移动得到中间点 \(y^k = x^k - \alpha_k \nabla f(x^k)\)。
- 步骤3:将 \(y^k\) 投影至 \(\Omega\),得到新迭代点 \(x^{k+1} = P_\Omega(y^k)\)。
- 步骤4:检查收敛条件(如梯度范数或步长变化量),若不满足则返回步骤1。
- 投影的计算示例
若 \(\Omega = [l, u]^n\)(分量独立约束),则投影可逐分量计算:
\[\left[P_\Omega(y)\right]_i = \min\left(\max(y_i, l_i), u_i\right) \]
即每个分量被裁剪到区间 \([l_i, u_i]\) 内。其他常见集合(如球、仿射空间)也有显式投影公式。
- 收敛性分析
若 \(f\) 是 Lipschitz 连续可微(常数为 \(L\)),且步长满足 \(0 < \alpha_k \equiv \alpha < 2/L\),则算法收敛到稳定点(满足一阶最优性条件)。对于强凸函数,可证明线性收敛速率。
- 变体与扩展
- 加速投影梯度法:引入动量项(如Nesterov加速),提升收敛速度。
- 谱投影梯度法:动态调整步长 \(\alpha_k\) 以提高效率。
- 非凸问题:若 \(\Omega\) 非凸,投影可能不唯一,需结合其他策略(如近端梯度法)。
- 应用场景
投影梯度法广泛用于机器学习(如带约束的线性回归)、信号处理(基追踪)和图像重建,其中约束通常易于投影处理。