本文總結自《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,而後沿着相反的方向移動,沿着山谷「滾落」。spa
即每降低到一個地方,就要計算下一步要往哪一個方向下去。blog
權重和偏置的更新規則:get
4. 隨機梯度降低算法 (stochastic gradient descent)
實際中使用梯度降低算法會使學習變得至關緩慢。這是由於:博客
對於每一個訓練實例x, 都要計算梯度向量∇C。若是訓練數據集過大,會花費很長時間,學習過程太慢。it
因此實際中使用隨機梯度降低算法 (stochastic gradient descent)。
基本思想: 從全部訓練實例中取一個小的採樣(sample): X1,X2,…,Xm (mini-batch),來估計 ∇C, 大大提升學習速度。
若是樣本夠大,
代入更新方程:
而後,從新選擇一個mini-batch用來訓練,直到用完全部的訓練實例,一輪epoch完成。
本文版權歸做者和博客園共有,歡迎轉載,未經贊成須保留此段聲明,且在文章頁面明顯位置給出原文連接。歡迎指正與交流。