【図解】ニューラルネットワークとは?【連載②】
どうも、あつかんです。
今回はニューラルネットワークについて述べていこうと思います。
ゼロから作るDeep Learningという本を参考にさせていただいております。
ニューラルネットワークについて述べるといっても、この記事ではすべては述べません。
全て述べると、本一冊書けちゃいますからねw
なので理解するにあたって必要最低限な知識を一歩一歩、順に複数のブログで連載形式で説明していきます。
遠回りのように見えますが、これが一番の近道だと思います。
まず、ニューラルネットワークを学ぶためにはパーセプトロンについての知識が必要です。
パーセプトロンについては下の記事にまとめてあります。
このブログは連載形式ですので、下の記事を読んでからこのブログを読むことをお勧めします。
ニューラルネットワークは簡単に言うとパーセプトロンの弱点を補ったものです。
では、パーセプトロンの弱点とはなにか。
それは、重みを設定する作業が人の手によって行われているという点です。
これは大変な作業であり、汎用性が生まれません。
このような弱点はニューラルネットワークによって解決できます。
具体的に言うと、適切な重みパラメータはデータから自動で学習できるという点です。
これがニューラルネットワークの重要な性質の一つになります。
では、その学習する方法を述べる前にまずはニューラルネットワークの概要について説明していこうとおもいます。
ニューラルネットワークの導入
ニューラルネットワークの例を図で表すと下の図のようになります。
入力層から始まって中間層(隠れ層)を経て出力層に伝わります。
ここで少しパーセプトロンの説明をします。
パーセプトロンは前のブログでも述べた通り、例として以下の図で表現できます。
パーセプトロンを数式で表すと以下のように表わせました。
b+x1w1+x2w2<=0の時
y=0
b+x1w1+x2w2>0の時
y=1
ここでbはバイアスパラメータといいます。
この値は任意で設定でき、ニューロンの発火のしやすさをコントロールできます。
w1、w2は各信号の重みを表わすパラメータであり、これは各信号の重要度をコントールできます。
しかし図にはbが定義されていません。
bを図に表わすと以下のような図になります。
ここで、パーセプトロンの式をシンプルな式に書き換えたいと思います。
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で出力するという機構になっています。
活性化関数を図の中に組み込むと以下のような感じ。
この図より、入力の重み付き信号の総和がaに入り、そしてaが活性化関数h()を通ってyに変換されていることが分かります。
活性化関数はここでは一つを紹介しましたが、実は複数存在します。
次のブログではどんな活性化関数があるのか?なぜ複数あるのか?について詳しく述べていこうと思います。
この段階ではニューラルネットワークについてまだ全然理解できていないと思いますが、まだ大丈夫です。
これから徐々に書いていきますので!
では!
次の連載はこちらです。