# 次梯度

# 定义

  1. 次梯度的定义

    gg 是函数 ff(不一定凸)在点 xx 处的次梯度(subgradient),如果对所有 yy 都有:

    f(y)f(x)+gT(yx)f(y) \geq f(x) + g^T(y - x)

    几何解释

    • (g,1)(g, -1) 在点 (x,f(x))(x, f(x)) 处支撑 ff 的上图(epigraph)
    • f(x)+gT(yx)f(x) + g^T(y - x)ff 的全局(仿射)下估计
  2. 次微分(Subdifferential)

    函数 ff 在点 xx 处的所有次梯度的集合称为 ffxx 处的次微分,记为 f(x)\partial f(x),它是一个闭凸集(可能为空)。

    重要性质

    • 如果 ff 是凸函数,则 f(x)\partial f(x) 非空
    • 如果 ffxx 处可微,则 f(x)={f(x)}\partial f(x) = \{\nabla f(x)\}
    • 如果 f(x)={g}\partial f(x) = \{g\}(单点集),则 ffxx 处可微且 g=f(x)g = \nabla f(x)
  3. 次梯度计算

    弱次梯度计算:找到一个次梯度 gf(x)g \in \partial f(x)

    强次梯度计算:找到整个次微分 f(x)\partial f(x),即 ffxx 处的所有次梯度

    许多不可微凸优化的算法在每步只需要一个次梯度,因此弱计算就足够了。但某些算法、最优性条件等需要整个次微分。

  4. 次梯度运算法则

    • 缩放(αf)=αf\partial (\alpha f) = \alpha \partial f,如果 α>0\alpha > 0
    • 加法(f1+f2)=f1+f2\partial (f_1 + f_2) = \partial f_1 + \partial f_2(右边是集合的加法)
    • 变量的仿射变换:如果 g(x)=f(Ax+b)g(x) = f(Ax + b),则 g(x)=ATf(Ax+b)\partial g(x) = A^T \partial f(Ax + b)
    • 有限点式最大值:如果 f=maxi=1,,mfif = \max_{i=1,\ldots,m} f_i,则

      f(x)=Co{fi(x)fi(x)=f(x)}\partial f(x) = \operatorname{Co} \bigcup \left\{\partial f_i(x) \mid f_i(x) = f(x)\right\}

      即,在 xx 处"活跃"函数的次微分的并集的凸包
  5. 例子

    考虑 f(x)=xf(x) = |x|

    • x>0x > 0 时,f(x)={1}\partial f(x) = \{1\}
    • x<0x < 0 时,f(x)={1}\partial f(x) = \{-1\}
    • x=0x = 0 时,f(0)=[1,1]\partial f(0) = [-1, 1]

    考虑 f=max{f1,f2}f = \max\{f_1, f_2\},其中 f1f_1f2f_2 是凸且可微的:

    • 如果 f1(x0)>f2(x0)f_1(x_0) > f_2(x_0):唯一次梯度 g=f1(x0)g = \nabla f_1(x_0)
    • 如果 f2(x0)>f1(x0)f_2(x_0) > f_1(x_0):唯一次梯度 g=f2(x0)g = \nabla f_2(x_0)
    • 如果 f1(x0)=f2(x0)f_1(x_0) = f_2(x_0):次梯度形成线段 [f1(x0),f2(x0)][\nabla f_1(x_0), \nabla f_2(x_0)]

# 基于次梯度的最优化条件

  1. 无约束问题的最优性条件

    对于可微凸函数 ff,我们有:

    f(x)=infxf(x)0=f(x)f(x^*) = \inf_x f(x) \quad \Leftrightarrow \quad 0 = \nabla f(x^*)

    推广到不可微凸函数 ff

    f(x)=infxf(x)0f(x)f(x^*) = \inf_x f(x) \quad \Leftrightarrow \quad 0 \in \partial f(x^*)

  2. 证明思路

    xx^* 是最优的当且仅当对所有 xxf(x)f(x)f(x) \geq f(x^*),或等价地:

    f(x)f(x)+0T(xx)对所有 xf(x) \geq f(x^*) + 0^T(x - x^*) \quad \text{对所有 } x

    因此,xx^* 是最优的当且仅当 0f(x)0 \in \partial f(x^*)

  3. 分段线性优化的最优性条件

    对于分段线性优化 f(x)=maxi=1,,m(aiTx+bi)f(x) = \max_{i=1,\ldots,m} (a_i^T x + b_i),次微分为:

    f(x)=Co{aiaiTx+bi=f(x)}\partial f(x) = \operatorname{Co} \{a_i \mid a_i^T x + b_i = f(x)\}

    因此,xx^* 最小化 ff 当且仅当存在 λ\lambda 使得:

    λ0,1Tλ=1,i=1mλiai=0\lambda \geq 0, \quad \mathbf{1}^T \lambda = 1, \quad \sum_{i=1}^{m} \lambda_i a_i = 0

    其中如果 aiTx+bi<f(x)a_i^T x^* + b_i < f(x^*),则 λi=0\lambda_i = 0

# 次梯度法

  1. 基本思想

    次梯度法是梯度下降法在不可微凸函数上的推广。对于无约束问题 minxf(x)\min_x f(x),次梯度法的迭代公式为:

    x(k+1)=x(k)αkg(k)x^{(k+1)} = x^{(k)} - \alpha_k g^{(k)}

    其中 g(k)f(x(k))g^{(k)} \in \partial f(x^{(k)})ffx(k)x^{(k)} 处的次梯度,αk>0\alpha_k > 0 是步长。

  2. 与梯度下降的区别

    • 次梯度方向不一定是下降方向(f(x(k+1))f(x^{(k+1)}) 可能大于 f(x(k))f(x^{(k)})
    • 步长选择更加关键,通常需要满足:

      k=1αk=,k=1αk2<\sum_{k=1}^{\infty} \alpha_k = \infty, \quad \sum_{k=1}^{\infty} \alpha_k^2 < \infty

    • 收敛速度通常较慢,为 O(1/k)O(1/\sqrt{k})O(1/k)O(1/k)
  3. 步长选择策略

    • 固定步长αk=α\alpha_k = \alpha(适用于有界次梯度的情况)
    • 递减步长αk=α0/k\alpha_k = \alpha_0 / \sqrt{k}αk=α0/k\alpha_k = \alpha_0 / k
    • 自适应步长:根据函数值变化调整

# 约束问题的次梯度法

# 原问题的投影次梯度法

  1. 投影次梯度法

    对于约束问题 minxCf(x)\min_{x \in C} f(x),其中 CC 是闭凸集,投影次梯度法的迭代公式为:

    x(k+1)=PC(x(k)αkg(k))x^{(k+1)} = \mathcal{P}_C(x^{(k)} - \alpha_k g^{(k)})

    其中 PC()\mathcal{P}_C(\cdot) 是到集合 CC 的投影算子,g(k)f(x(k))g^{(k)} \in \partial f(x^{(k)})

  2. 投影算子

    投影算子定义为:

    PC(x)=argminyCyx2\mathcal{P}_C(x) = \arg\min_{y \in C} \|y - x\|_2

    对于简单约束集(如盒子约束、球约束、单纯形等),投影算子有解析表达式。

# 对偶问题的投影次梯度法

  1. 对偶问题

    对于原问题:

    minf(x)s.t.Ax=b,xC\begin{array}{l} \min \quad f(x) \\ \text{s.t.} \quad Ax = b, \quad x \in C \end{array}

    对偶问题为:

    maxνg(ν)=infxC(f(x)+νT(Axb))\max_{\nu} \quad g(\nu) = \inf_{x \in C} (f(x) + \nu^T(Ax - b))

  2. 对偶次梯度法

    对偶函数 g(ν)g(\nu) 的次梯度可以通过求解原问题得到。对偶次梯度法的迭代公式为:

    ν(k+1)=ν(k)+αkh(k)\nu^{(k+1)} = \nu^{(k)} + \alpha_k h^{(k)}

    其中 h(k)g(ν(k))h^{(k)} \in \partial g(\nu^{(k)}) 是对偶函数的次梯度。

# 约束优化的次梯度法

  1. 一般约束问题

    对于问题:

    minf(x)s.t.ci(x)0,i=1,,mhj(x)=0,j=1,,p\begin{array}{l} \min \quad f(x) \\ \text{s.t.} \quad c_i(x) \leq 0, \quad i = 1, \ldots, m \\ \quad \quad \quad h_j(x) = 0, \quad j = 1, \ldots, p \end{array}

    可以使用罚函数法或增广拉格朗日法将其转化为无约束或简单约束问题,然后应用次梯度法。

  2. 罚函数方法

    构造罚函数:

    ϕ(x)=f(x)+μi=1mmax(0,ci(x))2+μj=1phj(x)2\phi(x) = f(x) + \mu \sum_{i=1}^{m} \max(0, c_i(x))^2 + \mu \sum_{j=1}^{p} h_j(x)^2

    然后对 ϕ(x)\phi(x) 应用次梯度法,逐步增大罚参数 μ\mu

# 原对偶次梯度法

  1. 基本思想

    原对偶次梯度法同时更新原变量和对偶变量,利用原问题和对偶问题的结构。

  2. 算法框架

    对于问题 minxCf(x)\min_{x \in C} f(x),其对偶为 maxνg(ν)\max_{\nu} g(\nu),原对偶次梯度法同时更新:

    x(k+1)=PC(x(k)αkgx(k))ν(k+1)=ν(k)+αkgν(k)\begin{array}{l} x^{(k+1)} = \mathcal{P}_C(x^{(k)} - \alpha_k g_x^{(k)}) \\ \nu^{(k+1)} = \nu^{(k)} + \alpha_k g_\nu^{(k)} \end{array}

    其中 gx(k)g_x^{(k)}gν(k)g_\nu^{(k)} 分别是原函数和对偶函数的次梯度。

  3. 收敛性

    在适当的步长选择下,原对偶次梯度法可以同时收敛到原问题和对偶问题的最优解。

# 交替方向乘子法(ADMM)

  1. 问题形式

    ADMM 适用于如下形式的问题(ffgg 为凸函数):

    minf(x)+g(z)s.t.Ax+Bz=c\begin{array}{l} \min \quad f(x) + g(z) \\ \text{s.t.} \quad Ax + Bz = c \end{array}

    两个变量集合,目标函数可分离。

  2. 增广拉格朗日函数

    Lρ(x,z,y)=f(x)+g(z)+yT(Ax+Bzc)+ρ2Ax+Bzc22L_{\rho}(x, z, y) = f(x) + g(z) + y^T(Ax + Bz - c) + \frac{\rho}{2}\|Ax + Bz - c\|_2^2

    其中 ρ>0\rho > 0 是惩罚参数,yy 是对偶变量(拉格朗日乘子)。

  3. ADMM 算法

    xk+1:=argminxLρ(x,zk,yk)// x-最小化zk+1:=argminzLρ(xk+1,z,yk)// z-最小化yk+1:=yk+ρ(Axk+1+Bzk+1c)// 对偶更新\begin{array}{l} x^{k+1} := \arg\min_x L_{\rho}(x, z^k, y^k) \quad \text{// $x$-最小化} \\ z^{k+1} := \arg\min_z L_{\rho}(x^{k+1}, z, y^k) \quad \text{// $z$-最小化} \\ y^{k+1} := y^k + \rho(Ax^{k+1} + Bz^{k+1} - c) \quad \text{// 对偶更新} \end{array}

    关键特点

    • 如果对 xxzz 联合最小化,则退化为乘子法
    • 相反,我们执行一次 Gauss-Seidel 方法
    • 由于固定 zz 最小化 xx,反之亦然,我们得到了分离
  4. 最优性条件

    对于可微情况,最优性条件为:

    • 原可行性Ax+Bzc=0Ax + Bz - c = 0
    • 对偶可行性f(x)+ATy=0\nabla f(x) + A^T y = 0g(z)+BTy=0\nabla g(z) + B^T y = 0

    由于 zk+1z^{k+1} 最小化 Lρ(xk+1,z,yk)L_{\rho}(x^{k+1}, z, y^k),我们有:

    0=g(zk+1)+BTyk+ρBT(Axk+1+Bzk+1c)=g(zk+1)+BTyk+1\begin{array}{l} 0 = \nabla g(z^{k+1}) + B^T y^k + \rho B^T(Ax^{k+1} + Bz^{k+1} - c) \\ = \nabla g(z^{k+1}) + B^T y^{k+1} \end{array}

    因此,使用 ADMM 对偶变量更新,(xk+1,zk+1,yk+1)(x^{k+1}, z^{k+1}, y^{k+1}) 满足第二个对偶可行性条件。原可行性和第一个对偶可行性在 kk \to \infty 时达到。

  5. 与乘子法的关系

    乘子法(Method of Multipliers)

    • 使用增广拉格朗日函数来增强对偶上升法的鲁棒性
    • 迭代公式:

      xk+1:=argminxLρ(x,yk)yk+1:=yk+ρ(Axk+1b)\begin{array}{l} x^{k+1} := \arg\min_x L_{\rho}(x, y^k) \\ y^{k+1} := y^k + \rho(Ax^{k+1} - b) \end{array}

    • 优点:在更宽松的条件下收敛(ff 可以不可微、取值为 ++\infty 等)
    • 缺点:二次惩罚项破坏了 xx-更新的分离性,无法进行分解

    ADMM

    • 结合了乘子法的鲁棒性和分解能力
    • 可以看作是"鲁棒的对偶分解"或"可分解的乘子法"
    • 由 Gabay、Mercier、Glowinski、Marrocco 在 1976 年提出
  6. 对偶分解

    如果 ff 是可分离的:

    f(x)=f1(x1)++fN(xN),x=(x1,,xN)f(x) = f_1(x_1) + \cdots + f_N(x_N), \quad x = (x_1, \ldots, x_N)

    LLxx 中可分离:L(x,y)=L1(x1,y)++LN(xN,y)yTbL(x, y) = L_1(x_1, y) + \cdots + L_N(x_N, y) - y^T b,其中 Li(xi,y)=fi(xi)+yTAixiL_i(x_i, y) = f_i(x_i) + y^T A_i x_i

    对偶上升法中的 xx-最小化可以分解为 NN 个独立的最小化:

    xik+1:=argminxiLi(xi,yk)x_i^{k+1} := \arg\min_{x_i} L_i(x_i, y^k)

    这些可以并行执行。

  7. 应用

    ADMM 广泛应用于:

    • 分布式优化
    • 统计学习
    • 图像处理
    • 稀疏优化
    • 机器学习中的大规模优化问题