随机化块坐标梯度下降(Randomized Block Coordinate Gradient Descent)在凸优化问题求解中的应用
字数 4186 2025-12-20 05:15:15

随机化块坐标梯度下降(Randomized Block Coordinate Gradient Descent)在凸优化问题求解中的应用

我将讲解 随机化块坐标梯度下降(Randomized Block Coordinate Gradient Descent, RBCGD) 这一算法。它在求解大规模凸优化问题时,通过随机选择变量的子集(块)进行更新,显著降低了单次迭代的计算成本。

1. 问题描述

考虑以下形式的无约束凸优化问题:

\[\min_{x \in \mathbb{R}^n} f(x) \]

其中,目标函数 \(f: \mathbb{R}^n \to \mathbb{R}\)凸可微的。当变量维度 \(n\) 非常大时,标准的梯度下降(GD)每次迭代需要计算全梯度 \(\nabla f(x)\),计算代价可能过高。

核心思想:将变量 \(x\) 划分为 \(M\) 个“块”(blocks)。每次迭代中,随机选择一个或几个块,仅计算和更新这些块对应的部分梯度,而保持其他块不变。这能大大降低单次迭代的计算量,尤其适合 \(f\) 具有某种可分离或部分可分离的结构。

2. 算法准备与假设

为了确保算法的收敛性,我们通常需要一些假设条件:

  • 块划分:将变量 \(x\) 分解为 \(M\) 个块:\(x = (x_1, x_2, \dots, x_M)\),其中 \(x_i \in \mathbb{R}^{n_i}\),且 \(\sum_{i=1}^M n_i = n\)
  • 块Lipschitz连续梯度:假设对于每个块 \(i\),存在常数 \(L_i > 0\),使得对于任意的 \(x \in \mathbb{R}^n\) 和任意的 \(d_i \in \mathbb{R}^{n_i}\),有:

\[ \| \nabla_i f(x + U_i d_i) - \nabla_i f(x) \| \le L_i \| d_i \| \]

这里,$ \nabla_i f(x) $ 表示目标函数 $ f $ 关于块 $ x_i $ 的偏导数(梯度),$ U_i $ 是一个 $ n \times n_i $ 的矩阵,其作用是将 $ d_i $ “放置”到 $ x $ 的第 $ i $ 个块的位置上,其他位置为零。这意味着,当只改变第 $ i $ 块时,该块的梯度变化是受控的。
  • 块采样规则:通常假设在每次迭代 \(k\) 中,我们以概率 \(p_i > 0\) 独立随机地选择一个块索引 \(i_k \in \{1, 2, \dots, M\}\) 进行更新。最简单的规则是均匀采样,即 \(p_i = 1/M\)

3. 算法步骤详解

随机化块坐标梯度下降(RBCGD)的核心迭代格式如下:

步骤1:初始化

  • 选择初始点 \(x^{(0)} \in \mathbb{R}^n\)
  • 设置最大迭代次数 \(K\) 或精度阈值 \(\epsilon\)
  • \(k \leftarrow 0\)

步骤2:迭代循环(直到满足停止条件)

  1. 随机选择块:根据预定义的概率分布 \(\{p_i\}\)(例如均匀分布),随机选取一个块索引 \(i_k\)
  2. 计算部分梯度:计算目标函数在当前迭代点 \(x^{(k)}\) 处关于被选中块 \(i_k\) 的梯度:\(g_{i_k} = \nabla_{i_k} f(x^{(k)})\)
  3. 更新选中块:沿着该块梯度的负方向(可能带有步长)进行更新:

\[ x_{i_k}^{(k+1)} = x_{i_k}^{(k)} - \eta_k \cdot g_{i_k} \]

其中,$ \eta_k > 0 $ 是步长(学习率)。步长可以是一个固定值,也可以根据块 Lipschitz 常数 $ L_{i_k} $ 自适应选择。
**最优步长选择(理论保证)**:如果我们已知每个块的 Lipschitz 常数 $ L_i $,通常可以设置步长为 $ \eta_k = 1 / L_{i_k} $。这相当于在选中的块上执行一次精确的**块坐标下降**(对于二次函数,是最优步长)。
  1. 保持其他块不变:对于所有 \(j \neq i_k\),令 \(x_j^{(k+1)} = x_j^{(k)}\)
  2. 迭代计数\(k \leftarrow k + 1\)

步骤3:输出

  • 输出最后一次迭代的结果 \(x^{(k)}\) 作为近似最优解。有时也会输出所有迭代的平均值或历史最优值。

4. 一个直观的例子与解释

假设目标函数是 \(f(x, y, z) = x^2 + 2y^2 + 3z^2 + xy + yz\)(这是一个简单的凸二次函数)。我们将三个变量 \(x, y, z\) 分别视为三个块(\(M=3\))。

  • 全梯度下降:每次迭代需要计算三个偏导数:\(\frac{\partial f}{\partial x} = 2x + y\)\(\frac{\partial f}{\partial y} = 4y + x + z\)\(\frac{\partial f}{\partial z} = 6z + y\)。然后同时更新 \(x, y, z\)
  • 随机块坐标梯度下降
    • 假设第 \(k\) 次迭代随机选中了块 \(y\)(即 \(i_k = 2\))。
    • 我们只计算关于 \(y\) 的偏导数:\(g_2 = \frac{\partial f}{\partial y} (x^{(k)}, y^{(k)}, z^{(k)}) = 4y^{(k)} + x^{(k)} + z^{(k)}\)
    • 然后只更新 \(y\)\(y^{(k+1)} = y^{(k)} - \eta \cdot g_2\),而 \(x^{(k+1)} = x^{(k)}\)\(z^{(k+1)} = z^{(k)}\)
    • 下次迭代可能选到不同的块。平均来看,每次迭代只需要计算一个偏导数,计算量是全梯度下降的 \(1/3\)

5. 收敛性分析(关键思想)

RBCGD的收敛性证明通常依赖于以下观察:

  • 期望下降(Progress in Expectation):由于每一步是随机选择块,我们关注每次迭代后目标函数值的期望下降。数学上可以证明,在凸且梯度满足Lipschitz连续的条件下,存在步长策略(如 \(\eta = 1/L_{\max}\)\(\eta = 1/L_{i_k}\)),使得:

\[ \mathbb{E}[f(x^{(k+1)}) | x^{(k)}] \le f(x^{(k)}) - \frac{\eta}{2} \| \nabla f(x^{(k)}) \|^2_{\text{weighted}} \]

这里的期望是对随机选择的块 $ i_k $ 取的,加权范数与采样概率 $ p_i $ 和 Lipschitz 常数 $ L_i $ 有关。
  • 收敛速率:对于凸且光滑\(f\),RBCGD可以达到 \(O(1/k)\) 的次线性收敛速率(对于非强凸函数),或者线性收敛速率(对于强凸函数)。具体来说:
    • \(f\)\(\mu\)-强凸的,且采用适当步长,则:

\[ \mathbb{E}[f(x^{(k)}) - f(x^*)] \le (1 - c)^k [f(x^{(0)}) - f(x^*)] \]

    其中 $ c $ 是一个依赖于 $ \mu, L_i, p_i $ 的正常数(小于1)。$ x^* $ 是最优解。

收敛速率虽然可能比全梯度下降慢(体现在常数 $ c $ 上),但**单次迭代成本显著降低**,使得在达到相同精度时,总的计算时间(或浮点运算次数)往往更少。这是随机化/坐标类算法的核心优势。

6. 算法变体与扩展

  1. 随机块坐标下降(RBCD):对于复合优化问题 \(\min_x f(x) + g(x)\),其中 \(g(x)\) 可能是非光滑但可分离的(如L1正则项 \(\lambda \|x\|_1\)),可以将梯度下降步骤替换为近端梯度更新。当选中第 \(i\) 块时,更新为:

\[ x_i^{(k+1)} = \text{prox}_{\eta g_i}(x_i^{(k)} - \eta \nabla_i f(x^{(k)})) \]

其中 $ \text{prox} $ 是近端算子。这被称为**随机块坐标近端梯度下降**。
  1. 块采样策略:除了均匀采样,还可以采用与块Lipschitz常数 \(L_i\) 成比例的概率 \(p_i \propto L_i\),这有时能带来更好的理论收敛常数。

  2. 多块/批量更新:每次迭代随机选择多个块(一个小批量)同时更新,可以减小方差,有时能加速收敛。

  3. 加速变体:借鉴Nesterov动量的思想,有随机块坐标梯度下降的加速版本(如APPROX、APCG算法),对于强凸问题可以达到更优的 \(O((1-\sqrt{\mu/L_{\text{avg}}})^k)\) 线性收敛速率。

总结

随机化块坐标梯度下降通过将高维优化问题分解为对低维块的随机、序列更新,巧妙地平衡了计算效率收敛保证。其核心在于利用问题的结构(块可分性)和随机采样的期望下降性质。在处理大规模机器学习问题(如逻辑回归、线性回归、深度学习中的部分参数更新)时,它是一种非常有效的基础工具。理解其从随机块选择、部分梯度计算到收敛性分析的全过程,是掌握现代大规模优化算法的关键一步。

随机化块坐标梯度下降(Randomized Block Coordinate Gradient Descent)在凸优化问题求解中的应用 我将讲解 随机化块坐标梯度下降(Randomized Block Coordinate Gradient Descent, RBCGD) 这一算法。它在求解大规模凸优化问题时,通过随机选择变量的子集(块)进行更新,显著降低了单次迭代的计算成本。 1. 问题描述 考虑以下形式的无约束凸优化问题: \[ \min_ {x \in \mathbb{R}^n} f(x) \] 其中,目标函数 \( f: \mathbb{R}^n \to \mathbb{R} \) 是 凸可微 的。当变量维度 \( n \) 非常大时,标准的梯度下降(GD)每次迭代需要计算全梯度 \( \nabla f(x) \),计算代价可能过高。 核心思想 :将变量 \( x \) 划分为 \( M \) 个“块”(blocks)。每次迭代中, 随机选择一个或几个块 ,仅计算和更新这些块对应的部分梯度,而保持其他块不变。这能大大降低单次迭代的计算量,尤其适合 \( f \) 具有某种可分离或部分可分离的结构。 2. 算法准备与假设 为了确保算法的收敛性,我们通常需要一些假设条件: 块划分 :将变量 \( x \) 分解为 \( M \) 个块:\( x = (x_ 1, x_ 2, \dots, x_ M) \),其中 \( x_ i \in \mathbb{R}^{n_ i} \),且 \( \sum_ {i=1}^M n_ i = n \)。 块Lipschitz连续梯度 :假设对于每个块 \( i \),存在常数 \( L_ i > 0 \),使得对于任意的 \( x \in \mathbb{R}^n \) 和任意的 \( d_ i \in \mathbb{R}^{n_ i} \),有: \[ \| \nabla_ i f(x + U_ i d_ i) - \nabla_ i f(x) \| \le L_ i \| d_ i \| \] 这里,\( \nabla_ i f(x) \) 表示目标函数 \( f \) 关于块 \( x_ i \) 的偏导数(梯度),\( U_ i \) 是一个 \( n \times n_ i \) 的矩阵,其作用是将 \( d_ i \) “放置”到 \( x \) 的第 \( i \) 个块的位置上,其他位置为零。这意味着,当只改变第 \( i \) 块时,该块的梯度变化是受控的。 块采样规则 :通常假设在每次迭代 \( k \) 中,我们以概率 \( p_ i > 0 \) 独立随机地选择一个块索引 \( i_ k \in \{1, 2, \dots, M\} \) 进行更新。最简单的规则是 均匀采样 ,即 \( p_ i = 1/M \)。 3. 算法步骤详解 随机化块坐标梯度下降(RBCGD)的核心迭代格式如下: 步骤1:初始化 选择初始点 \( x^{(0)} \in \mathbb{R}^n \)。 设置最大迭代次数 \( K \) 或精度阈值 \( \epsilon \)。 \( k \leftarrow 0 \)。 步骤2:迭代循环(直到满足停止条件) 随机选择块 :根据预定义的概率分布 \( \{p_ i\} \)(例如均匀分布),随机选取一个块索引 \( i_ k \)。 计算部分梯度 :计算目标函数在当前迭代点 \( x^{(k)} \) 处关于被选中块 \( i_ k \) 的梯度:\( g_ {i_ k} = \nabla_ {i_ k} f(x^{(k)}) \)。 更新选中块 :沿着该块梯度的负方向(可能带有步长)进行更新: \[ x_ {i_ k}^{(k+1)} = x_ {i_ k}^{(k)} - \eta_ k \cdot g_ {i_ k} \] 其中,\( \eta_ k > 0 \) 是步长(学习率)。步长可以是一个固定值,也可以根据块 Lipschitz 常数 \( L_ {i_ k} \) 自适应选择。 最优步长选择(理论保证) :如果我们已知每个块的 Lipschitz 常数 \( L_ i \),通常可以设置步长为 \( \eta_ k = 1 / L_ {i_ k} \)。这相当于在选中的块上执行一次精确的 块坐标下降 (对于二次函数,是最优步长)。 保持其他块不变 :对于所有 \( j \neq i_ k \),令 \( x_ j^{(k+1)} = x_ j^{(k)} \)。 迭代计数 :\( k \leftarrow k + 1 \)。 步骤3:输出 输出最后一次迭代的结果 \( x^{(k)} \) 作为近似最优解。有时也会输出所有迭代的平均值或历史最优值。 4. 一个直观的例子与解释 假设目标函数是 \( f(x, y, z) = x^2 + 2y^2 + 3z^2 + xy + yz \)(这是一个简单的凸二次函数)。我们将三个变量 \( x, y, z \) 分别视为三个块(\( M=3 \))。 全梯度下降 :每次迭代需要计算三个偏导数:\( \frac{\partial f}{\partial x} = 2x + y \),\( \frac{\partial f}{\partial y} = 4y + x + z \),\( \frac{\partial f}{\partial z} = 6z + y \)。然后同时更新 \( x, y, z \)。 随机块坐标梯度下降 : 假设第 \( k \) 次迭代随机选中了块 \( y \)(即 \( i_ k = 2 \))。 我们只计算关于 \( y \) 的偏导数:\( g_ 2 = \frac{\partial f}{\partial y} (x^{(k)}, y^{(k)}, z^{(k)}) = 4y^{(k)} + x^{(k)} + z^{(k)} \)。 然后只更新 \( y \):\( y^{(k+1)} = y^{(k)} - \eta \cdot g_ 2 \),而 \( x^{(k+1)} = x^{(k)} \),\( z^{(k+1)} = z^{(k)} \)。 下次迭代可能选到不同的块。平均来看,每次迭代只需要计算 一个 偏导数,计算量是全梯度下降的 \( 1/3 \)。 5. 收敛性分析(关键思想) RBCGD的收敛性证明通常依赖于以下观察: 期望下降(Progress in Expectation) :由于每一步是随机选择块,我们关注每次迭代后目标函数值的 期望下降 。数学上可以证明,在凸且梯度满足Lipschitz连续的条件下,存在步长策略(如 \( \eta = 1/L_ {\max} \) 或 \( \eta = 1/L_ {i_ k} \)),使得: \[ \mathbb{E}[ f(x^{(k+1)}) | x^{(k)}] \le f(x^{(k)}) - \frac{\eta}{2} \| \nabla f(x^{(k)}) \|^2_ {\text{weighted}} \] 这里的期望是对随机选择的块 \( i_ k \) 取的,加权范数与采样概率 \( p_ i \) 和 Lipschitz 常数 \( L_ i \) 有关。 收敛速率 :对于 凸且光滑 的 \( f \),RBCGD可以达到 \( O(1/k) \) 的次线性收敛速率(对于非强凸函数),或者 线性收敛速率 (对于强凸函数)。具体来说: 若 \( f \) 是 \( \mu \)-强凸的,且采用适当步长,则: \[ \mathbb{E}[ f(x^{(k)}) - f(x^ )] \le (1 - c)^k [ f(x^{(0)}) - f(x^ ) ] \] 其中 \( c \) 是一个依赖于 \( \mu, L_ i, p_ i \) 的正常数(小于1)。\( x^* \) 是最优解。 收敛速率虽然可能比全梯度下降慢(体现在常数 \( c \) 上),但 单次迭代成本显著降低 ,使得在达到相同精度时,总的计算时间(或浮点运算次数)往往更少。这是随机化/坐标类算法的核心优势。 6. 算法变体与扩展 随机块坐标下降(RBCD) :对于 复合优化问题 \( \min_ x f(x) + g(x) \),其中 \( g(x) \) 可能是非光滑但可分离的(如L1正则项 \( \lambda \|x\| 1 \)),可以将梯度下降步骤替换为 近端梯度更新 。当选中第 \( i \) 块时,更新为: \[ x_ i^{(k+1)} = \text{prox} {\eta g_ i}(x_ i^{(k)} - \eta \nabla_ i f(x^{(k)})) \] 其中 \( \text{prox} \) 是近端算子。这被称为 随机块坐标近端梯度下降 。 块采样策略 :除了均匀采样,还可以采用与块Lipschitz常数 \( L_ i \) 成比例的概率 \( p_ i \propto L_ i \),这有时能带来更好的理论收敛常数。 多块/批量更新 :每次迭代随机选择多个块(一个小批量)同时更新,可以减小方差,有时能加速收敛。 加速变体 :借鉴Nesterov动量的思想,有随机块坐标梯度下降的加速版本(如APPROX、APCG算法),对于强凸问题可以达到更优的 \( O((1-\sqrt{\mu/L_ {\text{avg}}})^k) \) 线性收敛速率。 总结 随机化块坐标梯度下降 通过将高维优化问题分解为对低维块的随机、序列更新,巧妙地平衡了 计算效率 与 收敛保证 。其核心在于 利用问题的结构(块可分性)和随机采样的期望下降性质 。在处理大规模机器学习问题(如逻辑回归、线性回归、深度学习中的部分参数更新)时,它是一种非常有效的基础工具。理解其从随机块选择、部分梯度计算到收敛性分析的全过程,是掌握现代大规模优化算法的关键一步。