---
# System prepended metadata

title: Stochastic Weight Averaging (SWA) &  Exponential Moving Average(EMA)
tags: [Stochastic Weight Averaging, Exponential Moving Average]

---

# Stochastic Weight Averaging (SWA) &  Exponential Moving Average(EMA)
- - - - -

整理by: Shirley Wang

- - - - - 
## SWA

> SWA是一種最佳化演算法，改進模型的泛化能力。

* 取多個迭代點的值進行平均，以取代單一迭代點的參數，提高模型泛化能力。

與SGD相比，雖然SWA在訓練時損失較高，但是在測試集的表現較，代表SWA擁有較好的泛化能力。
### SWA~params~ =  1/t$\Sigma$^T^~t=1~$\theta$~t~
* SWA~params~是SWA版本的模型参數
* T 是保存的迭代點的数量
* t 是迭代點的模型参数

### pytorch





## EMA
> EMA 是一種優化技巧，在訓練神經網路時，主用來提高模型的穩定性以及泛化能力

* 模型在訓練過程中可能會發生劇烈波動，此變化可能會使訓練過程不穩定，難以收斂。因此使其平滑化，可穩定訓練。
* 透過平滑化可以減少過擬合，增加泛化能力。

### W~shadowt~ = $\alpha$ $*$ W~shadowt-1~ + (1 - $\alpha$) $*$ W~t~ 

* W~shadow~代表EMA權重
* W~t~為模型權重
* $\alpha$代表衰退率
舉Momuntum優化器為例: V~t~= $\beta$~vt-1~ + (1-$\beta$)dW 每一次的梯度更新都會受到前幾次的梯度影響，當梯度發生較大變化時，之前的權重可以抑制變化過大的情形，以達到平滑化的效果。

