![Ganzy](https://ganfreeimages.com/wp-content/uploads/2021/08/image_6483441-e1629076432940-300x300.jpg)
こんにちは。Ganzyです!今回はディープラーニングの基礎である「 ニューラルネットワーク 」ついて説明します。ニューラルネットワークについては1記事にまとめるには容量が多いので複数記事に分けて紹介します!今回はニューラルネットワークの概要とニューラルネットワークを構成する パーセプトロン について学びます。
ニューラルネットワーク とは
ニューラルネットワークとは機械学習手法の一種になっており、昨今のAIブームを支えている技術になります。
そもそもAI(=ディープラーニング)では、ニューラルネットワークを複数にしたものが一般的であるため、ディープラーニングを学ぶ上ではニューラルネットワークの仕組みを理解することが非常に重要になります。
![Ganzy](https://ganfreeimages.com/wp-content/uploads/2021/08/image_6483441-e1629076432940-300x300.jpg)
ニューラルネットワークを学ぶことでディープラーニング習得の第一歩になります
ニューラルネットワーク モデルについて
そもそもニューラルネットワークとはパーセプトロンを組み合わして脳を模した数理モデルのことを指しております。つまり、疑似脳みそ的な感じです。
下図がニューラルネットワークのイメージ図になります。複数のパーセプトロンによって入力層・中間層・出力層を形成しており、これらの入力 → 出力までの一連の処理によって説明変数から目的変数を推論することができます。
ここでニューラルネットワークを構成しているパーセプトロンについてみていきたいと思います。
パーセプトロン とは
![Ganzy](https://ganfreeimages.com/wp-content/uploads/2021/08/image_6483441-e1629076432940-300x300.jpg)
ニューラルネットワークを構成している パーセプトロン について説明していきます。上図の青丸がパーセプトロンになります。
人間の脳みそをモデル化する研究の魁(さきがけ)となったのが パーセプトロン という手法になります。
人間の脳にはニューロンという脳細胞があります。このニューロンは樹状突起という箇所で入力信号を受け取り、入力信号が一定の値以上になると各ニューロンをつなぐシナプスを介して出力信号を出力します。
この動きを模したのがパーセプトロンになります。下図のイメージ図です。
人間の脳と照らし合わせると、下記の関係です。
ノードはまず各入力と重み値をかけてバイアス(=1)と足し合わせたものを受け取ります。
次にノードで受け取った値は活性化関数によって変換され出力を得ます。
ここで活性化関数は下図のようなステップ関数がよく用いられます。ステップ関数ではノードの値が一定値を超えると出力値が任意の値となります。ノードが0を超えると出力が1となります。
![Ganzy](https://ganfreeimages.com/wp-content/uploads/2021/08/image_6483441-e1629076432940-300x300.jpg)
このようにパーセプトロンでは入力信号に応じて活性化関数を介して出力値が変動します。
パーセプトロン の学習方法について
次に、 パーセプトロン の学習について見ていきたいと思います。
パーセプトロン は教師あり学習手法となりますので説明変数と目的変数を与え、所望の結果が得られるように学習を行います。
ここで学習では推論結果と真値との誤差を小さくするため重みを更新します。またどれだけ重みを更新するか?という学習率を用いて更新量を調整します。そして更新後の重みは元の重みと更新量を足して得ることができます。
下表のように実際の数値を用いて確認してみましょう。ここで入力1~3の重みを0.2とします。
バイアス=1, 入力1=1、入力2,3=0となっているので、
まずノード値を計算します。下表より0.3+1*0.2*0*0.2+0*0.2=0.5と計算することができます。ノード値が0以上となるため活性化関数により出力は1となります。ここで正解が0の場合、誤差は1となります。
さて入力1の重みの更新方法について見ていきます。なお学習率は0.3とします。学習率=0.3、入力1=1、誤差=1の時、更新量は以下のように計算できます。そしてこの更新量を更新前の重みに加算することで重みを更新します。
更新量=0.3(学習率)×1(誤差)×1(入力)=0.3
更新後重み1=0.2(更新前重み)+0.3(更新量)=0.5
このように重みを更新して誤差が一定値以下、もしくは指定した回数更新をおこない学習が終了します。
![Ganzy](https://ganfreeimages.com/wp-content/uploads/2021/08/image_6483441-e1629076432940-300x300.jpg)
このように誤差を小さくするように学習を行い重みを更新することで推論制度を向上させます。ディープラーニングは基本的に複数のパーセプトロンを学習したくさんの重みを更新することで高い推論制度が達成できているというわけです。
まとめ
☑ ニューラルネットワークは複数のパーセプトロンで構成されている
☑ パーセプトロンはノード・重み・活性化関数によって構成されいている
☑ 重みを学習させることで推論制度を向上させる
![Ganzy](https://ganfreeimages.com/wp-content/uploads/2021/08/image_6483441-e1629076432940-300x300.jpg)
今回はニューラルネットワークの基礎およびパーセプトロンについて紹介しました。次回の記事ではニューラルネットワークの学習について学んでいきたい思いますのでお楽しみに
ディープラーニングをpythonを用いて構築したい人は下の記事を読んでみてください
コメント