深度學習入門(四)梯度更新演算法的選擇(附執行程式碼)
文章目錄
指數加權平均
本處參考:吳恩達的深度學習課程
梯度更新的演算法理解都要用到指數加權平均,所以這裡我們首先介紹下指數加權平均。關於每種更新演算法的詳解後續再做更新,先把框架搭好~
加權平均的公式
我們稱
為滑動平均值,我們以每日溫度為例,今日的滑動平均值等於昨天的滑動平均值的
倍加上近日氣溫的
倍
首先考慮
= 0.98,那麼滑動平均值相當於當天的氣溫佔比為0.02,
相當於50天的平均。
上述計算方式是因為權值如果小於
可以忽略不計,因而我們只需要證明
令
只需證明
利用在n趨於無窮時,
下圖紅線表示的是
也就是平均10天,而綠線表示
相當於平均50天。
綠色的曲線要平坦一些,原因在於多平均了幾天的溫度,所以這個曲線,波動更小,更加平坦。缺點是曲線進一步右移,因為現在平均的溫度值更多,要平均更多的值,指數加權平均公式在溫度變化時,適應地更緩慢一些,所以會出現一定延遲。相當於給前一天的值加了太多權重,只有0.02的權重給了當日的值,所以溫度變化時,溫度上下起伏,當
較大時,指數加權平均值適應地更緩慢一些。
我們考慮第100天的滑動平均值
最後可以推匯出
然後我們構建一個指數衰減函式,從
開始,到
,到
,以此類推。假設
,
約為0.35,約等於
,也就是說約10天后,衰減到初始權值的
,如果
= 0.98,則需要約50天也就是
到大概
另外,考慮到初始
= 0,所以初始的滑動平均值會有很大的誤差,因而會考慮使用
來代替
,這種方法稱為指數加權平均偏差修正。
指數加權平均的主要好處是:佔用記憶體少,只佔用一行程式碼,當然它並不是最精準的計算平均數的方法。
SGD
上文我們構建模型採用的梯度更新演算法是SGD