次梯度和次微分#
对于一个凸函数 f,如果在某点 x 处不可微分,我们可以定义一个次梯度(subgradient)来代替梯度。次梯度是一个向量,满足以下条件:
f(y)≥f(x)+gT(y−x),∀y其中 g 是 f 在 x 处的一个次梯度。次梯度的集合称为次微分(subdifferential),记为 ∂f(x)。次微分是凸的,非空的,和紧的
次梯度和可微的关系:
- 如果 f 在 x 处可微分,那么次微分 ∂f(x) 只有一个元素,即梯度 ∇f(x)。
- 如果 f 在 x 处不可微分,那么次微分 ∂f(x) 包含多个次梯度。
有如下两个等价:
- 凸集上的可微函数 f 为凸函数 ⟺ 对于任意 x,y,都有 f(y)≥f(x)+∇f(x)T(y−x)。
- 可微函数是凸函数 ⟺ 定义与是凸集,且其梯度是单调的,即 ∀x,y,都有 (∇f(x)−∇f(y))T(x−y)≥0。
次梯度优化#
关键在于如何更新。不能用传统的 x(k+1)=x(k)−λ(k)∣∣g(k)∣∣g(k) 因为次梯度是随便选的,有可能是上升方向。
需要用投影法:
x(k+1)=x(k)−λ(k)∣∣g(k)∣∣g(k)x(k+1)=PX(x(k+1))也就是把 x(k+1) 投影到可行域 X 上,得到 x(k+1)。
算法流程

关于步长的定理:
- 如果 λ(k) 满足 ∑k=1∞λ(k)=∞ 和 limk→∞λ(k)=0,则次梯度方法要么有限步数内找到最优解,要么生成一个收敛于最优解的序列。