今回は実際に簡単なニューラルネットワークの中身を見ていきましょう。
ニューラルネットワークは以下の画像のような構成になります。
見ての通り3つの層から構成されます。
- 入力層
- 中間層
- 出力層
中間層をよりたくさんのパーセプトロンをつなげていったものがディープニューラルネットワークと呼ばれるものですね。
前回、話せていなかったのですが出力層でも活性化関数は使用しており、タスクの種類によって使い分けがされます。
回帰の場合(売上予測とか)は恒等関数と呼ばれる、ただ入力された値を返す関数。
分類の場合(画像識別とか)はソフトマックス関数が使用されます。
ソフトマックス関数
入力信号の指数関数÷入力信号の指数関数の和を返す関数。
出力は0~1で総和が1になるという性質があるので確率として解釈可能。
以下の記事が分かりやすかったですね。
簡単なニューラルネットワークを実装してみよう
以下のようなニューラルネットワークを作ると考えてみてください。
まずは一つ目の計算をしてみましょう。
計算する式は以下のものです。
a(1)1=w(1)11x1 + w(1)12x2 + b(1)1
z1=sigmoid(a(1)1)
それぞれ以下のような数値で設定してやってみましょう。
x1=1.0, x2=0.5
w(1)11=0.1, w(1)12=0.2
b(1)1=0.1
a(1)1=0.1 * 1.0 + 0.2 * 0.5 + 0.1 = 0.3
z1=sigmoid(0.3) = 0.57444
これで一つ目の計算は終わりです。
基本的にはこれを出力層まで繰り返していくのがニューラルネットワークのお仕事です。
でもこんな重みの数値を決めたり計算なんかしたくないですよね。
そこで出てくるのが学習というものです。
学習とは何か?
では学習とは何でしょうか。
機械学習の文脈では、学習とは訓練データから最適な重みパラメータを自動で導き出すことです。
先ほど手で設定したような数値をデータを与えたら勝手に最適なものを探してくれるのが学習というわけです。
そのためにはまずニューラルネットワークの学習の指標が必要です。
そのための指標が「損失関数」と呼ばれるものです。
この損失関数の値を改善していくのが目的となります。
今回はここまで。
次回は損失関数について具体的に見ていきましょう。
コメント
コメントを投稿