Machine Learning - Andrew Ng 筆記

機器學習的類型

1.監(jiān)督學習
你需要給機器一個有明確答案的訓練樣本,讓機器根據(jù)已經(jīng)有的經(jīng)驗去對未知的情況進行預測,比如給定的訓練樣本是房間面積-房價的關系,對每一個訓練樣本中的面積,機器明確知道對應的房價.
2.無監(jiān)督學習
對輸出結果沒有明確的界定,比如對基因分類,在結果出來之前誰也不知道會分為幾類,類比監(jiān)督學習的例子(面積-售價,明確知道輸出是金額;判斷腫瘤良性還是惡性,也是明確知道結果會被分成兩類)
其中一種被稱為聚類算法,比如將新聞分類(被分類在一塊的新聞都描述同一件事),又或者在一段音頻中把不同音源的聲音區(qū)分開來.
3.Others:Reinforcement learning......

監(jiān)督學習

1.解決連續(xù)值問題(回歸問題)
預測連續(xù)值輸出, 比如房子面積-房價關系走勢

2.離散值問題(分類問題)
預測離散值輸出,比如判斷腫瘤是良性還是惡性

離散值和連續(xù)值的區(qū)別在于連續(xù)值屬于區(qū)間,比如數(shù)字區(qū)間[20,30]不可窮舉,離散值則可以窮舉,比如硬幣正反面.其實這么說也有點微妙,比如在房間面積-房價這個例子中,房價是錢,一般精確到分,理論上房價也是可以窮舉的,但是還是考慮成連續(xù)值而非離散值.

第一個監(jiān)督學習算法 -- 線性回歸

房屋面積-房價.png

上圖中x軸是房屋面積,y軸是房價,圖中的點就是訓練樣本,我們的目的是預測房間面積對應的房價.
對于線性回歸算法來說,就是要找一個線性方程,通過該方程和輸入可以求出目標值,對于上圖線性方程將會是:

h(x) = θ0 + θ1 * x
其中h表示hypothesis,h(x)是房價,x是房屋面積.

我們不希望h(x)看起來太過夸張,換而言之就是線性方程和訓練樣本擬合度越高越好,直覺上來說就是線性方程需要"均勻的穿過訓練樣本".但是靠直覺選取線性方程肯定不行,我們需要找到一個可量化的值來表示線性方程的擬合程度,這里引出一個新的概念--代價函數(shù)(Cost Function).

Cost Function

我們的目標是選取合適的θ0,θ1使得代價函數(shù)最小,這樣h(x)和數(shù)據(jù)集的擬合度就最高.
Cost Function有很多種,在這里我們從平方差的角度來量化.上圖中m表示訓練數(shù)據(jù)集規(guī)模.

簡化問題

我們先把問題簡化然后看個實際的例子:

假設θ0 := 0
則h(x) = θ1 * x
則代價函數(shù)可以簡化成J(\theta_1) = \frac{1}{2m}\sum_{i=1}^m(\theta_1x^{(i)} - y^{(i)})^2

假設訓練樣本如下圖,包含(1,1),(2,2),(3,3).此外還包含3個線性方程,按照斜率從大到小分別是
1.h(x) = 2x,即θ1 := 2
2.h(x) = 1
x,即θ1 := 1
3.h(x) = 0.5*x,即θ1 := 0.5

訓練樣本和線性方程

之后求J(2),J(1),J(0.5)的值,得出對應的J(θ1)函數(shù)圖如下:
J(θ1)

從J(θ1)圖可以看到,當θ1取1的時候,代價函數(shù)最小(0,與之對應的就是數(shù)據(jù)集和線性方程中斜率為1的線性方程),所以對于這個特定的訓練樣本,要想擬合度最高,θ1應該取1.

回到最初的問題

通過簡化問題我們已經(jīng)知道對于θ0:=0的情況,J(θ1)類似于一個一元二次函數(shù),如果把θ0也考慮進去的話,圖形將會是這樣,因為對于每一組θ0, θ1都有一個J(θ0, θ1)與之對應.

J(θ0, θ1)

Gradient Descent(梯度下降算法)

為了找到min(J(θ0, θ1)),我們引入Gradient Descent算法,通常該算法適用于已知J(θ0, θ1.....θN-1, θN),要求min(J(θ0, θ1.....θN-1, θN))的情況.
梯度下降算法根據(jù)初始值的不同可能會得到不同的最優(yōu)解(局部最優(yōu)解),但是對于J(θ0, θ1)來說(如上圖)局部最優(yōu)解正是全局最優(yōu)解

Gradient Descent數(shù)學定義

注意更新的方式應該如下
temp0 := θ0 - LearningRate * Derivate
temp1 := θ1 - LearningRate * Derivate
θ0 := temp0
θ1 := temp1
而不是
θ0 := θ0 - LearningRate * Derivate
θ1 := θ1 - LearningRate * Derivate

關于α(學習速率,learning rate),和導數(shù)項的理解,首先先簡化問題,假設θ0:=0

J(θ1)及導數(shù)項

導數(shù)項就是函數(shù)在某一點切線的斜率,當斜率為負數(shù)時,梯度下降算法在不斷遞歸中θ1在不斷增加,從圖上看就是當θ1<0時,θ1增加,直到J(θ1)=0,函數(shù)值收斂了.如果當斜率為正數(shù)時,梯度下降算法在不斷遞歸中θ1在不斷減少,從圖上看就是當θ1>0時,θ1減少,直到J(θ1)=0,函數(shù)值也收斂了,符合直覺.這樣一來學習速率也好理解了,學習速率越大,θ1的變化也就越大,反之亦然.
需要注意的一點是,在梯度下降算法不斷遞歸中,如果學習速率設置的過大可能導致錯過最優(yōu)解(如上圖想象θ1在一次計算中直接從負數(shù)->正數(shù),并且遞歸后所在點的斜率比遞歸前的大),這樣會導致函數(shù)無法收斂,不過如果一切運行正常,越接近最優(yōu)解導數(shù)項越來越小(趨近于0),you won't miss it.
理解了梯度下降算法在J(θ1)上的工作原理之后,至少可以在直覺上理解該算法在J(θ0, θ1)圖形上的工作原理.

多元線性回歸

不同于之前提到的房屋的價格只和面積(x1)有關,實際情況中hθ(x)會更復雜,如下表格所示,房屋的價格可能與很多因素有關

面積 臥室數(shù)量 樓層高度 房屋年齡 價格
100 3 3 20 200w
200 6 3 20 450w
140 3 19 5 360w

上面表格中,面積(x1)/臥室數(shù)量x(2)/樓層高度(x3)/房屋年齡(x4)被稱為特征量.
一般使用n表示特征量的個數(shù),這個例子中n=4
x(i)表示第i個訓練樣本的特征值組,
x^{(1)}=\left[ \begin{matrix} 100 \\ 3 \\ 3 \\ 20 \end{matrix} \right]
xj(i)表示第i個訓練樣本的第j個特征值,x1(1) = 100
對于這種有多個特征值的情況,hθ(x)和單特征值是不一樣的
單元:hθ(x) = θ0 + θ1x1
多元:hθ(x) = θ0 + θ1
x1 + θ2x2 + ... + θnxn

對于多元hθ(x),我們可以用矩陣來簡化表示,在上面的例子中首先稍微修改下方程得到hθ(x)=θ0x0 + θ1x1 + θ2x2 + θ3x3 + θ4*x4,并且令X0=1
那么我們可以得到特征值矩陣
F=\left[ \begin{matrix} x0 \\ x1 \\ x2 \\ x3 \\ x4 \end{matrix} \right]
參數(shù)矩陣
P=\left[ \begin{matrix} theta0 \\ theta1 \\ theta2 \\ theta3 \\ theta4 \end{matrix} \right]
那么hθ(x)=PT * F

多元梯度下降算法

之前介紹的對于代價函數(shù)J(θ0, θ1)的梯度下降算法可以表示為
repeat until convergence{
(for j in 0,1)
\theta_j := \theta_j - \alpha\frac{\partial}{\partial\theta_j}J(\theta_0,\theta1)
}
那么對于多元代價函數(shù)J(θ0, θ1...θn)我們將θ0, θ1...θn看成一個一維向量θ則算法將變成
repeat until convergence{
(for j in 0....n)
\theta_j := \theta_j - \alpha\frac{\partial}{\partial\theta_j}J(\theta)
}
上面公式翻譯過來就是對每一個特征量(j in 0...n)分別求該特征量θj在函數(shù)J(θ)的偏導數(shù)(切線的斜率),并使用該斜率*學習速率作為變化量去更新θj,直到θj收斂.
接下來我們在將這個偏導數(shù)展開,并帶入代價函數(shù)可以得到:
repeat until convergence{
(for j in 0....n)
\theta_j := \theta_j - \alpha\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)}) - y^{(i)})x_j^{(i)}
}

特征縮放

特征縮放可以加速梯度下降函數(shù)的收斂.特征縮放是盡可能的讓所有特征值處在近似的區(qū)間內(nèi),但是又不丟失這些特征量的數(shù)據(jù)特征.常用的特征縮放方法有以下兩種:
1.Rescaling
x_i := \frac{x_i - min(x)}{max(x) - min(x)}
Rescaling可以使特征值落在[0,1],[-1,1]這個區(qū)間內(nèi)
2.Mean Normalization
x_i := \frac{x_i - avg(x)}{max(x) - min(x)}
3.Feature scaling
x_i := \frac{x_i}{max(x)}

根據(jù)Andrew Ng的說法,特征值落在[-1,1]和[-1/3,1/3]之間都ok,超過這個值的話就不太妙了.
特征縮放為什么可以使梯度下降算法收斂的更快

如何判斷梯度下降算法是否正常工作

描繪一個以梯度下降算法迭代執(zhí)行次數(shù)為X軸,代價函數(shù)的值為Y軸的函數(shù)圖,如果隨著迭代執(zhí)行次數(shù)的增加,代價函數(shù)的值在不斷減少,則說明梯度下降算法在正常工作.


正常工作

學習速率設置的過大

學習速率α

1.如果α太小,則梯度下降算法收斂的慢
2.如果α過大則并不會隨著每次迭代代價函數(shù)的值越小,也因此可能導致代價函數(shù)無法收斂(如上圖所示).

創(chuàng)造新的特征值

假設h_\theta(x) = \theta_0 + \theta_1x_1 + \theta_2x_2為計算房屋價格的函數(shù),x1為房屋縱深(depth),x2為房屋寬度(frontage),那么創(chuàng)造一個新的特征值:
area(房屋面積) = depth * frontage,則原函數(shù)可以轉換為:
h_\theta(x) = \theta_0 + \theta_1area
有時候這樣會得到更好的模型.

構造hθ(x)去更好的擬合數(shù)據(jù)(Polynomial Regression)

h_\theta(x)并不一定非要是線性函數(shù),也可以是二次函數(shù),三次函數(shù)或者平方根函數(shù)等等.
要視不同的數(shù)據(jù)樣本選擇不同形式的函數(shù),比如計算房價的例子,就不能夠使用二次函數(shù)去擬合,因為大多數(shù)情況下房價不會像二次函數(shù)一樣有下墜趨勢,此時我們可以選擇使用三次函數(shù)或者平方根函數(shù)的形式去更好的擬合數(shù)據(jù)
原函數(shù):h_\theta(x) = \theta_0 + \theta_1x_1
二次函數(shù):h_\theta(x) = \theta_0 + \theta_1x_1 + \theta_2x_1^2
三次函數(shù):h_\theta(x) = \theta_0 + \theta_1x_1 + \theta_2x_1^2 + \theta_3x_1^3
平方根函數(shù):h_\theta(x) = \theta_0 + \theta_1x_1 + \theta_2\sqrt{x_1}

Normal Equation

之前求J(\theta)最小時對應的\theta值,我們使用的是Gradient Descent算法,Normal Equation則是另一種求\theta值的辦法.公式如下:
\theta := (X^TX)^{-1}X^Ty
其中X被稱為designer matrix, y則是訓練樣本,具體如下:

Normal Equation

上述公式從直覺上來講就是使的偏導數(shù)=0推導出來的.
對比Normal Equation 和 Gradient Descent算法的優(yōu)劣如下
Normal Equation VS Gradient Descent

根據(jù)Andrew Ng的說法,當特征值種類<=10000時,使用Normal Equation是可以接受的,當特征值種類>10000時,最好使用Gradient Descent.

Non-Invertibility

\theta := (X^TX)^{-1}X^Ty
假如X^TX不可逆該怎么辦?事實上這種情況發(fā)生的概率很小, 但并不代表不會發(fā)生.導致這種情況出現(xiàn)的原因有兩個:
1.特征值之間存在依賴關系
比如x_1表示房屋面積(平方米),x_2表示房屋面積(平方英尺),因為1m=3.28feet,所以始終存在x_1 = (3.28)^2x_2,像這種(線性依賴關系)很容易導致X^TX不可逆.這種情況需要將特征值之間的依賴處理掉.
2.特征值太多
比如當m<=n的情況.對于這種情況要么想辦法減少特征值的種類,要么使用regularization.
如果使用octave的話使用pinv(pesudo invert)而不是inv方法來求你矩陣,這樣即使X^TX不可逆,依然可以求出\theta的值.

To Be Continued.. Stay tuned

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容