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 - YouTube阿特
:這個視頻不錯,講得挺清楚的~
阿扣
:我們來複習一下。用一個函數 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筆記:機器學習和深度學習的區別DL筆記:Neural Networks 神經網路DL筆記:Linear regression 線性回歸DL筆記:Activation Function 激活函數DL筆記:Cost function 損失函數
推薦閱讀:
※那些巧妙而複雜的高數定理證明,大牛們也都能記得住嗎?
※跨語言系統的密碼破解原理是怎麼樣的?
※超幾何函數變換公式的一個有趣應用
※肢體殘疾未來走學術方向被看好嗎?有可能去國外上學嗎?
※數學如何從頭開始?
TAG:深度学习DeepLearning | 数学 | 梯度下降 |