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