(57)【特許請求の範囲】
【請求項１】
入力ベクトルが入力される入力層と、
前記入力ベクトルのパターンをクラス分けして保持する記憶層と、
前記記憶層に保持されたクラスの関係を保持する連想層と、を備える連想記憶装置であって、
前記記憶層において、自己増殖型ニューラルネットワークを用いて、前記入力ベクトルのパターンに対応するノードを接続してなるサブネットワークを構成し、当該構成したサブネットワークを表現するクラスを、前記入力ベクトルのパターンのクラスとして学習する記憶層学習手段と、
前記連想層において、前記記憶層において保持されたクラスを、連想のキーとなるキーベクトルのクラスであるキークラスと、当該キーベクトルから想起される連想ベクトルのクラスである連想クラスとして扱い、前記キークラスと前記連想クラスとの間に関連を張る連想層学習手段と、
前記キーベクトルが与えられた場合に、当該キーベクトルのキークラス又は当該キークラスに関連する連想クラスに対応するノードの重みを想起結果として出力する想起手段と、
を備え、
前記記憶層学習手段は、
クラス名を伴う入力ベクトルのパターンが与えられた場合に、
前記入力ベクトルのパターンが、前記記憶層においてクラス分けされた前記サブネットワークのいずれかに属するか否かを前記入力ベクトルのパターンのクラス名から所属判定し、
前記所属判定の結果、前記入力ベクトルのパターンが前記サブネットワークのいずれにも属さない場合には、前記入力ベクトルのパターンに対応するノードを持つサブネットワークであって、かつ、前記入力ベクトルのパターンのクラスを表現する新たなサブネットワークを前記記憶層に構成し、
前記所属判定の結果、前記入力ベクトルのパターンが前記サブネットワークのいずれかに属する場合には、前記入力ベクトルのパターンが属する前記サブネットワーク内において、前記入力ベクトルのパターンに最も近い重みベクトルを有する最近傍ノードと次に近い重みベクトルを有する次点ノードとを探索し、当該探索した最近傍ノードと、前記入力ベクトルのパターンとの間の距離を距離判定し、
前記距離判定の結果、前記最近傍ノードと前記入力ベクトルのパターンとの間の距離が前記最近傍ノードに関する所定の閾値よりも大きい場合には、前記入力ベクトルのパターンに対応するノードを新たなノードとして前記入力ベクトルのパターンが属する前記サブネットワークに挿入すると共に、当該挿入したノードに関する所定の閾値と、前記最近傍ノードに関する所定の閾値とを更新し、
前記距離判定の結果、前記最近傍ノードと前記入力ベクトルのパターンとの間の距離が前記最近傍ノードに関する所定の閾値以下である場合には、前記最近傍ノードの重みベクトルと前記次点ノードの重みベクトルを更新する
連想記憶装置。
【請求項２】
入力ベクトルが入力される入力層と、
前記入力ベクトルのパターンをクラス分けして保持する記憶層と、
前記記憶層に保持されたクラスの関係を保持する連想層と、を備える連想記憶装置であって、
前記記憶層において、自己増殖型ニューラルネットワークを用いて、前記入力ベクトルのパターンに対応するノードを接続してなるサブネットワークを構成し、当該構成したサブネットワークを表現するクラスを、前記入力ベクトルのパターンのクラスとして学習する記憶層学習手段と、
前記連想層において、前記記憶層において保持されたクラスを、連想のキーとなるキーベクトルのクラスであるキークラスと、当該キーベクトルから想起される連想ベクトルのクラスである連想クラスとして扱い、前記キークラスと前記連想クラスとの間に関連を張る連想層学習手段と、
前記キーベクトルが与えられた場合に、当該キーベクトルのキークラス又は当該キークラスに関連する連想クラスに対応するノードの重みを想起結果として出力する想起手段と、
を備え、
前記連想層学習手段は、
前記記憶層学習手段により前記キーベクトルを前記記憶層において学習させ、当該学習の結果、前記記憶層において保持される前記キーベクトルのクラスと同一のクラスが前記連想層に存在するか否かを判定し、
前記キーベクトルに関する存在判定の結果、前記記憶層において保持される前記キーベクトルのクラスと同一のクラスが前記連想層に存在しない場合には、前記キーベクトルのクラスに対応する新たなノードを前記連想層に挿入し、
前記キーベクトルに関する存在判定の結果、前記記憶層において保持される前記キーベクトルのクラスと同一のクラスが前記連想層に存在する場合には、該当クラスのノードの累積数を示すインデックス情報を更新し、
前記記憶層学習手段により前記連想ベクトルを前記記憶層において学習させ、当該学習の結果、前記記憶層において保持される前記連想ベクトルのクラスと同一のクラスが前記連想層に存在するか否かを判定し、
前記連想ベクトルに関する存在判定の結果、前記記憶層において保持される前記連想ベクトルのクラスと同一のクラスが前記連想層に存在しない場合には、前記連想ベクトルのクラスに対応する新たなノードを前記連想層に挿入し、
前記連想ベクトルに関する存在判定の結果、前記記憶層において保持される前記連想ベクトルのクラスと同一のクラスが前記連想層に存在する場合には、該当クラスのノードの累積数を示すインデックス情報を更新し、
前記連想層において、前記キーベクトルに対応するノードと、前記連想層に対応するノードとを接続することで、前記キークラスと前記連想クラスとの間に関連を張る
連想記憶装置。
【請求項３】
入力ベクトルが入力される入力層と、
前記入力ベクトルのパターンをクラス分けして保持する記憶層と、
前記記憶層に保持されたクラスの関係を保持する連想層と、を備える連想記憶装置であって、
前記記憶層において、自己増殖型ニューラルネットワークを用いて、前記入力ベクトルのパターンに対応するノードを接続してなるサブネットワークを構成し、当該構成したサブネットワークを表現するクラスを、前記入力ベクトルのパターンのクラスとして学習する記憶層学習手段と、
前記連想層において、前記記憶層において保持されたクラスを、連想のキーとなるキーベクトルのクラスであるキークラスと、当該キーベクトルから想起される連想ベクトルのクラスである連想クラスとして扱い、前記キークラスと前記連想クラスとの間に関連を張る連想層学習手段と、
前記キーベクトルが与えられた場合に、当該キーベクトルのキークラス又は当該キークラスに関連する連想クラスに対応するノードの重みを想起結果として出力する想起手段と、
を備え、
前記記憶層学習手段は、
クラス名を伴う入力ベクトルのパターンが与えられた場合に、
前記入力ベクトルのパターンが、前記記憶層においてクラス分けされた前記サブネットワークのいずれかに属するか否かを前記入力ベクトルのパターンのクラス名から所属判定し、
前記所属判定の結果、前記入力ベクトルのパターンが前記サブネットワークのいずれにも属さない場合には、前記入力ベクトルのパターンに対応するノードを持つサブネットワークであって、かつ、前記入力ベクトルのパターンのクラスを表現する新たなサブネットワークを前記記憶層に構成し、
前記所属判定の結果、前記入力ベクトルのパターンが前記サブネットワークのいずれかに属する場合には、前記入力ベクトルのパターンが属する前記サブネットワーク内において、前記入力ベクトルのパターンに最も近い重みベクトルを有する最近傍ノードと次に近い重みベクトルを有する次点ノードとを探索し、当該探索した最近傍ノードと、前記入力ベクトルのパターンとの間の距離を距離判定し、
前記距離判定の結果、前記最近傍ノードと前記入力ベクトルのパターンとの間の距離が前記最近傍ノードに関する所定の閾値よりも大きい場合には、前記入力ベクトルのパターンに対応するノードを新たなノードとして前記入力ベクトルのパターンが属する前記サブネットワークに挿入すると共に、当該挿入したノードに関する所定の閾値と、前記最近傍ノードに関する所定の閾値とを更新し、
前記距離判定の結果、前記最近傍ノードと前記入力ベクトルのパターンとの間の距離が前記最近傍ノードに関する所定の閾値以下である場合には、前記最近傍ノードの重みベクトルと前記次点ノードの重みベクトルを更新し、
前記連想層学習手段は、
前記記憶層学習手段により前記キーベクトルを前記記憶層において学習させ、当該学習の結果、前記記憶層において保持される前記キーベクトルのクラスと同一のクラスが前記連想層に存在するか否かを判定し、
前記キーベクトルに関する存在判定の結果、前記記憶層において保持される前記キーベクトルのクラスと同一のクラスが前記連想層に存在しない場合には、前記キーベクトルのクラスに対応する新たなノードを前記連想層に挿入し、
前記キーベクトルに関する存在判定の結果、前記記憶層において保持される前記キーベクトルのクラスと同一のクラスが前記連想層に存在する場合には、該当クラスのノードの累積数を示すインデックス情報を更新し、
前記記憶層学習手段により前記連想ベクトルを前記記憶層において学習させ、当該学習の結果、前記記憶層において保持される前記連想ベクトルのクラスと同一のクラスが前記連想層に存在するか否かを判定し、
前記連想ベクトルに関する存在判定の結果、前記記憶層において保持される前記連想ベクトルのクラスと同一のクラスが前記連想層に存在しない場合には、前記連想ベクトルのクラスに対応する新たなノードを前記連想層に挿入し、
前記連想ベクトルに関する存在判定の結果、前記記憶層において保持される前記連想ベクトルのクラスと同一のクラスが前記連想層に存在する場合には、該当クラスのノードの累積数を示すインデックス情報を更新し、
前記連想層において、前記キーベクトルに対応するノードと、前記連想層に対応するノードとを接続することで、前記キークラスと前記連想クラスとの間に関連を張る
連想記憶装置。
【請求項４】
前記想起手段は、
前記与えられたキーベクトルから自己想起を行う場合には、
当該与えられたキーベクトルのキークラスに対応するノードの重みを想起結果として出力する
ことを特徴とする請求項１乃至３いずれか１項に記載の連想記憶装置。
【請求項５】
前記想起手段は、
前記与えられたキーベクトルのクラスが未知である場合には、
前記連想層において、当該与えられたキーベクトルが属するクラスを、前記記憶層に保持された前記ノードとの間の親近性に基づいて探索する
ことを特徴とする請求項４に記載の連想記憶装置。
【請求項６】
前記想起手段は、
前記与えられたキーベクトルから相互想起を行う場合には、
前記キークラスと前記連想クラスとの間に張られた関連に基づき、前記与えられたキーベクトルのキークラスから連想される連想クラスを取得し、当該取得した連想クラスに対応するノードの重みを想起結果として出力する
ことを特徴とする請求項１乃至５のいずれか１項に記載の連想記憶装置。
【請求項７】
系列情報の学習を行う系列情報学習手段を更に備え、
前記系列情報学習手段は、
時刻情報を持つ入力ベクトルのパターンの系列が与えられた場合に、当該系列の入力ベクトルのうち第１の入力ベクトルをキーベクトルとし、当該第１の入力ベクトルに続く第２の入力ベクトルを連想ベクトルとして、前記連想層学習手段により当該キーベクトルのキークラスと当該連想ベクトルの連想クラスとの間に関連を張り、
前記第１の入力ベクトルが持つ時刻情報を前記キーベクトルのキークラスに対応するノードが持つ第１の時刻情報として更新し、
前記第１の入力ベクトルの前後の入力ベクトルが持つ時刻情報を、前記キーベクトルのキークラスに対応するノードが持つ第２及び第３の時刻情報としてそれぞれ更新する
ことを特徴とする請求項１乃至６いずれか１項に記載の連想記憶装置。
【請求項８】
前記想起手段は、
前記キーベクトルが与えられた場合に、
当該与えられたキーベクトルのキークラスに対応する第１のノードを取得し、当該取得した第１のノードの重みを第１の想起結果として出力し、
前記第１のノードが持つ前記第２の時刻情報と前記第３の時刻情報とに基づいて、当該第２及び第３の時刻情報を持つ第２及び第３のノードを取得し、当該取得した第２及び第３のノードの重みを第２及び第３の想起結果としてそれぞれ出力する
ことを特徴とする請求項７に記載の連想記憶装置。
【請求項９】
入力ベクトルが入力される入力層と、
前記入力ベクトルのパターンをクラス分けして保持する記憶層と、
前記記憶層に保持されたクラスの関係を保持する連想層と、を備える連想記憶装置の連想記憶方法であって、
前記記憶層において、自己増殖型ニューラルネットワークを用いて、前記入力ベクトルのパターンに対応するノードを接続してなるサブネットワークを構成し、当該構成したサブネットワークを表現するクラスを、前記入力ベクトルのパターンのクラスとして学習する記憶層学習ステップと、
前記連想層において、前記記憶層において保持されたクラスを、連想のキーとなるキーベクトルのクラスであるキークラスと、当該キーベクトルから想起される連想ベクトルのクラスである連想クラスとして扱い、前記キークラスと前記連想クラスとの間に関連を張る連想層学習ステップと、
前記キーベクトルが与えられた場合に、当該キーベクトルのキークラス又は当該キークラスに関連する連想クラスに対応するノードの重みを想起結果として出力する想起ステップと、
を備え、
前記記憶層学習ステップは、
クラス名を伴う入力ベクトルのパターンが与えられた場合に、
前記入力ベクトルのパターンが、前記記憶層においてクラス分けされた前記サブネットワークのいずれかに属するか否かを前記入力ベクトルのパターンのクラス名から所属判定し、
前記所属判定の結果、前記入力ベクトルのパターンが前記サブネットワークのいずれにも属さない場合には、前記入力ベクトルのパターンに対応するノードを持つサブネットワークであって、かつ、前記入力ベクトルのパターンのクラスを表現する新たなサブネットワークを前記記憶層に構成し、
前記所属判定の結果、前記入力ベクトルのパターンが前記サブネットワークのいずれかに属する場合には、前記入力ベクトルのパターンが属する前記サブネットワーク内において、前記入力ベクトルのパターンに最も近い重みベクトルを有する最近傍ノードと次に近い重みベクトルを有する次点ノードとを探索し、当該探索した最近傍ノードと、前記入力ベクトルのパターンとの間の距離を距離判定し、
前記距離判定の結果、前記最近傍ノードと前記入力ベクトルのパターンとの間の距離が前記最近傍ノードに関する所定の閾値よりも大きい場合には、前記入力ベクトルのパターンに対応するノードを新たなノードとして前記入力ベクトルのパターンが属する前記サブネットワークに挿入すると共に、当該挿入したノードに関する所定の閾値と、前記最近傍ノードに関する所定の閾値とを更新し、
前記距離判定の結果、前記最近傍ノードと前記入力ベクトルのパターンとの間の距離が前記最近傍ノードに関する所定の閾値以下である場合には、前記最近傍ノードの重みベクトルと前記次点ノードの重みベクトルを更新する
連想記憶装置の連想記憶方法。
【請求項１０】
入力ベクトルが入力される入力層と、
前記入力ベクトルのパターンをクラス分けして保持する記憶層と、
前記記憶層に保持されたクラスの関係を保持する連想層と、を備える連想記憶装置の制御プログラムであって、
前記記憶層において、自己増殖型ニューラルネットワークを用いて、前記入力ベクトルのパターンに対応するノードを接続してなるサブネットワークを構成し、当該構成したサブネットワークを表現するクラスを、前記入力ベクトルのパターンのクラスとして学習する記憶層学習ステップと、
前記連想層において、前記記憶層において保持されたクラスを、連想のキーとなるキーベクトルのクラスであるキークラスと、当該キーベクトルから想起される連想ベクトルのクラスである連想クラスとして扱い、前記キークラスと前記連想クラスとの間に関連を張る連想層学習ステップと、
前記キーベクトルが与えられた場合に、当該キーベクトルのキークラス又は当該キークラスに関連する連想クラスに対応するノードの重みを想起結果として出力する想起ステップと、
を備え、
前記記憶層学習ステップは、
クラス名を伴う入力ベクトルのパターンが与えられた場合に、
前記入力ベクトルのパターンが、前記記憶層においてクラス分けされた前記サブネットワークのいずれかに属するか否かを前記入力ベクトルのパターンのクラス名から所属判定し、
前記所属判定の結果、前記入力ベクトルのパターンが前記サブネットワークのいずれにも属さない場合には、前記入力ベクトルのパターンに対応するノードを持つサブネットワークであって、かつ、前記入力ベクトルのパターンのクラスを表現する新たなサブネットワークを前記記憶層に構成し、
前記所属判定の結果、前記入力ベクトルのパターンが前記サブネットワークのいずれかに属する場合には、前記入力ベクトルのパターンが属する前記サブネットワーク内において、前記入力ベクトルのパターンに最も近い重みベクトルを有する最近傍ノードと次に近い重みベクトルを有する次点ノードとを探索し、当該探索した最近傍ノードと、前記入力ベクトルのパターンとの間の距離を距離判定し、
前記距離判定の結果、前記最近傍ノードと前記入力ベクトルのパターンとの間の距離が前記最近傍ノードに関する所定の閾値よりも大きい場合には、前記入力ベクトルのパターンに対応するノードを新たなノードとして前記入力ベクトルのパターンが属する前記サブネットワークに挿入すると共に、当該挿入したノードに関する所定の閾値と、前記最近傍ノードに関する所定の閾値とを更新し、
前記距離判定の結果、前記最近傍ノードと前記入力ベクトルのパターンとの間の距離が前記最近傍ノードに関する所定の閾値以下である場合には、前記最近傍ノードの重みベクトルと前記次点ノードの重みベクトルを更新する
連想記憶装置の制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は連想記憶装置、連想記憶方法、及びプログラムに関し、特に自己増殖型ニューラルネットワークを用いて連想記憶を行う連想記憶装置、連想記憶方法、及びプログラムに関する。
【背景技術】
【０００２】
連想記憶(ＡＭ)システムは、データをその特性に従い分散して記録するシステムである。システムの想起処理は、ノイズの影響を受けたデータの補完を行うために有効であり、様々な用途に用いられている（非特許文献１乃至３など）。
【０００３】
連想記憶システムは、入力（キーベクトル）が与えられた場合に、入力に対応するメモリ上のパターン(連想ベクトル)を返答するものとして、次のような要求を満たす事が望まれる。
（１）非２値の入力に対してもデータを保存し、呼び出す事が可能である事。
Ｈｏｐｆｉｅｌｄ  ｎｅｔｗｏｒｋ（非特許文献４）や双方向性連想記憶（ＢＡＭ）（非特許文献５）、及びそれらに類似した手法は、離散状態を伴った２値の連想記憶に焦点を当てたものである。しかし、現実世界では、パターン情報は階調値や実数値ベクトルで得られることが普通であり、非２値の情報でもデータの入出力が可能である事が求められる。
（２）過去に蓄えられた知識を壊すことなく、新規な情報を逐次的に追加できる事（オンライン学習が可能である事。）。
Ｈｏｐｆｉｅｌｄ  ｎｅｔｗｏｒｋやＢＡＭ等では、ネットワークの学習後に新たなパターンが入力された場合には重み付きベクトルが壊されてしまい、既存知識がうまく保持されない（非特許文献６）。
（３）時間的に静的な情報だけではなく、時系列情報の記憶が出来る事。
人間は、時系列に与えられたパターンを静的には認識しておらず、継続した関係を踏まえて認識しているものと思われる。
（４）一対一の関連だけでなく、一対多や多対多の関連にも対応できる事。
（５）ノイズ耐性を持ったシステムである事。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−２９９６４４号公報
【特許文献２】特開２００８−２１７２４６号公報
【特許文献３】特開２００８−２１７２４２号公報
【非特許文献】
【０００５】
【非特許文献１】B. Zhang, and P. Cerone, "Robust Face Recognition by Hierarchical Kernel Associative Memory Models Based on Spatial Domain Gabor Transforms," Journal of Multimedia, vol. 1, no. 4, pp. 1-10, 2006.
【非特許文献２】Mustafa C. Ozturk, and Jose C. Principe, "An associative memory readout for ESNs with applications to dynamical pattern recognition," Neural Networks, vol. 20, pp. 377-390, 2007.
【非特許文献３】I. Kazuko, and M. Hiroyasu, and T. Hideaki, and T. Atsuo "Application of neural network to humanoid robots development of co-associative memory model," Neural Networks, vol. 18, pp.666-673, 2005.
【非特許文献４】J. J. Hopeld, "Neural networks and physical systems with emergent collective computational abilities," Proc. Nat. Acad. Sci. USA, vol.79, pp.2554-2588, 1982.
【非特許文献５】B. Kosko, "Bidirectional Associative Memories," IEEE Trans. Systems, Man and Cybernetics, vol. 18, no. 1, pp. 49-60, 1988.
【非特許文献６】R. M. French, "Using Semi-Distributed Representation to Overcome Catastrophic Forgetting in Connectionist Networks," Proc. of the 13th Annual Cognitive Science Society Conference, pp. 173-178, 1991.
【非特許文献７】P. Sussner, and M. E. Valle, "Gray-Scale Morphological Associative Memories," IEEE Trans. on Neural Networks, vol. 17, no. 3, pp. 559-570, 2006.
【非特許文献８】T. Kohonen, "The self-organizing map," Proc. IEEE, vol. 78, no. 9, pp. 1464-1480, 1990.
【非特許文献９】A. Sudo, and A. Sato, and O, Hasegawa "Associative Memory for Online Learning in Noisy Environments Using Self-organizing Incremental Neural Network," IEEE Trans. Neural Networks, vol. 20, no. 6, pp. 964-972, 2009.
【非特許文献１０】M. Hattori, and M. Hagiwara, "Episodic Associative Memory," Neurocomputing, vol. 12, pp. 1-18, 1996.
【非特許文献１１】G. de A. Barreto, and A. F. R. Araujo, "Storage and recall of complex temporal sequences through a contextually guided self-organizing neural network," Proc. of the IEEE-INNS-ENNS Int. Joint Conf. on Neural Networks, 2000.
【非特許文献１２】N. Sakurai, and M. Hattori, "SOM associative memory for temporal sequences," Proc. of the 2002 International Joint Conference on Neural Networks, pp. 950-955, 2002.
【非特許文献１３】M. Hagiwara, "Multidirectional associative memory," Proc. of the 1990 International Joint Conference on Neural Networks, pp. 3-6, 1990.
【非特許文献１４】T. Kohonen, "Self-organized formation of topologically correct feature maps," Biological Cybernetics, vol. 43, pp. 59-69, 1982.
【非特許文献１５】T. M. Martinetz, and S. G. Berkovich, and K. J. Schulten, ""Neural-gas," network for vector quantization and its application to time-series prediction," IEEE Trans. On Neural Networks, vol. 4, no. 4, pp. 558-569, 1996.
【非特許文献１６】F. Shen and O. Hasegawa, "An Incremental Network for On-line Unsupervised Classification and Topology Learning," Neural Networks, vol. 19, pp. 90-106, 2006.
【非特許文献１７】B. Fritzke, "A Growing Neural Gas Network Learns Topologies," In Advances in Neural Information Processing System, vol. 7, pp. 625-632, 1995.
【非特許文献１８】D. Casali, and G. Costantini, and R. Perfetti, and E. Ricci, "Associative Memory Design Using Support Vector Machines," IEEE Trans. On Neural Networks, vol. 17, no. 5, pp. 1165-1174, 2006.
【非特許文献１９】S. Haykin, "Neural Networks: A Comprehensive Foundation," Macmillan Coll Div, 1994.
【非特許文献２０】D. S. Rizzuto, and M. J. Kahana, "An Autoassociative Neural NetworkModel of Paired-Associate Learning," Neural Computation, vol. 13, pp. 2075-2092, 2001.
【非特許文献２１】H. Oh, and S. C. Kothari, "Adaptation of relaxation method for learning in bidirectional associative memory," IEEE Trans. On Neural Networks, vol. 5, no. 4, pp. 576-583, 1994.
【非特許文献２２】T. Yamada, and M. Hattori, and M. Morisawa, and H. Ito, "Sequential Learning for Associative Memory using Kohonen Feature Map," Proc. of the 1999 International Joint Conference on Neural Networks, pp.1920-1923, 1999.
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述の目的のために、多くの連想記憶システムが提案されてきた。Ｐ．ＳｕｓｓｎｅｒとＭ．Ｅ．Ｖａｌｌｅ（非特許文献７）は、非２値の情報に対して動作する連想記憶システムを提案した。しかし、上記の他の要求に応えるものとはなっていない。
【０００７】
Ｋｏｈｏｎｏｎ  Ｆｅａｔｕｒｅ  Ｍａｐ（ＫＦＰ）（非特許文献８）は、競合学習を用いて学習のための時系列なパターン操作を可能としているが、オンライン学習は実現できていない。
【０００８】
Ｓｕｄｏら（非特許文献９、特許文献１）は、情報の破壊を伴わない逐次保管の方法を提案したが、そのシステムは時系列データには対応していない。
【０００９】
Ｂ．Ｋｏｓｋｏ（非特許文献５）、服部と萩原（非特許文献１０）は、時系列データへの対応を試みているが、それらは単一の時系列データに対するものであり、繰り返しや共有関係のある時系列データに対しては必ずしもうまく動作するものとはなっていない。
【００１０】
Ｇ．ＢａｒｒｅｔｏとＡ．Ａｒａｕｊｏ（非特許文献１１）は、遅延を導入したＨｅｂｂｉａｎ学習則を利用してこの問題に取り組んでいるが、モデルの複雑度がコンテキストの個数に大きく依存するという問題を孕んでいる。
【００１１】
桜井と服部、伊藤（非特許文献１２）は、自己組織化マップ（ＳＯＭ）に基づいた時系列データに対する連想記憶を提案しているが、想起の性能が初期値に大きく依存してしまう。また、これらの方法は２値の時系列データを扱っており実数値の系列データが考慮されていない。さらに、時系列データのオンライン学習も対象とされていない。
【００１２】
Ｍｕｌｔｉｄｉｒｅｃｔｉｏｎａｌ  Ａｓｓｏｃｉａｔｉｖｅ  Ｍｅｍｏｒｙ（ＭＡＭ）（非特許文献１３）は、多対多の連想を取り扱う事を可能としているが、連想の数とその構造の層数を予め決める必要があり、柔軟性を欠いたものとなっている。
【００１３】
従って、本発明は、上述した要求される機能に関して、従来の連想記憶システムよりも優れた性能を持つ（非２値の取り扱い、オンライン学習、時系列データの取り扱い、多対多の連想を可能とする）連想記憶装置、連想記憶方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明に係る連想記憶装置は、入力ベクトルが入力される入力層と、前記入力ベクトルのパターンをクラス分けして保持する記憶層と、前記記憶層に保持されたクラスの関係を保持する連想層と、を備える連想記憶装置であって、前記記憶層において、自己増殖型ニューラルネットワークを用いて、前記入力ベクトルのパターンに対応するノードを接続してなるサブネットワークを構成し、当該構成したサブネットワークを表現するクラスを、前記入力ベクトルのパターンのクラスとして学習する記憶層学習手段と、前記連想層において、前記記憶層において保持されたクラスを、連想のキーとなるキーベクトルのクラスであるキークラスと、当該キーベクトルから想起される連想ベクトルのクラスである連想クラスとして扱い、前記キークラスと前記連想クラスとの間に関連を張る連想層学習手段と、前記キーベクトルが与えられた場合に、当該キーベクトルのキークラス又は当該キークラスに関連する連想クラスに対応するノードの重みを想起結果として出力する想起手段と、を備えるものである。
【００１５】
また、本発明に係る連想記憶装置の連想記憶方法は、入力ベクトルが入力される入力層と、前記入力ベクトルのパターンをクラス分けして保持する記憶層と、前記記憶層に保持されたクラスの関係を保持する連想層と、を備える連想記憶装置の連想記憶方法であって、前記記憶層において、自己増殖型ニューラルネットワークを用いて、前記入力ベクトルのパターンに対応するノードを接続してなるサブネットワークを構成し、当該構成したサブネットワークを表現するクラスを、前記入力ベクトルのパターンのクラスとして学習する記憶層学習ステップと、前記連想層において、前記記憶層において保持されたクラスを、連想のキーとなるキーベクトルのクラスであるキークラスと、当該キーベクトルから想起される連想ベクトルのクラスである連想クラスとして扱い、前記キークラスと前記連想クラスとの間に関連を張る連想層学習ステップと、前記キーベクトルが与えられた場合に、当該キーベクトルのキークラス又は当該キークラスに関連する連想クラスに対応するノードの重みを想起結果として出力する想起ステップと、を備えるものである。
【００１６】
さらにまた、本発明に係る連想記憶装置の制御プログラムは、入力ベクトルが入力される入力層と、前記入力ベクトルのパターンをクラス分けして保持する記憶層と、前記記憶層に保持されたクラスの関係を保持する連想層と、を備える連想記憶装置の制御プログラムであって、前記記憶層において、自己増殖型ニューラルネットワークを用いて、前記入力ベクトルのパターンに対応するノードを接続してなるサブネットワークを構成し、当該構成したサブネットワークを表現するクラスを、前記入力ベクトルのパターンのクラスとして学習する記憶層学習ステップと、前記連想層において、前記記憶層において保持されたクラスを、連想のキーとなるキーベクトルのクラスであるキークラスと、当該キーベクトルから想起される連想ベクトルのクラスである連想クラスとして扱い、前記キークラスと前記連想クラスとの間に関連を張る連想層学習ステップと、前記キーベクトルが与えられた場合に、当該キーベクトルのキークラス又は当該キークラスに関連する連想クラスに対応するノードの重みを想起結果として出力する想起ステップと、をコンピュータに実行させるものである。
【発明の効果】
【００１７】
本発明によれば、上述した要求される機能に関して、従来の連想記憶システムよりも優れた性能を持つ連想記憶装置、連想記憶方法、及びプログラムを提供することができる。
【図面の簡単な説明】
【００１８】
【図１】本実施の形態１に係る連想記憶装置１の構成を示す機能ブロック図である。
【図２】本実施の形態１に係る連想記憶装置１の構成を示す概念図である。
【図３】本実施の形態１に係る連想記憶装置１を実現するためのシステム構成の一例を示す図である。
【図４】本実施の形態１に係る連想記憶装置１の全体動作を示すフローチャートである。
【図５】記憶層での学習処理に用いる変数の定義を示す表である。
【図６】記憶層での学習処理に用いる変数の定義を示す表である。
【図７】記憶層での学習処理（アルゴリズムＡ）を示すフローチャートである。
【図８】連想層での学習処理に用いる変数の定義を示す表である。
【図９】連想層での学習処理（アルゴリズムＢ）を示すフローチャートである。
【図１０】系列データの学習処理（アルゴリズムＣ）を示すフローチャートである。
【図１１】記憶パターンの想起処理（アルゴリズムＤ）を示すフローチャートである。
【図１２】系列データの想起処理（アルゴリズムＥ）を示すフローチャートである。
【図１３】本実験で用いる人工データを示す図である。
【図１４】人工データに対する、記憶層におけるノード数を示す表である。
【図１５】非定常オンライン環境での、人工データの構成を示す表である。
【図１６】本実験で用いるバイナリ形式の文字セットを示す図である。
【図１７】ノイズを加えた画像を示す図である。
【図１８】２値データの想起率の比較結果を示す表である。
【図１９】一対多の連想セットを示す図である。
【図２０】ノイズを加えた時の、各手法の比較結果を示すグラフである。
【図２１】本実験で用いる顔画像のデータセットを示す図である。
【図２２】本実験で用いる２種類の系列データを示す図である。
【図２３】従来手法（ＴＡＭ）による想起結果を示す図である。
【図２４】従来手法（ＳＯＭ）による想起結果を示す図である。
【図２５】従来手法（ＳＯＭ−ＡＭ）による想起結果を示す図である。
【図２６】本発明による想起結果を示す図である。
【図２７】本実験で用いるオブジェクトを示す図である。
【図２８】本実験で用いるヒューマノイドロボットを示す図である。
【図２９】本発明による効果を説明するための図である。
【発明を実施するための形態】
【００１９】
実施の形態１．
以下、図面を参照して本発明の実施の形態について説明する。
【００２０】
＜１：構成＞
図１は、本実施の形態に係る連想記憶装置１の構成を示す機能ブロック図である。連想記憶装置１は、学習部１０と想起部２０を備えている。学習用データＤＢ３０は、クラス名を持つ入力ベクトルのパターンを格納する。連想記憶装置１は、学習用データＤＢ３０に格納されたデータを学習し、入力されるキーベクトルから想起結果を出力する。尚、後述するように、連想記憶装置１は、図２に示す概念構造を有しており、入力層２と、記憶層３と、連想層４と、の３層から構成される。
【００２１】
学習部１０は、記憶層学習手段１１と、連想層学習手段１２と、系列情報学習手段１３と、を備えている。
【００２２】
記憶層学習手段１１は、記憶層３において、自己増殖型ニューラルネットワークを用いて学習を行う。記憶層学習手段１１は、入力ベクトルのパターンに対応するノードを接続する。互いに接続されたノードが、サブネットワークを構成する。記憶層学習手段１１は、その構成したサブネットワークを表現するクラスを、入力ベクトルのパターンのクラスとして学習する。
【００２３】
連想層学習手段１２は、記憶層３において保持されたクラスを、連想層４において、連想のキーとなるキーベクトルのクラスであるキークラスとして扱う。また、連想層学習手段１２は、記憶層３において保持されたクラスを、連想層４において、キーベクトルから想起される連想ベクトルのクラスである連想クラスとして扱う。さらに、連想層学習手段１２は、連想層４において、キークラスと連想クラスとの間に関連を張る。
【００２４】
系列情報学習手段１３は、時刻情報を持つ入力ベクトルのパターンの系列が与えられた場合に、その時刻情報に基づいて、連想層４におけるノードが持つ時刻情報を更新する。
【００２５】
想起部２０は、自己想起手段２１と、相互想起手段２２と、系列情報想起手段２３と、を備えている。
【００２６】
自己想起手段２１は、入力されたキーベクトルのキークラスに対応するノードの重みを、想起結果として出力する。
【００２７】
相互想起手段２２は、連想層４においてキークラスと連想クラスとの間に張られた関連に基づき、入力されたキーベクトルのキークラスから連想される連想クラスを取得する。そして、その取得した連想クラスに対応するノードの重みを想起結果として出力する。
【００２８】
系列情報想起手段２３は、入力されたキーベクトルのキークラスに対応するノードを取得する。そして、その取得したノードの持つ時刻情報に基づいて、系列上のノードの重みベクトルを順次出力する。
【００２９】
図２は、本実施の形態に係る連想記憶装置１の構成を示す概念図である。連想記憶装置１は、入力層２と、記憶層３と、連想層４と、の３層構造によって構成される。連想記憶装置１は、その３層構造をもって、目標とした各性質を実現する。
【００３０】
入力層２は、パターン入力のインターフェースである。入力層２は、異なる種類のパターン（２値、非２値等）を仕分けるインターフェースとして機能し、記憶層３に対してパターンを送る。連想記憶装置１では、入力層２を介して、クラスラベルを伴った入力ベクトル（キーベクトル又は連想ベクトル）がシステムに入力される。図２において、入力層２に白丸で示す点が、個々の入力ベクトルとそのクラスラベルを示している。
【００３１】
記憶層３は、オンライン学習に対応して、入力ベクトルのパターンをクラスとして保持する。記憶層３では、各入力パターンに対応するサブネットワークが用意され、後述する学習処理によって、パターンの保管がオンラインに行われる。また、記憶層３では、文脈を持つ時系列データにおける個々のパターンが保管され、連想層４では、その時間的な順序が記憶される。図２において、記憶層３に白丸で示す点は、後述するアルゴリズムＡによる入力パターンの学習結果として作成されるノードを示し、ノードの接続集合がサブネットワークを示す。例えば、Ａ、Ｋ、Ｘなどが、記憶層３におけるサブネットワークの各クラス名を示している。
【００３２】
連想記憶装置１では、入力ベクトルのクラスラベルに従って記憶層３の関連するサブネットワークを探索することで、新たな入力情報の学習を行う。もし入力となるキーベクトルや連想ベクトルが記憶層３に発見されなかった場合には、その入力は新しいクラスを表現する最初のノードとなり、記憶層３に追加される。
【００３３】
連想層４は、記憶層３に保持された入力パターンのクラスについて、その連想関係を保持する。連想記憶装置１では、記憶層３のクラスラベルが連想層４に送られ、キーベクトルのクラス（キークラス）と連想ベクトルのクラス（連想クラス）の間に、方向性を持つ関連を形成する。図２において、連想層４における一つのノード（白丸で示す点）は、記憶層３における一つのサブネットワークを意味する。また、連想層４における矢印は、ノード間に構築された連想関係を示している。始端はキークラスであり、終端は連想クラスである。
【００３４】
連想記憶装置１では、自律的な連想（パターン認識）は記憶層３で実現され、他クラスへの連想は連想層４を参照する事で実現される。また、連想層４の表現は、一対一、一対多、多対一、多対多のいかなる場合にも対応可能である。
【００３５】
以上のような連想記憶装置１は、専用コンピュータ、パーソナルコンピュータ（ＰＣ）などのコンピュータにより実現可能である。但し、コンピュータは、物理的に単一である必要はなく、分散処理を実行する場合には、複数であってもよい。図３は、本実施の形態に係る連想記憶装置１を実現するためのシステム構成の一例を示す図である。図３に示すように、コンピュータ４０は、ＣＰＵ４１（Central Processing Unit）、ＲＯＭ４２（Read Only Memory）及びＲＡＭ４３（Random Access Memory）を有し、これらがバス４４を介して相互に接続されている。尚、コンピュータを動作させるためのＯＳソフトなどは、説明を省略するが、この連想記憶装置１を構築するコンピュータも当然備えているものとする。
【００３６】
バス４４には又、入出力インターフェース４５も接続されている。入出力インターフェース４５には、例えば、キーボード、マウス、センサなどよりなる入力部４６、ＣＲＴ、ＬＣＤなどよりなるディスプレイ、並びにヘッドフォンやスピーカなどよりなる出力部４７、ハードディスクなどより構成される記憶部４８、モデム、ターミナルアダプタなどより構成される通信部４９などが接続されている。
【００３７】
ＣＰＵ４１は、ＲＯＭ４２に記憶されている各種プログラム、又は記憶部４８からＲＡＭ４３にロードされた各種プログラムに従って各種の処理、本実施の形態においては、例えば学習処理や想起処理を実行する。各種プログラムには、後述するアルゴリズムＡ〜Ｅが実装されたプログラムが含まれる。ＲＡＭ４３には又、ＣＰＵ４１が各種の処理を実行する上において必要なデータなども適宜記憶される。通信部４９は、例えば図示しないインターネットを介しての通信処理を行ったり、ＣＰＵ４１から提供されたデータを送信したり、通信相手から受信したデータをＣＰＵ４１、ＲＡＭ４３、記憶部４８に出力したりする。記憶部４８はＣＰＵ４１との間でやり取りし、情報の保存・消去を行う。通信部４９は又、他の装置との間で、アナログ信号又はディジタル信号の通信処理を行う。入出力インターフェース４５は又、必要に応じてドライブ５０が接続され、例えば、磁気ディスク５０１、光ディスク５０２、フレキシブルディスク５０３、又は半導体メモリ５０４などが適宜装着され、それらから読み出されたコンピュータプログラムが必要に応じて記憶部４８にインストールされる。
【００３８】
＜２：全体動作＞
図４は、本実施の形態に係る連想記憶装置１の全体動作を示すフローチャートである。
Ｓ１０１：まず、連想記憶装置１は、入力層２を介して、入力ベクトル（キーベクトル、連想ベクトル）が入力される。尚、必要な場合には、その入力ベクトルのクラス名が併せて入力される。
Ｓ１０２：次いで、連想記憶装置１は、学習処理を行うか否かの判定を行う。
Ｓ１０３：Ｓ１０２での判定の結果、学習処理を行う場合（Ｓ１０２でＹｅｓの場合。）には、連想記憶装置１は、系列情報の記憶を行うか否かの判定を行う。
【００３９】
Ｓ１０４、Ｓ１０５：Ｓ１０３での判定の結果、系列情報の記憶を行わない場合（Ｓ１０３でＮｏの場合。）には、連想記憶装置１は、連想層４及び記憶層３での学習処理を行う。Ｓ１０４での処理は、後述するアルゴリズムＢにより示される。連想記憶装置１は、Ｓ１０４での連想層４の学習処理（アルゴリズムＢ）においては、後述するＳ１０５での処理（アルゴリズムＡ）を呼び出して実行する。
【００４０】
Ｓ１０６：Ｓ１０３での判定の結果、系列情報の記憶を行う場合（Ｓ１０３でＹｅｓの場合。）には、連想記憶装置１は、系列情報の記憶処理を行う。Ｓ１０６での処理は、後述するアルゴリズムＣにより示される。連想記憶装置１は、Ｓ１０６での系列情報の記憶処理（アルゴリズムＣ）においては、Ｓ１０４での処理（アルゴリズムＢ）を呼び出して実行する。さらに、連想記憶装置１は、Ｓ１０４での連想層４の学習処理（アルゴリズムＢ）において、Ｓ１０５での処理（アルゴリズムＡ）を呼び出して実行する。
【００４１】
Ｓ１０７：次に、Ｓ１０２での判定の結果、学習処理を行わない場合（Ｓ１０２でＮｏの場合。）には、連想記憶装置１は、系列情報の想起処理を行うか否かの判定を行う。
Ｓ１０８：Ｓ１０７での判定の結果、系列情報の想起を行わない場合（Ｓ１０７でＮｏの場合。）には、連想記憶装置１は、記憶パターンの想起処理を行う。Ｓ１０８での処理は、後述するアルゴリズムＤにより示される。
Ｓ１０９：そして、連想記憶装置１は、想起結果を出力する。
【００４２】
Ｓ１１０：Ｓ１０７での判定の結果、系列情報の想起を行う場合（Ｓ１０７でＹｅｓの場合。）には、連想記憶装置１は、系列情報の想起処理を行う。Ｓ１１０での処理は、後述するアルゴリズムＥにより示される。連想記憶装置１は、Ｓ１１０での系列情報の想起処理（アルゴリズムＥ）においては、Ｓ１０８での処理（アルゴリズムＤ）を呼び出して実行する。
Ｓ１１１：そして、連想記憶装置１は、系列想起結果を出力する。
【００４３】
＜３：学習アルゴリズム＞
記憶層３の学習においては、次の２点が重要となる。一つは、実数値ベクトルの入力パターンをどのように記録するかという問題である。もう一つは、どのようにして逐次学習を実現するかという問題である。新たなパターンが入力として与えられた場合に、既存のパターンが破壊される事無く記憶される必要がある。
【００４４】
連想層４の学習においては、キーベクトルと連想ベクトルのペアが与えられ、これらベクトル同士の関連が、連想層４に記憶される。また、時系列データの文脈関係についても入力データとして連想層４に渡される。連想層４では、連想関係と文脈の時間的順序とを記憶する。
【００４５】
＜３−１：記憶層での学習処理＞
まず、記憶層３での学習処理について説明する。記憶層３はいくつかのサブネットワークで構成され、各サブネットワークは一つのクラスを表現する。一つのクラスに属する全てのパターンは、関連したサブネットワーク内に記憶される。連想記憶装置１は、競合学習を元にしたもので、実数値パターンとオンライン学習の要求を満たす事ができる。神経回路網におけるノードの重みベクトルを、入力データの分布を表現するために用いる。
【００４６】
従来から、入力データの分布を表現する手法がいくつか存在する。自己組織化マップ（ＳＯＭ）（非特許文献１４）は、高次元の信号から低次元の位相構造へとマッピングする手法として良く知られている。しかし、予めネットワーク構造を定めておく必要があり、結果として得られるマッピングは、そのサイズとオンライン学習性能について制約を受けてしまうという問題がある。また、競合学習（ＣＨＬ）とニューラルガス（ＮＳ）（非特許文献１５）の組み合わせについても、予めネットワークサイズを決めなければならないという問題を持つ。Ｇｒｏｗｉｎｇ  ｎｅｕｒａｌ  ｇａｓ（ＧＡＧ）（非特許文献１７）は、ノードの数が予め決められていない場合に、ノードの数が恒久的に増加していくという欠点がある。自己増殖型ニューラルネットワーク（ＳＯＩＮＮ）（非特許文献１６）において、事前にネットワークの構成やサイズを決定しない位相表現のオンライン学習法について議論されている。競合学習以外にもＳＶＭ（非特許文献１８）や誤差逆伝搬法によるニューラルネット（非特許文献１９）を用いたいくつかの方法が検討されているが、それらの方法はオンライン学習という観点からは好ましいものではない。
本実施の形態に係る連想記憶装置１では、ＳＯＩＮＮに基づくアルゴリズムであって、学習パラメータ数をより抑えたアルゴリズムを、記憶層３の形成に採用する。
【００４７】
＜記憶層の学習：アルゴリズムＡ＞
図７は、記憶層３での学習処理（アルゴリズムＡ）を示すフローチャートである。アルゴリズムＡは、連想記憶装置１における記憶層３の学習アルゴリズムである。図５及び図６は、記憶層３での学習処理に用いる変数と、その定義を示す表である。
【００４８】
Ｓ２０１：まず、連想記憶装置１は、記憶層３のネットワークの初期化処理を行う。すなわち、記憶層３のノード集合Ａと、記憶層３のサブネットワーク集合Ｓと、記憶層３の接続集合Ｃを空集合とする（すなわち、以下の数（１）に示す処理を行う）。尚、連想記憶装置１は、各処理の処理結果を一時記憶部（例えばＲＡＭ４３）に格納すると共に、格納した処理結果に対して更なる処理を実行する、或いは、格納した処理結果を用いて他の処理を実行する。
0005458791.tif 000002
【００４９】
Ｓ２０２：次いで、連想記憶装置１は、入力層２を介して、名前ｃｘを持つパターンｘを記憶層３へと入力する。名前ｃｘを持つパターンｘ∈Ｒｎは、学習用データＤＢ３０に格納されている。すなわち、クラス名がｃｘであるパターンｘの入力を行う。
Ｓ２０３：連想記憶装置１は、記憶層３において、入力されたパターンｘの名前ｃｘを持つサブネットワークが既に形成されて存在しているか否かを判定する。
【００５０】
Ｓ２０４：Ｓ２０３での判定の結果、名前ｃｘを持つサブネットワークが存在していない場合（Ｓ２０３でＮｏの場合。尚、Ｓ２０３でＹｅｓの場合には、Ｓ２０６へと進む。）には、連想記憶装置１は、新たなサブネットワークとしてサブネットワークｃｘを記憶層３に追加する。また、追加するサブネットワークｃｘはノードｃ１ｘを伴い、記憶層３のノード集合Ａに、このノードｃ１ｘを追加する。すなわち、以下の数（２）に示す処理を行う。
0005458791.tif 000003
Ｓ２０５：連想記憶装置１は、追加したノードｃ１ｘに関して、以下の数（３）に示すように、ノードのパラメータ（ノードの重みベクトルＷｉ、ノードの閾値Ｔｈｉ、勝者ノードに選ばれた回数Ｍｉ、次点として選ばれた回数Ｎｉ）の初期値を設定する。
0005458791.tif 000004
【００５１】
Ｓ２０６：連想記憶装置１は、サブネットワークｃｘ内において、入力したパターンｘの最近傍ノードｓ１（勝者ノード）と、２番目に近いノードｓ２（次点ノード）を探索する。すなわち、以下の数（４）に示すように、サブネットワークｃｘ内に含まれるノードｉについて、ノードｉの重みベクトルＷｉと入力パターンｘの間の距離を比較し、最も距離が近いノードを最近傍ノードとし、２番目に近いノードを次点ノードとして探索する。
0005458791.tif 000005
さらに、連想記憶装置１は、勝者ノードｓ１について勝者ノードとして選ばれた回数Ｍｉを更新し、次点ノードｓ２について次点ノードとして選ばれた回数Ｎｉを更新する。すなわち、以下の数（５）に示す処理を行う。
0005458791.tif 000006
【００５２】
Ｓ２０７：連想記憶装置１は、勝者ノードｓ１と入力ベクトルｘの間の距離が、勝者ノードｓ１の閾値Ｔｈｓ１よりも大きいか否かを判定する。すなわち、以下の数（６）を満たすか否かの判定を行う。
0005458791.tif 000007
【００５３】
Ｓ２０８：Ｓ２０７での判定の結果、勝者ノードｓ１と入力ベクトルｘとの間の距離が閾値Ｔｈｓ１よりも大きい場合には（Ｓ２０７でＹｅｓの場合。尚、Ｓ２０７でＮｏの場合には、Ｓ２１１へと進む。）、連想記憶装置１は、新しいノードｃｎｅｗｘをサブネットワークｃｘに追加する。
Ｓ２０９：連想記憶装置１は、追加するノードｃｎｅｗｘに関して、以下の数（７）に示すように、ノードのパラメータ（ノードの重みベクトルＷｉ、ノードの閾値Ｔｈｉ、勝者ノードに選ばれた回数Ｍｉ、次点として選ばれた回数Ｎｉ）の値を設定する。
0005458791.tif 000008
Ｓ２１０：次いで、連想記憶装置１は、勝者ノードｓ１の閾値Ｔｈｓ１を更新する。すなわち、以下の数（８）に示す処理を行う。
0005458791.tif 000009
【００５４】
Ｓ２１１：Ｓ２０７での判定の結果、勝者ノードｓ１と入力ベクトルｘの間の距離が閾値Ｔｈｓ１以下であった場合には（Ｓ２０７でＮｏの場合。すなわち、以下の数（９）を満たす場合。）、連想記憶装置１は、勝者ノードｓ１と次点ノードｓ２の重みベクトルＷｉを更新する。すなわち、以下の数（１０）に示す処理を行う。
0005458791.tif 000010
0005458791.tif 000011
尚、数（１０）におけるδｓ１及びδｓ２は、以下の数（１１）により求められる。
0005458791.tif 000012
さらに、連想記憶装置１は、勝者ノードｓ１の閾値Ｔｈｓ１を更新する。すなわち、以下の数（１２）に示す処理を行う。
0005458791.tif 000013
【００５５】
Ｓ２１３：連想記憶装置１は、勝者ノードｓ１と次点ノードｓ２の間に辺接続が存在するか否かを判定する。
Ｓ２１４：Ｓ２１３での判定の結果、勝者ノードｓ１と次点ノードｓ２の間に辺接続が存在しない場合（Ｓ２１３でＮｏの場合。尚、Ｓ２１３でＹｅｓの場合には、Ｓ２１５へ進む。）には、連想記憶装置１は、勝者ノードｓ１と次点ノードｓ２の辺接続を生成することでノード間にネットワークを張り、生成した辺接続を接続集合Ｃに加える。すなわち、以下の数（１３）に示す処理を行う。
0005458791.tif 000014
【００５６】
Ｓ２１５：連想記憶装置１は、勝者ノードｓ１と次点ノードｓ２の間の辺接続の年齢ａｇｅ（ｓ１，ｓ２）について、値を設定する。すなわち、以下の数（１４）に示す処理を行う。
0005458791.tif 000015
Ｓ２１６：次いで、連想記憶装置１は、勝者ノードｓ１からのパスが存在する全てのエッジ（辺接続）について、その年齢をインクリメント（＋１）する。すなわち、以下の数（１５）に示す処理を行う。
0005458791.tif 000016
【００５７】
Ｓ２１７：連想記憶装置１は、学習を終了するか否かを判定する。学習を終了せずに継続する場合には（Ｓ２１７でＮｏの場合。）、連想記憶装置１は、Ｓ２０２へと戻り、学習を継続する。
Ｓ２１８：連想記憶装置１は、学習を終了する場合（Ｓ２１７でＹｅｓの場合）には、事前に定義した閾値ａｇｅｍａｘを超える年齢のエッジ（辺接続）を削除する。さらに、その結果、隣接関係を持たないノードが現れた場合には、該当するノードについても削除する。
【００５８】
このように、連想記憶装置１は、まず、入力ベクトルｘ（入力ベクトルのパターン）が、記憶層３においてクラス分けされた既存のサブネットワークのいずれかに属するか否かについて、入力ベクトルｘが持つクラス名から判定する。判定の結果、入力ベクトルが、クラス分けされた既存のサブネットワークのいずれにも属さない場合には、入力ベクトルのクラスを表現する新たなサブネットワークを構成して、入力ベクトルをそのサブネットワークの最初のノードとする。一方で、入力ベクトルのクラスと同クラスのサブネットワークが既に存在する場合には、そのサブネットワーク内において、入力ベクトルに最も近い重みベクトルを有する最近傍（勝者）ノードと、次に近い重みベクトルを有する次点ノードを探索する。
【００５９】
そして、連想記憶装置１は、勝者ノードと入力ベクトル間の距離について判定する。判定の結果、勝者ノードと入力ベクトル間の距離が勝者ノードの閾値よりも大きい場合には、入力ベクトルを新たなノードとしてサブネットワークに挿入する。また、同時に、挿入した新たなノードと勝者ノードの閾値を更新する。一方で、入力ベクトルと勝者ノード間の距離が閾値以下であった場合には、勝者ノードの重みベクトルと次点ノードの重みベクトルを更新する。
【００６０】
＜３−２：連想層での学習処理＞
上述したように、連想層４は、キーベクトルと連想ベクトルとの関連を構築するために用いられる。尚、以下では、キーベクトルが属するクラスをキークラスと呼び、連想ベクトルが属するクラスを連想クラスと呼ぶ。
【００６１】
上述したように、連想層４のネットワークが図２に例示されている。すなわち、図２の連想層４において、各ノードは一つのクラスを表し、その関連が、ノード間を結ぶ矢印として示されている。矢印の始点はキークラスを、終点は連想クラスをそれぞれ示している。連想記憶装置１は、まず、上述した図２で示した学習処理（アルゴリズムＡ）を実行することで、キーベクトルと連想ベクトルの情報を記憶層３に記録する。そして、以下に説明するように、連想記憶装置１は、連想層４においてクラスを表現するノードが存在しなかった場合には、新たなクラスを表現するノードを連想層４に追加することで、キークラスと連想クラスの間に関連を張る。
【００６２】
＜連想層の学習：アルゴリズムＢ＞
図９は、連想層４での学習処理（アルゴリズムＢ）を示すフローチャートである。図８は、連想層４での学習処理に用いる変数と、その定義を示す表である。連想記憶装置１は、図９を参照して説明するようにして、キーベクトルと連想ベクトルの関係を連想層４に構築する。
【００６３】
Ｓ３０１：まず、連想記憶装置１は、連想層４のネットワークの初期化処理を行う。すなわち、連想層４のノード集合Ｂと、連想層４の接続集合Ｄを空集合とする（すなわち、以下の数（１６）に示す処理を行う）。
0005458791.tif 000017
【００６４】
Ｓ３０２：次いで、連想記憶装置１は、入力層２を介して、名前ｃｘを持つキーベクトルｘを記憶層３へと入力する。名前ｃｘを持つパターンｘ∈Ｒｎは、学習用データＤＢ３０に格納されている。尚、ｃｘは各クラスの名前を表しており、１つのクラス内には、複数の入力データが含まれている。そして、クラス内で代表とするデータのインデックスをｐｃｘとする。インデックスｐｃｘは、学習時に指定される（例えば、人物Ａさんの顔画像が１０枚ある場合に、その4番目の顔画像を代表ｐｃｘとする。）。さらに、Ｗｐｃｘが、実際のデータ（例えば、顔画像等）を示す。このため、後述するように、記述「Ｗｂ＝Ｗｐｃｘ」は、実際のデータＷｐｃｘをシステム内に保存することを意味する。
Ｓ３０３：連想記憶装置１は、上述した図７に示した処理（アルゴリズムＡ）を実行することで、入力されたキーベクトルｘを記憶層３において学習する。
【００６５】
Ｓ３０４：連想記憶装置１は、記憶層３での学習の結果、記憶層３に保持されるクラスｃｘについて、クラスｃｘに対応するノードが連想層４に存在するか否かを判定する。すなわち、連想記憶装置１は、連想層４において、クラスｃｘを表現するノードを探索する。
Ｓ３０５：Ｓ３０４での判定の結果、クラスｃｘに対応したノードが連想層４に存在しない場合（Ｓ３０４でＮｏの場合。）には、連想記憶装置１は、新たなクラスｃｘを表現するためのノードｂを、連想層４に挿入する。すなわち、以下の数（１７）に示す処理を行う。
0005458791.tif 000018
さらに、連想記憶装置１は、以下の数（１８）に示すように、ノードｂに関するパラメータ（ノードｂのクラス名ｃｘ、ノードｂの重みベクトルＷｉ、ノードｂのインデックスｍｉ）の値を設定する。
0005458791.tif 000019
【００６６】
Ｓ３０６：Ｓ３０４での判定の結果、クラスｃｘに対応したノードが連想層４に存在していた場合（Ｓ３０４でＹｅｓの場合。）には、連想記憶装置１は、ノードｂのインデックスｍｂを更新する。すなわち、以下の数（１９）に示す処理を行う。
0005458791.tif 000020
【００６７】
Ｓ３０７：次いで、連想記憶装置１は、入力層２を介して、名前ｃｙを持つ連想ベクトルｙを記憶層３へと入力する。名前ｃｙを持つ連想ベクトルｙ∈Ｒｍは、学習用データＤＢ３０に格納されている。尚、クラスｃｙ内で代表とするデータのインデックスをｐｃｙとする（ｐｃｙは学習時に指定する）。
Ｓ３０８：連想記憶装置１は、上述した図７に示した処理（アルゴリズムＡ）を実行することで、入力された連想ベクトルｙを記憶層３において学習する。
【００６８】
Ｓ３０９：連想記憶装置１は、連想層４において、クラスｃｙに対応するノードが存在するか否かを判定する。すなわち、連想記憶装置１は、連想層４において、クラスｃｙを表現するノードを探索する。
Ｓ３１０：Ｓ３０９での判定の結果、クラスｃｙに対応したノードが連想層４に存在しない場合（Ｓ３０９でＮｏの場合。）には、連想記憶装置１は、新たなクラスｃｙを表現するためのノードｄを、連想層４に挿入する。すなわち、以下の数（２０）に示す処理を行う。
0005458791.tif 000021
さらに、連想記憶装置１は、以下の数（２１）に示すように、ノードｄに関するパラメータ（ノードｄのクラス名ｃｙ、ノードｄの重みベクトルＷｉ、ノードｄのインデックスｍｉ）の値を設定する。
0005458791.tif 000022
【００６９】
Ｓ３１１：Ｓ３０９での判定の結果、クラスｃｙに対応したノードが連想層４に存在していた場合（Ｓ３０９でＹｅｓの場合。）には、連想記憶装置１は、ノードｄのインデックスｍｄを更新する。すなわち、以下の数（２２）に示す処理を行う。
0005458791.tif 000023
【００７０】
連想記憶装置１は、始点をノードｂとし、終点をノードｄとして、辺接続によりノードｂとｄを連結する。すなわち、以下の数（２３）に示す処理を行う。これにより、ノードｂに対応するクラスｃｘと、ノードｄに対応するクラスｃｙとの間の関連（ｂ，ｄ）が構築される。
0005458791.tif 000024
さらに、連想記憶装置１は、ノードｂの関連するクラス集合を示すＡＣｂについて、ＡＣｂのｍｂ番目の連想クラスを、ｃｄとする。すなわち、以下の数（２４）に示す処理を行う。
0005458791.tif 000025
【００７１】
図９に示した処理（アルゴリズムＢ）では、逐次学習が可能である。例えば、図９に示した処理を実行することでキーベクトルｘ１と連想ベクトルｙ１の関連「ｘ１→ｙ１」を構築した後に、さらに、キーベクトルｘ２と連想ベクトルｙ２の関連「ｘ２→ｙ２」を逐次的に学習させたい場合を想定する。連想記憶装置１は、キーベクトルｘ２に対応するクラスｃｘ２と、連想ベクトルｙ２に対応するクラスｃｙ２について、以下の関連を構築する。
クラスｃｘ２及びｃｙ２が、既存のクラスｃｘ１及びｃｙ１と異なる場合には、単純に、クラスｃｘ２とｃｙ２とを結ぶ連結を作成できればよい。
クラスｃｘ２及びｃｙ２のいずれか一つが、既存のクラスｃｘ１及びｃｙ１と同じである場合（例えば、「ｃｘ２＝ｃｘ１」かつ「ｃｙ２≠ｃｙ１」であるような場合）には、図７で示した処理（アルゴリズムＡ）の実行によりパターンｘ２をサブネットワークｃｘ１に逐次的に記憶させ、図９で示した処理（アルゴリズムＢ）のＳ３０６において、クラスｃｘ１の名前を持つノードｂのインデックスｍｂ（ノードの累積数）がインクリメントされる。そして、図９で示した処理（アルゴリズムＢ）のＳ３０８〜Ｓ３１２において、連想層４にクラスｃｙを表現するノードが作成され、クラスｃｘ１のノードからクラスｃｙ２のノードへの連結が構築される。すなわち、関連「ｘ２→ｙ２」が逐次的に学習される。尚、「ｃｘ２≠ｃｘ１」かつ「ｃｙ２＝ｃｙ１」であるような場合についても同様にして処理されるため、ここではその詳細な説明を省略する。
従って、図９で示した処理（アルゴリズムＢ）の実行により連想層４における関連を構築することで、一対一、一対多、多対一、多対多の連想を構築することができる。
【００７２】
＜系列データの学習：アルゴリズムＣ＞
系列を持つデータについての連想では、連想億装置１は、キーベクトルが与えられた場合に、全体の連想系列をいかにして想起するかが問題となる。与えられるキーベクトルは、全体の系列からランダムに発生した内の一つであるかもしれないし、さらには、そのパターンにノイズがのっている可能性もある。
【００７３】
このため、連想記憶装置１は、時系列の文脈を持ったパターンについての連想を構築するために、系列に含まれる全てのパターンを、キーベクトルかつ連想ベクトルとして考慮する。これは、系列全体に含まれるパターンについて、先行するパターンをキーベクトルとし、それに続くパターンを連想ベクトルとして扱う方法である。この方法の導入により、系列から無作為に取り出されたキーベクトルから、その取り出したキーベクトルに続く系列全体を想起することが可能となる。以下で説明するように、キーベクトルとその文脈は、上述した図９で示した処理（アルゴリズムＢ）における連想関係の構築を通して実現される。また、この処理の際に、時系列情報が連想層４のノードとして保存される。
【００７４】
図１０は、系列データの学習処理（アルゴリズムＣ）を示すフローチャートである。
Ｓ４０１：まず、連想記憶装置１は、学習用データＤＢ３０に格納された時系列データを、入力層２を介して、記憶層３へと入力する。各時刻ｔ１，ｔ２，...，ｔｎの時系列データを、Ｘ＝ｘ１，ｘ２，...，ｘｎとする。また、各時系列データはクラス名を持っており、それぞれのデータに対応するクラス名を、ｃｘ１，ｃｘ２，...，ｃｘｎとする。
【００７５】
Ｓ４０２：連想記憶装置１は、ｋ＜ｎであるか否かを判定する。以下では、ｋ＝１から開始してＳ４０３、Ｓ４０４の処理を行い、Ｓ４０５でｋをインクリメントしてゆくことで、ｋ＝１，...，ｎに対して、Ｓ４０２〜Ｓ４０６の処理を実行する。尚、ｎは入力された時系列データの個数を示す。
Ｓ４０３：Ｓ４０２での判定の結果、ｋ＜ｎである場合（Ｓ４０２でＹｅｓの場合）には、連想記憶装置１は、ｘｋをキーベクトルとし、ｘｋ＋１を連想ベクトルとして、上述した図９で示した処理（アルゴリズムＢ）を実行する。これにより、キーベクトルｘｋと連想ベクトルｘｋ＋１を連結するため、対応するノードｂｘｋとノードｂｘｋ＋１の間に辺接続を作成する。
Ｓ４０４：連想記憶装置１は、ノードｂｘｋの持つ時刻情報（時系列データにおけるノードｉの前番の時刻ＴＦｉ、ノードｉの時刻Ｔｉ、ノードｉの後番の時刻ＴＬｉ）を更新する。すなわち、以下の数（２５）に示す処理を行う。
0005458791.tif 000026
【００７６】
Ｓ４０５：連想記憶装置１は、ｋをインクリメント（＋１）する。すなわち、以下の数（２６）に示す処理を行う。
0005458791.tif 000027
【００７７】
Ｓ４０６：Ｓ４０２での判定の結果、ｋ＜ｎでない場合（Ｓ４０２でＮｏの場合）には、連想記憶装置１は、ｘｋをキーベクトルとし、ｘｋ−１を連想ベクトルとして、上述した図９で示した処理（アルゴリズムＢ）を実行する。また、ｘｋとｘｋ−１に対応する連想層のノードを、それぞれｂｘｋとｂｘｋ−１とする。
【００７８】
＜４：想起処理と結合処理＞
次に、連想記憶装置１による想起処理及び結合処理について説明する。連想記憶モデルでは、自己想起と相互想起について考慮するのが一般的である（非特許文献２０）。自己想起情報は、認識及びパターン補完を支援するものであり、相互想起情報は、対となる他パターンへの連想を支援するものである。ここでは、まず、自己想起アルゴリズムについて確認し、次いで、相互想起における想起アルゴリズムと、相互想起の一対一、一対多、多対一、多対多の場合への適用について説明する。また、系列データに関する想起アルゴリズムについても説明する。
【００７９】
＜４−１：自己想起処理＞
連想記憶装置１は、自己想起処理において、ノイズを含んでいるようなキーベクトルに対しても、記憶層３に記憶されたパターンの中から近いものを提示しなければならない。
連想記憶装置１は、キーベクトルが与えられたときにそのクラス名が取得可能であった場合には、連想層４の対応するノードを見つけ出す。そして、そのノードの重みベクトルを参照して結果を返すだけでよい。
これに対して、入力されたキーベクトルのクラス名が未知であった場合には、キーベクトルと記憶層３に記憶されたノードとの間の親近性に基づいて、入力されたキーベクトルのクラスを探索する。親近性に基づいてクラスを探索する方法としては、ｋ近傍法を用いて探索することができる。ここでは、ｋ近傍法を用いて、キーベクトルが属するクラスを探索することにする。探索の結果、キーベクトルがクラスｃに属すると判定した場合には、連想記憶装置１は、連想層４のクラスｃに対応したノードの重みベクトルを返答する。
【００８０】
＜記憶パターンの想起：アルゴリズムＤ＞
図１１は、記憶パターンの想起処理（アルゴリズムＤ）を示すフローチャートである。尚、図１１で示す処理においては、ｋ近傍探索に関するパラメータｋの設定が重要となるが、ここでは、交差検定を用いてｋの値を決定している。
Ｓ５０１：まず、連想記憶装置１に対して、入力層２を介して、キーベクトルｘが記憶層３へと入力される。
Ｓ５０２：連想記憶装置１は、入力されたキーベクトルｘのクラス名ｃｘが既知であるか否かを判定する。
【００８１】
Ｓ５０３：Ｓ５０２の判定の結果、キーベクトルｘのクラス名ｃｘが既知である場合（Ｓ５０２でＹｅｓの場合）には、連想記憶装置１は、連想層４において、クラス名ｃｘに対応するノードｂを探索する。
【００８２】
Ｓ５０４：Ｓ５０２の判定の結果、キーベクトルｘのクラス名ｃｘが既知でない場合（Ｓ５０２でＮｏの場合）には、連想記憶装置１は、キーベクトルｘについて、記憶層３のネットワーク全体のノード集合Ａから、ｋ近傍のノードを探索する。ここで、探索は以下の数（２７）に基づいて行う。尚、ｋ近傍のノードｓ１，ｓ２，...，ｓｋのクラス名を、それぞれｃ１，ｃ２，...，ｃｋとする。
0005458791.tif 000028
【００８３】
Ｓ５０５：次いで、連想記憶装置１は、クラス名ｃ１，ｃ２，...，ｃｋについて多数決を行い、最も多数であるクラスを代表クラスｃとして決定する。そして、連想記憶装置１は、決定したクラスｃに対応する連想層４のノードｂを取得する。
【００８４】
Ｓ５０６：連想記憶装置１は、キーベクトルｘにより想起された結果として、ノードｂの重みベクトルＷｂを出力する。
【００８５】
＜４−２：相互想起処理＞
相互想起の学習は、人間のエピソード型記憶を実現する最も基本的な試みであるといえる。一般的に、相互想起の問題の定義は、無作為に与えられた項目群（言葉、文字、画像等）に対して、ｘ→ｙの組を想起する形で表現される。
キーベクトルｘから連想ベクトルｙへの連想を実現するために、連想記憶装置１は、まず、キーベクトルｘのキークラスｃｘから、連想層４における対応したノードｂｘを呼び出す。そして、連想記憶装置１は、呼び出したノードｂｘの関連するクラス集合（ＡＣｂｘ［ｋ］，ｋ＝１，...，ｍｂｘ）から、連想されるクラスｃｙとその対応するノードｂｙを取得する。そして、最終的に、キーベクトルｘから連想される出力Ｗｂｙを得る。連想記憶装置１は、キーベクトルｘから一つ以上の連想クラスｃｙが導かれる場合には、全てのパターンを一対多の連想結果として出力する。上述した図１１で示した処理（アルゴリズムＤ）と合わせて考えれば、一対一、一対多、多対一、多対多の連想が実現されているといえる。
【００８６】
＜４−３：系列データの想起＞
上述した図１０では、系列データの学習処理（アルゴリズムＣ）を説明した。連想記憶装置１は、上述した図１０で示した処理（アルゴリズムＣ）を実行することで、キーベクトルかつ連想ベクトルとして系列データ中の全ての要素を学習しており、さらに、連想層４のノードに付随する情報として時間順序も記憶している。
系列データを想起するために、連想記憶装置１は、キーベクトルが与えられた場合に、まず、自己連想処理によってキークラスを探索する。そして、連想記憶装置１は、現在の項目の時刻に対する前項と後項の時刻を得た上で、それら連想された項目を次のキーベクトルとして、順次、時系列全体の想起を行う。
【００８７】
＜系列想起処理：アルゴリズムＥ＞
図１２は、系列データの想起処理（アルゴリズムＥ）を示すフローチャートである。
Ｓ６０１：まず、連想記憶装置１に対して、入力層２を介して、キーベクトルｘが記憶層３へと入力される。
Ｓ６０２：連想記憶装置１は、上述した図１１に示した処理（アルゴリズムＤ）を実行することで、入力されたキーベクトルｘのクラス名ｃｘを特定し、クラス名ｃｘに対応する連想層４のノードｂｘを得る。
【００８８】
Ｓ６０３：連想記憶装置１は、ｋ＜ｍｂｘであるか否かを判定する。以下では、ｋ＝１から開始してＳ６０４〜Ｓ６１５の処理を行い、Ｓ６１６でｋをインクリメントしてゆくことで、ｋ＝１，...，ｍｂｘに対して、Ｓ６０４〜Ｓ６１６の処理を実行する。尚、ｍｂｘはノードｂｘの累積数を示す。
【００８９】
Ｓ６０４：Ｓ６０３での判定の結果、ｋ＜ｍｂｘである場合（Ｓ６０３でＹｅｓの場合）には、連想記憶装置１は、ｋ＝１，...，ｍｂｘについて、以下の数（２８）に示すようにして、時系列におけるノードｉの時刻を示すＴｉから、対応する時間列ｔｋｓを得る。
0005458791.tif 000029
そして、連想記憶装置１は、時間列ｔｋｓのうちから最小の時刻ｔ＊ｓを探し出すとともに、その時刻に対応するインデックスをｋ＊ｓとする。
【００９０】
Ｓ６０５：連想記憶装置１は、キーベクトルｘにより想起された結果として、ノードｂｘの重みベクトルＷｂｘを出力する。また、キーベクトルｘに対応する時刻をｔ＊ｓとする。
Ｓ６０６：時系列で後に並ぶ項目（クラス名）を想起するために、連想記憶装置１は、ノードのインデックスｋＬをｋ＊ｓとし、ノードｂをｂｘとして（すなわち、ｋＬ＝ｋ＊ｓとし、ｂ＝ｂｘとする。）、以下のＳ６０７〜Ｓ６０９の処理を実行する。
【００９１】
Ｓ６０７：連想記憶装置１は、まず、以下の数（２９）に示すようにして、時系列におけるノードｉの後番の時刻を示すＴＬｉから、時系列上で現在の時刻の後にくる時刻ｔｌａｔｔｅｒを求める。
0005458791.tif 000030
そして、連想記憶装置１は、以下の数（３０）に示すようにして、ノードｉの関連するクラス集合ＡＣｉから、連想クラスｃｙを探索する。また、クラスｃｙに対応する連想層４のノードをｂｙとする。
0005458791.tif 000031
【００９２】
Ｓ６０８：連想記憶装置１は、ノードｂｙの重みベクトルＷｂｙを連想結果として出力する。また、次の項目の時刻を、ｔｌａｔｔｅｒとする。
Ｓ６０９：連想記憶装置１は、ノードｂｙのインデックスｋを求め、ｔｌａｔｔｅｒをノードｂｙの時刻Ｔｂｙとする（すなわち、Ｔｂｙ［ｋ］＝ｔｌａｔｔｅｒとする。）。
そして、連想記憶装置１は、ノードのインデックスｋＬをｋとし、ノードｂをｂｙとする（すなわち、ｋＬ＝ｋとし、ｂ＝ｂｙとする。）。
【００９３】
Ｓ６１０：連想記憶装置１は、後項が存在するか否かを判定する。後項が存在する場合（Ｓ６１０でＹｅｓの場合。）には、Ｓ６０７へと戻り、Ｓ６０７〜Ｓ６０９の処理を実行する。後項が存在しない場合（Ｓ６１０でＮｏの場合。）には、Ｓ６１１へと進む。これにより、連想記憶装置１は、Ｓ６０９でインデックスとノードを更新しながら、後項が無くなるまでの間、Ｓ６０７〜Ｓ６０９の処理を繰り返す。
【００９４】
Ｓ６１１：時系列で前に並ぶ項目（クラス名）を想起するために、連想記憶装置１は、ノードのインデックスｋＦをｋ＊ｓとし、ノードｂをｂｘとして（すなわち、ｋＦ＝ｋ＊ｓとし、ｂ＝ｂｘとする。）、以下のＳ６１２〜Ｓ６１４の処理を実行する。
【００９５】
Ｓ６１２：連想記憶装置１は、まず、以下の数（３１）に示すようにして、時系列におけるノードｉの前番の時刻を示すＴＦｉから、時系列上で現在の時刻の前にくる時刻ｔｆｏｒｍｅｒを求める。
0005458791.tif 000032
そして、連想記憶装置１は、以下の数（３２）に示すようにして、ノードｉの関連するクラス集合ＡＣｉから、連想クラスｃｙを探索する。また、クラスｃｙに対応する連想層４のノードをｂｙとする。
0005458791.tif 000033
【００９６】
Ｓ６１３：連想記憶装置１は、ノードｂｙの重みベクトルＷｂｙを連想結果として出力する。また、次の項目の時刻を、ｔｆｏｒｍｅｒとする。
Ｓ６１４：連想記憶装置１は、ノードｂｙのインデックスｋを求め、ｔｆｏｒｍｅｒをノードｂｙの時刻Ｔｂｙとする（すなわち、Ｔｂｙ［ｋ］＝ｔｆｏｒｍｅｒとする。）。
そして、連想記憶装置１は、ノードのインデックスｋＦをｋとし、ノードｂをｂｙとする（すなわち、ｋＦ＝ｋとし、ｂ＝ｂｙとする。）。
【００９７】
Ｓ６１５：連想記憶装置１は、前項が存在するか否かを判定する。前項が存在する場合（Ｓ６１５でＹｅｓの場合。）には、Ｓ６１２へと戻り、Ｓ６１２〜Ｓ６１４の処理を実行する。前項が存在しない場合（Ｓ６１５でＮｏの場合。）には、Ｓ６１６へと進む。これにより、連想記憶装置１は、Ｓ６１４でインデックスとノードを更新しながら、前項が無くなるまでの間、Ｓ６１２〜Ｓ６１４の処理を繰り返す。
【００９８】
Ｓ６１６：連想記憶装置１は、ｋをインクリメント（＋１）する。すなわち、以下の数（３３）に示す処理を行う。これにより、連想記憶装置１は、ｋがｍｂｘと等しくなるまでの間、Ｓ６０４〜Ｓ６１５の処理を繰り返す。
0005458791.tif 000034
【００９９】
このように図１２に示した処理（アルゴリズムＥ）では、連想記憶装置１は、まず、キーベクトルに対応した連想項（連想クラス）を導出する。そして、連想記憶装置１は、連想層４における時間順序に基づいて、導出した連想項の前後に並ぶ項目を探索する。各項目に対して、系列データ中における時間は必ず一つだけ記録されている。このため、系列データ中に多数の重複や反復が存在している場合においても、連想記憶装置１は、系列データ全体を想起することが可能である。
【０１００】
＜５：実験＞
続いて、本発明の実施の形態に係る連想記憶装置１による効果について説明する。このため、連想記憶装置１に対して行った実験について以下で述べる。まず、人工データに対して、上述した図７で説明した学習処理（アルゴリズムＡ）を適用した場合の、クラス形成のようすについて検証する。次に、実データに対する、連想記憶装置１の記憶と連想効率について述べる。最後に、いくつかの系列データに対して、連想記憶装置１と他の方法との比較実験の結果を示す。
【０１０１】
＜５−１：人工データ＞
【０１０２】
本実験では、非特許文献１６の研究においても用いられている、図１３に示す人工データを用いて実験を行う。図１３（ａ）は実験に用いたデータセットを示している。図１３（ａ）に示すように、データセットは、２個のガウス分布と、２個の同心円と、１個の正弦曲線と、からサンプリングしたパターンに対して、約１０％のノイズを混入したものである。本実験では、クラスラベルを付与したパターンをシステムに順次入力した場合に、同じクラスに属するパターンのみが接続を持ち、異なるクラス間に接続が生成されない事を示す。尚、２個のガウス分布にはそれぞれクラスＡ及びＢのクラスが、２個の同心円にはそれぞれクラスＣ及びＤが、１個の正弦曲線にはクラスＤが割り当てられている。
【０１０３】
まず始めに、データの入力状況に関して、定常的に分布の時間変化が生じない人工データを与えた場合についての結果を示す。ここでは、５クラスの人工データをランダムにシステムに入力した場合について、ａｇｅｍａｘ＝５０としたときの、アルゴリズムＡによって学習された結果を示す。図１３（ｂ）は、学習結果を示している。図１３（ｂ）に示すように、連想記憶装置１は、異なるノード集合によって５クラス全てをよく分離して記憶している事が確認できる。
【０１０４】
図１４は、定常状態において得られた、記憶層３におけるノードの数を示している。図１４に示すように、定常状態の下では、システムは、全ての入力パターンを限られたノード数で自律的に記憶する事が可能である。さらに、パターンの数を増やしていく場合でも、定常状態である限り、ノード数が大きく増える事はない。また、各ノードの位置更新についても、位置更新の収束性を持つために、大きく変更されることはない。
【０１０５】
次に、非定常的な状況下で人工データを与えた場合についての結果を示す。この状況の下では、新たなクラスが学習中に新しく増え、さらに、クラスの分布が逐次的に変化する。図１５は、非定常オンライン環境での人工データの構成を示している。図１５では、各ステージ（ステージI〜V）においてシステムに与えるクラス（クラスＡ〜Ｅ）を示しており、表中に１と記されたクラスについての入力が行われている。連想記憶装置１は、ステージを経る毎に新たなクラスを学習し、また、再入力に対してノードの修正が働く。そして、最終的には、図１３（ｃ）に示す結果となる。また、連想記憶装置１は、学習中に新しいクラスの入力が発生した場合にも、既存のクラスが影響を受ける事はない。本実験から、連想記憶装置１は、学習によって形成されるノード数とその配置を自動的に決定しており、さらに、逐次学習にも対応している事が確認できる。また、連想記憶装置１は、ノード数が入力パターン数に依存しないために、入力を永続的に与えてパターン数が増えた場合でも処理が可能である。
【０１０６】
＜５−２：２値データ＞
既存の連想記憶システムでは、２値データのみを扱う事が可能なものも多い。このため、本実験では、バイナリ形式の文字セットであるＩＢＭ  ＰＣ  ＣＧＡフォントを用いる実験結果を示す。尚、同様の文字セットによる実験は、ＳＯＩＡＭ（非特許文献９、特許文献１）やＫＦＭＡＭ（非特許文献８）等でも行われている。
【０１０７】
図１６は、本実験で用いるバイナリ形式の文字セットを示す図である。図１６に示すように、文字セットは２６個の大文字と２６個の小文字を含み、各文字は各７×７画素の２値画像からなる。学習処理では、大文字をキーベクトルとし、小文字を連想ベクトルとして用いた。実験では、連想記憶装置１と、ＳＯＩＡＭ（非特許文献９、特許文献１）と、ＰＲＬＡＢを用いた双方向連想記憶（非特許文献２１）と、ＫＦＭＡＭ（非特許文献８）と、シナプス硬直条件を用いたＫＦＭＡＭ−ＦＷ（非特許文献２２）と、の比較を行う。連想記憶装置１ではａｇｅｍａｘ＝５０と設定し、他の手法については非特許文献９の表Iで示される設定と同様の設定とした。
【０１０８】
連想記憶装置１では、各文字を１つのクラスと考え、５２クラス問題とした。また、トレーニングセットを拡張するため、１０％のノイズをランダムに加えた画像を、オリジナルを含めて１００枚生成し、各クラスのパターンとした。図１７は、オリジナル画像と、ノイズを加えた画像を示す図である。学習処理では、Ａ→ａ，Ｂ→ｂ，...，Ｚ→ｚと逐次的に入力を与えて学習を行う。
【０１０９】
図１８は、２値データの想起率についての他手法との比較結果を示す表である。連想記憶装置１は、全５４クラスの記憶に９４個のノード数を要し、その想起率は１００％であった。ＢＡＭとＫＦＭＡＭについては逐次学習に対応していないため、後に入力されたパターンが先に記憶されたパターンを破壊してしまう。ＳＯＩＡＭは、連想対を表現するために９９個のノードを要し、その想起率は１００％であった。ＫＦＭＡＭ−ＦＷは、十分なノード数（３６個以上）を確保した場合には、１００％の想起率を提示する事ができた。ただし、ＫＦＭＡＭ−ＦＷは、学習されるパターン数の最大値が予め分かっていない場合には適用困難であるという問題がある。
【０１１０】
ＳＯＩＡＭに対する比較として、一対多の連想について考察を行った。ＢＡＭやＫＦＭＡＭによる方法は、一対多の連想に適用不可である。ＳＯＩＡＭは、逐次的に新しい連想対が入力された場合、この連想対を一つのベクトルに統合した上でクラスタリング処理を行っている。例えば、図１９に示す一対多の連想セット（非特許文献９や特許文献１）の学習において、連想記憶装置１とＳＯＩＡＭは、ともに、オンライン学習で１００％の想起率を達成した。しかし、ＳＯＩＡＭは、それぞれの対応を新たなノードとして扱い、最終的に、８１ノードを追記する必要があった。これに対して、連想記憶装置１は、記憶層３と連想層４の両方において、新たなノードを追加する必要がない。つまり、Ａ→ｂの連想を実現したい場合には、単に、Ａからｂへの関連を連想層４に追加するだけでよいという利点を有する。さらに、ＳＯＩＡＭは、複雑な多対多関係が加わる場合には、それぞれ独立にノードを生成していくため、組み合わせの数に対するデータ量の増大に注意する必要がある。一方、連想記憶装置１については、そのような問題を生じる事無く、多対多の連想を実現する事が可能である。
【０１１１】
最後に、ノイズを含んだケースについて、上述した手法が受ける影響についてのテスト結果を示す。実験では、大文字データに対してある程度のノイズを挿入し、これをキーベクトルとして用いた。各文字について、ノイズを含む１００個の文字をキーベクトルとし、合計で、２６００個のキーベクトルを作成した。図２０は、ノイズを加えた時の、各手法の比較結果を示すグラフである。連想記憶装置１（図において、ＧＡＭ（Ｇｅｎｅｒａｌ  Ａｓｓｏｃｉａｔｉｖｅ  Ｍｅｍｏｒｙ）として示す。）とＳＯＩＡＭは、ともにノイズに対して頑強であるといえる。例えば、ノイズレベルが２０％の場合に、連想記憶装置１とＳＯＩＡＭの想起率は９１．３％である。これに対して、他の手法では７０％を下る想起率であった。ノイズレベルが２４％の場合では、連想記憶装置１とＳＯＩＡＭが８５％を超えるのに対して、他の手法では５５％を下回り、より顕著に優位性を確認する事ができた。
【０１１２】
＜５−３：実数データ＞
次に、実数データに対する実験結果を説明する。図２１は、本実験で用いる顔画像のデータセットを示す図である。図２１に示すように、本実験では、４０人について各１０枚の画像から構成されるＡＴ＆Ｔ社の顔データベースを用いた。各画像は１１２×９２画素のグレースケールにより構成されている。実験では、データを入力する前に各画素値を［−１，１］に変換し、それら変換した画像を用いた。各人物について５枚の画像を学習に使用し、残り５枚をテストに使用した。
【０１１３】
データの入力は非定常な状況を想定し、１０クラス５０パターンをシステムに逐次的に入力する。トレーニングに際して、ＳＯＩＡＭの場合には、キーベクトルと連想ベクトルの結合を前処理に含めている。連想記憶装置１は、ａｇｅｍａｘ＝５０とした場合、入力パターンの記憶に２２ノードを生成した。連想層４においては１０クラスを表現する１０ノードの形成が行われる。想起処理での結果は２０回の交差検定で算出されたものである。パラメータの調整によりＳＯＩＡＭの結果は最高で９５．３％を示し、連想の構築に１０１ノードを要した。連想記憶装置１は、アルゴリズムＤにおいてｋ＝１とした場合に９６．１％の想起率となり、ＳＯＩＡＭを上回る結果となった。尚、本データに対しては連想記憶装置１とＳＯＩＡＭの比較のみを行ったが、これは他の手法が実数データの自己想起に対応していないためである。
【０１１４】
＜５−４：系列データ＞
次に、系列データに対する実験結果を説明する。系列データについては、連想記憶装置１と、ＳＯＭ  Ａｓｓｏｃｉａｔｉｖｅ  Ｍｅｍｏｒｙ（ＳＯＭ−ＡＭ）（非特許文献１２）と、Ｔｅｍｐｏｒａｌ  Ａｓｓｏｃｉａｔｉｖｅ  Ｍｅｍｏｒｙ（ＴＡＭ）（非特許文献５）と、ｃｏｎｖｅｎｔｉｏｎａｌ  （非特許文献２２）と、の比較実験を行った。非特許文献１２に則り、図２２に示す、２種類の系列データを用いて実験を行った。
【０１１５】
実験では、まず、系列データ：Ａ→Ｂ→Ｃ→Ｄ→Ｅを学習した上で、系列データ：Ｆ→Ｇ→Ｃ→Ｈ→Ｉをオンライン学習する。ここで、これら２つの系列データ中に、重複する要素Ｃが含まれている点に注意する。図２３は、従来手法（ＴＡＭ）による想起結果を示す図である。図２３に示すように、ＴＡＭは一対多には対応しておらず、想起結果は不完全なものとなった。図２４は、従来手法（ＳＯＭ）による想起結果を示す図である。図２４に示すように、ｃｏｎｖｅｎｔｉｏｎａｌ  ＳＯＭについては時系列の文脈情報が考慮されていない設計となっているため、正しい想起が実現できなかった。図２５は、従来手法（ＳＯＭ−ＡＭ）による想起結果を示す図である。図２５に示すように、ＳＯＭ−ＡＭは重複を回避するために反復的に異なるベクトルを用いており、両方の系列データを正確に想起する事が出来た。
【０１１６】
図２６は、連想記憶装置１による想起結果を示す図である。上述したように、連想記憶装置１では、始めに、系列データ中の要素を異なるクラスとして記憶層３に保持する。その後、連想層４において連想関係が構築される。上述したアルゴリズムＥを用いた場合、いかなるキーベクトルを入力として与えた場合においても、系列データ全体を正確に想起する事が可能であった。例えば、図２６の上段に示すように、キーベクトルとしてＡ、Ｂ、Ｄ、Ｅのいずれを入力として与えることでも、その左側に示す、系列データ全体（Ａ→Ｂ→Ｃ→Ｄ→Ｅ）を想起することができる。
また、ＳＯＭ−ＡＭの場合には、キーベクトルとしてＡを指定した場合のみ最初の系列データ全体を、また、Ｆを指定した場合のみ２番目の系列データを想起する事が可能であった。これに対して、連想記憶装置１は、キーベクトルとしてＣのみを与えることで、両方の系列全体を想起することが可能であった。例えば、図２６の下段に示すように、キーベクトルとしてＣのみを与えることで、系列データ：Ａ→Ｂ→Ｃ→Ｄ→Ｅと、系列データ：Ｆ→Ｇ→Ｃ→Ｈ→Ｉの両方を想起することができる。
【０１１７】
＜５−５：種類の異なるデータ＞
最後に、種類の異なるデータに対する実験結果を説明する。本実験では、画像と音声のセンサを搭載したヒューマノイドロボットに連想記憶装置１を搭載し、画像と音声の連想関係を利用して行動させた実験について示す。実験には、図２８に示す、富士通株式会社製の研究開発用ヒューマノイドロボットＨＯＡＰ（登録商標）３を用いた。実験では、図２７に示す４個のオブジェクト（２種類のデータ）を用いる。図２７（ｃ）に示す「ベル」と、図２７（ｄ）に示す「ドラム」については、画像の教示時に音を同時に発生させ、画像と音声の連想関係を与えるものとする。本実験では、画像特徴にはグレースケール変換後の３６次元ＤＣＴ低周波係数を用い、音声特徴にはサンプリング周波数２０ｋＨｚ、フレーム長５０ｍｓによる１５次元スペクトル特徴を用いた。ただし、音声については、短時間の音について録音区間内の周波数係数各次元において最大値を取り、単一ベクトル表現として構成した。
【０１１８】
実験では、８０回の各オブジェクトの教示後に、人間がベルの音を発生させて、ヒューマノイドロボットにシーン中から対象物体を探索させた。図２８に、対象物体の探索例を示す。図２８の画像右上には、ヒューマノイドロボットの現在の視線上にある対象物体を表示している。ヒューマノイドロボットは、視覚的ディストラクタ（妨害刺激）として置かれたドラムやりんごには反応せずに、ベルを正しく選択する事ができた。また、ドラム音についても、実験における環境であれば、１００％の正解率を示す事が可能であった。
【０１１９】
以上説明したように、本発明に係る連想記憶装置１は、３層構造によって構成され、入力ベクトルを記憶層３に保持し、連想関係を連想層４に保持する。記憶層３ではオンライン学習に対応してパターンをクラスとして保持する。新たな情報は逐次的に蓄えられ、その蓄えられる情報量には制約がない。２値と非２値の両方データに対応しており、連想層４では一対一、一対多、多対一、多対多の連想が可能である。蓄積された要素に対して、新しい連想関連を追加的に学習可能である。さらに、連想記憶装置１を用いる事で、系列データの記憶と想起も可能である。
【０１２０】
図２９に、本発明による効果をまとめる。図２９に示すように、本発明に係る連想記憶装置１は、要求される機能を完備するシステムであり、人工データ、２値データ、実数値データ、系列データを用いた実験によってこれを示す事ができた。また、連想記憶装置１を応用して、与えられた環境内で、連想を利用したロボットの行動の構築を行った。今後、現在は人間が明示的に与えている連想関係について、ロボットが自律的に連想関係を構築するインタラクティブなシステムへと展開する事が目標となる。
【０１２１】
さらに、本発明の他の応用例としては、ロボットの自動制御において、ロボットに搭載するセンサ等から取得する各種の情報をキーとし、制御に必要な関連情報を自律的に想起することが可能となる。また、パターン情報処理を逐次的に実行することができるために、環境からのフィードバック情報を用いて、新たな連想関係を構築することもできる。入力情報に基づいて次に取るべき行動を連想するロボット制御システムの一例としては、ロボットがセンサ等からの入力情報に基づいて危険源を検知し、検知した危険源に対して取るべき行動を連想させる、などの制御システムが考えられる。
さらにまた、コンピュータサイエンス領域では、（Ｌｉｓｐ、Ｃ＋＋等の標準ライブラリに搭載されているような）従来のシンボルベースの連想配列とは異なり、実数パターン情報をキーとした高度な連想配列の提供も可能となる。コンピュータ言語ライブラリへのインプリメントの一例としては、演算結果の丸め処理により値を近似結果とすること（３．１４１４...→３．１４）が考えられる。また、コンピュータ言語ライブラリへのインプリメントの他の例として、円周率をキーとした連想配列ではキーに対して連想オブジェクトは未定義となるが、本発明に係る連想記憶装置１を応用することで、入力された数字列３．１４が円周率であることを自己想起し、結果として、連想関係を構築した複数のオブジェクト配列を返却すること（３．１４→ｕｎｄｉｆｉｎｅｄ（ｏｒ  ＮＵＬＬ）を返却したり、３．１４→Ｃｉｒｃｌｅ型オブジェクト、文字列（π）など、を返却する。）が可能となる。
【０１２２】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、上述した実施の形態に係る連想記憶装置１では、記憶層３で用いる自己増殖型ニューラルネットワークとして、ＳＯＩＮＮを例に説明したが、本発明はこれに限定されない。すなわち、ＳＯＩＮＮに代えて、特許文献２に開示されたＥ−ＳＯＩＮＮや特許文献３に開示されたＡｄｊｕｓｔｅｄ  ＳＯＩＮＮなどを採用してもよい。
【０１２３】
本発明の目的は、上述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体（または記憶媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは当然である。この場合、記録媒体から読み出されたプログラムコード自体が上述の実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
【０１２４】
また、コンピュータが読み出したプログラムコードを実行することにより、上述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているオペレーティングシステム（ＯＳ）などが実際の処理の一部又は全部を行い、その処理によって上述した実施形態の機能が実現される場合も当然含まれる。
【０１２５】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理によって上述した実施形態の機能が実現される場合も当然含まれる。本発明を上記記録媒体に適用する場合、その記録媒体には、上述したフローチャートに対応するプログラムコードが格納されることになる。
【符号の説明】
【０１２６】
１  連想記憶装置、
２  入力層、  ３  記憶層、  ４  連想層、
１０  学習部、
１１  記憶層学習手段、  １２  連想層学習手段、  １３  系列情報学習手段、
２０  想起部、
２１  自己想起手段、  ２２  相互想起手段、  ２３  系列情報想起手段、
３０  学習用データＤＢ、
４０    コンピュータ、  ４１    ＣＰＵ、  ４２    ＲＯＭ、  ４３    ＲＡＭ、
４４    バス、  ４５    入出力インターフェース、  ４６    入力部、  ４７    出力部、
４８    記憶部、  ４９    通信部、  ５０    ドライブ、  ５０１    磁気ディスク、
５０２    光ディスク、  ５０３    フレキシブルディスク、  ５０４    半導体メモリ
【図１】
0005458791.tif 000035
【図２】
0005458791.tif 000036
【図３】
0005458791.tif 000037
【図４】
0005458791.tif 000038
【図５】
0005458791.tif 000039
【図６】
0005458791.tif 000040
【図７】
0005458791.tif 000041
【図８】
0005458791.tif 000042
【図９】
0005458791.tif 000043
【図１０】
0005458791.tif 000044
【図１１】
0005458791.tif 000045
【図１２】
0005458791.tif 000046
【図１４】
0005458791.tif 000047
【図１５】
0005458791.tif 000048
【図１８】
0005458791.tif 000049
【図２９】
0005458791.tif 000050
【図１３】
0005458791.tif 000051
【図１６】
0005458791.tif 000052
【図１７】
0005458791.tif 000053
【図１９】
0005458791.tif 000054
【図２０】
0005458791.tif 000055
【図２１】
0005458791.tif 000056
【図２２】
0005458791.tif 000057
【図２３】
0005458791.tif 000058
【図２４】
0005458791.tif 000059
【図２５】
0005458791.tif 000060
【図２６】
0005458791.tif 000061
【図２７】
0005458791.tif 000062
【図２８】
0005458791.tif 000063