在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

完善資料讓更多小伙伴認識你,還能領取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 :-)

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

原版梯度下降(Vanilla Gradient Descent)

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

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

delta = - learning_rate * gradient

theta += delta

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

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

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

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

動量(Momentum)

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

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

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

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

theta += delta (方程2)

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

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

delta = -learning_rate * sum_of_gradient (方程4)

theta += delta (方程5)

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

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

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

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

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

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

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

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

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

Adagrad 解決這個問題的思路是: 你已經更新的特征越多,你將來更新的就越少,這樣就有機會讓其它特征(例如稀疏特征)趕上來。用可視化的術語來說,更新這個特征的程度即在這個維度中移動了多少,這個概念由梯度平方的累積和表達。注意在上面的一步一步的網格插圖中,如果沒有重新縮放調整(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 的優點。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 適應不同方向的梯度的能力。這兩者的結合使它變得更強大。

結束語

現在我們已經討論了所有的方法,讓我們觀看幾個比賽,包含所有我們上面提到的下降方法!(有一些不可避免的參數挑選。最好自己玩一下)

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

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

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

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

審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 神經網絡
    +關注

    關注

    42

    文章

    4771

    瀏覽量

    100772
  • 函數
    +關注

    關注

    3

    文章

    4331

    瀏覽量

    62622
  • 機器學習
    +關注

    關注

    66

    文章

    8418

    瀏覽量

    132646

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

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

收藏 人收藏

    評論

    相關推薦

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

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

    如何更新權重實現梯度下降

    實現梯度下降
    發表于 07-15 10:09

    梯度下降法、牛頓法到擬牛頓法它們的聯系與區別是什么

    梯度下降法、牛頓法到擬牛頓法,淺談它們的聯系與區別
    發表于 05-21 11:06

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

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

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

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

    基于梯度下降法和互補濾波的航向姿態參考系統

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    PyTorch教程12.4之隨機梯度下降

    電子發燒友網站提供《PyTorch教程12.4之隨機梯度下降.pdf》資料免費下載
    發表于 06-05 14:58 ?0次下載
    PyTorch教程12.4之隨機<b class='flag-5'>梯度</b><b class='flag-5'>下降</b>
    主站蜘蛛池模板: 夜夜夜爽| 黄色免费网站在线观看| yy6080亚洲半夜理论一级毛片| 亚洲精品www| 三级视频欧美| 18岁禁黄色| xxx性欧美在线| 日韩一级片在线观看| 亚洲精品精品一区| 在线观看免费av网站| 三级精品在线观看| 一级黄色录像毛片| 亚洲综合区图片小说区| 欧美一级特黄乱妇高清视频| 天天摸夜夜摸爽爽狠狠婷婷97| 婷婷国产成人久久精品激情| 欧美一区二区三区精品| 手机在线免费视频| gay超刺激污文| 国产精品一区二区三区四区 | 国产永久免费爽视频在线| 中文天堂| 国产美女动态免费视频| 欧美另类丰满69xxxxx| 三级黄色在线视频| 天堂中文网| 在线天堂bt中文www在线| 国产亚洲综合色就色| 男人和女人做爽爽视频在线观看 | www亚洲欲色成人久久精品| 国产黄色小视频网站| 欧美三级视频网| 性夜影院午夜看片| xxxxxx日本人免费| 一女多夫嗯啊高h| 六月丁香色婷婷| 成年女人色费视频免费| 三级天堂| 国产成人午夜精品影院游乐网| 天天综合天天做天天综合| 午夜网站在线观看|