有監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)
機器學(xué)習(xí),分為有監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)。
有監(jiān)督學(xué)習(xí),就是有訓(xùn)練集,有label,我們是可以知道模型輸出是什么樣子的。而無監(jiān)督學(xué)習(xí),沒有訓(xùn)練集,沒有label,提前無法知道輸出的樣子。
有監(jiān)督學(xué)習(xí)分為兩種:回歸和分類。模型輸出若為連續(xù)變量,就是回歸;模型輸出為離散值,就是分類。
無監(jiān)督學(xué)習(xí)常見的是聚類。給定一堆數(shù)據(jù)集,從中找出相似的類簇,這個過程沒有l(wèi)abel。
神經(jīng)網(wǎng)絡(luò),深度學(xué)習(xí),SVM和決策樹,都是有監(jiān)督學(xué)習(xí)。下面介紹的方法也只適用于有監(jiān)督學(xué)習(xí)。
模型
機器學(xué)習(xí)最一般的模型就是下面這個圖。

給定m個訓(xùn)練集,每個訓(xùn)練集有n個特征。訓(xùn)練集作為X輸入給模型,經(jīng)過訓(xùn)練后模型就是h(x)。
線性模型的求解,就是求解h(x)表達式的過程。
線性模型的表示
線性模型的表達式為
hθ(x)=θ0+θ1x1+θ2x2+...+θnxn [1]
其中
- x1~xn就是n個特征,作為模型的輸入
- θ0~θn,就是線性模型的n+1個參數(shù)
根據(jù)m個訓(xùn)練集,求解θ0~θn的具體數(shù)值的過程,就是所謂的學(xué)習(xí)。求解線性模型,就是求其參數(shù)θ0~θn的解。
線性模型求解思路
我們當(dāng)然是希望求解出來的模型,預(yù)測值盡量逼近真實值。
為了更為直觀的說明線性模型,以最簡單的線性模型hθ(x)=θ0+θ1x為例,用下圖表示,紅色點為訓(xùn)練集。

圖中有4(m)個訓(xùn)練集,h(x)是最終求得的模型。
我們希望模型的預(yù)測值與真實值之間的差別,盡量的小。用歐氏距離來表示:
J=(h(x(1))y(1))2+(h(x(2))y(2))2+(h(x(3))y(3))2+(h(x(4))y(4))2 [2]
其中
- x(1),和y(1)表示第一個訓(xùn)練集的特征,和真實值
J更一般的表達式為
J=∑14(h(x(i))y(i))2=∑14(θ0+θ1x(i)y(i))2 [3]
這里的預(yù)測值與真實值之間的歐氏距離之和J,就是所謂的代價函數(shù)。找到能使代價函數(shù)最小值點的參數(shù)θ,就是線性模型的解。
代價函數(shù)
代價函數(shù)的定義如下
J(θ)=12m∑1m(h(x(i))y(i))2 [4]
它的物理含義就是預(yù)測值與真實值之間的差別。差別越小,就說明我們的模型和真實模型越接近。代價函數(shù)J是其參數(shù)θ的二次函數(shù)。代價函數(shù)的表達式,就是均方差MSE(Mean Square Error)的定義。
這里還是用簡化的線性模型來說明問題,另式[3]中的θ1=0和y(i)=1,可得代價函數(shù)的曲線為

這里把代價函數(shù)看成曲線,是最簡單的情況。代價函數(shù)更多情況下是以多維曲面的形態(tài)出現(xiàn)的(曲面也有最低點)。
梯度下降法
圖3中,代價函數(shù)的最小值是其導(dǎo)數(shù)為零的點。

在圖中任意取一個θ值作為其初始值,然后不斷迭代最終找到代價函數(shù)導(dǎo)數(shù)為0點(最小值)的過程,就是求解代價函數(shù)參數(shù)θ的過程(學(xué)習(xí)),也就是梯度下降法的物理含義。它的思想為,只要順著梯度方向下降迭代,就能找到代價函數(shù)的最小值。
對于代價函數(shù)是多維曲面的情況,可以把曲面類比成山,想象梯度下降法就是從山上往下走,每一步順著梯度方向,最終肯定就能走到山谷最低點。
無論是曲線還是曲面,會不會有多個局部最低點呢?答案是會的,梯度下降法很可能找不到真正的最低點,它可能只能找到局部最低點。
但好消息是,線性模型的代價函數(shù),在數(shù)學(xué)上已經(jīng)被證明為凸函數(shù),即這種函數(shù)的局部最低點就是其最低點。所以我們在線性模型中用梯度下降思路求解最小值是沒有問題的。
最小均方算法
最小均方算法``LMS(Least Mean Square)是梯度下降思想的具體實現(xiàn),它是由Bernard Widrow和Marcian E. Hoff提出的,所以也叫Widrow-Hoff學(xué)習(xí)規(guī)則。
為什么叫最小均方呢,這是因為代價函數(shù)的表達式,就是均方差``MSE(Mean Square Error)的定義。
LMS算法是這樣的
Repeat until convergence (for every j){
θj:=θjαθjJ(θ) [5]
}(update θj simultaneously)
其中
- θj表示線性模型的某一個參數(shù)
:=是賦值符號
- α表示
學(xué)習(xí)速率
convergence是收斂
它說明,為了求得任意一個參數(shù)θj的值,首先我們需要對θj取一個初值,然后順著代價函數(shù)J的梯度方向( θj)不斷迭代,直到θj的值收斂(即本次迭代和上次迭代的值為同一個),就找到了θj的值。
對每一個參數(shù)都一起進行這個迭代過程,就能求得每一個參數(shù)的值。不過這里要注意的是,要結(jié)束一輪迭代后,才對各個參數(shù)的值做更新。
這里要注意的是學(xué)習(xí)速率α,它會把梯度值放大。所以學(xué)習(xí)速率越大,尋找代價函數(shù)最小值過程中迭代的步長也就越大。
學(xué)習(xí)速率太大,有可能導(dǎo)致參數(shù)不收斂,或收斂到最后震蕩較大
學(xué)習(xí)速率太小,則肯定會收斂,但收斂迭代次數(shù)會很大
- 一般情況下,每一次迭代后,梯度都會變小。所以即便
學(xué)習(xí)速率是固定值,學(xué)習(xí)步長也會隨著迭代次數(shù)增加而減小
代價函數(shù)的形狀也與各個特征x的大小相關(guān),為了讓代價函數(shù)形狀均衡,一般要對特征做歸一化(比如-1
最小均方算法的一般化表達推導(dǎo)
將代價函數(shù)的表達式[4]帶入LMS算法式[5]中的αθjJ(θ),用偏微分對表達式化簡,可得
αθjJ(θ)
=αθj(12m∑1m(h(x(i))y(i))2)
=α12m2∑1m(h(x(i))y(i))θj(h(x(i))y(i)) [6]
將線性模型的表達式[1]帶入[6]中的θj(h(x(i))y(i))
θj(h(x(i))y(i))
=θj(θ0+θ1x(i)1+θ2x(i)2+...+θnx(i)ny(i))
=0+0+...+x(i)j+0+...+0 [7]
所以,式[6]可簡化為
αθjJ(θ)
=α1m∑1m(h(x(i))y(i))x(i)j [8]
將式[8]帶入LMS算法表達式[5]中,可得LMS算法的一般化表達式為
Repeat until convergence (for every j){
θj:=θjα1m∑1m(h(x(i))y(i))x(i)j [9]
}(update θj simultaneously)
參考
- Andrew NG. machine learning class at coursera
|