1. 程式人生 > >【CS229筆記一】監督學習,線性回歸,LMS算法,正態方程,概率解釋和局部加權線性回歸

【CS229筆記一】監督學習,線性回歸,LMS算法,正態方程,概率解釋和局部加權線性回歸

中心 sqrt 情況 pst 預測 更新 然而 回歸 gauss

監督學習

對於一個房價預測系統,給出房間的面積和價格,以面積和價格作坐標軸,繪出各個點。
技術分享圖片

技術分享圖片

定義符號:

\(x_{(i)}\)表示一個輸入特征\(x\)

\(y_{(i)}\)表示一個輸出目標\(y\)

\((x_{(i)},y_{(i)})\)表示一個訓練樣本。

\(\left\{(x_{(i)},y_{(i)});i=1,\dots,m\right\}\)代表m個樣本,也稱為訓練集。

上標\((i)\)代表樣本在訓練集中的索引。

\(\mathcal{X}\)代表輸入值的空間,\(\mathcal{Y}\)代表輸出值的空間。\(\mathcal{X}=\mathcal{Y}=\mathbb{R}\)

監督學習的目標,就是給定一個訓練集,學習一個函數\(h\):\(\mathcal{X} \mapsto \mathcal{Y}\)\(h(x)\)是對於y的對應值的一個“好”的預測。函數\(h\)被稱為hypothesis函數(假設函數)

技術分享圖片

如果我們預測的目標值是連續的,那麽,這種問題被稱為回歸問題,如果\(y\)只是一個離散的小數字,那麽,這種問題叫做分類問題。

線性回歸

假設房價不僅與面積有關,還與臥室數有關,如下:

技術分享圖片

這時候的\(x\)是一個2維向量\(\in \mathbb{R^2}\)。其中\(x_1^{(i)}\)表示第\(i\)個樣本的房子面積,\(x_2^{(i)}\)表示第\(i\)

個樣本的房子臥室數。

現在我們決定將y近似為x的線性函數,公式如下:

\[h_{\theta}(x)=\theta_0+\theta_1x_1+\theta_2x_2\]

\(\theta_i\)是線性函數空間從\(\mathcal{X}\)\(\mathcal{Y}\)映射的參數(權重)。把公式簡化:

\[h(x)=\sum_{i=0}^n \theta_ix_i=\theta^Tx\]

其中\(x_0\)=1,因此\(x_0\theta_0=\theta_0\)是截距。\(\theta\)\(x\)都是向量,\(n\)是輸入值的數量(不包括\(x_0\)

為了學習參數\(\theta\),我們定義損失函數

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

上式產生一個普通最小二乘法回歸模型。

1 LMS(least mean squares)算法

為了選擇一個\(\theta\)來使\(J(\theta)\)最小化,先隨機對\(\theta\)設置隨機值,然後使用一個搜索算法來不斷更新\(\theta\)以使\(\theta\)收斂到希望達到的最小化\(J(\theta)\)的值。這裏用梯度下降算法,首先初始化\(\theta\),然後不斷執行更新:

\[\theta_j:=\theta_j-\alpha\frac{\partial}{\partial \theta_j}J(\theta)\]

\(\alpha\)是學習率(learning rate)。上式同時對所有的\(j = (0,\dots,n)\)值執行。

首先求一個樣本\((x,y)\)的偏導數,後面再求總和:

\[\begin{align} \frac{\partial}{\partial \theta_j}J(\theta)&=\frac{\partial}{\partial \theta_j}\frac{1}{2}(h_{\theta}(x)-y)^2\\&=2*\frac{1}{2}(h_{\theta}(x)-y)*\frac{\partial}{\partial \theta_j}(h_{\theta}(x)-y)\\&=(h_{\theta}(x)-y)*\frac{\partial}{\partial \theta_j}\left(\sum_{i=0}^n \theta_ix_i-y\right)\\&=(h_{\theta}(x)-y)x_j\\\end{align}\]

對於單個樣本,更新規則(LMS更新規則或Widrow-Hoff學習規則):
\[\theta_j:=\theta_j+\alpha\left(y^{(i)}-h_{\theta}(x^{(i)})\right)x_j^{(i)}\]

上式中更新規則與\((y_{(i)}-h_{\theta(x_{(i)})})\)誤差項成正比,如果預測結果與輸出值相差小,則\(\theta\)變化小;反之,則變化大。

批量梯度下降:

對於所有的\(\theta\)值重復計算直至收斂\(\{\)

\[\theta_j:=\theta_j+\alpha \begin{matrix} \sum_{i=1}^m (y_{(i)}-h_{\theta}(x^{(i)}))x_j^{(i)} \end{matrix}\]

\(\}\)

技術分享圖片

梯度下載的過程

計算出\(\theta_1\)\(\theta_2\)後,代入\(h_{\theta}(x)\)中作為\(x\)的函數,繪制的圖如下:

技術分享圖片

房屋面積房價圖

隨機梯度下降(增量梯度下降):

\[\begin{align} Loop \{ \\& for\;i=1\;to\;m \{ \\&& \theta_j:=\theta_j+\alpha(y_{(i)}-h_{\theta}(x^{(i)}))x_j^{(i)}&(for every j) \\&\} \\\} \\\end{align}\]

每次只對一個樣本進行更新。

隨機梯度下降通常比批量梯度下降要好,因為批量梯度下降是每次更新整個訓練集,十分耗時。

2 正態方程

梯度下降是最小化\(J\)的方法之一,除此之外,正態方程也能最小化\(J\)。通過對\(\theta_j\)求導,然後讓它等於0,以使得\(J\)最小化。

2.1矩陣導數

函數\(f\):\(\mathbb{R}^{m\times n} \mapsto \mathbb{R}\)映射,表示從\((m,n)\)矩陣到一個實數的函數。我們定義函數\(f\)\(A\)求導:

\[\nabla_Af(A) = \begin{bmatrix} \frac{\partial f}{\partial A_{11}} & \dots & \frac{\partial f}{\partial A_{1n}} \\vdots & \ddots & \vdots \\frac{\partial f}{\partial A_{m1}} & \dots & \frac{\partial f}{\partial A_{mn}} \\end{bmatrix}\]

\(\nabla_Af(A)\)是一個\((m,n)\)的矩陣,每個元素是\(\frac{\partial f}{\partial A_{ij}}\),比如,如果
\(A=\begin{bmatrix} A_{11}&A_{12}\\ A_{21}&A_{22}\\ \end{bmatrix}\)是一個\(2\times 2\)矩陣。函數$f:\mathbb{R}^{2 \times 2} \mapsto \mathbb{R} $:

\[f(A) = \frac{3}{2}A_{11}+5A_{12}^2+A_{21}A_{22}\]

因此,函數\(f\)\(A\)求導:

\[\nabla_Af(A) = \begin{bmatrix} \frac{3}{2}&10A_{12}\A_{22}&A_{21}\\end{bmatrix}\]

跡運算

對於一個\(n\times n\)的矩陣求跡,公式:

\[trA=\sum_{i=1}^n A_{ii}\]

如果\(a\)是一個實數(例如一個\(1\times 1\)的矩陣),那麽\(tr\,a = a\)

對於兩個矩陣\(A\)\(B\),跡運算有:

\[trAB=trBA\]

多個矩陣:

\[trABC=trCAB=trBCA\]

\[trABCD=trDABC=trCDAB=trBCDA\]

對於兩個相等方陣\(A\)\(B\),還有一個實數\(A\),有公式:

\[trA=trA^T\]

\[tr(A+B)=trA+trB\]

\[traA=atrA\]

矩陣導數公式:

\[\nabla_A trAB = B^T\qquad \qquad \qquad \qquad(1)\]

\[\nabla_{A^T} f(A) = (\nabla_Af(A))^T \qquad \qquad \qquad(2)\]

\[\nabla_A trABA^TC = CAB + C^TAB^T \qquad \qquad \qquad(3)\]

\[\nabla_A |A| = |A|(A^{-1})^T \qquad \qquad \qquad(4)\]

\(A\in \mathbb{R}^{n\times m}\)\(B\in \mathbb{R}^{m\times n}\)求證公式(1)\(\nabla_A trAB = B^T\)

\[A=\begin{bmatrix} A_{11} & \dots & A_{1m}\\vdots & \ddots & \vdots\A_{n1} & \dots & A_{nm} \end{bmatrix}\]

\[B=\begin{bmatrix} B_{11} & \dots & B_{1n}\\vdots & \ddots & \vdots\B_{m1} & \dots & B_{mn} \end{bmatrix}\]

\[\begin{align} \nabla_A trAB&= \nabla_A tr\left(\begin{bmatrix} A_{11} & \dots & A_{1m}\\vdots & \ddots & \vdots\A_{n1} & \dots & A_{nm} \end{bmatrix} \times \begin{bmatrix} B_{11} & \dots & B_{1n}\\vdots & \ddots & \vdots\B_{m1} & \dots & B_{mn} \end{bmatrix}\right)\&=\nabla_A tr\left(\begin{bmatrix} A_{11}B_{11}+A{12}B_{21}+\dots+A_{1m}B_{m1}&\dots&A_{11}B_{1k}+A_{12}B_{2k}+\dots+A_{1m}B_{mk}&\dots&A_{11}B_{1n}+A{12}B_{2n}+\dots+A_{1m}B_{mn}\\vdots&\vdots&\vdots&\vdots&\vdots\A_{k1}B_{11}+A{k2}B_{21}+\dots+A_{km}B_{m1}&\dots&A_{k1}B_{1k}+A_{k2}B_{2k}+\dots+A_{km}B_{mk}&\dots&A_{k1}B_{1n}+A{k2}B_{2n}+\dots+A_{km}B_{mn}\\vdots&\vdots&\vdots&\vdots&\vdots\A_{n1}B_{11}+A{n2}B_{21}+\dots+A_{nm}B_{m1}&\dots&A_{n1}B_{1k}+A_{n2}B_{2k}+\dots+A_{nm}B_{mk}&\dots&A_{n1}B_{1n}+A{n2}B_{2n}+\dots+A_{nm}B_{mn} \end{bmatrix}\right)\&=\nabla_A \left(A_{11}B_{11}+A{12}B_{21}+\dots+A_{1m}B_{m1}+A_{k1}B_{1k}+A_{k2}B_{2k}+\dots+A_{km}B_{mk}+A_{n1}B_{1n}+A{n2}B_{2n}+\dots+A_{nm}B_{mn}\right)\&=\begin{bmatrix} B_{11}&\dots&b_{m1}\\vdots&\ddots&\vdots\B_{1n}&\dots&B_{mn} \end{bmatrix}\&=B^T \\\end{align}\]

方程(4)可以利用矩陣逆的伴隨表示來得到。

2.2 最小二乘回歸

獲取一個訓練集,定義決策矩陣\(X\)\((m\times n)\)(如果包含截距項,則是\((m\times n+1)\)):
\[X=\begin{bmatrix} —(x^{(1)})^T—\—(x^{(2)})^T—\—\vdots—\—(x^{(m)})^T— \end{bmatrix}\]

\(\overrightarrow y\)作為一個m維向量,包含訓練集的所有目標值。

\[\overrightarrow y=\begin{bmatrix} —(y^{(1)})—\—(y^{(2)})—\—\vdots—\—(y^{(m)})— \end{bmatrix}\]

因為\(h_{\theta}(x^{(i)})=(x^{(i)})^T\theta\)\(\theta\)是一個\((n\times 1)\)向量,所以有:

\[\begin{align} X\theta-\overrightarrow y &= \begin{bmatrix} —(x^{(1)})^T\theta—\—(x^{(2)})^T\theta—\—\vdots—\—(x^{(m)})^T\theta— \end{bmatrix} - \begin{bmatrix} —(y^{(1)})—\—(y^{(2)})—\—\vdots—\—(y^{(m)})— \end{bmatrix}\&=\begin{bmatrix} h_{\theta}(x^{(1)})-(y^{(1)})\h_{\theta}(x^{(2)})-(y^{(2)})\\vdots\h_{\theta}(x^{(m)})-y^{(m)}) \end{bmatrix} \\\end{align}\]

對於一個向量\(z\),我們有\(z^Tz=\begin{matrix} \sum_i z_i^2 \end{matrix}\):

\[\begin{align} \frac{1}{2}(X\theta-\overrightarrow y)^T(X\theta-\overrightarrow y)&=\frac{1}{2} \sum_{i=1}^m (h_{\theta}(x^{(i)})-y^{(i)})^2 \\&=J(\theta) \\\end{align}\]

在對\(\theta\)求導前,首先根據方程(2)和方程(3),得:

\[\nabla_{A^T}trABA^TC = B^TA^TC^T + BA^TC\qquad \qquad \qquad \qquad(5)\]

因此:

\[\begin{align} \nabla_{\theta}J(\theta) &=\nabla_{\theta}\frac{1}{2}(X\theta-\overrightarrow y)^T(X\theta-\overrightarrow y)\&=\frac{1}{2}\nabla_{\theta}(\theta^TX^TX\theta-\theta^TX^T\overrightarrow y-\overrightarrow y^TX\theta+\overrightarrow y^T\overrightarrow y)\&=\frac{1}{2}\nabla_{\theta}tr(\theta^TX^TX\theta-\theta^TX^T\overrightarrow y-\overrightarrow y^TX\theta+\overrightarrow y^T\overrightarrow y)\&=\frac{1}{2}\nabla_{\theta}(tr\theta^TX^TX\theta-2tr\overrightarrow y^TX\theta)\&=\frac{1}{2}(X^TX\theta+X^TX\theta-2X^T\overrightarrow y)\&=X^TX\theta-X^T\overrightarrow y \end{align}\]

在第三步,因為\(\theta=(n\times 1),X=(m\times n)\),所以\(\theta^TX^TX\theta-\theta^TX^T\overrightarrow y-\overrightarrow y^TX\theta+\overrightarrow y^T\overrightarrow y\)計算後得出是一個\((1\times 1)\)矩陣,即一個實數,根據\(tr\,a = a\)可推導出第2步和第3步。第5步用方程(5),通過使\(A^T=\theta,B=B^T=X^TX和C=I還有方程(1)\)得出。要使\(J\)最小化,則令\(\nabla_{\theta}J(\theta)\)為0,得出:

\[X^TX\theta=X^T\overrightarrow y\]

所以,要使\(J\)最小化,則需要令:

\[\theta=(X^TX)^{-1}X^T\overrightarrow y\]

3 概率解釋

為什麽在處理一個回歸問題的時候可以用線性回歸,特別是為什麽可以用最小二乘法來計算損失函數\(J\)

現在,讓我們通過下面方程來假設輸出變量和輸入之間的關系:

\[y^{(i)}=\theta^Tx^{(i)}+\epsilon^{(i)}\]

在這裏\(\epsilon^{(i)}\)是誤差項,代表在建模時沒有考慮到的因素,或者是隨機噪聲。根據高斯分布(Gaussian distribution),現在假設\(\epsilon^{(i)}\)是獨立同分布(IID,independently and indentically distributed),其中使高斯分布的均值\(\mu\)為0,方差為\(\sigma^2\),即\(\epsilon^{(i)}\in \mathcal{N}(0,\sigma^2)\),因此,\(\epsilon^{(i)}\)的密度是:

(\(\epsilon^{(i)}\)之所以假設為高斯分布是因為根據中心極限定理,大量相互獨立的變量之和是符合正態分布的。)

\[p(\epsilon^{(i)})=\frac{1}{\sqrt{2\pi}\sigma}exp\left(-\frac{(\epsilon^{(i)})^2}{2\sigma^2}\right)\]

即給定\(x^{(i)}\)和參數\(\theta\)時,函數值應服從高斯分布:

\[p(y^{(i)}|x^{(i)};\theta)=\frac{1}{\sqrt{2\pi}\sigma}exp\left(-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2}\right)\]

\(p(y^{(i)}|x^{(i)};\theta)\)是給定\(\theta\)\(x^{(i)}\)\(y^{(i)}\)的分布,其中\(\theta\)不屬於條件,不是一個隨機變量。
\(y^{(i)}\)的分布表示:\(y^{(i)}|x^{(i)};\theta \sim \mathcal{N}(\theta^Tx^{(i)},\sigma^2)\)

上面是一個樣本的分布方程,現在給寫一個\(X\)\(\theta\),得到預測值\(\overrightarrow y\)的函數,其中\(\theta\)是定值,該方程也稱為似然函數:

\[L(\theta)=L(\theta;X,\overrightarrow y)=p(\overrightarrow y|X;\theta)\]

註意,上式是基於\(\epsilon^{(i)}\)的獨立性假設,方程也可以表示:

\[\begin{align}L(\theta) &=\coprod_{i=1}^m p(y^{(i)}|x^{(i)};\theta)\&=\coprod_{i=1}^m \frac{1}{\sqrt{2\pi}\sigma}exp\big(-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2}\big)\\end{align}\]

現在,為了找出參數\(\theta\)的最優解,通過極大似然來選擇出使\(L(\theta)\)最大化的\(\theta\)值。首先,用對數似然函數代替似然函數

\[\begin{align}\ell(\theta) &=logL(\theta)\&=log\coprod_{i=1}^m \frac{1}{\sqrt{2\pi}\sigma}exp\big(-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2}\big)\&=\sum_{i=1}^m log\frac{1}{\sqrt{2\pi}\sigma}exp\big(-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2}\big)\&=mlog\frac{1}{\sqrt{2\pi}\sigma}-\frac{1}{\sigma^2}*\frac{1}{2}\sum_{i=1}^m (y^{(i)}-\theta^Tx^{(i)})^2 \end{align}\]

要極大化\(\ell(\theta)\),則需要極小化

\[\frac{1}{2}\sum_{i=1}^m (y^{(i)}-\theta^Tx^{(i)})^2\]

這就是最小二乘損失函數\(J(\theta)\)

4 局部加權線性回歸

對於一個從\(x\in \mathbb{R}\)預測\(y\)的問題,下面左圖中,使用了\(y=\theta_0+\theta_1x\)來匹配數據集。然而實際上,圖中的數據並不是一條直線。

現在如果添加多一個特征\(x^2\),即\(y=\theta_0+\theta_1x+\theta_2x^2\),結果能夠更好的匹配數據,然而,如果添加過多的特征,如右圖所示,雖然通過了數據集的每一個點,然而這並不是十分好的結果。

對於左圖所示的情況,函數明顯沒有很好地描述數據,這樣的情況稱為欠擬合;而右圖的情況被稱為過擬合

技術分享圖片

因此,特征的選擇對於確保學習算法的良好性能很有幫助。

局部加權線性回歸(LWR)能夠使特性的選擇對於算法來說不那麽重要。

一般的線性回歸算法,為了獲取預測值,需要:

1,找到使\(\sum_{i=1} (y^{(i)}-\theta^Tx^{(i)})^2\)最小化的\(\theta\)

2, 輸出\(\theta^Tx\)

局部加權線性回歸算法:

1,找到使\(\sum_{i=1} w^{(i)}(y^{(i)}-\theta^Tx^{(i)})^2\)最小化的\(\theta\)

2, 輸出\(\theta^Tx\)

其中\(w^{(i)}\)是一個非負的權重值。

\[w^{(i)}=exp\big(-\frac{(x^{(i)}-x)^2}{2\tau^2}\big)\]

\(\tau\)參數控制了權值變化的速率,

\(|x^{(i)}-x|\)很小時,\(w^{(i)}\)接近1,如果\(|x^{(i)}-x|\)很大,\(w^{(i)}\)接近0。其中\(x\)是我們需要評估的點。因此,選擇\(\theta\)時對於離\(x\)近的訓練樣本有高的權重,而對於與訓練樣本距離大的有小的權重。這樣就達到了局部加權的目的。

局部加權線性回歸屬於非參數學習算法,而之前的線性回歸算法屬於參數學習算法。

線性回歸算法有固定的參數\(\theta\),一旦確定了\(\theta\)值後,我們不再需要保留訓練數據,以對新的特征值進行預測。

而局部加權線性回歸算法需要保留整個訓練集以便計算\(w^{(i)}\)

【CS229筆記一】監督學習,線性回歸,LMS算法,正態方程,概率解釋和局部加權線性回歸