當前位置:
首頁 > 知識 > 史上最簡潔易懂教程 用Excel理解梯度下降

史上最簡潔易懂教程 用Excel理解梯度下降

史上最簡潔易懂教程 用Excel理解梯度下降



AI 研習社按:本文作者為 Jahnavi Mahanta,前 American Express (美國運通公司)資深機器學習工程師、深度學習在線教育網站 Deeplearningtrack 聯合創始人。


Jahnavi Mahanta:對演算法的作用建立直覺性的理解——在我剛入門機器學習的時候,這讓我覺得非常困難。不僅僅是因為理解數學理論和符號本身不容易,也因為它很無聊。我到線上教程里找辦法,但裡面只有公式或高級別的解釋,在大多數情況下並不會深入細節。


就在那時,一名數據科學同事介紹給我一個新辦法——用 Excel 表格來實現演算法,該方法讓我拍案叫絕。後來,不論是任何演算法,我會試著小規模地在 Excel 上學習它——相信我,對於提升你對該演算法的理解、完全領會它的數學美感,這個法子簡直是奇蹟。

案例


讓我用一個例子向各位解釋。


大多數數據科學演算法是優化問題。而這方面最常使用的演算法是梯度下降。


或許梯度下降聽起來很玄,但讀完這篇文章之後,你對它的感覺大概會改變。


這裡用住宅價格預測問題作為例子。


現在,有了歷史住宅數據,我們需要創建一個模型,給定一個新住宅的面積能預測其價格。


任務:對於一個新房子,給定面積 X,價格 Y 是多少?


讓我們從繪製歷史住宅數據開始。

史上最簡潔易懂教程 用Excel理解梯度下降


現在,我們會用一個簡單的線性模型,用一條線來匹配歷史數據,根據面積 X 來預測新住宅的價格 Ypred。

史上最簡潔易懂教程 用Excel理解梯度下降



上圖中,紅線給出了不同面積下的預測價格 Ypred。


Ypred = a+bX


藍線是來自歷史數據的實際住宅價格 Yactual。


Yactual 和 Ypred 之間的差距,即黃色虛線,是預測誤差 E。


我們需要發現一條使權重 a,b 獲得最優值的直線,通過降低預測誤差、提高預測精度,實現對歷史數據的最佳匹配。


所以,目標是找到最優 a, b,使 Yactual 和 Ypred 之間的誤差 E 最小化。


誤差的平方和 (SSE) = ? a (實際價格 – 預測價格)2= ? a(Y – Ypred)2

(請注意衡量誤差的方法不止一種,這只是其中一個)


這時便是梯度下降登場的時候。梯度下降是一種優化演算法,能找到降低預測誤差的最優權重 (a,b) 。


理解梯度下降


現在,我們一步步來理解梯度下降演算法:


用隨機值和計算誤差(SSE)初始化權重 a 和 b。


計算梯度,即當權重(a & b)從隨機初始值發生小幅增減時,SSE 的變動。這幫助我們把 a & b 的值,向著最小化 SSE 的方向移動。


用梯度調整權重,達到最優值,使 SSE 最小化。


使用新權重來做預測,計算新 SSE。


重複第二、第三步,直到對權重的調整不再能有效降低誤差。


我在 Excel 上進行了上述每一步,但在查看之前,我們首先要把數據標準化,因為這讓優化過程更快。

史上最簡潔易懂教程 用Excel理解梯度下降



第一步


用隨機值的 a、b 初始化直線 Ypred = a + b X,計算預測誤差 SSE。

史上最簡潔易懂教程 用Excel理解梯度下降



第二步


計算不同權重的誤差梯度。


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


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

這裡, SSE=? (Y-YP)2 = ?(Y-(a+bX))2


你需要懂一點微積分,但沒有別的要求了。


?SSE/?a、?SSE/?b 是梯度,它們基於 SSE 給出 a、b 移動的方向。

史上最簡潔易懂教程 用Excel理解梯度下降



第三步


用梯度調整權重,達到最小化 SSE 的最優值

史上最簡潔易懂教程 用Excel理解梯度下降



我們需要更新 a、b 的隨機值,來讓我們朝著最優 a、b 的方向移動。

更新規則:


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 是學習率= 0.01, 是權重調整的速率。


第四步


使用新的 a、b 做預測,計算總的 SSE。


你可以看到,在新預測上 總的 SSE 從 0.677 降到了 0.553。這意味著預測精度在提升。

史上最簡潔易懂教程 用Excel理解梯度下降



第五步


重複第三、第四步直到對 a、b 的調整無法有效降低誤差。這時,我們已經達到了最優 a、b,以及最高的預測精度。


這便是梯度下降演算法。該優化演算法以及它的變種是許多機器學習演算法的核心,比如深度網路甚至是深度學習。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 唯物 的精彩文章:

人臉檢測與識別的趨勢和分析
CNN 在基於弱監督學習的圖像分割中的應用
教你從零開始在 TensorFlow 上搭建 RNN!
課程怎麼樣,你們說了算
從零教你寫一個完整的GAN

TAG:唯物 |

您可能感興趣

簡單理解Hadoop架構原理
對於linux下交叉編譯鏈以及Makefile的簡單理解
簡單理解node.js
心理學帶來曙光,DeepMind要像理解人一樣理解模型
我的技術簡史,及對Python的理解
理解 Python 的 for 循環
深入理解 Web Server 原理與實踐:Nginx
簡單理解Vue中的nextTick
如果理解Python web開發技術
numfmt : 讓數字變得更容易理解
深入理解Flutter引擎線程模式
一文帶你理解Q-Learning的搜索策略,掌握強化學習最常用演算法
Waymo軟體工程總監Sacha Arnoud:Waymo還需在應用場景和語義理解方面繼續突破
Android圖片載入框架最全解析二,從源碼的角度理解Glide的執行流程
通過 Q-learning 深入理解強化學習
Less與TypeScript的簡單理解與應用,並使用WebPack打包靜態頁面
DeepMind 最新研究:通過刪除神經元理解深度學習
如何理解 Python Web 開發?
Word2v的ec 原理解析!
深入淺出 + 徹底理解 Python 編碼