作者/編輯 | 橘子?配圖:深度學(xué)習(xí)導(dǎo)論課程slides 來(lái)源 | 橘子AI筆記(ID:datawitch)
最近在學(xué)習(xí)Coursera上的高級(jí)機(jī)器學(xué)習(xí)專(zhuān)項(xiàng)課程(Advanced Machine Learning),它的介紹頁(yè)是這樣寫(xiě)的:這門(mén)課程主要講解了深度學(xué)習(xí)、強(qiáng)化學(xué)習(xí)、自然語(yǔ)言理解、計(jì)算機(jī)視覺(jué)和貝葉斯方法。除了理論知識(shí),Kaggle比賽的高分選手和CERN的科學(xué)家也將分享他們解決實(shí)際問(wèn)題的經(jīng)驗(yàn),并幫助您填補(bǔ)理論和實(shí)踐之間的空白。在完成7門(mén)課程后,您將能夠在企業(yè)中應(yīng)用現(xiàn)代機(jī)器學(xué)習(xí)方法,并了解使用數(shù)據(jù)和配置參數(shù)時(shí)的注意事項(xiàng)。
深度學(xué)習(xí)導(dǎo)論(Introduction to Deep Learning)是專(zhuān)項(xiàng)課程系列中的第一部分,這部分包括:
第1周?- 最優(yōu)化理論
第2周?- 神經(jīng)網(wǎng)絡(luò)導(dǎo)論
第3周?- 深度學(xué)習(xí)圖像處理
第4周?- 無(wú)監(jiān)督表征學(xué)習(xí)
第5周?- 深度學(xué)習(xí)文本處理
第6周?- 結(jié)課項(xiàng)目
本文是第1周的第2份課程筆記:線性模型(上)
往期回顧:「Coursera」深度學(xué)習(xí)導(dǎo)論 1-1 課程介紹 | 課程筆記
新手教程:超詳細(xì)!Win10深度學(xué)習(xí)GPU開(kāi)發(fā)環(huán)境搭建步驟 | 教程
這節(jié)課我們將會(huì)學(xué)習(xí)線性模型(linear model)。
首先舉一個(gè)例子:現(xiàn)在要寫(xiě)一個(gè)函數(shù),它的輸入是一張圖片,輸出是圖片中海豹的數(shù)量,這個(gè)函數(shù)應(yīng)該怎么寫(xiě)呢?
有一種思路是嘗試檢測(cè)圖片中出現(xiàn)的物體邊緣,然后進(jìn)行統(tǒng)計(jì),但是這樣的方法不如用機(jī)器學(xué)習(xí)。
用機(jī)器學(xué)習(xí)的方法怎樣來(lái)數(shù)沙灘上的海豹?首先,我們要收集許多標(biāo)注好的數(shù)據(jù),比如幾千張,甚至上百萬(wàn)張海豹圖片。然后人工地去數(shù)清楚這些圖片中都有幾只海豹,再嘗試從這些標(biāo)注好的數(shù)據(jù)集中習(xí)得一個(gè)擬合效果最好的函數(shù)。
首先來(lái)講一些基本概念,在機(jī)器學(xué)習(xí)中,我們要學(xué)習(xí)的圖片、或者其他任何類(lèi)型的數(shù)據(jù),被稱(chēng)為一個(gè)樣本(example)用x表示,每個(gè)樣本都有許多特征(features),比如對(duì)圖片來(lái)說(shuō),特征可以是每個(gè)像素點(diǎn)的數(shù)值。
在有監(jiān)督學(xué)習(xí)中,每個(gè)樣本還對(duì)應(yīng)于一個(gè)目標(biāo)值(target value)用y表示,相當(dāng)于“標(biāo)準(zhǔn)答案”,比如在數(shù)海豹的問(wèn)題中,我們的目標(biāo)值就是每張圖片中海豹的數(shù)量。這樣,每個(gè)x值比如x_i就對(duì)應(yīng)一個(gè)目標(biāo)值y_i。
在訓(xùn)練集中,我們有很多對(duì)這樣的x和y,合起來(lái)用X表示。這個(gè)X就包括了訓(xùn)練集中所有的樣本及其特征,以及對(duì)應(yīng)的目標(biāo)值。我們用a(x)來(lái)表示模型(model)或者假說(shuō)(hypothesis),機(jī)器學(xué)習(xí)的目標(biāo)就是找到最能擬合(fit)訓(xùn)練集的模型。
01.?回歸問(wèn)題與分類(lèi)問(wèn)題
有監(jiān)督學(xué)習(xí)(supervised learning)問(wèn)題主要分為兩類(lèi):回歸(regression)和分類(lèi)(classification)問(wèn)題。
在回歸問(wèn)題中,目標(biāo)值是一個(gè)實(shí)數(shù)。比如在數(shù)海豹的問(wèn)題中,目標(biāo)值是海豹的數(shù)量。又比如,現(xiàn)在給出職位描述,要求預(yù)測(cè)這個(gè)職位的薪水,薪水也是實(shí)數(shù)。再比如,給出影評(píng),要求預(yù)測(cè)寫(xiě)這篇影評(píng)的用戶對(duì)電影的打分(0-5分),這個(gè)打分也是實(shí)數(shù)。
在分類(lèi)問(wèn)題中,目標(biāo)值是離散的,其數(shù)量是有限個(gè)(finite),而不是一個(gè)連續(xù)的區(qū)間。比如物體檢測(cè),我們希望找出一張照片中有沒(méi)有貓啊狗啊或者自行車(chē)啊什么的,可以分為有限個(gè)類(lèi)別,那這個(gè)時(shí)候就是在做分類(lèi)。再比如,給出一篇新文章,希望預(yù)測(cè)出這篇文章屬于什么話題:政治?體育?還是娛樂(lè)新聞什么的。這里類(lèi)別的數(shù)量也是有限的。
02.?回歸問(wèn)題中的線性模型
我們來(lái)看一個(gè)非常簡(jiǎn)單的數(shù)據(jù)集。在這個(gè)數(shù)據(jù)集中,每個(gè)樣本只有一個(gè)特征,對(duì)應(yīng)于一個(gè)目標(biāo)值,而目標(biāo)值是實(shí)數(shù)。
通過(guò)這張圖,我們可以看到它是一個(gè)線性趨勢(shì)(linear trend)的關(guān)系,如果x值增大2倍,那么y值大概對(duì)應(yīng)地減小2倍。所以我們應(yīng)該可以用線性模型來(lái)描述這批數(shù)據(jù),構(gòu)建一個(gè)預(yù)測(cè)模型。
那么這個(gè)公式就描述了我們的線性模型。它非常簡(jiǎn)單,只有兩個(gè)參數(shù),w1和b。如果計(jì)算出w1和b的最佳數(shù)值,就會(huì)得到圖中的這條直線。
雖然它不能完美、精確地根據(jù)每一個(gè)x值計(jì)算出它對(duì)應(yīng)的y值,但已經(jīng)能夠很好地描述x和y之間的關(guān)系,能很好地?cái)M合我們的數(shù)據(jù)集。
當(dāng)然,在大多數(shù)機(jī)器學(xué)習(xí)問(wèn)題中,都有不止一個(gè)特征。下圖中展示的是通用線性模型的公式,對(duì)于每一個(gè)特征x_j,都乘以它對(duì)應(yīng)的權(quán)重(weight)值w_j,我們把所有這些項(xiàng)加起來(lái),再加上一個(gè)偏置(bias)項(xiàng)b,就得到了通用線性模型的表達(dá)式。
用d表示我們數(shù)據(jù)集中的特征數(shù),那么這個(gè)公式有d+1個(gè)參數(shù),也就是d個(gè)權(quán)重值w,加上一個(gè)偏置項(xiàng)b。線性模型是非常簡(jiǎn)單的模型,因?yàn)橥瑯佣嗟奶卣鲾?shù)如果要用神經(jīng)網(wǎng)絡(luò)模型,參數(shù)要多得多。
為了更加簡(jiǎn)化,我們可以假設(shè)在每個(gè)樣本中,都有一個(gè)偽特征值,它的值是常數(shù)1,有這個(gè)特征的系數(shù)就是偏置項(xiàng)。所以,在后面的講解中,我們不會(huì)單獨(dú)把偏置項(xiàng)拿出來(lái),而是歸在權(quán)重值當(dāng)中去考慮。
那么這樣的話,我們就可以很方便地寫(xiě)出線性模型的矩陣(matrix)形式。
根據(jù)線性代數(shù)的知識(shí),我們很容易得知上張幻燈片中講到的形式可以寫(xiě)成這個(gè)點(diǎn)積(dot product)的形式,也就是向量(vector)的相乘、相加。線性模型的輸出是權(quán)重向量和特征向量X的點(diǎn)積。
那么如果我們要將模型運(yùn)用到整個(gè)數(shù)據(jù)集或者新的樣本當(dāng)中,需要怎么做呢?首先用X表示樣本矩陣,它有L行d列,每行表示一個(gè)樣本,每列表示該樣本的所有特征。這時(shí)候X與權(quán)重矩陣w的點(diǎn)積就是我們的預(yù)測(cè),這個(gè)結(jié)果是一個(gè)長(zhǎng)度為L(zhǎng)的向量,它包括了我們的線性模型對(duì)每個(gè)樣本的預(yù)測(cè)值。
計(jì)算題:假設(shè)訓(xùn)練集中有10個(gè)樣本,每個(gè)樣本有5個(gè)特征,那么X矩陣有多少個(gè)元素?(答案見(jiàn)文末)
03.?損失函數(shù)
機(jī)器學(xué)習(xí)的另一個(gè)重要問(wèn)題是計(jì)算損失(loss),也就是我們?nèi)绾魏饬款A(yù)測(cè)值與數(shù)據(jù)集(訓(xùn)練集或者測(cè)試集)之間的差距(error)。
回歸問(wèn)題中最流行的一種損失函數(shù)(loss function)叫均方差損失(Mean Squared Error, MSE)。
它的表達(dá)式是這樣的:比如我們的數(shù)據(jù)集是X_i,線性模型的預(yù)測(cè)結(jié)果是w與X_i的點(diǎn)積,我們用這個(gè)預(yù)測(cè)值減去真實(shí)的目標(biāo)值y_i,來(lái)計(jì)算預(yù)測(cè)值與真實(shí)值之間的偏差(deviation),然后取一個(gè)平方,再對(duì)整個(gè)數(shù)據(jù)集上所有樣本的計(jì)算結(jié)果取平均,就得到了均方差損失值。
它可以衡量我們的模型能在多大程度上去擬合我們的數(shù)據(jù):均方差損失值越小,模型對(duì)數(shù)據(jù)的擬合效果就越好。
當(dāng)然,均方差也可以寫(xiě)成向量形式。w矩陣與X矩陣的點(diǎn)積得到的向量就表示了我們對(duì)數(shù)據(jù)集中所有樣本的預(yù)測(cè)值,然后我們還可以用向量的形式表示出所有樣本對(duì)應(yīng)的真實(shí)目標(biāo)值,預(yù)測(cè)值矩陣與真實(shí)值矩陣相減,再取其歐幾里得范數(shù)(Euclidean norm),表示的也是均方差。
那么現(xiàn)在,我們有了衡量模型擬合好壞程度的損失函數(shù),接下來(lái)要做的就是求損失函數(shù)對(duì)參數(shù)w的最小值。也就是說(shuō),我們希望找到一組參數(shù)w,它能使得損失函數(shù)取到最小值。這就是機(jī)器學(xué)習(xí)的核心思想:我們通過(guò)優(yōu)化損失函數(shù),來(lái)找到針對(duì)某問(wèn)題的最佳模型。
其實(shí)如果你懂微積分,就不難看出,我們可以通過(guò)求導(dǎo)并解出方程的方式得出這些最優(yōu)化問(wèn)題(optimization problem)的解析解(analytical solution)。但是這樣做的話,會(huì)需要求逆矩陣,計(jì)算非常復(fù)雜。
而且如果特征的數(shù)量多達(dá)成百上千個(gè),X的轉(zhuǎn)置乘X這個(gè)項(xiàng)的逆矩陣就會(huì)很難求。即使我們可以將問(wèn)題簡(jiǎn)化到用線性方程去表示,它依然是很難解的,并且會(huì)需要用到大量的計(jì)算資源。
在之后的課程中,我們將會(huì)學(xué)習(xí)針對(duì)這類(lèi)優(yōu)化問(wèn)題的,更好、可拓展性更強(qiáng)的求解方式。
04.?最后的總結(jié)
回顧一下,在本節(jié)課程中,我們學(xué)習(xí)了回歸問(wèn)題中的線性模型。線性模型十分簡(jiǎn)單,但對(duì)深度神經(jīng)網(wǎng)絡(luò)而言也非常有效。我們明白理論上可以求得問(wèn)題的解析解,但實(shí)際上難以計(jì)算。
在接下來(lái)的課程中,我們會(huì)學(xué)習(xí)到更有效的求解方法。在那之前會(huì)先學(xué)習(xí)分類(lèi)問(wèn)題中的線性模型。
剛才計(jì)算題的答案是:50
參考資料:
https://www.coursera.org/learn/intro-to-deep-learning/home/welcome