数值计算之 线搜索法,Armijo,Wolfe,Goldstein条件,回溯法
數值計算之 線搜索法,Wolfe conditions
- 前言
- 梯度法的步長
- 線搜索法
- 非精確線搜索法
- Armijo條件
- Wolfe條件
- Goldstein條件
- 回溯法
- 后記
前言
本篇是基于梯度的優化方法的補充篇
梯度法的步長
梯度下降法、牛頓法、擬牛頓法的主要目的都是求出增量方向。求出增量方向后,如果使用固定步長進行更新,當步長太大導致優化函數與其泰勒展開偏差太大時,可能出現優化函數不降反增的情況,導致迭代不收斂。
因此在獲得增量方向后,還需要確定迭代的步長。常用的方法是線搜索法。
線搜索法
線搜索法在求出優化函數f(x)f(\bf x)f(x)在xk\bf x_kxk?的增量方向后,構建以下問題:
min?α?(α)=f(xk+αpk)\min_{\alpha} \quad \phi(\alpha)=f({\bf x_k}+\alpha {\bf p_k}) αmin??(α)=f(xk?+αpk?)
構造的函數是一元函數,其極值點處的導數為零:
?′(α)=?fT(xk+αpk)pk=0\phi'(\alpha)=\nabla f^T({\bf x_k}+\alpha{\bf p_k}){\bf p_k}=0 ?′(α)=?fT(xk?+αpk?)pk?=0
這樣就能獲得步長的精確解,也就是所謂的精確線搜索方法。但是實際操作中,如果梯度沒有解析式,那么上面這個方程的解的計算是很困難的。
非精確線搜索法
非精確線搜索法不需要找到精確的步長,而是希望找到一個能夠使優化函數fff穩定收斂并且下降速度較快的步長。此時的步長α\alphaα通常存在于一個或數個區間內。
Armijo條件
Armijo條件又被稱為充分下降條件,是使得fff穩定收斂的充分條件,也是最簡單的條件。
如下圖所示,實線是函數?(α)=f(xk+αpk)\phi(\alpha)=f({\bf x_k}+\alpha {\bf p_k})?(α)=f(xk?+αpk?)的圖像,虛線l(α)l(\alpha)l(α)表達式為:
?′(α)=?fT(xk+αpk)pkl(α)=?(0)+c1?′(0)(x?xk),0<c1<1\phi'(\alpha)=\nabla f^T({\bf x_k}+\alpha{\bf p_k}){\bf p_k} \\ \quad \\ l(\alpha)=\phi({0})+c_1\phi'(0)({\bf x-x_k}),0<c_1<1 ?′(α)=?fT(xk?+αpk?)pk?l(α)=?(0)+c1??′(0)(x?xk?),0<c1?<1
由圖可以看出,當實線在虛線下方時,?(α)≤?(0)\phi({\alpha})\le\phi({0})?(α)≤?(0),也就是函數必然下降。
這就是Armijo條件,用表達式來表示就是:
?(α)≤I(α)→f(xk+αpk)≤f(xk)+c1α?fT(xk)pk\phi(\alpha)\le I(\alpha) \\ \quad \\ \to \quad f({\bf x_k}+\alpha {\bf p_k})\le f({\bf x_k})+c_1\alpha\nabla f^T({\bf x_k}){\bf p_k} ?(α)≤I(α)→f(xk?+αpk?)≤f(xk?)+c1?α?fT(xk?)pk?
Wolfe條件
Armijo條件有一個問題:雖然能夠保證梯度下降,但是當步長α\alphaα極小的時候,必然能夠滿足Armijo條件,但是下降的速度很慢,而且超小的步長可能導致迭代中的除零錯誤(Nan)。我們需要保證迭代的每一步都有充分的下降。
如下圖所示,如果我們限制?′(α)≥c1?′(0)\phi'(\alpha)\ge c_1\phi'(0)?′(α)≥c1??′(0),也就是?(α)\phi(\alpha)?(α)的斜率不夠陡,達到相對平緩的區域,就形成了Curvature
將Armijo條件與Curvature條件合并,就是Wolfe條件,其表達式如下:
f(xk+αpk)≤f(xk)+c1α?fT(xk)pk?fT(xk+αpk)pk≥c2?fT(xk)pk0<c1<c2<1f({\bf x_k}+\alpha {\bf p_k})\le f({\bf x_k})+c_1\alpha\nabla f^T({\bf x_k}){\bf p_k} \\ \quad \\ \nabla f^T({\bf x_k}+\alpha{\bf p_k}){\bf p_k} \ge c_2\nabla f^T({\bf x_k}){\bf p_k} \\ \quad \\ 0<c_1<c_2<1\\ f(xk?+αpk?)≤f(xk?)+c1?α?fT(xk?)pk??fT(xk?+αpk?)pk?≥c2??fT(xk?)pk?0<c1?<c2?<1
Wolfe條件如下圖所示:
Goldstein條件
Wolfe條件需要求優化函數的梯度,比較麻煩。于是出現了只需要求優化函數值的Goldstein條件:
f(xk)+(1?c1)α?fT(xk)pk≤f(xk+αpk)≤f(xk)+c1α?fT(xk)pk0<c1<0.5f({\bf x_k})+(1-c_1)\alpha\nabla f^T({\bf x_k}){\bf p_k} \le f({\bf x_k}+\alpha {\bf p_k})\le f({\bf x_k})+c_1\alpha\nabla f^T({\bf x_k}){\bf p_k} \\ 0<c_1<0.5 f(xk?)+(1?c1?)α?fT(xk?)pk?≤f(xk?+αpk?)≤f(xk?)+c1?α?fT(xk?)pk?0<c1?<0.5
Goldstein條件的左邊使得步長不會太小,右邊保證梯度下降,但是可能出現找不到最優步長的情況,如下圖所示。
回溯法
由于Wolfe條件實現復雜,實際使用中,可以采用回溯法實現Armijo條件或者Goldstein條件,具體流程是:
當初始α0\alpha_0α0?比較大時,回溯法搜索到的步長就不會太小。
后記
下篇可能會繼續學習共軛梯度法。
總結
以上是生活随笔為你收集整理的数值计算之 线搜索法,Armijo,Wolfe,Goldstein条件,回溯法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 比尔·盖茨:现在比任何时候都需要新的救命
- 下一篇: oc语言基础入门