IT-LIFEブログ

主にIT系のことや時事ネタや、たまに雑記

【図解】ニューラルネットワークとは?【連載②】

どうも、あつかんです。

今回はニューラルネットワークについて述べていこうと思います。

ゼロから作るDeep Learningという本を参考にさせていただいております。

ニューラルネットワークについて述べるといっても、この記事ではすべては述べません。

全て述べると、本一冊書けちゃいますからねw

なので理解するにあたって必要最低限な知識を一歩一歩、順に複数のブログで連載形式で説明していきます。

遠回りのように見えますが、これが一番の近道だと思います。

まず、ニューラルネットワークを学ぶためにはパーセプトロンについての知識が必要です。

パーセプトロンについては下の記事にまとめてあります。

このブログは連載形式ですので、下の記事を読んでからこのブログを読むことをお勧めします。

nok-lab-life.hatenablog.com

 

ニューラルネットワークは簡単に言うとパーセプトロンの弱点を補ったものです。

では、パーセプトロンの弱点とはなにか。

それは、重みを設定する作業が人の手によって行われているという点です。

これは大変な作業であり、汎用性が生まれません。

このような弱点はニューラルネットワークによって解決できます。

具体的に言うと、適切な重みパラメータはデータから自動で学習できるという点です。

これがニューラルネットワークの重要な性質の一つになります。

では、その学習する方法を述べる前にまずはニューラルネットワークの概要について説明していこうとおもいます。

ニューラルネットワークの導入

ニューラルネットワークの例を図で表すと下の図のようになります。

f:id:nok-0930-ss:20171130110515p:plain

入力層から始まって中間層(隠れ層)を経て出力層に伝わります。

 

ここで少しパーセプトロンの説明をします。

パーセプトロンは前のブログでも述べた通り、例として以下の図で表現できます。

f:id:nok-0930-ss:20171129090216p:plain

パーセプトロンを数式で表すと以下のように表わせました。

 

b+x1w1+x2w2<=0の時

y=0

b+x1w1+x2w2>0の時

y=1

 

ここでbはバイアスパラメータといいます。

この値は任意で設定でき、ニューロンの発火のしやすさをコントロールできます。

w1、w2は各信号の重みを表わすパラメータであり、これは各信号の重要度をコントールできます。

しかし図にはbが定義されていません。

bを図に表わすと以下のような図になります。

f:id:nok-0930-ss:20171130112017p:plain

ここで、パーセプトロンの式をシンプルな式に書き換えたいと思います。

 

y = h(b + x1w1 + w2x2)

h(a) =  0   (a <= 0)

h(a) = 1    (a > 0)

 

上記の式は

a= b + x1w1 + w2x2が0以下の時は

h(b + x1w1 + w2x2) = 0

つまりy = 0

a = b + x1w1 + w2x2が0を超過した時は

h(b + x1w1 + w2x2) = 1

つまりy = 1

ということを表わしています。

 

活性化関数h(a)について

いきなりh(a)が出てきて困惑したと思いますが、これは活性化関数と呼ばれるものです。

活性化関数は式の通り、入力の総和をどのように発火(活性化)させるかを決定します。

もう一度活性化関数の式を書きます。

 

a = b + x1w1 + x2w2

y = h(a)

 

aでは総和が計算され、aをh()の中にいれてyで出力するという機構になっています。

活性化関数を図の中に組み込むと以下のような感じ。

f:id:nok-0930-ss:20171130113342p:plain

この図より、入力の重み付き信号の総和がaに入り、そしてaが活性化関数h()を通ってyに変換されていることが分かります。

活性化関数はここでは一つを紹介しましたが、実は複数存在します。

 

次のブログではどんな活性化関数があるのか?なぜ複数あるのか?について詳しく述べていこうと思います。

この段階ではニューラルネットワークについてまだ全然理解できていないと思いますが、まだ大丈夫です。

これから徐々に書いていきますので!

では!

 

次の連載はこちらです。

nok-lab-life.hatenablog.com