神經網絡與深度學習(2):梯度下降算法和隨機梯度下降算法


本文總結自《Neural Networks and Deep Learning》第1章的部分內容。 

 

使用梯度下降算法進行學習(Learning with gradient descent)

1. 目標

我們希望有一個算法,能讓我們找到權重和偏置,以至於網絡的輸出y(x) 能夠擬合所有的訓練輸入x。

2. 代價函數(cost function)

定義一個Cost function (loss function, objective function): 目標函數,如下:
C: 被稱為二次代價函數;有時也被稱為均方誤差或者MSE
w: weight 權重
b: bias 偏向
n: 訓練數據集實例個數
x: 輸入值
a: 輸出值 (當x是輸入時)
||v||:  向量v的模
 
C(w,b) 越小越好,輸出的預測值和真實值差別越小越好。
 
那么我們的目標就轉為: 最小化C(w,b)。
 
我們訓練神經網絡的目的是找到能最小化二次代價函數C(w; b) 的權重和偏置。

3. 梯度下降

最小化問題可以用梯度下降解決(gradient descent)。

C(v) v有兩個變量v1, v2,通常可以用微積分解決,如果v包含的變量過多,無法用微積分解決。

梯度下降算法工作的方式就是重復計算梯度∇C,然后沿着相反的方向移動,沿着山谷“滾落”。

即每下降到一個地方,就要計算下一步要往哪個方向下去。

權重和偏置的更新規則:

4. 隨機梯度下降算法 (stochastic gradient descent)

實際中使用梯度下降算法會使學習變得相當緩慢。這是因為:

對於每個訓練實例x, 都要計算梯度向量∇C。如果訓練數據集過大,會花費很長時間,學習過程太慢。

所以實際中使用隨機梯度下降算法 (stochastic gradient descent)。
 
基本思想: 從所有訓練實例中取一個小的采樣(sample): X1,X2,…,Xm   (mini-batch),來估計 ∇C, 大大提高學習速度。
 
如果樣本夠大,
 
代入更新方程:

然后,重新選擇一個mini-batch用來訓練,直到用完所有的訓練實例,一輪epoch完成。 
 
 
作者:tsianlgeo
本文版權歸作者和博客園共有,歡迎轉載,未經同意須保留此段聲明,且在文章頁面明顯位置給出原文鏈接。歡迎指正與交流。


免責聲明!

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



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