ディープラーニングの基礎

ディープラーニングは一般に多変数ベクトル値関数\( F \)を求める処理と考えられます。
$$ F(x_1, ..., x_m) = (y_1, ..., y_n) $$ サイズが28x28の手書きの数字の画像の文字認識をする場合、入力\( x_j \)は28x28=784次元のベクトルで、出力\( y_i \)は10次元のベクトルです。

上図の○をニューロンと呼び、○の縦の列をレイヤーと呼びます。この図では3層のレイヤーがあります。
左端のレイヤーは入力値をそのまま出力するレイヤーで、実際の計算は中央と右端のレイヤーがします。

出力値\( y_i \)がどれくらい正しいかを評価する関数として損失関数を使います。
損失関数にはいくつか種類がありますが以下の二乗誤差がよく使われます。
$$ E = \frac{1}{2} \sum_{i }^{ X } (y_i - a_i)^2 $$ ここで\( a \)は正解のベクトルで、数字の2の画像の場合は \( a = (0, 0, 1, 0, 0, 0, 0, 0, 0, 0) \) です。
二乗誤差の係数の \( \frac{1}{2} \) は微分の式が簡単になるために付けます。
$$ \frac{\partial E}{ \partial y_i } = y_i - a_i $$ 上記のように出力ベクトル\( y_i \)から正解のベクトル\( a_i \)を引いた値が微分になります。

関数\( F \)は内部にパラメータを持っていて、損失関数Eが小さくなるようにパラメータを少しずつ変化させていき、目的の関数を求めます。
パラメータ\( p_k \)を\( \Delta p_k \)だけ微小に変化させたとき、損失関数Eの変化値\( \Delta E \)は以下の近似式になります。
$$ \Delta E = E(p_1 + \Delta p_1, ..., p_n + \Delta p_n) - E(p_1, ..., p_n) \fallingdotseq \sum_{k} \Delta p_k \cdot \frac{\partial E}{ \partial p_k } $$ 微小な正の値αに対し、\( \Delta p_k = - \alpha \cdot \frac{\partial E}{ \partial p_k } \) とすると、\( \Delta E \fallingdotseq - \sum_k \alpha \) となります。
αは学習率(learning rate)と言います。

上記の方法でパラメータを少しずつ変化させて目的の関数を求める方法を 最急降下法と言います。

ディープラーニングでは多数の学習データの中からランダムに10個ぐらいの学習データを抜き出し、パラメータの偏微分 \( \frac{\partial E}{ \partial p_k } \)の平均値を求め、この平均値でパラメータを修正していきます。
この方法を 確率的勾配降下法 (stochastic gradient descent, SGD)と呼びます。
またランダムに抜き出した少数の学習データをミニバッチと呼びます。

ニューラルネットワークには様々な種類がありますが、 最も単純な多層パーセプトロンではニューロンの出力は以下の式で定義されます。
$$ u_{i} = \displaystyle \sum_{j }^{ X } x_{j} \cdot w_{i}^{j} + b_{i} \\ y_{i} = σ(u_{i}) $$ \( w_{i,k} \)をウエイト、\( b_i \)をバイアスと呼びます。
\( \sigma \)はシグモイド関数で以下の式で定義されます。 $$ \sigma (x) = \frac{1}{1+e^{-x}} $$ 多層パーセプトロンの各変数の偏微分は以下の式になります。
ここで\( δu_{i} \)は\( \frac{ \partial E }{ \partial u_i } \)の略で、 \( δy_{i}, δx_{i_j}, δw_{i}^{j}, δb_{i} \)も同様です。\( σ' \)は\( σ \)の微分です。
フレームワークはこれらの式を自動で計算します。
$$ δu_{i} = δy_{i} \cdot σ'(u_{i}) \\ δx_{i_j} = \displaystyle \sum_{i }^{ Y } δu_{i} \cdot w_{i}^{j} \\ δw_{i}^{j} = δu_{i} \cdot x_{i_j} \\ δb_{i} = δu_{i} $$ 関数\(F\)の最後のレイヤーの出力\(y\)の偏微分から、後ろ方向のレイヤーに順々に偏微分の値を計算できます。
この方法をバックプロパゲーション (誤差逆伝播法)と言います。

多層パーセプトロン以外に代表的なニューラルネットワークとして以下の物があります。
以下に各ニューラルネットワークの順伝播と逆伝播の式を計算したHTMLページがあります。このHTMLページはフレームワークが生成したものです。