当前位置: 首页 > news >正文

凸优化系列——First-order method

这篇博客系统地介绍了梯度下降法在凸优化中的原理与应用,涵盖了算法的推导动机、步长选择策略(如回溯线搜索与精确线搜索)、收敛性分析(包括Lipschitz光滑条件与强凸情形下的收敛速率),并进一步拓展到非凸优化中的表现。同时,文章还引入了次梯度的概念,解释其在非可导凸函数中的作用。通过图示与推导相结合的方式,读者可以更直观地理解一阶优化方法的核心思想与数学基础,为后续深入学习优化算法打下坚实基础。

Gradient Descent

Consider unconstrained, smooth convex optimization
min ⁡ x f ( x ) \min_x f(x) xminf(x)
That is f f f is convex and differentiable with dom ( f ) = R n \text{dom}(f)=\mathbb{R}^n dom(f)=Rn. Denote optimal criterion value by f ∗ = min ⁡ x f ( x ) f^* = \min_x f(x) f=minxf(x) and a solution by x ∗ x^* x

梯度下降法: choose initial point x ( 0 ) ∈ R n x^{(0)}\in \mathbb{R}^n x(0)Rn, repeat:
x ( k + 1 ) = x ( k ) − t k ∇ x f ( x ( k ) ) x^{(k+1)} = x^{(k)}-t_k\nabla_xf(x^{(k)}) x(k+1)=x(k)tkxf(x(k))
Why? 写成上述的方式呢?

首先对 f ( x ) f(x) f(x)在x 处展开(二阶近似):
f ( y ) = f ( x ) + ∇ f ( x ) ( y − x ) + 1 2 t ∣ ∣ y − x ∣ ∣ 2 2 f(y)= f(x)+\nabla f(x) (y-x)+ \frac{1}{2t}||y-x||_2^2 f(y)=f(x)+f(x)(yx)+2t1∣∣yx22

这里需要注意一下,此处展开不是标准的二阶泰勒展开,因为这里用 1 t I \frac{1}{t}I t1I替代了原始的Hession 矩阵 ∇ 2 f ( x ) \nabla^2f(x) 2f(x)

原始的二阶泰勒展开应该是:
f ( y ) = f ( x ) + ∇ f ( x ) ( y − x ) + 1 2 ( y − x ) T ∇ 2 f ( x ) ( y − x ) f(y) = f(x) + \nabla f(x)(y-x)+\frac{1}{2}(y-x)^T\nabla^2f(x)(y-x) f(y)=f(x)+f(x)(yx)+21(yx)T2f(x)(yx)

Choose next point y = x + y=x^+ y=x+ to minimize quadratic approximation:

因为二阶近似后为凸函数,可以直接求导之后取零即可得到对应的最小值:
∇ f ( y ) = ∇ f ( x ) + 1 t ( y − x ) = 0 y = x − t ⋅ ∇ f ( x ) \nabla f(y) = \nabla f(x)+\frac{1}{t}(y-x)=0\\ y=x-t\cdot\nabla f(x) f(y)=f(x)+t1(yx)=0y=xtf(x)
进一步就可以写成如下的形式:
x + = x − t ∇ f ( x ) x^+ = x-t\nabla f(x) x+=xtf(x)

更直观的角度理解一下,如下图所示,就是相当于在x 处进行二阶近似,然后直接取最小值作为下一个点,而这就是梯度下降的来源:
x + = argmin y f ( y ) = f ( x ) + ∇ f ( x ) T ( y − x ) + 1 2 t ∣ ∣ y − x ∣ ∣ 2 2 x^+ = \text{argmin}_y f(y)=f(x)+\nabla f(x)^T(y-x)+\frac{1}{2t}||y-x||_2^2 x+=argminyf(y)=f(x)+f(x)T(yx)+2t1∣∣yx22

How to choose step sizes

如何选择合适的步长,从而实现更好的梯度下降,太大:出现震荡, 太小:更新步骤太多。

  1. Backtracking interperation

One way to adaptively choose the step size if to use backtracking line search:

  • First fix parameters 0 < β < 1 and 0 < α ≤ 1 2 0 < \beta<1 \quad \text{and}\quad 0<\alpha\leq\frac{1}{2} 0<β<1and0<α21
  • At each iteration, start with t = t init t=t_{\text{init}} t=tinit, and while

f ( x − t ∇ f ( x ) ) > f ( x ) − α t ∣ ∣ ∇ f ( x ) ∣ ∣ 2 2 f(x-t\nabla f(x)) > f(x)-\alpha t||\nabla f(x)||_2^2 f(xtf(x))>f(x)αt∣∣∇f(x)22

​ shrink t = β t . t=\beta t. t=βt. Else perfrom gradient descent update
x + = x − t ∇ f ( x ) x^+ = x-t\nabla f(x) x+=xtf(x)

  1. Exact line search

We also choose step to do the best we can along direction of negative gradient, called exact line search:
t = argmin s ≥ 0 f ( x − s ∇ f ( x ) ) t = \text{argmin}_{s\geq0} f(x-s\nabla f(x)) t=argmins0f(xsf(x))

Convergence analysis

首先介绍一下Lipschitz continuous: 是一种比连续更强的性质。

首先如果函数 f f f 满足L-Lipschitz continuous,如果f 是可微的,那对应的 ∣ ∣ ∇ f ( x ) ∣ ∣ p ≤ L ||\nabla f(x)||_p \leq L ∣∣∇f(x)pL,或者说原函数值的变化是有上界的,可以表示为:
∣ ∣ f ( y ) − f ( x ) ∣ ∣ 2 ≤ L ∣ ∣ x − y ∣ ∣ 2 for any  x , y ||f(y)-f(x)||_2 \leq L||x-y||_2 \quad \text{for any } x,y ∣∣f(y)f(x)2L∣∣xy2for any x,y
如果 ∇ f \nabla f f满足L-Lipschitz continuous,对应为L-smooth,如果f 是二阶可导的,对应的Hession 矩阵的范数是有界的,或者说函数的弯曲程度有限的,不会突然弯太厉害。 这种肯定是比光滑smooth 更强
∣ ∣ ∇ f ( y ) − ∇ f ( x ) ∣ ∣ p ≤ L ∣ ∣ y − x ∣ ∣ p for any  x , y ||\nabla f(y)-\nabla f(x)||_p \leq L||y-x||_p \quad \text{for any }x,y ∣∣∇f(y)f(x)pL∣∣yxpfor any x,y
可以表示为: ∣ ∣ ∇ 2 f ( x ) ∣ ∣ p ≤ L ||\nabla^2 f(x)||_p \leq L ∣∣2f(x)pL 或者也可以表示为: ∇ 2 f ( x ) ⪯ L I \nabla^2 f(x) \preceq LI 2f(x)LI

∇ 2 f ( x ) ⪯ L I \nabla^2f(x)\preceq LI 2f(x)LI 可以表示为 L I − ∇ 2 f ( x ) ⪰ 0 LI-\nabla^2f(x) \succeq0 LI2f(x)0,说明对应的特征值不大于L,给了曲率的一个上界。
f ( y ) = f ( x ) + ∇ f ( x ) ( y − x ) + ∇ 2 f ( x ) 2 ∣ ∣ y − x ∣ ∣ 2 2 ≤ f ( x ) + ∇ f ( x ) ( y − x ) + L 2 ∣ ∣ y − x ∣ ∣ 2 2 f(y)=f(x)+\nabla f(x)(y-x)+\frac{\nabla^2f(x)}{2}||y-x||_2^2 \leq f(x)+ \nabla f(x)(y-x)+\frac{L}{2}||y-x||_2^2 f(y)=f(x)+f(x)(yx)+22f(x)∣∣yx22f(x)+f(x)(yx)+2L∣∣yx22
所以一阶导数(Jacobi)判断是函数的变化速率,而二阶导数(Hession)判断函数的曲率(弯曲的程度)或者也可以理解为梯度的变化程度。

Theorem: Gradient descent with fixed step size t ≤ 1 / L t\leq 1/L t1/L satisfies
f ( x ( k ) ) − f ∗ ≤ ∣ ∣ x ( 0 ) − x ∗ ∣ ∣ 2 2 2 t k f(x^{(k)})-f^* \leq \frac{||x^{(0)}-x^*||_2^2}{2tk} f(x(k))f2tk∣∣x(0)x22

这样就可以把收敛速率叫做: O ( 1 / k ) \mathcal{O}(1/k) O(1/k). O ( 1 / ϵ ) \mathcal{O}(1/\epsilon) O(1/ϵ)

Analysis for strong convexity

Reminder:strong convexity of f f f means f ( x ) − m 2 ∣ ∣ x ∣ ∣ 2 2 f(x)-\frac{m}{2}||x||_2^2 f(x)2m∣∣x22 is convex for some m > 0 m >0 m>0 (When twice differentiable: ∇ 2 f ( x ) ⪰ m I \nabla^2f(x)\succeq mI 2f(x)mI)

强凸证明f(x)的曲率要比二次函数还要大,要找到一个曲率的下界,例如: m-strongly convex \text{m-strongly convex} m-strongly convex,对应可以表示为:
∇ 2 f ( x ) ⪰ m I \nabla^2 f(x)\succeq mI 2f(x)mI

f ( y ) ≥ f ( x ) + ∇ f ( x ) ( y − x ) + m 2 ∣ ∣ y − x ∣ ∣ 2 2 f(y) \geq f(x)+\nabla f(x)(y-x)+\frac{m}2||y-x||_2^2 f(y)f(x)+f(x)(yx)+2m∣∣yx22

强凸的 ϵ − suboptimal \epsilon-\text{suboptimal} ϵsuboptimal point 的收敛速度为: O ( l o g ( 1 / ϵ ) ) \mathcal{O}(log(1/\epsilon)) O(log(1/ϵ)) ,也被叫做线性收敛,因为目标在log对数坐标下呈现线性。

First-order method: iterative method, which updates x ( k ) x^{(k)} x(k) in
x ( 0 ) + span { ∇ f ( x ( 0 ) ) , ∇ f ( x ( 1 ) ) , . . . , ∇ f ( x ( k − 1 ) ) } x^{(0)} +\text{span}\{\nabla f(x^{(0)}),\nabla f(x^{(1)}),...,\nabla f(x^{(k-1)})\} x(0)+span{f(x(0)),f(x(1)),...,f(x(k1))}
表示在这些梯度张成的 空间里,或者表示为这些梯度的一个线性组合。

对于强凸的函数来说,是可以加速的, O ( 1 / k 2 ) \mathcal{O}(1/k^2) O(1/k2). O ( 1 / ϵ ) \mathcal{O}(1/\sqrt\epsilon) O(1/ϵ )

Rate. O ( 1 / k ) or  O ( 1 / ϵ 2 ) \mathcal{O}(1/\sqrt{k}) \text{ or } \mathcal{O}(1/\epsilon^2) O(1/k ) or O(1/ϵ2)

Analysis for nonconvex case

对于非凸问题来说,local minimize,
∣ ∣ ∇ f ( x ) ∣ ∣ 2 ≤ ϵ ||\nabla f(x)||_2 \leq \epsilon ∣∣∇f(x)2ϵ
在这里插入图片描述

Subgradients

Recall that for convex and differentiable f f f: 凸函数的一阶条件
f ( y ) ≥ f ( x ) + ∇ f ( x ) T ( y − x ) for all  x , y f(y) \geq f(x)+\nabla f(x)^T(y-x)\quad \text{for} \text{ all }x,y f(y)f(x)+f(x)T(yx)for all x,y
A subgradient of a convex function f f f at x x x is any g ∈ R n g \in \mathbb{R}^n gRn such that:
f ( y ) ≥ f ( x ) + g T ( y − x ) for all  y f(y)\geq f(x)+g^T(y-x)\quad \text{for} \text{ all }y f(y)f(x)+gT(yx)for all y

  • 次梯度总是存在,不管原函数是否是可微的。
  • 如果原函数是可微的话,那对应的在 x x x处的次梯度为: g = ∇ f ( x ) g=\nabla f(x) g=f(x)
  • 相同的定义对非凸的函数来说也是同样的定义,但是不一定存在

在这里插入图片描述

对于一个凸函数 f ( x ) f(x) f(x),某点 x 0 x_0 x0处的次梯度集合的定义为:
δ f ( x 0 ) = { g ∈ R n , f ( y ) ≥ f ( x 0 ) + g T ( y − x 0 ) , ∀ y } \delta f(x_0) = \{g \in \mathbb{R}^n, f(y)\geq f(x_0)+g^T(y-x_0),\quad \forall y\} δf(x0)={gRn,f(y)f(x0)+gT(yx0),y}

Consider f ( x ) = max ⁡ { f 1 ( x ) , f 2 ( x ) } f(x) =\max\{f_1(x),f_2(x)\} f(x)=max{f1(x),f2(x)}, for f 1 , f 2 : R n → R f_1,f_2:\mathbb{R}^n \rightarrow \mathbb{R} f1,f2:RnR,convex,differetiable

在这里插入图片描述

Subdifferential 所有在x 处所有次梯度的集合
δ f ( x ) = { g ∣ f ( y ) ≥ f ( x ) + g T ( y − x ) , ∀ y } \delta f(x) = \{g| f(y)\geq f(x)+g^T(y-x),\ \forall y\} δf(x)={gf(y)f(x)+gT(yx), y}
满足以下的性质:

  • not empty (for convex function) 一定不为空,无论是否是可微的
  • δ f ( x ) \delta f(x) δf(x)一定是一个凸集合,满足 ∀ g 1 , g 2 ∈ δ f ( x ) , θ g 1 + ( 1 − θ ) g 2 ∈ δ f ( x ) \forall g_1,g_2 \in \delta f(x), \theta g_1 +(1-\theta)g_2 \in \delta f(x) g1,g2δf(x),θg1+(1θ)g2δf(x)
  • 如果f在x 处是可微的,那对应的次梯度一定就是对应的梯度,只有一个元素
  • 如果 δ f ( x ) \delta f(x) δf(x)只有一个元素,那在x 处一定是可微的,而且对应的 g = ∇ f ( x ) g=\nabla f(x) g=f(x)

对于指示函数来说,对应的次梯度的集合为范数球 N C = { g ∣ g T ( y − x ) ≤ 0 ∀ y ∈ C } \mathcal{N}_{C}=\{g| g^T(y-x)\leq 0 \ \forall y \in C\} NC={ggT(yx)0 yC}

在这里插入图片描述

Optimality conditon under sub-gradient

1.对于无约束的条件下

For any f (convex or not)
f ( x ∗ ) = min ⁡ x f ( x ) ⇔ 0 ∈ δ f ( x ∗ ) f(x^*) = \min_x f(x) \Leftrightarrow 0 \in \delta f(x^*) f(x)=xminf(x)0δf(x)
Why? 如果 0 在x 处的sub-gradient,根据定义可以写出:
f ( y ) ≥ f ( x ∗ ) + 0 ∗ ( y − x ) , ∀ y f(y) \geq f(x^*) +0*(y-x) \ , \forall y f(y)f(x)+0(yx) ,y
所以可以得出对应的 f ( x ∗ ) f(x^*) f(x)为minimize,如果f 是凸函数并且是可微的,那对应的次梯度是对应的梯度。那就是说明对应的梯度为 0, ∇ f ( x ∗ ) = 0 \nabla f(x^*)=0 f(x)=0也是可以对应上的。

2.有约束的凸优化问题:
min ⁡ x f ( x ) s.t.  x ∈ C \min_x f(x) \text{ s.t. }x \in C xminf(x) s.t. xC
对应的最优条件是:
∇ f ( x ) ( y − x ) ≥ 0 for all  y ∈ C \nabla f(x)(y-x)\geq 0 \text{ for all } y \in C f(x)(yx)0 for all yC
可以理解为: 从x 出发的任意一个点都与梯度方向的内积为正了,就是无法再继续下降了

soft-thresholding

在这里插入图片描述

Subgradient method

首先梯度下降是:
x ( k + 1 ) = x ( k ) − t k ∇ f ( x ( k ) ) x^{(k+1)} = x^{(k)}-t_k\nabla f(x^{(k)}) x(k+1)=x(k)tkf(x(k))
类比过来的话,对应的sub-gradient descent 方法就是如下,把对应的梯度变为sub-gradient
x ( k + 1 ) = x ( k ) − t k g ( x ( k ) ) x^{(k+1)} = x^{(k)}-t_kg(x^{(k)}) x(k+1)=x(k)tkg(x(k))
而这个 g ( x ( k ) ) ∈ δ f ( x ( k ) ) g(x^{(k)}) \in \delta f(x^{(k)}) g(x(k))δf(x(k))

Subgradient method is not necessarily a descent method, thus we keep track of best iterate x best ( k ) x^{(k)}_{\text{best}} xbest(k)
f ( x best ( k ) ) = min ⁡ i = 0 , . . . k f ( x ( i ) ) f(x_{\text{best}}^{(k)})=\min_{i=0,...k} f(x^{(i)}) f(xbest(k))=i=0,...kminf(x(i))
Project 操作: 首先先定义一个点x 到一个凸集合的距离的函数dist
dist ( x , C ) \text{dist}(x,C) dist(x,C)
如果想找到这个距离就是一个优化问题:
min ⁡ y ∈ C ∣ ∣ y − x ∣ ∣ 2 2 \min_{y \in C} ||y-x||_2^2 yCmin∣∣yx22
或者也可以表示为对应x投影到C 中的那个点 y ∗ y^* y和x之间的距离,而这个投影的点可以表示为:
y ∗ = argmin y ∈ C ∣ ∣ y − x ∣ ∣ 2 2 y^* = \text{argmin}_{y \in C} ||y-x||_2^2 y=argminyC∣∣yx22
然后上述的 dist ( x , c ) \text{dist}(x,c) dist(x,c)就可以表示为: dist ( x , C ) = ∣ ∣ x − y ∗ ∣ ∣ 2 \text{dist}(x,C)=||x-y^*||^2 dist(x,C)=∣∣xy2

Proximal Gradient Descent

近端梯度下降

如果现在有一个目标函数主要包括为:
f ( x ) = g ( x ) + h ( x ) f(x) = g(x)+h(x) f(x)=g(x)+h(x)
其中,g是凸的并且是可微的,但是对应h来说是一个比较简单的但是不可微的函数。但是如果直接用sub-gradient method 收敛速度太慢了,所以如何能保证与普通的梯度下降收敛速度的同时,进行更新。所以这里就要想到原始的梯度下降,首先是对原始的函数进行二次近似,然后再去就最小值去找到下一步更新的点。那这里类比一下,那我们还是把可微的g(x)进行二阶近似,保持不可微的h(x)
g ( z ) = g ( x ) + ∇ g ( x ) ( z − x ) + 1 2 t ∣ ∣ z − x ∣ ∣ 2 2 g(z) = g(x)+ \nabla g(x)(z-x)+\frac{1}{2t}||z-x||_2^2 g(z)=g(x)+g(x)(zx)+2t1∣∣zx22
总体就可以表示为 :
x + = argmin z g ( x ) + ∇ g ( x ) ( z − x ) + 1 2 t ∣ ∣ z − x ∣ ∣ 2 2 + h ( z ) = argmin z 1 2 t ∣ ∣ z − ( x − t ∇ f ( x ) ) ∣ ∣ 2 2 + h ( z ) x^+ = \text{argmin}_z g(x)+ \nabla g(x)(z-x)+\frac{1}{2t}||z-x||_2^2+h(z) \\ = \text{argmin}_z \frac{1}{2t}||z-(x-t\nabla f(x))||_2^2 +h(z) x+=argminzg(x)+g(x)(zx)+2t1∣∣zx22+h(z)=argminz2t1∣∣z(xtf(x))22+h(z)
整体解释一下,这里前一项就要保证对应的下一个点要与g 梯度下降的结果要接近,但是也要最小化 h(z)

然后我们定义一个映射函数:(近端算子)
prox t ( x ) = argmin z ∣ ∣ z − x ∣ ∣ 2 2 + h ( z ) \text{prox}_t(x) = \text{argmin}_z ||z-x||_2^2 +h(z) proxt(x)=argminz∣∣zx22+h(z)
所以近端梯度下降就可以表示为:
x ( k + 1 ) = prox t ( x ( k ) − t k ⋅ ∇ f ( x ( k ) ) ) x^{(k+1)} = \text{prox}_t(x^{(k)}-t_k\cdot \nabla f(x^{(k)})) x(k+1)=proxt(x(k)tkf(x(k)))
也可以表示为另一种形式:
x ( k + 1 ) = x ( k ) − t k G k ( x ( k ) ) x^{(k+1)} = x^{(k)}-t_k G_k(x^{(k)}) x(k+1)=x(k)tkGk(x(k))

G t ( x ) = x − prox t ( x − t ∇ g ( x ) ) t G_t(x) = \frac{x-\text{prox}_t(x-t\nabla g(x))}{t} Gt(x)=txproxt(xtg(x))

也被叫做广义的梯度。

Proximal gradient descent 也被叫做广义的梯度下降。

当h=0,就是普通的梯度下降。

h = I C h =I_C h=IC就是投影梯度下降

这个时候,对应的 prox t \text{prox}_t proxt就变为了 P C P_C PC
min ⁡ x ∈ C f ( x ) = min ⁡ x f ( x ) + I C ( x ) prox ( x ) = argmin z 1 2 t ∣ ∣ z − x ∣ ∣ 2 2 + I C ( z ) = argmin z ∈ C ∣ ∣ z − x ∣ ∣ 2 2 = P C ( x ) \min_{x\in C} f(x) = \min_{x} f(x) +I_C(x) \\ \text{prox}(x) = \text{argmin}_z\frac{1}{2t}||z-x||^2_2 +I_C(z) \\ =\text{argmin}_{z \in C} ||z-x||_2^2 = P_C(x) xCminf(x)=xminf(x)+IC(x)prox(x)=argminz2t1∣∣zx22+IC(z)=argminzC∣∣zx22=PC(x)
可以发现这个时候就是对应的那个点就是投影了。

对应的更新过程就变成了:
x ( k + 1 ) = P C ( x ( k ) − t k ∇ f ( x ( k ) ) ) x^{(k+1)} = P_C(x^{(k)}-t_k \nabla f(x^{(k)})) x(k+1)=PC(x(k)tkf(x(k)))
当g=0 时,近端最小算法

Consider for h convex ( not necessarily differentiable)
min ⁡ x h ( x ) \min_x h(x) xminh(x)
proximal gradient update step is just
x + = argmin z 1 2 t ∣ ∣ x − z ∣ ∣ 2 2 + h ( z ) x^+ =\text{argmin}_z \frac{1}{2t}||x-z||^2_2 +h(z) x+=argminz2t1∣∣xz22+h(z)

相关文章:

  • RestFul操作ElasticSearch:索引与文档全攻略
  • DeepSpeed简介及加速模型训练
  • Spring Boot中如何使用RabbitMQ?
  • 【Go-2】基本语法与数据类型
  • Qt动态生成 UI
  • 零基础深入解析 ngx_http_session_log_module
  • 系统架构设计师软考要点分析及知识学习指南
  • 【Python装饰器深潜】从语法糖到元编程的艺术
  • 人工智能如何做主题班会PPT?
  • 量子计算的曙光:从理论奇点到 IT 世界的颠覆力量
  • 鸿蒙HarmonyOS多设备流转:分布式的智能协同技术介绍
  • 【华为鸿蒙电脑】首款鸿蒙电脑发布:MateBook Fold 非凡大师 MateBook Pro,擎云星河计划启动
  • BRIGHTONE : 520-On-Chain WOHOO Carnival
  • TYUT-企业级开发教程-第8章
  • 基于规则引擎与机器学习的智能Web应用防火墙设计与实现
  • 【数据库课程设计】网上投票管理系统
  • 【Linux】进程间通信(三):命名管道
  • PyTorch进阶实战指南:01自定义神经网络组件开发
  • JavaScript 性能优化:调优策略与工具使用
  • Java转Go日记(四十四):Sql构建
  • 上海婚登人聂晶:见证爱情故事开启,也向长久婚姻致敬
  • 秦洪看盘|热门股或将退潮,短线波动难免
  • 以色列媒体:以总理称将接管整个加沙
  • 菲律宾选举委员会公布中期选举结果,马科斯阵营选情未达预期
  • 武康大楼再开发:一栋楼火还不够,要带火街区“朋友圈”
  • 消息人士称俄方反对美国代表参加俄乌直接会谈