梯度下降法變種的彙總

2021-09-18 03:01:47 字數 2061 閱讀 2705

在各類優化方法中,梯度下降法(gradient descent)是最為常見的策略。這裡將對一些常見的梯度下降法的變種做乙個梳理。方便大家更好地理解梯度下降法的應用域。

假想乙個狀態,你在徒步中準備下山,你該怎麼走到谷底?這是乙個很顯然的問題,你會順著山梯度(弧度)最大的方向向下走,而並不會選擇繞彎。

而梯度下降法其實就是建立在這種十分貪心的企圖上,即通過找到梯度最大的方向移動乙個固定的距離(一般稱為step size)。但竟然是貪心,意味著它會有乙個問題,如下圖所示:如果你正在starting pt處嘗試下山,剛才的策略可能就會讓你找到乙個local minima了。這個問題是任何梯度下降法的變種都會遇到的問題。

引自 https://thinkingandcomputing....

梯度下降法可以描述為

$$vec_ = vec_ - alpha f'(vec_)$$

其中$f(x)$為所要優化的函式,$alpha$為步長。

我們現在來看梯度下降法的適用條件(為了簡單起見,在此只討論一維的情況)。顯然,上面的遞推公式即可以轉化為乙個疊函式數問題,即求:

$$gd(x) = x - alpha f'(x)$$

反覆迭代後,收斂的問題。顯然,如果$gd(x)$收斂,則收斂於不動點,即不動點$x_0$滿足:

$$gd(x_0) = x_0 = x_0 - alpha f'(x_0)$$

化簡可得

$$f'(x_0) = 0$$

顯然,這個迭代的結果就是函式$f(x)$的極值。現在,我們再來研究梯度下降法的條件。滿足該收斂於該不動點的條件是該點為吸引子,即滿足

$$|gd'(x)| < 1$$

化簡得$$0 < f''(x) < frac$$

顯然,$f(x)$必須為凸函式,並在定義域上滿足$f''(x) < frac$時,梯度下降法才有效。

步長的選擇

不是凸函式

座標下降法(coordinate descent)的策略相對而言是一種降低計算複雜度的方式,方法是每次只下降乙個方向(座標)的值。

來自wikipedia。

按是否設定步長可以分為兩種。

步驟:此外,座標下降法的另乙個非常好的迭代方法是,在迭代乙個x_i時,可以固定其他x的前提下,只計算$f(x_i) = f(x)$。此時,計算複雜度降低,且迭代速度也可以相對加快。

步驟:座標下降法在應對非平滑函式時會有很大的侷限,如下圖:

最後會在紅線交匯處就停止迭代了。

在實際3v大資料場景時,會遇到乙個常見問題,因為樣本數n的數量過大,導致每次迭代的計算代價非常大;並且如果做乙個實時的訓練模型,顯然,每次有新資料讀入時,樣本數都會增加,每次迭代的速度也會越來越慢。

因此,乙個比較好的策略就是隨機梯度下降法(stochastic gradient descent),即一次迭代只迭代乙個樣本。這樣做的好處是顯然的,但是,無法規避的,每次迭代loss function的變異就會很大,如下圖:

這樣,顯然收斂的方向是不定的,而且,很可能收斂速度非常慢。

乙個有效的替代方案是,每次迭代的樣本數增加到乙個很小的數量(通常被稱為mini-batch),這樣,有可以有效地增加收斂速度,這種方案也被稱為批梯度下降法((mini-)batch gradient descent)。當batch的數量增加時,模型的收斂速度加快,但是訓練速度會降低。

在訓練樣本時,採用此種方案之前必須保證資料是沒有任何順序特徵的,不然,會對訓練產生極大影響。

訓練的模型並非是最後一次迭代時訓練的結果最優,此時要注意採用一定策略選擇最優模型。

類別梯度下降

座標下降

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

場景基本場景、小資料

feature較多,平滑函式

大資料、實時訓練

策略尋找最大梯度方向,迭代

每次只迭代乙個座標

每次只迭代一(k < n)個樣本

缺點步長選擇,在維度、樣本量過大時速度較慢

非平緩函式失效

收斂具有一定的隨機性

梯度下降法和隨機梯度下降法

批量梯度下降法 batch gradient descent 在更新引數時使用所有的樣本來進行更新 隨機梯度下降法 stochastic gradient descent 求梯度時沒有用所有的m個樣本的資料,而是僅僅選取乙個樣本j來求梯度。小批量梯度下降法 mini batch gradient d...

梯度下降法

梯度下降法 是乙個一階 最優化演算法 通常也稱為 最速下降法 我之前也沒有關注過這類演算法。最近,聽史丹福大學的機器學習課程時,碰到了用梯度下降演算法求解線性回歸問題,於是看了看這類演算法的思想。今天只寫了一些入門級的知識。我們知道,函式的曲線如下 程式設計實現 c code cpp view pl...

梯度下降法

回歸 regression 梯度下降 gradient descent 發表於332 天前 技術,科研 被圍觀 1152 次 前言 這個系列主要想能夠用數學去描述機器學習,想要學好機器學習,首先得去理解其中的數學意義,不一定要到能夠輕鬆自如的推導中間的公式,不過至少得認識這些 式子吧,不然看一些相關...