pytorch梯度下降函數_Pytorch中常用的四種優化器SGD、Momentum、RMSProp、Adam

361b5fd66a8fbd2689510710c4c48326.png
來源:AINLPer微信公眾號
編輯: ShuYini
校稿: ShuYini
時間: 2019-8-16

引言

????很多人在使用pytorch的時候都會遇到優化器選擇的問題,今天就給大家介紹對比一下pytorch中常用的四種優化器。SGD、Momentum、RMSProp、Adam。

隨機梯度下降法(SGD)

算法介紹

????對比批量梯度下降法,假設從一批訓練樣本

中隨機選取一個樣本
。模型參數為
,代價函數為
,梯度為
,學習率為
,則使用隨機梯度下降法更新參數表達式為:

???其中,

,
表示隨機選擇的一個梯度方向,
表示t時刻的模型參數。
,這里雖然引入了隨機性和噪聲,但期望仍然等于正確的梯度下降。

????基本策略可以理解為隨機梯度下降像是一個盲人下山,不用每走一步計算一次梯度,但是他總能下到山底,只不過過程會顯得扭扭曲曲。

算法評價

優點:

????雖然SGD需要走很多步的樣子,但是對梯度的要求很低(計算梯度快)。而對于引入噪聲,大量的理論和實踐工作證明,只要噪聲不是特別大,SGD都能很好地收斂。應用大型數據集時,訓練速度很快。比如每次從百萬數據樣本中,取幾百個數據點,算一個SGD梯度,更新一下模型參數。相比于標準梯度下降法的遍歷全部樣本,每輸入一個樣本更新一次參數,要快得多。

缺點:

????SGD在隨機選擇梯度的同時會引入噪聲,使得權值更新的方向不一定正確。此外,SGD也沒能單獨克服局部最優解的問題。

標準動量優化算法(Momentum)

算法介紹

????使用動量(Momentum)的隨機梯度下降法(SGD),主要思想是引入一個積攢歷史梯度信息動量來加速SGD。從訓練集中取一個大小為n的小批量

樣本,對應的真實值分別為
,則Momentum優化表達式為:

其中,

表示t時刻積攢的加速度。α表示動力的大小,一般取值為0.9(表示最大速度10倍于SGD)。
含義見SGD算法。
表示t時刻模型參數。

算法的理解

????動量主要解決SGD的兩個問題:一是隨機梯度的方法(引入的噪聲);二是Hessian矩陣病態問題(可以理解為SGD在收斂過程中和正確梯度相比來回擺動比較大的問題)。

????簡單理解:由于當前權值的改變會受到上一次權值改變的影響,類似于小球向下滾動的時候帶上了慣性。這樣可以加快小球向下滾動的速度。

RMSProp算法

算法介紹

????與動量梯度下降一樣,都是消除梯度下降過程中的擺動來加速梯度下降的方法。 梯度更新公式:

5e8c20c7ac63dadf01fd683289fdf17f.png

23354b25ce558f5f72a7b0e932aecd83.png

14b90d6ae6515e7ddd833931ab5864f3.png

e997a40ca8fd1a3e72336661a934141d.png

????更新權重的時候,使用除根號的方法,可以使較大的梯度大幅度變小,而較小的梯度小幅度變小,這樣就可以使較大梯度方向上的波動小下來,那么整個梯度下降的過程中擺動就會比較小,就能設置較大的learning-rate,使得學習步子變大,達到加快學習的目的。

????在實際的應用中,權重W或者b往往是很多維度權重集合,就是多維的,在進行除根號操作中,會將其中大的維度的梯度大幅降低,不是說權重W變化趨勢一樣。

????RMSProp算法在經驗上已經被證明是一種有效且實用的深度神經網絡優化算法。目前它是深度學習從業者經常采用的優化方法之一。

Adam算法

算法介紹

????Adam中動量直接并入了梯度一階矩(指數加權)的估計。其次,相比于缺少修正因子導致二階矩估計可能在訓練初期具有很高偏置的RMSProp,Adam包括偏置修正,修正從原點初始化的一階矩(動量項)和(非中心的)二階矩估計。Adam算法策略可以表示為:

b6a2a1744dcb327db9bbc2ffc003481d.png

????其中,

分別為一階動量項和二階動量項。
為動力值大小通常分別取0.9和0.999;
,
分別為各自的修正值。
表示t時刻即第t迭代模型的參數,
表示t次迭代代價函數關于W的梯度大小;?是一個取值很小的數(一般為1e-8)為了避免分母為0。

算法分析

????該方法和RMSProp很像,除了使用的是平滑版的梯度m,而不是原始梯度dx。推薦參數值eps=1e-8, beta1=0.9, beta2=0.999。在實際操作中,推薦Adam作為默認算法,一般比RMSProp要好一點。

算法比較

????為了驗證四種算法的性能,在pytorch中的對同一個網絡進行優化,比較四種算法損失函數隨著時間的變化情況。代碼如下:

opt_SGD=torch.optim.SGD(net_SGD.parameters(),lr=LR)
opt_Momentum=torch.optim.SGD(net_Momentum.parameters(),lr=LR,momentum=0.8)
opt_RMSprop=torch.optim.RMSprop(net_RMSprop.parameters(),lr=LR,alpha=0.9)
opt_Adam=torch.optim.Adam(net_Adam.parameters(),lr=LR,betas=(0.9,0.99))

b0c2f4d1e788b9aeef9b233fd5676f93.png

????SGD 是最普通的優化器, 也可以說沒有加速效果, 而 Momentum 是 SGD 的改良版, 它加入了動量原則. 后面的 RMSprop 又是 Momentum 的升級版. 而 Adam 又是 RMSprop 的升級版. 不過從這個結果中我們看到, Adam 的效果似乎比 RMSprop 要差一點. 所以說并不是越先進的優化器, 結果越佳。

參考:

https://blog.csdn.net/weixin_40170902/article/details/80092628

Attention

更多自然語言處理相關知識,還請關注AINLPer公眾號,極品干貨即刻送達。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/536988.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/536988.shtml
英文地址,請注明出處:http://en.pswp.cn/news/536988.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2019/02/11-分布式數據庫概述

分布式數據庫類型(1)同構同質型:各場地都是同一種類型的數據庫,如都是關系型數據庫,且都是同一型號的數據庫管理系統(2)同構異質型:各場地是同一種類型的數據庫,但是數據…

python計算無窮級數求和常用公式_傅里葉變換(二) 從傅里葉級數到傅里葉變換...

在上一部分當中,得到了利用三角函數表示周期函數的方法,但是對于非周期函數就...涼了。所以有什么辦法嗎?沒辦法(劃掉)。這時候我們就需要拿出來我們的黑科技——傅里葉變換。一、傅里葉級數的推廣當然這東西肯定不是憑…

中鳴投籃機器人怎么組裝_1000余人參加洛陽市青少年機器人競賽

機器人智能識別地面上的黑色線條,并沿著線條來到指定位置,放下“快遞包裹”;無人機在空中飛舞,時而鉆過圓環,時而來個空翻,猶如跳芭蕾般在空中劃過一道優美曲線;橘紅色乒乓球從筒道中送出&#…

Exchange隊列優先級介紹和配置

一、場景 在日常辦公環境中所有郵件都會存在重要與非重要的情況,并且不同的郵箱的使用人的級別也不一樣,不一樣的職位級別要求不一樣的運維等級,以及發送郵件要求的速度也不一樣。這就導致了郵件需要按照重要性進行分類,重要的郵件…

Mybatis源碼閱讀(一):Mybatis初始化1.3 —— 解析sql片段和sql節點

*************************************優雅的分割線 ********************************** 分享一波:程序員賺外快-必看的巔峰干貨 如果以上內容對你覺得有用,并想獲取更多的賺錢方式和免費的技術教程 請關注微信公眾號:HB荷包 一個能讓你學習技術和賺錢方法的公眾號,持續更…

IBM研究院計畫5年改變人類生活創新預測

IBM研究院近日發布未來5年將會改變人類生活方式的5項創新預測(IBM 5 in 5),包含透過數字分身(Digital Twin)農業將用更少的資源供給不斷增長的人口、區塊鏈能防范更多的食物浪費、用微生物基因組群保護人類受到有害細菌…

添加請求頭 retrofit_RxJava 與 Retrofit 結合的最佳實踐

前言RxJava和Retrofit也火了一段時間了,不過最近一直在學習ReactNative和Node相關的姿勢,一直沒有時間研究這些新東西,最近有個項目準備寫,打算先用Android寫一個Demo出來,卻發現Android的世界發生了天翻地覆的變化&am…

Mybatis源碼閱讀(二):動態節點解析2.1 —— SqlSource和SqlNode

*************************************優雅的分割線 ********************************** 分享一波:程序員賺外快-必看的巔峰干貨 如果以上內容對你覺得有用,并想獲取更多的賺錢方式和免費的技術教程 請關注微信公眾號:HB荷包 一個能讓你學習技術和賺錢方法的公眾號,持續更…

k8s邊緣節點_邊緣計算,如何啃下集群管理這塊硬骨頭?

導讀邊緣計算平臺,旨在將邊緣端靠近數據源的計算單元納入到中心云,實現集中管理,將云服務部署其上,及時響應終端請求。然而,成千上萬的邊緣節點散布于各地,例如銀行網點、車載節點等,節點數量甚…

Mybatis源碼閱讀(二):動態節點解析2.2 —— SqlSourceBuilder與三種SqlSource

*************************************優雅的分割線 ********************************** 分享一波:程序員賺外快-必看的巔峰干貨 如果以上內容對你覺得有用,并想獲取更多的賺錢方式和免費的技術教程 請關注微信公眾號:HB荷包 一個能讓你學習技術和賺錢方法的公眾號,持續更…

搞懂toString()與valueOf()的區別

一、toString() 作用:toString()方法返回一個表示改對象的字符串,如果是對象會返回,toString() 返回 “[object type]”,其中type是對象類型。 二、valueOf( ) 作用:valueOf房啊發返…

oracle入庫的速度能到多少_倒車入庫別練復雜了,其實就這兩點

教練總會讓學員反復練倒車入庫,但不少學員都會有這樣的疑惑:為什么每一次倒庫結果都不一樣,倒車入庫的練習重點是什么?倒車入庫是科二的重點及難點,但只要掌握以下兩個關鍵,順利通過真不難:01方…

Mybatis源碼閱讀(三):結果集映射3.1 —— ResultSetBuilder與簡單映射

*************************************優雅的分割線 ********************************** 分享一波:程序員賺外快-必看的巔峰干貨 如果以上內容對你覺得有用,并想獲取更多的賺錢方式和免費的技術教程 請關注微信公眾號:HB荷包 一個能讓你學習技術和賺錢方法的公眾號,持續更…

kdj買賣指標公式源碼_通達信指標公式源碼MACD背離KDJ背離指標

N1:5;N2:10;N3:21;N4:60;牛熊:EMA(CLOSE,N4),COLORGREEN,LINETHICK3;DIFF:EMA(CLOSE,12) - EMA(CLOSE,26);DEA:EMA(DIFF,8);A1:BARSLAST(REF(CROSS(DIFF,DEA),1)); B1:REF(C,A11)>C AND REF(DIFF,A11)DRAWTEXT(IF(B1>0,1,0),L-0.1,MACD底背),COLORGREEN;RSV:(CLOSE-LLV(L…

Mybatis源碼閱讀(三):結果集映射3.2 —— 嵌套映射

*************************************優雅的分割線 ********************************** 分享一波:程序員賺外快-必看的巔峰干貨 如果以上內容對你覺得有用,并想獲取更多的賺錢方式和免費的技術教程 請關注微信公眾號:HB荷包 一個能讓你學習技術和賺錢方法的公眾號,持續更…

18.requests

多多的的轉載于:https://www.cnblogs.com/yangyangchunchun/p/10368337.html

gridview獲取選中行數據_Word轉Excel,不想熬夜加班,那就掌握這個數據清洗方法...

私信回復關鍵詞【福利】~獲取豐富辦公資源,助你高效辦公早下班!小伙伴們,大家好,我是專治各種疑難雜「數」的農夫~今天,我就為大家介紹一種高效的數據清洗方法,助你告別熬夜加班,擁抱美好的夜晚…

如何深入學習python_菜鳥如何學好python

python在我國發展得如火如荼,因其操作簡單,應用廣泛受到很多人的喜歡。下面小編就來說說菜鳥如何學好python,一起來看看吧!1. 了解編程的基礎知識種是變量、編程規范、基本語法等,這也是開始編寫Python代碼的先決條件。第二種是數…

HTML5中本地儲存概念是什么,什么優點 ,與cookie有什么區別?

html5中的Web Storage 包括了兩種存儲方式: sessionStorage 和 localStorage. seessionStorage 用于本地存儲一個會話(session)中的數據,這些數據只有在同一個會話中的頁面才能訪問并且當會話結束后數據也隨之銷毀。因此session…

Mybatis源碼閱讀(三):結果集映射3.3 —— 主鍵生成策略

*************************************優雅的分割線 ********************************** 分享一波:程序員賺外快-必看的巔峰干貨 如果以上內容對你覺得有用,并想獲取更多的賺錢方式和免費的技術教程 請關注微信公眾號:HB荷包 一個能讓你學習技術和賺錢方法的公眾號,持續更…