はじめに
これは機械学習におけるミニバッチ学習についてのメモです。機械学習の直観的な説明も兼ねています。
機械学習とは
機械学習はある与えたれたデータに内在すると仮定される規則を自動的に抽出する演算装置です。つまり、ある入力の組$ \boldsymbol{x}$に対して出力$\boldsymbol{t}$が既に得られているとき、そこに存在する規則を抽出することで、新たな入力の組$\boldsymbol{x}^{\prime}$に対応する$\boldsymbol{t}^{\prime}$を予想します。
この規則なるもの(重みと呼びます)を一般に行列$W$とすると、上の話は機械学習の出力$\boldsymbol{y}$(理想的には$\boldsymbol{t}$と一致するべき)を$$ \boldsymbol{y} = W \boldsymbol{x}\tag{1}$$としたとき$\boldsymbol{y}$と$\boldsymbol{t}$から求まる損失関数$$ L = \frac{1}{2}||\boldsymbol{y}(\boldsymbol{x},W)-\boldsymbol{t}||^{2}\tag{2}$$を可能な限り小さくするような$W$を求めるということに置き換えられます。
ビッグデータとミニバッチ学習
さて、改めてビッグデータ$(\boldsymbol{x}_{n},\boldsymbol{t}_{n})$が得られたとします($n=1,2,\cdots,N$で$N$は十分大きい)。ここから重み$W$を抽出して出力が未知の入力$\boldsymbol{x}^{\prime}$に対して相応しい出力$\boldsymbol{t}^{\prime}$を予測します。そのために$\boldsymbol{x}_{n}$すべてに対する2乗和誤差
$$\frac{1}{N} \sum_{n=1}^{N}||\boldsymbol{y}_{n}(\boldsymbol{x}_{n},W)-\boldsymbol{t}_{n} ||^{2} \tag{3}$$を最小とするような$W$を求めます。例えば、勾配降下法などの手法があります。
今、扱っているビッグデータのスケールは$N(\gg 1)$なので、たとえコンピュータといえど$W$を求めるために$n=1$から$N$まで愚直に微分計算をしていたのでは、計算量が膨大となり賢い方法とは言えません。そこで$N$のうち$M (\ll N)$個だけランダムにデータを取り出してこれに対して$$ \frac{1}{M} \sum_{m=1}^{M}||\boldsymbol{y}_{m}(\boldsymbol{x}_{m},W)-\boldsymbol{t}_{m} ||^{2} \tag{4}$$を最小化することで、(3)のやり方に対して圧倒的に効率よく$W$を決定することができます。こうして得られた$W$は、与えられた全てのデータから求まったわけではありませんが、もとのデータのもつ規則の良い近似となっていることが多いです。このような学習手法をミニバッチ学習と呼びます。
※学習とはすなわち$W$を決定すること。具体的な実装はまた次に。