优化算法
优化算法概论
理想的优化算法有以下几个特点
- 数值解 {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) + C1∇fkTpkα
∇fk + 1T ⋅ pk ≥ C2∇fkTPk
第二个式子中∇fk + 1T就是函数图像中ϕ(a)在a处的斜率,这样就不冒进的排除掉了α靠近0的一小段区间
收敛性证明
记 xk + 1 = xk + αkpk ,我们有以下几点要求,
∇f(x)满足Lipschitz连续,即∥∇f(x) − ∇f(x̂)∥ ≤ L∥x − x̂∥, ∀x, x̂ (1)
pk是下降方向,即∇fkTpk < 0 (2)
αk满足wolfe条件,即: fk + 1 < fk + c1αk∇fkTpk (3)
∇fk + 1Tpk ≥ c2∇fkTpk (4)
这几点要求对大多数优化问题来说都是比较容易满足的。在这样的已知条件下,我们可以推导出一个重要的结论:Zoutendijk条件
Proof
由(4) (∇fk + 1 − ∇fk)Tpk ≥ (c2 − 1)(∇fkTpk) (5) 又由李普希兹连续条件可得 ∥∇fk + 1 − ∇fk∥ ≤ αkL∥pk∥ ∥∇fk + 1 − ∇fk∥∥pk∥ ≤ αkL∥pk∥2 (∇fk + 1 − ∇fk)Tpk ≤ αkL∥pk∥2 (6)
联立(5),(6)可得
上面我们已经证明了在一定条件下,可以推导出Zoutendijk条件: limk → ∞cos2θk∥∇fk∥2 = 0 更进一步,如果能够证明 cos θk ≥ δ > 0, ∀k
那么显然要想仍然满足Zoutendijk条件,则只能要求limk → ∞∥∇fk∥ = 0 ,从而证明了收敛性。对于最速下降方向pk = −∇fk,天然的cos θk = 1,则自然满足收敛性。
收敛速度
记x*为局部的最优解 ### Q收敛速度
次线性收敛
线性收敛
超线性收敛
二次收敛
R收敛速度(类似于比较收敛)
- k充分大
例子
2−k是Q线性
22−k是二次线性
梯度下降法
关于凸函数性质的理解
在数学上,我们应当有这样的直觉:
- 李普希兹连续保证了我们的研究函数有二次上界
- 强凸这一性质保证了研究函数大于了一个二次下界
proof:李普希兹连续->二次上界
命题:若f可微,∇fLipschitz连续,则f有二次上界:
证明: 记 g(θ) = f(x + θ(y − x))
原命题变为证明
= ∫01(∇f(x + θ(y − x))T ⋅ (y − x) − ∇f(x)T(y − x))dθ
≤ ∫01L||θ(y − x)||⋅||y − x||dθ
证毕
凸函数:梯度下降法收敛性分析
先引入一种求解α最小上界的思路
回到算法本身
x的更新公式为 xk + 1 = xk − αk∇f(xk)
根据二次上界不等式可得
由凸函数的性质可知:f* > f(xk) − ∇f(xk)⊤(xk − x*)
由于
$$
进一步有
由于fk单调下降,因此
重要的引理:白老爹定理
强凸函数应用梯度下降法的收敛性分析
- 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*)寻找一个合适的下界
带入原始的式子