ニューラルネットワークの実装1

ニューラルネットワークの実装1

前回の記事ではシグモイド関数について解説をしました。今回の記事ではいよいよ単一ニューロンを Python で実装することをやっていきましょう。

いよいよ本格的に機械学習をしていく事ができます^o^。

 

やっと基礎的な部分から抜け出せました。嬉しいです(^。^)。本来であればここまで来るのに一年くらいかかっていたのかもしれませんが、基礎学習に長い時間を割くのは時間が惜しいので、必要な箇所だけピックアップして解説をしてきました。

一回目の記事でもお話しした通り、プログラムの基礎的な部分を網羅的にやるのはおすすめしません。そう言った学習はだめとは言わないのですが、退屈してしまうのです。

退屈してきて、「そもそもプログラミングってなんの役に立つのかな」っていう気持ちが出てきてしまいます。

とっととプログラミングの楽しさを実感するところから始めて行かないと挫折するような気がします。

野球をしていても、ただ素振りやキャッチボール、ノックなど、基本練習ばかりしていてもつまらないでしょう。試合をして、実戦を積む経験をしていかないと退屈してしまいます。

楽しんで学習をしましょう。

それでは、始めましょう。

神経細胞の仕組み

こちら↑の画像はマウスの大脳新皮質の神経細胞になります。緑色に染色されているのが神経細胞です。神経細胞ニューロンとも呼ばれます。

神経細胞はこんな感じ↓でつながっています。核のような部分のことを細胞体といい、尻尾のような部分のことを軸索と言います。

神経細胞からは樹状突起と呼ばれる、枝のようなものを伸ばして、他の神経細胞とつながっています。軸索の先っちょも枝のようなものを伸ばしており、この枝のことを軸索端末といいます。

神経細胞の軸索端末樹状突起の接合部はシナプスと呼ばれています。ここで情報伝達が行われている形になります。

いきなり専門用語がわーっと飛び出してきましたね。でもこういった用語まで覚える必要はありません。こんな仕組みになっていることを理解して下さい(^^;)。

神経細胞の数は脳の中に 1000 億個あると言われており、一つの神経細胞あたりに約 1000 このシナプスがあると言われています。なので、人の脳の中には 100 兆個のシナプスがある計算になります。

このような神経細胞を python で、PC 上で実装するものをニューラルネットワークといいます。単一ニューロンとは、ニューラルネットワークの中にある単一のニューロンのことです。

ニューラルネットワークを模式図で表すとこんな感じです。中間層には3つしかニューロンがないような形になってますが、実際に実装するときは 1000 以上です。

また、下図だと、入力層、中間層、出力層の3層構造担ってますが、実際にコードで実装するときは中間層が 1000 層以上あったりします。

1000 層、1000 段もあるようなニューロンを実装できるのかと思うかもしれませんが、python でなら可能です。それ以外の数値計算用のプログラミング言語を使うと、コーディングが非常に大変で、実装するのに時間もかかるし、デバグも大変なのですが、python でなら驚くほど簡単で、シンプルに実装をする事ができるのです。

ニューラルネットワークは厳密にいうと、人工ニューラルネットワークといいます。ですがいいにくいので、ニューラルネットワークと呼ばれる事が多いです。

ニューラルネットワークを構成している単一のニューロンは↓こんな感じです。

先ほど説明した通り、ニューロンは1000個程のシナプス結合があります。1000こ以上の入力データを受け取ります。ただし、入力データをそのまま受け取るのではなく、重み(シナプスの伝達効率)をかけた状態で入力されることになります。

ニューロン A とは結合が強くて、入力データをほとんど取り込んでしまうのに対し、ニューロン B とは結合が弱くて、ほとんど入力を取り込まなかったりします。

実はこの重み(重み関数とも呼ぶ)こそが人の性格・個性を決定づけているとも言われています。

なんらかの情報が入ってきたとします。ニューロンはたくさんの入力データを取り込み、それらにバイアスを加えたものを活性化関数として入力し、出力データを吐き出して次のニューロンに情報を伝達します。

バイアスとはニューロンの感度になります。バイアスの値はニューロンによってまちまちです。この値が大きければニューロンは興奮しやすく、小さければ興奮しにくいです。ここについては今はあまり深く踏み込みません。コードを書きながら解説できればと思います。

活性化関数なのですが、この関数に前回の記事で解説したシグモイド関数を使うことになります。どういうことかはコードを書きながら説明します。


今回の記事はここまでにします。どうですか?疲れました?

面白くなってきたでしょう、今後もっと面白くなります。

次回の記事では単一のニューロンを python で実装するところを解説します。

だいぶ楽しくなってきました。ようやく一番やりたかったところに踏み込めます。最初から網羅的にやってしまうと、python の基礎学習を延々とやってしまう羽目になります。そう言った学習もダメではないのですが、とっとと楽しいところに踏み込む方がいいのではないかと思うのですσ^_^;。

関連記事

コメント

この記事へのコメントはありません。

TOP