監(jiān)督學(xué)習(xí)與非監(jiān)督學(xué)習(xí)
機(jī)器學(xué)習(xí)是指給定一些訓(xùn)練數(shù)據(jù)绿店,使機(jī)器能夠利用它們分析未知數(shù)據(jù)坞嘀。任何機(jī)器學(xué)習(xí)問題都可以分為兩類:監(jiān)督學(xué)習(xí)(Supervised Learning)和非監(jiān)督學(xué)習(xí)(Unsupervised Learning)电爹。這兩類的區(qū)別在于:監(jiān)督學(xué)習(xí)的訓(xùn)練數(shù)據(jù)有特征有標(biāo)簽睦番,而非監(jiān)督學(xué)習(xí)的訓(xùn)練數(shù)據(jù)沒有喜爷。
監(jiān)督學(xué)習(xí)問題一般是指給定輸入預(yù)測輸出当窗,根據(jù)輸出值的不同可以分為兩類:回歸(regression)和分類(classification)够坐。回歸預(yù)測的是連續(xù)值崖面,分類預(yù)測的是離散值元咙。
舉例來說,給定房子的面積來預(yù)測房價(jià)是一個(gè)回歸問題巫员,因?yàn)榉績r(jià)是個(gè)連續(xù)值庶香。如果把它改成預(yù)測房價(jià)是否超過某個(gè)閾值,那么這是一個(gè)離散問題疏遏,因?yàn)檩敵鍪莻€(gè)“是”或“否”的離散值脉课。同理,給定一個(gè)人的圖片預(yù)測TA的年齡是個(gè)回歸問題财异,預(yù)測TA的性別是個(gè)分類問題倘零。
而非監(jiān)督學(xué)習(xí)問題在給定輸入時(shí),不知道預(yù)測的結(jié)果長什么樣子戳寸,我們是從一堆數(shù)據(jù)里推導(dǎo)出其中的結(jié)構(gòu)呈驶。
非監(jiān)督學(xué)習(xí)最常見的應(yīng)用是聚類(clustering)。舉例來說疫鹊,給定《美國經(jīng)濟(jì)》的1000篇文章袖瞻,按照不同主題進(jìn)行自動(dòng)分類。另一個(gè)非聚類的典型例子是雞尾酒會(huì)效應(yīng)拆吆,指的是在一個(gè)嘈雜的雞尾酒會(huì)環(huán)境中談話中聋迎,盡管周圍噪音很多,你仍能分辨出朋友對你說話的聲音枣耀。
線性回歸
讓我們先從監(jiān)督學(xué)習(xí)中最簡單的一個(gè)問題開始霉晕,假設(shè)我們有一個(gè)數(shù)據(jù)集如下,我們假設(shè)房價(jià)受住房面積的影響。
住房面積(英尺2) | 房價(jià)(1000$) |
---|---|
2104 | 400 |
1600 | 330 |
2400 | 369 |
1416 | 232 |
3000 | 540 |
... | ... |
我們的目標(biāo)是對給定數(shù)據(jù)集學(xué)習(xí)出一個(gè)函數(shù)h: x → y牺堰,使得對每個(gè)輸入x拄轻,h(x)都能很好的預(yù)測出輸出y。由于歷史原因伟葫,我們把h稱為假設(shè)函數(shù)(Hypothesis Function)恨搓。下圖描述了這一過程:
我們需要對假設(shè)函數(shù)進(jìn)行建模凸椿,最簡單的方式是將它視為線性函數(shù)意系,因而可表示成:
其中θi稱之為參數(shù)(parameter)或者權(quán)重(weight)旁壮。為了簡化表述侄榴,我們定義θ0=1羹饰,那么:
其中最右面等式中的θ和x都是向量表示缔杉,n是輸入變量的個(gè)數(shù)(在這個(gè)例子中n=1)忍坷。
那么我們應(yīng)該如何選取θ穆桂,使得h(x)和y的誤差最小掌猛。為此我們定義代價(jià)函數(shù)(cost function)如下:
其中x(i)這種上標(biāo)表示方式是指第i個(gè)訓(xùn)練集的輸入數(shù)據(jù)盏浙,y(i)是第i個(gè)訓(xùn)練集的輸出值,m是訓(xùn)練集的個(gè)數(shù)荔茬。
梯度下降算法
引入了代價(jià)函數(shù)后废膘,我們的目標(biāo)變成了:選擇合適的θ,使得J(θ)最小慕蔚。在這方面我們主要介紹梯度下降算法(Gradient Descent)丐黄。這個(gè)算法的主要思想是先選取一個(gè)初始點(diǎn)θ0,然后不斷改變?chǔ)鹊闹凳沟肑(θ)變小孔飒,直到J(θ)收斂到最小值灌闺。特別的,為了使J(θ)變得最小坏瞄,我們選擇下一個(gè)θ值時(shí)應(yīng)該選擇能使J(θ)下降最快的那個(gè)值桂对,在數(shù)學(xué)上就是對J(θ)求導(dǎo),具體來說下一個(gè)選取的θ值就是:
其中α是學(xué)習(xí)率(learning rate)鸠匀,它會(huì)影響梯度下降的幅度蕉斜。在每次迭代中,可以選取不同的α值缀棍。下圖是梯度下降算法的圖示宅此,在選取初始點(diǎn)后,每次都按下降速率最快的方式尋找下一個(gè)點(diǎn)爬范,直到找到最低點(diǎn)父腕。
我們將J(θ)展開進(jìn)行推導(dǎo),由此得到:
因而迭代規(guī)則更新為:
這個(gè)規(guī)則被稱為最小均方算法(Least Mean Squares青瀑,縮寫為LMS)或者Widrow-Hoff算法璧亮。
這個(gè)算法在每次迭代時(shí)都要計(jì)算一遍訓(xùn)練集的數(shù)據(jù)痢法,因而被稱為批量梯度下降法(Batch Gradient Descent)。當(dāng)訓(xùn)練集數(shù)據(jù)量很大時(shí)杜顺,計(jì)算速度將變得很慢。為了解決這個(gè)問題蘸炸,我們可以在每次迭代時(shí)隨機(jī)選取訓(xùn)練集數(shù)據(jù)的一部分來代替整體躬络,這種方法稱之為隨機(jī)梯度下降法(Stochastic Gradient Descent)。隨機(jī)梯度下降法由于只選取了部分樣本數(shù)據(jù)搭儒,因此迭代過程會(huì)比較不穩(wěn)定穷当,雖然每次迭代不一定按著全體最優(yōu)解靠近,但整體上趨于全體最優(yōu)解淹禾。
正規(guī)方程
梯度下降法求解的缺點(diǎn)是需要很多次迭代馁菜,是否存在更好的方法呢。正規(guī)方程(Normal Equation)就是一個(gè)不需要進(jìn)行迭代就能求解的方法铃岔,其公式如下:
其中X和y定義如下汪疮,XT是矩陣X的轉(zhuǎn)置。
這個(gè)公式證明需要大量線性代數(shù)的知識(shí)毁习,詳細(xì)證明可以查閱參考資料智嚷。下表給出了梯度下降和正規(guī)函數(shù)兩個(gè)算法的對比。
梯度下降 | 正規(guī)函數(shù) |
---|---|
需要選擇學(xué)習(xí)率α | 不需要選擇學(xué)習(xí)率α |
需要很多次迭代 | 不需要迭代 |
O(kn2) | O(n3)纺且,需要計(jì)算XTX的逆矩陣 |
n很大時(shí)也能正常工作 | n很大時(shí)計(jì)算很慢 |
在實(shí)踐中盏道,當(dāng)n>=10000時(shí)不適合用正規(guī)函數(shù),推薦改用梯度下降算法载碌。
另外正規(guī)方程還有一個(gè)問題猜嘱,就是XTX可能是不可逆的。不可逆的可能原因是我們使用了冗余的特征(比如兩個(gè)特征線性相關(guān))或者使用了太多的特征(比如特征數(shù)超過了樣本數(shù))嫁艇。解決方法是刪除一些多余的特征朗伶。
總結(jié)
- 機(jī)器學(xué)習(xí)問題可以分為監(jiān)督學(xué)習(xí)和非監(jiān)督學(xué)習(xí),區(qū)別在于訓(xùn)練數(shù)據(jù)是否有特征
- 監(jiān)督學(xué)習(xí)問題根據(jù)預(yù)測值的不同分為兩類:預(yù)測值是連續(xù)值的叫回歸步咪,預(yù)測值是離散值的叫分類
- 最簡單的回歸模型是線性回歸腕让,求解線性回歸的兩個(gè)方法是:梯度下降和正規(guī)方程
- 當(dāng)訓(xùn)練數(shù)據(jù)量較大時(shí)(n>=10000)時(shí)推薦用梯度下降,數(shù)據(jù)量較小時(shí)用正規(guī)函數(shù)