作者/編輯 | 橘子?配圖:深度學(xué)習(xí)導(dǎo)論課程slides 來源 | 橘子AI筆記(ID:datawitch)
最近在學(xué)習(xí)Coursera上的高級機(jī)器學(xué)習(xí)專項(xiàng)課程(Advanced Machine Learning),它的介紹頁是這樣寫的:這門課程主要講解了深度學(xué)習(xí)佛吓、強(qiáng)化學(xué)習(xí)牢屋、自然語言理解录平、計(jì)算機(jī)視覺和貝葉斯方法憨栽。除了理論知識背捌,Kaggle比賽的高分選手和CERN的科學(xué)家也將分享他們解決實(shí)際問題的經(jīng)驗(yàn)师倔,并幫助您填補(bǔ)理論和實(shí)踐之間的空白灌旧。在完成7門課程后爽篷,您將能夠在企業(yè)中應(yīng)用現(xiàn)代機(jī)器學(xué)習(xí)方法悴晰,并了解使用數(shù)據(jù)和配置參數(shù)時的注意事項(xiàng)。
深度學(xué)習(xí)導(dǎo)論(Introduction to Deep Learning)是專項(xiàng)課程系列中的第一部分逐工,這部分包括:
第1周?- 最優(yōu)化理論
第2周?- 神經(jīng)網(wǎng)絡(luò)導(dǎo)論
第3周?- 深度學(xué)習(xí)圖像處理
第4周?- 無監(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開發(fā)環(huán)境搭建步驟 | 教程
這節(jié)課我們將會學(xué)習(xí)線性模型(linear model)。
首先舉一個例子:現(xiàn)在要寫一個函數(shù)泪喊,它的輸入是一張圖片棕硫,輸出是圖片中海豹的數(shù)量,這個函數(shù)應(yīng)該怎么寫呢袒啼?
有一種思路是嘗試檢測圖片中出現(xiàn)的物體邊緣哈扮,然后進(jìn)行統(tǒng)計(jì)纬纪,但是這樣的方法不如用機(jī)器學(xué)習(xí)。
用機(jī)器學(xué)習(xí)的方法怎樣來數(shù)沙灘上的海豹滑肉?首先育八,我們要收集許多標(biāo)注好的數(shù)據(jù),比如幾千張赦邻,甚至上百萬張海豹圖片髓棋。然后人工地去數(shù)清楚這些圖片中都有幾只海豹,再嘗試從這些標(biāo)注好的數(shù)據(jù)集中習(xí)得一個擬合效果最好的函數(shù)惶洲。
首先來講一些基本概念按声,在機(jī)器學(xué)習(xí)中,我們要學(xué)習(xí)的圖片恬吕、或者其他任何類型的數(shù)據(jù)签则,被稱為一個樣本(example)用x表示,每個樣本都有許多特征(features)铐料,比如對圖片來說渐裂,特征可以是每個像素點(diǎn)的數(shù)值。
在有監(jiān)督學(xué)習(xí)中钠惩,每個樣本還對應(yīng)于一個目標(biāo)值(target value)用y表示柒凉,相當(dāng)于“標(biāo)準(zhǔn)答案”,比如在數(shù)海豹的問題中篓跛,我們的目標(biāo)值就是每張圖片中海豹的數(shù)量膝捞。這樣,每個x值比如x_i就對應(yīng)一個目標(biāo)值y_i愧沟。
在訓(xùn)練集中蔬咬,我們有很多對這樣的x和y,合起來用X表示沐寺。這個X就包括了訓(xùn)練集中所有的樣本及其特征林艘,以及對應(yīng)的目標(biāo)值。我們用a(x)來表示模型(model)或者假說(hypothesis)混坞,機(jī)器學(xué)習(xí)的目標(biāo)就是找到最能擬合(fit)訓(xùn)練集的模型狐援。
01.?回歸問題與分類問題
有監(jiān)督學(xué)習(xí)(supervised learning)問題主要分為兩類:回歸(regression)和分類(classification)問題。
在回歸問題中拔第,目標(biāo)值是一個實(shí)數(shù)咕村。比如在數(shù)海豹的問題中,目標(biāo)值是海豹的數(shù)量蚊俺。又比如懈涛,現(xiàn)在給出職位描述,要求預(yù)測這個職位的薪水泳猬,薪水也是實(shí)數(shù)批钠。再比如宇植,給出影評,要求預(yù)測寫這篇影評的用戶對電影的打分(0-5分)埋心,這個打分也是實(shí)數(shù)指郁。
在分類問題中,目標(biāo)值是離散的拷呆,其數(shù)量是有限個(finite)闲坎,而不是一個連續(xù)的區(qū)間。比如物體檢測茬斧,我們希望找出一張照片中有沒有貓啊狗啊或者自行車啊什么的腰懂,可以分為有限個類別,那這個時候就是在做分類项秉。再比如绣溜,給出一篇新文章,希望預(yù)測出這篇文章屬于什么話題:政治娄蔼?體育怖喻?還是娛樂新聞什么的。這里類別的數(shù)量也是有限的岁诉。
02.?回歸問題中的線性模型
我們來看一個非常簡單的數(shù)據(jù)集锚沸。在這個數(shù)據(jù)集中,每個樣本只有一個特征唉侄,對應(yīng)于一個目標(biāo)值咒吐,而目標(biāo)值是實(shí)數(shù)。
通過這張圖属划,我們可以看到它是一個線性趨勢(linear trend)的關(guān)系,如果x值增大2倍候生,那么y值大概對應(yīng)地減小2倍同眯。所以我們應(yīng)該可以用線性模型來描述這批數(shù)據(jù),構(gòu)建一個預(yù)測模型唯鸭。
那么這個公式就描述了我們的線性模型须蜗。它非常簡單,只有兩個參數(shù)目溉,w1和b明肮。如果計(jì)算出w1和b的最佳數(shù)值,就會得到圖中的這條直線缭付。
雖然它不能完美柿估、精確地根據(jù)每一個x值計(jì)算出它對應(yīng)的y值,但已經(jīng)能夠很好地描述x和y之間的關(guān)系陷猫,能很好地擬合我們的數(shù)據(jù)集秫舌。
當(dāng)然的妖,在大多數(shù)機(jī)器學(xué)習(xí)問題中,都有不止一個特征足陨。下圖中展示的是通用線性模型的公式嫂粟,對于每一個特征x_j,都乘以它對應(yīng)的權(quán)重(weight)值w_j墨缘,我們把所有這些項(xiàng)加起來星虹,再加上一個偏置(bias)項(xiàng)b,就得到了通用線性模型的表達(dá)式镊讼。
用d表示我們數(shù)據(jù)集中的特征數(shù)宽涌,那么這個公式有d+1個參數(shù),也就是d個權(quán)重值w狠毯,加上一個偏置項(xiàng)b护糖。線性模型是非常簡單的模型,因?yàn)橥瑯佣嗟奶卣鲾?shù)如果要用神經(jīng)網(wǎng)絡(luò)模型嚼松,參數(shù)要多得多嫡良。
為了更加簡化,我們可以假設(shè)在每個樣本中献酗,都有一個偽特征值寝受,它的值是常數(shù)1,有這個特征的系數(shù)就是偏置項(xiàng)罕偎。所以很澄,在后面的講解中,我們不會單獨(dú)把偏置項(xiàng)拿出來颜及,而是歸在權(quán)重值當(dāng)中去考慮甩苛。
那么這樣的話,我們就可以很方便地寫出線性模型的矩陣(matrix)形式俏站。
根據(jù)線性代數(shù)的知識讯蒲,我們很容易得知上張幻燈片中講到的形式可以寫成這個點(diǎn)積(dot product)的形式,也就是向量(vector)的相乘肄扎、相加墨林。線性模型的輸出是權(quán)重向量和特征向量X的點(diǎn)積。
那么如果我們要將模型運(yùn)用到整個數(shù)據(jù)集或者新的樣本當(dāng)中犯祠,需要怎么做呢旭等?首先用X表示樣本矩陣,它有L行d列衡载,每行表示一個樣本搔耕,每列表示該樣本的所有特征。這時候X與權(quán)重矩陣w的點(diǎn)積就是我們的預(yù)測月劈,這個結(jié)果是一個長度為L的向量度迂,它包括了我們的線性模型對每個樣本的預(yù)測值藤乙。
計(jì)算題:假設(shè)訓(xùn)練集中有10個樣本,每個樣本有5個特征惭墓,那么X矩陣有多少個元素坛梁?(答案見文末)
03.?損失函數(shù)
機(jī)器學(xué)習(xí)的另一個重要問題是計(jì)算損失(loss),也就是我們?nèi)绾魏饬款A(yù)測值與數(shù)據(jù)集(訓(xùn)練集或者測試集)之間的差距(error)腊凶。
回歸問題中最流行的一種損失函數(shù)(loss function)叫均方差損失(Mean Squared Error, MSE)划咐。
它的表達(dá)式是這樣的:比如我們的數(shù)據(jù)集是X_i,線性模型的預(yù)測結(jié)果是w與X_i的點(diǎn)積钧萍,我們用這個預(yù)測值減去真實(shí)的目標(biāo)值y_i褐缠,來計(jì)算預(yù)測值與真實(shí)值之間的偏差(deviation),然后取一個平方风瘦,再對整個數(shù)據(jù)集上所有樣本的計(jì)算結(jié)果取平均队魏,就得到了均方差損失值。
它可以衡量我們的模型能在多大程度上去擬合我們的數(shù)據(jù):均方差損失值越小万搔,模型對數(shù)據(jù)的擬合效果就越好胡桨。
當(dāng)然,均方差也可以寫成向量形式瞬雹。w矩陣與X矩陣的點(diǎn)積得到的向量就表示了我們對數(shù)據(jù)集中所有樣本的預(yù)測值昧谊,然后我們還可以用向量的形式表示出所有樣本對應(yīng)的真實(shí)目標(biāo)值,預(yù)測值矩陣與真實(shí)值矩陣相減酗捌,再取其歐幾里得范數(shù)(Euclidean norm)呢诬,表示的也是均方差。
那么現(xiàn)在胖缤,我們有了衡量模型擬合好壞程度的損失函數(shù)尚镰,接下來要做的就是求損失函數(shù)對參數(shù)w的最小值。也就是說哪廓,我們希望找到一組參數(shù)w钓猬,它能使得損失函數(shù)取到最小值。這就是機(jī)器學(xué)習(xí)的核心思想:我們通過優(yōu)化損失函數(shù)撩独,來找到針對某問題的最佳模型。
其實(shí)如果你懂微積分账月,就不難看出综膀,我們可以通過求導(dǎo)并解出方程的方式得出這些最優(yōu)化問題(optimization problem)的解析解(analytical solution)。但是這樣做的話局齿,會需要求逆矩陣剧劝,計(jì)算非常復(fù)雜。
而且如果特征的數(shù)量多達(dá)成百上千個抓歼,X的轉(zhuǎn)置乘X這個項(xiàng)的逆矩陣就會很難求讥此。即使我們可以將問題簡化到用線性方程去表示拢锹,它依然是很難解的,并且會需要用到大量的計(jì)算資源萄喳。
在之后的課程中卒稳,我們將會學(xué)習(xí)針對這類優(yōu)化問題的,更好他巨、可拓展性更強(qiáng)的求解方式充坑。
04.?最后的總結(jié)
回顧一下,在本節(jié)課程中染突,我們學(xué)習(xí)了回歸問題中的線性模型捻爷。線性模型十分簡單,但對深度神經(jīng)網(wǎng)絡(luò)而言也非常有效份企。我們明白理論上可以求得問題的解析解也榄,但實(shí)際上難以計(jì)算。
在接下來的課程中司志,我們會學(xué)習(xí)到更有效的求解方法甜紫。在那之前會先學(xué)習(xí)分類問題中的線性模型。
剛才計(jì)算題的答案是:50
參考資料:
https://www.coursera.org/learn/intro-to-deep-learning/home/welcome