Numerical Optimization Ch3. Line Search Methods

第三章: 线搜索算法


线搜索的迭代格式, 如前所述 x k + 1 = x k + α k p k . x_{k+1}=x_k+\alpha_kp_k. xk+1=xk+αkpk.第二章中, 我们提到了常用的搜索方向: 最速下降方向、牛顿方向、拟牛顿方向、共轭方向. 这章我们补齐 关于搜索步长 α k \alpha_k αk的讨论, 并探讨 α k , p k \alpha_k,p_k αk,pk的选取与 全局收敛性的关系, 证明最速下降法、拟牛顿法和牛顿法的 (局部) 收敛速度. 至于共轭梯度法, 我们放到后面.

1. 搜索步长的选取

在选取步长时, 我们将面临取舍: 既想给予 f f f充分的下降, 又不想在做决策时消耗过多. 最理想的步长自当是 arg ⁡ min ⁡ α ϕ ( α ) = f ( x k + α p k ) , α > 0. \arg\min_{\alpha}\phi(\alpha)=f(x_k+\alpha p_k),\quad \alpha>0. argαminϕ(α)=f(xk+αpk),α>0.但一般来说, 找到 ϕ ( α ) \phi(\alpha) ϕ(α)全局极小甚至是局部极小都是非常昂贵的 (需多次获取 f , ∇ f f,\nabla f f,f). 因此, 不精确线搜索往往更加实用.
典型的步长搜索算法通过尝试一系列 α \alpha α值, 直至满足停机准则. 一般包括两个阶段:

  1. 确定区间 (bracketing phase). 即找到包含满足条件 α \alpha α的区间.
  2. 二分或插值 (bisection or interpolation phase) . 用于在区间内计算满足条件的 α \alpha α.

我们在细化这两个阶段前先来谈谈停机准则. 直观上, α k \alpha_k αk需要能带来 f f f的下降, 即 f ( x k + α k p k ) &lt; f ( x k ) . f(x_k+\alpha_kp_k)&lt;f(x_k). f(xk+αkpk)<f(xk). 但我们有反例说明, 光下降是不够的, 比如
不充分下降
图中函数的最小值为 f ∗ = − 1 f^*=-1 f=1, 但一系列迭代点 { x k } \{x_k\} {xk}上的函数值为 f ( x k ) = 5 / k , &ThinSpace; k = 0 , 1 , … . f(x_k)=5/k,\,k=0,1,\ldots. f(xk)=5/k,k=0,1,. 此例中, 尽管每一步迭代都带来了函数值下降, 但最后却没能收敛到极小点. 为此, 我们需要选出的 α \alpha α能带来"充分(sufficient)"下降.

1.1 Wolfe条件

由之前讨论, 不精确线搜索应当保证 f f f充分下降, 即 f ( x k + α k p k ) ≤ f ( x k ) + c 1 α k ∇ f k T p k , c i ∈ ( 0 , 1 ) . f(x_k+\alpha_k p_k)\le f(x_k)+c_1\alpha_k\nabla f_k^Tp_k,\quad c_i\in(0,1). f(xk+αkpk)f(xk)+c1αkfkTpk,ci(0,1).也就是说 x k + α p k x_k+\alpha p_k xk+αpk处的函数值应当位于直线 l ( α ) = f ( x k ) + c 1 α ∇ f k T p k l(\alpha)=f(x_k)+c_1\alpha\nabla f_k^Tp_k l(α)=f(xk)+c1αfkTpk下面. 这点用图像说明更加直观. 充分下降条件也称为Armijo条件.
充分下降条件
图中 l ( α ) l(\alpha) l(α)以下的部分均是 α \alpha α的"合理"采集点. 一般 c 1 c_1 c1 1 0 − 4 10^{-4} 104. 但充分下降条件似乎不能保证算法较好地收敛, 譬如从上图就可看出, 任一充分小的 α \alpha α都能带来所谓的充分下降. 为了避免选中特别小的 α \alpha α, 我们再附加一个曲率条件 (curvature condition) : ∇ f ( x k + α k p k ) T p k ≥ c 2 ∇ f k T p k , c 2 ∈ ( c 1 , 1 ) . \nabla f(x_k+\alpha_kp_k)^Tp_k\ge c_2\nabla f_k^Tp_k,\quad c_2\in(c_1,1). f(xk+αkpk)Tpkc2fkTpk,c2(c1,1).注意上面不等式的左边就是 ϕ ′ ( α k ) \phi&#x27;(\alpha_k) ϕ(αk), 右边是 ϕ ′ ( 0 ) \phi&#x27;(0) ϕ(0). 这一点可以解释成, 若当前的 ϕ ′ ( α ) \phi&#x27;(\alpha) ϕ(α)为"相当负"的数, 那就说明 f f f沿着这个方向走更远能够得到更多的下降; 若 ϕ ′ ( α k ) \phi&#x27;(\alpha_k) ϕ(αk)不是"那么负"或者干脆是正数, 那也就是说我们不能期望继续沿着当前方向搜索会得到更好的函数值下降, 从而终止搜索. c 2 c_2 c2一般取0.9或0.1.1 为什么称此条件为曲率条件? 个人认为, 它间接地表现了函数在局部极小点附近的凸性.2 关于曲率条件的图示如下.
曲率条件
将充分下降条件和曲率条件合起来就是Wolfe条件: f ( x k + α k p k ) ≤ f ( x k ) + c 1 α k ∇ f k T p k , ∇ f ( x k + α k p k ) T p k ≥ c 2 ∇ f k T p k , \begin{aligned}f(x_k+\alpha_kp_k)&amp;\le f(x_k)+c_1\alpha_k\nabla f_k^Tp_k,\\\nabla f(x_k+\alpha_kp_k)^Tp_k&amp;\ge c_2\nabla f_k^Tp_k,\end{aligned} f(xk+αkpk)f(xk+αkpk)Tpkf(xk)+c1αkfkTpk,c2fkTpk,其中 0 &lt; c 1 &lt; c 2 &lt; 1 0&lt;c_1&lt;c_2&lt;1 0<c1<c2<1.
Wolfe条件还可加强为强Wolfe条件, 而这区别在于曲率条件: f ( x k + α k p k ) ≤ f ( x k ) + c 1 α k ∇ f k T p k , ∣ ∇ f ( x k + α k p k ) T p k ∣ ≤ c 2 ∣ ∇ f k T p k ∣ . \begin{aligned}f(x_k+\alpha_kp_k)&amp;\le f(x_k)+c_1\alpha_k\nabla f_k^Tp_k,\\|\nabla f(x_k+\alpha_kp_k)^Tp_k|&amp;\le c_2|\nabla f_k^Tp_k|.\end{aligned} f(xk+αkpk)f(xk+αkpk)Tpkf(xk)+c1αkfkTpk,c2fkTpk.这一条件强制 α k \alpha_k αk位于局部极小点的一个邻域中.3 此外, 我们不再允许 ϕ ′ ( α k ) \phi&#x27;(\alpha_k) ϕ(αk)取正值, 从而排除了距稳定点较远的点.

利用微分中值定理不难证明, 对于光滑有下界的函数 f f f, 满足(强)Wolfe条件的 α k \alpha_k αk总是存在的.
定理1 f : R n → R f:\mathbb{R}^n\to\mathbb{R} f:RnR连续可微, p k p_k pk为在 x k x_k xk处的一个下降方向. 假设 f f f沿直线 { x k + α p k ∣ α &gt; 0 } \{x_k+\alpha p_k|\alpha&gt;0\} {xk+αpkα>0}有界. 则对于 0 &lt; c 1 &lt; c 2 &lt; 1 0&lt;c_1&lt;c_2&lt;1 0<c1<c2<1, 存在满足(强)Wolfe条件的步长 (区间) .
证明: 由条件得 ϕ ( α ) = f ( x k + α p k ) , α &gt; 0 \phi(\alpha)=f(x_k+\alpha p_k), \alpha&gt;0 ϕ(α)=f(xk+αpk),α>0下有界. 由于 0 &lt; c 1 &lt; 1 0&lt;c_1&lt;1 0<c1<1, 且 l ( α ) = f ( x k ) + α c 1 ∇ f k T p k l(\alpha)=f(x_k)+\alpha c_1\nabla f_k^Tp_k l(α)=f(xk)+αc1fkTpk下无界, 因此 l ( α ) l(\alpha) l(α)必与 ϕ ( α ) \phi(\alpha) ϕ(α)交于一点. 设 α ′ \alpha&#x27; α为第一个交点, 即有 f ( x k + α ′ p k ) = f ( x k ) + α ′ c 1 ∇ f k T p k . f(x_k+\alpha&#x27;p_k)=f(x_k)+\alpha&#x27;c_1\nabla f_k^Tp_k. f(xk+αpk)=f(xk)+αc1fkTpk.对于小于 α ′ \alpha&#x27; α α \alpha α, 充分下降条件显然成立. 由微分中值定理, 存在 α ′ ′ ∈ ( 0 , α ′ ) \alpha&#x27;&#x27;\in(0,\alpha&#x27;) α(0,α)使得 f ( x k + α ′ p k ) − f ( x k ) = α ′ ∇ f ( x k + α ′ ′ p k ) T p k . f(x_k+\alpha&#x27;p_k)-f(x_k)=\alpha&#x27;\nabla f(x_k+\alpha&#x27;&#x27;p_k)^Tp_k. f(xk+αpk)f(xk)=αf(xk+αpk)Tpk.组合上面两式, 就有 ∇ f ( x k + α ′ ′ p k ) T p k = c 1 ∇ f k T p k ≥ c 2 ∇ f k T p k . \nabla f(x_k+\alpha&#x27;&#x27;p_k)^Tp_k=c_1\nabla f_k^Tp_k\ge c_2\nabla f_k^Tp_k. f(xk+αpk)Tpk=c1fkTpkc2fkTpk.这是由于 c 1 &lt; c 2 c_1&lt;c_2 c1<c2 ∇ f k T p k &lt; 0 \nabla f_k^Tp_k&lt;0 fkTpk<0. 因此, 满足Wolfe条件的步长存在 (由 f f f得光滑性, 也必定存在满足Wolfe条件的步长区间). 另外, 由上式左端是负数, 因此同时证明了强Wolfe条件的情形.

1.2 Goldstein条件

如同Wolfe条件, Goldstein条件也保证充分下降以及不会取到过小的步长. 数学表达如下: f ( x k ) + ( 1 − c ) α k ∇ f k T p k ≤ f ( x k + α k p k ) ≤ f ( x k ) + c α k ∇ f k T p k , 0 &lt; c &lt; 1 / 2. f(x_k)+(1-c)\alpha_k\nabla f_k^Tp_k\le f(x_k+\alpha_kp_k)\le f(x_k)+c\alpha_k\nabla f_k^Tp_k,\quad0&lt;c&lt;1/2. f(xk)+(1c)αkfkTpkf(xk+αkpk)f(xk)+cαkfkTpk,0<c<1/2.图示如下.
Goldstein条件

如图, 我们发现Goldstein条件可能会排除 ϕ \phi ϕ的所有极小点. 不过两条件还是有很多相似的地方, 包括它们的收敛理论. Goldstein条件常用于牛顿类算法, 但却不适用于拟牛顿算法. 这是因为后者需要保持Hessian逼近的正定性.

1.3 充分下降与回溯

回溯可以在一定程度上替代曲率条件. 它运作的机制是, 从较大的 α ˉ \bar{\alpha} αˉ开始, 不断乘以缩减因子 ρ \rho ρ, 直到缩减后的 α \alpha α满足充分下降条件. 其最基本的算法形式如下:

算法1 回溯线搜索
Choose α ˉ &gt; 0 , ρ ∈ ( 0 , 1 ) , c ∈ ( 0 , 1 ) \bar{\alpha}&gt;0,\rho\in(0,1),c\in(0,1) αˉ>0,ρ(0,1),c(0,1); Set α ← α ˉ \alpha\leftarrow\bar{\alpha} ααˉ;
repeat until f ( x k + α p k ) ≤ f ( x k ) + c α ∇ f k T p k f(x_k+\alpha p_k)\le f(x_k)+c\alpha\nabla f_k^Tp_k f(xk+αpk)f(xk)+cαfkTpk
α ← ρ α \quad\quad\quad\alpha\leftarrow\rho\alpha αρα
end (repeat)
Terminate with α k = α \alpha_k=\alpha αk=α.

对于牛顿或拟牛顿法, 初始 α ˉ \bar{\alpha} αˉ选取为1, 而对于其他诸如最速下降法的算法, 选取各有不同标准. 缩减因子 ρ \rho ρ在每步迭代也可改变, 事实上只需保证 ρ ∈ [ ρ l o , ρ h i ] \rho\in[\rho_{lo},\rho_{hi}] ρ[ρlo,ρhi], 其中 ρ l o , ρ h i \rho_{lo},\rho_{hi} ρlo,ρhi分别为区间下界和上界.
这一简单的搜索策略适用于牛顿法, 但不适用于拟牛顿法和共轭梯度法. 这在后面会进一步讨论.

2. 线搜索的收敛性

本节讨论线搜索算法的全局收敛性. 这里要用到在第二章中定义的, p k p_k pk与负梯度 − ∇ f k -\nabla f_k fk的夹角 θ k \theta_k θk, 有 cos ⁡ θ k = − ∇ f k T p k ∥ ∇ f k ∥ ∥ p k ∥ . \cos\theta_k=\frac{-\nabla f_k^Tp_k}{\Vert \nabla f_k\Vert\Vert p_k\Vert}. cosθk=fkpkfkTpk.下面叙述并证明著名的Zoutendijk定理, 其中提出Zoutendijk条件. 该条件可用于证明广泛算法的全局收敛性. 从定理的叙述和证明的过程中, 我们可以体会到 α k \alpha_k αk p k p_k pk选取的重要性.

定理2 (Zoutendijk定理) 考虑任一一种以 x k + 1 = x k + α k p k x_{k+1}=x_k+\alpha_kp_k xk+1=xk+αkpk迭代的算法, 其中 p k p_k pk为下降方向, α k \alpha_k αk满足Wolfe条件. 设 f f f R n \mathbb{R}^n Rn下有界, 且 f f f在包含水平集 L = { x : f ( x ) ≤ f ( x 0 ) } \mathcal{L}=\{x:f(x)\le f(x_0)\} L={x:f(x)f(x0)}的一个开集 N \mathcal{N} N中连续可微, 其中 x 0 x_0 x0为迭代的初始点. 设 ∇ f \nabla f f N \mathcal{N} N上Lipschitz连续, 即存在 L &gt; 0 L&gt;0 L>0使得 ∥ ∇ f ( x ) − ∇ f ( x ~ ) ∥ ≤ L ∥ x − x ~ ∥ , ∀ x , x ~ ∈ N . \Vert\nabla f(x)-\nabla f(\tilde{x})\Vert\le L\Vert x-\tilde{x}\Vert,\quad\forall x,\tilde{x}\in\mathcal{N}. f(x)f(x~)Lxx~,x,x~N.则该算法满足Zoutendijk条件 ∑ k ≥ 0 cos ⁡ 2 θ k ∥ ∇ f k ∥ 2 &lt; ∞ . \sum_{k\ge0}\cos^2\theta_k\Vert\nabla f_k\Vert^2&lt;\infty. k0cos2θkfk2<.证明: 由曲率条件得 ( ∇ f k + 1 − ∇ f k ) T p k ≥ ( c 2 − 1 ) ∇ f k T p k , (\nabla f_{k+1}-\nabla f_k)^Tp_k\ge(c_2-1)\nabla f_k^Tp_k, (fk+1fk)Tpk(c21)fkTpk,而由Lipschitz条件可得 ( ∇ f k + 1 − ∇ f k ) T p k ≤ α k L ∥ p k ∥ 2 . (\nabla f_{k+1}-\nabla f_k)^Tp_k\le\alpha_kL\Vert p_k\Vert^2. (fk+1fk)TpkαkLpk2.结合上面两式, 得到 α k ≥ c 2 − 1 L ∇ f k T p k ∥ p k ∥ 2 . \alpha_k\ge\frac{c_2-1}{L}\frac{\nabla f_k^Tp_k}{\Vert p_k\Vert^2}. αkLc21pk2fkTpk.将此不等式代入充分下降条件, 推出 f k + 1 ≤ f k + c 1 α k ∇ f k T p k ≤ f k − c 1 1 − c 2 L ( ∇ f k T p k ) 2 ∥ p k ∥ 2 = f k − c cos ⁡ 2 θ k ∥ ∇ f k ∥ 2 . f_{k+1}\le f_k+c_1\alpha_k\nabla f_k^Tp_k\le f_k-c_1\frac{1-c_2}{L}\frac{(\nabla f_k^Tp_k)^2}{\Vert p_k\Vert^2}=f_k-c\cos^2\theta_k\Vert \nabla f_k\Vert^2. fk+1fk+c1αkfkTpkfkc1L1c2pk2(fkTpk)2=fkccos2θkfk2.其中 c = c 1 ( 1 − c 2 ) / L c=c_1(1-c_2)/L c=c1(1c2)/L. 上面的不等式对 k k k做累和, 得到 f k + 1 ≤ f 0 − c ∑ j = 0 k cos ⁡ 2 θ j ∥ ∇ f j ∥ 2 . f_{k+1}\le f_0-c\sum_{j=0}^k\cos^2\theta_j\Vert\nabla f_j\Vert^2. fk+1f0cj=0kcos2θjfj2.因为 f f f下有界, 所以 f 0 − f k + 1 f_0-f_{k+1} f0fk+1对于 k k k有一致上界 (小于正无穷) . 因此令 k → ∞ k\to\infty k, Zoutendijk条件成立: ∑ k = 0 ∞ cos ⁡ 2 θ k ∥ ∇ f k ∥ 2 &lt; ∞ . \sum_{k=0}^{\infty}\cos^2\theta_k\Vert\nabla f_k\Vert^2&lt;\infty. k=0cos2θkfk2<.
对于Goldstein条件和强Wolfe条件也有类似的定理, 且最终都会满足Zoutendijk条件. 注意Zoutendijk定理的条件并不苛刻: f f f下有界可以说是优化的必要条件; 而 ∇ f \nabla f f的Lipschitz连续性则对体现了函数的光滑性, 实际应用时一般也是满足的.
特别地, 从Zoutendijk条件我们可以得到对于线搜索算法的一类全局收敛判定方法. 我们先定义什么叫做全局收敛.

定义1 (全局收敛) 若迭代算法满足 lim ⁡ k → ∞ ∥ ∇ f k ∥ = 0 , \lim_{k\to\infty}\Vert\nabla f_k\Vert=0, klimfk=0,则称算法是全局收敛的.

算法的全局收敛并非指字面义上的收敛到全局极小点. 从定义上看, 事实上指的是收敛到稳定点. 只有在 p k p_k pk上加上二阶信息, 我们才有可能使得算法收敛到局部极小点. 回过头来看Zoutendijk条件: ∑ k = 0 ∞ cos ⁡ 2 θ k ∥ ∇ f k ∥ 2 &lt; ∞ . \sum_{k=0}^{\infty}\cos^2\theta_k\Vert\nabla f_k\Vert^2&lt;\infty. k=0cos2θkfk2<. cos ⁡ θ k ≥ δ &gt; 0 , ∀ k \cos\theta_k\ge\delta&gt;0,\forall k cosθkδ>0,k, 则直接由Zoutendijk条件得到全局收敛性. 这就是说, 只要我们能够保证

  1. 算法产生的搜索方向 p k p_k pk − ∇ f k -\nabla f_k fk的正交方向有一致的距离;
  2. 找寻的 α k \alpha_k αk满足Wolfe条件,

那么算法就是全局收敛的. 注意我们这只用到了级数收敛的必要条件, 还未将有限和条件纳入. 我们将利用它来证明序列 { cos ⁡ 2 θ k ∥ ∇ f k ∥ 2 } \{\cos^2\theta_k\Vert\nabla f_k\Vert^2\} {cos2θkfk2}的快速收敛. 下面我们来讨论之前叙述的算法的全局收敛性.

  1. 最速下降法显然是全局收敛的, 因为夹角 θ k ≡ 0 \theta_k\equiv0 θk0.
  2. 牛顿类算法. 假设模型中的 B k B_k Bk (牛顿法中是Hessian矩阵, 拟牛顿法中是Hessian矩阵的近似)正定且条件数一致有界, 即存在 M &gt; 0 M&gt;0 M>0, ∥ B k ∥ ∥ B k − 1 ∥ ≤ M , ∀ k . \Vert B_k\Vert\Vert B_k^{-1}\Vert\le M,\quad \forall k. BkBk1M,k.从这一点可以证得在2-范数下 (限于本人水平, 未证出其他范数下是否成立) , cos ⁡ θ k ≥ 1 M , ∀ k \cos\theta_k\ge\frac{1}{M},\quad\forall k cosθkM1,k. 事实上, cos ⁡ θ k = − ∇ f k T p k ∥ ∇ f k ∥ ∥ p k ∥ = ∇ f k T B k − 1 ∇ f k ∥ B k − 1 ∇ f k ∥ ∥ ∇ f k ∥ ≥ ∇ f k T B k − 1 ∇ f k ∥ B k − 1 ∇ f k ∥ ∥ B k ∥ ∥ B k − 1 ∇ f k ∥ ( ∵ ∥ ∇ f k ∥ ≤ ∥ B k ∥ ∥ B k − 1 ∇ f k ∥ , 范 数 相 容 性 ) ≥ ( ∇ f k T B k − 1 ∇ f k ) ∥ B k − 1 ∥ ∇ f k T B k − 1 B k − 1 ∇ f k ⋅ 1 M . ( ∵ 条 件 数 的 一 致 有 界 性 ) \begin{aligned}\cos\theta_k=\frac{-\nabla f_k^Tp_k}{\Vert\nabla f_k\Vert\Vert p_k\Vert}&amp;=\frac{\nabla f_k^TB_k^{-1}\nabla f_k}{\Vert B_k^{-1}\nabla f_k\Vert\Vert\nabla f_k\Vert}\\&amp;\ge\frac{\nabla f_k^TB_k^{-1}\nabla f_k}{\Vert B_k^{-1}\nabla f_k\Vert\Vert B_k\Vert\Vert B_k^{-1}\nabla f_k\Vert}(\because \Vert \nabla f_k\Vert\le\Vert B_k\Vert\Vert B_k^{-1}\nabla f_k\Vert, 范数相容性)\\&amp;\ge\frac{(\nabla f_k^TB_k^{-1}\nabla f_k)\Vert B_k^{-1}\Vert}{\nabla f_k^TB_k^{-1}B_k^{-1}\nabla f_k}\cdot\frac{1}{M}.(\because 条件数的一致有界性)\end{aligned} cosθk=fkpkfkTpk=Bk1fkfkfkTBk1fkBk1fkBkBk1fkfkTBk1fk(fkBkBk1fk,)fkTBk1Bk1fk(fkTBk1fk)Bk1M1.() B k B_k Bk的特征值分解为 B k = U k Σ k U k − 1 B_k=U_k\Sigma_k U_k^{-1} Bk=UkΣkUk1, 其中 U U U为正交矩阵, Σ \Sigma Σ为对角矩阵, 对角元为 λ 1 ( k ) ≥ ⋯ ≥ λ n ( k ) &gt; 0 \lambda_1^{(k)}\ge\cdots\ge\lambda_n^{(k)}&gt;0 λ1(k)λn(k)>0. 记 ∇ f k T U k = ( z 1 , … , z n ) ≠ 0 \nabla f_k^TU_k=(z_1,\ldots,z_n)\ne0 fkTUk=(z1,,zn)̸=0且根据2-范数的性质, ∥ B k − 1 ∥ \Vert B_k^{-1}\Vert Bk1就是 B k − 1 B_k^{-1} Bk1的最大特征(奇异)值, 即 ∥ B k − 1 ∥ = 1 / λ n ( k ) \Vert B_k^{-1}\Vert=1/\lambda_n^{(k)} Bk1=1/λn(k). 所以上面不等式的最后右端项为 ( ∇ f k T B k − 1 ∇ f k ) ∥ B k − 1 ∥ ∇ f k T B k − 1 B k − 1 ∇ f k ⋅ 1 M = ( ∑ i = 0 n 1 λ i ( k ) z i 2 ) 1 λ n ( k ) ∑ i = 0 n ( 1 λ i ( k ) ) 2 z i 2 ⋅ 1 M ≥ 1 M , ∀ k . \frac{(\nabla f_k^TB_k^{-1}\nabla f_k)\Vert B_k^{-1}\Vert}{\nabla f_k^TB_k^{-1}B_k^{-1}\nabla f_k}\cdot\frac{1}{M}=\frac{\left(\sum\limits_{i=0}^n\frac{1}{\lambda_i^{(k)}}z_i^2\right)\frac{1}{\lambda_n^{(k)}}}{\sum\limits_{i=0}^n\left(\frac{1}{\lambda_i^{(k)}}\right)^2z_i^2}\cdot\frac{1}{M}\ge\frac{1}{M},\quad \forall k. fkTBk1Bk1fk(fkTBk1fk)Bk1M1=i=0n(λi(k)1)2zi2(i=0nλi(k)1zi2)λn(k)1M1M1,k.根据之前的推导就可得全局收敛性.
  3. 共轭梯度法. 此时我们只能证明弱全局收敛性 , 即 lim&ThinSpace;inf ⁡ k → ∞ ∥ ∇ f k ∥ = 0. \liminf_{k\to\infty}\Vert\nabla f_k\Vert=0. kliminffk=0.这也就是说, 我们只能证明有梯度范数序列的一个子列 { ∥ ∇ f k j ∥ } \{\Vert\nabla f_{k_j}\Vert\} {fkj}收敛. 与之前的正面证明不同, 我们将在后面用反证法证之. 那么所谓的"弱全局收敛性"有什么用呢?事实上, 我们可以从定理的证明中得到一些规律: 简洁的定理难证, 复杂的定理好证. 所谓的"弱全局收敛性"一般要比全局收敛性要好证得多, 而在实际应用中, 我们以梯度范数序列的收敛作为算法收敛的判定条件. 若我们证明了"弱全局收敛性", 那就说明存在梯度范数序列的子列收敛, 算法最终必定是收敛的; 另一方面, "弱全局收敛"与全局收敛的应用界限并没有那么明确. 我们往往可以加上较为实际的条件达成全局收敛.

至此, 我们已经证明了一些通用算法的全局收敛性. 事实上, 为了保证算法的弱全局收敛, 我们可以这样构造线搜索算法:

  1. 每步迭代都产生函数值的下降;
  2. m m m步迭代就采用一次负梯度作为搜索方向, 并在满足Wolfe条件或Goldstein条件时选取步长 α k \alpha_k αk.

这样尽管偶尔的最速下降不一定能产生多大的下降, 但却可以保证"总体"上的收敛性 (因为有子列收敛) . 当然我们可以在非最速下降的迭代步上做一些功夫, 加速收敛.

3. 收敛速度

从之前的讨论我们可以得出结论: 设计全局收敛的算法似乎是很简单的. 我们仅仅需要搜索方向 p k p_k pk不会与负梯度 − ∇ f k -\nabla f_k fk垂直就行了, 而这点完全可以在每次生成搜索方向时附加角度检验 (angle test) 达到. 先给定一个阈值 (threshold) δ &gt; 0 \delta&gt;0 δ>0, 如果 cos ⁡ θ k ≥ δ \cos\theta_k\ge\delta cosθkδ就接受这一搜索方向; 如果 cos ⁡ θ k &lt; δ \cos\theta_k&lt;\delta cosθk<δ就不妨直接采用最速下降方向. 乍一看这样的设计天衣无缝. 事实上, 我们有两点原因使我们不去这么做:

  1. 能得到较快收敛速度的 p k p_k pk往往就与负梯度 − ∇ f k -\nabla f_k fk差不多垂直, 这点在病态问题上尤其突出. 并且 δ \delta δ的不恰当选取也会强行"过滤"掉一些好的搜索方向;
  2. 角度检验可能会影响拟牛顿算法的不变性质.

全局收敛性与局部的收敛速度是矛盾的, 我们需要根据问题找平衡 (tradeoffs) . 一方面, 具有全局收敛性的算法可能收敛速度不快, 比如下面要证实的, 最速下降法保证全局收敛却只有线性收敛速度; 另一方面, 具有较快收敛速度的算法不一定具有全局收敛性. 譬如上一节提到的牛顿法的全局收敛性, 是基于Hessian矩阵正定且条件数一致有界得到的. 换句话说若 x ∗ x^* x是局部极小点, x ∗ x^* x处的Hessian正定且 (比如说) Lipschitz连续, 则在离 x ∗ x^* x充分近的 x k x_k xk的确可以保证这些条件成立, 也即其收敛是局部性质. 若 x k x_k xk x ∗ x^* x较远, 我们无法证实其全局收敛, 甚至可能产生的 p k p_k pk都不是下降方向 (当然这可以通过做矩阵修正避免) . 因此真正的挑战在于: 设计算法, 使得它既有全局收敛性, 也有较好的收敛速度.

我们先来谈谈之前提到的算法的收敛速度如何.

3.1 最速下降法的收敛速度

先考虑目标函数为二次函数的特殊情形, 即 f ( x ) = 1 2 x T Q x − b T x , f(x)=\frac{1}{2}x^TQx-b^Tx, f(x)=21xTQxbTx,其中 Q Q Q是对称正定矩阵. 则全局极小点 x ∗ x^* x就是线性系统 A x = b Ax=b Ax=b的唯一解. 下面计算步长 α k \alpha_k αk. 函数 f ( x k − α ∇ f k ) = 1 2 ( x k − α ∇ f k ) T Q ( x k − α ∇ f k ) − b T ( x k − α ∇ f k ) f(x_k-\alpha\nabla f_k)=\frac{1}{2}(x_k-\alpha\nabla f_k)^TQ(x_k-\alpha\nabla f_k)-b^T(x_k-\alpha\nabla f_k) f(xkαfk)=21(xkαfk)TQ(xkαfk)bT(xkαfk) α \alpha α求导置零可得 α k = ∇ f k T ∇ f k ∇ f k T Q ∇ f k . \alpha_k=\frac{\nabla f_k^T\nabla f_k}{\nabla f_k^TQ\nabla f_k}. αk=fkTQfkfkTfk.如果我们使用 α k \alpha_k αk的精确表达式 (即精确线搜索步长) , 我们有迭代式 x k + 1 = x k − ( ∇ f k T ∇ f k ∇ f k T Q ∇ f k ) ∇ f k . x_{k+1}=x_k-\left(\frac{\nabla f_k^T\nabla f_k}{\nabla f_k^TQ\nabla f_k}\right)\nabla f_k. xk+1=xk(fkTQfkfkTfk)fk.由多元微积分的知识, 我们知道最速下降法的搜索方向与函数曲面等高线垂直, 因此在搜索时会出现锯齿现象 (zigzag) . 直观上, 这种现象影响了它的收敛速度, 尤其是到了迭代后期接近 x ∗ x^* x时.
为量化其收敛速度, 设加权范数 ∥ x ∥ Q 2 = x T Q x \Vert x\Vert_Q^2=x^TQx xQ2=xTQx. 所以 1 2 ∥ x − x ∗ ∥ Q 2 = 1 2 x T Q x + 1 2 ( x ∗ ) T Q x ∗ − x T Q x ∗ = 1 2 x T Q x + 1 2 b T x ∗ − b T x ( ∵ Q x ∗ = b ) = 1 2 x T Q x − b T x − ( 1 2 ( x ∗ ) T Q x ∗ − b T x ∗ ) = f ( x ) − f ( x ∗ ) . \begin{aligned}\frac{1}{2}\Vert x-x^*\Vert_Q^2&amp;=\frac{1}{2}x^TQx+\frac{1}{2}(x^*)^TQx^*-x^TQx^*\\&amp;=\frac{1}{2}x^TQx+\frac{1}{2}b^Tx^*-b^Tx(\because Qx^*=b)\\&amp;=\frac{1}{2}x^TQx-b^Tx-\left(\frac{1}{2}(x^*)^TQx^*-b^Tx^*\right)\\&amp;=f(x)-f(x^*).\end{aligned} 21xxQ2=21xTQx+21(x)TQxxTQx=21xTQx+21bTxbTx(Qx=b)=21xTQxbTx(21(x)TQxbTx)=f(x)f(x).因此这一范数度量了函数值的差. 代入迭代公式, 并注意 ∇ f k = Q ( x k − x ∗ ) \nabla f_k=Q(x_k-x^*) fk=Q(xkx)我们有 ∥ x k + 1 − x ∗ ∥ Q 2 = { 1 − ( ∇ f k T ∇ f k ) 2 ( ∇ f k T Q ∇ f k ) ( ∇ f k T Q − 1 ∇ f k ) } ∥ x k − x ∗ ∥ Q 2 . \Vert x_{k+1}-x^*\Vert_Q^2=\left\{1-\frac{(\nabla f_k^T\nabla f_k)^2}{(\nabla f_k^TQ\nabla f_k)(\nabla f_k^TQ^{-1}\nabla f_k)}\right\}\Vert x_k-x^*\Vert_Q^2. xk+1xQ2={1(fkTQfk)(fkTQ1fk)(fkTfk)2}xkxQ2.上面式子进一步可以得到 ∥ x k + 1 − x ∗ ∥ Q 2 ≤ ( λ n − λ 1 λ n + λ 1 ) 2 ∥ x k − x ∗ ∥ Q 2 , \Vert x_{k+1}-x^*\Vert_Q^2\le\left(\frac{\lambda_n-\lambda_1}{\lambda_n+\lambda_1}\right)^2\Vert x_k-x^*\Vert_Q^2, xk+1xQ2(λn+λ1λnλ1)2xkxQ2,其中 0 &lt; λ 1 ≤ ⋯ ≤ λ n 0&lt;\lambda_1\le\cdots\le\lambda_n 0<λ1λn Q Q Q的特征值. 关于上面两个式子的证明可见David Luenberger所著Introduction to Linear and Nonlinear Programming. 下面我们从另一个角度证明. 先证明一个引理.

引理1 P ( t ) P(t) P(t) t t t的一个多项式, 则 ∥ P ( Q ) x ∥ Q ≤ max ⁡ 1 ≤ i ≤ n ∣ P ( λ i ) ∣ ∥ x ∥ Q , x ∈ R n . \Vert P(Q)x\Vert_Q\le\max_{1\le i\le n}|P(\lambda_i)|\Vert x\Vert_Q,\quad x\in\mathbb{R}^n. P(Q)xQ1inmaxP(λi)xQ,xRn.证明: 设 u 1 , … , u n u_1,\ldots,u_n u1,,un Q Q Q对应于 λ 1 , … , λ n \lambda_1,\ldots,\lambda_n λ1,,λn的特征向量, 它们构成 R n \mathbb{R}^n Rn的一组标准正交基, 则对任一 x ∈ R n x\in\mathbb{R}^n xRn, 有 x = ∑ i = 1 n α i u i x=\sum_{i=1}^n\alpha_iu_i x=i=1nαiui, 从而 ∥ P ( Q ) x ∥ Q 2 = x T P ( Q ) Q P ( Q ) x = ( ∑ i = 1 n α i P ( λ i ) u i ) T Q ( ∑ i = 1 n α i P ( λ i ) u i ) = ∑ i = 1 n λ i α i 2 P 2 ( λ i ) ≤ max ⁡ 1 ≤ i ≤ n P 2 ( λ i ) ∑ i = 1 n λ i α i 2 = max ⁡ 1 ≤ i ≤ n P 2 ( λ i ) ∥ x ∥ Q 2 . \begin{aligned}\Vert P(Q)x\Vert_Q^2=x^TP(Q)QP(Q)x&amp;=\left(\sum_{i=1}^n\alpha_iP(\lambda_i)u_i\right)^TQ\left(\sum_{i=1}^n\alpha_iP(\lambda_i)u_i\right)\\&amp;=\sum_{i=1}^n\lambda_i\alpha_i^2P^2(\lambda_i)\le\max_{1\le i\le n}P^2(\lambda_i)\sum_{i=1}^n\lambda_i\alpha_i^2\\&amp;=\max_{1\le i\le n}P^2(\lambda_i)\Vert x\Vert_Q^2.\end{aligned} P(Q)xQ2=xTP(Q)QP(Q)x=(i=1nαiP(λi)ui)TQ(i=1nαiP(λi)ui)=i=1nλiαi2P2(λi)1inmaxP2(λi)i=1nλiαi2=1inmaxP2(λi)xQ2.因此得证. 下证误差估计式. ∥ x k + 1 − x ∗ ∥ Q 2 = ( x k + 1 − x ∗ ) Q ( x k + 1 − x ∗ ) ≤ ( x k − α ∇ f k − x ∗ ) T Q ( x k − α ∇ f k − x ∗ ) = [ ( I − α Q ) ( x k − x ∗ ) ] T Q [ ( I − α Q ) ( x k − x ∗ ) ] = ∥ ( I − α Q ) ( x k − x ∗ ) ∥ Q 2 . \begin{aligned}\Vert x_{k+1}-x^*\Vert_Q^2&amp;=(x_{k+1}-x^*)Q(x_{k+1}-x^*)\\&amp;\le(x_k-\alpha\nabla f_k-x^*)^TQ(x_k-\alpha\nabla f_k-x^*)\\&amp;=[(I-\alpha Q)(x_k-x^*)]^TQ[(I-\alpha Q)(x_k-x^*)]\\&amp;=\Vert (I-\alpha Q)(x_k-x^*)\Vert_Q^2.\end{aligned} xk+1xQ2=(xk+1x)Q(xk+1x)(xkαfkx)TQ(xkαfkx)=[(IαQ)(xkx)]TQ[(IαQ)(xkx)]=(IαQ)(xkx)Q2. P α ( t ) = 1 − α t P_{\alpha}(t)=1-\alpha t Pα(t)=1αt, 利用引理可得 ∥ x k + 1 − x ∗ ∥ Q 2 ≤ ∥ P α ( Q ) ( x k − x ∗ ) ∥ Q 2 ≤ max ⁡ 1 ≤ i ≤ n P α 2 ( λ i ) ∥ x k − x ∗ ∥ Q 2 \begin{aligned}\Vert x_{k+1}-x^*\Vert_Q^2&amp;\le\Vert P_{\alpha}(Q)(x_k-x^*)\Vert_Q^2\\&amp;\le\max_{1\le i\le n}P^2_{\alpha}(\lambda_i)\Vert x_k-x^*\Vert_Q^2\end{aligned} xk+1xQ2Pα(Q)(xkx)Q21inmaxPα2(λi)xkxQ2 ∀ α \forall \alpha α成立. 利用Chebyshev多项式的性质, 可得 min ⁡ α max ⁡ 1 ≤ i ≤ n ∣ 1 − α λ i ∣ = λ n − λ 1 λ n + λ 1 . \min_{\alpha}\max_{1\le i\le n}|1-\alpha\lambda_i|=\frac{\lambda_n-\lambda_1}{\lambda_n+\lambda_1}. αmin1inmax1αλi=λn+λ1λnλ1.代入即得 ∥ x k + 1 − x ∗ ∥ Q 2 ≤ ( λ n − λ 1 λ n + λ 1 ) 2 ∥ x k − x ∗ ∥ Q 2 . \Vert x_{k+1}-x^*\Vert_Q^2\le\left(\frac{\lambda_n-\lambda_1}{\lambda_n+\lambda_1}\right)^2\Vert x_k-x^*\Vert_Q^2. xk+1xQ2(λn+λ1λnλ1)2xkxQ2.从此误差估计可得:

  1. 最速下降法线性收敛. 特别地, 当所有的特征值相同时, 收敛一步完成, 此时 Q Q Q为纯量阵. 等高线呈圆形, 而负梯度则直接指向圆心;
  2. 由于 λ n − λ 1 λ n + λ 1 = λ n / λ 1 − 1 λ n / λ 1 + 1 = κ 2 ( Q ) − 1 κ 2 ( Q ) + 1 , \frac{\lambda_n-\lambda_1}{\lambda_n+\lambda_1}=\frac{\lambda_n/ \lambda_1-1}{\lambda_n/ \lambda_1+1}=\frac{\kappa_2(Q)-1}{\kappa_2(Q)+1}, λn+λ1λnλ1=λn/λ1+1λn/λ11=κ2(Q)+1κ2(Q)1, 其中 κ 2 ( ⋅ ) \kappa_2(\cdot) κ2()指代2-范数下的条件数, 因此 Q Q Q的最大特征值与最小特征值差得越大, 速度就越慢, 极端情况下会出现严重的锯齿现象. 因此最速下降法常作为头几步的运行算法.

对于一般的非线性函数, 我们在假设 α k \alpha_k αk为精确线搜索步长时, 有
定理3 假设 f : R n → R f:\mathbb{R}^n\to\mathbb{R} f:RnR二次连续可微, 最速下降法中的采用精确步长线搜索, 迭代项收敛到 x ∗ x^* x, 且Hessian矩阵 ∇ 2 f ( x ∗ ) \nabla^2 f(x^*) 2f(x)正定. 令 r r r为任一满足 r ∈ ( λ n − λ 1 λ n + λ 1 , 1 ) r\in\left(\frac{\lambda_n-\lambda_1}{\lambda_n+\lambda_1},1\right) r(λn+λ1λnλ1,1)的标量, 其中 λ 1 ≤ ⋯ ≤ λ n \lambda_1\le\cdots\le\lambda_n λ1λn ∇ 2 f ( x ∗ ) \nabla^2 f(x^*) 2f(x)的特征值. 则对于充分大的 k k k, 我们有 f ( x k + 1 − f ( x ∗ ) ≤ r 2 [ f ( x k ) − f ( x ∗ ) ] . f(x_{k+1}-f(x^*)\le r^2[f(x_k)-f(x^*)]. f(xk+1f(x)r2[f(xk)f(x)].
一般说来, 我们无法保证不精确线搜索步长下的收敛速度.

3.2 牛顿法

3.2.1 牛顿法的收敛速度

基于之前的讨论, 由于Hessian矩阵 ∇ 2 f k \nabla^2 f_k 2fk不一定正定, 因此产生的搜索方向 p k p_k pk不一定是下降方向. 这里我们先假设 ∇ 2 f ( x ) \nabla^2 f(x) 2f(x) x ∗ x^* x附近连续 (或Lipschitz连续) , ∇ 2 f ( x ∗ ) \nabla^2 f(x^*) 2f(x)正定从而 x ∗ x^* x的某个邻域内恒有 ∇ 2 f ( x ) \nabla^2 f(x) 2f(x)正定. 我们将证明牛顿法具有局部二次收敛性, 步长 α k ≡ 1 \alpha_k\equiv1 αk1.

定理4 假设 f f f二次可微, Hessian矩阵 ∇ 2 f ( x ) \nabla^2 f(x) 2f(x) x ∗ x^* x的一个邻域内Lipschitz连续, 在 x ∗ x^* x满足二阶充分条件. 考虑迭代式 x k + 1 = x k + p k x_{k+1}=x_k+p_k xk+1=xk+pk, 其中 p k p_k pk为牛顿步. 则

  1. 若初始点 x 0 x_0 x0充分靠近 x ∗ x^* x, 则迭代序列收敛到 x ∗ x^* x;
  2. 序列 { x k } \{x_k\} {xk}二次收敛;
  3. 范数序列 { ∥ ∇ f k ∥ } \{\Vert\nabla f_k\Vert\} {fk}二次收敛到0.

证明: 证明的过程中将大量应用Taylor定理. 由最优性条件 ∇ f ∗ = 0 \nabla f_*=0 f=0 x k + p k − x ∗ = x k − x ∗ − ∇ 2 f k − 1 ∇ f k = ∇ 2 f k − 1 [ ∇ 2 f k ( x k − x ∗ ) − ∇ f k ] = ∇ 2 f k − 1 [ ∇ 2 f k ( x k − x ∗ ) − ( ∇ f k − ∇ f ∗ ) ] . \begin{aligned}x_k+p_k-x^*&amp;=x_k-x^*-\nabla^2 f_k^{-1}\nabla f_k\\&amp;=\nabla^2 f_k^{-1}[\nabla^2 f_k(x_k-x^*)-\nabla f_k]\\&amp;=\nabla^2 f_k^{-1}[\nabla^2 f_k(x_k-x^*)-(\nabla f_k-\nabla f_*)].\end{aligned} xk+pkx=xkx2fk1fk=2fk1[2fk(xkx)fk]=2fk1[2fk(xkx)(fkf)].由Taylor定理, 有 ∇ f k − ∇ f ∗ = ∫ 0 1 ∇ 2 f ( x k + t ( x k − x ∗ ) ) ( x k − x ∗ ) &ThinSpace; d t . \nabla f_k-\nabla f_*=\int_0^1\nabla^2 f(x_k+t(x_k-x^*))(x_k-x^*)\,\mathrm{d}t. fkf=012f(xk+t(xkx))(xkx)dt.代入有 ∥ ∇ 2 f k ( x k − x ∗ ) − ( ∇ f k − ∇ f ∗ ) ∥ = ∥ ∫ 0 1 [ ∇ 2 f k − ∇ 2 f ( x k + t ( x k − x ∗ ) ) ] ( x k − x ∗ ) &ThinSpace; d t ∥ ≤ ∥ x k − x ∗ ∥ 2 ∫ 0 1 L t &ThinSpace; d t = 1 2 L ∥ x k − x ∗ ∥ 2 , \begin{aligned}&amp;\Vert\nabla^2 f_k(x_k-x^*)-(\nabla f_k-\nabla f_*)\Vert\\&amp;=\left\Vert\int_0^1[\nabla^2 f_k-\nabla^2 f(x_k+t(x_k-x^*))](x_k-x^*)\,\mathrm{d}t\right\Vert\\&amp;\le\Vert x_k-x^*\Vert^2\int_0^1Lt\,\mathrm{d}t=\frac{1}{2}L\Vert x_k-x^*\Vert^2,\end{aligned} 2fk(xkx)(fkf)=01[2fk2f(xk+t(xkx))](xkx)dtxkx201Ltdt=21Lxkx2,其中 L L L ∇ 2 f ( x ) \nabla^2f(x) 2f(x) x ∗ x^* x附近的Lipschitz常数. 由于 ∇ 2 f ( x ∗ ) \nabla^2 f(x^*) 2f(x)非奇异, 因此 ∃ r &gt; 0 \exists r&gt;0 r>0, 对 ∀ x k : ∥ x k − x ∗ ∥ ≤ r \forall x_k:\Vert x_k-x^*\Vert\le r xk:xkxr, 有 ∥ ∇ 2 f k − 1 ∥ ≤ 2 ∥ ∇ 2 f ( x ∗ ) − 1 ∥ \Vert\nabla^2 f_k^{-1}\Vert\le2\Vert\nabla^2f(x^*)^{-1}\Vert 2fk122f(x)1. 从而 ∥ x k + p k − x ∗ ∥ ≤ 1 2 L ∥ ∇ 2 f ( x ∗ ) − 1 ∥ ∥ x k − x ∗ ∥ 2 ≜ L ~ ∥ x k − x ∗ ∥ 2 , \Vert x_k+p_k-x^*\Vert\le\frac{1}{2}L\Vert \nabla^2 f(x^*)^{-1}\Vert\Vert x_k-x^*\Vert^2\triangleq \widetilde{L}\Vert x_k-x^*\Vert^2, xk+pkx21L2f(x)1xkx2L xkx2,其中 L ~ = L ∥ ∇ 2 f ( x ∗ ) − 1 ∥ \widetilde{L}=L\Vert\nabla^2f(x^*)^{-1}\Vert L =L2f(x)1. 因此选取 x 0 x_0 x0使得 ∥ x 0 − x ∗ ∥ ≤ min ⁡ ( r , 1 / L ~ ) \Vert x_0-x^*\Vert\le\min\left(r,1/\widetilde{L}\right) x0xmin(r,1/L )即得序列 { x k } \{x_k\} {xk}二次收敛于 x ∗ x^* x.
再讨论梯度范数序列 { ∥ ∇ f k ∥ } \{\Vert\nabla f_k\Vert\} {fk}的收敛性. ∥ ∇ f k + 1 ∥ = ∥ ∇ f k + 1 − ∇ f k − ∇ 2 f ( x k ) p k ∥ ( ∵ ∇ f k + ∇ 2 f k p k = 0 ) = ∥ ∫ 0 1 ( ∇ 2 f ( x k + t p k ) − ∇ 2 f ( x k ) ) p k &ThinSpace; d t ∥ ≤ ∫ 0 1 ∥ ∇ 2 f ( x k + t p k ) − ∇ 2 f ( x k ) ∥ ∥ p k ∥ &ThinSpace; d t ≤ 1 2 L ∥ p k ∥ 2 ≤ 1 2 L ∥ ∇ 2 f k − 1 ∥ 2 ∥ ∇ f k ∥ 2 ≤ 2 L ∥ ∇ 2 f ( x ∗ ) − 1 ∥ 2 ∥ ∇ f k ∥ 2 . \begin{aligned}\Vert\nabla f_{k+1}\Vert&amp;=\Vert\nabla f_{k+1}-\nabla f_k-\nabla^2 f(x_k)p_k\Vert(\because \nabla f_k+\nabla^2 f_kp_k=0)\\&amp;=\left\Vert\int_0^1(\nabla^2 f(x_k+tp_k)-\nabla^2 f(x_k))p_k\,\mathrm{d}t\right\Vert\\&amp;\le\int_0^1\Vert\nabla^2f(x_k+tp_k)-\nabla^2f(x_k)\Vert\Vert p_k\Vert\,\mathrm{d}t\\&amp;\le\frac{1}{2}L\Vert p_k\Vert^2\\&amp;\le\frac{1}{2}L\Vert\nabla^2 f_k^{-1}\Vert^2\Vert\nabla f_k\Vert^2\\&amp;\le2L\Vert\nabla^2f(x^*)^{-1}\Vert^2\Vert\nabla f_k\Vert^2.\end{aligned} fk+1=fk+1fk2f(xk)pk(fk+2fkpk=0)=01(2f(xk+tpk)2f(xk))pkdt012f(xk+tpk)2f(xk)pkdt21Lpk221L2fk12fk22L2f(x)12fk2.因此梯度范数序列 { ∥ ∇ f k ∥ } \{\Vert\nabla f_k\Vert\} {fk}二次收敛性于0.

3.2.2 带Hessian修正的牛顿法 (Cont’d)

本小节主要讨论Hessian非正定情形下的修正牛顿法. 事实上, 对于Hessian非正定情形, 有两种可以获得全局收敛的处理方案:

  1. 基于修正牛顿法的线搜索. 此时主要对Hessian矩阵 ∇ 2 f k \nabla^2 f_k 2fk作必要的修正使它正定, 从而能产生下降方向;
  2. 信赖域-牛顿法. 与线搜索不同的是, 信赖域可直接纳入非正定的Hessian进行计算. 此法将放在下一章讨论信赖域时提到.

修正牛顿算法的一般步骤为:
算法2 (基于修正牛顿法的线搜索)
给定初始点 x 0 x_0 x0;
for k = 0 , 1 , 2 , … k=0,1,2,\ldots k=0,1,2,
分 解 矩 阵 B k = ∇ 2 f ( x k ) + E k , 其 中 \quad\quad分解矩阵B_k=\nabla^2 f(x_k)+E_k, 其中 Bk=2f(xk)+Ek,
若 ∇ 2 f ( x k ) 充 分 正 定 , 则 E k = 0 ; 否 则 选 取 E k 使 得 B k 充 分 正 定 . \quad\quad\quad若\nabla^2 f(x_k)充分正定, 则E_k=0; 否则选取E_k使得B_k充分正定. 2f(xk),Ek=0;Ek使Bk.
求 解 B k p k = − ∇ f k \quad\quad求解B_kp_k=-\nabla f_k Bkpk=fk
x k + 1 ← x k + α k p k \quad\quad x_{k+1}\leftarrow x_k+\alpha_kp_k xk+1xk+αkpk
其 中 α k 满 足 W o l f e 条 件 、 G o l d s t e i n 条 件 或 A r m i j o 回 溯 条 件 \quad\quad\quad其中\alpha_k满足Wolfe条件、Goldstein条件或Armijo回溯条件 αkWolfeGoldsteinArmijo
end

算法2在 E k E_k Ek选取满足有界修正分解性质时, 可以证明是全局收敛的, 即: 只要Hessian矩阵序列 { ∇ 2 f ( x k ) } \{\nabla^2f(x_k)\} {2f(xk)}有界, 就有序列 { B k } \{B_k\} {Bk}的条件数有界: κ ( B k ) = ∥ B k ∥ ∥ B k − 1 ∥ ≤ C , C &gt; 0 , k = 0 , 1 , 2 , … . \kappa(B_k)=\Vert B_k\Vert\Vert B_k^{-1}\Vert\le C,\quad C&gt;0,k=0,1,2,\ldots. κ(Bk)=BkBk1C,C>0,k=0,1,2,.再来考虑算法2的收敛速度. 分两种情形.

  1. 序列 { x k } \{x_k\} {xk}收敛到 x ∗ x^* x, 且 ∇ 2 f ( x ∗ ) \nabla^2f(x^*) 2f(x)充分正定. 则由 ∇ 2 f ( x ) \nabla^2f(x) 2f(x)的连续性 (或Lipschitz) , 在后期 E k = 0 E_k=0 Ek=0从而恢复到原本的牛顿法, 达到二次收敛.
  2. ∇ 2 f ( x ∗ ) \nabla^2f(x^*) 2f(x) (接近) 奇异. 此时 E k E_k Ek将不一定消逝, 且算法的收敛速度可能只有线性. 我们首先需要 B k B_k Bk的条件数适当 (从而满足有界修正分解性质), 其次还需要修正项 E k E_k Ek尽可能的小从而尽量保留二阶信息. 同时计算的耗费也要在可接受的范围.
3.2.2.1 基于特征值的修正

让我们从一个例子说起. 设当前迭代点为 x k , ∇ f k = ( 1 , − 3 , 2 ) T , ∇ 2 f k = d i a g ( 10 , 3 , − 1 ) T x_k,\nabla f_k=(1,-3,2)^T,\nabla^2f_k=\mathrm{diag}(10,3,-1)^T xk,fk=(1,3,2)T,2fk=diag(10,3,1)T. 显然二阶信息是不定的. 由特征值分解, 我们有 Q = I , Λ = d i a g ( λ 1 , λ 2 , λ 3 ) Q=I,\Lambda=\mathrm{diag}(\lambda_1,\lambda_2,\lambda_3) Q=I,Λ=diag(λ1,λ2,λ3), 使得 ∇ 2 f k = Q Λ Q T = ∑ i = 1 n λ i q i q i T . \nabla^2f_k=Q\Lambda Q^T=\sum_{i=1}^n\lambda_iq_iq_i^T. 2fk=QΛQT=i=1nλiqiqiT.一个直接的想法是, 将对角元中的负元用较小的正数 δ \delta δ替代, 譬如说 δ = u \delta=\sqrt{\bm{\mathrm{u}}} δ=u , 其中 u \bm{\mathrm{u}} u是机器精度 (设为 1 0 − 16 10^{-16} 1016). 则此例中 B k = ∑ i = 1 2 λ i q i q i T + δ q 3 q 3 T = d i a g ( 10 , 3 , 1 0 − 8 ) . B_k=\sum_{i=1}^2\lambda_iq_iq_i^T+\delta q_3q_3^T=\mathrm{diag}(10,3,10^{-8}). Bk=i=12λiqiqiT+δq3q3T=diag(10,3,108).不过, 基于此修正Hessian的搜索方向为 p k = − B k − 1 ∇ f k = − ∑ i = 1 2 1 λ i q i ( q i T ∇ f k ) − 1 δ q 3 ( q 3 T ∇ f k ) ≈ − ( 2 × 1 0 8 ) q 3 . p_k=-B_k^{-1}\nabla f_k=-\sum_{i=1}^2\frac{1}{\lambda_i}q_i(q_i^T\nabla f_k)-\frac{1}{\delta}q_3(q_3^T\nabla f_k)\approx-(2\times 10^8)q_3. pk=Bk1fk=i=12λi1qi(qiTfk)δ1q3(q3Tfk)(2×108)q3.对于很小的 δ \delta δ, 这一搜索方向将近 q 3 q_3 q3平行, 并且长度惊人. 这有悖牛顿法的想法.
不过受此启发, 很多人提出了其他的修正方案. 例如干脆将负元变个符号. 在我们的例子中就是 δ = 1 \delta=1 δ=1. 或者干脆把负曲率的项去掉, 在我们的例子中就是 B k = ∑ i = 1 2 λ i q i q i T B_k=\sum_{i=1}^2\lambda_iq_iq_i^T Bk=i=12λiqiqiT. 再比如, 选取 δ \delta δ使得 p k p_k pk看起来合理一些.

基于最小F-范数的修正是说, 给定 δ &gt; 0 \delta&gt;0 δ>0, 求 Δ A = arg ⁡ min ⁡ B { ∥ B ∥ F ∣ λ min ⁡ ( A + B ) ≥ δ } . \Delta A=\arg\min_B\{\Vert B\Vert_F|\lambda_{\min}(A+B)\ge\delta\}. ΔA=argBmin{BFλmin(A+B)δ}.最后得到的结果是 Δ A = Q ( d i a g ( τ i ) ) Q T , τ i = { 0 , λ i ≥ δ , δ − λ i , λ i &lt; δ . \Delta A=Q(\mathrm{diag}(\tau_i))Q^T,\quad\tau_i=\left\{\begin{array}{ll}0, &amp; \lambda_i\ge\delta,\\\delta-\lambda_i, &amp;\lambda_i &lt;\delta.\end{array}\right. ΔA=Q(diag(τi))QT,τi={0,δλi,λiδ,λi<δ.这与第一种想法契合.

基于最小2-范数的修正则会给出对角修正. 给定 δ &gt; 0 \delta&gt;0 δ>0, 求 Δ A = arg ⁡ min ⁡ B { ∥ B ∥ 2 ∣ λ min ⁡ ( A + B ) ≥ δ } . \Delta A=\arg\min_B\{\Vert B\Vert_2|\lambda_{\min}(A+B)\ge\delta\}. ΔA=argBmin{B2λmin(A+B)δ}.最后得到的结果是 Δ A = τ I , τ = max ⁡ ( 0 , δ − λ min ⁡ ( A ) ) . \Delta A=\tau I,\quad\tau=\max(0,\delta-\lambda_{\min}(A)). ΔA=τI,τ=max(0,δλmin(A)).实际应用时往往采用试探法, 不断增大 τ \tau τ直至Cholesky分解能够完成. 这与信赖域的修正有些类似.

实际中, 往往不直接做特征值分解, 因为这一步骤的计算量过于庞大. 利用Gauss消去间接地修正往往更受欢迎.

3.2.2.2 修正Cholesky分解

另一种修正Hessian矩阵的方案, 是在Cholesky分解的过程中进行的. 具体说, 如果分解的过程中计算出了负的 (准确说是虚的) 对角元, 则增加一定量保证充分正定. 修正Cholesky分解的应当做到:

  1. 保证修正的Cholesky因子存在;
  2. 修正后的矩阵条件数一致有界;
  3. 若Hessian本身充分正定则不做修正.

设A的LDL分解为 A = L D L T . A=LDL^T. A=LDLT.其中 L L L为下三角矩阵, D D D为对角阵. 相应的算法为

算法3 (LDL分解)
for j = 1 , 2 , … , n j=1,2,\ldots,n j=1,2,,n
c j j ← a j j − ∑ s = 1 j − 1 d s l j s 2 \quad\quad c_{jj}\leftarrow a_{jj}-\sum_{s=1}^{j-1}d_sl_{js}^2 cjjajjs=1j1dsljs2;
d j ← c j j \quad\quad d_j\leftarrow c_{jj} djcjj;
\quad\quad for i = j + 1 , … , n i=j+1,\ldots,n i=j+1,,n
c i j ← a i j − ∑ s = 1 j − 1 d s l i s l j s \quad\quad\quad\quad c_{ij}\leftarrow a_{ij}-\sum_{s=1}^{j-1}d_sl_{is}l_{js} cijaijs=1j1dslisljs;
l i j ← c i j / d j \quad\quad\quad\quad l_{ij}\leftarrow c_{ij}/d_j lijcij/dj;
\quad\quad end
end

A A A不定时, LDL分解是不稳定的. 下面对其加修正. 为了控制修正的质量, 选取两正数 δ , β \delta,\beta δ,β, 要求在计算 L , D L,D L,D的第 j j j列时, 满足: d j ≥ δ , ∣ m i j ∣ ≤ β , i = j + 1 , … , n , d_j\ge\delta,\quad|m_{ij}|\le\beta,\quad i=j+1,\ldots,n, djδ,mijβ,i=j+1,,n,其中 m i j = l i j d j m_{ij}=l_{ij}\sqrt{d_j} mij=lijdj . 为保证上述不等式, 我们只需在算法3中修改一步: 计算对角元 d j d_j dj的公式改为 d j = max ⁡ ( ∣ c j j ∣ , ( θ j β ) 2 , δ ) , θ j = max ⁡ j &lt; i ≤ n ∣ c i j ∣ . d_j=\max\left(|c_{jj}|,\left(\frac{\theta_j}{\beta}\right)^2,\delta\right),\quad\theta_j=\max_{j&lt;i\le n}|c_{ij}|. dj=max(cjj,(βθj)2,δ),θj=j<inmaxcij.下面验证不等式成立. 注意 c i j = l i j d j c_{ij}=l_{ij}d_j cij=lijdj, 因此 ∣ m i j ∣ = ∣ l i j d j ∣ = ∣ c i j ∣ d j ≤ ∣ c i j ∣ β θ j ≤ β , ∀ i &gt; j . |m_{ij}|=|l_{ij}\sqrt{d_j}|=\frac{|c_{ij}|}{\sqrt{d_j}}\le\frac{|c_{ij}|\beta}{\theta_j}\le\beta,\quad\forall i&gt;j. mij=lijdj =dj cijθjcijββ,i>j.注意 θ j \theta_j θj可以先于 d j d_j dj得到, 这就是算法中 c i j c_{ij} cij的作用.

3.2.2.3 修正对称不定分解

任一对称矩阵 A A A, 不论正定或不正定, 都有 P A P T = L B L T , PAP^T=LBL^T, PAPT=LBLT,其中 L L L为单位下三角矩阵, B B B为块对角矩阵, 其中块为1阶或2阶, P P P为排列矩阵. 我们之前提到过直接计算不定矩阵的LDL分解不稳定, 这是因为 L , D L,D L,D中可能含有远大于 A A A中元素的项. 但 B B B为块对角矩阵, 其对角元为1阶或2阶矩阵, 这样的分解总是存在且计算稳定.

3.3 拟牛顿法的收敛速度

拟牛顿法的搜索方向为 p k = − B k − 1 ∇ f k , p_k=-B_k^{-1}\nabla f_k, pk=Bk1fk,其中对称正定矩阵 B k B_k Bk在每步都被更新. 我们假定 α k \alpha_k αk满足Wolfe条件或强Wolfe条件, 且步长线搜索必首先尝试 α = 1 \alpha=1 α=1. 这一点在实现快速收敛时将起到关键的作用.
下面的定理说明, 若拟牛顿法的搜索方向与牛顿法的搜索方向足够接近, 则随着迭代点向解逼近, 单位步长将最终满足Wolfe条件. 定理同时还给出了拟牛顿法搜索方向必须遵循的条件, 以达成超线性收敛.

定理5 f : R n → R f:\mathbb{R}^n\to\mathbb{R} f:RnR二阶连续可微. 考虑迭代 x k + 1 = x k + α k p k , x_{k+1}=x_k+\alpha_kp_k, xk+1=xk+αkpk,其中 p k p_k pk为下降方向, α k \alpha_k αk满足Wolfe条件 ( c 1 ≤ 1 / 2 c_1\le1/2 c11/2). 若序列 { x k } \{x_k\} {xk}收敛到 x ∗ x^* x, 且 ∇ f ( x ∗ ) = 0 , ∇ 2 f ( x ∗ ) \nabla f^(x^*)=0,\nabla^2f(x^*) f(x)=0,2f(x)正定, 并且搜索方向满足 lim ⁡ k → ∞ ∥ ∇ f k + ∇ 2 f k p k ∥ ∥ p k ∥ = 0 , \lim_{k\to\infty}\frac{\Vert\nabla f_k+\nabla^2f_kp_k\Vert}{\Vert p_k\Vert}=0, klimpkfk+2fkpk=0,

  1. 步长 α k = 1 \alpha_k=1 αk=1对充分大的 k k k( ∃ k 0 : k &gt; k 0 \exists k_0: k&gt;k_0 k0:k>k0)满足Wolfe条件;
  2. α k = 1 , ∀ k &gt; k 0 \alpha_k=1,\forall k&gt;k_0 αk=1,k>k0, 则 { x k } \{x_k\} {xk}超线性收敛于 x ∗ x^* x.

易得若 c 1 &gt; 1 / 2 c_1&gt;1/2 c1>1/2, 则线搜索可能会排除二次函数的最小点, 且算法将不会采纳单位步长. 若 p k p_k pk是拟牛顿搜索方向, 则上面的极限等价于 lim ⁡ k → ∞ ∥ ( B k − ∇ 2 f ( x ∗ ) ) p k ∥ ∥ p k ∥ = 0. \lim_{k\to\infty}\frac{\Vert(B_k-\nabla^2 f(x^*))p_k\Vert}{\Vert p_k\Vert}=0. klimpk(Bk2f(x))pk=0.从这个结论中我们知道: 想要达成超线性收敛速度并不需要拟牛顿矩阵序列 { B k } \{B_k\} {Bk}收敛于Hessian矩阵 ∇ 2 f ( x ∗ ) \nabla^2 f(x^*) 2f(x), 而只需要 B k B_k Bk沿着搜索方向 p k p_k pk越来越靠近 ∇ 2 f ( x ∗ ) \nabla^2 f(x^*) 2f(x).

定理6 f : R n → R f:\mathbb{R}^n\to\mathbb{R} f:RnR二阶连续可微. 考虑迭代式 x k + 1 = x k + p k x_{k+1}=x_k+p_k xk+1=xk+pk(即 α k \alpha_k αk一致选为1), p k = − B k − 1 ∇ f k p_k=-B_k^{-1}\nabla f_k pk=Bk1fk. 设 { x k } \{x_k\} {xk}收敛于 x ∗ x^* x, f f f x ∗ x^* x上满足二阶充分条件. 若 lim ⁡ k → ∞ ∥ ( B k − ∇ 2 f ( x ∗ ) ) p k ∥ ∥ p k ∥ = 0 , \lim_{k\to\infty}\frac{\Vert(B_k-\nabla^2f(x^*))p_k\Vert}{\Vert p_k\Vert}=0, klimpk(Bk2f(x))pk=0,则有 { x k } \{x_k\} {xk}超线性收敛于 x ∗ x^* x.

证明: 我们用 p k N p_k^N pkN表示牛顿步. 下面证明极限式等价于 p k − p k N = o ( ∥ p k ∥ ) . p_k-p_k^N=o(\Vert p_k\Vert). pkpkN=o(pk).设极限式成立, 于是 p k − p k N = ∇ 2 f k − 1 ( ∇ 2 f k p k + ∇ f k ) = ∇ 2 f k − 1 ( ∇ 2 f k − B k ) p k = O ( ∥ ( ∇ 2 f k − B k ) p k ∥ ) ( ∵ ∇ 2 f ( x ) 连 续 且 在 x ∗ 处 正 定 ) = o ( ∥ p k ∥ ) . ( ∵ 极 限 式 ) \begin{aligned}p_k-p_k^N&amp;=\nabla^2f_k^{-1}(\nabla^2f_kp_k+\nabla f_k)\\&amp;=\nabla^2f_k^{-1}(\nabla^2f_k-B_k)p_k\\&amp;=O(\Vert(\nabla^2f_k-B_k)p_k\Vert)(\because \nabla^2f(x)连续且在x^*处正定)\\&amp;=o(\Vert p_k\Vert).(\because 极限式)\end{aligned} pkpkN=2fk1(2fkpk+fk)=2fk1(2fkBk)pk=O((2fkBk)pk)(2f(x)x)=o(pk).()反向的证明是显然的. 结合牛顿步的二次收敛与上式, 有 ∥ x k + p k − x ∗ ∥ ≤ ∥ x k + p k N − x ∗ ∥ + ∥ p k − p k N ∥ = O ( ∥ x k − x ∗ ∥ 2 ) + o ( ∥ p k ∥ ) . \Vert x_k+p_k-x^*\Vert\le\Vert x_k+p_k^N-x^*\Vert+\Vert p_k-p_k^N\Vert=O(\Vert x_k-x^*\Vert^2)+o(\Vert p_k\Vert). xk+pkxxk+pkNx+pkpkN=O(xkx2)+o(pk).由于 ∥ x k − x ∗ ∥ − ∥ p k ∥ ≤ ∥ x k + p k − x ∗ ∥ , \Vert x_k-x^*\Vert-\Vert p_k\Vert\le\Vert x_k+p_k-x^*\Vert, xkxpkxk+pkx, ∥ p k ∥ − ∥ x k − x ∗ ∥ ≤ ∥ x k + p k − x ∗ ∥ , \Vert p_k\Vert-\Vert x_k-x^*\Vert\le\Vert x_k+p_k-x^*\Vert, pkxkxxk+pkx,经移项就有 ∥ p k ∥ + o ( ∥ p k ∥ ) ≥ ∥ x k − x ∗ ∥ − O ( ∥ x k − x ∗ ∥ 2 ) , \Vert p_k\Vert+o(\Vert p_k\Vert)\ge\Vert x_k-x^*\Vert-O(\Vert x_k-x^*\Vert^2), pk+o(pk)xkxO(xkx2), ∥ p k ∥ − o ( ∥ p k ∥ ) ≤ O ( ∥ x k − x ∗ ∥ 2 ) + ∥ x k − x ∗ ∥ . \Vert p_k\Vert-o(\Vert p_k\Vert)\le O(\Vert x_k-x^*\Vert^2)+\Vert x_k-x^*\Vert. pko(pk)O(xkx2)+xkx.因此 ∥ p k ∥ = O ( ∥ x k − x ∗ ∥ ) \Vert p_k\Vert=O(\Vert x_k-x^*\Vert) pk=O(xkx). 于是 ∥ x k + p k − x ∗ ∥ ≤ O ( ∥ x k − x ∗ ∥ 2 ) + o ( ∥ p k ∥ ) = o ( ∥ x k − x ∗ ∥ ) , \Vert x_k+p_k-x^*\Vert\le O(\Vert x_k-x^*\Vert^2)+o(\Vert p_k\Vert)=o(\Vert x_k-x^*\Vert), xk+pkxO(xkx2)+o(pk)=o(xkx),即有超线性收敛.

注意上面的结论是局部收敛性质. 我们将在后面看到, 拟牛顿法应用时极限式一般是满足的.

4. 步长选取算法

在本章的第一节, 我们谈到了选取步长的两个阶段: 确定区间、二分或插值. 我们将在本节讨论具体的步长选取算法. 考虑最小化函数 ϕ ( α ) = f ( x k + α p k ) , \phi(\alpha)=f(x_k+\alpha p_k), ϕ(α)=f(xk+αpk),其中 α &gt; 0 \alpha&gt;0 α>0, p k p_k pk为下降方向. 若原函数 f ( x ) = 1 2 x T Q x − b T x f(x)=\frac{1}{2}x^TQx-b^Tx f(x)=21xTQxbTx为凸二次函数, 则最优步长 α k \alpha_k αk具有解析表达式 α k = − ∇ f k T p k p k T Q p k . \alpha_k=-\frac{\nabla f_k^Tp_k}{p_k^TQp_k}. αk=pkTQpkfkTpk.而对于一般的非线性函数, 则有必要使用迭代算法确定 α k \alpha_k αk. 线搜索步长的算法需要精心设计, 因为步长的选取会影响非线性优化的强健性与效率.
线搜索步长的方法可根据提供的函数信息加以分类. 譬如有只需函数值的算法. 这种算法往往并不高效. 再如提供梯度信息的算法. 这种算法就能够判定是否选取到了合适的步长. 这里我们仅讨论带导数信息的算法.

4.1 插值

我们先就基于已知 ϕ \phi ϕ函数值和导数值进行插值的方法讨论. 这种方法可以看做是Armijo回溯算法的加强版. 目的就是寻找 α \alpha α既能够带来充分的函数下降, 也不至于太小. 注意充分下降条件又可写作 ϕ ( α k ) ≤ ϕ ( 0 ) + c 1 α k ϕ ′ ( 0 ) . \phi(\alpha_k)\le\phi(0)+c_1\alpha_k\phi&#x27;(0). ϕ(αk)ϕ(0)+c1αkϕ(0).我们判定算法的高效性在于, 尽可能少地获取导数信息, 即假定获取导数信息要比获取函数信息要昂贵的多.

假设初始 α 0 \alpha_0 α0给定. 若 ϕ ( α 0 ) ≤ ϕ ( 0 ) + c 1 α 0 ϕ ′ ( 0 ) , \phi(\alpha_0)\le\phi(0)+c_1\alpha_0\phi&#x27;(0), ϕ(α0)ϕ(0)+c1α0ϕ(0), α 0 \alpha_0 α0恰好满足要求, 终止搜索. 否则, [ 0 , α 0 ] [0,\alpha_0] [0,α0]中就应当有合适的步长. 下面根据 ϕ ( 0 ) , ϕ ′ ( 0 ) , ϕ ( α 0 ) \phi(0),\phi&#x27;(0),\phi(\alpha_0) ϕ(0),ϕ(0),ϕ(α0)建立 ϕ \phi ϕ二次近似模型 ϕ q ( α ) \phi_q(\alpha) ϕq(α): ϕ q ( α ) = ( ϕ ( α 0 ) − ϕ ( 0 ) − α 0 ϕ ′ ( 0 ) α 0 2 ) α 2 + ϕ ′ ( 0 ) α + ϕ ( 0 ) . \phi_q(\alpha)=\left(\frac{\phi(\alpha_0)-\phi(0)-\alpha_0\phi&#x27;(0)}{\alpha_0^2}\right)\alpha^2+\phi&#x27;(0)\alpha+\phi(0). ϕq(α)=(α02ϕ(α0)ϕ(0)α0ϕ(0))α2+ϕ(0)α+ϕ(0).注意这个近似模型满足 ϕ q ( 0 ) = ϕ ( 0 ) , ϕ q ′ ( 0 ) = ϕ ′ ( 0 ) , ϕ q ( α 0 ) = ϕ ( α 0 ) \phi_q(0)=\phi(0),\phi_q&#x27;(0)=\phi&#x27;(0),\phi_q(\alpha_0)=\phi(\alpha_0) ϕq(0)=ϕ(0),ϕq(0)=ϕ(0),ϕq(α0)=ϕ(α0). 新的 α 1 \alpha_1 α1则定义为此二次模型的最小值点, 即 α 1 = − ϕ ′ ( 0 ) α 0 2 2 [ ϕ ( α 0 ) − ϕ ( 0 ) − ϕ ′ ( 0 ) α 0 ] . \alpha_1=-\frac{\phi&#x27;(0)\alpha_0^2}{2[\phi(\alpha_0)-\phi(0)-\phi&#x27;(0)\alpha_0]}. α1=2[ϕ(α0)ϕ(0)ϕ(0)α0]ϕ(0)α02.若在 α 1 \alpha_1 α1满足充分下降条件, 则终止搜索. 否则继续以 ϕ ( 0 ) , ϕ ′ ( 0 ) , ϕ ( α 0 ) , ϕ ( α 1 ) \phi(0),\phi&#x27;(0),\phi(\alpha_0),\phi(\alpha_1) ϕ(0),ϕ(0),ϕ(α0),ϕ(α1)建立 ϕ \phi ϕ三次近似模型 (三次近似模型对捕捉函数曲率变化有较好的效果, 常带来二次收敛效果) ϕ c ( α ) = a α 3 + b α 2 + α ϕ ′ ( 0 ) + ϕ ( 0 ) , \phi_c(\alpha)=a\alpha^3+b\alpha^2+\alpha\phi&#x27;(0)+\phi(0), ϕc(α)=aα3+bα2+αϕ(0)+ϕ(0),其中 ( a b ) = 1 α 0 2 α 1 2 ( α 1 − α 0 ) ( α 0 2 − α 1 2 − α 0 3 α 1 3 ) ( ϕ ( α 1 ) − ϕ ( 0 ) − ϕ ′ ( 0 ) α 1 ϕ ( α 0 ) − ϕ ( 0 ) − ϕ ′ ( 0 ) α 0 ) . \begin{pmatrix}a\\b\end{pmatrix}=\frac{1}{\alpha_0^2\alpha_1^2(\alpha_1-\alpha_0)}\begin{pmatrix}\alpha_0^2 &amp; -\alpha_1^2\\-\alpha_0^3 &amp; \alpha_1^3\end{pmatrix}\begin{pmatrix}\phi(\alpha_1)-\phi(0)-\phi&#x27;(0)\alpha_1\\\phi(\alpha_0)-\phi(0)-\phi&#x27;(0)\alpha_0\end{pmatrix}. (ab)=α02α12(α1α0)1(α02α03α12α13)(ϕ(α1)ϕ(0)ϕ(0)α1ϕ(α0)ϕ(0)ϕ(0)α0). ϕ c ( x ) \phi_c(x) ϕc(x)求导, 可得 ϕ c \phi_c ϕc的最小值点 α 2 \alpha_2 α2位于区间 [ 0 , α 1 ] [0,\alpha_1] [0,α1]中, 且为 α 2 = − b + b 2 − 3 a ϕ ′ ( 0 ) 3 a . \alpha_2=\frac{-b+\sqrt{b^2-3a\phi&#x27;(0)}}{3a}. α2=3ab+b23aϕ(0) .若需要, 此重复这一步骤, 以 ϕ ( 0 ) , ϕ ′ ( 0 ) \phi(0),\phi&#x27;(0) ϕ(0),ϕ(0)和最近的两个 ϕ \phi ϕ函数值建立三次近似模型直至找到 α \alpha α满足充分下降条件. 若算得的 α i \alpha_i αi要比前一个 α i − 1 \alpha_{i-1} αi1太近或者小很多, 则置 α i = α i − 1 / 2 \alpha_i=\alpha_{i-1}/2 αi=αi1/2以保证迭代的收敛速度以及最终的 α \alpha α不会太小.

事实上, 后面会提到使用差分的方法获得导数, 从而降低不少耗费. 相应地, 我们有以 ϕ , ϕ ′ \phi,\phi&#x27; ϕ,ϕ在最近的两个 α \alpha α值上构建某个区间 [ a ˉ , b ˉ ] [\bar{a},\bar{b}] [aˉ,bˉ]上的的三次近似模型. 此时三次模型的最小值点要么在区间端点, 要么在区间内部. 内部最小值点的解析表达为 α i + 1 = α i − ( α i − α i − 1 ) [ ϕ ′ ( α i ) + d 2 − d 1 ϕ ′ ( α i ) − ϕ ′ ( α i − 1 ) + 2 d 2 ] , \alpha_{i+1}=\alpha_i-(\alpha_i-\alpha_{i-1})\left[\frac{\phi&#x27;(\alpha_i)+d_2-d_1}{\phi&#x27;(\alpha_i)-\phi&#x27;(\alpha_{i-1})+2d_2}\right], αi+1=αi(αiαi1)[ϕ(αi)ϕ(αi1)+2d2ϕ(αi)+d2d1],其中 d 1 = ϕ ′ ( α i − 1 ) + ϕ ′ ( α i ) − 3 ϕ ( α i − 1 ) − ϕ ( α i ) α i − 1 − α i , d_1=\phi&#x27;(\alpha_{i-1})+\phi&#x27;(\alpha_i)-3\frac{\phi(\alpha_{i-1})-\phi(\alpha_i)}{\alpha_{i-1}-\alpha_i}, d1=ϕ(αi1)+ϕ(αi)3αi1αiϕ(αi1)ϕ(αi), d 2 = s i g n ( α i − α i − 1 ) [ d 1 2 − ϕ ′ ( α i − 1 ) ϕ ′ ( α i ) ] 1 / 2 . d_2=\mathrm{sign}(\alpha_i-\alpha_{i-1})[d_1^2-\phi&#x27;(\alpha_{i-1})\phi&#x27;(\alpha_i)]^{1/2}. d2=sign(αiαi1)[d12ϕ(αi1)ϕ(αi)]1/2.对于下一次计算时改舍弃 α i − 1 \alpha_{i-1} αi1还是 α i \alpha_i αi, 需要根据具体的终止条件确定. 我们将在后文对Wolfe条件进行说明.

4.2 初始步长

对于牛顿法与拟牛顿法, 显然应当以 α 0 = 1 \alpha_0=1 α0=1为初始步长. 随着迭代点靠近满足二阶充分条件的极小点, α = 1 \alpha=1 α=1将满足Wolfe条件. 根据前述定理, 算法将达到超线性收敛甚至二次收敛速度.
而对于那些会产生尺度不一的搜索方向的算法, 比如最速下降法与共轭梯度法, 我们就需要利用问题本身的信息来决定初始步长. 一个常用的策略是, 假设在迭代点 x k x_k xk的一阶改变量与上一步的相同, 即 α 0 ∇ f k T p k = α k − 1 ∇ f k − 1 T p k − 1 , \alpha_0\nabla f_k^Tp_k=\alpha_{k-1}\nabla f_{k-1}^Tp_{k-1}, α0fkTpk=αk1fk1Tpk1,从而 α 0 = α k − 1 ∇ f k − 1 T p k − 1 ∇ f k T p k . \alpha_0=\alpha_{k-1}\frac{\nabla f_{k-1}^Tp_{k-1}}{\nabla f_k^Tp_k}. α0=αk1fkTpkfk1Tpk1.另一种实用的策略是, 以 f ( x k − 1 ) , f ( x k ) , ∇ f k − 1 T p k − 1 f(x_{k-1}),f(x_k),\nabla f_{k-1}^Tp_{k-1} f(xk1),f(xk),fk1Tpk1构建二次模型, 并定义 α 0 \alpha_0 α0为其最小值点. 这种方案给出 α 0 = 2 ( f k − f k − 1 ) ϕ ′ ( 0 ) . \alpha_0=\frac{2(f_k-f_{k-1})}{\phi&#x27;(0)}. α0=ϕ(0)2(fkfk1).若进一步设 α 0 ← min ⁡ ( 1 , 1.01 α 0 ) , \alpha_0\leftarrow\min(1,1.01\alpha_0), α0min(1,1.01α0), 则我们会发现最终 α 0 = 1 \alpha_0=1 α0=1总会被采纳, 从而保证了牛顿法和拟牛顿法的超线性收敛.

4.3 Wolfe条件下的线搜索步长算法

算法4 (线搜索步长算法)
α 0 ← 0 \alpha_0\leftarrow 0 α00, 选取 α max ⁡ &gt; 0 , α 1 ∈ ( 0 , α max ⁡ ) \alpha_{\max}&gt;0,\alpha_1\in(0,\alpha_{\max}) αmax>0,α1(0,αmax);
i ← 1 i\leftarrow1 i1;
repeat
获 取 ϕ ( α i ) \quad\quad 获取\phi(\alpha_i) ϕ(αi);
\quad\quad if ϕ ( α i ) &gt; ϕ ( 0 ) + c 1 α i ϕ ′ ( 0 ) \phi(\alpha_i)&gt;\phi(0)+c_1\alpha_i\phi&#x27;(0) ϕ(αi)>ϕ(0)+c1αiϕ(0) or [ ϕ ( α i ) ≥ ϕ ( α i − 1 ) [\phi(\alpha_i)\ge\phi(\alpha_{i-1}) [ϕ(αi)ϕ(αi1) and i &gt; 1 ] i&gt;1] i>1]
α ∗ ← \quad\quad\quad\quad\alpha_*\leftarrow αzoom( α i − 1 , α i ) \alpha_{i-1},\alpha_i) αi1,αi) and stop;
获 取 ϕ ′ ( α i ) \quad\quad获取\phi&#x27;(\alpha_i) ϕ(αi);
\quad\quad if ∣ ϕ ′ ( α i ) ∣ ≤ − c 2 ϕ ′ ( 0 ) |\phi&#x27;(\alpha_i)|\le-c_2\phi&#x27;(0) ϕ(αi)c2ϕ(0)
α ∗ ← α i \quad\quad\quad\quad\alpha_*\leftarrow\alpha_i ααi and stop;
\quad\quad if ϕ ′ ( α i ) ≥ 0 \phi&#x27;(\alpha_i)\ge0 ϕ(αi)0
α ∗ ← \quad\quad\quad\quad\alpha_*\leftarrow αzoom ( α i , α i − 1 ) (\alpha_i,\alpha_{i-1}) (αi,αi1) and stop;
选 取 α i + 1 ∈ ( α i , α max ⁡ ) \quad\quad选取\alpha_{i+1}\in(\alpha_i,\alpha_{\max}) αi+1(αi,αmax);
i ← i + 1 \quad\quad i\leftarrow i+1 ii+1;
end (repeat)

下面明确zoom, 调用形式为zoom ( α l o , α h i ) (\alpha_{lo},\alpha_{hi}) (αlo,αhi), 其中

  1. α l o , α h i \alpha_{lo},\alpha_{hi} αlo,αhi围住的区间中有满足强Wolfe条件的点;
  2. α l o \alpha_{lo} αlo满足充分下降条件, 且给出了目前最低的函数值;
  3. α h i \alpha_{hi} αhi满足 ϕ ′ ( α l o ) ( α h i − α l o ) &lt; 0 \phi&#x27;(\alpha_{lo})(\alpha_{hi}-\alpha_{lo})&lt;0 ϕ(αlo)(αhiαlo)<0.

每一步迭代zoom都在 α l o , α h i \alpha_{lo},\alpha_{hi} αlo,αhi中间产生 α j \alpha_j αj, 之后再根据1,2,3提出某个端点.

算法5 (zoom)
repeat
插 值 求 得 试 探 步 α j \quad\quad插值求得试探步\alpha_j αj;
获 取 ϕ ( α j ) \quad\quad获取\phi(\alpha_j) ϕ(αj);
\quad\quad if ϕ ( α j ) &gt; ϕ ( 0 ) + c 1 α j ϕ ′ ( 0 ) \phi(\alpha_j)&gt;\phi(0)+c_1\alpha_j\phi&#x27;(0) ϕ(αj)>ϕ(0)+c1αjϕ(0) or ϕ ( α j ) ≥ ϕ ( α l o ) \phi(\alpha_j)\ge\phi(\alpha_{lo}) ϕ(αj)ϕ(αlo)
α h i ← α j \quad\quad\quad\quad\alpha_{hi}\leftarrow\alpha_j αhiαj;
\quad\quad else
获 取 ϕ ′ ( α j ) \quad\quad\quad\quad获取\phi&#x27;(\alpha_j) ϕ(αj);
\quad\quad\quad\quad if ∣ ϕ ′ ( α j ) ∣ ≤ − c 2 ϕ ′ ( 0 ) |\phi&#x27;(\alpha_j)|\le-c_2\phi&#x27;(0) ϕ(αj)c2ϕ(0)
α ∗ ← α j \quad\quad\quad\quad\quad\quad\alpha_*\leftarrow\alpha_j ααj and stop;
\quad\quad\quad\quad if ∣ ϕ ′ ( α j ) ( α h i − α l o ) ≥ 0 |\phi&#x27;(\alpha_j)(\alpha_{hi}-\alpha_{lo})\ge0 ϕ(αj)(αhiαlo)0
α h i ← α l o \quad\quad\quad\quad\quad\quad\alpha_{hi}\leftarrow\alpha_{lo} αhiαlo;
α l o ← α j \quad\quad\quad\quad\alpha_{lo}\leftarrow\alpha_j αloαj;
end (repeat)

在实施过程中, 需要注意:

  1. α j \alpha_j αj不应离区间端点太近;
  2. 当接近最优时, f ( x k ) , f ( x k − 1 ) f(x_k),f(x_{k-1}) f(xk),f(xk1)可能在机器精度下无法区分. 因此线搜索必须在多次 (譬如, 10) 无法得到函数下降后停止搜索. 类似地还可根据 x x x的变化停止.

  1. 前者对应于牛顿或拟牛顿法, 后者对应非线性共轭梯度法. ↩︎

  2. 凸性是能够反映曲率的, 一方面可以从微分几何中得到解释, 另一方面凸性往往与函数的二阶信息有关. 设函数 f f f的Hessian矩阵为 H H H, 则在后面我们会提到, 正曲率方向就是满足 p T H p &gt; 0 p^THp&gt;0 pTHp>0 p p p, 负曲率方向就是满足 p T H p &lt; 0 p^THp&lt;0 pTHp<0 p p p. ↩︎

  3. 图示可参考用“人话”解释不精确线搜索中的Armijo-Goldstein准则及Wolfe-Powell准则. ↩︎

  • 8
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: numerical optimization(数值优化)是一门涉及通过计算来寻找某个函数的最优解的学科。它在不同领域中都有广泛的应用,如经济学、工程学、计算机科学等。以下是对numerical optimization课后答案的回答。 在numerical optimization的课后答案中,我们通常会遇到以下几个方面: 1. 算法和方法:课后答案会包含关于不同的数值优化算法和方法的详细解释。例如,梯度下降法、牛顿法、共轭梯度法等。课后答案会解释这些方法的原理、步骤和优缺点。 2. 收敛性和收敛速度:课后答案会对不同方法的收敛性进行分析和讨论。收敛性指的是优化算法能否找到最优解。收敛速度则是指算法收敛到最优解的速度。课后答案会解释为什么某些算法具有更好的收敛性和收敛速度。 3. 全局最优和局部最优:课后答案会解释全局最优和局部最优之间的区别。全局最优指的是找到整个搜索空间中的最优解,而局部最优指的是找到某个搜索空间中的最优解。课后答案会讨论如何判断一个解是否为全局最优或局部最优。 4. 问题规模和复杂性:课后答案可能涉及到优化问题的规模和复杂性。优化问题的规模指的是问题中涉及的变量和约束的数量。复杂性指的是解决问题所需的计算资源和时间。课后答案会讨论如何在不同的问题规模和复杂性下选择合适的优化方法。 总而言之,numerical optimization课后答案会涵盖算法和方法、收敛性和收敛速度、全局最优和局部最优以及问题规模和复杂性等方面的内容,帮助学生更好地理解和应用数值优化的知识。 ### 回答2: numerical optimization是一门研究优化问题数值解法的课程。在这门课中,我们学习了许多不同的优化算法,以寻找函数的最优解。 首先我们学习了最简单的算法——暴力搜索法。该方法通过穷举搜索整个搜索空间,找到最优解。然而,由于搜索空间可能非常庞大,这种方法通常并不适用于高维问题。 为了解决高维问题,我们学习了梯度下降法。该方法通过迭代计算函数的梯度,并沿着梯度的反方向更新参数,直到收敛到最优解。梯度下降法可以应用于不同类型的优化问题,并且由于其简单有效的原理而被广泛应用。 此外,我们还学习了共轭梯度法和牛顿法等优化算法。共轭梯度法结合了梯度和步长信息,在优化过程中具有更快的收敛速度。牛顿法利用函数的二阶导数信息,在每次迭代中更新参数,可以更快地找到最优解。 在课后练习中,我们通过编写代码来实现这些优化算法,并将其应用于一些具体的问题。这些问题可能是线性的,也可能是非线性的,但通过优化算法的应用,我们可以找到它们的最优解。 通过学习和实践,我们能够更好地理解数值优化的原理和方法,能够运用这些方法解决实际问题。无论是在工程、科学还是经济领域,数值优化在解决最优化问题上发挥着重要作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值