機械学習

ニューラルネットワーク内の単一ニューロンを実装してみた

ニューラルネットワークは、人間の脳の神経細胞(ニューロン)の仕組みをプログラム上で模したモデルで、機械学習の1手法であるディープラーニングで利用する。

今回は、ニューラルネットワーク内の単一ニューロンを実装してみたので、そのサンプルプログラムを共有する。

(単一ニューロンを組み合わせた)ニューラルネットワークの全体構成は、以下のようになる。
ニューラルネットワーク

なお、活性化関数については、以下のサイトを参照のこと。
https://cvml-expertguide.net/terms/dl/layers/activation-function/

このうち、単一ニューロンのみを抜粋した結果は以下の通り。
単一ニューロン

上図における\(u\)は、(入力値)×(重み)の総和で計算する場合、\(u=w_{10}^1x_0 + w_{11}^1x_1 + w_{12}^1x_2\)(ただし、\(x_2=1\)とする)で計算される。

また、活性化関数にシグモイド関数を利用する場合、\(y = \displaystyle \frac{1}{1 + e^{-u}} \)で計算される。



「MiniTool Partition Wizard」はパーティション分割・統合・バックアップ・チェックを直感的に行える便利ツールだったハードディスクの記憶領域を論理的に分割し、分割された個々の領域のことを、パーティションといいます。 例えば、以下の図の場合、C/D...

単一ニューロンを実装した内容は以下の通りで、set_input_dataメソッドで入力値を設定し、先ほどの\(u\), \(y\)の計算を、フォワードプロパゲーション(順伝播処理)を行うforwardメソッド内で実行している。

また、先ほどの単一ニューロンを呼び出すニューラルネットワークを実装した内容は、以下の通り。なお、__init__メソッドの重み\(w\)は、何らかの任意値を設定している。



「Envader」はLinuxコマンドやDatabase SQL等のスキルを、環境構築不要で習得できる学習サイトだった「Envader」は、ITエンジニアとしてよく使うLinuxコマンドやDatabase SQL等のスキルを、解説を読んだ上で、問題を解き...

さらに、先ほどのニューラルネットワークを呼び出した結果は、以下の通り。

ニューラルネットワークの呼び出し

実際に計算した結果は以下の通りで、先ほどの結果と一致していることが確認できる。

計算結果の確認

要点まとめ

  • ニューラルネットワークは、人間の脳の神経細胞(ニューロン)の仕組みをプログラム上で模したモデルで、機械学習の1手法であるディープラーニングで利用する。
  • 単一ニューロン内で、(入力値)×(重み)の総和で計算後、活性化関数で変換した出力値を返却する。