梯度下降原理汇总(转载+整理)
先整理下概念:
 梯度下降={BGD(批量梯度下降)SGD(隨機梯度下降)MBGD(小批量梯度下降)梯度下降=\left\{ \begin{aligned} BGD (批量梯度下降) \\ SGD(隨機梯度下降)\\ MBGD(小批量梯度下降) \end{aligned} \right.梯度下降=??????BGD(批量梯度下降)SGD(隨機梯度下降)MBGD(小批量梯度下降)?
接下來逐步展開
 ######################梯度下降(開始)######################################
 梯度下降的作用:求函數(shù)的極值
一、首先是BGD(Batch Gradient Descent)
 ##########################################################################
一般線性回歸函數(shù)的假設(shè)函數(shù)為:
 hw=∑j=0nwjxjh_w=\sum_{j=0}^{n}w_{j}x_{j}hw?=j=0∑n?wj?xj?
 損失函數(shù):
 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
下圖為一個二維參數(shù)
 θ0(也就是w0)\theta_{0}(也就是w_0)θ0?(也就是w0?)
 和
 θ1(也就是w1)\theta_{1}(也就是w_1)θ1?(也就是w1?)
 誤差函數(shù)的可視化圖:
批量梯度下降法(Batch Gradient Descent,簡稱BGD)是梯度下降法最原始的形式,它的具體思路是在更新每一參數(shù)時都使用所有的樣本來進行更新,其數(shù)學(xué)形式如下:
(1) 對上述的損失函數(shù)求偏導(dǎo):
 ?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) 由于是最小化風(fēng)險函數(shù),所以按照每個參數(shù)θ的梯度負方向來更新每個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是樣本維數(shù)下標,mmm為樣例數(shù)目,nnn為特征數(shù)目。所以更新一個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η是學(xué)習(xí)率
 每次更新權(quán)重都要使用所有的數(shù)據(jù)來計算一遍
優(yōu)點:易于并行實現(xiàn),抗噪聲能力強;
 缺點:當樣本數(shù)目很多時,訓(xùn)練過程會很慢。
從上面公式可以注意到,每迭代一步,都要用到訓(xùn)練集所有的數(shù)據(jù),
 如果樣本數(shù)目m很大,那么可想而知這種方法的迭代速度!
 所以,這就引入了另外一種方法,隨機梯度下降。
wikipedia上面的介紹:
 https://en.wikipedia.org/wiki/Gradient_descent
####################梯度下降(結(jié)束)##########################################
 ####################隨機梯度下降(開始)##########################################
 根據(jù)Who invented stochastic gradient descent?
 SGD的發(fā)明來自下面的三篇論文:
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).}
根據(jù)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都要打亂所有數(shù)據(jù)然后隨機抽一條來進行權(quán)重的更新,
 而不是進行O(n)O(n)O(n)復(fù)雜度的for循環(huán)的意思.
####################隨機梯度下降(結(jié)束)##########################################
最后,所謂的Mini-BGD(也被稱為MBGD),就是更新權(quán)重的時候,既不使用所有數(shù)據(jù),也不僅僅使用一條數(shù)據(jù),而是使用一小批(Mini-Batch)數(shù)據(jù).
####################################################################
 總結(jié)
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.
 隨機的意思就是隨機抽取一部分數(shù)據(jù)用來更新權(quán)重,
 更新權(quán)重的依據(jù)就是誤差函數(shù)的值越來越小(或者說接近極值)
 停止更新權(quán)重的依據(jù)是更新前后權(quán)重www的數(shù)值相差不大.
總結(jié)
以上是生活随笔為你收集整理的梯度下降原理汇总(转载+整理)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: haroopad故障
 - 下一篇: 为什么不同的深度学习框架要使用不同的保存