LoginSignup
3
4

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-07-16

「ゼロから作る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を繰り返す.

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

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4