前面讲了梯度下降法、次梯度下降法,并分析了他们的收敛性。上一节讲了近似梯度算子,我们说主要是针对非光滑问题的,这一节就要讲近似梯度算子在非光滑优化问题中的应用。先回顾一下上一节最重要的一部分内容:对于指示函数 δ C \delta_C δC 来说近似梯度算子得到的实际上就是向集合 C C C 的投影。
1. 近似点梯度下降
这一部分考虑的问题主要是
minimize
f
(
x
)
=
g
(
x
)
+
h
(
x
)
\text{minimize } f(x)=g(x)+h(x)
minimize f(x)=g(x)+h(x)
这里面
g
g
g 是全空间可导的凸函数,
dom
g
=
R
n
\text{dom }g=R^n
dom g=Rn,
h
h
h 是存在不可导部分的凸函数,并且一般需要
h
h
h 的近似点计算较为简单。近似点梯度下降算法是什么呢?
x
k
+
1
=
prox
t
h
(
x
k
−
t
k
∇
g
(
x
k
)
)
x_{k+1}=\text{prox}_{th}(x_k-t_k\nabla g(x_k))
xk+1=proxth(xk−tk∇g(xk))
这里跟之前的梯度下降(GD)和次梯度下降(SD)的形式都不太一样,实际上看了后面的推导会发现经过转换他们还是很像的。不过怎么理解这个式子呢?举一个例子,假如
h
h
h 是集合
C
C
C 的指示函数,那么这个式子实际上是先沿着
g
g
g 的梯度走步长
t
k
t_k
tk,然后再投影到集合
C
C
C 里面,可以看下面这张图。而考虑原始优化问题,
min
f
=
g
+
h
\min f=g+h
minf=g+h 本身是一个无约束优化问题,但实际上把
h
h
h 用一个约束函数表示,他就是一个带约束的优化问题
min
g
(
x
)
,
s.t.
x
∈
C
\min g(x),\text{ s.t. }x\in C
ming(x), s.t. x∈C,而近似点梯度下降方法要做的事情就是先优化
g
g
g,然后投影到约束区域
C
C
C 中,可以参考下图。
根据
prox
t
h
\text{prox}_{th}
proxth 的定义,我们把上面的式子展开可以得到
x
+
=
argmin
u
(
h
(
u
)
+
1
2
t
∥
u
−
x
+
t
∇
g
(
x
)
∥
2
2
)
=
argmin
u
(
h
(
u
)
+
g
(
x
)
+
∇
g
(
x
)
T
(
u
−
x
)
+
1
2
t
∥
u
−
x
∥
2
2
)
\begin{aligned} x^{+} &=\underset{u}{\operatorname{argmin}}\left(h(u)+\frac{1}{2 t}\|u-x+t \nabla g(x)\|_{2}^{2}\right) \\ &=\underset{u}{\operatorname{argmin}}\left(h(u)+g(x)+\nabla g(x)^{T}(u-x)+\frac{1}{2 t}\|u-x\|_{2}^{2}\right) \end{aligned}
x+=uargmin(h(u)+2t1∥u−x+t∇g(x)∥22)=uargmin(h(u)+g(x)+∇g(x)T(u−x)+2t1∥u−x∥22)
可以发现括号里面的式子实际上就是在
x
x
x 附近对光滑的
g
g
g 进行了二阶展开,而
x
+
x^+
x+ 就是对近似后函数取最小值点。再进一步地
0
∈
t
∂
h
(
x
+
)
+
(
x
+
−
x
+
t
∇
g
(
x
)
)
⟹
G
t
(
x
)
:
=
x
−
x
+
t
∈
∂
h
(
x
+
)
+
∇
g
(
x
)
0\in t\partial h(x^+) + (x^+-x+t\nabla g(x)) \\ \Longrightarrow G_t(x):=\frac{x-x^+}{t}\in \partial h(x^+)+\nabla g(x)
0∈t∂h(x+)+(x+−x+t∇g(x))⟹Gt(x):=tx−x+∈∂h(x+)+∇g(x)
可以发现
G
t
(
x
)
=
∂
h
(
x
+
)
+
∇
g
(
x
)
G_t(x)=\partial h(x^+)+\nabla g(x)
Gt(x)=∂h(x+)+∇g(x) 实际上就近似为函数
f
f
f 的次梯度,但并不严格是,因为
∂
f
(
x
)
=
∂
h
(
x
)
+
∇
g
(
x
)
\partial f(x)=\partial h(x)+\nabla g(x)
∂f(x)=∂h(x)+∇g(x)。而此时我们也可以将
x
+
x^+
x+ 写成比较简单的形式
x
+
=
x
−
t
G
t
(
x
)
x^+ = x-tG_t(x)
x+=x−tGt(x)
这跟之前的梯度下降法就统一了,并且也说明了
G
t
(
x
)
G_t(x)
Gt(x) 就相当于是
f
f
f 的梯度。
这里还需要说明的一点是 G t ( x ) = ( 1 / t ) ( x − prox t h ( x − t ∇ g ( x ) ) G_t(x)=(1/t)(x-\text{prox}_{th}(x-t\nabla g(x)) Gt(x)=(1/t)(x−proxth(x−t∇g(x)) 这是一个连续函数,这是因为近似点算子是 Lipschitz 连续的(在下面一小节中会解释说明),又由于 G t ( x ) = 0 ⟺ x = arg min f ( x ) G_t(x)=0\iff x=\arg\min f(x) Gt(x)=0⟺x=argminf(x),因此 ∥ x − x + ∥ ≤ ε \Vert x-x^+\Vert\le \varepsilon ∥x−x+∥≤ε 就可以作为 stopping criterion。与之成对比的是非光滑函数的次梯度下降, ∥ x − x + ∥ \Vert x-x^+\Vert ∥x−x+∥ 就不是一个很好的 stopping criterion,因为即使 ∥ x − x + ∥ \Vert x-x^+\Vert ∥x−x+∥ 很小,也可能离最优解比较远。
2. 收敛速度分析
在分析收敛速度之前,我们需要首先分析一下 g ( x ) g(x) g(x) 和 h ( x ) h(x) h(x) 这两部分函数的性质。
首先是
h
h
h,如果
h
h
h 为闭的凸函数,那么
prox
h
(
x
)
=
arg
min
u
(
h
(
u
)
+
(
1
/
2
)
∥
u
−
x
∥
2
)
\text{prox}_h(x)=\arg\min_u\left(h(u)+(1/2)\Vert u-x\Vert^2\right)
proxh(x)=argminu(h(u)+(1/2)∥u−x∥2) 对每个
x
x
x 一定存在唯一的解。并且
u
=
prox
h
(
x
)
⟺
x
−
u
∈
∂
h
(
u
)
u=\text{prox}_h(x) \iff x-u\in \partial h(u)
u=proxh(x)⟺x−u∈∂h(u),那么我们就可以得到 firmly nonexpansive(co-coercivite) 性质:
(
prox
h
(
x
)
−
prox
h
(
y
)
)
T
(
x
−
y
)
≥
∥
prox
h
(
x
)
−
prox
h
(
y
)
∥
2
2
\left(\operatorname{prox}_{h}(x)-\operatorname{prox}_{h}(y)\right)^{T}(x-y) \geq\left\|\operatorname{prox}_{h}(x)-\operatorname{prox}_{h}(y)\right\|_{2}^{2}
(proxh(x)−proxh(y))T(x−y)≥∥proxh(x)−proxh(y)∥22
证明过程可以取
u
=
prox
h
(
x
)
,
v
=
prox
h
(
y
)
u=\text{prox}_h(x),v=\text{prox}_h(y)
u=proxh(x),v=proxh(y),然后根据
x
−
u
∈
∂
h
(
u
)
,
y
−
v
∈
∂
h
(
v
)
x-u\in \partial h(u),y-v\in \partial h(v)
x−u∈∂h(u),y−v∈∂h(v),再利用次梯度算子的单调性质就可以得到。之前在梯度下降法中第一次讲到 co-coercive 性质的时候也提到,他跟 Lipschitz continuous 性质实际上是等价的,因此我们也有(nonexpansiveness性质)
∥
prox
h
(
x
)
−
prox
h
(
y
)
∥
2
≤
∥
x
−
y
∥
2
\left\|\operatorname{prox}_{h}(x)-\operatorname{prox}_{h}(y)\right\|_2 \le \left\|x-y\right\|_2
∥proxh(x)−proxh(y)∥2≤∥x−y∥2
然后我们再来看函数
g
g
g 的性质,类似前面梯度下降法中的两个重要性质:
- L-smooth: L 2 x T x − g ( x ) \frac{L}{2}x^Tx-g(x) 2LxTx−g(x) convex
- m-strongly convex: g ( x ) − m 2 x T x g(x)-\frac{m}{2}x^Tx g(x)−2mxTx convex
然后就可以得到两个二次的界
m
t
2
2
∥
G
t
(
x
)
∥
2
2
≤
g
(
x
−
t
G
t
(
x
)
)
−
g
(
x
)
+
t
∇
g
(
x
)
T
G
t
(
x
)
≤
L
t
2
2
∥
G
t
(
x
)
∥
2
2
\frac{m t^{2}}{2}\left\|G_{t}(x)\right\|_{2}^{2} \leq g\left(x-t G_{t}(x)\right)-g(x)+t \nabla g(x)^{T} G_{t}(x) \leq \frac{L t^{2}}{2}\left\|G_{t}(x)\right\|_{2}^{2}
2mt2∥Gt(x)∥22≤g(x−tGt(x))−g(x)+t∇g(x)TGt(x)≤2Lt2∥Gt(x)∥22
如果取
0
<
t
≤
1
/
L
0< t\le 1/L
0<t≤1/L,那么就有
L
t
≤
1
,
m
t
≤
1
Lt\le1,mt\le 1
Lt≤1,mt≤1。
结合上面对 g g g 和 h h h 性质的分析,就能得到下面这个非常重要的式子:
f ( x − t G t ( x ) ) ≤ f ( z ) + G t ( x ) T ( x − z ) − t 2 ∥ G t ( x ) ∥ 2 2 − m 2 ∥ x − z ∥ 2 2 ( ★ ) f\left(x-t G_{t}(x)\right) \leq f(z)+G_{t}(x)^{T}(x-z)-\frac{t}{2}\left\|G_{t}(x)\right\|_{2}^{2}-\frac{m}{2}\|x-z\|_{2}^{2} \qquad (\bigstar) f(x−tGt(x))≤f(z)+Gt(x)T(x−z)−2t∥Gt(x)∥22−2m∥x−z∥22(★)
证明:
f ( x − t G t ( x ) ) ≤ g ( x ) − t ∇ g ( x ) T G t ( x ) + t 2 ∥ G t ( x ) ∥ 2 2 + h ( x − t G t ( x ) ) ≤ g ( z ) − ∇ g ( x ) T ( z − x ) − m 2 ∥ z − x ∥ 2 2 − t ∇ g ( x ) T G t ( x ) + t 2 ∥ G t ( x ) ∥ 2 2 + h ( x − t G t ( x ) ) ≤ g ( z ) − ∇ g ( x ) T ( z − x ) − m 2 ∥ z − x ∥ 2 2 − t ∇ g ( x ) T G t ( x ) + t 2 ∥ G t ( x ) ∥ 2 2 + h ( z ) − ( G t ( x ) − ∇ g ( x ) ) T ( z − x + t G t ( x ) ) = g ( z ) + h ( z ) + G t ( x ) T ( x − z ) − t 2 ∥ G t ( x ) ∥ 2 2 − m 2 ∥ x − z ∥ 2 2 \begin{aligned} f\left(x-t G_{t}(x)\right) & \\ \leq & g(x)-t \nabla g(x)^{T} G_{t}(x)+\frac{t}{2}\left\|G_{t}(x)\right\|_{2}^{2}+h\left(x-t G_{t}(x)\right) \\ \leq & g(z)-\nabla g(x)^{T}(z-x)-\frac{m}{2}\|z-x\|_{2}^{2}-t \nabla g(x)^{T} G_{t}(x)+\frac{t}{2}\left\|G_{t}(x)\right\|_{2}^{2} \\ &+h\left(x-t G_{t}(x)\right) \\ \leq & g(z)-\nabla g(x)^{T}(z-x)-\frac{m}{2}\|z-x\|_{2}^{2}-t \nabla g(x)^{T} G_{t}(x)+\frac{t}{2}\left\|G_{t}(x)\right\|_{2}^{2} \\ &+h(z)-\left(G_{t}(x)-\nabla g(x)\right)^{T}\left(z-x+t G_{t}(x)\right) \\ =& g(z)+h(z)+G_{t}(x)^{T}(x-z)-\frac{t}{2}\left\|G_{t}(x)\right\|_{2}^{2}-\frac{m}{2}\|x-z\|_{2}^{2} \end{aligned} f(x−tGt(x))≤≤≤=g(x)−t∇g(x)TGt(x)+2t∥Gt(x)∥22+h(x−tGt(x))g(z)−∇g(x)T(z−x)−2m∥z−x∥22−t∇g(x)TGt(x)+2t∥Gt(x)∥22+h(x−tGt(x))g(z)−∇g(x)T(z−x)−2m∥z−x∥22−t∇g(x)TGt(x)+2t∥Gt(x)∥22+h(z)−(Gt(x)−∇g(x))T(z−x+tGt(x))g(z)+h(z)+Gt(x)T(x−z)−2t∥Gt(x)∥22−2m∥x−z∥22
其中第一个不等号用到了 g ( x ) g(x) g(x) 凸函数以及 Lipschitz 连续的性质,第二个不等号用到了 g ( x ) g(x) g(x) 凸函数的性质,第三个不等号用到了 h ( x ) h(x) h(x) 凸函数的性质。
有了上面这个式子就可以分析收敛性了。
如果我们取
z
=
x
z=x
z=x,那么就有下面的式子,说明序列
{
f
(
x
k
}
\{f(x_k\}
{f(xk} 总是在减小的,如果
f
(
x
)
f(x)
f(x) 存在下界,那么
f
(
x
k
)
f(x_k)
f(xk) 将趋向于这个下界。
f
(
x
+
)
≤
f
(
x
)
−
t
2
∥
G
t
(
x
)
∥
2
f(x^+)\le f(x)-\frac{t}{2}\Vert G_t(x)\Vert^2
f(x+)≤f(x)−2t∥Gt(x)∥2
如果我们取
z
=
x
⋆
z=x^\star
z=x⋆,那么就有
f
(
x
+
)
−
f
⋆
≤
G
t
(
x
)
T
(
x
−
x
⋆
)
−
t
2
∥
G
t
(
x
)
∥
2
2
−
m
2
∥
x
−
x
⋆
∥
2
2
=
1
2
t
(
∥
x
−
x
⋆
∥
2
2
−
∥
x
−
x
⋆
−
t
G
t
(
x
)
∥
2
2
)
−
m
2
∥
x
−
x
⋆
∥
2
2
=
1
2
t
(
(
1
−
m
t
)
∥
x
−
x
⋆
∥
2
2
−
∥
x
+
−
x
⋆
∥
2
2
)
≤
1
2
t
(
∥
x
−
x
⋆
∥
2
2
−
∥
x
+
−
x
⋆
∥
2
2
)
\begin{aligned} f\left(x^{+}\right)-f^{\star} & \leq G_{t}(x)^{T}\left(x-x^{\star}\right)-\frac{t}{2}\left\|G_{t}(x)\right\|_{2}^{2}-\frac{m}{2}\left\|x-x^{\star}\right\|_{2}^{2} \\ &=\frac{1}{2 t}\left(\left\|x-x^{\star}\right\|_{2}^{2}-\left\|x-x^{\star}-t G_{t}(x)\right\|_{2}^{2}\right)-\frac{m}{2}\left\|x-x^{\star}\right\|_{2}^{2} \\ &=\frac{1}{2 t}\left((1-m t)\left\|x-x^{\star}\right\|_{2}^{2}-\left\|x^{+}-x^{\star}\right\|_{2}^{2}\right) \\ & \leq \frac{1}{2 t}\left(\left\|x-x^{\star}\right\|_{2}^{2}-\left\|x^{+}-x^{\star}\right\|_{2}^{2}\right) \end{aligned}
f(x+)−f⋆≤Gt(x)T(x−x⋆)−2t∥Gt(x)∥22−2m∥x−x⋆∥22=2t1(∥x−x⋆∥22−∥x−x⋆−tGt(x)∥22)−2m∥x−x⋆∥22=2t1((1−mt)∥x−x⋆∥22−∥∥x+−x⋆∥∥22)≤2t1(∥x−x⋆∥22−∥∥x+−x⋆∥∥22)
从这个式子就可以看出来很多有用的性质了:
- ∥ x + − x ⋆ ∥ 2 2 ≤ ( 1 − m t ) ∥ x − x ⋆ ∥ 2 2 \left\|x^{+}-x^{\star}\right\|_{2}^{2}\le (1-m t)\left\|x-x^{\star}\right\|_{2}^{2} ∥x+−x⋆∥22≤(1−mt)∥x−x⋆∥22,如果满足强凸性质的话,也即 m > 0 m>0 m>0,就有 ∥ x + − x ⋆ ∥ 2 2 ≤ c k ∥ x − x ⋆ ∥ 2 2 , c = 1 − m / L \left\|x^{+}-x^{\star}\right\|_{2}^{2}\le c^k\left\|x-x^{\star}\right\|_{2}^{2},c=1-m/L ∥x+−x⋆∥22≤ck∥x−x⋆∥22,c=1−m/L;
- ∑ i k ( f ( x i ) − f ⋆ ) ≤ 1 2 t ∥ x + − x ⋆ ∥ 2 2 \sum_i^k (f(x_i)-f^\star) \le \frac{1}{2t}\left\|x^{+}-x^{\star}\right\|_{2}^{2} ∑ik(f(xi)−f⋆)≤2t1∥x+−x⋆∥22,由于 f ( x i ) f(x_i) f(xi) 不增,因此 f ( x k ) − f ⋆ ≤ 1 2 k t ∥ x + − x ⋆ ∥ 2 2 f(x_k)-f^\star \le \frac{1}{2kt}\left\|x^{+}-x^{\star}\right\|_{2}^{2} f(xk)−f⋆≤2kt1∥x+−x⋆∥22,因此收敛速度也是 O ( 1 / k ) O(1/k) O(1/k)。
注意到前面的分析是针对固定步长
t
∈
(
0
,
1
/
L
]
t\in(0,1/L]
t∈(0,1/L] 的,如果我们想走的更远一点,下降的快一点呢?就可以用前几节提到的线搜索方法。也就是说每次选择步长
t
k
t_k
tk 的时候需要迭代
t
:
=
β
t
t:=\beta t
t:=βt 来进行搜索,使得满足下面的式子
g
(
x
−
t
G
t
(
x
)
)
≤
g
(
x
)
−
t
∇
g
(
x
)
T
G
t
(
x
)
+
t
2
∥
G
t
(
x
)
∥
2
2
g\left(x-t G_{t}(x)\right) \leq g(x)-t \nabla g(x)^{T} G_{t}(x)+\frac{t}{2}\left\|G_{t}(x)\right\|_{2}^{2}
g(x−tGt(x))≤g(x)−t∇g(x)TGt(x)+2t∥Gt(x)∥22
这个式子就是 Lipschitz 连续导出的二次上界,注意应用线搜索的时候,每次迭代我们都要额外计算一次
g
g
g 和
prox
t
h
\text{prox}_{th}
proxth,这个计算可能并不简单,因此不一定会使算法收敛更快,需要慎重考虑。另外为了保证能在有限步停止搜索
t
k
t_k
tk,还需要加入最小步长的约束
t
≥
t
min
=
min
{
t
^
,
β
/
L
}
t\ge t_{\min}=\min \{\hat{t},\beta/L\}
t≥tmin=min{t^,β/L}。线搜索直观理解可以如下图所示
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZkJVmrlK-1587117296421)(E:\Study\凸优化\img\19-line-search.PNG)]
我们再来分析一下收敛性,跟前面固定步长很像,只需要将原来的式子中
t
t
t 替换为
t
i
t_i
ti,就可以得到
t
i
(
f
(
x
i
+
1
)
−
f
⋆
)
≤
1
2
(
∥
x
i
−
x
⋆
∥
2
2
−
∥
x
i
+
1
−
x
⋆
∥
2
2
)
t_{i}\left(f\left(x_{i+1}\right)-f^{\star}\right) \leq \frac{1}{2}\left(\left\|x_{i}-x^{\star}\right\|_{2}^{2}-\left\|x_{i+1}-x^{\star}\right\|_{2}^{2}\right)
ti(f(xi+1)−f⋆)≤21(∥xi−x⋆∥22−∥xi+1−x⋆∥22)
于是有
- ∥ x + − x ⋆ ∥ 2 2 ≤ ( 1 − m t i ) ∥ x − x ⋆ ∥ 2 2 ≤ ( 1 − m t min ) ∥ x − x ⋆ ∥ 2 2 \left\|x^{+}-x^{\star}\right\|_{2}^{2}\le (1-m t_i)\left\|x-x^{\star}\right\|_{2}^{2}\le (1-m t_{\min})\left\|x-x^{\star}\right\|_{2}^{2} ∥x+−x⋆∥22≤(1−mti)∥x−x⋆∥22≤(1−mtmin)∥x−x⋆∥22,如果满足强凸性质的话,也即 m > 0 m>0 m>0,就有 ∥ x + − x ⋆ ∥ 2 2 ≤ c k ∥ x − x ⋆ ∥ 2 2 , c = 1 − m t min = max { 1 − β m / L , 1 − m t ^ } \left\|x^{+}-x^{\star}\right\|_{2}^{2}\le c^k\left\|x-x^{\star}\right\|_{2}^{2},c=1-mt_{\min}=\max \{1-\beta m/L,1-m\hat{t}\} ∥x+−x⋆∥22≤ck∥x−x⋆∥22,c=1−mtmin=max{1−βm/L,1−mt^};
- ∑ i k t i ( f ( x i ) − f ⋆ ) ≤ 1 2 ∥ x + − x ⋆ ∥ 2 2 \sum_i^k t_i(f(x_i)-f^\star) \le \frac{1}{2}\left\|x^{+}-x^{\star}\right\|_{2}^{2} ∑ikti(f(xi)−f⋆)≤21∥x+−x⋆∥22,由于 f ( x i ) f(x_i) f(xi) 不增,因此 f ( x k ) − f ⋆ ≤ 1 2 k t min ∥ x + − x ⋆ ∥ 2 2 f(x_k)-f^\star \le \frac{1}{2kt_{\min}}\left\|x^{+}-x^{\star}\right\|_{2}^{2} f(xk)−f⋆≤2ktmin1∥x+−x⋆∥22,因此收敛速度也是 O ( 1 / k ) O(1/k) O(1/k)。
最后给我的博客打个广告,欢迎光临
https://glooow1024.github.io/
https://glooow.gitee.io/
前面的一些博客链接如下
凸优化专栏
凸优化学习笔记 1:Convex Sets
凸优化学习笔记 2:超平面分离定理
凸优化学习笔记 3:广义不等式
凸优化学习笔记 4:Convex Function
凸优化学习笔记 5:保凸变换
凸优化学习笔记 6:共轭函数
凸优化学习笔记 7:拟凸函数 Quasiconvex Function
凸优化学习笔记 8:对数凸函数
凸优化学习笔记 9:广义凸函数
凸优化学习笔记 10:凸优化问题
凸优化学习笔记 11:对偶原理
凸优化学习笔记 12:KKT条件
凸优化学习笔记 13:KKT条件 & 互补性条件 & 强对偶性
凸优化学习笔记 14:SDP Representablity
最优化方法 15:梯度方法
最优化方法 16:次梯度
最优化方法 17:次梯度下降法
最优化方法 18:近似点算子 Proximal Mapping
最优化方法 19:近似梯度下降
最优化方法 20:对偶近似点梯度下降法
最优化方法 21:加速近似梯度下降方法
最优化方法 22:近似点算法 PPA
最优化方法 23:算子分裂法 & ADMM
最优化方法 24:ADMM