初識梯度下降法及小試牛刀
隨著深度學習的火熱,梯度下降法也經常被人所提起。做為一種最常見的求解無約束問題最優化方法,它在ML和DL模型求解的過程中扮演著相當重要的角色,在接觸和學習機器學習的過程中,看了很多教程,書籍,都有和梯度下降相關的內容,但看了那麼多,始終不如自己動手試一試來的印象深刻,在此記錄一下。
梯度下降法(gradient descent),是在求解無約束最優化問題過程中的一種最常用的方法。假設 f(x)是Rn上具有一階連續偏導的函式,要求解的無約束最優化問題是:

無約束最優化問題

梯度下降法
梯度下降演算法思想非常簡單,導數的負方向就是函式值下降的方向。對於一個一元二次函式來說,當某一點導數為正數時候,曲線是上升的,其反方向就是函式值下降的方向。當某一點導數為負數時候,曲線是下降的,其正方向就是函式值下降的方向。稍微難以理解的是第三步,第三步中λ就是我們平常說的學習率,既求一個合適的λ使得函式值下降最大。其他的都非常易懂,接下來就用梯度下降法解決一個非常簡單的問題,求解一個一元二次方程的最小值。

求解一元二次函式最小值
程式碼實現
1. 首先匯入庫

2. 生成資料並繪製

生成資料並繪製
3. 定義函式求解f(x)及其導數g(x)

f(x)及g(x)
4. 定義學習率,epsilon,最大迭代次數

學習率,epsilon,最大迭代次數
5. 梯度下降程式碼,初始化一個x0 = 5, 使用列表learn_x 記錄每次學習到的x。

梯度下降
6. 繪製學習過程

學習過程
以上就是關於使用梯度下降法解決一個非常入門非常簡單的例子,對於沒有了解過梯度下降法的朋友,算是能有個大概瞭解,但實際用到的梯度下降法,通常情況梯度是一個向量,而且求偏導的計算遠比求一元二次函式的導數要複雜的多。附上 ipynb連結:連結: https://pan.baidu.com/s/1Kvl0QG6IW8AuxJiTEju4kw 提取碼: dn3k。