Backtracking line search的理解


使用梯度下降方法求解凸優化問題的時候,會遇到一個問題,選擇什么樣的梯度下降步長才合適。

假設優化函數為,若每次梯度下降的步長都固定,則可能出現左圖所示的情況,無法收斂。若每次步長都很小,則下降速度非常慢,需要很多輪的迭代,如右圖所示。所以步長的選擇和收斂速度是一個取舍關系。

於是,有了一種可調節步長的解法,稱為backtracking line search。

假設我們當前的位置為Xc 並且要在d方向上尋找更優的解,那么問題就變為了估計Φ(t)的最小值,t是步長。

關於P的新的解是。那么怎么來估計這個步長呢?(直接把課件的幻燈片貼上來了)

也就是說,設f(x)在Xc的導數,再設兩個變量r和c∈(0, 1).

因為r∈(0, 1),所以rv隨着v的增大而趨向於0,也就是步長t逐漸減小,直到找到滿足條件的rv。之前已經設定了,所以必定有

課件里給出了一段Matlab的偽代碼,翻譯過來差不多就是這樣

function t = BLS(f,d,x,r,c)
% Backtracking line search
% Input :
% f: MATLAB file that returns function value
% d: The search direction
% x: current x
% r : backtrack step between (0,1) usually 1/2
% c: (0,1) usually 10^{-4}
% Output :
% t: adaptive step length


[fc, gc] = feval(f,x);
xc = x;
x = xc + t*d;
fk1 = feval(f,x);
t = 1;
while fk1 > fk + c*t*(gk'*d)
t= t*r;
x
= xc + t*d;
fk1
= feval(f,x);
end

最后,課件里給出了尋找方向d的幾種方法

 

參考資料:

http://www.stat.cmu.edu/~ryantibs/convexopt/lectures/05-grad-descent.pdf

https://www.math.washington.edu/~burke/crs/408/lectures/L7-line-search.pdf

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM