1. 程式人生 > >隨機梯度下降法,批量梯度下降法和小批量梯度下降法以及程式碼實現

隨機梯度下降法,批量梯度下降法和小批量梯度下降法以及程式碼實現

前言

梯度下降法是深度學習領域用於最優化的常見方法,根據使用的batch大小,可分為隨機梯度下降法(SGD)和批量梯度下降法(BGD)和小批量梯度下降法(MBGD),這裡簡單介紹下並且提供Python程式碼演示。
如有謬誤,請聯絡指正。轉載請註明出處。
聯絡方式:
e-mail: [email protected]
QQ: 973926198
github: https://github.com/FesianXu
程式碼開源:click

梯度下降法

  其基本思想就是使得網路的各個引數朝著優化函式的梯度的反方向更新,因為梯度的方向是增長最速方向,所以梯度的反方向就是減少的最速方向,因此只要設定一個步進η

 ,然後朝著梯度的反方向下降減小即可將優化函式最小化。公式表達如:

w l ij :=w l ij ηCw l ij  

以下討論都假設使用的損失函式是MSE損失函式,模型為線性迴歸模型。

L=12m i=1 m (yh(x (i) )) 2 m 
h(x i )=θ T x (i) +bx (i) ix (i) R n  

批量梯度下降法(BGD)

  批量梯度下降法(Batch Gradient Descent, BGD)是梯度下降法的最原始的形式,其特點就是每一次訓練迭代都需要利用所有的訓練樣本,其表示式為:

Lθ j =
1m i=1 m [(yh(x (i) ))x (i) j ]x (i) j ij
 

θ j :=θ j +η1m i=1 m [(yh(x (i) ))x (i) j ] 
  可以發現,對於每一個引數的更新都需要利用到所有的m個樣本,這樣會導致訓練速度隨著訓練樣本的增大產生極大地減慢,不適合於大規模訓練樣本的場景,但是,其解是全域性最優解,精度高。

隨機梯度下降法(SGD)

  隨機梯度下降法(Stochastic Gradient Descent, SGD)是梯度下降法的改進形式之一,其特點就是每一次訓練迭代只需要訓練樣本集中的一個樣本,其表示式為:

Lθ j =(yh(x))x j x j j 
θ j :=θ j +η(yh(x))x j  
  和BGD進行對比可以發現,其引數更新過程中,只需要選取訓練集中的一個訓練樣本,因此訓練速度快,但是因為其只是利用了訓練集的一部分知識,因此其解為區域性最優解,精度較低。

小批量梯度下降法(MBGD)

  小批量梯度下降法(Mini-Batch Gradient Descent, MBGD)是結合了SGD和BGD的一種改進版本,既有訓練速度快,也有精度較高的特點,其基本特點就是每一次訓練迭代在訓練集中隨機取樣batch_size個樣本,其表示式為:

Lθ j =1M i=1 M [(yh(x (i) ))x (i) j ]Mbatch_size 
θ j :=θ j +η1M i=1 M [(

相關推薦

隨機梯度下降批量梯度下降批量梯度下降以及程式碼實現

前言 梯度下降法是深度學習領域用於最優化的常見方法,根據使用的batch大小,可分為隨機梯度下降法(SGD)和批量梯度下降法(BGD)和小批量梯度下降法(MBGD),這裡簡單介紹下並且提供Python程式碼演示。 如有謬誤,請聯絡指正。轉載請註明出處。 聯

梯度下降隨機梯度下降批量梯度對比

對於梯度下降法 如果訓練樣本集特別大(假設為樣本3億:表示在美國大學3億人口,因此美國的人口普查擁有這樣數量級的資料),如果想用這些資料去擬合一個線性迴歸模型,那麼需要對著3億資料進行求和,計算量太大了,這種梯度下降也被稱為批量地圖下降法,(批量:表示每次我們都要同事考慮所有訓練樣本,我們

Python實現-----使用隨機梯度演算法對高斯核模型進行最二乘學習

(1)高斯核模型                           其中為樣本。可以看出,核模型的均值是以的元素進行計算的。 (2)隨機梯度下降法 (3)python 程式碼實現 import numpy as np import matplotlib

氣泡排序選擇排序、二分查詢圖示以及程式碼實現

氣泡排序 請看下面的這個栗子: 需要排序的陣列arr = {99,88,77,55,66,44}; 具體排序細節各位客官請看圖: 程式碼實現: public class BubbleSort { public static void main(String[] ar

banner無縫滾動動畫支持左右按鈕

眼睛 移動 on() ner wid 表示 margin val float HTML: <div class="box">   <ul>     <li class="img_cur" >       <a h

Java集合框架上機練習題:編寫一個Book類該類至少有nameprice兩個屬性。該類要實現Comparable接口在接口的compareTo()方法.....

ext .cn 數據庫 識別 方法 屬性 set package compareto 編寫一個Book類,該類至少有name和price兩個屬性。該類要實現Comparable接口,在接口的compareTo()方法中規定兩個Book類實例的大小關系為二者的price屬性的

入門:最大子序列的四種算(Java)

else 初始化 需要 nbsp ava 時間 pos sub for循環 最近再學習算法和數據結構,推薦一本書:Data structures and Algorithm analysis in Java 3rd 以下的四種算法出自本書 四種最大子序列和的算法: 問題描

徑向基-薄板樣條插值數學公式、原理以及程式碼實現基本過程

徑向基插值部分 徑向基函式RBF (Radial Basis Function)有以下五種基函式 其中r代表代待求點X與已知點Xi之間的向量距離 上邊的公式是適用於以上五種基函式的計算公式,其中X代表向量,不是一個數字 對於薄板樣條插值,其公式(是經過上邊

波變換波閾值去噪

小波變換和小波閾值法去噪 Q: 328333568 Q群:168691634 1. 小波變換 小波變換是一種訊號的時間——尺度(時間——頻率)分析方法,它具有多分辨分析的特點,而且在時頻兩域都具有表徵訊號區域性特徵的能力,是一種視窗大小固定不變但其形狀可改變,時間窗和頻率窗都可以改變

【無監督學習】DBSCAN聚類演算法原理介紹以及程式碼實現

前言:無監督學習想快一點複習完,就轉入有監督學習 聚類演算法主要包括哪些演算法?主要包括:K-m

對數幾率回歸梯度下降隨機梯度下降與牛頓)與線性判別(LDA)

3.1 初始 屬性 author alt closed sta lose cnblogs   本文主要使用了對數幾率回歸法與線性判別法(LDA)對數據集(西瓜3.0)進行分類。其中在對數幾率回歸法中,求解最優權重W時,分別使用梯度下降法,隨機梯度下降與牛頓法。 代碼如下:

梯度下降的三種形式批量梯度下降隨機梯度下降以及批量梯度下降

梯度下降法的三種形式BGD、SGD以及MBGD   梯度下降法的三種形式BGD、SGD以及MBGD 閱讀目錄 1. 批量梯度下降法BGD 2. 隨機梯度下降法SGD 3. 小批量梯度下降法MBGD 4. 總結 在應用機器學習演

梯度下降的三種形式BGD(批量梯度下降)、SGD(隨機梯度下降以及MBGD(批量梯度下降

在應用機器學習演算法時,我們通常採用梯度下降法來對採用的演算法進行訓練。其實,常用的梯度下降法還具體包含有三種不同的形式,它們也各自有著不同的優缺點。   下面我們以線性迴歸演算法來對三種梯度下降法進行比較。   一般線性迴歸函式的假設函式為:          

pytorch手動實現梯度下降隨機梯度--基於logistic Regression並探索Mini batch作用

簡述 基於這次凸優化的大專案作業。 下面會圍繞著通過logistic Regression來做MNIST集上的手寫數字識別~ 以此來探索logistic Regression,梯度下降法,隨機梯度法,以及Mini batch的作用。 核心任務是實現梯度下降法和隨機梯度法。但是其他

隨機梯度下降(Stochastic Gradient Descent)批量梯度下降(Batch Gradient Descent )總結

梯度下降法常用於最小化風險函式或者損失函式,分為隨機梯度下降(Stochastic Gradient Descent)和 批量梯度下降(Batch Gradient Descent )。除此之外,還有梯度上升法(Gradient Ascent),應用於極大似

梯度下降(Batch Gradient Descent )梯度下降 (Mini-Batch GD)隨機梯度下降 (Stochastic GD)

一、梯度下降法   在機器學習演算法中,對於很多監督學習模型,需要對原始的模型構建損失函式,接下來便是通過優化演算法對損失函式進行優化,以便尋找到最優的引數。在求解機器學習引數的優化演算法中,使用較多的是基於梯度下降的優化演算法(Gradient Descen

深度學習中的三種梯度下降方式:批量(batch)隨機(stochastic)批量(mini-batch)

  1,批量梯度下降法(Batch Gradient Descent) :在更新引數時都使用所有的樣本來進行更新。   優點:全域性最優解,能保證每一次更新權值,都能降低損失函式;易於並行實現。   缺點:當樣本數目很多時,訓練過程會很慢。   2,隨機梯度下降法(Stoch

梯度下降演算法Python程式碼實現--批量梯度下降+隨機梯度下降+批量梯度下降

      在學習線性迴歸的時候很多課程都會講到用梯度下降法求解引數,對於梯度下降演算法怎麼求出這個解講的較少,自己實現一遍演算法比較有助於理解演算法,也能注意到比較細節的東西。具體的數學推導可以參照這一篇部落格(http://www.cnblogs.com/pinard/p

【深度學習】線性迴歸(二)批量隨機梯度下降及其python實現

文章目錄 概述 小批量隨機梯度下降 解析解和數值解 小批量隨機梯度下降 python實現 需要的先驗知識 程式碼和實驗 概述 本文

無約束演算法-最速下降牛頓擬牛頓共軛梯度求解二次函式極

import numpy as np import math a=np.random.randint(1,10,size=[100,1]) G=(a*a.T)+np.random.randint(1,5)*np.eye(100) b=np.dot(G,np.ones(