深度学习中的随机梯度下降(SGD)简介
????????隨機(jī)梯度下降(Stochastic Gradient Descent, SGD)是梯度下降算法的一個(gè)擴(kuò)展。
????????機(jī)器學(xué)習(xí)中反復(fù)出現(xiàn)的一個(gè)問(wèn)題是好的泛化需要大的訓(xùn)練集,但大的訓(xùn)練集的計(jì)算代價(jià)也更大。機(jī)器學(xué)習(xí)算法中的代價(jià)函數(shù)通常可以分解成每個(gè)樣本的代價(jià)函數(shù)的總和。隨著訓(xùn)練集規(guī)模增長(zhǎng)為數(shù)十億的樣本,計(jì)算一步梯度也會(huì)消耗相當(dāng)成的時(shí)間。
????????隨機(jī)梯度下降的核心是:梯度是期望。期望可使用小規(guī)模的樣本近似估計(jì)。具體而言,在算法的每一步,我們從訓(xùn)練集中均勻抽出一小批量(minibatch)樣本B={x(1), …, x(m’)}。小批量的數(shù)目m’通常是一個(gè)相對(duì)較小的數(shù),從一到幾百。重要的是,當(dāng)訓(xùn)練集大小m增長(zhǎng)時(shí),m’通常是固定的。我們可能在擬合幾十億的樣本時(shí),每次更新計(jì)算只用到幾百個(gè)樣本。
????????梯度下降往往被認(rèn)為很慢或不可靠。優(yōu)化算法不一定能保證在合理的時(shí)間內(nèi)達(dá)到一個(gè)局部最小值,但它通常能及時(shí)地找到代價(jià)函數(shù)一個(gè)很小的值,并且是有用的。
????????有時(shí)提到SGD的時(shí)候,其實(shí)指的是Mini-Batch梯度下降。
????????在偽代碼中,隨機(jī)梯度下降可以表示如下:
????????批量梯度下降法(Batch Gradient Descent, BGD):是梯度下降法的最原始形式,每迭代一步或更新每一參數(shù)時(shí),都要用到訓(xùn)練集中的所有樣本數(shù)據(jù),當(dāng)樣本數(shù)目很多時(shí),訓(xùn)練過(guò)程會(huì)很慢。
????????隨機(jī)梯度下降法(Stochastic Gradient Descent, SGD):由于批量梯度下降法在更新每一個(gè)參數(shù)時(shí),都需要所有的訓(xùn)練樣本,所以訓(xùn)練過(guò)程會(huì)隨著樣本數(shù)量的加大而變得異常的緩慢。隨機(jī)梯度下降法正是為了解決批量梯度下降法這一弊端而提出的。隨機(jī)梯度下降是通過(guò)每個(gè)樣本來(lái)迭代更新一次。SGD伴隨的一個(gè)問(wèn)題是噪音較BGD要多,使得SGD并不是每次迭代都向著最優(yōu)化方向進(jìn)行。
????????小批量梯度下降法(Mini-BatchGradient Descent, MBGD):在每次更新參數(shù)時(shí)使用m’個(gè)樣本, m’可能遠(yuǎn)小于m。
????? ? 以上內(nèi)容主要摘自:《深度學(xué)習(xí)中文版》?和? 維基百科??
????? ? GitHub:?https://github.com/fengbingchun/NN_Test?
總結(jié)
以上是生活随笔為你收集整理的深度学习中的随机梯度下降(SGD)简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C++中的虚函数表介绍
- 下一篇: Go在windows10 64位上安装过