深度學習算法優化背景知識---指數加權平均


背景:在深度學習優化算法,如:Momentum、RMSprop、Adam中都涉及到指數加權平均這個概念。為了系統的理解上面提到的三種深度學習優化算法,先着重理解一下指數加權平均(exponentially weighted averages)

定義

指數移動平均(EMA)也稱為指數加權移動平均(EWMA),是一種求平均數的方法,應用指數級降低的加權因子。 每個較舊數據的權重都呈指數下降,從未達到零。

m個數據的數據集\({[\theta_1,\theta_2,...,\theta_m]}\)

  • 平均數的一般求解方法:\(v_{aver} = \frac{\theta1+\theta2+...+\theta_m}{m}\) ;
  • 指數加權平均的求解方法:
    • 參數 \(\beta\), \(v_0 = 0\);
    • \(v_t = \beta v_{t-1} + (1-\beta)\theta_t\) :前t個樣本的平均數由前(t-1)個樣本的平均數和第t個樣本決定
符號 含義
\(\beta\) 參數
\(v_0\) 初始平均值
\(v_t\) 前t條記錄的平均值
\(\theta_t\) 第t條記錄值

舉例

有100天倫敦溫度記錄\({[\theta_1,\theta_2,...,\theta_{100}]}\),計算倫敦100天溫度平均值。如果\(\beta =0.9\)

計算公式:

展開公式:

即:\(v_{100} = 0.1\theta_{100} + 0.1*0.9 \theta_{99} + 0.1*(0.9)^2 \theta_{98} + ... + 0.1*0.9^{99}\theta_1\)

可以看出:各個記錄前的權重系數是以指數級下降的,但不為0。所以這種平均值的求解方法稱為指數加權平均

溫度平均值變化圖:

平均值

應用

主要用在深度學習優化算法中,用來修改梯度下降算法中參數的更新方法

在優化算法中,\(\frac{1}{1-\beta}\) 可以粗略表示指數加權平均考慮的樣本數[由於隨着樣本容量t的逐漸增多,其系數指數下降,對平均值的貢獻程度逐漸降低;影響平均值計算的幾個關鍵樣本就是最近幾天的樣本值,而這個樣本量可以通過\(\frac{1}{1-\beta}\) 來進行大致估算]。

Momentum

初始化:\(v_{dW} = np.zeros(dW.shape)\) ; \(v_{db} = np.zeros(db.shape)\) ----初始為0;分別與dW、db shape相同;

  • \(v_{dW}\)\(v_{db}\) 用來計算關於\(W\)\(b\) 梯度的平均值;

在第t次迭代中On iteration \(t\):

  • Compute \(dW\), \(db\) on the current mini-batch; 現在當前batch中計算\(dW\)\(db\) ;
  • \(v_{dW} = \beta v_{dW} + (1-\beta)dW\) 【計算關於\(dW\)的平均。解釋:dW看做是加速度,\(v_{dW}\) 下山速度, \(\beta\) 摩擦系數; momentum動量】
  • \(v_{db} = \beta v_{db} + (1-\beta)db\) 【計算關於\(db\)的平均】
  • **$W = W - \alpha v_{dW}, b=b-\alpha v_{db} \(** 【參數更新:用關於\)W\(、\)b$ 梯度的平均值來替換原來的\(dW\)\(db\)

超參數: \(\alpha, \beta\), ---\(\beta\) usually be 0.9. (a very robust number)

RMSprop

初始化:\(S_{dW} = np.zeros(dW.shape)\) ; \(S_{db} = np.zeros(db.shape)\) ----初始為0;分別與dW、db shape相同;

在t次迭代中On iteration \(t\):

  • Compute \(dW\),\(db\) on current mini-batch
  • \(v_{dW} = \beta v_{dW} + (1-\beta)(dW)^2\) ; \(v_{db} = \beta v_{db} + (1-\beta) (db)^2\) 【計算梯度平方的平均值】
  • \(W = W - \alpha \frac{dW} {\sqrt{v_{dW} + \epsilon}}\) ; \(b = b - \alpha \frac{db}{\sqrt{v_{db}+\epsilon}}\) 【參數更新:除以平方根;加上\(\epsilon\)防止開平方根過小】

Adam = Momentum + RMSprop

初始化:\(v_{dW} = np.zeros(dW.shape)\) ; \(S_{dW} = np.zeros(dW.shape)\) ; \(v_{db} = np.zeros(db.shape)\) \(S_{db} = np.zeros(db.shape)\) ; ----初始為0;分別與dW、db shape相同;【\(v_{dW}\)\(v_{db}\) 是Momentum算法;\(S_{dW}\)\(S_{db}\) 是RMSprop優化算法】

t次迭代過程On iteration \(t\):

  • Compute \(dW, db\) on current mini-batch;
  • \(v_{dW} = \beta_1v_{dW} + (1-\beta_1) dW\) , \(v_{db} = \beta_1 v_{db} + (1-\beta_1) db\) -----------"Momentum" 超參數:\(\beta_1\)
  • \(S_{dW} = \beta_2 S_{dW} + (1-\beta_2) (dW)^2\), \(S_{db} = \beta_2 S_{db} + (1-\beta_2) (db)^2\) ------------"RMSprop" 超參數:\(\beta_2\)
  • biases correction 偏差修正:
    • \(v_{dW}^{correct} = \frac {v_{dW}}{(1-\beta_1^t)}\) , \(v_{db}^{correct} = \frac {v_{db}}{(1-\beta_1^t)}\) ;
    • \(S_{dW}^{correct} = \frac {S_{dW}}{(1-\beta_2^t)}\) , \(S_{db}^{correct} = \frac {S_{db}}{(1-\beta_2^t)}\) ;
  • \(W = W - \alpha \frac{v_{dW}^{correct}}{\sqrt{S_{dW}^{correct}+ \epsilon} }\) , \(b = b - \alpha \frac{v_{db}^{correct}}{\sqrt{S_{db}^{correct} + \epsilon } }\) 【更新方法:結合Momentum和RMSprop優化算法】

問題及改正

存在問題

指數加權平均早期估算過程中存在:偏差

由於指數加權平均初始值\(v_0 = 0\)\(\beta = 0.9\)則:

  • \(v_1 = 0.9 * v_0 + 0.1*\theta_1 = 0.1\theta_1\)
  • \(v_2 = 0.9 * v_1 + 0.1 * \theta_2 = 0.09\theta_1 + 0.1\theta_2\)

就是說在平均值求解的剛開始幾次計算過程中,計算的平均值過小,偏差過大。表現在下面的圖里,綠線 是理想情況;紫線 是指數加權平均線。可以看出前幾次平均值紫線比綠線要高一些! 紫線早期過下,偏差過大。

改正方法

進行偏差糾正。

將計算的平均值結果除以\(1-\beta^t\),即\(v_t = \frac{v_t}{1-\beta^t}=\frac{\beta v_{t-1} + (1-\beta)\theta_t}{1-\beta^t}\) ;

從計算公式可以看出\(v_t\) 隨着計算樣本t的增大,不斷接近於沒有進行偏差糾正的指數加權平均值。在圖中表現就是隨着樣本的增大,紫線和綠線逐漸重合


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM