梯度下降法(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$$