梯度下降之MiniBatch與並行化方法

2021-09-10 01:47:11 字數 1932 閱讀 2697

問題的引入:

考慮乙個典型的有監督機器學習問題,給定m個訓練樣本s=,通過經驗風險最小化來得到一組權值w,則現在對於整個訓練集待優化目標函式為:

其中引入l2正則,即在損失函式中引入

注意單個樣本引入損失為(並不用除以m):

正則化的解釋

這裡的正則化項可以防止過擬合,注意是在整體的損失函式中引入正則項,一般的引入正則化的形式如下:

其中l(w)為整體損失,這裡其實有:

這裡的 c即可代表

下面給乙個二維的示例圖:我們將模型空間限制在w的乙個l1-ball 中。為了便於視覺化,我們考慮兩維的情況,在(w1, w2)平面上可以畫出目標函式的等高線,而約束條件則成為平面上半徑為c的乙個 norm ball 。等高線與 norm ball 首次相交的地方就是最優解

可以看到,l1-ball 與l2-ball 的不同就在於l1在和每個座標軸相交的地方都有「角」出現,而目標函式的測地線除非位置擺得非常好,大部分時候都會在角的地方相交。注意到在角的位置就會產生稀疏性,例如圖中的相交點就有w1=0,而更高維的時候(想象一下三維的l1-ball 是什麼樣的?)除了角點以外,還有很多邊的輪廓也是既有很大的概率成為第一次相交的地方,又會產生稀疏性,相比之下,l2-ball 就沒有這樣的性質,因為沒有角,所以第一次相交的地方出現在具有稀疏性的位置的概率就變得非常小了。

batch gradient descent

有了以上基本的優化公式,就可以用gradient descent 來對公式進行求解,假設w的維度為n,首先來看標準的batch gradient descent演算法:

這裡的批梯度下降演算法是每次迭代都遍歷所有樣本,由所有樣本共同決定最優的方向。

stochastic gradient descent(sgd)隨機梯度下降

隨機梯度下降就是每次從所有訓練樣例中抽取乙個樣本進行更新,這樣每次都不用遍歷所有資料集,迭代速度會很快,但是會增加很多迭代次數,因為每次選取的方向不一定是最優的方向.

repeat until convergency{

random choice j from all m training example:

mini-batch gradient descent

這是介於以上兩種方法的折中,每次隨機選取大小為b的mini-batch(brepeat until convergency{

for j=1;j

最後看並行化的sgd:

若最後的v達到收斂條件則結束執行,否則回到第乙個for迴圈繼續執行,該方法同樣適用於minibatch gradient descent。

2 1 Mini batch 梯度下降

機器學習的應用是乙個高度依賴經驗的過程,伴隨著大量迭代的過程,你需要訓練諸多模型,才能找到合適的那乙個,優化演算法能夠幫助你快速訓練模型。向量化能夠讓你有效地對所有m個樣本進行計算,允許你處理整個訓練集。我們要把訓練樣本放大巨大的矩陣x當中去,y也是如此,y 所以x的維數是 m y的維數是 1,m ...

深度學習(7) Mini batch梯度下降法

在前面的學習當中,對於神經網路的每次迭代,我們都是以整個訓練集x為單元進行訓練。這種訓練方法也叫batch梯度下降法。由於跑完整個x後才能更新引數,當資料量較大時,每次迭代的時間會非常長。batch梯度下降法的代價函式一定會嚴格遞減。為例減小每次跌打的時間,我們試圖縮小每次迭代的資料量 在這個方法中...

梯度下降 隨機梯度下降 批梯度下降

下面的h x 是要擬合的函式,j 損失函式,theta是引數,要迭代求解的值,theta求解出來了那最終要擬合的函式h 就出來了。其中m是訓練集的記錄條數,j是引數的個數。梯度下降法流程 1 先對 隨機賦值,可以是乙個全零的向量。2 改變 的值,使j 按梯度下降的方向減少。以上式為例 1 對於我們的...