神經網路梯度下降優化演算法及初始化方法小結
An overview of gradient descent optimization algorithms and Weight initialization methods.
神經網路重要的一點就是調參煉丹,這裡複習一下網路的初始化方法及優化方法。
然而知道這些並沒有什麼用, 平時多實驗才是王道
1 網路優化方法
這裡主要說明一些關於梯度下降的方法,梯度下降顧名思義就是按照梯度來更新引數
優化方法有很多,caffe中支援下面幾種:
- SGD stochastic gradient descent
- AdaDelta
- Adam
- Nesterov
- RMSProp
1.1 SGD
梯度下降的方法有很多
其中用全部資料來進行梯度下降的稱為Batch Gradient Descent,這種方法的缺點是更新慢而且記憶體需求大
其優化方式可以看為:
params = params - learning_rate * params_grad
顯然上面的資料使用方法不適合大資料的使用,於是可以每次只取一個或者一部分樣本進行訓練,現在我們常用是Mini Batch Gradient Descent 但是下文仍然稱為SGD,SGD有些時候是用來描述每次只取一個樣本的方法,Mini Batch Gradient Descent 比起每次隨機取一個樣本的方法 訓練波動更小,更加穩定,更加高效,這基本上是最常用的一種優化方法,雖然沒有很多技巧但是比較穩定
1.2 Momentum
其更新公式如下:
sgd的公式可以看為
可以看出momentum考慮了之前一次更新,如果每次更新方向一致,那麼其更新的速度會越來越快,如果方向改變,則會降低更新速度,eta可以看成摩擦因子一樣的因子,相比sgd,理論上momentum可以減少動盪,加快收斂
1.3 Nesterov
Nesterov 認為我們更新的時候應該考慮前面的位置
與moment的區別可以視為:
momentum首先計算一個梯度(短的藍色向量),然後在加速更新梯度的方向進行一個大的跳躍(長的藍色向量),nesterov項首先在之前加速的梯度方向進行一個大的跳躍(棕色向量),計算梯度然後進行校正(綠色梯向量)
1.4 Adagrad
之前每次更新所有引數的學習率都是一樣的,Adagrad是用不同的學習率更新不同的引數
\epsilon 常取1e-8等數用來避免分母為0
G_t 是一個對角矩陣,對應\theta_i梯度的平方和
可以看出式中分母是不斷增加的,隨著梯度的增多學習率逐漸減少
1.5 Adadelta
adadelta將adagred分母中的平方累加替換為了權重均值
這樣一來分母中累計項離當前時間點比較近的項,同時論文中利用近似的牛頓法生成了下式,不在需要手動設定eta:
1.6 RMSprop
RMSprop 出自 Geoff Hinton的課件
可以看成是adadelta的特例
相關推薦
神經網路梯度下降優化演算法及初始化方法小結
An overview of gradient descent optimization algorithms and Weight initialization methods. 神經網路重要的一點就是調參煉丹,這裡複習一下網路的初始化方法及優
神經網路梯度下降演算法的demo
from sklearn.model_selection import train_test_split from sklearn.metrics import classification_report from sklearn.datasets import make_b
深度學習必備:隨機梯度下降(SGD)優化演算法及視覺化
補充在前:實際上在我使用LSTM為流量基線建模時候,發現有效的啟用函式是elu、relu、linear、prelu、leaky_relu、softplus,對應的梯度演算法是adam、mom、rmsprop、sgd,效果最好的組合是:prelu+rmsprop。我的程式碼如下: # Simple examp
神經網路梯度下降演算法綜述
本文主要參考(大部分翻譯)自論文《An Overview of Gradient Descent Optimization Algorithm》 3.Challenge 通常來說,mini-batch gradient descent演算法在應用的時候,
深度學習中的梯度下降優化演算法綜述
1 簡介 梯度下降演算法是最常用的神經網路優化演算法。常見的深度學習庫也都包含了多種演算法進行梯度下降的優化。但是,一般情況下,大家都是把梯度下降系列演算法當作是一個用於進行優化的黑盒子,不瞭解它們的優勢和劣勢。 本文旨在幫助讀者構建各種優化演算法的直觀理解,以幫助你在訓練神經網
神經網路中的優化演算法
什麼是優化演算法? 給定一個具有引數θ的目標函式,我們想要找到一個θ使得目標函式取得最大值或最小值。優化演算法就是幫助我們找到這個θ的演算法。 在神經網路中,目標函式f就是預測值與標籤的誤差,我們希望找到一個θ使得f最小。 優化演算法的種類
BP神經網路的各種優化演算法
loss一直在波動,沒有收斂的趨勢,以為自己訓練有問題, 後來看了SGD的介紹,再瞭解這屬於正常的,具體看下面介紹吧。 ==========================================================================
2017年深度學習--梯度下降 優化演算法研究
原文連結 【導讀】梯度下降演算法是機器學習中使用非常廣泛的優化演算法,也是眾多機器學習演算法中最常用的優化方法。幾乎當前每一個先進的(state-of-the-art)機器學習庫或者深度學習庫都會包括梯度下降演算法的不同變種實現。但是,它們就像一個黑盒優化器,
卷積神經網路中的優化演算法比較
卷積神經網路一般力求能夠做到 end to end 的訓練, end to end 訓練也是目前深度學習的主流. 訓練中主要採用 Back Propagation 演算法, 而 BP 演算法是我們早就學過的梯度下降演算法的一種實現. 因此, CNN 中的各種優化演算法還是
BP神經網路 如何進行權值的初始化
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
BP神經網路 如何進行權值的初始化
如果以面向物件(OOP)的方式進行BP神經網路系統的設計與實踐的話,因為權值的初始化以及類的構造都只進行一次(而且發生在整個流程的開始階段),所以自然地將權值(全部層layer之間的全部權值)初始化的過程放在類的構函式中,而權值的初始化,一種trivial常用的初始化
BP神經網路——如何進行權值的初始化
如果以面向物件(OOP)的方式進行BP神經網路系統的設計與實踐的話,因為權值的初始化以及類的構造都只進行一次(而且發生在整個流程的開始階段),所以自然地將權值(全部層layer之間的全部權值)初始化的過程放在類的構函式中,而權值的初始化,一種trivial常用的
網上的好文章:C++ vector容器型別及初始化方法
vector類為內建陣列提供了一種替代表示,與string類一樣 vector 類是隨標準 C++引入的標準庫的一部分 ,為了使用vector 我們必須包含相關的標頭檔案 : #include <vector> 使用vector有兩種不同的
LCD1602主要引數,引腳功能及初始化方法
LCD1602主要引數,引腳功能 及初始化方法 LCD1602液晶 顯示模組基本技術: 1)、主要功能 A、 40通道點陣LCD 驅動; B、 可選擇當作行驅動或列驅動; C、 輸入/輸出訊號
神經網路梯度消失和梯度爆炸及解決辦法
關注微信公眾號【Microstrong】,我現在研究方向是機器學習、深度學習,分享我在學習過程中的讀書筆記!一起來學習,一起來交流,一起來進步吧!目錄:(1)神經網路梯度消失與梯度爆炸(2)幾種啟用函式的比較一、神經網路梯度消失與梯度爆炸(1)簡介梯度消失與梯度爆炸層數比較多
吳恩達機器學習(第十章)---神經網路的反向傳播演算法
一、簡介 我們在執行梯度下降的時候,需要求得J(θ)的導數,反向傳播演算法就是求該導數的方法。正向傳播,是從輸入層從左向右傳播至輸出層;反向傳播就是從輸出層,算出誤差從右向左逐層計算誤差,注意:第一層不計算,因為第一層是輸入層,沒有誤差。 二、如何計算 設為第l層,第j個的誤差。
吳恩達機器學習 - 神經網路的反向傳播演算法 吳恩達機器學習 - 神經網路的反向傳播演算法
原 吳恩達機器學習 - 神經網路的反向傳播演算法 2018年06月21日 20:59:35 離殤灬孤狼 閱讀數:373
神經網路的引數優化方法
轉載自:https://www.cnblogs.com/bonelee/p/8528863.html 著名: 本文是從 Michael Nielsen的電子書Neural Network and Deep Learning的深度學習那一章的卷積神經網路的引數優化方法的
(轉載)深度學習基礎(3)——神經網路和反向傳播演算法
原文地址:https://www.zybuluo.com/hanbingtao/note/476663 轉載在此的目的是自己做個筆記,日後好複習,如侵權請聯絡我!! 在上一篇文章中,我們已經掌握了機器學習的基本套路,對模型、目標函式、優化演算法這些概念有了一定程度的理解,而且已經會訓練單個的感知器或者
Logistic迴歸之梯度上升優化演算法(二)
Logistic迴歸之梯度上升優化演算法(二) 有了上一篇的知識儲備,這一篇部落格我們就開始Python3實戰 1、資料準備 資料集:資料集下載 資料集內容比較簡單,我們可以簡單理解為第一列X,第二列Y,第三列是分類標籤。根據標籤的不同,對這些資料點進行分類。