求解機器學習演算法的模型引數,常用兩種方法:梯度下降,最小二乘法。此外還有牛頓法和擬牛頓法。
1. 梯度
對多元函式引數求偏導,把求得的偏導寫成向量形式。比如:f(x,y)對x,y求偏導,梯度就是(∂f/∂x, ∂f/∂y)t。
2. 梯度下降法詳解
梯度下降法有代數法和矩陣法兩種表示形式。
2.1 代數法
1. 先決條件:確認模型的假設函式和損失函式
線性回歸假設函式:
線性回歸損失函式:
2. 引數初始化
初始化θ0,θ1...θn,演算法終止距離ε,步長α。一般將所有的θ初始化為0,步長為1。
3. 演算法過程
(1)、求當前位置損失函式的梯度。
(2)、步長乘以梯度,得到當前位置下降距離。
(3)、確定是否所有的θi,梯度下降的距離都小於ε,如果小於ε演算法終止。當前所有θi(i = 1,2...n)為最終結果。否則進入步驟4.
(4)、更新所有的θ,更新完進入步驟1.
線性回歸的例子:
損失函式:
按步驟1對θi求偏導:
由於樣本中沒x0,所以上式令所有
為1。步驟4中θi更新表示式為:
注意:第3節講梯度下降法的變種,主要區別是對樣本選取的方法不同,這裡採用所有樣本。
2.2 矩陣法
1. 先決條件:確認模型的假設函式和損失函式
線性回歸假設函式:
線性回歸損失函式:
2. 引數初始化
初始化θ向量為預設值,演算法終止距離ε,步長α。一般將所有的θ初始化為0,步長為1。
線性回歸的例子:
對θ向量求偏導數:
θ向量的更新表示式為:
2.3 梯度下降法調優
1. 步長選擇。步長太大,迭代會過快,可能錯過最優解;步長太小,迭代過慢。
2. 初始值選擇。初始值不同,最小值可能不同,因為梯度下降法求得的是區域性最小值。
3. 歸一化。不同特徵取值範圍不一樣,減少特徵取值的影響,對資料歸一化。
對每個特徵x,求它的期望
和標準差std(x),然後轉化為:
這樣得到新期望為0,新方差為1。
3. 梯度下降法(bgd,sgd,mbgd)
3.1 批量梯度下降法(batch gradient descent)
更新引數θi用所有樣本進行更新。
3.2 隨機梯度下降法(stochastic gradient descent)
更新引數θi僅用乙個樣本j進行更新。
3.3 小批量梯度下降法(mini-batch gradient descent)
小批量梯度下降法是批量梯度下降法和隨機梯度下降法的折中, 對於m個樣本,用x個樣本來更新。
來自:劉建平hθ
(x0,
x1,.
..xn
)=∑i
=0nθ
ixi'>hθ(x0,x1,...xn)=∑i=0nθixi
梯度下降法原理
該博文為一所寫,非常詳細易懂,故搬運過來以後方便回憶學習 一 為什麼需要梯度下降法 每個演算法模型都有自己的損失函式,而損失函式包含了各個位置上的引數,我們的最終目標都是要找到使模型損失函式盡可能小的引數。在學習簡單線性回歸時,我們使用最小二乘法來求損失函式的最小值,但是這只是乙個特例。在絕大多數的...
梯度下降法和隨機梯度下降法
批量梯度下降法 batch gradient descent 在更新引數時使用所有的樣本來進行更新 隨機梯度下降法 stochastic gradient descent 求梯度時沒有用所有的m個樣本的資料,而是僅僅選取乙個樣本j來求梯度。小批量梯度下降法 mini batch gradient d...
梯度下降法
梯度下降法 是乙個一階 最優化演算法 通常也稱為 最速下降法 我之前也沒有關注過這類演算法。最近,聽史丹福大學的機器學習課程時,碰到了用梯度下降演算法求解線性回歸問題,於是看了看這類演算法的思想。今天只寫了一些入門級的知識。我們知道,函式的曲線如下 程式設計實現 c code cpp view pl...