【CS229筆記一】監督學習,線性回歸,LMS算法,正態方程,概率解釋和局部加權線性回歸
監督學習
對於一個房價預測系統,給出房間的面積和價格,以面積和價格作坐標軸,繪出各個點。
定義符號:
\(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算法,正態方程,概率解釋和局部加權線性回歸