DeepLearning筆記:梯度下降 Gradient Descent

阿扣:上一次我們了解了損失函數。為了找到使損失函數(比如用 SSE 計算)最小的 w (權重) 和 b (偏置項),我們需要先了解一個重要的方法:梯度下降。

阿特:聽起來像坐滑滑梯~

阿扣:是有那麼點意思。

阿扣:想像一下,我們對網路中的一些權重做了很小的改變,這些變化會讓輸出也有相應很小的變化:

via Neural networks and deep learning - chapter 1

然後拿這些微小的變化,跟目標值對比,看看誤差是變大還是變小了,然後不斷調整權重值,最終找到最合適的 w 和 b。

阿特:那要怎麼找到這些值呢?

阿扣:下面有請「梯度下降」 Gradient Descent。

阿特:終於能坐滑滑梯了……

阿扣:坐這個滑滑梯可能有點暈 ?? 。我先給你打個比方。想像一下,你在一個山峰的山頂,想用最快的速度到達山腳。

阿特:坐纜車可以嗎?

阿扣:纜車,不存在的……只能靠走的。要往哪邊下山呢?我們會選一個看起來「下降」最快的路徑:

朝這個方向走一段後,我們再看下一步往哪個方向走,「下降」最快。

一直重複這個過程,就能最快的速度下到山腳。

阿特:是這麼個道理。

阿扣:這個方法,就是「梯度下降」,在機器學習中很常見。所謂「梯度」,其實是指「變化率」或者「坡度 slope」,就是多變數函數的導數。

阿特:導數?!你說的是微積分裡面那個導數嗎? …… 瑟瑟發抖.gif

阿扣:別緊張,先聽我講,回憶回憶。

阿特:好吧。

阿扣:你還記得怎麼表示函數 f(x) 的導數吧?很簡單,就是 f(x) 。

阿特:嗯嗯,記得。

阿扣:所謂「梯度」,其實就是函數在某一點上的變化率,根據微分的知識,變化率可以通過這一點的切線求得,而切線其實就是函數的導數:f(x)。

來,跟我念一遍:求梯度 = 求變化率 = 求導數

阿特:求梯度 = 求變化率 = 求導數 (假裝自己聽懂了)

阿扣:了解了「梯度」,然後我們來看看「下降」又是怎麼回事。

切線代表函數在某個點的變化率。在上面這個圖中,x = 2 位置上的切線,斜率是 > 1 的。說明如果繼續往 x = 2 的右邊滑去,在曲線上的值就會變大。比如當 x = 3 時,y = 9。

但是我們想要到曲線最低的地方去,因為那裡可以讓誤差(也就是 cost )最小。所以,應該沿著梯度「相反」的方向滑動,也就朝著是 x = 2 的左邊滑去。這就是「下降」的含義。

阿特:沿著「上山」最快的反方向走,就能最快「下山」。啊原來這麼直白……

阿扣:對呀,原理並不複雜的。

這個視頻講解了線性回歸和梯度下降的關係,來看看吧!

https://www.zhihu.com/video/934834627793854464 Linear Regression Answer - YouTubewww.youtube.com

阿特:這個視頻不錯,講得挺清楚的~

阿扣:我們來複習一下。用一個函數 f(h) 表示 x 和 y 的關係。x 和 y 其實是已知的,它們來自真實的數據集。我們的目標是求出 w 和 b,使得計算出來的 y? y^ 最接近實際的 y 值。為了得到某種類型的 y 值(比如只有 0 和 1 兩種輸出),我們會使用類似 Sigmoid 這樣的激活函數,對 f(h) 做一下轉換。

阿特:哦,我說怎麼有點難理解呢。因為以前碰到 x 和 y,它們都是未知數,現在它們變成了已知數,真正的目標其實是求 w 和 b!

阿扣:沒錯!這是深度學習演算法中一個需要調整的認知。

怎麼得到 w 和 b 呢?用損失函數。如果損失函數的值大,說明模型預測得不準。我們要找到讓損失函數的值最小的 w 和 b。更具體說,我們要找到 w 的變化幅度 ΔwΔw,每次調整一小步,看看誤差 E 是不是變小了。

為了求出 Δw,我們引入「誤差項」δ ,它表示 誤差 * 激活函數的導數。然後用「誤差項」δ 乘上學習率 η (用來調整梯度的大小),再乘上 x,就是每次應該調整的權重值 Δwij

阿扣:比如說,如果激活函數是 Sigmoid 函數。

…… 咦?人呢?

喂!別跑,還有好幾個知識點沒講呢!……

補充:求多個變數的偏導數

如果只有一個未知數,求梯度只需要計算導數。如果有多個變數,求梯度就需要計算偏導數。偏導數其實並不複雜,只需要掌握鏈式求導法則,就能進行大部分的計算。

比如,損失函數 C

對 w 求偏導

對 b 求偏導

Ref

  • Deep Learning Nanodegree | Udacity
  • Neural Networks and Deep Learning | Coursera
  • Gradient Descent with Squared Errors
  • Gradient (video) | Khan Academy
  • An overview of gradient descent optimization algorithms

00 的 DeepLearning 筆記

DL筆記:機器學習和深度學習的區別www.uegeek.com圖標DL筆記:Neural Networks 神經網路www.uegeek.com

DL筆記:Linear regression 線性回歸www.uegeek.com圖標DL筆記:Activation Function 激活函數www.uegeek.com圖標DL筆記:Cost function 損失函數www.uegeek.com圖標


推薦閱讀:

那些巧妙而複雜的高數定理證明,大牛們也都能記得住嗎?
跨語言系統的密碼破解原理是怎麼樣的?
超幾何函數變換公式的一個有趣應用
肢體殘疾未來走學術方向被看好嗎?有可能去國外上學嗎?
數學如何從頭開始?

TAG:深度学习DeepLearning | 数学 | 梯度下降 |