深度學習的三個重要部分包括損失函數、優化算法以及激活函數。通常在深度學習的問題中都會針對某一問題定義相應的損失函數,然後使用優化算法找到使損失函數最小的權重,是以越快越準确的找到最優權重值對優化算法來說至關重要。梯度下降算法是一種比較經典的優化算法,也是目前使用較多的優化算法,今天我們來詳細了解一下梯度下降算法的工作原理。注意前方可能有公式出沒!!
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwIjNx8CX39CXy8CXycXZpZVZnFWbp9zZlBnauYzcidTcqJ2awAzLcNzM5kjNwQzLcVmdhNXLwRHdo9CXt92YucWbpRWdvx2Yx5yazF2Lc9CX6MHc0RHaiojIsJye.jpeg)
我們先來看一個簡單的線性回歸例子,假如我們有一組學生體重和身高的資料,現在我們想根據這組資料來分析身高與體重的關系以及根據身高來預測體重。那麼我們可以在空間中将資料以散點圖的方式畫出來,然後繪制一條直線。将直線方程設為Y = mX + b,通過該直線方程對資料進行拟合。
那麼這個直線方程就可以看成一個機器學習模型,通過拟合得到的曲線我們就可以根據輸入來預測相應的輸出。
接下來我們需要來定義一個損失函數評估模型的性能,這裡是個回歸問題,是以我們采用的是均方差函數:
我們定義誤差為
将其代入替換得到
接下來就是梯度下降的過程,為了友善我們将求和部分去掉,隻對其中單個誤差進行分析,對單個誤差求導得到
是以得到誤差對變量m和b的梯度為:
這裡我們要介紹一下梯度下降中的學習率,學習率是在下降過程中每一步的步長大小,通常我們需要調節參數找到一個最佳學習率。下面我們看一下不同學習率的不同結果:
我們看到,當學習率太低時,需要很多步才能收斂。另一方面,當學習率太高時,梯度下降未找到最小值。是以找到一個适當的學習率是很重要的。下面是将學習率加進去之後的結果。
其中m¹,b¹=下一個位置參數; m⁰,b⁰=目前位置參數是以,為了求解梯度,我們使用新的m和b值疊代我們的資料點并計算偏導數。這個新的梯度告訴我們目前位置損失函數的斜率以及我們應該更新參數的方向。我們的更新大小由學習率控制。下面的公式是對整個梯度下降算法的總結: