五步解析機器學習難點—梯度下降


”你這軟件的用戶需求有四百多項,

你難道就沒意識到沒有哪個人可以用這么復雜的產品么?”

”你說的很對,我最好在需求中再加一項——‘容易使用’。”

迪爾伯特系列漫畫

來源:

作者:Scott Adams

當我第一次嘗試學習機器學習算法時,我發現理解一個算法在干什么真的非常難。不僅僅是因為算法里各種繁雜的數學理論和難懂的符號,沒有實際的例子,光靠定義和推導來了解一個算法實在是很無聊 。就連在我上網去查找相關的指導材料時,能找到的通常都是各種公式以及晦澀難懂的解釋,很少有人能夠細致的將所有細節加以說明。

直到有一個學數據科學的同學介紹我通過Excel表格來學習算法,我驚奇地發現這個方法很有效,我希望在此能夠將它推廣。具體方法呢,就是每當我學習一個新算法時,我都會在Excel里進行小規模 的實驗。這種方法既能幫助你理解整個算法,又可以讓你體會到這個算法的功能及奇妙之處。

下面讓我舉一個例子來給大家說明。大部分數據科學的算法都有關優化,其中最常用的一個就是梯度下降。這個例子是有關房價預測的:

現在,已知歷史建築數據(房屋大小及價格),我們的目的是對於未來某個特定面積大小的房屋,我們能夠通過數學模型估算出此房屋的價格。舉個例子,如果我未來想買一個100平方米的房子,大約要多少錢呢?我希望我們的模型能解決這個問題。

換而言之,用數學語言來表達我們的問題:對於一個新房子,已知它的面積(X), 求它的價格(Y)。

讓我們先用折線圖的形式把目前的房屋數據表達出來:

現在,我們就先用一個簡單的線性模型,用一條直線來表明房價與房屋面積大小的關系。

(Prediction error: 預測誤差, intercept:截距, slope:斜率)

在以上的表格中,紅線(Ypred)代表給定房屋面積(X)預測的房價。

Ypred = a + bx (線性公式)

藍線代表目前真實房屋面積所對應的房價(Yactual)。黃色的虛線,代表着預測誤差(E),也就是Yactual 和 Ypred的差值。所以,我們為了使誤差(E)減小從而增加預測精准度,我們需要找到合適的a,b值(又稱比重)來確定Ypred這條線。

因此我們模型的目的,就是要找出最佳的a,b值(又稱比重),從而使Ypred這條線最均勻得穿過各個點,也就是使得誤差(E)最小,從而最大化地提高預測精准度。

(注意SSE只是測量誤差的一種方式,另外有其他的方式本文暫且不表)

現在我們的梯度下降法就派上用場了,梯度下降法這種優化算法可以幫我們找到最優的a,b值從而使得預測誤差減小。

下面我們就一步一步地拆分梯度下降法

  • 第一步:隨機將比重(a,b)賦值並計算誤差平方和(SSE)

  • 第二步:計算出梯度,即通過微調比重(a,b)從而改變差平方和(SSE)。這樣做可以使得a,b值可以向SSE最小化的方向靠攏

  • 第三步:用梯度調整a,b從而達到最優結果,即SSE最小

  • 第四步:用新的a,b來做預測,即得到最優的Ypred(紅線)並且計算新的SSE

  • 第五步:重復三四步直到調整a,b不會明顯的影響SSE

接下來,我們會用具體例子來解釋這五步(接下來我會用 Excel展示)。但在此之前,我們需要使數據標准化從而使得優化過程更加快。

第一步:隨機對比重(a,b)賦值並計算誤差平方和(SSE)

第二步:通過對誤差比重(a,b)求導計算出誤差梯度(注:YP即Ypred)

∂SSE/∂a = – (Y-YP)

∂SSE/∂b = – (Y-YP)X

誤差公式:SSE=½ (Y-YP)^2 = ½(Y-(a+bX))^2

這里涉及到一些微積分,不過僅此而已。∂SSE/∂a 和 ∂SSE/∂b 就被稱之為梯度,他們代表a,b相對SSE移動的方向。

第三步:通過梯度調整a,b,使得a,b最佳即所得SSE最小

(右上角是我們隨機的a,b所取得的SSE值,我們需要找到圖中黑虛線所指的SSE最小值)

我們通過改變a,b來確保我們的SSE會向最小值方向移動,即沿黃線所指方向。至於改變a,b的規則:

  • a – ∂SSE/∂a

  • b – ∂SSE/∂b

所以,具體的公式就是:

  • New a = a – r * ∂SSE/∂a = 0.45 - 0.01 * 3.300 = 0.42

  • New b = b – r * ∂SSE/∂b = 0.75 - 0.01 * 1.545 = 0.73

在這里,r代表學習率 = 0.01,可以自設,是用來決定調整a,b快慢的。越大調整的越快,但越容易漏掉收斂的最佳點。

第四步:用新的a,b來求出新的SSE

大家可以從圖上看出,總的SSE值(Total SSE)從原來的0.677變為0.553。代表着我們的預測准度正在增加。

第五步:重復三四步直到調整a,b不會明顯的影響SSE。到那時我們的預測准度就會達到最高

這就是梯度下降法,這個算法及他的變種是許多機器學習的算法,如神經式網絡,深度學習的核心組成部分。

作者簡介:Jahnavi Mahanta 是機器學習和深度學習的狂熱愛好者,她在過去的十三年期間在American Express公司領導了多支機器學習的小組。她同時也是Deeplearningtrack的聯合創始人,Deeplearningtrack是個在網上自主學習數據科學的網站,她也在此網站上擔任講員。

免責聲明:

請注意本文只是教學文章,因此:

1. 所用的數據都非真實的,並且數據的量非常小。並且為了簡化例子,我們用的數據和模型都只有一個變量。(生活中房價的高低不光與房屋面積的大小有關,還與地段及其他各種因素有關)

2. 本篇文章重點在於通過Excel來讓讀者更簡單理解梯度下降這個算法的概念,所以本篇沒涉及到梯度下降的優劣性,比如同最小二乘回歸法(least square regression)的比較等等。

3. 因為數據量太小,所以本文中用所有的數據進行訓練(training)。然而在實際生活中,我們也許會用到各種數據有效性(data validation)的方法。(比如—將數據分為訓練集和測試集(training set/testing set)或者交叉驗證(N—Cross Validation))


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM