ニューロンの仕組み

AIの基礎的な仕組みを調べる

形式ニューロン

参考:Wikipedia - ニューラルネットワーク

x1 x2 xn 入力 y 出力 m1 m2 mn b バイアス 重み f(x) 活性化関数
形式ニューロン

ニューロン(神経細胞)の働きを大雑把に見ると、多数の入力側の突起から受け取ったパルス信号が本体に集まり、 しきい値を超えると出力側にもパルス信号を送る、といったものになる。

形式ニューロンはニューロンの働きをモデル化したもので、入力 x1xn に対して出力 y を出力する。

入力はそれぞれ対応する m1mn で重みづけられ、バイアス項 bと共に総和をとって活性化関数fに渡され、その結果が出力 y となる。

次のように xm を定義すると

x= x1 xn m= m1 mn

mxを行列の積のように表せる。

mx = m1x1+ m2x2+ + mnxn = k=1 n mkxk

出力は次のように書ける

y= f( mx +b)

活性化関数

ステップ関数

f(x)= { 1x0 0x<0

x=0で不連続になる

最初期のニューラルネットで使われたらしい。 ニューラルネットの学習時には、可変パラメーターである重みやバイアスで出力を微分した値を見て それらのパラメーターをどう動かすか決めていくことになる。 ところが、ステップ関数を微分するとほぼ全域で0になってしまうので学習に利用しづらいという欠点がある。

シグモイド関数

f(x) = 1 1+ e -x d dx f(x) = e -x (1+ e -x) 2

シグモイド関数は微分可能なので、出力をパラメーターで微分した値を見てパラメーターを調整する手法が使える。

また、シグモイド関数の導関数は元のシグモイド関数の組み合わせで表現できる。

d dx f(x) = e -x (1+ e -x) 2 = 1 1+ e -x - 1 (1+ e -x ) 2 = ( 1 1+ e -x ) ( 1 - 1 1+ e -x ) = f(x) ( 1 - f(x) )

tanh関数

tanh ( x ) = e x - e -x e x + e -x d dx tanh ( x ) = 1 - ( tanh ( x ) ) 2

双曲線関数はシグモイド関数をちょうど下に伸ばした形をしている。シグモイド関数を σ(x) とすると次のように書ける。

tanh ( x ) = 2 σ ( 2 x ) - 1

シグモイド関数と違って出力の中心がゼロとなるため、ある問題が起こりづらいらしい。 自分ではまだ分かっていないので、調べておく。

これらの活性化関数が「古典的」な活性化関数となるらしい。 より実用的な活性化関数もあるようだが、 ニューラルネットの仕組みを学ぶ段階ではまず古典的なものを使ってみる。