1. 程式人生 > >機器學習-學習筆記-梯度下降-SGD/BGD

機器學習-學習筆記-梯度下降-SGD/BGD

根據Andrew Ng的Lecture notes, 我重新整理了梯度下降(including LMS/BGDSGD)的相關知識。

首先,引入一個例子,
假設我們現在有一個數據集,資料集中包含了A城市的47套房屋的資訊,資訊有房屋的居住面積,房間數量和價格,資料集如下圖。我們要做的是,根據房屋的居住面積和房間數量來預測它的價格。
這裡寫圖片描述

簡單的以 x1 表示房屋的居住面積, x2 來表示房屋的房間數量,以 y 來表示房屋的價格。
進一步表示,
xi1 表示資料集中第 i 套房屋的居住面積
xi2 表示資料集中第 i 套房屋的房間數量

假設x1,x2y 是線性關係,現在我們要通過x1

,x2來預測y ,我們用:

hθ(x)=θ0+θ1x1+θ2x2
來表示 x1,x2 的線性函式,其中 θ1,θ2 都是這個函式的引數,稱作權值(weights).
為了求出y的值,首先我們隨機給 θ1,θ2 附值,計算hθ(x),然

好了,現在我們的問題轉化成了怎麼讓 hθ(x) 儘可能的接近y。

首先,我們用一個函式來表示hθ(x)y 的接近程度,J(θ) 表示接近程度

J(θ)=12i=1m(hθ(xi)yi)2
這個公式來源於數學中學習過的最小二乘法OLS(Ordinary least squares)。

J(θ)hθ(x)y 的接近程度,我們想要讓h

θ(x)儘可能的接近y,也就是要找到J(θ)的最小值,LMS演算法就是用來尋找這個最小值的.

LMS演算法

來,先看一幅圖,

這裡寫圖片描述
這是一幅3D圖,水平平面的橫縱軸分別是 θ1,θ2 的值,垂直軸是 J(θ) 的值,我們要找到圖中最小的 J(θ) 對應的θ1,θ2 值。

下面我來介紹一下LMS演算法的概念,我們把這幅圖想象成一座山,我們是站在山上某個位置的人,我們的目的是找到這座山的最低點。
首先我們隨機選取一個起點,如圖的+號位置作為我們現在在山上的位置,然後我們每一次沿著最陡的方向往下走一步,邁的步伐大小設為α,我們不停地朝著最陡的方向下山,直到到達一個區域性最低點(周圍沒有更低的地方),這也就是梯度下降GD(gradient descent)的思想。

下面我們用數學公式來表示LMS演算法,
這裡寫圖片描述

高等數學裡講過,偏導數是函式值變化最快的方向,在我們這個例子裡,也就是我們在山上站立位置周圍下山最陡的方向。
進一步解這個函式,
這裡寫圖片描述

那麼對於資料集中的每一座房屋,

θj:=θj+α(y(i)hθ(x(i)))x(i)j

這就是LMS每一次更新的原則,也稱作Widrow-Hoff學習法則。

只使用單座房屋的j的計算方式並不能求出 J(θ) 的最小值,為了通過全部的房屋資料來調整θj,我們引入了批量梯度下降BGD(batch gradient descent)和隨機梯度下降SGD(stochastic gradient descent)。

批量梯度下降

批量梯度下降中 θj的計算方式為,對於每一個j , 計算下列公式直至收斂,

θj:=θj+αi=1m(y(i)hθ(x(i)))x(i)j
也就是每一次選擇下降方向時,我們要把所有的房屋資料計算一遍。
批量梯度下降可以找到一個全域性最優解,如下圖。但是如果資料集量過大,那麼那麼迭代速度會極其極其慢。
這裡寫圖片描述

隨機梯度下降

隨機梯度下降中 θj 的計算方式為,每一次下降時,只選擇一座房屋資料來計算 θj,公式如下圖:
這裡寫圖片描述
隨機梯度下降不能精確地收斂到全域性最小值,但是在資料量過大的時候,這種方法更快。