1. 程式人生 > >深度學習: 指數加權平均

深度學習: 指數加權平均

1. 指數加權平均

      指數加權平均是深度學習眾多優化演算法的理論基礎,包括Momentum、RMSprop、Adam等,在介紹這些優化演算法前,有必要對指數加權平均(exponentially weighted averages)做一個簡單的介紹,以期對後續的優化演算法的原理有所知曉。

       何為指數加權平均那? 

       現在想求一段時間內的平均溫度,給定一段時間的溫度序列 v_{1},v_{2},...,v_{n},加和平均結果為 (v_{1},v_{2},...,v_{n}) \ /\ n,每天溫度的權重都是相同的。進一步,若要根據平均氣溫預測明天的溫度,顯然昨天的溫度應該較30天之前的溫度權重大一些,因為越早的日期對於預測明天溫度所起到的作用越小,這符合我們的常規思維,因此給予每天的溫度不同的權重,這就引出了統計學中常用的一種平均方法——指數加權平均,平均溫度預測的指數加權平均形式如下:

       \theta _{t} = \beta * \theta _{t-1}\ +\ (1-\beta )*v_{t}

其中,\theta _{t} 代表第 t 天的平均溫度值,\beta 代表可調節的引數值。令 \theta _{0} = 0,上式遞推式展開如下:

       \theta _{0} = 0,

       \theta _{1} = (1-\beta )*v_{1}

       \theta _{2} = \beta * \ (1-\beta )*v_{1} + \ (1-\beta )*v_{2}

       \theta _{3} = \beta^{2} * \ (1-\beta )*v_{1} + \beta * \ (1-\beta )*v_{2} + \ (1-\beta )*v_{3}

       ......

      \theta _{t} = \beta^{t-1} * \ (1-\beta )*v_{1} + \beta^{t-2} * \ (1-\beta )*v_{2} + ... + \beta * (1-\beta ) * v_{t-1} + \ (1-\beta )*v_{t}

      可以看到,隨著日期的向後推移,溫度的權重以單位 \beta

 進行衰減。 當 \beta 為 0 時,平均氣溫的計算完全忽略歷史資訊,隨著 \beta 由 0 到 1 不斷增大,歷史溫度的權重衰減速度不斷降低。

      在吳恩達的深度學習課程中,英國每日溫度以及每日溫度的指數加權平均示意圖如下:     

 

                                             圖 1  β 為0.98(綠線),0.9(紅線)和0.02(黃線)時的指數加權平均值

     

      從上圖分析可得,當 β 為 0.98 時,指數加權平均減慢了對歷史溫度的衰減,因而納入了更多的歷史溫度資訊,導致綠線在上升階段的值小於紅線,且最高點滯後於紅線;當 β 為 0.9 時,似乎時根據歷史溫度預測明天溫度的最恰當的取值;當 β 為 0.02時,歷史溫度資訊幾乎沒有納入指數加權平均的計算中,更注重最近幾天的溫度。隨著 β 值的不斷減小,指數加權平均線的平滑度在不斷下降(時效性增強)。

 

2. 指數加權平均的偏差修正

       實際上,在圖2中,當 β 取0.98時,得到的曲線並非綠色,而是下圖的紫色曲線:

                                                                                    圖 2  β 為0.98的實際曲線(紫線)

       紫色曲線的值在開始上升的初始階段明顯小於綠色曲線,這是什麼原因那? 通過指數加權的遞推公式可以發現,最初幾天的溫度預測值不足歷史溫度的0.02,因而在預測前期會有一定的偏差。因此,引入偏差修正公式如下:

        \theta _{t}^{'}=\theta _{t} \ / \ (1-\beta ^{t})

       通過此修正公式,開始幾天的平均溫度預測值可以接近實際值,隨著 t 的增大,偏差修正公式會逐漸還原為修正之前的指數加權平均公式。

        在基於指數加權平均的深度學習優化演算法中, 如果你對初期的偏差修正比較重視,則可採用修正的指數加權平均公式,如果對初期的偏差修正不是特別在意,可以選擇馬虎的度過初始階段。總之,如果你關心初始時期的偏差,修正偏差能幫助你在早期獲得更好的估測。