梯度下降演算法

2021-07-11 06:20:52 字數 1282 閱讀 5960

先看下定義比較合適:

在向量微積分中,標量場的梯度是乙個向量場。標量場中某一點上的梯度指向標量場增長最快的方向梯度的長度是這個最大的變化率。

乙個標量函式的梯度記為:

在三維直角座標系中為:

在單變數的情況下,梯度只是個導數,對於乙個線性函式,梯度就是個斜率。

梯度下降演算法是乙個最優化演算法,通常也稱為最速下降法。顧名思義:沿著梯度下降的方向求解最小值,或者沿著梯度上公升的方向求解最大值。

迭代的公式為:

其中梯度方向可以通過對函式求導得到。

因為一般情況下,梯度向量為0的話說明是到了乙個極值點,此時梯度的幅值也為0,而採用梯度下降演算法進行最優化求解時,演算法迭代的終止條件是梯度向量的幅值接近0即可,可以設定個非常小的常數值。

話說到這裡,一般情況下就該舉個例子了。

———————————下邊是例子————————————————————-

求函式利用梯度下降法解題步驟:

1. 求梯度,

2. 向梯度相反的方向移動

3. 迴圈迭代步驟2,知道

4. 此時,輸出這個

matlab演示**如下:

%%梯度下降法

%設定步長為0.1,f_change為改變前後的y值的變化,僅設定了乙個退出條件。

function tidu=tidu()

syms x;f=x^2;

step=0.1;x=2;k=0;%設定步長,初始值,迭代記錄數

f_change=x^2; %初始化差值

f_current=x^2 ; %計算當前函式值

ezplot(@(x,f)f-x^2);%畫出函式影象

axis([-2,2,0,4]); %固定座標值

hold on

while f_change>0.000000001

x=x-step*2*x;%-2x為梯度反方向,step為步長

f_change=f_current-x^2;%計算兩次函式值之差

f_current=x^2;%重新計算當前的函式值

plot(x,f_current,'ro','markersize',7)%標記當前位置

drawnow;pause(1.0);

k=k+1;

endhold off

fprintf('在迭代%d次後找到函式最小值為%e,對應的x值為%e\n',k,x^2,x);

end

執行效果如下:

梯度下降演算法 梯度下降演算法為何叫梯度下降?

首先,我們知道乙個演算法的名字可以很好地去解釋乙個演算法,那麼梯度下降演算法是什麼呢?很明顯的,就是用梯度這個工具來解決問題的一種演算法。解決什麼問題呢?如何在乙個函式曲面的某一點,找到乙個函式值變化最大的方向。比如 我們站在山上的某一點,我們想要以最快的速度上山,但是我們的步子大小是一定的,那麼最...

梯度下降演算法 梯度下降演算法公式推導

場景假設 梯度下降法的基本思想可以模擬為乙個下山的過程。假設這樣乙個場景 乙個人被困在山上,需要從山上下來 找到山的最低點 但此時山上的濃霧很大,導致可視度很低 因此,下山的路徑就無法確定,必須利用自己周圍的資訊一步一步地找到下山的路。這個時候,便可利用梯度下降演算法來幫助自己下山。怎麼做呢,首先以...

梯度下降演算法

機器學習在這幾年得到快速發展,乙個很重要的原因是 large dataset 大規模資料 這節課就來介紹用機器學習演算法處理大規模資料的問題。關於資料的重要性,有一句話是這麼說的 it s not who has the bestalgorithmthat wins.it s who has the...