先看下定義比較合適:
在向量微積分中,標量場的梯度是乙個向量場。標量場中某一點上的梯度指向標量場增長最快的方向,梯度的長度是這個最大的變化率。
乙個標量函式的梯度記為:
在三維直角座標系中為:
在單變數的情況下,梯度只是個導數,對於乙個線性函式,梯度就是個斜率。
梯度下降演算法是乙個最優化演算法,通常也稱為最速下降法。顧名思義:沿著梯度下降的方向求解最小值,或者沿著梯度上公升的方向求解最大值。
迭代的公式為:
其中梯度方向可以通過對函式求導得到。
因為一般情況下,梯度向量為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...