优化算法

优化算法概论

理想的优化算法有以下几个特点

  • 数值解 {xk}k = 0的迭代,实际中操作使用有限次,满足一定条件停止迭代即可
  • 单调性,满足f(xk + 1) < f(xk − m)就很好,但是往往碰到螺旋下降的情况
  • 策略 :xk如何到xk + 1?

线搜索方法

xk + 1 = xk + αkpk

这里αk是一个很小的正量表示步长,pk表示方向,线搜索方法就是先定方向,再定步长

信赖域方法

xk + 1 = xk + pk

方向和步长合二为一

线搜索方法理论

确定方向

假定 - {f(xk)}k = 0是单调下降的
- αk足够小
- ||pk|| = 1

则有 所以下降方向就是负梯度方向

关于步长的三个约束条件

Armijo Condition

假定pk是下降方向,我们令 ϕ(α) = f(xk + 1) = f(xk + αpk)

于是

ϕ(α) = ∇f(xk + αpk)Tpk

ϕ(0) = f(xk)

ϕ(0) = ∇fkTpk

我们想让a取到一个良好的位置,应当满足 - 必要条件(f序列单调减) ϕ(α) < ϕ(0)

  • 充分条件

Glodstein Condition

Glodstein发现Armijo条件总会导致筛选出特别小的a,但是这在数值计算中没有意义,为此他提出了新的筛选方法

wolfe condition

wolfe综合了上述思想,又考虑到Glodstein的约束条件过于狭窄,在c趋于0.5的时候几乎不留区间,于是最终演化出我们现在通用的筛选标准

ϕ(α) ≤ f(xk) + C1fkTpkα

fk + 1T ⋅ pk ≥ C2fkTPk

第二个式子中fk + 1T就是函数图像中ϕ(a)在a处的斜率,这样就不冒进的排除掉了α靠近0的一小段区间

收敛性证明

xk + 1 = xk + αkpk ,我们有以下几点要求,

  • f(x)满足Lipschitz连续,即∥∇f(x) − ∇f()∥ ≤ Lx − ∥,  ∀x,  (1)

  • pk是下降方向,即fkTpk < 0 (2)

  • αk满足wolfe条件,即: fk + 1 < fk + c1αkfkTpk  (3)
    fk + 1Tpk ≥ c2fkTpk  (4)

这几点要求对大多数优化问题来说都是比较容易满足的。在这样的已知条件下,我们可以推导出一个重要的结论:Zoutendijk条件

Proof

由(4) (∇fk + 1 − ∇fk)Tpk ≥ (c2 − 1)(∇fkTpk)  (5) 又由李普希兹连续条件可得 ∥∇fk + 1 − ∇fk∥ ≤ αkLpk ∥∇fk + 1 − ∇fk∥∥pk∥ ≤ αkLpk2 (∇fk + 1 − ∇fk)Tpk ≤ αkLpk2  (6)

联立(5),(6)可得 代入(3)(注意到αkfkTpk < 0 两边累加可得 f0 − fk + 1 ≥ cΣj = 0kcos2θj∥∇fj2 因为f有下界,因此左边收敛,那么由数列和的收敛判断,必然有 limk → ∞cos2θk∥∇fk2 = 0

上面我们已经证明了在一定条件下,可以推导出Zoutendijk条件: limk → ∞cos2θk∥∇fk2 = 0 更进一步,如果能够证明 cos θk ≥ δ > 0, ∀k

那么显然要想仍然满足Zoutendijk条件,则只能要求limk → ∞∥∇fk∥ = 0 ,从而证明了收敛性。对于最速下降方向pk = −∇fk,天然的cos θk = 1,则自然满足收敛性。

收敛速度

x*为局部的最优解 ### Q收敛速度

次线性收敛

线性收敛

超线性收敛

二次收敛

R收敛速度(类似于比较收敛)

  • k充分大

例子
是Q次线性
2k是Q线性
22k是二次线性

梯度下降法

关于凸函数性质的理解

在数学上,我们应当有这样的直觉:

  • 李普希兹连续保证了我们的研究函数有二次上界
  • 强凸这一性质保证了研究函数大于了一个二次下界

proof:李普希兹连续->二次上界

命题:若f可微,fLipschitz连续,则f有二次上界:

证明: 记 g(θ) = f(x + θ(y − x))
原命题变为证明

左边等于  = ∫01g(θ)dθ − ∫01f(x)T(y − x)dθ

 = ∫01(∇f(x + θ(y − x))T ⋅ (y − x) − ∇f(x)T(y − x))dθ

 ≤ ∫01L||θ(y − x)||⋅||y − x||dθ

证毕

凸函数:梯度下降法收敛性分析

先引入一种求解α最小上界的思路

回到算法本身

x的更新公式为 xk + 1 = xk − αkf(xk) 根据二次上界不等式可得

由凸函数的性质可知:f* > f(xk) − ∇f(xk)(xk − x*)

由于,则

$$

$$

进一步有

由于fk单调下降,因此 算法使得以收敛到f*

重要的引理:白老爹定理

强凸函数应用梯度下降法的收敛性分析

  • f有下界,m-强凸,可微
  • f李普希兹连续

xkQ线性收敛到x*

||xk + 1 − x*||2 = ||xk − αf(xk) − x*||2  = ∥xk − x*2 − 2αf(xk)T(xk − x*) + α2∥∇f(xk)∥2  = ||xk − x*||2 − 2α(∇f(xk) − ∇f(x*))T(xk − x*) + α2||∇f(xk)||2 现在的任务就是为(∇f(xk) − ∇f(x*))T(xk − x*)寻找一个合适的下界

带入原始的式子

梯度下降法的缺点:在病态条件下收敛过慢


优化算法
http://example.com/2024/08/02/机器学习/优化算法/
作者
bradin
发布于
2024年8月2日
许可协议