tft每日頭條

 > 圖文

 > 梯度下降原理動态圖

梯度下降原理動态圖

圖文 更新时间:2024-06-29 10:15:26

敏捷在軟件開發過程中是一個非常著名的術語,它背後的基本思想很簡單:快速構建一些東西,然後得到一些反饋,根據反饋做出改變,重複此過程。目标是讓産品更貼合用,讓用戶做出反饋,以獲得設計開發出的産品與優秀的産品二者之間誤差最小,梯度下降算法背後的原理和這基本一樣。

目的

梯度下降算法是一個疊代過程,它将獲得函數的最小值。下面的公式将整個梯度下降算法彙總在一行中。

梯度下降原理動态圖(圖解梯度下降背後的數學原理)1

但是這個公式是如何得出的呢?實際上很簡單,隻需要具備一些高中的數學知識即可理解。本文将嘗試講解這個公式,并以線性回歸模型為例,構建此類公式。

機器學習模型
  • 考慮二維空間中的一堆數據點。假設數據與一組學生的身高和體重有關。試圖預測這些數量之間的某種關系,以便我們可以預測一些新生的體重。這本質上是一種有監督學習的簡單例子。
  • 現在在空間中繪制一條穿過其中一些數據點的任意直線,該直線方程的形如Y=mX b,其中m是斜率,b是其在Y軸的截距。

梯度下降原理動态圖(圖解梯度下降背後的數學原理)2

預測

給定一組已知的輸入及其相應的輸出,機器學習模型試圖對一組新的輸入做出一些預測。

梯度下降原理動态圖(圖解梯度下降背後的數學原理)3

兩個預測之間的差異即為錯誤。

梯度下降原理動态圖(圖解梯度下降背後的數學原理)4

這涉及成本函數或損失函數的概念(cost function or loss function)。

成本函數

成本函數/損失函數用來評估機器學習算法的性能。二者的區别在于,損失函數計算單個訓練示例的錯誤,而成本函數是整個訓練集上錯誤的平均值。

成本函數基本上能告訴我們模型在給定m和b的值時,其預測能“有多好”。

比方說,數據集中總共有N個點,我們想要最小化所有N個數據點的誤差。因此,成本函數将是總平方誤差,即

梯度下降原理動态圖(圖解梯度下降背後的數學原理)5

為什麼采取平方差而不是絕對差?因為平方差使得導出回歸線更容易。實際上,為了找到這條直線,我們需要計算成本函數的一階導數,而計算絕對值的導數比平方值更難。

最小化成本函數

任何機器學習算法的目标都是最小化成本函數。

這是因為實際值和預測值之間的誤差對應着表示算法在學習方面的性能。由于希望誤差值最小,因此盡量使得那些m和b值能夠産生盡可能小的誤差。

如何最小化一個任意函數?

仔細觀察上述的成本函數,其形式為Y=X²。在笛卡爾坐标系中,這是一個抛物線方程,用圖形表示如下:

梯度下降原理動态圖(圖解梯度下降背後的數學原理)6

為了最小化上面的函數,需要找到一個x,函數在該點能産生小值Y,即圖中的紅點。由于這是一個二維圖像,因此很容易找到其最小值,但是在維度比較大的情況下,情況會更加複雜。對于種情況,需要設計一種算法來定位最小值,該算法稱為梯度下降算法(Gradient Descent)。

梯度下降

梯度下降是優化模型的方法中最流行的算法之一,也是迄今為止優化神經網絡的最常用方法。它本質上是一種疊代優化算法,用于查找函數的最小值。

表示

假設你是沿着下面的圖表走,目前位于曲線'綠'點處,而目标是到達最小值,即紅點位置,但你是無法看到該最低點。

梯度下降原理動态圖(圖解梯度下降背後的數學原理)7

可能采取的行動:

  • 可能向上或向下;
  • 如果決定走哪條路,可能會采取更大的步伐或小的步伐來到達目的地;

從本質上講,你應該知道兩件事來達到最小值,即走哪條和走多遠。

梯度下降算法通過使用導數幫助我們有效地做出這些決策。導數是來源于積分,用于計算曲線特定點處的斜率。通過在該點處繪制圖形的切線來描述斜率。因此,如果能夠計算出這條切線,可能就能夠計算達到最小值的所需方向。

最小值

在下圖中,在綠點處繪制切線,如果向上移動,就将遠離最小值,反之亦然。此外,切線也能讓我們感覺到斜坡的陡峭程度。

梯度下降原理動态圖(圖解梯度下降背後的數學原理)8

藍點處的斜率比綠點處的斜率低,這意味着從藍點到綠點所需的步長要小得多。

成本函數的數學解釋

現在将上述内容納入數學公式中。在等式y=mX b中,m和b是其參數。在訓練過程中,其值也會發生微小變化,用δ表示這個小的變化。參數值将分别更新為m = m-δm 和b = b-δb。最終目标是找到m和b的值,以使得y=mx b 的誤差最小,即最小化成本函數。

重寫成本函數:

梯度下降原理動态圖(圖解梯度下降背後的數學原理)9

想法是,通過計算函數的導數/斜率,就可以找到函數的最小值。

學習率

達到最小值或最低值所采取的步長大小稱為學習率。學習率可以設置的比較大,但有可能會錯過最小值。而另一方面,小的學習率将花費大量時間訓練以達到最低點。

下面的可視化給出了學習率的基本概念。在第三個圖中,以最小步數達到最小點,這表明該學習率是此問題的最佳學習率。

梯度下降原理動态圖(圖解梯度下降背後的數學原理)10

從上圖可以看到,當學習率太低時,需要花費很長訓練時間才能收斂。而另一方面,當學習率太高時,梯度下降未達到最小值,如下面所示:

梯度下降原理動态圖(圖解梯度下降背後的數學原理)11

導數

機器學習在優化問題中使用導數。梯度下降等優化算法使用導數來決定是增加還是減少權重,進而增加或減少目标函數。

如果能夠計算出函數的導數,就可以知道在哪個方向上能到達最小化。

主要處理方法源自于微積分中的兩個基本概念:

  • 指數法則
  • 指數法則求導公式:

梯度下降原理動态圖(圖解梯度下降背後的數學原理)12

  • 鍊式法則
  • 鍊式法則用于計算複合函數的導數,如果變量z取決于變量y,且它本身也依賴于變量x,因此y和z是因變量,那麼z對x的導數也與y有,這稱為鍊式法則,在數學上寫為:

梯度下降原理動态圖(圖解梯度下降背後的數學原理)13

舉個例子加強理解:

梯度下降原理動态圖(圖解梯度下降背後的數學原理)14

使用指數法則和鍊式發規,計算成本函數相對于m和c的變化方式。這涉及偏導數的概念,即如果存在兩個變量的函數,那麼為了找到該函數對其中一個變量的偏導數,需将另一個變量視為常數。舉個例子加強理解:

梯度下降原理動态圖(圖解梯度下降背後的數學原理)15

計算梯度下降

現在将這些微積分法則的知識應用到原始方程中,并找到成本函數的導數,即m和b。修改成本函數方程:

梯度下降原理動态圖(圖解梯度下降背後的數學原理)15

為簡單起見,忽略求和符号。求和部分其實很重要,尤其是随機梯度下降(SGD)與批量梯度下降的概念。在批量梯度下降期間,我們一次查看所有訓練樣例的錯誤,而在SGD中一次隻查看其中的一個錯誤。這裡為了簡單起見,假設一次隻查看其中的一個錯誤:

梯度下降原理動态圖(圖解梯度下降背後的數學原理)17

現在計算誤差對m和b的梯度:

梯度下降原理動态圖(圖解梯度下降背後的數學原理)18

将值對等到成本函數中并将其乘以學習率:

梯度下降原理動态圖(圖解梯度下降背後的數學原理)19

梯度下降原理動态圖(圖解梯度下降背後的數學原理)20

其中這個等式中的系數項2是一個常數,求導時并不重要,這裡将其忽略。因此,最終,整篇文章歸結為兩個簡單的方程式,它們代表了梯度下降的方程。

梯度下降原理動态圖(圖解梯度下降背後的數學原理)21

其中m¹,b¹是下一個位置的參數;m⁰,b⁰是當前位置的參數。

因此,為了求解梯度,使用新的m和b值疊代數據點并計算偏導數。這個新的梯度會告訴我們當前位置的成本函數的斜率以及我們應該更新參數的方向。另外更新參數的步長由學習率控制。

結論

本文的重點是展示梯度下降的基本概念,并以線性回歸為例講解梯度下降算法。通過繪制最佳拟合線來衡量學生身高和體重之間的關系。但是,這裡為了簡單起見,舉的例子是機器學習算法中較簡單的線性回歸模型,讀者也可以将其應用到其它機器學習方法中。

作者:【方向】

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved