Armijo条件,Wolfe条件,Goldstein条件
目錄
- 線搜索
- 非精確線搜索(Armijo條件,Wolfe條件,Goldstein條件)
- 強Wolfe條件線搜索算法
線搜索
對于迭代式xk+1=xk+αpkx_{k+1} = x_k +\alpha p_kxk+1?=xk?+αpk?,其中pkp_kpk?是由梯度法,牛頓法,CG法等方法計算出的下降方向,α\alphaα是下降的步長。
非精確線搜索(Armijo條件,Wolfe條件,Goldstein條件)
Armijo條件
要求f(xk+αpk)f(x_k + \alpha p_k)f(xk?+αpk?)相對于f(xk)f(x_k)f(xk?)有足夠的下降,可以寫作:
f(xk+αpk)≤f(xk)+c1α?f(xk)Tpkf(x_k + \alpha p_k) \leq f(x_k) + c_1\alpha \nabla f(x_k)^T p_kf(xk?+αpk?)≤f(xk?)+c1?α?f(xk?)Tpk?
因為f(xk)Tpk<0f(x_k)^T p_k < 0f(xk?)Tpk?<0,所以要求c1>0c_1 > 0c1?>0,但如果c1≥1c_1 \geq 1c1?≥1那么對于某些函數(例如強凸函數)就找不到滿足不等式的解。因此上式中c1∈(0,1)c_1 \in (0,1)c1?∈(0,1)。
記?(α)=f(xk+αpk),l(α)=f(xk)+c1α?f(xk)Tpk\phi(\alpha) = f(x_k + \alpha p_k), l(\alpha) = f(x_k) + c_1\alpha \nabla f(x_k)^T p_k?(α)=f(xk?+αpk?),l(α)=f(xk?)+c1?α?f(xk?)Tpk?,那么Armijo條件框定的范圍如下:
實際應用中,c1c_1c1?一般取得很小,例如c1=10?4c_1 = 10^{-4}c1?=10?4
curvature條件
從上圖不難發現只要α\alphaα足夠小就會滿足Armijo條件,但這樣會導致下降的量不夠大,為了避免α\alphaα取過小的值,又有了下面的的curvature條件:
?f(xk+αkpk)Tpk≥c2?f(xk)Tpk\nabla f(x_k + \alpha_k p_k)^T p_k \geq c_2 \nabla f(x_k)^T p_k?f(xk?+αk?pk?)Tpk?≥c2??f(xk?)Tpk?
其中c2∈(c1,1)c_2 \in (c_1, 1)c2?∈(c1?,1)。
- 如果滿足上式,?f(xk+αkpk)Tpk\nabla f(x_k + \alpha_k p_k)^T p_k?f(xk?+αk?pk?)Tpk?要么是輕微的負值(表明xk+αkpkx_k + \alpha_k p_kxk?+αk?pk?已經趨于極小值附近),要么是正值(表明xk+αkpkx_k + \alpha_k p_kxk?+αk?pk?已經越過了極小值),那么此時停止線搜索是合理的
- 如果不滿足上式,?f(xk+αkpk)Tpk\nabla f(x_k + \alpha_k p_k)^T p_k?f(xk?+αk?pk?)Tpk?就是負得比較多的負值,那么說明在pkp_kpk?方向fff還有比較大的下降空間,可以繼續搜索更優的α\alphaα值
上式等價于?′(αk)≥c2?′(0)\phi'(\alpha_k) \geq c_2 \phi'(0)?′(αk?)≥c2??′(0),因此curvature條件框住的范圍為:
由上圖可以看出curvature條件可以避開很小的α\alphaα。一般情況如果pkp_kpk?是Newton或者quasi-Newton法求得的方向,那么c2=0.9c_2 = 0.9c2?=0.9,如果pkp_kpk?是非線性CG法求得的,那么c2=0.1c_2 = 0.1c2?=0.1。
Wolfe條件,強Wolfe條件
Wolfe條件 = Armijo條件 + curvature條件
f(xk+αkpk)≤f(xk)+c1αk?f(xk)Tpk?f(xk+αkpk)Tpk≥c2?f(xk)Tpk\begin{aligned} f(x_k + \alpha_k p_k) &\leq f(x_k) + c_1\alpha_k \nabla f(x_k)^T p_k\\ \nabla f(x_k + \alpha_k p_k)^T p_k &\geq c_2 \nabla f(x_k)^T p_k \end{aligned}f(xk?+αk?pk?)?f(xk?+αk?pk?)Tpk??≤f(xk?)+c1?αk??f(xk?)Tpk?≥c2??f(xk?)Tpk??
其中0<c1<c2<10< c_1 < c_2 < 10<c1?<c2?<1
但Wolfe條件找到的α\alphaα有可能離極小值較遠,比如:
因此又提出了強Wolfe條件:
f(xk+αkpk)≤f(xk)+c1αk?f(xk)Tpk∣?f(xk+αkpk)Tpk∣≤c2∣?f(xk)Tpk∣\begin{aligned} f(x_k + \alpha_k p_k) &\leq f(x_k) + c_1\alpha_k \nabla f(x_k)^T p_k\\ |\nabla f(x_k + \alpha_k p_k)^T p_k| &\leq c_2 |\nabla f(x_k)^T p_k| \end{aligned}f(xk?+αk?pk?)∣?f(xk?+αk?pk?)Tpk?∣?≤f(xk?)+c1?αk??f(xk?)Tpk?≤c2?∣?f(xk?)Tpk?∣?
與Wolfe條件相比,強Wolfe條件不允許?′(αk)\phi'(\alpha_k)?′(αk?)正得太大,也就是不能越過極小值太遠。
(Wolfe條件存在性定理)假設f:Rn→Rf: \mathbb{R^n} \rightarrow \mathbb{R}f:Rn→R連續可微,pkp_kpk?是xkx_kxk?處的下降方向,并且fff在{xk+αpk∣α>0}\{x_k + \alpha p_k | \alpha > 0\}{xk?+αpk?∣α>0}上有下界。如果0<c1<c2<10 < c_1 < c_2 <10<c1?<c2?<1,那么存在一個步長區間即滿足Wolfe條件也滿足強Wolfe條件
Proof:因為?(α)=f(xk+αpk)\phi(\alpha) = f(x_k + \alpha p_k)?(α)=f(xk?+αpk?)有下界,而l(α)=f(xk)+c1α?f(xk)Tpkl(\alpha) = f(x_k) + c_1\alpha \nabla f(x_k)^T p_kl(α)=f(xk?)+c1?α?f(xk?)Tpk?是無界減函數,因此l(α)l(\alpha)l(α)和?(α)\phi(\alpha)?(α)一定有交點。記α′\alpha'α′為最小的交點,那么有:
f(xk+α′pk)=f(xk)+c1α′?f(xk)Tpkf(x_k + \alpha' p_k) = f(x_k) + c_1\alpha' \nabla f(x_k)^T p_kf(xk?+α′pk?)=f(xk?)+c1?α′?f(xk?)Tpk?
并且對所有小于α′\alpha'α′的值,Armijo條件都成立。
又由中值定理,存在α′′∈(0,α′)\alpha'' \in (0, \alpha')α′′∈(0,α′)使得:
f(xk+α′pk)?f(xk)=α′?f(xk+α′′pk)Tpkf(x_k + \alpha' p_k) - f(x_k) = \alpha' \nabla f(x_k + \alpha'' p_k)^T p_kf(xk?+α′pk?)?f(xk?)=α′?f(xk?+α′′pk?)Tpk?
??f(xk+α′′pk)Tpk=c1f(xk)Tpk≥c2f(xk)Tpk\Rightarrow \nabla f(x_k + \alpha'' p_k)^T p_k = c_1 f(x_k)^T p_k \geq c_2 f(x_k)^T p_k??f(xk?+α′′pk?)Tpk?=c1?f(xk?)Tpk?≥c2?f(xk?)Tpk?
因此α′′\alpha''α′′滿足Wolfe條件,又由f的連續可微性,α′′\alpha''α′′的領域也滿足Wolfe條件,c1f(xk)Tpkc_1 f(x_k)^T p_kc1?f(xk?)Tpk?又是負值,因此該區間也滿足強Wolfe條件,得證。
Goldstein條件
Goldstein條件如下:
f(xk)+(1?c)αk?f(xk)Tpk≤f(xk+αkpk)≤f(xk)+cαk?f(xk)Tpkf(x_k) + (1-c)\alpha_k \nabla f(x_k)^T p_k \leq f(x_k + \alpha_k p_k) \leq f(x_k) + c\alpha_k \nabla f(x_k)^T p_kf(xk?)+(1?c)αk??f(xk?)Tpk?≤f(xk?+αk?pk?)≤f(xk?)+cαk??f(xk?)Tpk?
其中0<c<1/20 < c < 1/20<c<1/2
上式的右邊即為Armijo條件,而左邊是為了避免找到的α\alphaα太小:
但Goldstein條件的問題是它左邊的不等式有可能會將所有的極小值點排除在外。一般情況下Goldstein條件常用于Newton-type方法,但不適用于quasi-Newton方法
Backtracking線搜索
因為Wolfe條件的實現比較復雜,如果只是為了解決Armijo條件可能取值太小的問題,我們可以使用Backtracking線搜索:
只要初始的α ̄\overline{\alpha}α取得足夠大,那么Backtracking線搜索方法就可以找到一個足夠大的滿足Armijo條件的α\alphaα。
強Wolfe條件線搜索算法
如果要使用Wolfe條件來搜索步長,[3]中提供了如下兩步式算法:
算法解釋如下:
Reference:
總結
以上是生活随笔為你收集整理的Armijo条件,Wolfe条件,Goldstein条件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hibernate常见错误之Unable
- 下一篇: Tensorflow实现DeepFM(代