1. 程式人生 > >梯度下降、線性迴歸演算法中的梯度下降、為什麼要用梯度下降演算法。

梯度下降、線性迴歸演算法中的梯度下降、為什麼要用梯度下降演算法。

梯度

梯度是一個向量。
函式上某點的梯度的方向:導數最大的方向。梯度的大小(梯度的模):該點的導數的大小。

梯度下降

對於一般二次函式而言:
由於梯度的方向是導數最大的方向,順著梯度方向走,函式值就變大的最快,順著梯度的反方向,那麼函式值減小最快的方向,導數也慢慢減小。當導數減為0時,該點極為最小值或最大值。

梯度下降演算法可用來求函式的最大值最小值。

梯度下降

為什麼要使用梯度下降演算法

對於一般的線性迴歸方程,用最小二乘法表示其損失函式:
損失函式
損失函式表示我們使用根據訓練資料建立的線性迴歸模型用於測試資料得到的測試值和測試資料的真實值之前的差別。這個差別肯定越小越小。我們通過求損失函式的最小值,來獲取一個能讓差別最小的θ值。

對於像這樣的一般的線性迴歸以最小二乘法表示的損失函式是一個開口向上的一元二次函式,一般我們可以通過直接對損失函式求導,讓導數等於0 求得最小值。
但是對於有些迴歸方程的損失函式,我們無法通過解析的方法求出最小值(例如logistic迴歸的損失函式),所以我們需要使用梯度下降計算函式的最小值。

梯度下降演算法:

在這裡插入圖片描述

其中,這就是損失函式在θ點的梯度。
在這裡插入圖片描述

α為步長用於控制每次移動的距離,也叫做學習率。θ0為初始點。
具體思路為 : 從初始點開始,迭代得往梯度反方向進行靠近。步長用於控制每次移動的大小,太小需要移動的次數過多,太大可能或跳過最小值。我們減去步長乘以梯度,就是依次靠近梯度的反方向。直到θ達到我們滿意的值為止。