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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

最速下降法steepest descent详细解释

發(fā)布時(shí)間:2023/12/20 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 最速下降法steepest descent详细解释 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

----------------------先閑聊幾句------------------------------------
[1]首次提出了梯度下降法和最速下降法,既然柯西寫出來了,所以這兩個(gè)算法肯定不個(gè)一個(gè)東西,它們的區(qū)別是學(xué)習(xí)率是否恒定。
[4]提出了GoldStein法則

Wolfe準(zhǔn)則以及Goldstein
[5][8]給出了具體的代碼實(shí)現(xiàn),
[6][7]中給出了手算steepest descent的例子

梯度的定義:
gradf(x,y,z)=?f?xi?+?f?yj?grad\ f(x,y,z)=\frac{\partial f}{\partial x}\vec{i}+\frac{\partial f}{\partial y}\vec{j}grad?f(x,y,z)=?x?f?i+?y?f?j?

然后稍微整理下目前學(xué)過的凸優(yōu)化的一些方法:
1.steepest descent(默認(rèn)無(wú)約束凸優(yōu)化,使用歐式范數(shù)就是梯度下降,使用Hessian范數(shù)就是牛頓法,參考[10])
2.牛頓法(二階牛頓法求最小值,多維即可涉及Hessian矩陣,計(jì)算量巨大,備受吐槽)
3.擬牛頓法(DFP、BFGS、L-BFGS)
4.共軛梯度法

而且Armijo-Goldstein法則和Wolfe-power法則的應(yīng)用則是包含在上述算法的line-search環(huán)節(jié)中的
這篇博文是對(duì)[2]里面的內(nèi)容進(jìn)行進(jìn)一步詳細(xì)的闡述

--------------------閑談結(jié)束,下面開始偽代碼--------------------------
文的重點(diǎn)是描述steepest descent的原理細(xì)節(jié).

首先是steepest descent算法偽代碼[6]:
1.取初始點(diǎn)X(0)X^{(0)}X(0),容許誤差(精度)?>0,k:=0\epsilon>0,k:=0?>0,k:=0
這里的:=符號(hào)的意思是"定義為"的意思.
2.計(jì)算p(k)=?▽f(X(k))p^{(k)}=-\triangledown f(X^{(k)})p(k)=?f(X(k))
3.檢驗(yàn)||p(k)p^{(k)}p(k)||≤?\epsilon??若是迭代終止,取X?=X(k),X^{*}=X^{(k)},X?=X(k),否則轉(zhuǎn)4
4.求最有步長(zhǎng)λk\lambda_kλk?,
minλ≥0f(X(k)+λkpk)=f(X(k)+λkp(k))min_{\lambda≥0}f(X^{(k)}+\lambda_k p^{k})=f(X^{(k)}+\lambda_k p^{(k)})minλ0?f(X(k)+λk?pk)=f(X(k)+λk?p(k))(一維搜索)
5.令X(k+1)=X(k)+λkp(k),令k:=k+1,轉(zhuǎn)2X^{(k+1)}=X^{(k)}+\lambda_k p^{(k)},令k:=k+1,轉(zhuǎn)2X(k+1)=X(k)+λk?p(k),k:=k+1,轉(zhuǎn)2
注意:
2中利用了一個(gè)結(jié)論:一維搜索最優(yōu)解的梯度▽f(X(k+1))與搜索方向p(k)正交①\triangledown f(X^{(k+1)})與搜索方向p^{(k)}正交①f(X(k+1))p(k)
[10]中雖然有理論證明,這里我來一個(gè)幾何上面的直觀解釋吧:
為什么是正交的呢?

下面的黑線部分是X(k)X^{(k)}X(k),
虛線部分是λkp(k)\lambda_kp^{(k)}λk?p(k),
棕色線條的長(zhǎng)度是λk,minλ≥0f(X(k)+λkp(k))\lambda_k,min_{\lambda≥0}f(X^{(k)}+\lambda_k p^{(k)})λk?,minλ0?f(X(k)+λk?p(k))
橙色的點(diǎn)是f(X)=0f(X)=0f(X)=0的坐標(biāo).

①中的結(jié)論等效于:
夾角多大的時(shí)候,λk,minλ≥0f(X(k)+λkp(k))\lambda_k,min_{\lambda≥0}f(X^{(k)}+\lambda_k p^{(k)})λk?,minλ0?f(X(k)+λk?p(k))得到最小值?
講人話就是,角度多大,橙色點(diǎn)到虛線距離最短?
顯然你們都知道:
點(diǎn)(橙色點(diǎn))到直線距離是垂直的時(shí)候,距離最短,
從而①結(jié)論得證.

#--------------------------------根據(jù)上面的正交結(jié)論來證明λk\lambda_kλk?的取值,證明過程來自[6]---------------------------------------------
證明以下結(jié)論:
λk=g(k)Tp(k)p(k)TQp(k)\lambda_k=\frac{g^{(k)T}p^{(k)}}{p^{(k)T}Qp^{(k)}}λk?=p(k)TQp(k)g(k)Tp(k)?

f(X)=12XTQX+bTX+cf(X)=\frac{1}{2}X^TQX+b^TX+cf(X)=21?XTQX+bTX+c
準(zhǔn)備工作:
g(k)g^{(k)}g(k)=▽f(X(k))=\triangledown f(X^{(k)})=f(X(k))
▽f(X)=QX+b\triangledown f(X)=QX+bf(X)=QX+b
X(k+1)=X(k)+λkp(k)X^{(k+1)}=X^{(k)}+\lambda_kp^{(k)}X(k+1)=X(k)+λk?p(k)
▽f(X(k+1))Tp(k)=0\triangledown f(X^{(k+1)})^T p^{(k)}=0f(X(k+1))Tp(k)=0
開始證明:
g(k)g^{(k)}g(k)
=▽f(X(k))=\triangledown f(X^{(k)})=f(X(k))
=QX(k)+b=QX^{(k)}+b=QX(k)+b

g(k+1)g^{(k+1)}g(k+1)
=▽f(X(k+1))=\triangledown f(X^{(k+1)})=f(X(k+1))
=QX(k+1)+b=QX^{(k+1)}+b=QX(k+1)+b
=Q(X(k)+λkpk)+b=Q(X^{(k)}+\lambda_kp^{k})+b=Q(X(k)+λk?pk)+b
=QX(k)+b+λkQp(k)=QX^{(k)}+b+\lambda_k Q p^{(k)}=QX(k)+b+λk?Qp(k)
=[QX(k)+b]+λkQp(k)=[QX^{(k)}+b]+\lambda_k Q p^{(k)}=[QX(k)+b]+λk?Qp(k)
=g(k)+λkQp(k)=g^{(k)}+\lambda_kQp^{(k)}=g(k)+λk?Qp(k)

利用前面的結(jié)論:
g(k+1)Tp(k)g^{(k+1)T}p^{(k)}g(k+1)Tp(k)
=(g(k)+λkQp(k))Tp(k)=(g^{(k)}+\lambda_kQp^{(k)})^Tp^{(k)}=(g(k)+λk?Qp(k))Tp(k)
=g(k)Tp(k)+λkp(k)TQp(k)=g^{(k)T}p^{(k)}+\lambda_kp^{(k)T}Qp^{(k)}=g(k)Tp(k)+λk?p(k)TQp(k)
=0=0=0

得到:
λk=?g(k)Tp(k)p(k)TQp(k)\lambda_k=-\frac{g^{(k)T}p^{(k)}}{p^{(k)T}Qp^{(k)}}λk?=?p(k)TQp(k)g(k)Tp(k)?

------------------------下面是手算steepest descent案例,來自[6]------------------------------------
用最速下降法求f(X)=x12+4x22f(X)=x_1^2+4x_2^2f(X)=x12?+4x22?的極小值點(diǎn),
迭代兩次.X(0)=(1,1)T,?=10?4X^{(0)}=(1,1)^T,\epsilon =10^{-4}X(0)=(1,1)T,?=10?4

當(dāng)然了,因?yàn)檎麄€(gè)式子就是兩個(gè)平方項(xiàng),我們可以一眼看出,最終結(jié)果X?=(0,0)TX^{*}=(0,0)^TX?=(0,0)T
這里只是為了展示算法流程
求解:
f(X)=12(2x12+8x22)=12XTQXf(X)=\frac{1}{2}(2x_1^2+8x_2^2)=\frac{1}{2}X^TQXf(X)=21?(2x12?+8x22?)=21?XTQX

得到Q=[2008]\left[ \begin{matrix} 2 & 0 \\ 0 &8 \end{matrix} \right][20?08?]
g(X)=▽f(X)=[2x18x2]g(X)=\triangledown f(X)=\left[ \begin{matrix} 2x_1 \\ 8x_2 \end{matrix} \right]g(X)=f(X)=[2x1?8x2??]
第一次迭代
1.k=0
2.p(0)=?g(0)=?[28]p^{(0)}=-g^{(0)}=-\left[ \begin{matrix} 2 \\8 \end{matrix} \right]p(0)=?g(0)=?[28?]

這里稍微說一下,這里為什盯著p(0)p^{(0)}p(0)的長(zhǎng)度作為迭代終止條件呢?
這個(gè)要根據(jù)算法第4步驟來理解,
因?yàn)槿绻諗?也就是到等高線額谷底的話,λkp(k)\lambda_kp^{(k)}λk?p(k)的數(shù)值肯定是很小的.
判斷λkp(k)\lambda_kp^{(k)}λk?p(k)與判斷p(k)p^{(k)}p(k)的迭代終止效果應(yīng)該是一致的.
∣∣p(0)∣∣=(?2)2+(?8)2=68||p^{(0)}||=\sqrt{(-2)^2+(-8)^2}=\sqrt{68}p(0)=(?2)2+(?8)2?=68?

4.λ0=?g(0)Tp(0)p(0)TQp(0)=(2,8)[28](2,8)[2,00,8][28]=68520=0.13077\lambda_0=-\frac{g^{(0)T}p^{(0)}}{p^{(0)T}Qp^{(0)}}=\frac{(2,8) \left[ \begin{matrix}2 \\ 8\end{matrix} \right]}{(2,8)\left[ \begin{matrix}2,0 \\0,8\end{matrix} \right]\left[ \begin{matrix} 2 \\8 \end{matrix} \right]}= \frac{68}{520}=0.13077λ0?=?p(0)TQp(0)g(0)Tp(0)?=(2,8)[2,00,8?][28?](2,8)[28?]?=52068?=0.13077
5.X(1)=X(0)+λ0p(0)=[11]?0.13077[28]=[0.73846?0.04616]X^{(1)}=X^{(0)}+\lambda_0p^{(0)}=\left[ \begin{matrix} 1 \\1 \end{matrix} \right]-0.13077\left[ \begin{matrix} 2 \\8 \end{matrix} \right]=\left[ \begin{matrix} 0.73846 \\-0.04616 \end{matrix} \right]X(1)=X(0)+λ0?p(0)=[11?]?0.13077[28?]=[0.73846?0.04616?]

第二次迭代
1.k=1
2.p(1)=?g(1)=?[1.47692?0.39623]p^{(1)}=-g^{(1)}=-\left[ \begin{matrix} 1.47692 \\-0.39623 \end{matrix} \right]p(1)=?g(1)=?[1.47692?0.39623?]
3.||p(1)p^{(1)}p(1)||=1.52237
4.λ1=?g(1)Tp(1)p(1)TQp(1)=0.425\lambda_1=-\frac{g^{(1)}Tp^{(1)}}{p^{(1)T}Qp^{(1)}}=0.425λ1?=?p(1)TQp(1)g(1)Tp(1)?=0.425
5.X(2)=X(1)+λ1p(1)=[0.73846?0.04616]?0.425[1.47692?0.39623]=[0.110760.11076]X^{(2)}=X^{(1)}+\lambda_1p^{(1)}=\left[ \begin{matrix} 0.73846 \\-0.04616 \end{matrix} \right]-0.425\left[ \begin{matrix} 1.47692 \\-0.39623 \end{matrix} \right]=\left[ \begin{matrix} 0.11076\\0.11076 \end{matrix} \right]X(2)=X(1)+λ1?p(1)=[0.73846?0.04616?]?0.425[1.47692?0.39623?]=[0.110760.11076?]
k=2

然后再繼續(xù)往下面迭代(略)
-----------------------------------------------------------------
steep descent具體代碼實(shí)現(xiàn)是[5][8],但是注意,因?yàn)樯厦娴氖炙銢]有使用Armijo-Goldstein法則和Wolfe-power法則,
但是[5][8]使用了Armijo-Goldstein法則,所以代碼的運(yùn)行過程和手算過程是對(duì)應(yīng)不上的.
但是代碼的運(yùn)行結(jié)果是可以和手算結(jié)果對(duì)應(yīng)上的

-----------------------------------------------------------------
Reference:
[1]Methode g ′ en′ erale pour la r ′ esolution des syst ′ emes `d’equations simultan ′ ees
[2]再談 梯度下降法/最速下降法/Gradient descent/Steepest Descent
[3]文獻(xiàn)已經(jīng)沒啥用了-已經(jīng)刪除.
[4]Cauchy’s method of minimization
[5]用Python實(shí)現(xiàn)最速下降法求極值
[6]最速下降法-百度文庫(kù)
[7]【最優(yōu)化】一文搞懂最速下降法
[8]最速下降法(梯度下降法)python實(shí)現(xiàn)
[9]Step-size Estimation for Unconstrained Optimization Methods
[10]梯度下降法和最速下降法的細(xì)微差別

總結(jié)

以上是生活随笔為你收集整理的最速下降法steepest descent详细解释的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。