徒然なるままにMake:

Fusion360 3Dプリンタ 電子工作 面白そうなモノづくりをやっていくブログ

ディープラーニングを始めてみる 4

前回

something-make.hatenablog.com

参考書はこれ

 

 
1.パーセプトロンのすごいところとダメなところ

前回はパーセプトロンを何層にも重ねることで、コンピュータ等の複雑な論理回路を構成できることを書きました。

パーセプトロンはコンピュータを構成できるので、理論上はこれを複雑に組み合わせれば、どんなコンピュータでもプログラムでも

作ることができます。

しかしパーセプトロンには致命的な問題があります。手動なことです。

パーセプトロンのパラメータは人間が計算して設定してやらないといけないのです。複雑なパーセプトロンを作っても全部人間が決めてあげないといけません。

超めんどくさいです。

この辺りの問題を解決するためにニューラルネットワークが生まれました。このニューラルネットワークは自動でパラメータを決定してくれるすごいシステムです。

まずはニューラルがどのようなものかを学びます。

 

2.ニューラルネットワークってどんな感じ?

f:id:something-make:20180916125150p:plain

一番左の層が入力層、一番右が出力層、中間が中間層と呼ばれます。中間層はプログラム等では隠されるので隠れ層と呼ぶこともあります。パーセプトロンと違い、はじめから複数の層で構成されています。

ちなみの層の順番は左から0層,1層と数えて行きます。Pythonでは数を0から数えることが多いのでこの方が都合がいいからです。

 

しかし、これではただの多層パーセプトロンと変わりないように見えます。

そこでパーセプトロンニューラルネットワークの違いをはっきりさせるため、パーセプトロンをもう一度しっかりと扱い、捉えなおして見ます。

 

3.パーセプトロンってどういうのだっけ?

something-make.hatenablog.com

f:id:something-make:20180913113422p:plain

y = { 0 b + w 1 x 1 + w 2 x 2 0 1 b + w 1 x 1 + w 2 x 2 > 0  

パーセプトロンはこういう図と式で表されます。

bはバイアスでニューロンの発火(0から1への変化)をコントロールします。

w1,w2は信号の「重み(重要さ)」をコントロールします。

ただ、この図にはバイアスが入っていないので入れてやります。

f:id:something-make:20180916141912p:plain

この図では重みbの入力1が追加されます。これでバイアスがわかりやすくなりました。

さらに式のほうもさらにシンプルにします。

パーセプトロンの場合分けの動作(0を超えたら1を出力し、それ以外では0を出力する)をひとつの関数で表します。

新しい関数h(x)によって式を簡単にすることができます。

y = h b + w 1 x 1 + w 2 x 2  

h x = { 0 x 0 1 x > 0

パーセプトロンの動作を0以上と0以下の2つに分けず、一つの式で表せるようになりました。

この関数h(x)を活性化関数と呼びます。

さらにこの活性化関数を図に書き加えます。

f:id:something-make:20180916151337p:plain

活性化関数の部分をしっかりと式にすると

a = b + w 1 x 1 + w 2 x 2

  y = h a

という形になります。この表し方でニューロンがどうやって動作しているのかがしっかり分かるようになりました。

 

次回は活性化関数についてやっていきます。