強化学習、マルチエージェント強化学習、その他機械学習全般

機械学習関連のことをまとめていきます。強化学習関連が多いかもしれません

MENU

【数学】逐次的に平均値を求める

平均値を求めるときに、過去のすべてのデータを保存しておくのはメモリを食うので大変です。
そのため、今回は逐次的に平均値を求める方法を紹介します。

結論から言ってしまえば、平均値$\overline{x}_t = \frac{1}{t}(x_0+\cdots + x_t)$は以下のように表現できます。

$$ \begin{eqnarray} \overline{x}_t = \overline{x}_{t-1} + \frac{x_t-\overline{x}_{t-1}}{t} \end{eqnarray} $$ $x_t$は$t$時に得られた新しい値、
$\overline{x}_{t-1}$は$t-1$までの平均値を表しています。

つまり、新しい値を得た時の平均値は、過去のすべての要素を保存していなくても、これまでの平均値だけ保存していれば計算できるということになります。

では、どうして上記の式が成り立つか式を展開してみましょう。

$$ \begin{eqnarray} \overline{x}_t &=& \frac{1}{t}(x_0+\cdots + x_{t-1} + x_t) \\ &=& \frac{1}{t}(\underbrace{\frac{x_0+\cdots + x_{t-1}}{t-1}}_{\overline{x}_{t-1}}(t-1)+ x_t) \\ &=& \frac{1}{t}(\overline{x}_{t-1}(t-1)+ x_t) \\ &=& \overline{x}_{t-1} + \frac{x_t-\overline{x}_{t-1}}{t} \end{eqnarray} $$

最初に示した式が導出できました。