Help us understand the problem. What is going on with this article?

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

More than 3 years have 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を繰り返す.

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

FooQoo
お仕事ではJavaをメインにバックエンド開発、他にもVue.jsによるフロントエンドの実装やSQLを使ったデータ分析、簡単な機械学習モデルの構築も行ったりします。最近の興味は、webマーケティングです。
https://fooqoo56.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away