15 - 做乜要識「指數加權平均」(Exponential Moving Average, EMA)?
訓練深度模型,好似揸車行高速公路:‣ 原始梯度=陣風,一下吹左一下吹右;‣ EMA=車嘅電子穩定系統,幫你撳住軚盤,唔畀你飄。
呢個平滑器唔止用喺 AI,日常都大派用場。以下用廣東話逐段講,例子夠貼地,讀完你就識得點揸穩部「數據車」。
🌡️ 生活暖身:三個「跳跳虎」數據
每日氣溫
春天時 22 °C → 28 °C → 19 °C,好難即時睇出升定跌。
股票收市價
Tesla 今日 260,聽日260,聽日 260,聽日275,再下一日 $255,散戶睇到眼花。
心率監測
跑步時手錶讀數 140 → 172 → 160 BPM,想知道真正趨勢要消噪。
EMA 幫你把雜訊壓低,抽出「最近趨勢」。
🧮 數學一眼睇
公式:
v_t = β · v_{t-1} + (1-β) · θ_t
符號拆解:
θ_t - 今次觀測(今日氣溫 / 今步梯度)
v_t - 今次平滑值
β - 「記性」係幾長 (0.9、0.99 常用)。
特性:
只要 上一個 v 就夠,唔使存成條歷史 → 記憶體零負擔。
β 越接近 1 → 越重視舊資料 → 曲線越滑。
有 偏差修正:
v^t=vt1−βt \hat v_t = \frac{v_t}{1-β^t}v^t=1−βtvt
尤其 t 細嘅時候幫你「補回」頭幾步被拉低嘅值。
🍵 直覺比喻:沖茶換水
每日你倒 10 % 舊茶,加 10 % 新茶葉同熱水:
β = 0.9 → 只換 10 % 味道;茶香改變慢,平滑。
β = 0.5 → 半壺倒走,今日茶味同昨日差好遠,反應快但波動大。
✏️ 手算示例(β = 0.9)
日子 | θ_t (氣溫) | v_t 計法 | v_t |
1 | 40 | 0.9·0 + 0.1·40 | 4.0 |
2 | 49 | 0.9·4 + 0.1·49 | 8.5 |
3 | 45 | 0.9·8.5 + 0.1·45 | 12.15 |
… | … | … | … |
溫度本身大上大落,EMA 緩緩向上,視覺上就係一條順滑曲線。
📊 同「移動平均」比一比
特徵 | Window 移動平均 | EMA |
需存幾多數據 | N 筆 | 1 筆 |
更新計算量 | O(N) | O(1) |
邊界效果 | 舊數據跌出窗口突變 | 無突變 |
適合即時 | 普通 | 非常好 |
🧭 在神經網絡嘅角色
Momentum Optimizer
v_t 儲存「梯度動量」,幫你衝過小坑、避震盪。
Adam / RMSProp
v_t 存梯度平方嘅 EMA,做自適應學習率。
BatchNorm / LayerNorm Moving Average
線上推斷時,用 EMA 記錄全局均值、方差。
Model EMA (Mean Teacher)
訓練時再開多一份權重θ_ema=EMA(θ),驗證用佢可提升 1~2% 準確率。
🌍 其他工程例子
領域 | 原始訊號 | EMA 用途 |
IoT 感測 | 溫濕度秒級讀數 | 濾掉雜訊觸發冷氣 |
網站運維 | 每秒 PV / CPU Load | 畫平滑曲線做 Auto-Scaling |
銀行風控 | 客戶刷卡額度 | 平滑 7 日平均找異常 |
遊戲開發 | 玩家 FPS | 動態調畫質防掉幀 |
行車儀 | 加速度計 | 平滑方向/剎車輸出餵控制器 |
🛠️ Python Demo(含偏差修正)
beta = 0.9
v = 0 # 初始化
for t, theta in enumerate(stream, 1):
v = beta * v + (1 - beta) * theta # EMA
v_hat = v / (1 - beta**t) # 偏差修正
print(f"step {t:03d} -> raw={theta:6.2f}, ema={v_hat:6.2f}")
一共 3 行就攪掂,丟任何串流數據都得。
⚙️ β 應該點揀?
β = 0.9 → 等效視窗 ≈ 1 / (1-β) = 10 步
β = 0.99 → 視窗 ≈ 100 步,更滑但反應慢
Rule of thumb:
‣ 梯度動量用 0.9–0.95
‣ 模型參數 EMA 用 0.99–0.999
想快啲追蹤突變 → 細 β;想超級平滑 → 大 β。
🚨 Debug 常見坑
忘記偏差修正 → 開頭幾步值偏細,尤其影響 Adam。
β 太高 → 模型突然轉 regime 仍見唔到更新,學習變遲鈍。
β 太低 → 平滑效果不足,曲線依然鋸齒。
梯度爆炸先平滑 → 先 Clip 再做 EMA,否則 v 會被極端值拖歪。
✅ 小結 - 你要袋返屋企嘅重點
指數加權平均 = 即時、低成本平滑器,一個變數搞掂。
β 調快慢:大 β 忽略新訊號,小 β 追得貼。
神經網絡處處見佢蹤影:Momentum、Adam、BN、Model EMA。
偏差修正 必不可少,早期值先準。
氣溫、股票、網站流量、IoT 感測、遊戲 FPS……只要係「連續時序」,EMA 都係你嘅萬用 Swiss-Army Knife。
掌握呢招,無論面對乜嘢跳跳虎數據,你都可以穩穩當當、一條直路咁衝向目標!🚀