Aidemy Tech Blog

機械学習・ディープラーニング関連技術の活用事例や実装方法をまとめる、株式会社アイデミーの技術ブログです。

【機械学習超初心者向け】ニューラルネットワークの基本

「機械学習」と並んでよく聞くキーワードとして、「人工知能」「深層学習」「ニューラルネットワーク」...などが挙げられます。

今回の記事ではこの「ニューラルネットワーク」について、紹介したいと思います。

 

機械学習におけるニューラルネットワークの位置づけ

「人工知能」という考え方は1950年代に登場しました。当初の人工知能は、 『人間のあらゆる(あるいはそれ以上の)感覚と、あらゆる判断力を備え、人間と同じように考える、驚異のマシン』という「汎用AI」を想定していました。この汎用AIは、現段階ではまだ実現されていません。しかし、『特定のタスクについて、人間と同等(あるいはそれ以上)の処理をこなすことのできるマシン』である「特化型AI」は、画像認識や将棋・オセロ等のゲームをはじめ、現在様々な分野で導入されています。

この特化型AIが特定のタクスに対する処理能力を向上させる手法として「機械学習」があります。機械学習とは『世の中の特定の事象についてデータを解析し、その結果から傾向を学習して、判断や予測を行うためのアルゴリズムを使う手法』のことを指します。

機械学習の一つの手法に「深層学習」というものがあります。深層学習とは、『多数のニューラル・ネットワークを用いた機械学習の手法』のことを指します。つまり、ニューラルネットワークとは、機械学習の1つの手法で用いられるツールとなります。

※ニューラルネットワークについては以下で説明します。

f:id:koudai42424:20170627153930p:plain

blogs.nvidia.co.jp

 

ニューラルネットワークの基本

まず、生物のニューロン(神経細胞)の説明をします。ニューロンは、細胞核のある「細胞体」、他の細胞からの入力を受ける「樹状突起、他の細胞に出力する「軸索に分けられます。そして、ニューロンに入力刺激が入ってきた際に、ある一定以上の電圧であれば次のニューロンに刺激を伝えるという仕組みになっています。また各軸索の太さは一定ではなく、何度も神経間のやり取りがなされたものは太くなり、情報伝達の優先度が高くなるようになっています。

 

f:id:koudai42424:20170627154218g:plain

 

この神経細胞の情報伝達の仕組みを応用したものがニューラルネットワークです。ニューラルネットワークでは、ニューロン同士のつながりの強さを「重み」で表現しています。生体ニューロンでは全ての細胞がつながっているのに対し、ニューラルネットワークではニューロンで構成される複数の層が存在し、前後の層の間でのみ情報のやり取りがなされます。

 

f:id:koudai42424:20170627163452p:plain

 

まず一つのニューロンについて見てみます。

ニューロンのつながりの強さは重みによって表現されています。はじめの状態では全てのつながりの重みが0となっています。(初期状態の重みは予め決定しておくこともできますが、今回は重みが全て0の状態で考えます。)

 

f:id:koudai42424:20170627163529p:plain

 

この状態で初めの入力がなされると、当然結果は0で出力されてしまいます。

 

この結果を元に、例えば一番上の重みを調整します。

その状態で再び入力を行い、その結果を評価します。

 

f:id:koudai42424:20170627163512p:plain

 

その評価を元に再び重みを調整していきます。

 

f:id:koudai42424:20170627163623p:plain

 

同様の操作を他の重みに対しても行います。

 

f:id:koudai42424:20170627170045p:plain

 以上のように各ニューロンに対する重みを調整していくことによって、出力を最適なものに近づけていくことができます。入力の回数が増えれば増えるほど重みは最適な値に近づいていきます。

f:id:koudai42424:20170627164610p:plain

 

以下のサイトで実際にニューラルネットワークの重み付けをブラウザ上で体感することができます。

playground.tensorflow.org

 

 

具体的な計算方法が気になる方は、以下のサイトをご覧ください。
ipr20.cs.ehime-u.ac.jp

 

以上です。