確率的勾配降下法
定義
目的関数 $Q$ とラーニングレート $\alpha > 0$、バッチサイズ $m$、そして$i$番目のデータに対して、 $$ \omega_{n+1} := \omega_{n} - \alpha {{ 1 } \over { n }} \sum_{i=1}^{m} \nabla Q_{i} ( \omega_{n} ) $$ を確率的勾配降下法という。
説明
マシンラーニング
確率的勾配降下法はデータを扱う以上、必然的にマシンラーニングと深い関係を持つ。いくつかの言葉が慣れないかもしれないが、例を通して理解することがいい:
$x_{1}$ と $x_{2}$ が与えられたとき、$y$ を予測する問題があるとする。推測されるモデルは線形結合 $y = ax_{1} + bx_{2}$ だ。私たちのデータセットは約30兆個の観測値を含んでおり、それを処理するコンピュータのスペックが乏しいため、問題を少しずつ分けて解くとする。 $$ \begin{matrix} y & x_{1} & x_{2} \\ 5.2 & 2.0 & 0.9 \\ 2.1 & 1.2 & 0.0 \\ 9.0 & 3.8 & 1.3 \\ 6.7 & 3.7 & -0.5 \end{matrix} $$ たとえ上記のように$4$ 個のデータに分けて処理するならバッチサイズは$m=4$ になる。これは単なる例であり、問題は非常に単純で、目で見ても$a \approx 2, b \approx 1$ が答えであることがわかる。典型的な回帰分析問題なので、単に最小二乗法で解くこともできるが、理解を助けるためにわざわざ最適化技術で解くことを考えよう。
最適化技術にはまず目的関数が必要である。ここで、目的関数 $Q$ は次のように定義でき、私たちの目標は目的関数を最小にする$\omega = (a, b)$ を見つけることである。 $$ Q (a,b) := \left( ax_{1} + bx_{2} - y \right)^2 $$ ここで、私たちが関心を持つ変数が$a,b$ であることを再度思い出しておこう。与えられたデータに基づいて$a,b$ を見つけることは、次のように$i=1,\cdots , m$ 番目のデータに対する4つの関数を同時に考えることと同じである。 $$ Q_{1} (a,b) := \left( 2.0a + 0.9b - 5.2 \right)^2 \\ Q_{2} (a,b) := \left( 1.2a + 0.0b - 2.1 \right)^2 \\ Q_{3} (a,b) := \left( 3.8a + 1.3b - 9.0 \right)^2 \\ Q_{4} (a,b) := \left( 3.7a - 0.5b - 6.7 \right)^2 $$ ここで「確率的」という名前の動機が出てきた。確率論的な概念がないにも関わらず、確率的勾配降下法と呼ぶ理由は、通常このように選ばれるデータがランダムだからである。これに対する導関数の平均で新しい値をアップデートすることは、もちろん当然である。
勾配降下法?
確率的勾配降下法は式的に通常の勾配降下法と変わりない。本質的な違いはデータの有無であり、確率的勾配降下法から発展した最適化技術もデータを気にすることだけを覚えておけば良い。