優化器,SGD+Momentum;Adagrad;RMSProp;Adam

Optimization

?

隨機梯度下降(SGD):

當損失函數在一個方向很敏感在另一個方向不敏感時,會產生上面的問題,紅色的點以“Z”字形梯度下降,而不是以最短距離下降;這種情況在高維空間更加普遍。

SGD的另一個問題:損失函數容易卡在局部最優或鞍點(梯度為0)不再更新。在高維空間鞍點更加普遍

?

當模型較大時SGD耗費龐大計算量,添加隨機均勻噪聲時SGD需要花費大量的時間才能找到極小值。

?

SGD+Momentum:

帶動量的SGD,基本思想是:保持一個不隨時間變化的速度,并將梯度估計添加到這個速度上,在這個速度方向上前進,而不是隨梯度變化方向,給一個摩擦系數作為這個速度的衰減項。

?

這種方法解決了局部極小值和鞍點問題,盡管在局部極小值和鞍點任會有朝預定速度方向步進,且速度會隨著時間的速度增加。

?

普通的Momentum更新是先估計當前梯度向量,取其和速度向量的和的方向作為真實參數更新的方向

Nesterov Momentum則相反,先取得速度方向的步進,再估計當前位置的梯度,隨后回到原來位置,再根據兩者的和作為真實參數更新的方向。在凸優化問題有良好表現

?Nesterov Momentum不會劇烈的越過局部最小值

?

?

?AdaGrad:

?在優化過程中,需要保持一個在訓練過程中的每一步的梯度的平方和的持續估計;與速度項不同,梯度平方項在訓練時,會一直累加當前梯度的平方到這個梯度平方項,在更新參數向量時,會除以這個梯度平方項。

?

?當一個維度上的梯度更新很小時會除以很小的平方項,梯度很大時則會除以很大的平方項;在一個維度上(梯度下降很慢的)訓練會加快,在另一個維度方向上訓練減慢;讓各個參數得到相同程度的收斂。

隨著時間的推移,梯度更新的步長會越來越小(梯度平方項隨時間單調遞增);在學習目標是一個凸函數的情況下,效果很好,到達極值點,步長越來越小最終收斂;非凸函數則會變得復雜

?

?

?RMSProp:

?不僅加上平方項,并讓平方梯度按照一定比率下降,然后用1減去衰減了乘以梯度平方加上之前的結果。

隨著訓練的進行,步長會有一個良好的性質,與AdaGrad類似在一個維度上(梯度下降很慢的)訓練會加快,在另一個維度方向上訓練減慢,RMSProp讓梯度平方衰減了,可能會造成訓練一直在變慢。

?

?RMSProp會慢慢調整梯度更新方向,SGD效果不好,SGD+Momentum會先繞過極小值再朝極小值方向前進,AdaGrad在較小學習率時可能會卡住。(凸優化問題)

?

?

?Adam:

更新第一動量(類似SGD+Momentum中的速度)和第二動量(類似AdaGrad、RMSProp中的梯度的平方項)的估計值,第一動量的估計值等于梯度的加權和,第二動量的動態估計值是梯度平方的動態估計值,相當于速度項與梯度平方項的結合。

?

?在最初的第一步,第二動量的初始值為0,第一步之后衰減值beta2=0.9或0.99,第二動量還是接近于0,除以第二動量后會得到很大的步長,可能導致初始化到一個難以收斂的區域。1e-7為的是分母不為0。

?因此,Adam增加了一個偏置校正項避免出現開始時得到很大步長。

?

?一般網絡的都會使用Adam算法作為優化算法,它結合了SGD和RMSProp的優點。

?

?學習率的選擇:

?一般選擇學習率衰減策略,在訓練的開始選擇較大的學習率,然后隨著步長衰減或指數衰減。

?

?SGD+Momentum的學習率衰減很常見,Adam一般不使用學習率衰減,學習率衰減相當于二階超參數,在開始時不使用,在訓練達到一定瓶頸時再考慮使用。

?

?一階優化與二階優化:

?

?

?

L-BFGS是一個二階優化器

?

?Adam是大多數情況下的默認選擇,如果能承受整個批次的更新且沒有很多隨機性(如風格遷移),可以考慮L-BFGS

?

模型集成是提高測試集準確率的有效辦法,通常選擇一批不同的隨機初始值上訓練N個模型,測試時平均N個模型的結果,能夠緩解過擬合。

?

?

Q1:隨機梯度下降的隨機指得是什么?

Q2:嘗試解釋為什么Adam通常會是一個更好的選擇?(可以結合Momentum和RMSProb的優點解釋)

?

1.隨機梯度下降指的是從批量樣本中隨機選取一個樣本,按照該樣本梯度下降的方向進行梯度下降,
2.Adam的優點:可以解決局部最優和鞍點問題,且下降速度較快,平衡各特征梯度的大小

?

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

轉載于:https://www.cnblogs.com/Manuel/p/11041119.html

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

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

相關文章

iOS開發-平臺使用TestFlight進行Beta測試

使用 TestFlight,你可以向測試人員發布你 App 的 prerelease 版本來收集反饋信息,為將來發布 App 的正式版做準備。現在 TestFlight 是一個可選功能,你也可以不使用它,而是像以往發布 App 那樣直接提交到 appStore。 TestFlight 使…

QPixmap QImage 相互轉化

QPainter p(this); QPixmap pixmap; pixmap.load("E:\\參考文件\\image\\1.jpg"); //QPixmap->QImage QImage tempImage pixmap.toImage(); p.drawImage(0,0,tempImage); QImage image; image.load("E:\\參考文件\\image\\1.jpg"); //QImage->QPixm…

java語言介紹 —(1)

1.基礎常識 軟件:即一系列按照特定順序組織的計算機數據和指令的集合。分為:系統軟件 和 應用軟件 系統軟件:windows , mac os , linux ,unix,android,ios,… 應用軟件:word ,ppt,畫圖板,… 人機交互方式: 圖形化界面…

微信小程序入門資源整理(熱更新)

從零開始:微信小程序新手入門寶典《一》 傳送門地址: https://segmentfault.com/a/1190000008035180 微信小程序部分資源整理 傳送門地址:http://blog.csdn.net/u012995964/article/details/53116477

第一個java程序helloworld —(2)

1.開發體驗——HelloWorld 1.1 編寫 創建一個java源文件:HelloWorld.java class HelloChina{public static void main(String[] args){System.out.println("Hello,World!");} }1.2 編譯: javac HelloWorld.java 1.3 運行: java Hel…

高并發大流量專題---6、獨立圖片服務器的部署

高并發大流量專題---6、獨立圖片服務器的部署 一、總結 一句話總結: 獨立圖片服務器還是非常有必要的,可以很大程度的降低主服務器的io以及提升用戶訪問速度 1、獨立圖片服務器 獨立的必要性? 分擔Web服務器的I/O負載:將耗費資源的…

2017年蘋果公司開發者賬號申請與支付流程

鄧白氏編碼下來之后,現在我們就可以走到付款流程,購置賬號了!覺得有用的頂一下 1.登陸蘋果賬號,加入蘋果開發者 https://developer.apple.com/ 2.按照指示,一步步點擊進入就行了,反正你也看不懂&#xff08…

java關鍵字與標識符 —(3)

1.java關鍵字的使用 定義:被Java語言賦予了特殊含義,用做專門用途的字符串(單詞) 特點:關鍵字中所字母都為小寫 具體哪些關鍵字: 2.保留字:現Java版本尚未使用,但以后版本可能會作…

parentNode,parentElement,childNodes,children的區別

轉自鏈接,https://blog.csdn.net/CODING_1/article/details/78202693轉載于:https://www.cnblogs.com/RioPlus/p/11051630.html

2017年蘋果公司開發者賬號申請-公司鄧白氏編碼

申請公司的蘋果開發者賬號和企業級的蘋果開發者賬號時,都會用到鄧白氏編碼,也就是我們申請蘋果開發者賬號時需要填寫的D-U-N-S Number。 申請這個鄧白氏編碼是免費的,但是從像華夏鄧白氏公司提交申請到可以申請蘋果開發者賬號來用這個9位的D-…

java變量及進制問題 —(4)

1.變量的分類 1.1 按數據類型分類 詳細說明: //1. 整型:byte(1字節8bit) \ short(2字節) \ int(4字節) \ long(8字節) //① byte范圍:-128 ~ 127 // ② 聲明long型變量,必須以"l"或"L"結尾 // ③ 通常&…

Struts2的兩個蝴蝶飛,你好簡單開發(一)

我把你的頭像,設置成我的名字,此刻你便與我同在。我把你的名字,寫進我的代碼里面,以后,我的世界便存在著你。 “兩個蝴蝶飛”特別喜歡"java1234知識分享網"小峰的實用主義,所以本文及其系列文章均…

用Canvas畫圓環百分比進度條

<!DOCTYPE html> <html> <head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><title>canvas圓環進度</title><link rel"stylesheet" href"">…

java運算符 —(5)

1.算術運算符&#xff1a; - - * / % (前) (后) (前)-- (后)-- 【典型代碼】 //除號&#xff1a;/ int num1 12; int num2 5; int result1 num1 / num2; System.out.println(result1);//2 // %:取余運算 //結果的符號與被模數的符號相同 //開發中&#xff0c;經常使用%來…

利用SQL計算兩個地理坐標(經緯度)之間的地表距離

兩個地理坐標(經緯度)地表距離計算公式&#xff1a; 公式解釋如下&#xff1a; Long1,Lat1表示A點經緯度&#xff0c;Long2,Lat2表示B點經緯度&#xff1b;aLat1–Lat2 為兩點緯度之差&#xff0c;bLong1-Long2為兩點經度之差&#xff1b;6378.137為地球半徑&#xff0c;單位為…

HTTP 錯誤 404 - 文件或目錄未找到 - 最終解決方法

問題描述&#xff1a;http錯誤404&#xff0d;文件或目錄未找到問題原因&#xff1a;我遇到的情況是&#xff0c;先按裝了.NET&#xff0c;后裝的IIS&#xff1b;不確定其他原因也會不會產生類似錯誤。&#xff08;如果有&#xff0c;希望大家能貼出更多的原因&#xff0c;方便…

java流程控制及控制鍵盤輸出文字 —(6)

1.if-else條件判斷結構 1.1. 結構一&#xff1a; if(條件表達式){ 執行表達式 } 結構二&#xff1a;二選一 if(條件表達式){ 執行表達式1 }else{ 執行表達式2 } 結構三&#xff1a;n選一 if(條件表達式){ 執行表達式1 }else if(條件表達式){ 執行表達式2 }else if(條件表達式…

自執行匿名函數剖析整理

格式&#xff1a;&#xff08;function(){//代碼})();解釋&#xff1a;這是相當優雅的代碼&#xff08;如果你首次看見可能會一頭霧水&#xff1a;&#xff09;&#xff09;&#xff0c;包圍函數&#xff08;function(){})的第一對括號向腳本返回未命名的函數&#xff0c;隨后一…

爬蟲界又出神器|一款比selenium更高效的利器

提起selenium想必大家都不陌生&#xff0c;作為一款知名的Web自動化測試框架&#xff0c;selenium支持多款主流瀏覽器&#xff0c;提供了功能豐富的API接口&#xff0c;經常被我們用作爬蟲工具來使用。但是selenium的缺點也很明顯&#xff0c;比如速度太慢、對版本配置要求嚴苛…

java數組 —(7)

* 1.數組的理解&#xff1a;數組(Array)&#xff0c;是多個相同類型數據一定順序排列的集合&#xff0c;并使用一個名字命名&#xff0c; 并通過編號的方式對這些數據進行統一管理。 * 2.數組相關的概念&#xff1a; 數組名 元素 角標、下標、索引 數組的長度&#xff1a;元素…