随机化块坐标下降法在凸优化问题求解中的应用
题目描述:
考虑凸优化问题
\[\min_{x \in \mathbb{R}^n} f(x) \]
其中 \(f: \mathbb{R}^n \to \mathbb{R}\) 是凸函数,且可分解为
\[f(x) = g(x) + \sum_{i=1}^N h_i(x_i) \]
\(g\) 是可微凸函数,\(h_i\) 是凸函数(可能非光滑,如L1正则项)。
随机化块坐标下降法(Randomized Block Coordinate Descent, RBCD)每次随机选取一个坐标块(一组变量)进行更新,从而降低单次迭代成本,适用于大规模问题。本题目要求:
- 说明RBCD的基本迭代格式。
- 推导在块Lipschitz条件下步长的选取。
- 分析在凸函数和强凸函数下的收敛速率。
解题过程循序渐进讲解:
步骤1:问题建模与基本迭代格式
将变量 \(x\) 划分为 \(N\) 块:\(x = (x_1, \dots, x_N)^T\),其中 \(x_i \in \mathbb{R}^{n_i}\),\(\sum_{i=1}^N n_i = n\)。
每一步随机选取一个块索引 \(i \in \{1, \dots, N\}\),固定其他块,更新所选块:
\[x_i^{(k+1)} = \arg\min_{y \in \mathbb{R}^{n_i}} \left\{ \langle \nabla_i g(x^{(k)}), y - x_i^{(k)} \rangle + \frac{L_i}{2} \|y - x_i^{(k)}\|^2 + h_i(y) \right\} \]
这里 \(\nabla_i g\) 是 \(g\) 对块 \(i\) 的梯度,\(L_i\) 是块梯度的Lipschitz常数(定义见步骤2),右侧是块 \(i\) 的近端梯度步骤。
为什么用这个迭代:
- 随机选择块可均摊计算成本。
- 对非光滑项 \(h_i\) 使用近端算子,允许非光滑正则化。
步骤2:块Lipschitz条件与步长选择
假设 \(\nabla_i g\) 关于块 \(i\) 满足Lipschitz条件:存在 \(L_i > 0\) 使得
\[\| \nabla_i g(x + U_i d_i) - \nabla_i g(x) \| \le L_i \|d_i\| \]
其中 \(U_i\) 是将 \(d_i \in \mathbb{R}^{n_i}\) 映射到全空间(其他块为零)的矩阵。
步长取 \(\alpha_i = 1/L_i\) 可保证块更新的目标函数下降。
推导:
对光滑部分 \(g\),在块 \(i\) 上有二次上界:
\[g(x + U_i d_i) \le g(x) + \langle \nabla_i g(x), d_i \rangle + \frac{L_i}{2} \|d_i\|^2 \]
代入迭代格式,更新方向 \(d_i = y - x_i^{(k)}\) 使上界加 \(h_i\) 最小化,即为近端梯度步骤。
步骤3:算法流程
- 初始化 \(x^{(0)}\),设定块 Lipschitz 常数 \(L_i\)(可估计或线搜索确定)。
- 对 \(k = 0, 1, 2, \dots\) 重复:
a. 随机均匀选取块索引 \(i_k \in \{1, \dots, N\}\)。
b. 计算块梯度 \(\nabla_{i_k} g(x^{(k)})\)。
c. 更新块 \(i_k\):
\[ x_{i_k}^{(k+1)} = \text{prox}_{h_{i_k}, L_{i_k}^{-1}} \left( x_{i_k}^{(k)} - L_{i_k}^{-1} \nabla_{i_k} g(x^{(k)}) \right) \]
其中近端算子定义为
\[ \text{prox}_{h, \lambda}(z) = \arg\min_y \left\{ h(y) + \frac{1}{2\lambda} \|y - z\|^2 \right\} \]
d. 其他块保持不变:\(x_j^{(k+1)} = x_j^{(k)}\) 对 \(j \ne i_k\)。
步骤4:收敛性分析
- 凸函数情形(\(g\) 凸,\(h_i\) 凸):
设 \(f^* = \min f\),迭代期望满足
\[ \mathbb{E}[f(x^{(k)})] - f^* \le \frac{N R_0^2 + 2 f(x^{(0)})}{k + 2N} \]
其中 \(R_0^2 = \|x^{(0)} - x^*\|^2\),假设 \(L_{\max} = \max_i L_i\) 有界。
意义:达到 \(\epsilon\)-最优解需 \(O(N / \epsilon)\) 次迭代,但每次只更新一块,总梯度计算量可降低。
- 强凸函数情形(\(g\) 强凸,模 \(\mu > 0\)):
设 \(f\) 关于块坐标有强凸性,收敛速率提升为线性:
\[ \mathbb{E}[f(x^{(k)})] - f^* \le \left(1 - \frac{\mu}{N L_{\max}}\right)^k (f(x^{(0)}) - f^*) \]
解释:随机选择使收敛依赖块数 \(N\),但每轮期望下降因子为 \(1 - \mu/(N L_{\max})\)。
步骤5:关键技巧与扩展
- 线搜索:若 \(L_i\) 未知,可在每步用回溯线搜索估计局部 Lipschitz 常数。
- 加速变体:结合 Nesterov 动量,得随机化加速块坐标下降,收敛率提升至 \(O(1/k^2)\)(凸)和 \((1 - \sqrt{\mu/(N L_{\max})})^k\)(强凸)。
- 并行化:可随机选多个块同时更新(异步并行),需处理块间耦合。
总结:
随机化块坐标下降法将大规模问题分解为低维子问题,通过随机选择块平衡计算与收敛。在机器学习和数据分析中广泛用于带正则化的损失最小化(如LASSO、逻辑回归)。核心是块 Lipschitz 常数确定步长,近端算子处理非光滑项,收敛速率依赖凸性。