機器學習01-定義、線性迴歸、梯度下降

目錄

一、定義 What is Machine Learning

二、建模 Model Representation

三、一元線性迴歸 Linear Regression with One Variable

3.1 一元線性歸回的符號約定 Notation

3.2 一元線性迴歸 Linear Regression with One Variable

3.3 代價函數 Cost Function

3.4 梯度下降概述 Gradient Descent Outline

3.5 梯度下降算法 Gradient Descent Alg

3.5.1 同步更新參數 Simultaneously Update 

3.5.2 收斂 Convergence

3.5.3 學習率的取值 evaluate alpha

3.5.4 梯度下降更新參數公式

四、多元線性迴歸 Multiple Features and Gradient Descent

4.1 多元線性歸回的符號約定 Notation

4.2 多元線性迴歸 Linear Regression with Multiple Variables

4.3 估值、代價函數、梯度下降

4.4 多元線性迴歸的矩陣描述

4.5 平均值歸一化 Mean Normalization

4.6 多項式擬合 Polynomial Regression

4.7 過擬合Overfit與欠擬合Underfit

4.8 一般等式、梯度下降和一般等式的比較


複習Andrew Ng的課程Machine Learning,總結線性迴歸、梯度下降筆記一篇,涵蓋課程week1、week2。

一、定義 What is Machine Learning

有兩種業界比較認可的對機器學習的定義。

一種是Aithur Samuel在1959年給出的定義。機器學習:不需要明確編程就能使計算機具有學習能力的研究領域。

另一種是Tom Mitchell在1998年給出的定義。適定學習問題:如果一個計算機程序在任務T上的性能(以P衡量性能)隨着經驗E的提高而提高,那麼它就被稱爲從經驗E對某些任務T和性能度量P的學習。(拉倒吧,還是看英文原文吧!)

Machine Learning Definition
-Aithur Samuel 1959. Machine Learning: Field of study that gives computer the ability to learn without being explicitly programmed.
-Tom Mitchell 1998. Well-posed Learning Problem: A computer program is said to learn from experience E with respect to some task T and performance measure P, if its performance on T, as measured by P, improves with experience E.

二、建模 Model Representation

機器學習分很多種類

  • Supervised Learning 有監督的學習
  • Unsupervised Learning 無監督的學習
  • Reinforcement learning 強化學習
  • Recommender System 推薦系統

但是他們的建模幾乎是一樣的。都是通過在訓練集(Training Set)上運行學習算法(Learning Alg)得到估值函數(hypothesis),這個假設函數可以對輸入的特徵X進行預測(估計 estimated value),輸出y。

三、一元線性迴歸 Linear Regression with One Variable

3.1 一元線性歸回的符號約定 Notation

約定一元線性迴歸問題中的符號定義。

m=Number\ of\ training\ examples 訓練集的大小。

x's=input\ variable/feature 輸入變量,也就是特徵。

y's=output\ variable / target\ variable 輸出變量,也就是估值。

(x,y)=one\ training\ example 一個訓練用例。

(x^{(i)},y^{(i)})= the\ i^{th}\ training\ example 訓練集中的第i個用例。

3.2 一元線性迴歸 Linear Regression with One Variable

一元線性迴歸,Linear Regression with One Variable也叫做Univariate Linear Regression。其輸入特徵是一維的,輸出值也是一維的。估值爲 h_{\theta }(x)=\theta _{0}+\theta _{1}x 。一元線性迴歸的思想是,選擇合適的 \theta _{0} 和 \theta _{1} 使 h_{\theta }(x) 對訓練集 (x,y) 上的 x,\ h_{\theta (x)} 接近 y 。

Idea: Choose \theta _{0}  \theta _{1} so that h_{\theta }(x) is close to y for our training example (x,y).

minimize    \sum_{i=1}^{m} (h_{\theta }(x^{(i)})-y^{(i)})^{2}

3.3 代價函數 Cost Function

Cost Function Definition is square error function. 代價函數是平方誤差函數。這個函數用來衡量估值與真實值之間的偏差。

代價函數是

 J(\theta _{0},\theta _{1})=\frac{1}{2m}\sum_{i=1}^{m}(h_{\theta }(x^{(i)})-y^{(i)})^{2} 

其中 h_{\theta }(x)=\theta _{0}+\theta _{1}x 。使 J(\theta _{0},\theta _{1}) 最小的 \theta _{0} 和 \theta _{1} 值確定 h_{\theta }(x) 。 公式裏面爲了表示“平均”,所以除以m,但爲什麼不簡單的就寫個m而是2m呢?因爲後面求導數的時候,平方的求導會把這個2抵消掉,這樣導數式的樣子就和邏輯迴歸問題的導數式子形式上統一了。

注意:

  • J(\theta _{0},\theta _{1}) 是關於 \theta _{0}  \theta _{1} 的函數, x^{(i)} 和 y^{(i)} 是參數。也就是說求取導數的時候,變量是 \theta _{0}  \theta _{1} 。
  • h_{\theta }(x) 是關於x的函數, \theta _{0}  \theta _{1} 是參數。

3.4 梯度下降概述 Gradient Descent Outline

Have some function J(\theta _{0},\theta _{1}), Want \min_{\theta_{0},\theta _{1}}{J(\theta_{0},\theta _{1})}

Outline:

  • Start with some  \theta _{0}  \theta _{1}
  • Keep changing  \theta _{0}  \theta _{1} to reduce J(\theta _{0},\theta _{1}) until we hopefully end up at a minimum.

梯度下降的思想就是,我們先假定有 \theta _{0}  \theta _{1} 有某個值,通過改變 \theta _{0}  \theta _{1}的值使J(\theta _{0},\theta _{1})減小,直至得到最小值。

3.5 梯度下降算法 Gradient Descent Alg

3.5.1 同步更新參數 Simultaneously Update \theta _{j}

重複進行

\theta _{j}\ $:=$\ \theta _{j}-\alpha \cdot\frac{\partial J(\theta _{0},\theta _{1})}{\partial \theta _{j}} ,

其中\alpha是學習率(learning rate),必大於0。

注意,這種更新是各個維度上的同步更新,也就是說更新過程是這樣的

temp_{0} $:=$\ \theta _{0}-\alpha \cdot\frac{\partial J(\theta _{0},\theta _{1})}{\partial \theta _{0}}

temp_{1} $:=$\ \theta _{1}-\alpha \cdot\frac{\partial J(\theta _{0},\theta _{1})}{\partial \theta _{1}}

\theta _{0} $:=$\ temp_{0}

\theta _{1} $:=$\ temp_{1}

3.5.2 收斂 Convergence

對於一元線性迴歸,代價函數J(\theta _{0},\theta _{1})的幾何形狀是個碗狀曲面,因此代價函數一定收斂。根據上面同步更新的公式,我們分兩種情況討論,示意圖如下。

\frac{\partial J(\theta _{0},\theta _{1})}{\partial \theta _{1}}> 0時,\theta減小,趨向於收斂;

\frac{\partial J(\theta _{0},\theta _{1})}{\partial \theta _{1}}< 0時,\theta增大,也趨向於收斂;

3.5.3 學習率\alpha的取值 evaluate alpha

這個過程要注意學習率\alpha的取值應適中。如果\alpha太小,收斂速率低,學習緩慢。如果\alpha太大,可能跳過minimum不能收斂,甚至發散。示意圖如下。

根據同步更新參數公式,\theta _{j}\ $:=$\ \theta _{j}-\alpha \cdot\frac{\partial J(\theta _{0},\theta _{1})}{\partial \theta _{j}},隨着接近minimum,\frac{\partial J(\theta _{0},\theta _{1})}{\partial \theta _{j}}逐漸減小。在接近minimum時,梯度下降自動減小步長,因此收斂的過程中不需要改變學習率\alpha。示意圖如下。

\theta _{j} at local optima。經過學習獲得的是局部最優解。

3.5.4 梯度下降更新參數公式

J(\theta _{0},\theta _{1})=\frac{1}{2m}\sum_{i=1}^{m}(h_{\theta }(x^{(i)})-y^{(i)})^{2}=\frac{1}{2m}\sum_{i=1}^{m}(\theta _{0}+\theta _{1}x^{(i)}-y^{(i)})^{2}

由代價函數得到兩個參數的偏導數函數。

j=0時,\frac{\partial J(\theta _{0},\theta _{1})}{\partial \theta _{0}}=\frac{1}{m}\sum_{i=1}^{m}(\theta _{0}+\theta _{1}x^{(i)}-y^{(i)})=\frac{1}{m}\sum_{i=1}^{m}(h_{\theta }(x^{(i)})-y^{(i)})

j=1時,\frac{\partial J(\theta _{0},\theta _{1})}{\partial \theta _{1}}=\frac{1}{m}\sum_{i=1}^{m}(\theta _{0}+\theta _{1}x^{(i)}-y^{(i)})x^{(i)}=\frac{1}{m}\sum_{i=1}^{m}(h_{\theta }(x^{(i)})-y^{(i)})x^{(i)}

四、多元線性迴歸 Multiple Features and Gradient Descent

4.1 多元線性歸回的符號約定 Notation

約定多元線性迴歸問題中的符號定義。

m=Number\ of\ training\ examples 訓練集的大小。

n=number\ of\ features 特徵的維度大小。

x^{(i)}=input\ (features)\ of\ i^{th}\ training\ example 第i個訓練用例。

x_{j}^{(i)}=value\ of\ feature\ j\ in\ i^{th}\ training\ example第i個訓練用例的第j維特徵值。

4.2 多元線性迴歸 Linear Regression with Multiple Variables

多元線性迴歸的估值爲h_{\theta }(x)=\theta _{0}+\theta _{1}x_{1}+\theta _{2}x_{2}+\theta _{3}x_{3}+\cdots+\theta _{n}x_{n}

4.3 估值、代價函數、梯度下降

爲了方便起見,我們給特徵值增加一個維度,也就是x_{0}\equiv 1

特徵值和參數都寫作向量的形式:

x=\begin{bmatrix} x_{0} \\ x_{1} \\ x_{2} \\ \vdots \\ x_{n} \end{bmatrix}\in \mathbb{R}^{n+1}     \theta =\begin{bmatrix} \theta_{0} \\ \theta_{1} \\ \theta_{2} \\ \vdots \\ \theta_{n} \end{bmatrix}\in \mathbb{R}^{n+1}

估值寫作矩陣相乘的形式:

h_{\theta}(x)=x^{T}\theta=\theta _{0}x_{0}+\theta _{1}x_{1}+\theta _{2}x_{2}+\theta _{3}x_{3}+\cdots+\theta _{n}x_{n}

代價函數:

J(\theta)=\frac{1}{2m}\sum_{i=1}^{m}(h_{\theta }(x^{(i)})-y^{(i)})^{2}

同步更新參數,以使代價函數最小,對於每一個參數\theta_{j}而言

\theta _{j}$:=$\theta _{j}-\alpha \cdot \frac{\partial J(\theta)}{\partial \theta _{j}}=\theta _{j}-\alpha \cdot \frac{1}{m}\cdot \sum_{i=1}^{m}(h_{\theta }(x^{(i)})-y^{(i)})x_{j}^{(i)}

也就是說

\theta _{0}$:=$\theta _{0}-\alpha \cdot \frac{1}{m}\cdot \sum_{i=1}^{m}(h_{\theta }(x^{(i)})-y^{(i)})x_{0}^{(i)} \qquad ,\qquad x_{0}^{(i)}\equiv 1   

\theta _{1}$:=$\theta _{1}-\alpha \cdot \frac{1}{m}\cdot \sum_{i=1}^{m}(h_{\theta }(x^{(i)})-y^{(i)})x_{1}^{(i)}

\theta _{2}$:=$\theta _{2}-\alpha \cdot \frac{1}{m}\cdot \sum_{i=1}^{m}(h_{\theta }(x^{(i)})-y^{(i)})x_{2}^{(i)}

……………………

\theta _{n}$:=$\theta _{n}-\alpha \cdot \frac{1}{m}\cdot \sum_{i=1}^{m}(h_{\theta }(x^{(i)})-y^{(i)})x_{n}^{(i)}

寫作矩陣式

\begin{bmatrix} \theta _{0}\\ \theta _{1} \\ \theta _{2} \\ \vdots \\ \theta _{n} \end{bmatrix}$:=$\begin{bmatrix} \theta _{0}\\ \theta _{1} \\ \theta _{2} \\ \vdots\\ \theta _{n} \end{bmatrix}-\alpha \cdot \frac{1}{m}\cdot \begin{bmatrix} x_{0}^{(1)} &x_{0}^{(2)} &x_{0}^{(3)} &\cdots &x_{0}^{(m)} \\ x_{1}^{(1)} &x_{1}^{(2)} &x_{1}^{(3)} &\cdots &x_{1}^{(m)} \\ x_{2}^{(1)} &x_{2}^{(2)} &x_{2}^{(3)} &\cdots &x_{2}^{(m)} \\ \vdots &\vdots &\vdots &\ddots &\vdots \\ x_{n}^{(1)}&x_{n}^{(2)} &x_{n}^{(3)} & \cdots & x_{n}^{(m)} \end{bmatrix}\begin{bmatrix} h_{\theta }(x^{(1)})-y^{(1)}\\ h_{\theta }(x^{(2)})-y^{(2)}\\ h_{\theta }(x^{(3)})-y^{(3)}\\ \vdots\\ h_{\theta }(x^{(m)})-y^{(m)} \end{bmatrix}

4.4 多元線性迴歸的矩陣描述

綜合4.3中討論的內容,我們這樣定義,並給出多元線性迴歸的矩陣描述公式

x^{(i)}=\begin{bmatrix} x_{0}^{(i)} \\ x_{1}^{(i)} \\ x_{2}^{(i)} \\\vdots \\ x_{n} ^{(i)}\end{bmatrix}\in \mathbb{R}^{n+1}     \theta =\begin{bmatrix} \theta_{0} \\ \theta_{1} \\ \theta_{2} \\ \vdots \\ \theta_{n} \end{bmatrix}\in \mathbb{R}^{n+1}

X=\begin{bmatrix} x_{0}^{(1)} &x_{1}^{(1)} &x_{2}^{(1)} &\cdots &x_{n}^{(1)} \\ x_{0}^{(2)} &x_{1}^{(2)} &x_{2}^{(2)} &\cdots &x_{n}^{(2)} \\ x_{0}^{(3)} &x_{1}^{(3)} &x_{2}^{(3)} &\cdots &x_{n}^{(3)} \\ \vdots &\vdots &\vdots &\ddots &\vdots \\ x_{0}^{(m)}&x_{1}^{(m)} &x_{2}^{(m)} & \cdots & x_{n}^{(m)} \end{bmatrix}= \begin{bmatrix} -x^{(1)T}-\\ -x^{(2)T}-\\ -x^{(3)T}-\\ \vdots\\ -x^{(m)T}- \end{bmatrix}\in \mathbb{R}^{m\times (n+1)}     y=\begin{bmatrix} y^{(1)}\\ y^{(2)}\\ y^{(3)}\\ \vdots\\ y^{(m)} \end{bmatrix}\in \mathbb{R}^{m}

滿足X\theta=y

那麼梯度下降過程公式爲

\theta $:=$\theta -\alpha \cdot \frac{1}{m}\cdot X^{T}(X\theta -y)

4.5 平均值歸一化 Mean Normalization

Feature Scaling: Get every feature into approximately a range -1\leqslant x_{j}\leqslant 1.

使用梯度下降時,爲了加速收斂,應將特徵值進行縮放(Feature Scaling)。縮放的具體算法就是Mean Normalization平均值歸一化。

Mean Normalization平均值歸一化的具體做法是,取得某一維度上特徵值的平均值u_{j},最大值\max x_{j},最小值\min x_{j}

進行縮放x_{j}=\frac{x_{j}-u_{j}}{\left | \max x_{j}-\min x_{j} \right |},使縮放後該維度上特徵值的平均值接近於0。

注意:

  • 平均值歸一化算法只能對維度j> 0的特徵值進行,決不能對x_{0}進行。因爲x_{0}是人爲添加的,都等於1,歸一化後x_{0}將全部被置爲0。
  • 使用了平均值歸一化,必須要在這個過程中記錄下每個特徵的平均值和標準差。在梯度下降得到模型參數以後,給出新的測試樣本,那麼就要用這個平均值和標準差先對這個測試樣本進行平均值歸一化,再計算估值。否則,估值是錯誤的。

4.6 多項式擬合 Polynomial Regression

迴歸問題也可以採用多項式(開方)來進行擬合。

h_{\theta}(x)=\theta _{0}+\theta _{1}x+\theta _{2}x^{2}+\theta _{3}x^{3}+\cdots+\theta _{n}x^{n}

h_{\theta}(x)=\theta _{0}+\theta _{1}x+\theta _{2}\sqrt x

4.7 過擬合Overfit與欠擬合Underfit

機器學習問題解決的答案並不是唯一的,我們用一元線性迴歸可以得到一種估值,也可以用多項式擬合得到另一種估值,也可以用開方的擬合得到另一種估值。不同的估值並沒有對錯之分,完全取決於我們選擇了什麼樣的模型來解決問題。

對於明顯的採用一元線性迴歸或者開平方擬合就能解決的問題,如果非要使用多項式擬合,在給定的訓練集上可能效果很好。但是,隨着特徵(輸入)範圍的擴大,擬合效果將可能出現較大偏差,這就是過擬合Overfit。同理,如果我們用一元線性迴歸(“直線”)去解決一個明顯是多項式迴歸的問題,或者多項式擬合的階數不夠,就會走向另一個極端欠擬合Underfit。

因此,我們應當對訓練集的數據進行預處理,剔除明顯帶有錯誤或者重大偏差的數據,並小心謹慎的選擇解決問題的模型(恰擬合),避免過擬合或欠擬合。

4.8 一般等式、梯度下降和一般等式的比較

根據X\theta=y,我們得出一個求參數\theta的一般等式。過程並不是嚴格的數學證明,只是一種演示,不嚴謹不要噴我。

X^{T}X\theta=X^{T}y

\theta=(X^{T}X)^{-1}X^{T}y

這樣我們不需要經過梯度下降,根據這個公式進行矩陣運算即可求得參數\theta。如果使用octave或者matlab等軟件,對於求矩陣逆的運算應使用pinv函數,以防止矩陣X^{T}X不可逆。

最後對比一下梯度下降和一般等式的優缺點。

梯度下降、一般等式對比

Gradient Decent

梯度下降

Normal Equation

一般等式

Need to choose \alpha

需要選擇學習率\alpha

No Need to choose \alpha

不需要選擇學習率\alpha

Need many iterations

需要迭代

No need to iterate

不需要迭代

Work well even when n is large

當參數個數n較大時依然性能良好

Need to compute (X^{T}X)^{-1}

slow if n is large

需要求矩陣的逆(X^{T}X)^{-1}

當參數個數n較大時計算緩慢

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章