ホップフィールドネットワーク(1)

今までの考察でホップフィールドネットワークについておおよそのところがつかめてきましたので、私が理解したところをアップしていこうと思います。
今まで、ニューロンの数を2個とか3個とか限定して考察を進めてきましたが、実際にホップフィールドネットワークが威力を発揮するのは百個とか千個とかいった大規模なネットワークのようです。しかし、とても私にはそのような数は手に負えません。

  • 図1


そこで、百個に比べれば少ないですが、以前「パターン認識」で使った5×7の格子をここでも考察のよりどころにして5×7=35個のニューロンによるホップフィールドネットワークを考えてみたいと思います。つまり、格子の1つ1つにニューロンをそれぞれ1つ1つ対応させます。たとえば左のようにニューロン1から35までを対応させます。


ホップフィールドネットワークは以下のようなことが出来ます。

  • 図2


たとえば、左のような数字の4を表すパターンをホップフィールドネットワークに記憶させます。「記憶させる」というのは次のようなことを意味しています。まず、マス目が白い場合をー1、黒い場合を1で表すことにします。図2に従ってX_iを−1か1かに決めます。iが図1に記された数字です。次に
s_{ij}=\left\{\begin{array}X_iX_j&\;&(i\neq{j})\\0&\;&(i=j)\end{array}・・・・(1)
(「ホップフィールドネットワーク理解に向けての準備体操(7)」の式(13)参照」)に従ってシナプス係数s_{ij}を設定します。このシナプス係数の設定が「図2を記憶させる」という行為にあたります。


ですのでホップフィールドネットワークでは、パーセプトロンのようにパターンを学習させてシナプス係数を自動的に調整していくのではなくて、シナプス係数を明示的に設定するのです。

  • 図3


次に図2と一部異なるパターン、たとえば左の図のようなパターンをこのネットワークに入力します。「入力する」というのは、各ニューロンの出力を左の図(図3)に合わせる、ということです。


次に、ニューロンをランダムに1個選んで、

  • x_i=1\left(\Bigsum_{j=1}^ns_{ij}x_j\right)・・・・(2)
  • ただし
    • 1(u)=\left\{\begin{array}1&\;&(u{\ge}0)\\-1&\;&(u<0)\end{array}・・・・(3)

に従ってそのニューロンの出力を計算して更新する、ということを繰り返します。するとやがて図2にパターンになって安定する、という現象が起きます。つまり不完全な情報から(少し異なる情報から、あるいは、雑音の混じった情報から、とも言えます)完全な情報を思い出す、というのに似た動作をホップフィールドネットワークは示します。これを想起と呼ぶそうです。人間が断片的な情報をきっかけにして何かを思い出す、というのに似ているからだそうです。


さて、ホップフィールドネットワークは1個のパターンだけを記憶できるわけではない、ということです。複数のパターンを記憶できるということです。ただし、それは、ニューロン数×0.15、程度だそうです。今、考えている35個のネットワークでは5個程度になります。


こういうことがどうして可能なのか、これから考えていきます。