梯度下降原理汇总(转载+整理)
先整理下概念:
梯度下降={BGD(批量梯度下降)SGD(隨機梯度下降)MBGD(小批量梯度下降)梯度下降=\left\{ \begin{aligned} BGD (批量梯度下降) \\ SGD(隨機梯度下降)\\ MBGD(小批量梯度下降) \end{aligned} \right.梯度下降=??????BGD(批量梯度下降)SGD(隨機梯度下降)MBGD(小批量梯度下降)?
接下來逐步展開
######################梯度下降(開始)######################################
梯度下降的作用:求函數的極值
一、首先是BGD(Batch Gradient Descent)
##########################################################################
一般線性回歸函數的假設函數為:
hw=∑j=0nwjxjh_w=\sum_{j=0}^{n}w_{j}x_{j}hw?=j=0∑n?wj?xj?
損失函數:
Jtrain(w)=12m∑i=1m(hw(x(i))?y(i))2J_{train}(w)=\frac{1}{2m}\sum_{i=1}^{m}(h_{w}(x^{(i)})-y^{(i)})^{2}Jtrain?(w)=2m1?i=1∑m?(hw?(x(i))?y(i))2
下圖為一個二維參數
θ0(也就是w0)\theta_{0}(也就是w_0)θ0?(也就是w0?)
和
θ1(也就是w1)\theta_{1}(也就是w_1)θ1?(也就是w1?)
誤差函數的可視化圖:
批量梯度下降法(Batch Gradient Descent,簡稱BGD)是梯度下降法最原始的形式,它的具體思路是在更新每一參數時都使用所有的樣本來進行更新,其數學形式如下:
(1) 對上述的損失函數求偏導:
?J(w)?wj=?1m∑i=1m(yi?hw(xi))xji\frac{\partial J(w)}{\partial w_j}=-\frac{1}{m}\sum_{i=1}^m(y^i-h_{w}(x^i))x_j^i?wj??J(w)?=?m1?i=1∑m?(yi?hw?(xi))xji?
(2) 由于是最小化風險函數,所以按照每個參數θ的梯度負方向來更新每個www:
wj′=wj?η1m∑i=1m(yi?hw(xi))xjiw_j^{'}=w_j-\eta \frac{1}{m}\sum_{i=1}^m(y^i-h_{w}(x^i))x_j^iwj′?=wj??ηm1?i=1∑m?(yi?hw?(xi))xji?
iii是樣本編號下標,jjj是樣本維數下標,mmm為樣例數目,nnn為特征數目。所以更新一個wjw_jwj?需要遍歷整個樣本集.僞代碼如下:
Repeat until convergence{
wj:=wj?η?1m∑i=1m(y(i)?hw(xi))xjiw_j:=w_j-\eta·\frac{1}{m}\sum_{i=1}^m(y^{(i)}-h_{w}(x^{i}))x_j^{i}wj?:=wj??η?m1?i=1∑m?(y(i)?hw?(xi))xji?(for every j=0, … , n)
}
其中η\etaη是學習率
每次更新權重都要使用所有的數據來計算一遍
優點:易于并行實現,抗噪聲能力強;
缺點:當樣本數目很多時,訓練過程會很慢。
從上面公式可以注意到,每迭代一步,都要用到訓練集所有的數據,
如果樣本數目m很大,那么可想而知這種方法的迭代速度!
所以,這就引入了另外一種方法,隨機梯度下降。
wikipedia上面的介紹:
https://en.wikipedia.org/wiki/Gradient_descent
####################梯度下降(結束)##########################################
####################隨機梯度下降(開始)##########################################
根據Who invented stochastic gradient descent?
SGD的發明來自下面的三篇論文:
SGD的偽代碼如下(Stochastic gradient descent):
Choose an initial vector of parameters www and learning rate η\etaη .
Repeat until an approximate minimum is obtained:
Randomly shuffle examples in the training set.
For {iii=1,2,…,n} {iii=1,2,…,n}, do:
{www:=www-η\etaη ?\nabla? Qi(w)Q_{i}(w)Qi?(w).}
根據Stochastic gradient descent:
The key difference compared to standard (Batch) Gradient Descent is that only one piece of data from the dataset is used to calculate the step, and the piece of data is picked randomly at each step.所以偽代碼中的For后面的意思是,每個step都要打亂所有數據然后隨機抽一條來進行權重的更新,
而不是進行O(n)O(n)O(n)復雜度的for循環的意思.
####################隨機梯度下降(結束)##########################################
最后,所謂的Mini-BGD(也被稱為MBGD),就是更新權重的時候,既不使用所有數據,也不僅僅使用一條數據,而是使用一小批(Mini-Batch)數據.
####################################################################
總結
Batch gradient descent: Use all examples in each iteration;
Stochastic gradient descent: Use 1 example in each iteration;
Mini-batch gradient descent: Use b examples in each iteration.
隨機的意思就是隨機抽取一部分數據用來更新權重,
更新權重的依據就是誤差函數的值越來越小(或者說接近極值)
停止更新權重的依據是更新前后權重www的數值相差不大.
總結
以上是生活随笔為你收集整理的梯度下降原理汇总(转载+整理)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: haroopad故障
- 下一篇: 关于softmax loss这个概念