加權移動平均法:是對觀察值分別給予不同的權數,按不同權數求得移動平均值,並以最後的移動平均值為基礎,確定**值的方法。
採用加權移動平均法,是因為觀察期的近期觀察值對**值有較大影響,它更能反映近期變化的趨勢。
指數移動加權平均法:是指各數值的加權係數隨時間呈指數式遞減,越靠近當前時刻的數值加權係數就越大。
下面是一年 $365$ 天的溫度散點圖,以天數為橫座標,溫度為縱座標,可以看到各個小點分布在圖上,有一定的曲線趨勢,但是並不明顯。
指數加權平均的表示式如下:
$$v_ = \beta v_ + (1 - \beta)\theta_$$
其中,$\theta_$ 代表第 $t$ 天的溫度值,$\beta$ 表示加權下降的速率,其值越小下降的越快,$v_$ 為第 $t$ 天的移動加權平均值。
令 $v_ = 0$,將這個式子展開得:
$$v_ = \beta v_ + (1 - \beta)\theta_ \\
= \beta\bigg [ \beta v_ + (1 - \beta)\theta_ \bigg ] + (1 - \beta)\theta_ \\
= \beta^v_ + \beta(1 - \beta) \theta_ + (1 - \beta)\theta_\\
= \beta^\bigg [ \beta v_ + (1 - \beta)\theta_ \bigg ] + \beta(1 - \beta) \theta_ + (1 - \beta)\theta_ \\
= \beta^ v_ + \beta^(1 - \beta)\theta_ + \beta(1 - \beta) \theta_ + (1 - \beta)\theta_ \\
\cdots \\
= \beta^v_ + \beta^(1 - \beta)\theta_ + \beta^(1 - \beta) \theta_ + \cdots + (1 - \beta)\theta_ \\
= (1 - \beta) \sum_^\beta^\theta_$$
可以看到,計算第 $t$ 天的移動加權平均值 $v_$ 其實就是第 $1$ 天到第 $t$ 天每天溫度的加權和,每一天溫度的權重係數為
$$(1 - \beta)\beta^$$
$(1-\beta)$ 是乙個常數,由 $(1-\beta)^$
可知:天數越靠近 $t$,$t - i$ 越小,$(1-\beta)^$ 越大,即那一天溫度對應的權值越大。
$\beta$ 越大,後項收到前項的影響越大,越平滑,但是適應新變化更加困難。
重要性質:一般而言,$v_$ 是前 $\frac$ 天溫度的指數加權平均值。易知極限:
$$\lim_\left ( 1 - \varepsilon \right )^} = \frac$$
令$$1 - \beta = \varepsilon$$
因為 $\beta$ 是在 $0-1$ 之間,所以 $1-\beta$ 可以認為趨於 $0$,於是有
也就是說第 $t - \frac$ 天的溫度對 $v_$ 的影響已經不足 $\frac$ 了,在這之前的溫度影響都可以忽略了。
回到最初的那幅圖,如果我們要看出這個溫度的變化趨勢,很明顯需要做一點處理,我們用指數加權移動平均來平滑,取 $\beta = 0.9$,
然後計算出每個 $v_$ 來代替 $\theta_$,把所有的 $v$ 計算完之後畫圖,紅線就是 $v$ 的曲線:
紅色曲線第 $t$ 天的溫度就約等於前 $10$ 天溫度(藍色散點圖所記錄)的平均值。現在增大 $\beta$,將其值改為 $0.98$,那麼 $\frac$ = 50,
按照加權平均的性質,新的 $v_$ 就代表前 $50$ 天的平均溫度,求出所有 $v$ 值畫出曲線,如圖綠線所示:
可以明顯看到綠線比紅線的變化更遲,紅線達到某一溫度,綠線要過一陣子才能達到相同溫度。因為綠線是前 $50$ 天的平均溫度,變化就會
更加緩慢,而紅線
是最近 $10$ 天的平均溫度,只要最近 $10$ 天的溫度都是上公升,紅線很快就能跟著變化。
再看看另乙個極端情況:$\beta$ 等於 $0.5$,意味著 $v_$ 約為最近兩天的平均溫度,曲線為如下黃線:
可以看出黃色曲線和原本的溫度很相似,但曲線的波動幅度也相當大!
滑動平均模型和深度學習有什麼關係:
通常來說,我們的資料也會像上面的溫度一樣,具有不同的值,如果使用滑動平均模型,就可以使得整體資料變得更加平滑——這意味著資料的噪音會更少,
而且不會出現異常值。但是同時 $\beta$ 太大也會使得資料的曲線右移,和資料不擬合。需要不斷嘗試出乙個 $\beta$ 值,既可以擬合資料集,又可以減少噪音。
滑動平均模型在深度學習中還有另乙個優點:它只占用極少的記憶體。
當你在模型中計算最近十天(有些情況下遠大於十天)的平均值的時候,你需要在記憶體
中載入這十天的資料然後進行計算,但是指數加權平均值約等於最近十天的平均值,而且根據遞推公式,你只需要提供 $\theta_$ 這一天的資料,再加上 $v_$
的值和 $\beta$ 值,相比起十天的資料這是相當小的資料量,同時占用更少的記憶體。
偏差修正:當 $\beta$ 等於 $0.98$ 的時候,還是用回上面的溫度例子,曲線實際上不是像綠線一樣,而是像紫線:
注意到在紫線剛剛開始的時候,曲線的值相當的低,這是因為在一開始的時候並沒有前 $50$ 天的資料,而是只有寥寥幾天的資料,相當於少加了幾十天
的資料,所以 $v_$ 的值很小,這和實際情況的差距是很大的,也就是出現的偏差。修正方法是:
$$v_ = \frac + (1 - \beta)\theta_}}$$
隨著 $t$ 增加,$\beta^t$ 接近於 $0$,所以當 $t$ 很大的時候,偏差修正幾乎沒有作用,因此當 $t$ 較大的時候,紫線和綠線重合了。不過在開始學習
階段,偏差修正可以更好地**溫度。
指數加權移動平均
在學習吳恩達深度學習課程時,遇到 指數加權移動平均 這一概念,看似簡單,實則深奧。本文通過乙個excel示例,加深對其理解。以下為2021年2月份上海市日最高氣溫 表對應的折線圖。可以看出,折線圖中的溫度曲線起伏較大,十分 不平滑 那麼,有沒有辦法讓其更平滑呢?可以考慮使用指數加權移動平均法。注 e...
通俗解釋指數加權平均
前言 在深度學習優化演算法中,我們會涉及到指數加權平均這個概念,下面我將通過例子來一步一步引出這個概念。平均數求法 比如我們現在有100天的溫度值,要求這100天的平均溫度值。24,25,24,26,34,28,33,33,34,35 32。通過上面的公式就可以直接求出10天的平均值。而我們要介紹的...
2 2 2 指數加權平均
下面介紹一下比梯度下降更快的演算法,不過在這之前,你要了解指數加全平均。如1和2所示,指數加權實際上就是設定乙個權值。就像下圖所示 來計算是平均的多少天。如下圖所示 我們要算第100天的平均溫度可以寫成圖中下面0.9的指數形式。由上圖是每天的實際溫度,下面是0.1通過指數衰減過後的函式值。對於v 1...