デュビデュバの技術ブログ

主に機械学習系の記事を書いていきます。コメント大歓迎です。よろしくお願いします。

Polyak Averaging

Polyak Averaging

Polyak Averagingは、最適化アルゴリズム中のパラメーター空間内のいくつかのポイントの平均化です。そのため、最適化中にポイント \theta_1, \theta_2... が得られた場合、Polyak Averagingは次のようになります。


\hat\theta_t = \frac{1}{t}\sum_{i=0}^t\theta_i \tag{1}

以下の図のようなイメージです。

Polyak Averaging
Figure 1. Polyak Averaging
Polyak Averaging
Figure 1. Polyak Averaging

Figure 1のように、最適化の際にステップ幅が大きすぎて最小値の点を通り越してしまった場合であっても、それらの点の平均をとることで赤の点のように、最小値に近い値を得ることができます。 このように、Polyak Averagingは凸関数の場合、強力な収束性をもちます。

Polyak-Ruppert Averaging

ディープラーニング最適化問題のほとんどは非凸であり、最適化アルゴリズムがたどる経路は非常に複雑です。イテレーションの最初の段階の点がパラメーター空間において現在の点からかなり離れている可能性があります。そのため、単純平均だけでは有効でないかもしれません。よって、より最適化が進んだ現在に近い点を重視するために、\hat\theta_t を加重平均します。


\hat\theta_t = \alpha\hat\theta_{t-1}+(1-\alpha)\hat\theta_t,\alpha\in[0, 1] \tag{2}

これにより最近のイテレーションが過去のものよりも加重されたパラメータが得られます。