圖解梯度降低背後的數學原理

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

目的

梯度降低算法是一個迭代過程,它將得到函數的最小值。下面的公式將整個梯度降低算法彙總在一行中。網絡


可是這個公式是如何得出的呢?實際上很簡單,只須要具有一些高中的數學知識便可理解。本文將嘗試講解這個公式,並以線性迴歸模型爲例,構建此類公式。機器學習

機器學習模型

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

預測函數

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


兩個預測之間的差別即爲錯誤。學習


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

成本函數

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

成本函數基本上能告訴咱們模型在給定m和b的值時,其預測能「有多好」。設計

比方說,數據集中總共有N個點,咱們想要最小化全部N個數據點的偏差。所以,成本函數將是總平方偏差,即3d

爲何採起平方差而不是絕對差?由於平方差使得導出迴歸線更容易。實際上,爲了找到這條直線,咱們須要計算成本函數的一階導數,而計算絕對值的導數比平方值更難。

最小化成本函數

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

這是由於實際值和預測值之間的偏差對應着表示算法在學習方面的性能。因爲但願偏差值最小,所以儘可能使得那些mb值可以產生儘量小的偏差。

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

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


爲了最小化上面的函數,須要找到一個x,函數在該點能產生小值Y,即圖中的紅點。因爲這是一個二維圖像,所以很容易找到其最小值,可是在維度比較大的狀況下,狀況會更加複雜。對於種狀況,須要設計一種算法來定位最小值,該算法稱爲梯度降低算法(Gradient Descent)。
 

梯度降低

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

表示

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


可能採起的行動:

  • 可能向上或向下;
  • 若是決定走哪條路,可能會採起更大的步伐或小的步伐來到達目的地;

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

梯度降低算法經過使用導數幫助咱們有效地作出這些決策。導數是來源於積分,用於計算曲線特定點處的斜率。經過在該點處繪製圖形的切線來描述斜率。所以,若是可以計算出這條切線,可能就可以計算達到最小值的所需方向。

最小值

在下圖中,在綠點處繪製切線,若是向上移動,就將遠離最小值,反之亦然。此外,切線也能讓咱們感受到斜坡的陡峭程度。


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

成本函數的數學解釋

如今將上述內容歸入數學公式中。在等式y=mX+b中,mb是其參數。在訓練過程當中,其值也會發生微小變化,用δ表示這個小的變化。參數值將分別更新爲m = m-δm 和b = b-δb。最終目標是找到mb的值,以使得y=mx+b 的偏差最小,即最小化成本函數。
重寫成本函數:

想法是,經過計算函數的導數/斜率,就能夠找到函數的最小值。

學習率

達到最小值或最低值所採起的步長大小稱爲學習率。學習率能夠設置的比較大,但有可能會錯過最小值。而另外一方面,小的學習率將花費大量時間訓練以達到最低點。
下面的可視化給出了學習率的基本概念。在第三個圖中,以最小步數達到最小點,這代表該學習率是此問題的最佳學習率。

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

11

導數

機器學習在優化問題中使用導數。梯度降低等優化算法使用導數來決定是增長仍是減小權重,進而增長或減小目標函數。
若是可以計算出函數的導數,就能夠知道在哪一個方向上能到達最小化。
主要處理方法源自於微積分中的兩個基本概念:

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

  • 鏈式法則
    鏈式法則用於計算複合函數的導數,若是變量z取決於變量y,且它自己也依賴於變量x,所以y和z是因變量,那麼z對x的導數也與y有,這稱爲鏈式法則,在數學上寫爲:

舉個例子增強理解:


使用指數法則和鏈式發規,計算成本函數相對於m和c的變化方式。這涉及偏導數的概念,即若是存在兩個變量的函數,那麼爲了找到該函數對其中一個變量的偏導數,需將另外一個變量視爲常數。舉個例子增強理解:

計算梯度降低

如今將這些微積分法則的知識應用到原始方程中,並找到成本函數的導數,即mb。修改爲本函數方程:


爲簡單起見,忽略求和符號。求和部分其實很重要,尤爲是隨機梯度降低(SGD)與批量梯度降低的概念。在批量梯度降低期間,咱們一次查看全部訓練樣例的錯誤,而在SGD中一次只查看其中的一個錯誤。這裏爲了簡單起見,假設一次只查看其中的一個錯誤:


如今計算偏差對m和b的梯度:


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


其中這個等式中的係數項2是一個常數,求導時並不重要,這裏將其忽略。所以,最終,整篇文章歸結爲兩個簡單的方程式,它們表明了梯度降低的方程。


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

所以,爲了求解梯度,使用新的mb值迭代數據點並計算偏導數。這個新的梯度會告訴咱們當前位置的成本函數的斜率以及咱們應該更新參數的方向。另外更新參數的步長由學習率控制。

結論

本文的重點是展現梯度降低的基本概念,並以線性迴歸爲例講解梯度降低算法。經過繪製最佳擬合線來衡量學生身高和體重之間的關係。可是,這裏爲了簡單起見,舉的例子是機器學習算法中較簡單的線性迴歸模型,讀者也能夠將其應用到其它機器學習方法中。


原文連接 本文爲雲棲社區原創內容,未經容許不得轉載。

相關文章
相關標籤/搜索