中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
(轉)對梯度下降法的簡單理解

梯度下降法又叫最速下降法,英文名為steepest descend method.估計搞研究的人應該經常聽見這個算法吧,用來求解表達式最大或者最小值的,屬于無約束優(yōu)化問題。

      首先我們應該清楚,一個多元函數(shù)的梯度方向是該函數(shù)值增大最陡的方向。具體化到1元函數(shù)中時,梯度方向首先是沿著曲線的切線的,然后取切線向上增長的方向為梯度方向,2元或者多元函數(shù)中,梯度向量為函數(shù)值f對每個變量的導數(shù),該向量的方向就是梯度的方向,當然向量的大小也就是梯度的大小。

      現(xiàn)在假設我們要求函數(shù)的最值,采用梯度下降法,如圖所示:

      梯度下降法的基本思想還是挺簡單的,現(xiàn)假設我們要求函數(shù)f的最小值,首先得選取一個初始點后,然后下一個點的產生時是沿著梯度直線方向,這里是沿著梯度的反方向(因為求的是最小值,如果是求最大值的話則沿梯度的方向即可)。梯度下降法的迭代公式為:

     

      其中

表示的是梯度的負方向,
表示的是在梯度方向上的搜索步長。梯度方向我們可以通過對函數(shù)求導得到,步長的確定比較麻煩,太大了的話可能會發(fā)散,太小收斂速度又太慢。一般確定步長的方法是由線性搜索算法來確定,即把下一個點的坐標ak+1看做是
的函數(shù),然后求滿足f(ak+1)的最小值的
即可。

      因為一般情況下,梯度向量為0的話說明是到了一個極值點,此時梯度的幅值也為0.而采用梯度下降算法進行最優(yōu)化求解時,算法迭代的終止條件是梯度向量的幅值接近0即可,可以設置個非常小的常數(shù)閾值。

      下面是網上下的一個求2元函數(shù)最小值的matlab函數(shù)實現(xiàn)代碼,在上面添加了少許注釋。代碼中關于步長的計算公式還是沒有弄很清楚,用到了hessian矩陣,有點像牛頓法,先不管了,以后有時候慢慢研究。

 1 function y=fs2steep(f,e,a,b) %返回的是點坐標的2個分量 2 % fs2steep函數(shù) 最速下降法 3 % x=fs2steep(f,e,a,b)為輸入函數(shù) f為函數(shù) e為允許誤差 (a,b)為初始點; 4 % fsx TJPU 2008.6.15 5 x1=a;x2=b; 6 Q=fs2hesse(f,x1,x2); 7 x0=[x1 x2]'; 8 fx1=diff(f,'x1'); %對x1求偏導數(shù) 9 fx2=diff(f,'x2'); %對x2求偏導數(shù)10 g=[fx1 fx2]'; %梯度11 g1=subs(g); %把符號變量轉為數(shù)值12 d=-g1;%d為搜索方向13 while (abs(norm(g1))>=e)  %norm(g1)為g1的2范數(shù),即sqrt(x1^2+x2^2),因為梯度其各分量=0,所以其梯度幅值=014     t=(-d)'*d/((-d)'*Q*d);%求搜索步長,方法是?15     x0=x0-t*g1; %搜索到的點16     v=x0;17     a=[1 0]*x0;18     b=[0 1]*x0;19     x1=a;20     x2=b;  21     Q=fs2hesse(f,x1,x2);22     x0=[x1 x2]';23     fx1=diff(f,'x1'); %對x1求偏導數(shù)24     fx2=diff(f,'x2'); %對x2求偏導數(shù)25     g=[fx1 fx2]'; %梯度    26     g1=subs(g);27     d=-g1;28 end;29 y=v;30 31 function x=fs2hesse(f,a,b)32 % fs2hesse函數(shù) 求函數(shù)的hesse矩陣;33 % 本程序僅是簡單的求二次函數(shù)的hesse矩陣??;34 % x=fs2hesse(f)為輸入函數(shù) f為二次函數(shù) x1,x2為自變量;35 % fsx TJPU 2008.6.1536 x1=a;x2=b;37 fx=diff(f,'x1');     %求f對x1偏導數(shù)38 fy=diff(f,'x2');     %求f對x2偏導數(shù)39 fxx=diff(fx,'x1');   %求二階偏導數(shù) 對x1再對x140 fxy=diff(fx,'x2');   %求二階偏導數(shù) 對x1再對x241 fyx=diff(fy,'x1');   %求二階偏導數(shù) 對x2再對x142 fyy=diff(fy,'x2');   %求二階偏導數(shù) 對x2再對x243 fxx=subs(fxx);       %將符號變量轉化為數(shù)值44 fxy=subs(fxy);45 fyx=subs(fyx);46 fyy=subs(fyy);47 x=[fxx,fxy;fyx,fyy]; %求hesse矩陣

      在matlab命令行窗口驗證函數(shù),結果如下:

     

      最優(yōu)化應用很廣,有很多東西要學,且自己對matlab編程還不熟悉,以后慢慢積累吧!

 

 

作者:tornadomeet 出處:http://www.cnblogs.com/tornadomeet 歡迎轉載或分享,但請務必聲明文章出處。
本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
機器學習萌新必備的三種優(yōu)化算法 | 選型指南
大規(guī)模優(yōu)化算法
用Maple求顯函數(shù)的導數(shù)
函數(shù)(21)—高端視野:羅爾定理解讀2011海淀一模
分享:懲罰函數(shù)法(內點法、外點法)求解約束優(yōu)化問題最優(yōu)值
機器學習中的成本函數(shù),學習率和梯度下降
更多類似文章 >>
生活服務
熱點新聞
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服