重み?バイアス?算数で理解する「ニューラルネットワーク内で何が起こるのか」

重み?バイアス?算数で理解する「ニューラルネットワーク内で何が起こるのか」

どーもアイーンです。

マンガ「幼女戦記」が大変面白いですね。

いずれAI同士が代理戦争を始める日もくるのでしょうか。

その日までには、まともなAIエンジニアになりたいと思います。

 

さて今回は、ニューラルネットワークの中で何が起こっているのか算数で理解しつつ

深層学習でよく聞く重みバイアスについて解説したいと思います。

 

ちょっと詳しいニューラルネットワーク

ニューラルネットワークはコレでしたね。

これは1層のニューラルネットワークです。

人間の脳細胞(ニューロン)を再現するべく、1つのニューロンが他のニューロンへ信号を入力し、その入力量によって興奮する・しないという形を数学的に再現したものです。

それ再現モデルに、ヘップ則という機能を追加して誕生しました。

別名パーセプトロンといいます。

 

ヘッブ則とは、人間の脳みそよろしく

一度使われたニューロンのつながり(シナプス結合)は強化されて再度使われやすくなり

使われないニューロンのつながりは退化して使われにくくなるという法則のことです。

昨日使った記憶は今日も思い出しやすく

しばらく使ってない記憶は思い出しづらいのと同じです。

 

それでは、このニューラルネットワークの中でなにが起こっているのか

それは計算です。

 

 

オイ、逃げるな。

簡単だから。

 

まぁパソコンがすっごい計算機である以上当たり前の話っちゅ~わけですよ。

 

ニューラルネットワークの計算方法

 

実は上の画像、計算式になります。

式を見てみましょう

$$y=x_1 \times w_1 + x_2 \times w_2 + b $$

掛け算を省略して表記すると

$$y=x_1  w_1 + x_2  w_2 + b $$

 

 

xは入力値です。

x1やx2は

1つ目の入力、2つ目の入力

に対応してます。

 

wは重みを表します。

重みとは、ニューラルネットワークが学習を繰り返す中で形成されるシナプス結合の強さを表現しており

学習を繰り返すと、シナプスごとにその値が変化します。

 

bはバイアス(偏り)です。

すんごく簡単にいうと、そのニューラルネットワークが持つ「個性」です。

人間に近づけるため、ニューラルネットワークに”好き嫌い”、”得意不得意”などの偏りを持たせることで

複雑な意思決定の際に、答えの変化を加えるために使われます。

 

入力値は定数(決まった数値)ですが

重みとバイアスは、深層学習が繰り返されるたびに変化していき

いずれ人間が求めている正解を出せるようになります。

 

さぁ、わかりましたね?

先ほどの式は簡単に言うと足し算引き算掛け算なんです。

 

ニューラルネットワークと人間の脳細胞

 

人間のニューロンに、レモンを入力(見たり食べたり)してみましょう。

 

 

レモンが入力されると、「黄色」を感じる細胞が興奮します。

しかし、レモンから「青色」は連想されないので興奮しません

同じように「果物」を理解する細胞が興奮し、「野菜」は興奮しません。

味にもいろいろありますが、「レモン」が興奮させるのはやはり「酸味」でしょう。

 

細胞が興奮する・しない

これは、ニューラルネットワークでは

0か1で表せます。

0は興奮してない

1は興奮している

たったこれだけです。

 

そしてレモンの入力で「黄色」「果物」「酸味」のつながりが太くなっています。

これがヘッブ則、レモンに対する「重み」です。

 

バイアスは、「レモンを知っているか知らないか」ってとこですか。

または「青いレモンを知っている」といったこともあるかもしれません。

知らないと、見ただけでは酸っぱさは分かりませんよね。

 

本来は、もっと多くの入力があります。

レモンの”大きさ”や”形”、”匂い”など、ちょっと数え切るのは難しいです。

ニューラルネットワークは、こういった多くの入力を利用して

2層3層と多層化され、正解を導くわけです。

 

さぁ、それでは先ほどの数式を使って

1層のニューラルネットワークを計算してみましょう。

 

1層のニューラルネットワークを計算してみる

先ほどの数式はこちらです。

$$y=x_1 \times w_1 + x_2 \times w_2 + b $$

 

入力値にx1が1、x2が0を入力し

重みとバイアス w1が0.1、w2が0.2、bが0.3だとしましょう。

それを当てはめてみると

$$y = 1 \times 0.1 + 0 \times 0.2 + 0.3$$

となり、答えは

$$y = 0.4 $$

となります。

 

はい、計算完了です。

あれ?答えは1か0じゃないの?

とお思いの方は、ぜひ次の回をご覧いただきたいと思います。

次回は”活性化関数”について解説します。

 

これであなたも今日から「1層ニューラルネットワーク中級」です。

「どうも、1層ニューラルネットワーク中級の○○です」と名乗ってみてください。

可哀そうな目で見られます。

 

今回はここまで。

ではまた。