有監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)
機(jī)器學(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ù)集,從中找出相似的類簇 ,這個(gè)過程沒有l(wèi)abel。
神經(jīng)網(wǎng)絡(luò),深度學(xué)習(xí),SVM和決策樹,都是有監(jiān)督學(xué)習(xí) 。下面介紹的方法也只適用于有監(jiān)督學(xué)習(xí) 。
模型
機(jī)器學(xué)習(xí)最一般的模型就是下面這個(gè)圖。

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

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

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

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