梯度下降和随机梯度下降为什么能下降?
梯度下降和隨機梯度下降為什么能下降?
標簽: 深度學習梯度下降SGD 2016-02-22 19:19 663人閱讀 評論(1) 收藏 舉報 本文章已收錄于: 分類: Deep Learning(7) 作者同類文章X版權聲明:本文為博主原創文章,未經博主允許不得轉載。
首先,我們假設cost function為:
其中,w,b為網絡參數,x為訓練樣本,n為樣本數量,y(x)為x的標簽,a為網絡輸出。
我們訓練的目的就是讓cost function取得最小。為了看起來方便,我們令,則:
? ? ? ? (1)
為了方便理解,我們先假設v只有2維,我們要做的就是通過不斷調整使得最小。可以通過下圖理解,我們為小球選擇一個方向,讓它往下滾,直到小球滾到“山谷”。
我們令在方向改變,在方向改變,由微積分知識可知:
? ? ? ? ? (2)
即每次改變,改變后為。為了使不斷變小,必須為負。
令, ? ? ? ? ? ? (3)
? ?? ? ? ? ? ? ?(4) ? ? ? ?
(注意這里的上三角和下三角)
? 則由(2)、(3)、(4)有:?
?? ? ? ? ? ? ? ? ? ? ? ? ? (5)
我們的目標是讓為負,假設:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (6)
其中是一個很小的正數(實際上就是我們所說的學習率),那么,由(5)和(6):
??? ? ? ?(7)
由于,所以,那么,就會一直往減小的方向走,即小球一直往“山谷”滾下去。
我們訓練的目的是得到模型參數,由(6)知的更新公式為:
? ? ? ? ? ? ? ? ? (8)
如果將重新看成,那么:
? ? ? (9)
? ? ? ? ? ? ? ? (10)
通過不斷計算,更新參數?,最終得到最小(或足夠小)。
實際應用中,應用梯度下降存在很多難題。我們回到cost function:
,我們寫成這個形式:
? ? ? ? ? ? ? ? ? ? ? ? ? ?(11)
也就是說:
? ? ? ? ? ? ? (12)
其中(12)是對于其中一個訓練樣本而言的cost funtion。
為了計算,我們要對每一個樣本計算,然后,計算平均:
? ? ? ? ? ? ? ? (13)
因此,當訓練樣本很多時,計算(13)要很長時間。
由此引出的一個想法叫隨機梯度下降(stochastic gradient descent,SGD),它能加快學習的速度。
這個想法的idea是在訓練樣本中隨機的選擇一批樣本,然后通過該批樣本的各,通過(13)計算。
(此時公式(13)中的n為該批樣本的數量)。
為了使隨機梯度下降法更有效,SGD隨機選擇訓練樣本中的一個小樣本集,大小為m,我們記這些樣本為:
。這樣一批樣本稱為mini-batch。
假設m足夠大,那么的平均大約等于的平均,即:
? ? ? (14)
其中第二項的n為訓練樣本總數,由此可得:
? ? ? ? ? ? ? ?(15)
那么,w和b的更新公式變為:
? ? (16)
? ? ? ? ? ? ? (17)
訓練完一個mini-batch后,就取另一個mini-batch,直到訓練完整個訓練集,這就是一個epoch。
有時候,我們可能不知道樣本數量n(或者m),我們可以不求平均,直接用和計算。我們看(16)和(17),去掉m實際上可以看作增大學習率。實際應用中那個效果更好看具體問題而定。
最后,我們總結一下隨機梯度下降的過程:
(1)初始化網絡參數;
(2)在訓練集中取mini-batch,計算,;
(3)由公式(16)和(17)更新參數w,b;
(4)重復(2)-(3),直到C最小(足夠小);
更多知識可以參考這里。
總結
以上是生活随笔為你收集整理的梯度下降和随机梯度下降为什么能下降?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 百度语音识别技术负责人李先刚:如何利用D
- 下一篇: 深度机器学习中的batch的大小对学习效