1
雷鋒網(wǎng)按:本文作者為 Jahnavi Mahanta,前 American Express (美國運(yùn)通公司)資深機(jī)器學(xué)習(xí)工程師、深度學(xué)習(xí)在線教育網(wǎng)站 Deeplearningtrack 聯(lián)合創(chuàng)始人。
Jahnavi Mahanta:對算法的作用建立直覺性的理解——在我剛?cè)腴T機(jī)器學(xué)習(xí)的時候,這讓我覺得非常困難。不僅僅是因為理解數(shù)學(xué)理論和符號本身不容易,也因為它很無聊。我到線上教程里找辦法,但里面只有公式或高級別的解釋,在大多數(shù)情況下并不會深入細(xì)節(jié)。
就在那時,一名數(shù)據(jù)科學(xué)同事介紹給我一個新辦法——用 Excel 表格來實(shí)現(xiàn)算法,該方法讓我拍案叫絕。后來,不論是任何算法,我會試著小規(guī)模地在 Excel 上學(xué)習(xí)它——相信我,對于提升你對該算法的理解、完全領(lǐng)會它的數(shù)學(xué)美感,這個法子簡直是奇跡。
讓我用一個例子向各位解釋。
大多數(shù)數(shù)據(jù)科學(xué)算法是優(yōu)化問題。而這方面最常使用的算法是梯度下降。
或許梯度下降聽起來很玄,但讀完這篇文章之后,你對它的感覺大概會改變。
這里用住宅價格預(yù)測問題作為例子。
現(xiàn)在,有了歷史住宅數(shù)據(jù),我們需要創(chuàng)建一個模型,給定一個新住宅的面積能預(yù)測其價格。
任務(wù):對于一個新房子,給定面積 X,價格 Y 是多少?
讓我們從繪制歷史住宅數(shù)據(jù)開始。
現(xiàn)在,我們會用一個簡單的線性模型,用一條線來匹配歷史數(shù)據(jù),根據(jù)面積 X 來預(yù)測新住宅的價格 Ypred。
上圖中,紅線給出了不同面積下的預(yù)測價格 Ypred。
Ypred = a+bX
藍(lán)線是來自歷史數(shù)據(jù)的實(shí)際住宅價格 Yactual。
Yactual 和 Ypred 之間的差距,即黃色虛線,是預(yù)測誤差 E。
我們需要發(fā)現(xiàn)一條使權(quán)重 a,b 獲得最優(yōu)值的直線,通過降低預(yù)測誤差、提高預(yù)測精度,實(shí)現(xiàn)對歷史數(shù)據(jù)的最佳匹配。
所以,目標(biāo)是找到最優(yōu) a, b,使 Yactual 和 Ypred 之間的誤差 E 最小化。
誤差的平方和 (SSE) = ? a (實(shí)際價格 – 預(yù)測價格)2= ? a(Y – Ypred)2
(雷鋒網(wǎng)提醒,請注意衡量誤差的方法不止一種,這只是其中一個)
這時便是梯度下降登場的時候。梯度下降是一種優(yōu)化算法,能找到降低預(yù)測誤差的最優(yōu)權(quán)重 (a,b) 。
現(xiàn)在,我們一步步來理解梯度下降算法:
用隨機(jī)值和計算誤差(SSE)初始化權(quán)重 a 和 b。
計算梯度,即當(dāng)權(quán)重(a & b)從隨機(jī)初始值發(fā)生小幅增減時,SSE 的變動。這幫助我們把 a & b 的值,向著最小化 SSE 的方向移動。
用梯度調(diào)整權(quán)重,達(dá)到最優(yōu)值,使 SSE 最小化。
使用新權(quán)重來做預(yù)測,計算新 SSE。
重復(fù)第二、第三步,直到對權(quán)重的調(diào)整不再能有效降低誤差。
我在 Excel 上進(jìn)行了上述每一步,但在查看之前,我們首先要把數(shù)據(jù)標(biāo)準(zhǔn)化,因為這讓優(yōu)化過程更快。
用隨機(jī)值的 a、b 初始化直線 Ypred = a + b X,計算預(yù)測誤差 SSE。
計算不同權(quán)重的誤差梯度。
?SSE/?a = – (Y-YP)
?SSE/?b = – (Y-YP)X
這里, SSE=? (Y-YP)2 = ?(Y-(a+bX))2
你需要懂一點(diǎn)微積分,但沒有別的要求了。
?SSE/?a、?SSE/?b 是梯度,它們基于 SSE 給出 a、b 移動的方向。
用梯度調(diào)整權(quán)重,達(dá)到最小化 SSE 的最優(yōu)值
我們需要更新 a、b 的隨機(jī)值,來讓我們朝著最優(yōu) a、b 的方向移動。
更新規(guī)則:
a – ?SSE/?a
b – ?SSE/?b
因此:
新的 a = a – r * ?SSE/?a = 0.45-0.01*3.300 = 0.42
新的 b = b – r * ?SSE/?b= 0.75-0.01*1.545 = 0.73
這里,r 是學(xué)習(xí)率= 0.01, 是權(quán)重調(diào)整的速率。
使用新的 a、b 做預(yù)測,計算總的 SSE。
你可以看到,在新預(yù)測上 總的 SSE 從 0.677 降到了 0.553。這意味著預(yù)測精度在提升。
重復(fù)第三、第四步直到對 a、b 的調(diào)整無法有效降低誤差。這時,我們已經(jīng)達(dá)到了最優(yōu) a、b,以及最高的預(yù)測精度。
這便是梯度下降算法。該優(yōu)化算法以及它的變種是許多機(jī)器學(xué)習(xí)算法的核心,比如深度網(wǎng)絡(luò)甚至是深度學(xué)習(xí)。
via kdnuggets,雷鋒網(wǎng)編譯。
相關(guān)文章:
監(jiān)督學(xué)習(xí)最常見的五種算法,你知道幾個?
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。