前面讲了很多具体的算法,比如梯度、次梯度、近似点梯度、加速近似点梯度、PPA、DR方法、ADMM、ALM等,对这些方法的迭代过程有了一些了解。这一节则主要是针对算法的收敛性进行分析,试图从一个更加抽象的层面,利用不动点迭代的思想,把上面的算法综合起来,给一个比较 general 的收敛性分析方法。
1. 什么是不动点?
对于希尔伯特空间(Hilbert space) H \mathcal{H} H,定义了内积 < ⋅ , ⋅ > \left<\cdot,\cdot\right> ⟨⋅,⋅⟩ 和 范数 ∥ ⋅ ∥ \|\cdot\| ∥⋅∥(可以借助于 R 2 \R^2 R2 来想象)。算子 T : H → H T:\mathcal{H}\to\mathcal{H} T:H→H(或者是 C → C C\to C C→C, C C C 为 H \mathcal{H} H 的闭子集)。那么算子 T T T 的不动点集合就定为
F i x T : = { x ∈ H : x = T ( x ) } \mathrm{Fix} T:=\{x \in \mathcal{H}: x=T(x)\} FixT:={
x∈H:x=T(x)}
如果不动点集合非空,想要研究的是不动点迭代 x k + 1 ← T ( x k ) x^{k+1}\leftarrow T(x^k) xk+1←T(xk) 的收敛性。为了简便,常把 T ( x ) T(x) T(x) 写为 T x Tx Tx。
为什么要研究不动点迭代呢?因为前面我们讲的算法里面很多都可以表示为这种形式。
例子 1(GD) :对于无约束优化 min f ( x ) \min f(x) minf(x),不假设 f f f 一定是凸的。如果有 ∇ f ( x ⋆ ) = 0 \nabla f(x^\star)=0 ∇f(x⋆)=0,那么 x ⋆ x^\star x⋆ 被称为驻点(stationary point)。梯度下降做的什么事呢? x k + 1 = x k − γ ∇ f ( x k ) x^{k+1}=x^k-\gamma \nabla f(x^k) xk+1=xk−γ∇f(xk),所以实际上算子 T T T 为
T : = I − γ ∇ f T:=I-\gamma \nabla f T:=I−γ∇f
我们要找的最优解 x ⋆ x^\star x⋆ 满足 ∇ f ( x ⋆ ) = 0 ⟹ x ⋆ = T ( x ⋆ ) \nabla f(x^\star)=0\Longrightarrow x^\star=T(x^\star) ∇f(x⋆)=0⟹x⋆=T(x⋆),因此我们要找的就是 T T T 的不动点。
例子 2(PG1) :对于有约束优化 min f ( x ) , s.t. x ∈ C \min f(x),\text{ s.t. }x\in C minf(x), s.t. x∈C,假设 f f f 为正常的闭凸函数, C C C 为非空闭凸集。对于这个带约束的优化问题,我们可以做完一步梯度下降以后再做个投影 x k + 1 ← proj C ( x k − γ ∇ f ( x k ) ) x^{k+1}\leftarrow \operatorname{proj}_{C}(x^k-\gamma \nabla f(x^k)) xk+1←projC(xk−γ∇f(xk)),所以有
T : = proj C ( I − γ ∇ f ) T:=\operatorname{proj}_{C}(I-\gamma \nabla f) T:=projC(I−γ∇f)
而我们要找的最优解需要满足 ⟨ ∇ f ( x ⋆ ) , x − x ⋆ ⟩ ≥ 0 ∀ x ∈ C ⟺ 0 ∈ ∇ f ( x ⋆ ) + ∂ δ C ( x ⋆ ) \left\langle\nabla f\left(x^{\star}\right), x-x^{\star}\right\rangle \geq 0 \quad \forall x \in C \iff 0\in \nabla f(x^\star)+\partial \delta_C(x^\star) ⟨∇f(x⋆),x−x⋆⟩≥0∀x∈C⟺0∈∇f(x⋆)+∂δC(x⋆),这实际上还是在找 T T T 的不动点。
例子 3(PG2) :上面向 C C C 的投影实际上也是在算 prox \text{prox} prox 算子。对于优化问题 min f ( x ) + g ( x ) \min f(x)+g(x) minf(x)+g(x) 我们要解的方程是
0 ∈ ∇ f ( x ) + ∂ g ( x ) ⟺ 0 ∈ x + ∇ f ( x ) − x + ∂ g ( x ) ⟺ ( I − ∇ f ) ( x ) ∈ ( I + ∂ g ) ( x ) ⟺ x = ( I + ∂ g ) − 1 ( I − ∇ f ) ( x ) \begin{array}{c} 0\in \nabla f(x)+\partial g(x) \iff 0\in x+\nabla f(x)-x+\partial g(x) \\ \iff (I-\nabla f)(x)\in (I+\partial g)(x) \\ \iff x=(I+\partial g)^{-1}(I-\nabla f)(x) \end{array} 0∈∇f(x)+∂g(x)⟺0∈x+∇f(x)−x+∂g(x)⟺(I−∇f)(x)∈(I+∂g)(x)⟺x=(I+∂g)−1(I−∇f)(x)
上一节讲到了 ( I + ∂ g ) − 1 (I+\partial g)^{-1} (I+∂g)−1 就是 prox \text{prox} prox 算子,所以这个不动点迭代就等价于近似点梯度方法。
例子 4(KKT) :对于优化问题
min f 0 ( x ) s.t. g ( x ) ≤ 0 h ( x ) = 0 \begin{aligned} \min\quad& f_0(x) \\ \text{s.t.}\quad& g(x)\le0 \\ & h(x)=0 \end{aligned} mins.t.f0(x)g(x)≤0h(x)=0
拉格朗日函数为 L ( x , λ , ν ) = f 0 ( x ) + λ T g ( x ) + ν T h ( x ) , λ ≥ 0 L(x,\lambda,\nu)=f_0(x)+\lambda^T g(x)+\nu^T h(x),\lambda\ge0 L(x,λ,ν)=