投影梯度法
投影梯度法是一种用于求解约束优化问题的迭代算法,特别适用于约束集结构简单、易于投影的情况。其核心思想是:在每一步迭代中,先沿目标函数的负梯度方向(即最速下降方向)移动,然后将得到的新点投影回可行域,以此确保迭代点始终满足约束。
我们来逐步分解这个方法。
第一步:问题设定与核心思想
- 问题形式:考虑一个约束优化问题:
\[ \min f(x) \quad \text{subject to} \quad x \in \mathcal{X} \]
其中,\(f: \mathbb{R}^n \to \mathbb{R}\) 是一个可微函数,\(\mathcal{X} \subset \mathbb{R}^n\) 是一个非空闭凸集(例如,一个盒子约束 \(l_i \leq x_i \leq u_i\),或一个仿射集合)。
-
核心挑战:在无约束优化中,梯度下降法直接沿 \(-\nabla f(x)\) 方向移动。但在有约束问题时,沿该方向移动后得到的新点可能落在可行域 \(\mathcal{X}\) 之外。
-
直观解决方案:投影梯度法的思路非常自然:
a. 计算梯度:在当前迭代点 \(x_k\),计算目标函数的梯度 \(\nabla f(x_k)\)。
b. 沿负梯度方向移动:先得到一个“试验点” \(y_k = x_k - \alpha_k \nabla f(x_k)\),其中 \(\alpha_k > 0\) 是步长。
c. 投影回可行域:将这个试验点 \(y_k\) 投影到可行集 \(\mathcal{X}\) 上,得到下一个迭代点 \(x_{k+1}\)。投影操作 \(P_{\mathcal{X}}(y)\) 定义为在集合 \(\mathcal{X}\) 中寻找距离 \(y\) 最近的点:
\[ P_{\mathcal{X}}(y) = \arg\min_{z \in \mathcal{X}} \| z - y \| \]
第二步:算法步骤
投影梯度法的基本迭代格式如下:
- 初始化:选择一个初始点 \(x_0 \in \mathcal{X}\),设定迭代次数 \(k = 0\)。
- 迭代循环:直到满足某个收敛准则(例如,梯度映射的范数足够小):
a. 选择步长:选择一个步长 \(\alpha_k > 0\)。步长的选择至关重要,可以使用固定步长、线性搜索(如Armijo准则)或Barzilai-Borwein等方法。
b. 梯度步:计算试验点 \(y_{k+1} = x_k - \alpha_k \nabla f(x_k)\)。
c. 投影步:计算投影 \(x_{k+1} = P_{\mathcal{X}}(y_{k+1})\)。
d. 更新:令 \(k = k + 1\)。
第三步:关键概念——梯度映射
投影梯度法的收敛性分析与无约束梯度下降法类似,但其核心角色由“梯度”变成了“梯度映射”。
- 定义:梯度映射 \(G_{\alpha}(x)\) 定义为:
\[ G_{\alpha}(x) = \frac{1}{\alpha} (x - P_{\mathcal{X}}(x - \alpha \nabla f(x))) \]
它衡量了从点 \(x\) 出发,经过一个梯度步和投影后,位置变化的“归一化”量。
- 重要意义:
- 在无约束情况下(\(\mathcal{X} = \mathbb{R}^n\)),投影操作是恒等映射,梯度映射就退化为普通的梯度 \(\nabla f(x)\)。
- 在约束情况下,梯度映射 \(G_{\alpha}(x)\) 在最优性条件中扮演了与梯度相似的角色。点 \(x^*\) 是驻点的充要条件是 \(G_{\alpha}(x^*) = 0\)。
- 因此,在算法中,我们通常用 \(\| G_{\alpha_k}(x_k) \|\) 的大小作为判断收敛的准则。
第四步:收敛性分析
投影梯度法的收敛性质很大程度上取决于目标函数 \(f(x)\) 的性质。
- 凸函数且梯度Lipschitz连续:如果 \(f\) 是凸函数,且其梯度是Lipschitz连续的(即 \(\| \nabla f(x) - \nabla f(y) \| \leq L \| x-y \|\)),那么:
- 使用固定步长 \(\alpha_k \equiv \alpha \in (0, 2/L)\) 时,算法能收敛到全局最优解。
- 其目标函数值的收敛速率是 \(O(1/k)\),即次线性收敛。
-
强凸函数且梯度Lipschitz连续:如果 \(f\) 是 \(\mu\)-强凸函数(\(\mu > 0\))且梯度Lipschitz连续,那么投影梯度法可以实现线性收敛速率,即 \(O(\rho^k)\)(其中 \(0 < \rho < 1\))。
-
非凸函数:对于非凸问题,投影梯度法可以收敛到一个驻点(即满足 \(G_{\alpha}(x^*) = 0\) 的点)。
第五步:优缺点与应用场景
- 优点:
- 概念简单,易于实现:核心步骤只有梯度计算和投影。
- 计算高效:当投影操作 \(P_{\mathcal{X}}(\cdot)\) 计算成本很低时,每次迭代非常快。例如,对于盒子约束,投影就是简单的分量截断操作。
- 内存需求低:通常不需要存储大型矩阵。
-
缺点:
- 收敛速度可能较慢:与梯度下降法一样,在病态问题上收敛速度慢。
- 严重依赖投影的难易程度:如果投影操作本身就是一个复杂的优化问题(例如,投影到一个半正定锥),那么该方法就不再高效。
-
典型应用:
- 非负最小二乘:约束集 \(\mathcal{X} = \{ x | x \geq 0 \}\)。
- 信号处理中的基追踪去噪。
- 机器学习中的带简单约束的模型训练(如L1-ball约束的逻辑回归)。
总结来说,投影梯度法通过将“梯度步”和“可行性投影”这两个简单操作交替进行,巧妙地解决了带有“易于投影”的凸约束的优化问题,是解决一大类实际问题的重要工具。