本篇博客內(nèi)容均為個(gè)人理解,如有錯(cuò)誤趣倾,敬請(qǐng)指出末誓。
1.1 Welcome to ML
列舉了一些機(jī)器學(xué)習(xí)常見的應(yīng)用,如:
1.手寫識(shí)別
2.垃圾郵件分類
3.圖像處理
4.搜索引擎
......
據(jù)我看來泣特,模式識(shí)別,統(tǒng)計(jì)學(xué)習(xí)挑随,數(shù)據(jù)挖掘,計(jì)算機(jī)視覺勒叠,語(yǔ)音識(shí)別兜挨,自然語(yǔ)言處理等領(lǐng)域都與機(jī)器學(xué)習(xí)有很深的關(guān)聯(lián)。
1.2機(jī)器學(xué)習(xí)的定義
????據(jù)我到目前個(gè)人的理解來看眯分,機(jī)器學(xué)習(xí)就是依靠目前強(qiáng)大的硬件來利用大量的測(cè)量數(shù)據(jù)或者歷史數(shù)據(jù)訓(xùn)練模型拌汇,使其具有預(yù)測(cè),判斷弊决,識(shí)別的功能噪舀。
? ? 這個(gè)訓(xùn)練模型的過程,即是機(jī)器的學(xué)習(xí)過程飘诗。
? ? 簡(jiǎn)單地拿我以前看見過的一個(gè)例子來說与倡,機(jī)器的學(xué)習(xí)過程中的一種,就是對(duì)各種參數(shù)的調(diào)整昆稿。比如纺座,要求你訓(xùn)練出一個(gè)識(shí)別蘑菇是否有毒的模型。那么溉潭,你需要一定數(shù)量的毒蘑菇和無(wú)毒蘑菇的照片净响。通過設(shè)定幾個(gè)參數(shù),如顏色喳瓣,形狀馋贤,生長(zhǎng)環(huán)境..為x1,x2畏陕,x3...再設(shè)計(jì)一個(gè)方程配乓,y=a1x1+a2x2+a3x3...給a1,a2,a3...賦初值扰付。通過計(jì)算y的值來判斷是否是毒蘑菇堤撵。對(duì)一張照片判斷之后,再與其真實(shí)值對(duì)比羽莺,如果識(shí)別錯(cuò)誤就要調(diào)整參數(shù)实昨。通俗地來說,比如顏色的參數(shù)為0.4盐固,形狀的參數(shù)為0.3荒给,生長(zhǎng)環(huán)境的參數(shù)為0.3,那么就是說刁卜,我判斷這個(gè)蘑菇是否是毒蘑菇的依據(jù)就是百分之四十是看顏色志电,百分之三十是看形狀,百分之三十是看生長(zhǎng)環(huán)境蛔趴。通過每次識(shí)別的正確與否來調(diào)整參數(shù)挑辆,即調(diào)整的是這三種因素所占的比例,亦或者說是重要性孝情。比如顏色的參數(shù)為0.9鱼蝉,形狀為0.05,生長(zhǎng)環(huán)境為0.05箫荡,那么基本上只要看顏色就能有百分之90的把握判斷出是否是毒蘑菇魁亦。
? ? 直接地來說,識(shí)別毒蘑菇的問題羔挡,就是一個(gè)分類問題洁奈。方程y即是決策界限。通過比對(duì)識(shí)別結(jié)果的正確與否來調(diào)整參數(shù)绞灼,這個(gè)學(xué)習(xí)類型即是監(jiān)督學(xué)習(xí)利术。因?yàn)樗玫挠?xùn)練集是提前打好標(biāo)簽(即是否是毒蘑菇)的。
1.3機(jī)器學(xué)習(xí)的分類
????主要有兩種類型:監(jiān)督學(xué)習(xí)低矮,無(wú)監(jiān)督學(xué)習(xí)氯哮。兩者的區(qū)別在于是否需要人工參與數(shù)據(jù)標(biāo)注。即是否需要對(duì)訓(xùn)練集處理商佛,打標(biāo)簽喉钢。
1.3.1 監(jiān)督學(xué)習(xí)(Supervised Learning)
????所謂監(jiān)督學(xué)習(xí),即是預(yù)先對(duì)數(shù)據(jù)集進(jìn)行處理良姆,人工標(biāo)注肠虽,給出其對(duì)應(yīng)的結(jié)果。再用這些處理好的數(shù)據(jù)集訓(xùn)練模型玛追,最后用模型來進(jìn)行預(yù)測(cè)或分類税课。
????監(jiān)督學(xué)習(xí)一般分兩種情況:回歸問題闲延,分類問題。
????回歸問題針對(duì)的是連續(xù)值韩玩,如預(yù)測(cè)股價(jià)變動(dòng)曲線垒玲,房?jī)r(jià)變動(dòng)曲線...
????分類問題針對(duì)的則是離散值,要判斷一個(gè)東西“是” 還是 “不是”找颓,即判斷其對(duì)應(yīng)的值是“1”還是“0”合愈。
1.3.2 無(wú)監(jiān)督學(xué)習(xí)(Unsupervised Learning)
????和監(jiān)督學(xué)習(xí)相比,無(wú)監(jiān)督學(xué)習(xí)不需要人工標(biāo)注數(shù)據(jù)集击狮,不需要給出數(shù)據(jù)對(duì)應(yīng)的結(jié)果佛析。而是由計(jì)算機(jī)通過算法自行分析得出結(jié)果。計(jì)算機(jī)會(huì)將數(shù)據(jù)集歸為幾個(gè)不同的簇彪蓬,即為聚類算法寸莫。
????無(wú)監(jiān)督學(xué)習(xí)可以分為:聚類,非聚類档冬。
? ? 視頻里提到了一個(gè)非聚類問題:雞尾酒問題膘茎。
2.1 單變量線性回歸
? ? 該方程只有一個(gè)自變量x,即單變量線性回歸的模型酷誓。有兩個(gè)參數(shù)分別是theta0和theta1辽狈。
? ? 視頻中舉了預(yù)測(cè)房?jī)r(jià)的例子。其實(shí)就是用我們初中學(xué)的一元一次函數(shù)來擬合數(shù)據(jù)集呛牲,達(dá)到預(yù)測(cè)房?jī)r(jià)的目標(biāo)。
? ? 除了這種直線型的一元一次函數(shù)之外驮配,我們還可以用指數(shù)模型娘扩,對(duì)數(shù)模型等等線性模型,以及非線性模型壮锻,來擬合訓(xùn)練集的數(shù)據(jù)分布琐旁,找到最優(yōu)的擬合效果。
2.2 代價(jià)函數(shù)(Cost Function)
????所謂代價(jià)函數(shù)猜绣,即損失函數(shù)灰殴。它是用來表示訓(xùn)練的模型預(yù)測(cè)出的結(jié)果與真實(shí)值的差距。代價(jià)函數(shù)越小越好掰邢。
? ? 提出代價(jià)函數(shù)牺陶,我覺得目的在于更直觀地表示出預(yù)測(cè)結(jié)果的可靠程度,以及作為使用諸如梯度下降等方法的工具辣之。梯度下降之后有沒有效果掰伸,就可以看代價(jià)函數(shù)有沒有降低。當(dāng)預(yù)測(cè)值與真實(shí)值相等怀估,代價(jià)函數(shù)等于0狮鸭。
下面給出代價(jià)函數(shù)的公式:
? ? 從這個(gè)公式可以看出,代價(jià)函數(shù)是利用我們科學(xué)計(jì)算里學(xué)到的最小二乘法提出的歧蕉。在梯度下降的過程中灾部,我們就是通過一次一次不斷下降找到代價(jià)函數(shù)的最小值或局部最小值。
2.3 梯度下降算法(Gradient Descent)
? ? 如果說代價(jià)函數(shù)是用來表示預(yù)測(cè)值與真實(shí)值的誤差的惯退,那么梯度下降算法就是用來找出代價(jià)函數(shù)的最小值赌髓。而其找代價(jià)函數(shù)的最小值,就是通過梯度下降的方法蒸痹。下面給出公式春弥。
? ? 在公式中,阿爾法表示學(xué)習(xí)率叠荠,j表示第j個(gè)參數(shù)匿沛。這里我們依舊是按照單元線性回歸的模型進(jìn)行梯度下降,因此參數(shù)為單元+1榛鼎,即為2逃呼。
? ? 這個(gè)公式熟悉微積分的話理解起來也就不難。具體解釋視頻里講的很清楚者娱。梯度下降就好像下山抡笼,越下越低最后到一個(gè)最低點(diǎn)。但問題是黄鳍,這個(gè)最低點(diǎn)是局部最小值還是全局最小值推姻,貌似還沒有一個(gè)明確的判斷依據(jù)。
? ? 另外很重要的一個(gè)參數(shù)就是學(xué)習(xí)率框沟。學(xué)習(xí)率就是每一次學(xué)習(xí)之后藏古,或者說每一次訓(xùn)練之后,參數(shù)變化的幅度忍燥。從下山的那個(gè)例子看拧晕,也就相當(dāng)于你每次下山所邁的步子大小。這個(gè)值梅垄,不能太大厂捞,也不易太小。太大容易出現(xiàn)跨過最小值的情況队丝。太小則導(dǎo)致訓(xùn)練次數(shù)太多靡馁。
? ? 視頻中提到了一種可以判斷是否因?yàn)閷W(xué)習(xí)率太大導(dǎo)致跨過最小值的情況,即梯度下降后机久,無(wú)法收斂奈嘿。
? ? 需要注意的是,每次梯度下降時(shí)的方向與大小都是由偏導(dǎo)計(jì)算出來的吞加,而學(xué)習(xí)率的作用就是在偏導(dǎo)值計(jì)算出來之后對(duì)其進(jìn)行控制裙犹。如偏導(dǎo)值計(jì)算為2尽狠,學(xué)習(xí)率為0.05,則下山的步子為0.1叶圃。這是一個(gè)很顯而易見的道理袄膏。
? ? 另外,學(xué)習(xí)率只需選定掺冠,不需要中間調(diào)整沉馆。因?yàn)樵谔荻认陆档倪^程中,斜率也會(huì)變得越來越小德崭,代價(jià)函數(shù)的變化幅度也會(huì)越來越小斥黑,直至收斂。
2.4 線性回歸的梯度下降
????將線性回歸模型的代價(jià)函數(shù)公式代入梯度下降算法中即可眉厨。
? ? 另外锌奴,由于線性回歸函數(shù)呈現(xiàn)碗狀,因此只有一個(gè)全局的最優(yōu)值憾股,所以函數(shù)一定總會(huì)收斂到全局最小值鹿蜀。而函數(shù) J 被稱為凸二次函數(shù),而線性回歸函數(shù)求解最小值問題屬于凸函數(shù)優(yōu)化問題服球。詳情見下圖茴恰。
另外要注意的是,我們這里的梯度下降都是批處理斩熊,即一次處理i=1到i=m的樣本數(shù)據(jù)往枣。
最后注意一個(gè)細(xì)節(jié),就是在每次更新參數(shù)theta0和theta1的時(shí)候粉渠,要注意是同步更新分冈。
即先算出temp0,再算temp1渣叛,然后才能用temp0更新theta0。切記不可算出temp0之后直接更新theta0盯捌,那會(huì)導(dǎo)致計(jì)算temp1時(shí)淳衙,theta0已經(jīng)發(fā)生了變化。
3.線性代數(shù)回顧
線代矩陣的一些基礎(chǔ)知識(shí)饺著,略箫攀。
4.安裝matlab
略
5. 1 多變量線性回歸
多變量線性回歸,顧名思義幼衰,就是變量不再是一個(gè)靴跛,而是多個(gè)。其代價(jià)函數(shù)渡嚣,梯度下降方法其實(shí)變化都不大梢睛。
此時(shí)方程寫為:hθ(x)=θ0+θ1x1+θ2x2+?+θnxn
可以認(rèn)為theta0*x0=theta0肥印,即x0=1;
那么hθ(x)=θ0x0+θ1x1+θ2x2+?+θnxn
可以寫作hθ(x)=θTx绝葡。如此就將函數(shù)向量化了深碱。為什么要向量化呢?因?yàn)楸阌诒磉_(dá)藏畅,也利于并行計(jì)算啊敷硅。
5.2 代價(jià)函數(shù)與多元梯度下降法
代價(jià)函數(shù)和梯度下降其實(shí)都沒有變。代價(jià)函數(shù)公式:
梯度下降公式求偏導(dǎo):
學(xué)習(xí)率的選擇指標(biāo)不變愉阎。
5.3 特征縮放(Feature Scaling)
相比單變量而言绞蹦,多變量線性回歸的梯度下降,有時(shí)就會(huì)遇到一個(gè)問題就是變量之間的差距過大榜旦。這時(shí)就會(huì)出現(xiàn)以下情況:
面對(duì)這樣的代價(jià)函數(shù)幽七,如果進(jìn)行梯度下降,J可能會(huì)向圖中一樣進(jìn)行很多次左右移動(dòng)章办,造成迭代次數(shù)過多锉走,浪費(fèi)時(shí)間資源。因此我們進(jìn)行特征縮放藕届,使各參數(shù)處在相近的數(shù)量級(jí)之后再進(jìn)行梯度下降挪蹭。我們應(yīng)盡量使代價(jià)函數(shù)的圖像如下圖所示:
5.4 均值歸一化
均值歸一化與特征縮放解決的是同一個(gè)問題,即參數(shù)之間數(shù)量級(jí)差距過大休偶。只是方法不同梁厉。
均值歸一化是將各個(gè)參數(shù)標(biāo)準(zhǔn)化,不是對(duì)個(gè)別參數(shù)進(jìn)行處理踏兜。
這類似我們概率論里學(xué)到的標(biāo)準(zhǔn)化词顾。
5.5多項(xiàng)式回歸
有時(shí)候,線性函數(shù)無(wú)法滿足我們擬合數(shù)據(jù)集分布的要求碱妆。這時(shí)我們可以采用多項(xiàng)式的形式肉盹。也就是2次,3次疹尾,多次函數(shù)上忍。
那么,單變量多項(xiàng)式如下:
對(duì)于單變量多項(xiàng)式纳本,我們可以令:x1=x窍蓝,x2=x方,x3=x的三次方繁成。這樣可以將多項(xiàng)式化為多變量線性回歸吓笙。即:
5.6正規(guī)方程
正規(guī)方程給了我們一種找代價(jià)函數(shù)最小值的另一種選擇。他的依據(jù)是對(duì)代價(jià)函數(shù)進(jìn)行求導(dǎo)巾腕,令導(dǎo)數(shù)等于0面睛,這時(shí)的theta就是要找的代價(jià)函數(shù)最小值時(shí)的參數(shù)絮蒿。得出公式:
注意:對(duì)于一個(gè)矩陣來說它的逆不一定存在。那么可能存在XT *X的逆不存在侮穿,但是這種情況是極少的
若(XTX)不可逆歌径,則需要考慮以下兩個(gè)方面:
① 存在多余的特征,即有的特征變量之間是線性相關(guān)的亲茅。
這時(shí)應(yīng)該刪除一些特征變量直至特征變量之間沒有互相線性相關(guān)的特征存在回铛。
② 特征變量太多
這時(shí)也可以刪除一些特征變量,或者采用正則化的方法克锣。
5.7正規(guī)方程與梯度下降的比較
各方優(yōu)劣圖上已經(jīng)很清楚了茵肃。需要注意的是當(dāng)n特別大時(shí)應(yīng)選用梯度下降,當(dāng)n比較小時(shí)袭祟,小于10的四次方的數(shù)量級(jí)時(shí)验残,可以選擇正規(guī)方程求解。
當(dāng)然從我個(gè)人的角度來看我還是喜歡梯度下降巾乳,雖然有時(shí)候比較緩慢您没,但是效果穩(wěn)定可靠,而且不受n的大小影響胆绊。
6.Octave教程
暫略氨鹏。