yorhaha

yorhaha

深度學習優化器

優化器#

反向傳播#

反向傳播算法的主要思想:它通過計算損失函數對模型參數的梯度,然後使用梯度下降法來更新參數,以使損失函數最小化,模型逐漸逼近最優解。

實現過程包括兩個關鍵步驟:前向傳播和反向傳播。前向傳播計算網絡輸入經過各層的輸出,而反向傳播通過鏈式法則將損失函數對每個參數的梯度傳遞回網絡,以更新參數。這種迭代的過程使得神經網絡能夠逐漸學習到輸入與輸出之間的映射關係,從而提高網絡的預測性能。

反向傳播算法的基本思想是將損失函數在網絡中進行反向傳播,從輸出層向輸入層逐層計算並累積梯度。具體而言,算法從網絡的最後一層開始,計算輸出層的誤差梯度,然後將該梯度傳遞給前一層,依次迭代,直到傳播到輸入層。在每一層,根據鏈式法則,將當前層的梯度乘以該層的權重,然後傳遞給前一層。

反向傳播算法的步驟如下:

  1. 正向傳播:將輸入數據通過網絡前向傳播,計算輸出結果。
  2. 計算損失:將輸出結果與真實標籤進行比較,計算損失函數值。
  3. 反向傳播:從輸出層開始,根據損失函數計算輸出層的梯度,然後向前傳播計算每一層的梯度。
  4. 參數更新:使用梯度下降法或其他優化算法,根據計算得到的梯度更新網絡參數。
  5. 重複步驟 1-4,直到達到停止條件(如達到最大迭代次數或損失函數收斂)。

批量梯度下降(GD)#

θt=θt1αθ1Ni=1NJ(θ;x(i))\boldsymbol{\theta}_{\boldsymbol{t}}=\boldsymbol{\theta}_{\boldsymbol{t}-\mathbf{1}}-\alpha \nabla_{\boldsymbol{\theta}} \frac{1}{N} \sum_{i=1}^{N} J\left(\boldsymbol{\theta} ; x^{(i)}\right)

NN:所有樣本

隨機梯度下降(SGD)#

θt=θt1αθ1BSi=1BSJ(θ;x(i))\boldsymbol{\theta}_{\boldsymbol{t}}=\boldsymbol{\theta}_{\boldsymbol{t}-\mathbf{1}}-\alpha \nabla_{\boldsymbol{\theta}} \frac{1}{\text{BS}} \sum_{i=1}^{\text{BS}} J\left(\boldsymbol{\theta} ; x^{(i)}\right)

BS\text{BS}:小批量

Adagrad#

vt=vt1+gt2θt=θt1αgtvt+ϵv_t=v_{t-1}+g_t^2\quad \theta_t=\theta_{t-1}-\alpha\frac{g_t}{\sqrt{v_t+\epsilon}}

RMSProp#

vt=γvt1+(1γ)gt2θt=θt1αgtvt+ϵv_t=\gamma v_{t-1}+(1-\gamma)g_t^2 \quad \theta_t=\theta_{t-1}-\alpha\frac{g_t}{\sqrt{v_t+\epsilon}}

Adam#

mt=β1mt1+(1β1)gtvt=β2vt1+(1β2)gt2θt=θt1αmtvt+ϵm_t=\beta_1 m_{t-1} + (1-\beta_1)g_t\qquad v_t=\beta_2 v_{t-1}+(1-\beta_2)g_t^2\qquad \theta_t=\theta_{t-1}-\alpha\frac{m_t}{\sqrt{v_t+\epsilon}}

ϵ=109,β1=0.9,β2=0.999\epsilon=10^{-9},\beta_1=0.9, \beta_2=0.999

熱身:

m^t=mt/(1β1t)v^t=vt/(1β2t)\hat{m}_t=m_t/(1-\beta_1^t)\qquad \hat{v}_t=v_t/(1-\beta_2^t)
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。