- 什麼是優化器?
優化器,就是神經網絡進行反向傳播的時候,用於更新參數的策略,也就是梯度下降的算法。 - 優化器更新參數的步驟(4步):
a. 計算t時刻損失函數關於當前參數的梯度:g_t= ∆loss= ∂loss/(∂(w_t))
b. 計算t時刻一階動量m_t 和二階動量V_t (一階動量:與梯度相關的函數 二階動量:與梯度平方相關的函數)
c. 計算t時刻下降梯度:μ_t=lr∗ m_t⁄√(V_t )
d. 計算t+1時刻參數:w_(t+1)= w_t− μ_t= w_t−lr∗ m_t⁄√(V_t ) - 優化器的種類(不同優化器就是一階動量和二階動量的定義不同):
a. SGD(Stochastic Gradient Descent)(無momentum)最常用的梯度下降算法
b. SGDM(含momentum的SGD),在SGD基礎上增加一階動量
c. Adagrad,在SGD的基礎上增加二階動量
d. RMSProp,在SGD的基礎上增加二階動量
e. Adam,結合了SGDM一階動量和RMSProp二階動量
- 不同優化器的對比比較(比較的結果是對鳶尾花分類基礎上分類利用不同的優化器得到的結果)
下面的是筆者的微信公衆號,歡迎關注,會持續更新c++、python、tensorflow、機器學習、深度學習等系列文章