机器学习笔记之优化算法——线搜索方法[步长角度,非精确搜索,Armijo Condition]
引言
上一节介绍了线搜索方法使用非精确搜索近似求解最优步长的过程中,讨论了 f ( x k + 1 ) < f ( x k ) f(x_{k+1}) < f(x_k) f(xk+1)<f(xk)与 { f ( x k ) } k = 0 ∞ ⇒ f ∗ \{f(x_k)\}_{k=0}^{\infty} \Rightarrow f^* {f(xk)}k=0∞⇒f∗之间的条件关系。本节以该条件关系为引,介绍 Armijo Condition \text{Armijo Condition} Armijo Condition。
回顾:
关于 f ( x k + 1 ) = ϕ ( α ) f(x_{k+1}) = \phi(\alpha) f(xk+1)=ϕ(α)的一些特性
在线搜索方法——步长角度(精确搜索)中介绍过,由于目标函数 f ( ⋅ ) f(\cdot) f(⋅)未知,导致我们没有办法得到 ϕ ( α ) = f ( x k + 1 ) \phi(\alpha) = f(x_{k+1}) ϕ(α)=f(xk+1)的精确函数,但并不妨碍我们了解一些关于 ϕ ( α ) \phi(\alpha) ϕ(α)的特性:
- 由于步长变量 α \alpha α具有物理意义,因而 α \alpha α存在下界 0 0 0,从而 ϕ ( 0 ) = f ( x k + 0 ⋅ P k ) = f ( x k ) \phi(0) = f(x_k + 0 \cdot \mathcal P_k) = f(x_k) ϕ(0)=f(xk+0⋅Pk)=f(xk);
- ϕ ( α ) \phi(\alpha) ϕ(α)在 α = 0 \alpha=0 α=0处的斜率 ∂ ϕ ( α ) ∂ α ∣ α = 0 \begin{aligned}\frac{\partial \phi(\alpha)}{\partial \alpha}|_{\alpha=0}\end{aligned} ∂α∂ϕ(α)∣α=0可表示成如下形式:
∂ ϕ ( α ) ∂ α ∣ α = 0 = ϕ ′ ( 0 ) = [ ∇ f ( x k + 0 ⋅ P k ) ] T ⋅ P k = [ ∇ f ( x k ) ] T ⋅ P k \begin{aligned} \frac{\partial \phi(\alpha)}{\partial \alpha}|_{\alpha=0} & = \phi'(0) \\ & = \left[\nabla f(x_k + 0 \cdot \mathcal P_k)\right]^T \cdot \mathcal P_k \\ & = \left[\nabla f(x_k)\right]^T \cdot \mathcal P_k \end{aligned} ∂α∂ϕ(α)∣α=0=ϕ′(0)=[∇f(xk+0⋅Pk)]T⋅Pk=[∇f(xk)]T⋅Pk
其中 P k \mathcal P_k Pk是一个单位向量,描述的是下降方向;而 ∇ f ( x k ) \nabla f(x_k) ∇f(xk)表示梯度方向。因而它们的内积有:
[ ∇ f ( x k ) ] T ⋅ P k < 0 [\nabla f(x_k)]^T \cdot \mathcal P_k < 0 [∇f(xk)]T⋅Pk<0
也就是说:无论 ϕ ( α ) \phi(\alpha) ϕ(α)是什么形式,该函数总会经过 [ 0 , f ( x k ) ] [0,f(x_k)] [0,f(xk)]点,且该点处的斜率 < 0 <0 <0恒成立。最终,该点的切线函数 l ( α ) l(\alpha) l(α)表示为:
l ( α ) = f ( x k ) + [ ∇ f ( x k ) ] T P k ⋅ α l(\alpha) = f(x_k) + [\nabla f(x_k)]^T \mathcal P_k \cdot \alpha l(α)=f(xk)+[∇f(xk)]TPk⋅α
非精确搜索近似求解最优步长的条件
关于最优化目标函数 min X ∈ R n f ( X ) \mathop{\min}\limits_{\mathcal X \in \mathbb R^n} f(\mathcal X) X∈Rnminf(X),使用线搜索方法获取一系列数值解 { x k } k = 0 ∞ \{x_k\}_{k=0}^{\infty} {xk}k=0∞:
x k + 1 = x k + α k ⋅ P k x_{k+1} = x_k + \alpha_k \cdot \mathcal P_k xk+1=xk+αk⋅Pk
最终目标希望:随着迭代过程的增加, x k x_k xk对应的目标函数结果 f ( x k ) f(x_k) f(xk)收敛到最小值 f ∗ f^* f∗:
{ f ( x k ) } k = 0 ∞ ⇒ f ∗ \{f(x_k)\}_{k=0}^{\infty} \Rightarrow f^* {f(xk)}k=0∞⇒f∗
我们不否认:如果实现该目标,必然需要数值解序列对应的目标函数结果 { f ( x k ) } k = 0 ∞ \{f(x_k)\}_{k=0}^{\infty} {f(xk)}k=0∞满足严格的单调性:
在最优解
α k \alpha_k αk没有求出之前,将步长视作一个变量
α \alpha α。观察
f ( x k + α ⋅ P k ) f(x_k + \alpha \cdot \mathcal P_k) f(xk+α⋅Pk),由于
x k , P k x_k,\mathcal P_k xk,Pk都是已知/被固定的量,因此该式子中仅包含一个标量变量
α \alpha α,以此将
f ( x k + 1 ) f(x_{k+1}) f(xk+1)视作仅关于
α \alpha α的函数,记作
ϕ ( α ) \phi(\alpha) ϕ(α)。
{ f ( x k + 1 ) = f ( x k + α ⋅ P k ) = ϕ ( α ) ϕ ( α ) = f ( x k + 1 ) < f ( x k ) = ϕ ( 0 ) \begin{cases} \begin{aligned} & f(x_{k+1}) = f(x_k + \alpha \cdot \mathcal P_k) = \phi(\alpha) \\ & \phi(\alpha) = f(x_{k+1}) < f(x_k) = \phi(0) \end{aligned} \end{cases} {f(xk+1)=f(xk+α⋅Pk)=ϕ(α)ϕ(α)=f(xk+1)<f(xk)=ϕ(0)
但如果 { f ( x k ) } k = 0 ∞ \{f(x_{k})\}_{k=0}^{\infty} {f(xk)}k=0∞仅仅满足严格的单调性,并无法证明 { f ( x k ) } k = 0 ∞ ⇒ f ∗ \{f(x_k)\}_{k=0}^{\infty} \Rightarrow f^* {f(xk)}k=0∞⇒f∗。也就是说,这仅仅是一个必要不充分条件。
关于条件不充分的反例,见上一节
传送门。
Armijo Condition \text{Armijo Condition} Armijo Condition
可以看出,条件 f ( x k + 1 ) < f ( x k ) f(x_{k+1}) < f(x_k) f(xk+1)<f(xk)的约束能力是松散的,因为该条件并没有考虑到目标函数 f ( ⋅ ) f(\cdot) f(⋅)的复杂性。假设关于 ϕ ( α ) \phi(\alpha) ϕ(α)的函数图像表示如下(蓝色曲线):
其中红色直线描述 f ( x k + 1 ) = ϕ ( α ) = f ( x k ) f(x_{k+1}) = \phi(\alpha) = f(x_k) f(xk+1)=ϕ(α)=f(xk)的情况。如果按照条件 f ( x k + 1 ) < f ( x k ) f(x_{k+1}) < f(x_k) f(xk+1)<f(xk)的描述,那么红色线下方 ϕ ( α ) \phi(\alpha) ϕ(α)图像对应的 α \alpha α结果均满足约束条件。
而 Armijo Condition \text{Armijo Condition} Armijo Condition将 f ( x k ) < f ( x k + 1 ) f(x_k) < f(x_{k+1}) f(xk)<f(xk+1)这个条件之所以松散归结为:在 ϕ ( α ) \phi(\alpha) ϕ(α)函数中,满足 f ( x k + 1 ) < f ( x k ) f(x_{k+1})<f(x_k) f(xk+1)<f(xk)条件下,可选择的步长 α \alpha α结果过多,从而更不容易选择出最优步长。
基于这种动机, Armijo Condition \text{Armijo Condition} Armijo Condition的想法是:通过一种约束方法,基于该方法下有效降低步长 α \alpha α的选择范围。那么如何构造这种方法 ? ? ?
- 回顾上图:关于初始点 ϕ ( 0 ) = f ( x k ) \phi(0) = f(x_k) ϕ(0)=f(xk)处的切线函数 l ( α ) l(\alpha) l(α)(橙色线)。由于切线的原因,导致局部范围内,在该切线下方范围内找出一个有效的 α \alpha α取值是极难的。
这里主要关注的是‘凸函数’,在局部范围内如果是个凸函数,不可能在切线下方找到有效的
α \alpha α值。
- 但这也仅限于局部范围内。如果在全局范围内,这种值还是有可能存在的。例如下面的 ϕ ( α ) \phi(\alpha) ϕ(α)图像:
从上图可以看出,关于过 [ 0 , ϕ ( 0 ) ] [0,\phi(0)] [0,ϕ(0)]的切线函数下方可能存在可选择的步长,并且从图像上观察,该步长范围的映射结果非常优秀。但实际上我们并不清楚 ϕ ( α ) \phi(\alpha) ϕ(α)的真实形状,但可以肯定的是:如果将 [ 0 , ϕ ( 0 ) ] [0,\phi(0)] [0,ϕ(0)]位置的切线作为约束条件,该切线筛选出的 α \alpha α数量相比 f ( x k + 1 ) = f ( x k ) f(x_{k+1}) = f(x_k) f(xk+1)=f(xk)明显减少,甚至是苛刻的。
上图仅是我们构想出的示例,实际上也可能会出现‘在切线
l ( α ) l(\alpha) l(α)下方,没有任何
ϕ ( α ) \phi(\alpha) ϕ(α)图像的情况。这会使切线
l ( α ) l(\alpha) l(α)自身作为约束条件返回的
α \alpha α范围不稳定甚至是
空集。因而我们需要选出一个位于
f ( x k + 1 ) = f ( x k ) f(x_{k+1}) = f(x_k) f(xk+1)=f(xk)与
l ( α ) l(\alpha) l(α)之间的直线作为判别条件。
L ( α ) = f ( x k ) + C 1 ⋅ α [ ∇ f ( x k ) ] T P k C 1 ∈ ( 0 , 1 ) \mathcal L(\alpha) = f(x_k) + \mathcal C_1 \cdot \alpha [\nabla f(x_k)]^T \mathcal P_k \quad \mathcal C_1 \in (0,1) L(α)=f(xk)+C1⋅α[∇f(xk)]TPkC1∈(0,1) - 其中 C 1 ∈ ( 0 , 1 ) \mathcal C_1 \in (0,1) C1∈(0,1)相当于以 f ( x k ) f(x_k) f(xk)为中心,在 l ( α ) l(\alpha) l(α)与 f ( x k + 1 ) = f ( x k ) f(x_{k+1}) = f(x_k) f(xk+1)=f(xk)所围成的范围内选择合适的斜率,从而得到相应的约束条件:
由于
f ( x k + 1 ) = f ( x k ) f(x_{k+1}) = f(x_k) f(xk+1)=f(xk)自身斜率为
0 0 0,因而
L ( α ) \mathcal L(\alpha) L(α)斜率
C 1 ⋅ [ ∇ f ( x k ) ] T P k C 1 ∈ ( 0 , 1 ) \mathcal C_1 \cdot \left[\nabla f(x_k)\right]^T\mathcal P_k \quad\mathcal C_1 \in (0,1) C1⋅[∇f(xk)]TPkC1∈(0,1)可看作是从
{ 0 , [ ∇ f ( x k ) ] T P k } \{0, [\nabla f(x_k)]^T\mathcal P_k\} {0,[∇f(xk)]TPk}范围内滑动产生的斜率结果,并作为筛选
α \alpha α的约束条件
。关于新的约束条件见
绿色线,可以看出,可以通过调节参数
C 1 \mathcal C_1 C1,从而约束
α \alpha α的可选择范围。
从上图可以看出:
- 关于新的约束函数 L ( α ) \mathcal L(\alpha) L(α),其斜率 C 1 ⋅ [ ∇ f ( x k ) ] T \mathcal C_1 \cdot \left[\nabla f(x_k)\right]^T C1⋅[∇f(xk)]T的上界是 0 0 0,对应 L ( α ) = f ( x k ) \mathcal L(\alpha) = f(x_k) L(α)=f(xk);
- 对应地,其斜率 C 1 ⋅ [ ∇ f ( x k ) ] T P k \mathcal C_1 \cdot \left[\nabla f(x_k)\right]^T\mathcal P_k C1⋅[∇f(xk)]TPk的下界是 [ ∇ f ( x k ) ] T P k \left[\nabla f(x_k)\right]^T\mathcal P_k [∇f(xk)]TPk,对应 L ( α ) = l ( α ) \mathcal L(\alpha) = l(\alpha) L(α)=l(α);
从而将 ϕ ( α ) ≤ f ( x k ) + C 1 ⋅ [ ∇ f ( x k ) ] T P k ⋅ α \phi(\alpha) \leq f(x_{k}) + \mathcal C_1 \cdot \left[\nabla f(x_k)\right]^T \mathcal P_k \cdot \alpha ϕ(α)≤f(xk)+C1⋅[∇f(xk)]TPk⋅α称作 Armijo Condition \text{Armijo Condition} Armijo Condition。
相关参考:
【优化算法】线搜索方法-步长-Armijo Condition