前置知识
Lipschitz 连续
f:Rn→Rm 是 Lipschitz 连续(L-continuous)的,当且仅当 ∃L>0,使得 ∀x,y∈Rn,有
∥f(x)−f(y)∥≤L∥x−y∥Lipschitz 光滑
与 Lipschitz 连续类似,f:Rn→Rm 是 Lipschitz 光滑(L-smooth)的,当且仅当 ∃L>0,使得 ∀x,y∈Rn,有
∥∇f(x)−∇f(y)∥≤L∥x−y∥凸函数
f:Rn→R 是凸函数(convex function),当且仅当 ∀x,y∈Rn,∀λ∈[0,1],有
f(λx+(1−λ)y)≤λf(x)+(1−λ)f(y)⇔f(y)≥f(x)+∇f(x)T(y−x)⇔∇2f(x)≽0对于矩阵 A∈Rn×n,∀x∈Rn:
- 如果 xTAx≥0,则称 A 是半正定矩阵(positive semi-definite matrix, p.s.d. matrix),记作 A≽0。
- 如果 xTAx>0,则称 A 是正定矩阵(positive definite matrix, p.d. matrix),记作 A≻0。
从特征值的角度来看,对于 A 的所有特征值 λi,∀i=1,⋯,n
- A≽0 等价于 λi≥0
- A≻0 等价于 λi>0。
强凸函数
f:Rn→R 是强凸函数(strongly convex function),当且仅当 ∃μ>0,使得 ∀x,y∈Rn,∀λ∈[0,1],有
f(λx+(1−λ)y)≤λf(x)+(1−λ)f(y)−2μλ(1−λ)∥x−y∥2⇔f(y)≥f(x)+∇f(x)T(y−x)+2μ∥x−y∥2⇔∇2f(x)≽μI梯度下降
梯度下降(gradient descent)是一种迭代算法,在这里我们只考虑最简单的形式,即要求函数 f 至少是 Lipschitz 光滑的,则有
f(xk+1)≤f(xk)+∇f(xk)T(xk+1−xk)+2L∥xk+1−xk∥2因此尽管 f 可能不是二次函数,但是梯度下降的迭代过程可以看作是在二次函数 f(xk)+∇f(xk)T(x−xk)+2L∥x−xk∥2 上进行的,因此其优化的目标函数为
qxk(x)=f(xk)+∇f(xk)T(x−xk)+2L∥x−xk∥2≈f(x)要最小化二次函数 qxk(x),只需要令其梯度为 0 即可,即令
∇qxk(x)=∇f(xk)+L(x−xk)!0⇒xk+1=x=xk−L1∇f(xk)这里的 −∇f(xk) 即为梯度下降的方向,而 L1 则是步长,记作 α;我们由此也能得到
f(xk+1)≤==f(xk)+∇f(xk)T(xk+1−xk)+2L∥xk+1−xk∥2f(xk)−L1∥∇f(xk)∥2+2L1∥∇f(xk)∥2f(xk)−2L1∥∇f(xk)∥2 牛顿法
除了梯度下降,我们还可以使用牛顿法(Newton’s method)来进行优化。为了解 h(x)=0,我们可以令 g(x)=x−αh(x),其中 α>0 是缩放系数,那么我们可以如此迭代:
xk+1=g(xk)迭代至收敛时,则有
x∗=g(x∗)=x∗−αh(x∗)⇒h(x∗)=0收敛标准
假定定义域中 x∗∈Ω 是 f 的最小值点,对应的函数值为 f(x∗)=f∗,那么对于 ∀ε>0:
- 如果 f(x)−f∗≤ε,那么称 x 是 ε-最优点(ε-optimal point)
- 如果 ∥∇f(x)∥≤ε,那么称 x 是 ε-临界点(ε-critical point)
收敛性分析
在前面的推导中,我们得到了对于 Lipschitz 光滑函数 f,梯度下降的迭代步长为 α=L1,因此以下分析都是基于这个步长的。需要说明的是,不管是在实际应用中还是理论分析中,对于不仅光滑并且凸的函数,有更优的迭代步长,能够以更快的速度收敛,但是其推导较为复杂,这里我们只考虑最简单的情况。
Lipschitz 光滑函数
对于 Lipschitz 光滑函数 f,我们有
f(x+αd)≤⇒f(xk+1)≤⇒f(xT)≤⇒k=0∑T−1∥∇f(xk)∥2≤≤⇒0≤k≤T−1min∥∇f(xk)∥2≤⇒0≤k≤T−1min∥∇f(xk)∥≤f(x)+α∇f(x)Td+2Lα2∥d∥2f(xk)−2L1∥∇f(xk)∥2f(x0)−2L1k=0∑T−1∥∇f(xk)∥22L(f(x0)−f(xT))2L(f(x0)−f∗)T2L(f(x0)−f∗)T2L(f(x0)−f∗)因此可以看到要达到 ε-临界点,需要迭代次数要满足
T2L(f(x0)−f∗)≤⇒T≥εε22L(f(x0)−f∗)因此收敛所需时间复杂度为 O(ε21),为次线性收敛。
对于序列 {an},如果 limn→∞an→0,并且有
n→∞limanan+1=ρ- 如果 ρ=0,则称 {an} 是超线性收敛的
- 如果 ρ∈(0,1),则称 {an} 是线性收敛的
- 如果 ρ=1,则称 {an} 是次线性收敛的
Lipschitz 光滑 + 凸函数
对于凸函数 f,我们有
f(y)≥Let{y=x∗x=xk⇒f∗≥⇒f(xk)≤f(x)+∇f(x)T(y−x)f(xk)+∇f(xk)T(x∗−xk)f∗+∇f(xk)T(xk−x∗)结合前面推到的 Lipschitz 光滑函数有 f(xk+1)≤f(xk)−2L1∥∇f(xk)∥2,代入可得
f(xk+1)≤f∗+∇f(xk)T(xk−x∗)−2L1∥∇f(xk)∥2又有
∥∇f(xk)∥2=====L2∥xk+1−xk∥2L2(∥xk+1−x∗∥2+∥xk−x∗∥2−2⟨xk+1−x∗,xk−x∗⟩)L2(∥xk+1−x∗∥2+∥xk−x∗∥2−2⟨xk−L1∇f(xk)−x∗,xk−x∗⟩)L2(∥xk+1−x∗∥2−∥xk−x∗∥2+L2⟨∇f(xk),xk−x∗⟩)L2(∥xk+1−x∗∥2−∥xk−x∗∥2+L2∇f(xk)T(xk−x∗))代入上式可得
f(xk+1)≤=⇒k=0∑T−1f(xk+1)≤≤f∗+∇f(xk)T(xk−x∗)−2L(∥xk+1−x∗∥2−∥xk−x∗∥2+L2∇f(xk)T(xk−x∗))f∗−2L(∥xk+1−x∗∥2−∥xk−x∗∥2)Tf∗−2L(∥xT−x∗∥2−∥x0−x∗∥2)Tf∗+2L∥x0−x∗∥2又因为每一步都有 f(xk+1)≤f(xk)−2L1∥∇f(xk)∥2,因此 ∀k=0,⋯,T−1,f(xT)<f(xk),因此有
Tf(xT)≤⇒f(xT)−f∗≤Tf∗+2L∥x0−x∗∥22TL∥x0−x∗∥2要达到 ε-最优点,需要迭代次数要满足
2TL∥x0−x∗∥2≤⇒T≥ε2εL∥x0−x∗∥2因此收敛所需时间复杂度为 O(ε1),依然为次线性收敛。
Lipschitz 光滑 + 强凸函数
对于强凸函数 f,我们有
f(y)≥Let{y=x∗y−x=−μ∇f(x)⇒f∗≥=⇒f(x)−f∗≤f(x)+∇f(x)T(y−x)+2μ∥y−x∥2f(x)−μ1∥∇f(x)∥2+2μ⋅μ21∥∇f(x)∥2f(x)−2μ1∥∇f(x)∥22μ1∥∇f(x)∥2结合前面推到的 Lipschitz 光滑函数有 f(xk+1)≤f(xk)−2L1∥∇f(xk)∥2,代入可得
f(xk+1)≤⇒f(xk+1)−f∗≤=⇒f(xT)−f∗≤f(xk)−2L2μ(f(xk)−f∗)f(xk)−f∗−Lμ(f(xk)−f∗)(1−Lμ)(f(xk)−f∗)(1−Lμ)T(f(x0)−f∗)要达到 ε-最优点,需要迭代次数要满足
(1−Lμ)T(f(x0)−f∗)≤⇒εf(x0)−f∗≤⇒logεf(x0)−f∗≤⇒T≥ε(1−Lμ)−TT≈Lμlog1−Lμ1μLlogεf(x0)−f∗因此收敛所需时间复杂度为 O(logε1),为线性收敛。
杂记
期中季实在太忙了,有好多想写的东西,但是连手头在做的项目代码都没时间写,就都别提这些了,只能先记一点可能是最有用的,其他的以后再补充吧。
凸优化相关的还有很多内容,包括加速梯度下降算法,随机梯度下降算法,约束优化等等等等,这些都是很有意思的,当然如果要做收敛性分析就很有挑战了,以后有机会再写吧。大概率太难不写。
参考资料
- Wright, S., & Recht, B. (2022). Optimization for Data Analysis. Cambridge: Cambridge University Press. doi:10.1017/9781009004282