日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Armijo-Goldstein法则和Wolfe-power法则图解

發布時間:2023/12/8 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Armijo-Goldstein法则和Wolfe-power法则图解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文是對[4]進行更進一步的詳解.

Armijo-Goldstein法則和wolfe-power法則用于steepest descent算法,并不用于gradient descent算法.
######################先說Armijo-Goldstein法則#############################################

Armijo-Goldstein法則出自文獻[3]

Armijo-Goldstein法則描述如下:

ρgkT≥f(xk+sk)?f(xk)sk≥(1?ρ)gkT①\rho g_k^T≥\frac{f(x_k+s_k)-f(x_k)}{s_k}≥(1-\rho)g_k^T①ρgkT?sk?f(xk?+sk?)?f(xk?)?(1?ρ)gkT?
其中sk=αdks_k=\alpha d_ksk?=αdk?
dkd_kdk?是常數

先說目標:
這個法則的目標是獲得sks_ksk?里面的系數α\alphaα,這個α\alphaα就是機器學習里面常說的學習率
也就是說,steepest descent和gradient descent的區別是,
steepest descent里面用到Armijo-Goldstein或者wolfe-power就是為了獲取一個動態變化的α\alphaα

先說說這個ρ\rhoρ是怎么冒出來的,首先:
f′(xk)=limsk?>0f(xk+sk)?f(xk)skf'(x_k)=lim_{s_k->0}\frac{f(x_k+s_k)-f(x_k)}{s_k}f(xk?)=limsk??>0?sk?f(xk?+sk?)?f(xk?)?
我們希望下一次迭代得到的函數值f(xk+sk)f(x_k+s_k)f(xk?+sk?)更加小一點,小到什么程度呢?
作者腦袋一拍在當前的xkx_kxk?的導數gkTg_k^TgkT?乘以一個系數ρ\rhoρ,這樣不就變小了么?

這更加小一點的地方有啥特點呢?
觀察得到斜率變大了,問題是要變多大呢?太大or太小都不好
根據圖中可以知道gkTg_k^TgkT?是小于零的,那么式①兩側同除以一個因子gkTg_k^TgkT?,
因為這個因子是負數,所以不等式兩遍除以一個負數要變符號,
得到ρ≤(1?ρ)?ρ∈(0,0.5)\rho≤(1-\rho)?\rho∈(0,0.5)ρ(1?ρ)?ρ(0,0.5)
如果不滿足這個區間,[2]提到會影響超線性收斂性,摘錄如下:

超線性收斂咋回事見本文末尾,具體為啥會導致超線性收斂,[2]書中并沒有給出相關證明.

再次引用[2]書中的一個圖:

注意,這個圖中的虛線都是代表斜率,并非代表實際的某種線條.
好了,我們會發現,[4]中分析了一大堆,都在說一件事兒,當前為xkx_kxk?時,根據當前得到的斜率gkTg_k^TgkT?,我們希望滿足①來得到α\alphaα
得到α\alphaα以后計算f(xk+αdk)f(x_k+\alpha d_k)f(xk?+αdk?),讓f(xk+αdk)f(x_k+\alpha d_k)f(xk?+αdk?)的數值落入上面的bc區.
matlab代碼來自[5]:
新建文件Opt_Goldstein.m

function [lam, newxk, fk, newfk] = Opt_Goldstein(xk, dk) a = 0; % 搜索下界 b = 10; % 搜索上界 lam = 1; % 初始點 c1 = 0.25; c2 = 0.75; t = 2; newxk=0; fk=0; newfk=0; % 循環求解最佳的步長 while a < b xss=removed>= fun(xk) + c2*lam*gfun(xk)'*dk% 輸出最佳的步長 newxk = xk + lam*dk;fk = fun(xk);newfk = fun(newxk);break; % 搜索步長不滿足 Goldstein 準則,繼續迭代 else a = lam; lam = 0.5*(a + b); if b &lt; inf lam = 0.5*(a + b); else lam = t*lam; end end else b = lam; lam = 0.5*(a + b); end if abs(a - b) &lt; 1e-3break;end endfunction f=fun(x) f = x^2-2*x+7; function gf=gfun(x) gf = 2*x-2*x;

運行方法是,在matlab命令行輸入:
[lam, newxk, fk, newfk]=Opt_Goldstein(0,1)
即可得到lam,這里的lam就是上面的分析中提到的動態學習率α\alphaα
然后把這個學習率代入到你們所熟悉的各種算法,例如擬牛頓法里面,就能用來求解函數的極值了.
###################再說說Wolfe-power法則(略寫)#######################
Wolfe-power法則是把限制區間設定為e右邊的區間
強Wolfe-power法則是把限制區間設定為[e,b)
類似于Armijo-Goldstein法則,Wolfe-power法則也是通過概率限制下一步迭代時的可能的函數值.
###############################附錄############################################
超線性收斂摘自[1]:

意思很簡單,超線性收斂就是比我們高數課本上的收斂情況收斂更快,這樣的收斂就叫超線性收斂
[2]中只是提及,并沒有證明這個范圍:

Reference:
[1]Math concepts / 數學概念
[2]《最優化理論與方法》-袁亞湘
[3]Cauchy’s method of minimization
[4]用“人話”解釋不精確線搜索中的Armijo-Goldstein準則及Wolfe-Powell準則
[5]學習手記——線搜索Goldstein準則

總結

以上是生活随笔為你收集整理的Armijo-Goldstein法则和Wolfe-power法则图解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。