在寫(xiě)線性回歸的筆記前班眯,我覺(jué)得有必要介紹一下機(jī)器學(xué)習(xí)的概念和現(xiàn)在機(jī)器學(xué)習(xí)的大體的一些架構(gòu)和概念希停。
機(jī)器學(xué)習(xí)的定義
套用coursera上的說(shuō)法烁巫。對(duì)于機(jī)器學(xué)習(xí),并沒(méi)有一個(gè)一致認(rèn)同的定義宠能,一個(gè)比較古老的定義是由Arthur Samuel在1959
年給出的:
“機(jī)器學(xué)習(xí)研究的是如何賦予計(jì)算機(jī)在沒(méi)有被明確編程的情況下仍能夠?qū)W習(xí)的能力亚隙。
(Field of study that fives computers the ability to learn without being explicitly
programmed.)”
Samuel 編寫(xiě)了一個(gè)跳棋游戲的程序,并且讓這個(gè)程序和程序自身玩了幾萬(wàn)局跳棋游戲违崇,并且
記錄下來(lái)棋盤(pán)上的什么位置可能會(huì)導(dǎo)致怎樣的結(jié)果阿弃,隨著時(shí)間的推移,計(jì)算機(jī)學(xué)會(huì)了棋盤(pán)上的
哪些位置可能會(huì)導(dǎo)致勝利羞延,并且最終戰(zhàn)勝了設(shè)計(jì)程序的 Samuel.
另一個(gè)比較現(xiàn)代且形式化的定義是由 Tom Mitchell 在 1998 年給出的:
“對(duì)于某個(gè)任務(wù) T 和表現(xiàn)的衡量 P渣淳,當(dāng)計(jì)算機(jī)程序在該任務(wù) T 的表現(xiàn)上,經(jīng)過(guò) P 的衡量伴箩,
隨著經(jīng)驗(yàn) E 而增長(zhǎng)入愧,我們便稱計(jì)算機(jī)程序能夠通過(guò)經(jīng)驗(yàn) E 來(lái)學(xué)習(xí)該任務(wù)。( computer program
is said to learn from experience E with respect to some task T and some performance
measure P, if its performance on T, as measured by P, improves with experience E.)”
在跳棋游戲的例子中嗤谚,任務(wù) T 是玩跳棋游戲棺蛛,P 是游戲的輸贏,E 則是一局又一局的游戲巩步。
一些機(jī)器學(xué)習(xí)的應(yīng)用舉例:
- 數(shù)據(jù)庫(kù)挖掘
- 一些無(wú)法通過(guò)手動(dòng)編程來(lái)編寫(xiě)的應(yīng)用:如自然語(yǔ)言處理鞠值,計(jì)算機(jī)視覺(jué)
- 一些自助式的程序:如推薦系統(tǒng)
- 理解人類是如何學(xué)習(xí)的
機(jī)器學(xué)習(xí)的架構(gòu)
我覺(jué)得關(guān)于這方面李弘毅教授的機(jī)器學(xué)習(xí)的課中講的非常的好,這是課程的主頁(yè)感興趣的可以去看一下http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML16.html渗钉。我們時(shí)常聽(tīng)到Supervise Learning,Unsupervised Learning.....等等之類的名詞,并且也理解其中的意思钞钙。但是在沒(méi)看到這張圖之前我對(duì)于這些概念其實(shí)還是不是特別的清楚鳄橘。
1. 在這個(gè)圖中藍(lán)色的部分和其中的名詞代表的是我們已知的數(shù)據(jù)。舉個(gè)例子說(shuō)芒炼,Supervised Learning代表我們擁有數(shù)據(jù)以及以及這些數(shù)據(jù)的標(biāo)簽瘫怜,而Reinforcenment Learning是有部分有限的帶有標(biāo)簽的數(shù)據(jù),和一個(gè)判別模型本刽,Reinforcement Learning一個(gè)出門(mén)的例子是alpha Go鲸湃。工程師們先用人類以前下過(guò)的棋譜來(lái)訓(xùn)練它,這個(gè)寫(xiě)棋譜就是帶標(biāo)簽的數(shù)據(jù)子寓,但是棋譜的數(shù)量是有限的所以為了更一步提高暗挑,就讓不同的alpha Go的副本自我博弈,然后根據(jù)勝負(fù)這個(gè)結(jié)果來(lái)判別斜友,讓機(jī)器內(nèi)部自我調(diào)整炸裆。在這里難道工程師不想用Supervised Learning嗎?但是由于棋譜的數(shù)量限制所以根據(jù)實(shí)際的情況選擇了Reinforcement Learning鲜屏。
2. 在這個(gè)圖中紅色的部分代表我們想要得到的輸出烹看,Regression表示我們希望得到是一些數(shù)值国拇,比如說(shuō)是對(duì)于房產(chǎn)價(jià)格的預(yù)測(cè),或者是找出RTT惯殊,初始緩沖峰值速率和初始緩沖時(shí)延之間的關(guān)系.... Classification表示我們想要對(duì)已知的信息進(jìn)行分類酱吝,例如我們想要區(qū)分一個(gè)郵件是不是一個(gè)垃圾郵件,或者是給海量的新聞打上類別的標(biāo)簽土思。而Structured Learning希望得到的則是更加復(fù)雜的輸出务热,比如說(shuō)人臉識(shí)別中人臉的位置,這里希望得到的輸出顯然不是一個(gè)數(shù)字浪漠,也不是一個(gè)離散的類別陕习。(對(duì)于Structured Learning我的理解還不是很清楚,就不多寫(xiě)了址愿。等到學(xué)習(xí)了實(shí)際的例子有了更加深入的了解之后再來(lái)更新)该镣。
3.圖中綠色的部分是我們解決問(wèn)題使用的方法,有線性模型,深度學(xué)習(xí).....之類的方法响谓。我們根據(jù)需要去選擇不同的方法也就是模型來(lái)解決我們的問(wèn)題损合。
特征縮放
在對(duì)較多的參數(shù)進(jìn)行梯度下降求最優(yōu)參數(shù)的時(shí)候,我們一般會(huì)對(duì)數(shù)據(jù)進(jìn)行特征縮放娘纷,將所有數(shù)據(jù)的范圍映射到一個(gè)相同的范圍內(nèi)嫁审。視頻和書(shū)告訴我們這樣做有利與梯度下降時(shí)尋找最有的參數(shù),但是這是為什么呢赖晶?假設(shè)我們現(xiàn)在有兩個(gè)參數(shù)x1,x2律适,他們可能的假設(shè)函數(shù)是這樣的$$y=b+w_1x_1+w_2x_2$$如果$x_1$和$x_2$的大小差距很大,$x_2$的取值遠(yuǎn)大于$x_1$遏插,如圖所示因?yàn)?x_2$的取值特別大所以只需要$w_2$有很小的變化就會(huì)引起$y$有很大的變化捂贿,$w_1$正好相反。同理根據(jù)loss function的公式可以知道$w_2$很小的變化會(huì)引起loss function較大的變化胳嘲。所以畫(huà)出來(lái)$w_1,w_2$和loss function的等高圖就如下圖所示厂僧,$w_2$這條軸上的變化比$w_1$這條軸上的變化劇烈的多,整個(gè)圖形呈現(xiàn)出橢圓形了牛。而經(jīng)過(guò)特征縮放后的等高圖則更像一個(gè)個(gè)同心圓颜屠。那么為什么同心圓比橢圓要好一些呢?其實(shí)從梯度下降的路徑我們就可以看出一些東西鹰祸。上面這個(gè)圖的路徑是彎曲的走向最優(yōu)解甫窟,而下面這個(gè)是直接走向最優(yōu)解。這是因?yàn)樘荻认陆档拿恳徊蕉际窍虍?dāng)前位置下降最快的地方進(jìn)行的蛙婴,也就是沿著等高線的法線方向進(jìn)行蕴坪。
誤差的來(lái)源
在我們進(jìn)行使用模型進(jìn)行預(yù)測(cè)的時(shí)候會(huì)有誤差的存在,那么誤差的來(lái)源是什么呢?誤差主要由兩個(gè)部分組成:bias+variance背传。關(guān)于bais和variance的解釋呆瞻,感覺(jué)知乎上的一位答主寫(xiě)的比較好。大家可以去看一下這里是原文的鏈接:https://www.zhihu.com/question/27068705径玖。下面是原文中的一張圖痴脾,感覺(jué)比較形象的描述了這個(gè)問(wèn)題。
總的來(lái)說(shuō)感覺(jué)是這樣的:
- bias反映的是模型和樣本數(shù)據(jù)的擬合程度梳星。bais越小說(shuō)明模型和樣本數(shù)據(jù)的擬合程度越高赞赖。
- variance反映就是用樣本數(shù)據(jù)訓(xùn)練好的模型在測(cè)試數(shù)據(jù)中的表現(xiàn)。而variance越小說(shuō)明模型的泛化能力越強(qiáng)更具有通用性冤灾,測(cè)試數(shù)據(jù)會(huì)和樣本數(shù)據(jù)得到類似的結(jié)果偏差不會(huì)太大前域。
這個(gè)理解的方式和李宏毅的視頻中的解釋有點(diǎn)點(diǎn)不一樣,在李宏毅的視頻中韵吨。
-
bias指的是訓(xùn)練得到的模型的期望值和理想的模型之間的差距匿垄。也就是圖中藍(lán)色的線條和黑色的線條之間的差距。一般而言復(fù)雜的模型bias易班比較小归粉,如圖5次的黑線明顯和理想的藍(lán)線比較貼近椿疗。
-
variance是模型對(duì)數(shù)據(jù)的敏感程度,variance越低的模型對(duì)模型的敏感程度就越低糠悼。這樣模型的通用性就好一些届榄。一般而言簡(jiǎn)單的模型的variance要小一些,復(fù)雜的要大一些倔喂。如下圖所示5次的模型的variance明顯比1次的要大铝条。
那么為什么復(fù)雜模型的bias要小一些而簡(jiǎn)單模型的要大一些呢?因?yàn)槟P驮綇?fù)雜那么它所能夠表現(xiàn)的形式就越多就可以更貼近那個(gè)理想的模型席噩,顯然5次的多項(xiàng)式是可以表示一條直線的攻晒。
為什么簡(jiǎn)單模型的variance要小一些而復(fù)雜模型的要大一些呢?因?yàn)楹?jiǎn)單模型對(duì)數(shù)據(jù)沒(méi)有復(fù)雜模型那么敏感班挖,可以看到在上圖中的很多次實(shí)驗(yàn)中,1次的直線長(zhǎng)的都差不多都是那個(gè)樣子芯砸,而5次的就各種各樣了萧芙。視頻中舉了一個(gè)極端的例子,就是常函數(shù)假丧,如果是一個(gè)常函數(shù)的話双揪。那么模型就對(duì)數(shù)據(jù)完全不敏感包帚,variance就是0了。
那么如何判斷自己模型出錯(cuò)是受那種誤差的影響呢?其實(shí)這個(gè)應(yīng)該是比較簡(jiǎn)單的疯趟,如果出現(xiàn)了unfitting那么就是bias太大了,也就是模型連訓(xùn)練數(shù)據(jù)都擬合不好信峻。如果出現(xiàn)了overfitting那么就是variance太大了,也就是在訓(xùn)練數(shù)據(jù)中擬合的特別好盹舞,在測(cè)試數(shù)據(jù)中結(jié)果比較差。
那么如何降低bias呢踢步?
- 正如上面提到的可以通過(guò)提高模型的復(fù)雜度可以有效的增加bias。比如在多項(xiàng)式擬合中選用更高的次數(shù)获印。
- 在視頻中還提到一個(gè)方法就是 Add more features as input述雾,增加特征輸入的種類。因?yàn)檫@個(gè)結(jié)果可能不止和你選擇的特征有關(guān)蓬豁,增加輸入的特征的種類當(dāng)然可以減小bias绰咽。
那么如何如何降低variance呢? - 最好的方法應(yīng)該就是增加數(shù)據(jù)的輸入量了(這應(yīng)該也就是大數(shù)據(jù)的魅力所在吧)地粪。通過(guò)增加數(shù)據(jù)量取募,那些大量的正確的數(shù)據(jù)就會(huì)降低錯(cuò)誤的數(shù)據(jù)對(duì)復(fù)雜模型的影響,模型也就越接近理想的模型了蟆技。
- 但是現(xiàn)實(shí)生活中我們往往找不到那么多數(shù)據(jù)玩敏,這個(gè)時(shí)候就需要正則化的幫助了。(這里我理解的還不是很好质礼,以后再來(lái)補(bǔ)充吧)旺聚。