1. 程式人生 > >最優化:一維搜尋的Wolfe條件與Goldstein條件

最優化:一維搜尋的Wolfe條件與Goldstein條件

line search(一維搜尋,或線搜尋)是最優化(Optimization)演算法中的一個基礎步驟/演算法。它可以分為精確的一維搜尋以及不精確的一維搜尋兩大類。
在本文中,我想用“人話”解釋一下不精確的一維搜尋的兩大準則:Armijo-Goldstein準則 & Wolfe-Powell準則。
之所以這樣說,是因為我讀到的所有最優化的書或資料,從來沒有一個可以用初學者都能理解的方式來解釋這兩個準則,它們要麼是長篇大論、把一堆數學公式丟給你去琢磨;要麼是簡短省略、直接略過了解釋的步驟就一句話跨越千山萬水得出了結論。
每當看到這些書的時候,我腦子裡就一個反應:你們就不能寫人話嗎?

我下面就嘗試用通俗的語言來描述一下這兩個準則。

【1】為什麼要遵循這些準則由於採用了不精確的一維搜尋,所以,為了能讓演算法收斂(即:求得極小值),人們逐漸發現、證明了一些規律,當你遵循這些規律的時候,演算法就很有可能收斂。因此,為了達到讓演算法收斂的目的,我們就要遵循這些準則。如果你不願意遵循這些已經公認有效的準則,而是要按自己的準則來設計演算法,那麼恭喜你,如果你能證明你的做法是有效的,未來若干年後,書本里可能也會出現你的名字。【2】Armijo-Goldstein準則此準則是在196X年的時候由Armijo和Goldstein提出的,當然我沒有具體去搜過這倆人是誰。在有的資料裡,你可能會看到“Armijo rule”(Armijo準則)的說法,可能是同一回事,不過,任何一個對此作出重要貢獻的人都是不可抹殺的,不是麼?

Armijo-Goldstein準則的核心思想有兩個:①目標函式值應該有足夠的下降;②一維搜尋的步長α不應該太小。

這兩個思想的意圖非常明顯。由於最優化問題的目的就是尋找極小值,因此,讓目標函式函式值“下降”是我們努力的方向,所以①正是想要保證這一點。同理,②也類似:如果一維搜尋的步長α太小了,那麼我們的搜尋類似於在原地打轉,可能也是在浪費時間和精力。

文章來源:http://www.codelast.com/
有了這兩個指導思想,我們來看看Armijo-Goldstein準則的數學表示式:

其中, 0<ρ<12 
文章來源:http://www.codelast.com/
(1)為什麼要規定 ρ(0,12) 這個條件?其實可以證明:如果沒有這個條件的話,將影響演算法的超線性收斂性(定義看這個連結,第4條)。在這個速度至關重要的時代,沒有超線性收斂怎麼活啊!(開個玩笑)
具體的證明過程,大家可以參考袁亞湘寫的《最優化理論與方法》一書,我沒有仔細看,我覺得對初學者,不用去管它。
(2)

第1個不等式的左邊式子的泰勒展開式為:
f(xk+αkdk)=f(xk)+αkgkTdk+o(αk) 
去掉高階無窮小,剩下的部分為: f(xk)+αkgkTdk 
而第一個不等式右邊與之只差一個係數 ρ 
我們已知了 gkTdk<0 (這是 dk 為下降方向的充要條件),並且 ρ(0,12) ,因此,1式右邊仍然是一個比 f(xk) 小的數,即:
f(xk)+αkρgkT

相關推薦

最優化搜尋的Wolfe條件Goldstein條件

line search(一維搜尋,或線搜尋)是最優化(Optimization)演算法中的一個基礎步驟/演算法。它可以分為精確的一維搜尋以及不精確的一維搜尋兩大類。在本文中,我想用“人話”解釋一下不精確的一維搜尋的兩大準則:Armijo-Goldstein準則 & Wolfe

最優化-精確搜尋

試探法 精確一維搜尋就是通過迭代取減少搜尋區間 對於搜尋區間[a, b] 在這個區間中找連個互不相同的試探點p1 p2獲取f(p1), f(p2), 設p1 < p2 若f(p1) < f(p2)   則丟棄區間 [p2, b] 若f(p1) >= f(p2)

小白最優化學習(四) 演算法學習 不精確搜尋方法

一、什麼是不精確一維搜尋方法 一維搜尋方法是 求函式的最小值,來得到最優步長,不精確一維搜尋方法,即保證目標函式在每次迭代有滿意的下降量的方法。到一次滿意的水平,就是可接受步長。 二、幾個不精確一維搜尋方法的準則  引用地址 line search(一維搜尋,或線搜尋)

最優化第二講—搜尋演算法(二分法、等區間法)

本講主要列一下單峰搜尋演算法 問題:f(x)在區間[a,b]內只有一個極小值點,要找到這個極小值點或者這個極小值點所在的區間[x1,x2],其中[x1, x2]要遠遠小於[a, b] 方法: 一個通用的結論 要縮小區間,必須計算兩個點,如果所示,必須計算x1和x2,然後對

JAVA數組

取數 使用 引用類型 spa 分配內存 ever () 最小 tint 1 /* 2 數組:存儲同一種數據類型的多個元素的容器。 3 4 定義格式: 5 A:數據類型[] 數組名; 6 B:數據類型 數

如何將陣列轉換成考慮南天陣列元素?

我有一個像下面的列表,我想將這個元素分解成n維基於NaN值的禮物。 輸入: [nan 0.1 0.4 0.6 nan 0.8 0.7 0.9 nan 0.3 0.6 0.8] 輸出: [[0.1 0.4 0.6] [0.8 0.7 0.9] [0.3 0.6 0.8]] 如何實現

訊號卷積影象卷積的區別

基礎概念:   卷積神經網路(CNN):屬於人工神經網路的一種,它的權值共享的網路結構顯著降低了模型的複雜度,減少了權值的數量。卷積神經網路不像傳統的識別演算法一樣,需要對資料進行特徵提取和資料重建,可以直接將圖片作為網路的輸入,自動提取特徵,並且對圖形的變形等具有高度不變形。在語音分析和影象識

搜尋方法/黃金分割法(附matlab程式碼)

一維搜尋方法中的黃金分割法(附matlab程式碼) 一維搜尋方法:一維搜尋,又稱一維優化,是指求解一維目標函式 f(X) 最優解的過程,分為試探法和插值法。 黃金分割法:屬於一維搜尋方法中的試探法,適用於[a,b]區間上的任何單谷函式求極小值問題。 證明r=0.

搜尋---黃金分割法

參考網址: https://blog.csdn.net/shenziheng1/article/details/51317801 https://www.jianshu.com/p/beea2b4447c8 原理 演算法流程 演算法 a = 1;

首席架構師白鱔的進階哲學之道

本文根據白鱔老師在〖2016 DAMS中國資料資產管理峰會〗現場演講內容整理而成。 大家好,今天想跟大家談談關於DBA怎麼去考慮哲學化的問題。前段時間和朋友聚在一起時也說到,十多年前的很多DBA現在都不再幹這行了,很多後面都變成哲學家了。為什麼這麼說呢?因為很多DBA後面都轉去做架構師了。 其實在

人工智慧背面群年輕人的苦

從充滿科幻色彩的高大上概念到飛入尋常百姓家的衣食住行,AI的「平民化」離不開一群又苦又酷的人。這群離AI技術最近的人,正是大眾印象中穿格子襯衫、背雙肩包、對程式碼狂熱的年輕程式設計師,在他們的種種沒想到中,人工智慧的研發在這個國家高速走過實驗性階段,落地應用與商業化被提上日程。 文|巴芮 編輯|張慧 其

演算法練習陣列旋轉

題目描述:求一個一維陣列向右旋轉K個位置後的結果。比如,一維陣列{1, 2, 3, 4, 5},當k = 2時,求得的結果為{4, 5, 1, 2, 3}。要求常數級空間複雜度,允許修改原有陣列。 一、使用額外的空間(在不要求常數級空間複雜度的情況下) 這樣很簡單,使用一

【MATLAB】搜尋之平分法

clc;clear; syms x a = -10; b = 10; f =3*x^4-16*x^3+30*x^2-24*x+8; dfdx =diff(f,x); while(1)     x0 = 1/2*(a+b);     dfdx0 = subs(dfdx,x,x

Attention+種基於關注關係多使用者行為的圖推薦演算法

劉夢娟, 王巍, 李楊曦,等. AttentionRank~+:一種基於關注關係與多使用者行為的圖推薦演算法[J]. 計算機學報, 2017(3). 基於Random Walk的TSPR演算法 該演算法採用一階Markov-chain計算遊走 概 率。方

【MATLAB】搜尋之牛頓法

clear;clc;formatcompact syms x f =3*x^4-16*x^3+30*x^2-24*x+8; % f =x^4-4*x^3-6*x^2-16*x+4; %書上P99例題 x0 = 3; %設定初始點 i = 1; while(i)     x

【工程優化】搜尋方法

一維搜尋方法的分類如下:         這篇文章主要講解黃金分割法、二分法、牛頓法這三種一維搜尋方法。黃金分割法只用到原函式,二分法用到函式的一階導,牛頓法用到函式的二階導。由於本文主要對研一上學期的課程中的部分演算法進行程式實現,理論部分大多參考上課的課件。 黃金分

精彩百例陣列,選擇排序

/* file name:選擇法排序<span style="white-space:pre"> </span>重點在於迴圈賦值給min,找出最小值的排序方法 */ # include <stdio.h> int main(v

hive join on 條件 where 條件區別

1. select * from a left join b on a.id = b.id and a.dt=20181115; 2. select * from a left join b on a.id = b.id and b.dt=20181115; 3. select * from a jo

Oracle (03)分組子句.where條件 having條件的區別.子查詢.DDL.DML.資料的增刪改.TCL

昨天作業的回顧 ** 顯示員工的id,last_name,salary,部門名稱 , 要求, 把沒有部門編號的員工也給查詢到: 前置條件: 公司業務需要, 把員工編號為23 24 25 的員工 分配到了新的部門, 但是部門還未成立! update s_emp set d

最優化二次插值法(Quadratic interpolation method)

理論見參考《Practical Optimization》中4.5節,程式碼實現如下:( 可以將黃金分割法和二次插值法結合起來,想用黃金分割法快速搜尋得到最優解,然後用該最優解作為二次插值的初值,可以提高計算精度。Matlab中就是採用此組合策略。 ) OneDimensi