小批量梯度下降演算法步驟 優化演算法之梯度下降演算法

2021-10-13 08:31:21 字數 1095 閱讀 6672

在應用機器學習演算法時,我們通常採用梯度下降法來對採用的演算法進行訓練。其實,常用的梯度下降法還具體包含有三種不同的形式,它們也各自有著不同的優缺點。

1.批量梯度下降法bgd

現在下面以lr演算法為例對這三種演算法從原理到**進行講解

由lr演算法可知lr演算法的損失函式為

損失函式j(θ)最小值時的θ則為要求的最佳引數。通過梯度下降法求最小值。θ的初始值可以全部為1.0,更新過程為:

其中(j表樣本第j個特徵(屬性),共n個特徵,alfa表示步長每次移動量大小可自由指定)

下面是偏導的求導過程:

結果:**

我們每一次的引數更新都用到了所有的訓練資料(比如有m個,就用到了m個),如果訓練資料非常多的話,是非常耗時的。

下面給出批梯度下降的收斂圖:

從圖中,我們可以得到bgd迭代的次數相對較少。

隨機梯度下降法sgd

由於批梯度下降每跟新乙個引數的時候,要用到所有的樣本數,所以訓練速度會隨著樣本數量的增加而變得非常緩慢。隨機梯度下降正是為了解決這個辦法而提出的。它是利用每個樣本的損失函式對θ求偏導得到對應的梯度,來更新θ:

更新過程如下:

隨機梯度下降是通過每個樣本來迭代更新一次,對比上面的批量梯度下降,迭代一次需要用到所有訓練樣本(往往如今真實問題訓練資料都是非常巨大),一次迭代不可能最優,如果迭代10次的話就需要遍歷訓練樣本10次。

但是,sgd伴隨的乙個問題是噪音較bgd要多,使得sgd並不是每次迭代都向著整體最優化方向。

隨機梯度下降收斂圖如下:

我們可以從圖中看出sgd迭代的次數較多,在解空間的搜尋過程看起來很盲目。但是大體上是往著最優值方向移動。

min-batch 小批量梯度下降法mbgd

我們從上面兩種梯度下降法可以看出,其各自均有優缺點,那麼能不能在兩種方法的效能之間取得乙個折衷呢?既演算法的訓練過程比較快,而且也要保證最終引數訓練的準確率,而這正是小批量梯度下降法(mini-batch gradient descent,簡稱mbgd)的初衷。

我們假設每次更新引數的時候用到的樣本數為10個(不同的任務完全不同,這裡舉乙個例子而已)

更新偽**如下:

拖了許久的梯度下降演算法更新完了,克服懶惰。。。

reference

小批量梯度下降演算法步驟 梯度下降演算法原理及推導

今天我們就來介紹用來優化代價函式的梯度下降演算法 gradient descent algorithm 1 原理 那梯度下降究竟為何方神聖?我來用最通俗的語言來介紹下 假設你站在華山之巔,你現在想以最快速度下山,那你肯定是找一條最陡峭的路走。你環顧四周,找到了一條路線,恩,這個方向是最陡的。於是你就...

小批量梯度下降演算法 python

coding utf 8 created on tue mar 13 20 49 03 2018 author import numpy as np from scipy import stats import matplotlib.pyplot as plt 產生訓練資料,生成模型為2 x 5 r...

批量梯度下降,隨機梯度下降,小批量梯度下降

在機器學習領域中,梯度下降的方式有三種,分別是 批量梯度下降法bgd 隨機梯度下降法sgd 小批量梯度下降法mbgd,並且都有不同的優缺點。下面我們以線性回歸演算法 也可以是別的演算法,只是損失函式 目標函式 不同而已,它們的導數的不同,做法是一模一樣的 為例子來對三種梯度下降法進行比較。假設 特徵...