一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

各種梯度下降法是如何工作的

深度學習自然語言處理 ? 來源:深度學習自然語言處理 ? 作者:深度學習自然語言 ? 2022-08-17 11:50 ? 次閱讀

導讀一圖勝千言,什么?還是動畫,那就更棒啦!本文用了大量的資源來解釋各種梯度下降法(gradient descents),想給大家直觀地介紹一下這些方法是如何工作的。

一圖勝千言,什么?還是動畫,那就更棒啦!

7b29c7a0-1dcd-11ed-ba43-dac502259ad0.gif

在一個表面上動畫演示5個梯度下降法: 梯度下降(青色) ,momentum(洋紅色) ,AdaGrad (白色) ,RMSProp (綠色) ,Adam (藍色)。左坑是全局極小值,右坑是局部極小值

在這篇文章中,我用了大量的資源來解釋各種梯度下降法(gradient descents),想直觀地介紹一下這些方法是如何工作的。通過我寫的一個梯度下降可視化工具(https://github.com/lilipads/gradient_descent_viz)的幫助,希望可以向你展示一些獨特的見解,或者至少是很多GIF :-)

我假設大家已經(jīng)對梯度下降在機器學習中的使用原因和方式有基本的了解。這里的重點是比較這些方法。如果你已經(jīng)熟悉了所有的方法,可以拉到底部觀看一些有趣的“賽馬”。

原版梯度下降(Vanilla Gradient Descent)

讓我們快速復習一下。在機器學習的場景下,梯度下降學習的目標通常是最小化機器學習問題的損失函數(shù)。一個好的算法能夠快速可靠地找到最小值(也就是說,它不會陷入局部極小值、鞍點或高原區(qū)域,而是尋找全局最小值)。

基本的梯度下降算法遵循的思想是,梯度的相反方向指向較低的區(qū)域。所以它在梯度的相反方向迭代。對于每個參數(shù) theta,它做如下操作:

delta = - learning_rate * gradient

theta += delta

Theta 是一些需要優(yōu)化的參數(shù)(例如,神經(jīng)網(wǎng)絡中神經(jīng)元與神經(jīng)元之間連接的權重,線性回歸特征的系數(shù),等等)。在機器學習優(yōu)化設置中可能有成千上萬個這樣的 thetas 。Delta 是算法中每次迭代后 theta 的變化量; 希望隨著每次這樣的變化,theta 逐漸接近最優(yōu)值。

7b7c66f4-1dcd-11ed-ba43-dac502259ad0.gif

由于人類的感知僅限于三維,在我所有的可視化中,假設我們只有兩個參數(shù)(或者 thetas)需要優(yōu)化,它們由圖中的 x 和 y 維表示。曲面是損失函數(shù)。我們要找到在曲面最低點的(x,y)組合。這個問題對我們來說是顯而易見的,因為我們可以看到整個曲面。但是這個球(下降算法)不能,它一次只能走一步,探索周圍的環(huán)境,就像在黑暗中只用手電筒走路一樣。

原版梯度下降法之所以叫原版,是因為它只按照梯度來執(zhí)行。下面的方法對梯度進行一些額外的處理,使其更快、更好。

動量(Momentum)

7ba0c3fa-1dcd-11ed-ba43-dac502259ad0.gif

帶有動量的梯度下降算法(簡稱動量)借鑒了物理學的思想。想象一下在無摩擦的碗里滾動一個球。沒有在底部停止,而是積累的動量推動它前進,球繼續(xù)前后滾動。

我們可以把動量的概念應用到我們的原版梯度下降算法中。在每個步驟中,除了常規(guī)的梯度之外,它還增加了前一步中的移動。在數(shù)學上,它通常表示為:

delta = - learning_rate * gradient + previous_delta * decay_rate (方程1)

theta += delta (方程2)

我發(fā)現(xiàn)如果我稍微修改一下這個方程,然后跟蹤(衰減的)累積梯度之和,會更直觀。當我們稍后引入 Adam 算法時,這也會使事情變得更簡單。

sum_of_gradient = gradient + previous_sum_of_gradient * decay_rate (方程3)

delta = -learning_rate * sum_of_gradient (方程4)

theta += delta (方程5)

(我所做的是分解出學習率。為了看到數(shù)學等價性,可以用-learning_rate * sum_of_gradient代替方程1中的delta 以得到方程3.)

7bb18dd4-1dcd-11ed-ba43-dac502259ad0.jpg

讓我們考慮兩個極端情況來更好地理解這個衰減率(decay rate)參數(shù)。如果衰減率為0,那么它與原版梯度下降完全相同。如果衰減率是1,那么它就會像我們開始提到的無摩擦碗的類比一樣,前后不斷地搖擺; 你不會想要這樣的結果。通常衰減率選擇在0.8-0.9左右,它就像一個有一點摩擦的表面,所以它最終會減慢并停止。

7bbfa9b4-1dcd-11ed-ba43-dac502259ad0.gif

那么,在哪些方面動量比原版梯度下降更好呢?在上面的比較中,你可以看到兩個優(yōu)點:

動量移動得更快(因為它積累的所有動量)

動量有機會逃脫局部極小值(因為動量可能推動它脫離局部極小值)。同樣,我們將在后面看到,它也將更好地通過高原區(qū)

AdaGrad

Adaptive Gradient 算法,簡稱 AdaGrad,不是像動量一樣跟蹤梯度之和,而是跟蹤梯度平方之和,并使用這種方法在不同的方向上調整梯度。這些方程通常用張量表示。我將避免使用張量來簡化這里的語言。對于每個維度:

sum_of_gradient_squared = previous_sum_of_gradient_squared + gradient2

delta = -learning_rate * gradient / sqrt(sum_of_gradient_squared)

theta += delta

7c342b22-1dcd-11ed-ba43-dac502259ad0.jpg

在機器學習優(yōu)化中,一些特征是非常稀疏的。稀疏特征的平均梯度通常很小,所以這些特征的訓練速度要慢得多。解決這個問題的一種方法是為每個特征設置不同的學習率,但這很快就會變得混亂。

Adagrad 解決這個問題的思路是: 你已經(jīng)更新的特征越多,你將來更新的就越少,這樣就有機會讓其它特征(例如稀疏特征)趕上來。用可視化的術語來說,更新這個特征的程度即在這個維度中移動了多少,這個概念由梯度平方的累積和表達。注意在上面的一步一步的網(wǎng)格插圖中,如果沒有重新縮放調整(1b) ,球大部分會垂直向下移動; 如果有調整(1d) ,它會沿對角線方向移動。

7c428a82-1dcd-11ed-ba43-dac502259ad0.gif

這個屬性讓 AdaGrad (以及其它類似的基于梯度平方的方法,如 RMSProp 和 Adam)更好地避開鞍點。Adagrad 將采取直線路徑,而梯度下降(或相關的動量)采取的方法是“讓我先滑下陡峭的斜坡,然后才可能擔心較慢的方向”。有時候,原版梯度下降可能非常滿足的僅僅停留在鞍點,那里兩個方向的梯度都是0。

RMSProp

然而,AdaGrad 的問題在于它非常慢。這是因為梯度的平方和只會增加而不會減小。Rmsprop (Root Mean Square Propagation)通過添加衰減因子來修復這個問題。

sum_of_gradient_squared = previous_sum_of_gradient_squared * decay_rate+ gradient2 * (1- decay_rate)

delta = -learning_rate * gradient / sqrt(sum_of_gradient_squared)

theta += delta

更精確地說,梯度的平方和實際上是梯度平方的衰減和。衰減率表明的是只是最近的梯度平方有意義,而很久以前的梯度基本上會被遺忘。順便說一句,“衰減率”這個術語有點用詞不當。與我們在動量中看到的衰減率不同,除了衰減之外,這里的衰減率還有一個縮放效應: 它以一個因子(1 - 衰減率)向下縮放整個項。換句話說,如果衰減率設置為0.99,除了衰減之外,梯度的平方和將是 sqrt (1-0.99) = 0.1,因此對于相同的學習率,這一步大10倍。

7c5c31f8-1dcd-11ed-ba43-dac502259ad0.gif

為了看到衰減的效果,在這個對比中,AdaGrad (白色)最初與 RMSProp (綠色)差不多,正如調整學習率和衰減率的預期。但是 AdaGrad 的梯度平方和累計得非常快,以至于它們很快變得非常巨大(從動畫中方塊的大小可以看出)。買路費負擔沉重,最終 AdaGrad 幾乎停止了。另一方面,由于衰變率的原因,RMSProp 一直將方塊保持在一個可控的大小。這使得 RMSProp 比 AdaGrad 更快。

Adam

最后但并非最不重要的是,Adam (Adaptive Moment Estimation)同時兼顧了動量和 RMSProp 的優(yōu)點。Adam在實踐中效果很好,因此在最近幾年,它是深度學習問題的常用選擇。

讓我們來看看它是如何工作的:

sum_of_gradient = previous_sum_of_gradient * beta1 + gradient * (1 - beta1) [Momentum]

sum_of_gradient_squared = previous_sum_of_gradient_squared * beta2 + gradient2 * (1- beta2) [RMSProp]

delta = -learning_rate * sum_of_gradient / sqrt(sum_of_gradient_squared)

theta += delta

Beta1是一階矩梯度之和(動量之和)的衰減率,通常設置為0.9。Beta2是二階矩梯度平方和的衰減率,通常設置為0.999。

7cb1d414-1dcd-11ed-ba43-dac502259ad0.jpg

Adam 的速度來自于動量和RMSProp 適應不同方向的梯度的能力。這兩者的結合使它變得更強大。

結束語

現(xiàn)在我們已經(jīng)討論了所有的方法,讓我們觀看幾個比賽,包含所有我們上面提到的下降方法?。ㄓ幸恍┎豢杀苊獾膮?shù)挑選。最好自己玩一下)

在這個地形中,有兩座小山阻擋了通往全局極小值的道路。Adam是唯一一個能夠找到通往全局極小值的算法。無論以哪種方式調整參數(shù),至少從這個起始位置開始,沒有任何其它方法可以到達那里。這意味著不管是動量還是自適應梯度都不能單獨做到這一點。這實際上是兩者的結合: 首先,動量使Adam越過了所有其它球停止的局部極小值點; 然后對梯度平方和的調整使其側向移動,因為這是一個未被探索的方向,導致了它的最終勝利。

這是另一場比賽。在這個地形中,圍繞著全局極小值有一個平坦的區(qū)域(高原)。通過一些參數(shù)調整,Momentum 和 Adam (多得其動量組件)可以到達中心,而其它方法不能。

總之,梯度下降法算法是一類通過梯度來尋找函數(shù)最小點的算法。原版梯度下降只遵循梯度(按學習速率進行調整)。改善梯度下降法的兩個常用工具是梯度之和(一階矩)和梯度平方之和(二階矩)。動量利用一階矩的衰減率來獲得速度。Adagrad 使用沒有衰減的二階矩來處理稀疏特征。Rmsprop 使用二階矩的衰減率來加速 AdaGrad。Adam同時使用一階矩和二階矩,通常是最好的選擇。還有一些其它的梯度下降算法,比如 Nesterov 加速梯度算法,AdaDelta 算法等等,在本文中沒有涉及。

最后,展示一下帶著沒有衰減的動量下降。它的路徑構成了一個有趣的模式。沒有什么實際的用處,但是在這里展示它只是為了好玩。

審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴

原文標題:梯度下降的可視化解釋(Adam,AdaGrad,Momentum,RMSProp)

文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    機器學習新手必學的三種優(yōu)化算法(牛頓法、梯度下降法、最速下降法

    法、梯度下降法、最速下降法)進行了介紹和比較,并結合算法的數(shù)學原理和實際案例給出了優(yōu)化算法選擇的一些建議。閱讀本文的基礎準備線性代數(shù)多變量微積分對凸函數(shù)的基本知識我們都知道,機器學習中最重要的內容之一
    發(fā)表于 05-07 08:30

    如何更新權重實現(xiàn)梯度下降

    實現(xiàn)梯度下降
    發(fā)表于 07-15 10:09

    梯度下降法、牛頓法到擬牛頓法它們的聯(lián)系與區(qū)別是什么

    梯度下降法、牛頓法到擬牛頓法,淺談它們的聯(lián)系與區(qū)別
    發(fā)表于 05-21 11:06

    接地電阻測試儀怎么使用電位下降法

    疊時,就可以測量電阻。在這種情況下,電阻區(qū)域外的所有體積都非常接近相同的電位,這樣就可以開發(fā)以下測量方法?! 〗拥仉娮铚y試儀怎么使用電位下降法  為了可以避免電極H的接地電阻引入誤差,使用了第三電極S。在
    發(fā)表于 12-03 17:11

    用基于計算機隨機模擬的下降法求解報童問題

    采用計算機隨機模擬加上傳統(tǒng)的梯度下降法,求解了報童每天賣報的期望收益最大的訂報量,并給出了迭代變化圖,結果表明此算法對于報童問題是相當有效的。對于企業(yè)訂貨等問
    發(fā)表于 09-16 10:49 ?7次下載

    基于梯度下降法和互補濾波的航向姿態(tài)參考系統(tǒng)

    針對微型無人機航向姿態(tài)參考系統(tǒng)低成本、小型化的工程實現(xiàn)需求,基于三軸陀螺儀、加速度計和磁力計,提出了一種在線實時姿態(tài)估計算法。該算法采用四元數(shù)描述系統(tǒng)模型,采用改進的梯度下降法預處理加速度計和磁力計
    發(fā)表于 11-16 10:29 ?15次下載
    基于<b class='flag-5'>梯度</b><b class='flag-5'>下降法</b>和互補濾波的航向姿態(tài)參考系統(tǒng)

    一種結合梯度下降法的二層搜索粒子群算法

    針對標準粒子群優(yōu)化(PSO)算法在求解復雜優(yōu)化問題中出現(xiàn)的早熟收斂問題,提出一種結合梯度下降法的二次搜索粒子群算法。首先,當全局極值超過預設的最大不變迭代次數(shù)時,判斷全局極值點處于極值陷阱中;然后
    發(fā)表于 11-27 17:28 ?5次下載
    一種結合<b class='flag-5'>梯度</b><b class='flag-5'>下降法</b>的二層搜索粒子群算法

    機器學習:隨機梯度下降和批量梯度下降算法介紹

    隨機梯度下降(Stochastic gradient descent) 批量梯度下降(Batch gradient descent) 梯度
    發(fā)表于 11-28 04:00 ?9169次閱讀
    機器學習:隨機<b class='flag-5'>梯度</b><b class='flag-5'>下降</b>和批量<b class='flag-5'>梯度</b><b class='flag-5'>下降</b>算法介紹

    一文看懂常用的梯度下降算法

    編輯:祝鑫泉 一 概述 梯度下降算法( Gradient Descent Optimization )是神經(jīng)網(wǎng)絡模型訓練最常用的優(yōu)化算法。對于深度學習模型,基本都是采用梯度下降算法來進
    發(fā)表于 12-04 18:17 ?1927次閱讀

    機器學習中梯度下降法的過程

    梯度下降法是一個用于尋找最小化成本函數(shù)的參數(shù)值的最優(yōu)化算法。當我們無法通過分析計算(比如線性代數(shù)運算)求得函數(shù)的最優(yōu)解時,我們可以利用梯度下降法來求解該問題。
    發(fā)表于 04-26 16:44 ?3502次閱讀

    梯度下降算法及其變種:批量梯度下降,小批量梯度下降和隨機梯度下降

    現(xiàn)在我們來討論梯度下降算法的三個變種,它們之間的主要區(qū)別在于每個學習步驟中計算梯度時使用的數(shù)據(jù)量,是對每個參數(shù)更新(學習步驟)時的梯度準確性與時間復雜度的折衷考慮。
    的頭像 發(fā)表于 05-03 15:55 ?2.2w次閱讀

    機器學習優(yōu)化算法中梯度下降,牛頓法和擬牛頓法的優(yōu)缺點詳細介紹

    梯度下降法實現(xiàn)簡單,當目標函數(shù)是凸函數(shù)時,梯度下降法的解是全局解。一般情況下,其解不保證是全局最優(yōu)解,梯度
    的頭像 發(fā)表于 08-04 11:40 ?5.2w次閱讀

    簡單的梯度下降算法,你真的懂了嗎?

    梯度下降算法的公式非常簡單,”沿著梯度的反方向(坡度最陡)“是我們日常經(jīng)驗得到的,其本質的原因到底是什么呢?為什么局部下降最快的方向就是梯度
    發(fā)表于 09-19 00:17 ?933次閱讀

    梯度下降法在機器學習中的應用

    梯度下降法沿著梯度的反方向進行搜索,利用了函數(shù)的一階導數(shù)信息。
    的頭像 發(fā)表于 05-18 09:20 ?1821次閱讀
    <b class='flag-5'>梯度</b><b class='flag-5'>下降法</b>在機器學習中的應用

    PyTorch教程12.4之隨機梯度下降

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程12.4之隨機梯度下降.pdf》資料免費下載
    發(fā)表于 06-05 14:58 ?0次下載
    PyTorch教程12.4之隨機<b class='flag-5'>梯度</b><b class='flag-5'>下降</b>