1. 程式人生 > >梯度下降法(GradientDecsent)

梯度下降法(GradientDecsent)

梯度下降法

 

  • 梯度下降法不是一個機器學習演算法

  • 是一種基於搜尋的最優化方法(優化目標函式)

  • 作用:最小化一個損失函式

  • 梯度上升法:最大化一個效用函式

  • 在求解機器學習演算法的模型引數,即無約束優化問題時, 梯度下降(Gradient Descent)是最常採用的方法之一, 另一種常用的方法是最小二乘法

 

梯度下降法簡介

以下是定義了一個損失函式以後,引數 theta 對應的損失函式 J 的值對應的示例圖, 我們需要找到使得損失函式值 J 取得最小值對應的 theta(這裡是二維平面,也就是說資料集的特徵只有一個), 在直線方程中,導數代表斜率; 在曲線方程中,導數代表切線斜率。這裡導數即為梯度。

​ 稱為學習率,它是梯度下降法的一個超引數,它的取值反映獲得最優解的速度,取值不合適時甚至得不到最優解。

在三維平面,資料集的特徵有兩個的情況:

注意

並不是所有的損失函式用梯度下降法都能夠找到全域性的最優解,有可能是一個區域性最優解。 當然,如果損失函式是凸函式,梯度下降法得到的解就一定是全域性最優解。

解決方案

  • 多次執行,隨機化初始點

  • 梯度下降法的初始點也是一個超引數

  • 設定合適的學習率。一般為0.01

梯度下降法求解(使損失函式儘可能小)

資料集處理

每個樣本增加一個特徵​​ ​$$x_0 =1$$

 

$$ \begin{pmatrix}
 &(x_1^0) &(x_2^0) &\cdots &(x_4^0) &(y^0)\\ 
 &(x_1^1) &(x_2^1) &\cdots &(x_4^1) &(y^1)\\ 
 & \cdots \\ 
 &(x_1^n) &(x_2^n) &\cdots &(x_4^n) &(y^n)
\end{pmatrix} 
\Rightarrow 
 \begin{pmatrix}
&(x_0^0) &(x_1^0) &(x_2^0) &\cdots &(x_4^0) &(y^0)\\ 
&(x_0^1) &(x_1^1) &(x_2^1) &\cdots &(x_4^1) &(y^1)\\ 
 & \cdots \\ 
&(x_0^n) &(x_1^n) &(x_2^n) &\cdots &(x_4^n) &(y^n)
\end{pmatrix}$$

有​$$ \hat y^{(i)} = \theta _0 x_0^{(i)}+ \theta_1 x_1^{(i)}+  \theta_2 x_2^{(i)}+\cdots +  \theta_n x_n^{(i)} $$

求解方法

  • 代數法

  • 矩陣法(向量法)

二者步驟一樣:

1.確定損失函式,求其梯度表示式

損失函式:

$$J(\theta _0,\theta _1,\cdots , \theta _n) = \frac{1}{2m} \sum_{i=1}^{m}(y^{(i)} - \hat y^{(i)})^{2}  = \frac{1}{2m} \sum_{i=1}^{m}(y^{(i)} - (\theta _0 x_0^{(i)}+ \theta_1 x_1^{(i)}+  \theta_2 x_2^{(i)}+\cdots +  \theta_n x_n^{(i)} ))^2$$

係數​$$ \frac{1}{2m} $$是為了方便求偏導

梯度表示式:

$$ \frac{\partial J(\theta _0,\theta _1,\cdots , \theta _n)}{\partial \theta _j} = \frac{1}{m}\sum_{i=1}^{m}(y^{(i)} - \hat y^{(i)})^{2}x_j^i $$

2.學習率乘以損失函式的梯度,得到當前位置下降的距離

$$\eta \frac{\partial J(\theta _0,\theta _1,\cdots , \theta _n)}{\partial \theta_j}$$

3.確定是否對於所有的 ​ 梯度下降的距離都小於 ​ ,如果小於 ​ 則演算法終止,當前所有的 ​ 即為所求。

4.更新 ​ ,其更新表示式如下。更新完畢後繼續轉入步驟 1.

$$\theta _j^i = \theta _j^i - \eta \sum_{i=1}^{m}(y^{(i)} - \hat y^{(i)})^{2}x_j^i$$

 

三種梯度下降法(BGD、SGD、MBGD)

  • 批量梯度下降法(Batch Gradient Descent)

    • 批量梯度下降法,是梯度下降法最常用的形式,具體做法也就是在更新引數時使用所有的樣本來進行更新

    • 更新公式:

      $$\theta _j^i = \theta _j^i - \eta \sum_{i=1}^{m}(y^{(i)} - \hat y^{(i)})^{2}x^i$$

  • 隨機梯度下降法(Stochastic Gradient Descent)

    • 求梯度時沒有用所有的 m 個樣本的資料,而是僅僅選取一個樣本 i 來求梯度

    • 更新公式:

      $$\theta _j^i = \theta _j^i - \eta (y^{(i)} - \hat y^{(i)})^{2}x^i$$

  • 小批量梯度下降法(Mini-batch Gradient Descent)

    • 小批量梯度下降法是批量梯度下降法和隨機梯度下降法的折衷,也就是對於 m 個樣本, 採用 x 個樣本來迭代,1<x<m。一般可以取 x=10

    • 更新公式:​

$$\theta _j^i = \theta _j^i - \eta \sum_{i=1}^{m}(y^{(i)} - \hat y^{(i)})^{2}x^i$$