Edited at

ニューラルネットワークについてメモ

More than 1 year has passed since last update.

「ゼロから作るDeep Learning」でわかったことをメモ


損失関数(loss function)

ニューラルネットワークの性能の悪さの指標

ニューラルネットワークの学習は,勾配を手掛かりにパラメータの更新を行う.


二乗和誤差(mean squared error)

$y_k$はニューラルネットワークの出力数,$t_k$は教師データ,$k$はデータの次元数

ニューラルネットワークの出力は確率として解釈できる.$(0 \leq y_k \leq1)$

また$t_k$はone-hot表現.

E = \frac{1}{2}\sum_{k}(y_k-t_k)^2


交差エントロピー誤差(cross entropy error)

$\log$は底が$e$である.

$y_k$と$t_k$は二乗和誤差と同様.

出力$y_k$が1に近いほど誤差エントロピーは小さくなる.

E = -\sum_{k}t_k\log y_k


ミニバッチ学習

訓練データから一定数選び出した塊 = ミニバッチ

このミニバッチごとに学習を行う.


勾配法(gradient method)

勾配を利用して損失関数の最小値を探す.

現在の場所から,勾配方向に一定の距離進むということを繰り返して,関数の値を減らす.

正確には勾配降下法(gradient descent method)と呼ぶ.

x = x - \eta \frac{\partial f}{\partial x_0}

$\eta$は更新の量であり,学習率と呼ばれる.

このような人の手によって調整されるパラメータをハイパーパラメータと呼ぶ.


確率的勾配降下法(Stochastic Gradient Descent)

ミニバッチとして無作為に選んだデータに対して行う勾配降下法.


学習手順


0. 前提

適応可能な重みとバイアスが存在する.この重みとバイアスを訓練データに適用することが「学習」


1. ミニバッチ

訓練データの中からランダムにデータを一部取り出す.ミニバッチの損失関数の値を減らす.


2. 勾配の算出

ミニバッチの損失関数を求めるために,各重みパラメータの勾配を求める.


3. パラメータの更新

重みパラメータを勾配方向に更新する.


4.反復

1~3を繰り返す.

次回は,二層のニューラルネットについて実装を行う