非线性规划中的交替方向乘子法(Alternating Direction Method of Multipliers, ADMM)基础题
字数 3373 2025-12-20 07:02:40

非线性规划中的交替方向乘子法(Alternating Direction Method of Multipliers, ADMM)基础题

题目描述

考虑以下带线性等式约束的凸优化问题:

\[\min_{x, z} \quad f(x) + g(z) \]

\[ \text{s.t.} \quad Ax + Bz = c \]

其中,\(x \in \mathbb{R}^n\)\(z \in \mathbb{R}^m\)\(A \in \mathbb{R}^{p \times n}\)\(B \in \mathbb{R}^{p \times m}\)\(c \in \mathbb{R}^p\)。函数 \(f: \mathbb{R}^n \to \mathbb{R}\)\(g: \mathbb{R}^m \to \mathbb{R}\) 都是凸函数,但不一定光滑(例如可能包含L1正则项或指示函数)。要求使用交替方向乘子法(ADMM)求解该问题,并解释其每一步的物理意义和更新规则。

解题过程循序渐进讲解

步骤1:理解问题结构与ADMM思想

ADMM是一种旨在将原问题分解为更易求解子问题的算法。它结合了对偶分解(Dual Decomposition)和增广拉格朗日方法(Augmented Lagrangian Method)的优点。

  • 原问题:由于约束 \(Ax + Bz = c\) 将变量 \(x\)\(z\) 耦合在一起,直接求解可能困难。
  • 核心思想:通过引入对偶变量(拉格朗日乘子)和增广项,将问题分解为交替更新 \(x\)\(z\) 和乘子的三个子问题。每个子问题只依赖于部分变量,从而简化计算。

步骤2:构造增广拉格朗日函数

首先,定义拉格朗日乘子向量 \(y \in \mathbb{R}^p\)。增广拉格朗日函数为:

\[L_\rho(x, z, y) = f(x) + g(z) + y^T (Ax + Bz - c) + \frac{\rho}{2} \|Ax + Bz - c\|_2^2 \]

其中:

  • \(y^T (Ax + Bz - c)\) 是标准拉格朗日项。
  • \(\frac{\rho}{2} \|Ax + Bz - c\|_2^2\) 是增广项,\(\rho > 0\) 为惩罚参数。
  • 增广项的作用:改善收敛性,使函数在约束违反时增加二次惩罚,同时保持凸性。

步骤3:ADMM迭代格式

ADMM通过以下三步交替更新变量(第 \(k\) 次迭代):

  1. 更新 \(x\)

\[ x^{k+1} = \arg\min_{x} L_\rho(x, z^k, y^k) \]

即固定 \(z^k\)\(y^k\),最小化关于 \(x\) 的部分:

\[ x^{k+1} = \arg\min_{x} \left( f(x) + \frac{\rho}{2} \|Ax + Bz^k - c + \frac{1}{\rho} y^k \|_2^2 \right) \]

这里利用了配方技巧:将增广拉格朗日函数中的线性项与二次项合并为平方形式(忽略与 \(x\) 无关的常数)。

  1. 更新 \(z\)

\[ z^{k+1} = \arg\min_{z} L_\rho(x^{k+1}, z, y^k) \]

固定 \(x^{k+1}\)\(y^k\),最小化关于 \(z\) 的部分:

\[ z^{k+1} = \arg\min_{z} \left( g(z) + \frac{\rho}{2} \|Ax^{k+1} + Bz - c + \frac{1}{\rho} y^k \|_2^2 \right) \]

  1. 更新对偶变量 \(y\)

\[ y^{k+1} = y^k + \rho (Ax^{k+1} + Bz^{k+1} - c) \]

这是对偶变量的梯度上升步骤,步长为 \(\rho\)。物理意义:根据当前约束违反量 \(Ax^{k+1} + Bz^{k+1} - c\) 调整乘子,以逐步满足等式约束。

步骤4:具体化例子便于理解

假设一个简单实例:

  • \(f(x) = \frac{1}{2} \|x\|_2^2\)(凸且光滑)
  • \(g(z) = \lambda \|z\|_1\)(凸但不光滑,例如L1正则化,\(\lambda > 0\)
  • 约束:\(x - z = 0\)(即 \(A = I\)\(B = -I\)\(c = 0\)

此时增广拉格朗日函数为:

\[L_\rho(x, z, y) = \frac{1}{2} \|x\|_2^2 + \lambda \|z\|_1 + y^T (x - z) + \frac{\rho}{2} \|x - z\|_2^2 \]

ADMM迭代变为:

  1. 更新 \(x\)

\[ x^{k+1} = \arg\min_{x} \left( \frac{1}{2} \|x\|_2^2 + \frac{\rho}{2} \|x - z^k + \frac{1}{\rho} y^k \|_2^2 \right) \]

这是一个二次函数最小化问题,可直接求导得闭式解:

\[ x^{k+1} = \frac{\rho (z^k - \frac{1}{\rho} y^k)}{1 + \rho} = \frac{\rho z^k - y^k}{1 + \rho} \]

  1. 更新 \(z\)

\[ z^{k+1} = \arg\min_{z} \left( \lambda \|z\|_1 + \frac{\rho}{2} \|x^{k+1} - z + \frac{1}{\rho} y^k \|_2^2 \right) \]

这是一个Lasso问题,其解可通过软阈值(soft-thresholding)算子给出:

\[ z^{k+1} = S_{\lambda / \rho} \left( x^{k+1} + \frac{1}{\rho} y^k \right) \]

其中软阈值算子定义为:\(S_\kappa(a) = \text{sign}(a) \max(|a| - \kappa, 0)\)(按分量作用)。

  1. 更新 \(y\)

\[ y^{k+1} = y^k + \rho (x^{k+1} - z^{k+1}) \]

步骤5:收敛条件与参数选择

  • 停止准则:通常基于原始残差 \(r^k = Ax^k + Bz^k - c\) 和对偶残差 \(s^k = \rho A^T B (z^k - z^{k-1})\) 的范数是否小于给定容差。
    常用条件:

\[ \|r^k\|_2 \leq \epsilon^{\text{pri}} \quad \text{且} \quad \|s^k\|_2 \leq \epsilon^{\text{dual}} \]

其中 \(\epsilon^{\text{pri}}\)\(\epsilon^{\text{dual}}\) 根据问题尺度设定。

  • 参数 \(\rho\):影响收敛速度。可固定(如 \(\rho = 1\))或采用自适应策略(根据残差比例调整)。

步骤6:算法总结与特点

  1. 分解性:ADMM将耦合问题分解为交替求解 \(x\)\(z\) 的子问题,每个子问题可能因 \(f\)\(g\) 的特殊结构而有高效解法(如近端算子、闭式解等)。
  2. 适用性:尤其适合目标函数可分离且约束为线性的凸优化问题,广泛应用于机器学习、信号处理、分布式优化等领域。
  3. 收敛性:对于凸问题,在较温和条件下(如 \(f, g\) 闭凸且拉格朗日函数有鞍点),ADMM能保证收敛到全局最优解。

通过以上步骤,你可以理解ADMM的基本框架、迭代更新规则及其在实际简单例子中的应用。

非线性规划中的交替方向乘子法(Alternating Direction Method of Multipliers, ADMM)基础题 题目描述 考虑以下带线性等式约束的凸优化问题: \[ \min_ {x, z} \quad f(x) + g(z) \] \[ \text{s.t.} \quad Ax + Bz = c \] 其中,\( x \in \mathbb{R}^n \),\( z \in \mathbb{R}^m \),\( A \in \mathbb{R}^{p \times n} \),\( B \in \mathbb{R}^{p \times m} \),\( c \in \mathbb{R}^p \)。函数 \( f: \mathbb{R}^n \to \mathbb{R} \) 和 \( g: \mathbb{R}^m \to \mathbb{R} \) 都是凸函数,但不一定光滑(例如可能包含L1正则项或指示函数)。要求使用交替方向乘子法(ADMM)求解该问题,并解释其每一步的物理意义和更新规则。 解题过程循序渐进讲解 步骤1:理解问题结构与ADMM思想 ADMM是一种旨在将原问题分解为更易求解子问题的算法。它结合了对偶分解(Dual Decomposition)和增广拉格朗日方法(Augmented Lagrangian Method)的优点。 原问题 :由于约束 \( Ax + Bz = c \) 将变量 \( x \) 和 \( z \) 耦合在一起,直接求解可能困难。 核心思想 :通过引入对偶变量(拉格朗日乘子)和增广项,将问题分解为交替更新 \( x \)、\( z \) 和乘子的三个子问题。每个子问题只依赖于部分变量,从而简化计算。 步骤2:构造增广拉格朗日函数 首先,定义拉格朗日乘子向量 \( y \in \mathbb{R}^p \)。增广拉格朗日函数为: \[ L_ \rho(x, z, y) = f(x) + g(z) + y^T (Ax + Bz - c) + \frac{\rho}{2} \|Ax + Bz - c\|_ 2^2 \] 其中: \( y^T (Ax + Bz - c) \) 是标准拉格朗日项。 \( \frac{\rho}{2} \|Ax + Bz - c\|_ 2^2 \) 是增广项,\( \rho > 0 \) 为惩罚参数。 增广项的作用:改善收敛性,使函数在约束违反时增加二次惩罚,同时保持凸性。 步骤3:ADMM迭代格式 ADMM通过以下三步交替更新变量(第 \( k \) 次迭代): 更新 \( x \) : \[ x^{k+1} = \arg\min_ {x} L_ \rho(x, z^k, y^k) \] 即固定 \( z^k \) 和 \( y^k \),最小化关于 \( x \) 的部分: \[ x^{k+1} = \arg\min_ {x} \left( f(x) + \frac{\rho}{2} \|Ax + Bz^k - c + \frac{1}{\rho} y^k \|_ 2^2 \right) \] 这里利用了配方技巧:将增广拉格朗日函数中的线性项与二次项合并为平方形式(忽略与 \( x \) 无关的常数)。 更新 \( z \) : \[ z^{k+1} = \arg\min_ {z} L_ \rho(x^{k+1}, z, y^k) \] 固定 \( x^{k+1} \) 和 \( y^k \),最小化关于 \( z \) 的部分: \[ z^{k+1} = \arg\min_ {z} \left( g(z) + \frac{\rho}{2} \|Ax^{k+1} + Bz - c + \frac{1}{\rho} y^k \|_ 2^2 \right) \] 更新对偶变量 \( y \) : \[ y^{k+1} = y^k + \rho (Ax^{k+1} + Bz^{k+1} - c) \] 这是对偶变量的梯度上升步骤,步长为 \( \rho \)。物理意义:根据当前约束违反量 \( Ax^{k+1} + Bz^{k+1} - c \) 调整乘子,以逐步满足等式约束。 步骤4:具体化例子便于理解 假设一个简单实例: \( f(x) = \frac{1}{2} \|x\|_ 2^2 \)(凸且光滑) \( g(z) = \lambda \|z\|_ 1 \)(凸但不光滑,例如L1正则化,\( \lambda > 0 \)) 约束:\( x - z = 0 \)(即 \( A = I \),\( B = -I \),\( c = 0 \)) 此时增广拉格朗日函数为: \[ L_ \rho(x, z, y) = \frac{1}{2} \|x\|_ 2^2 + \lambda \|z\|_ 1 + y^T (x - z) + \frac{\rho}{2} \|x - z\|_ 2^2 \] ADMM迭代变为: 更新 \( x \) : \[ x^{k+1} = \arg\min_ {x} \left( \frac{1}{2} \|x\|_ 2^2 + \frac{\rho}{2} \|x - z^k + \frac{1}{\rho} y^k \|_ 2^2 \right) \] 这是一个二次函数最小化问题,可直接求导得闭式解: \[ x^{k+1} = \frac{\rho (z^k - \frac{1}{\rho} y^k)}{1 + \rho} = \frac{\rho z^k - y^k}{1 + \rho} \] 更新 \( z \) : \[ z^{k+1} = \arg\min_ {z} \left( \lambda \|z\| 1 + \frac{\rho}{2} \|x^{k+1} - z + \frac{1}{\rho} y^k \| 2^2 \right) \] 这是一个Lasso问题,其解可通过软阈值(soft-thresholding)算子给出: \[ z^{k+1} = S {\lambda / \rho} \left( x^{k+1} + \frac{1}{\rho} y^k \right) \] 其中软阈值算子定义为:\( S \kappa(a) = \text{sign}(a) \max(|a| - \kappa, 0) \)(按分量作用)。 更新 \( y \) : \[ y^{k+1} = y^k + \rho (x^{k+1} - z^{k+1}) \] 步骤5:收敛条件与参数选择 停止准则 :通常基于原始残差 \( r^k = Ax^k + Bz^k - c \) 和对偶残差 \( s^k = \rho A^T B (z^k - z^{k-1}) \) 的范数是否小于给定容差。 常用条件: \[ \|r^k\|_ 2 \leq \epsilon^{\text{pri}} \quad \text{且} \quad \|s^k\|_ 2 \leq \epsilon^{\text{dual}} \] 其中 \( \epsilon^{\text{pri}} \) 和 \( \epsilon^{\text{dual}} \) 根据问题尺度设定。 参数 \( \rho \) :影响收敛速度。可固定(如 \( \rho = 1 \))或采用自适应策略(根据残差比例调整)。 步骤6:算法总结与特点 分解性 :ADMM将耦合问题分解为交替求解 \( x \) 和 \( z \) 的子问题,每个子问题可能因 \( f \) 或 \( g \) 的特殊结构而有高效解法(如近端算子、闭式解等)。 适用性 :尤其适合目标函数可分离且约束为线性的凸优化问题,广泛应用于机器学习、信号处理、分布式优化等领域。 收敛性 :对于凸问题,在较温和条件下(如 \( f, g \) 闭凸且拉格朗日函数有鞍点),ADMM能保证收敛到全局最优解。 通过以上步骤,你可以理解ADMM的基本框架、迭代更新规则及其在实际简单例子中的应用。