ホップフィールドネットワーク理解に向けての準備体操(1)

ニューラルネットワークの別の種類であるホップフィールドネットワークについて少し分かってきたので自分なりに理解したことをアップしていこうと思います。まだホップフィールドネットワークの説明というよりホップフィールドネットワークに向けての準備体操の段階です。


ホップフィールドネットワークは、今まで議論してきたパーセプトロンや多階層のネットワークとは異なり、各ニューロンは他の全てのニューロンに信号を出力します。ということは各ニューロンは他の全てのニューロンから信号を受けます。また、信号には今までのように「0」「1」ではなく、「−1」「1」を用います。ニューロンの入力x_iと出力yの関係はマカロック=ピッツの式

  • y=1\left(\Bigsum_{i=1}^ns_ix_i-h\right)・・・・(1)

に従います。ただし1()

  • u{\ge}0ならば1(u)=1
  • u<0ならば1(u)=-1・・・・(2)

とします。さて、今、ニューロンは多数ある前提ですので式(1)も各ニューロン毎に区別して書いたほうがよいです。そこでニューロンn個あるとします。そしてニューロンiの出力をx_iとします。これは他の全てのニューロンの入力になります。ただし、ニューロンi自身の入力にはなりません。ニューロンiしきい値h_iで表すことにします。さらに、ニューロンiの持つシナプス係数のうちでx_jに対応するものをs_{ij}で表すことにします。ニューロンiの出力x_iニューロンi自身の入力にはならない規則でしたので

  • s_{ii}=0・・・・(3)

になります。ニューロンiの入力x_jと出力x_iの関係は

  • x_i=1\left(\Bigsum_{j=1}^ns_{ij}x_j-h_i\right)・・・・(4)

になります。x_jの値は「−1」か「1」のいずれかです。ホップフィールドネットワークでは学習をしません。ですのでシナプス係数s_{ij}の値を変化させません。では「ホップフィールドネットワークでは何がおもしろいか?」という疑問が出ますが、それを今の時点で説明するのは難しいですが、ネットワークが安定になる様子に興味がある、とだけここでは述べておきます。
以下例題を長々と出すつもりでいます。その過程で何か見えてくるのではないかと期待しております。


ニューロン1個ではネットワークにはなり得ないので、最低2個のニューロンを考慮する必要があります。まず、2個のニューロンが相互に結合して信号を送り合っている様子を考えます。

  • 図1

上の図ではニューロンを丸で示しました。ニューロンに番号をつけ、それぞれ「1」と「2」としました。信号の向きを矢印で示しました。信号のところに書いてある数字は信号の入力側のニューロンシナプス係数を表しています。ここではまず、例として両方とも1としました。ニューロンを示す丸はその色でそのニューロンの出力を表しているとします。赤は「1」、青は「−1」を表すとします。この2つのニューロンしきい値はともにゼロであるとします。すると、このネットワークの状態は安定しています。これを次のようにして確かめます。


まず、ニューロン1への入力を考えます。ニューロン1へはニューロン2から信号を受けています。ニューロン2は図では赤色ですから、その出力は1です。一方、それを受け取るニューロン1のシナプス係数も1です。しきい値は上に書いたように0でした。式(4)から、ニューロン1の出力x_1

  • x_1=1\left(s_{12}x_2\right)=1\left(1\times{1})=1

なので1になります。ですから図1のようにニューロン1の色は赤色になります。


次に、ニューロン2への入力を考えます。ニューロン2へはニューロン1から信号「1」を受けています。一方、それを受け取るニューロン1のシナプス係数も1です。しきい値は0です。よってニューロン2の出力x_2

  • x_2=1\left(s_{21}x_1\right)=1\left(1\times{1})=1

なので1になります。ですから図1のようにニューロン2の色は赤色になります。


以上の繰り返しで、図1の状態はこのまま持続します。これを「状態が安定している」と言い表すことにします。