説明

連想記憶装置、連想記憶方法、及びプログラム

【課題】ノードの数を事前に決定することなく、逐次的に入力される新たな連想対を既存の知識を壊すことなく追加学習することができる連想記憶装置、連想記憶方法、及びプログラムを提供すること。
【解決手段】本発明に係る連想記憶装置は、連想のキーとなるベクトル及び当該連想キーより想起されるベクトルからなる連想対を学習した結果に基づき、当該連想対の一方のベクトルを想起キーとして他方のベクトルを想起する連想記憶装置であって、連想対を入力ベクトルとしてニューラルネットワークに順次入力し、当該入力ベクトル、及び当該ニューラルネットワークに配置される多次元ベクトルで記述されるノードに基づいて、当該ノードを自動的に増加させる自己増殖型ニューラルネットワークを用いて連想記憶を行うものである。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、自己増殖型ニューラルネットワークを用いて連想記憶を行う連想記憶装置、連想記憶方法、及びプログラムに関する。
【背景技術】
【0002】
従来より、連想の機能を持つ連想記憶モデルの研究が盛んに行われている。"連想"という機能は人間が持つ知的プロセスのひとつであり、人間はこの機能を活用し生活している。例えば、人間は「赤くて丸い」という情報から「りんご」や「トマト」を連想して思い出すように、ある情報を連想のキーとして対応する情報を想起することができる。また、家族や友人の「顔の一部」や、時には「目だけ」、「口だけ」などといった情報からでも家族や友人の「顔の全体像」を思い出せるように、部分的な情報から全体像を想起することができる。
【0003】
そして、連想を人間の知的処理にとって極めて重要な機能であるとみなし、連想の機能を導入することによって、実世界において人間のように知的に振る舞う知能システムの研究が近年行われている(非特許文献1乃至4など)。
【0004】
一方、実世界において学習を行う学習器は、学習すべき項目を事前に全て列挙することが不可能であるという大きな問題を抱えている。これは、実世界は複雑かつ膨大な情報からなり、その全てを予め学習器に学習させることが事実上不可能なためである。従って、実世界に対処するため、学習器は次の2つの機能を備えることが必要不可欠となる。
(1)逐次的に与えられる新たな知識を追加的に学習可能であること。実世界において学習すべき項目を事前に全て列挙することは不可能であるため、予め用意された学習データのみを学習するというバッチ学習では、実世界における学習に対応することができない。このため、学習器は逐次的に入力される新たな情報を、既存の知識を壊すことなく学習しなければならない。
(2)高いノイズ耐性を持つこと。実世界から得られるデータは、ぶれや欠損による"データに乗ったノイズ"や、本来学習する必要の無いデータである"データと独立なノイズ"などが混じり込むため、学習器はこれら2種のノイズに対して耐性を持っていなければならない。
【0005】
従来の連想記憶モデルは大別して2種に分けることができる。ひとつは、非特許文献5に開示されるホップフィールドネットや、非特許文献6に開示される双方向連想メモリ(Bidirectional Associative Memory:BAM)などに代表される連想記憶モデルである。これらのモデルは、相互に結合されたノード(素子)からなるニューラルネットワークであり、学習すべき連想対の情報が、全てのノードに分散かつ重複して記憶される(分散多重学習)。
【0006】
もうひとつは、非特許文献7に開示される自己組織化マップ(Self Organizing Map:SOM)を用いた連想記憶モデルに代表される、競合学習によって連想を学習する連想記憶モデルである。このモデルは、新たに入力された学習データ及び既知の情報間の距離を計算し、距離が最小となるノード(勝ちノード)について、そのノードの重みベクトルを学習データのベクトルに近づけるように更新してゆくという方法により記憶を行う。即ち、学習すべき1つの連想対の情報が、1つのノードの重みベクトルとして記憶されてゆく。一般に、逐次的に入力されるデータを学習するという課題において、非特許文献7に開示される連想記憶モデルでは、上記の分散多重学習による連想記憶モデルに比べて、既存の記憶の損失が起き難く、高い性能を発揮する。
【0007】
また、競合学習によって連想を学習する他の連想記憶モデルとして、非特許文献8に開示されるモデルでは、学習データに極めて近いベクトルを持つノードを十分に学習が進んだノードとみなして以後変化させないようにすることにより記憶を保持している。さらにまた、非特許文献9に開示されるモデルでは、そのようなノードの周辺のノード(近傍ノード)の学習率についても低下させることとし、新たな学習データからの影響を減少させ、記憶の頑健性を高めている。また、非特許文献10に開示されるモデルでは、"記憶パターンの信頼度"という概念を導入し、ノードの持つ情報が新たな情報へ上書きされる度合いを信頼度の高低で制御することによって、限られたサイズのネットワークを用いて逐次的な追加学習を行っている。
【非特許文献1】Bisler.A, "An Associative Memory for Autonomous Agents," In Proc. of the Fourth International Conference on Intelligent Systems Design and Applications, 2004.
【非特許文献2】Rhodes.B.J, "Margin Notes: Building a Contextually Aware Associative Memory," in Proc. of the International Conference on Intelligent User Interface(IUI'00), pp 9-12, 2000.
【非特許文献3】Itoh.K, Miwa.H,Nukariya.Y, Zecca.M, Takanobu.H, Dario.P and Takanishi.A, "New memory model for humanoid robots - introduction of co-associative memory using mutually coupled chaotic neural networks," in Proc. of the 2005 International Joint Conference on Neural Networks(IJCNN'05), pp 2790-2795, 2005.
【非特許文献4】Mizutani.K, Omori.T, "On-line Map Formation and Path Planning for Mobile Robot by Associative Memory with Controllable Attention," in Proc. Of the 1999 International Joint Conference on Neural Networks(IJCNN'99), pp 2051-2056, 1999.
【非特許文献5】Hopfield.J.J, "Neural network and physical systems with emergent collective computational abilities, " Proceedings of the National Academy of Sciences of the United States of America, Vol.79, No.8, pp 2554-2558,1982.
【非特許文献6】Kosko.B, "Bidirectional Associative Memories, " IEEE Trans. Systems, Man and Cybernetics, Vol.18, No.1, pp 49-60, 1988.
【非特許文献7】Ichiki.H, Hagiwara.M and Nakagawa.M, "Kohonen feature maps as a supervised learning machine, " in Proc. of the IEEE International Conference on Neural Networks, pp 1944-1948, 1993.
【非特許文献8】Kondo.S, Futami.R, Hoshimiya.N, "Pattern recognition with feature map and the improvement on sequential learning ability, " 信学技報, Vol.95, No.599, pp 55-60, 1996.
【非特許文献9】Yamada.T, Hattori.M, Morisawa.M, Ito.H, "Sequential Learning for Associative Memory using Kohonen Feature Map, " in Proc. of the 1999 International Joint Conference on Neural Networks (IJCNN'99), pp 1920-1923, 1999.
【非特許文献10】Yoshizawa.S, Doki.S, Okuma.S, " A New Associative Memory System for Supplemental Learning under Restriction on Memory Capacity, " IEICE Trans. Information and System , Vol.J82-D , No. (6), pp 1072-1081, 1999.
【発明の開示】
【発明が解決しようとする課題】
【0008】
しかしながら、Frenchが指摘したように、非特許文献5及び6に開示されるモデルでは、逐次的に学習データを与えて追加的な学習を行った場合には、新たな情報の記憶によって既存の記憶が失われてしまうという追加学習性の問題を抱えている(French.R.M, "Using Semi-Distributed Representation to Overcome Catastrophic Forgetting in Connectionist Networks, " Pm. of the 13th Annual Cognitive Science Society Conference, pp 173-178, 1991.)。このため、予め学習対象となる知識を準備し、バッチ学習により学習を行う必要があるが、実世界において学習すべき知識を事前に全て準備することは事実上不可能である。従って、これらのモデルを利用した知能システムでは、事前に準備した知識によって扱いきれない環境においては正確に機能しない可能性があるため、実世界において動作するシステムとして用いるには適切ではない。
【0009】
また、非特許文献7に開示されるモデルであっても、逐次的に学習データを与えて追加的な学習を行う場合に、既存の記憶が失われるという問題を完全に解決したものではない。新たな学習データは、ネットワーク中に存在するノードのうちで、学習データと最も距離の小さなノード(勝ちノード)により学習される。このため、新たな学習データとノードの持つデータとが全く異なった場合であってもそのノードが勝ちノードとなり学習されるため、既存の情報を損失する可能性がある。また、自身が勝ちノードとならない場合であっても、新たな学習データは勝ちノードの周囲ノードの重みベクトルをも更新してしまうため、新たな学習データに影響され、記憶していた情報を喪失する可能性がある。
【0010】
さらにまた、非特許文献8乃至10に開示されるモデルであっても、実世界で学習を行うモデルとしては適当とは言えない。なぜならば、これらのモデルはネットワークを構成するノードの数を事前に決定する必要があり、ネットワークの容量を超えて情報を覚えさせようとした場合には、既存の記憶を喪失する、あるいは新たな情報を覚えられないという問題を抱えているためである。
【0011】
このような問題に対しては、事前に巨大なネットワークを用意することによって、システムは学習した項目の殆どを(記憶容量を超えない限り)記憶することが可能となる。しかし、学習データが入力される都度、全てのノードが持つ重みベクトルとの距離を計算する必要があるため、学習項目が少ない場合には無駄な処理時間及びメモリの浪費を生み出すことになる。このため、実世界で学習を行うモデルとしては不十分なものである。
【0012】
他方、実世界において学習を行う学習器は高いノイズ耐性を有することが要求されるが、従来技術では、ぶれや欠損による"データに乗ったノイズ"、及び本来学習すべきでないデータである"データと独立なノイズ"というこれら2種のノイズに対して十分な耐性を有していないものであった。
【0013】
ここで、実環境から得られるノイズデータとは、データの一部が欠損・変質したノイズ、及びデータそのものがノイズ(無意味なランダムパターンなど)というこれら2種類のノイズを想定する。以下では、前者を"データに乗ったノイズ"、後者を"データと独立なノイズ"という。例えば図27(a)は"データに乗ったノイズ"の一例を示している。学習器はこのような入力が想起キーとして与えられた場合においても、ノイズの影響を排除して正確に想起を行う必要がある。このノイズに対する耐性は従来技術も有しているものの、後述するように、例えばノイズが20%の時点において従来技術では正解率が70%以下となるなど、ノイズ耐性が不十分なものであった。また、例えば図27(b)は"データと独立なノイズ"の一例を示している。学習器はこのような無意味なパターン(学習したパターンと全く異なるパターン)が想起キーとして入力された場合には、その入力を未知であるものと適切に判定する必要があるものの、従来技術では正確な判定をすることができず、不正な想起結果を出力するものであった。
【0014】
このように、従来の連想記憶モデルでは、ネットワークを構成するノードの数を事前に決定しなければならず、ネットワークの容量を超えて情報を記憶させようとした場合には、既存の記憶を失うことがあり、正確に追加学習を実現することができないという問題がある。
【0015】
さらに、"データに乗ったノイズ"及び"データと独立なノイズ"という2種のノイズ両方に対して、十分なノイズ耐性を有していないという問題がある。
【0016】
本発明は係る課題を解決するためになされたものであり、ノードの数を事前に決定することなく、逐次的に入力される新たな連想対を既存の知識を壊すことなく追加学習することができる連想記憶装置、連想記憶方法、及びプログラムを提供することを第1の目的とする。
【0017】
さらに、"データに乗ったノイズ"及び"データと独立なノイズ"という2種のノイズ両方に対して、高いノイズ耐性を有する連想記憶装置、連想記憶方法、及びプログラムを提供することを第2の目的とする。
【課題を解決するための手段】
【0018】
本発明に係る連想記憶装置は、連想のキーとなるベクトル及び当該連想キーより想起されるベクトルからなる連想対を学習した結果に基づき、当該連想対の一方のベクトルを想起キーとして他方のベクトルを想起する連想記憶装置であって、前記連想対を入力ベクトルとしてニューラルネットワークに順次入力し、当該入力ベクトル、及び当該ニューラルネットワークに配置される多次元ベクトルで記述されるノードに基づいて、当該ノードを自動的に増加させる自己増殖型ニューラルネットワークを用いて連想記憶を行うものである。
【0019】
本発明においては、ノードの数を事前に決定することなく、逐次的に入力される新たな連想対を既存の知識を壊すことなく追加学習することができる。
【0020】
また、前記自己増殖型ニューラルネットワークは、入力される前記入力ベクトルに最も近い重みベクトルを持つノードと2番目に近い重みベクトルを持つノードの間に辺を接続したとき、注目するノードと他のノード間の距離に基づいて算出される当該注目するノードの類似度閾値、及び前記入力ベクトルと当該注目するノード間の距離に基づいて、前記入力ベクトルをノードとして挿入するクラス間ノード挿入部と、前記入力ベクトルに最も近いノードに対応する重みベクトル及び当該ノードと辺によって直接的に接続されるノードに対応する重みベクトルをそれぞれ前記入力ベクトルに更に近づけるように更新する重みベクトル更新部とを備えるようにしてもよい。これにより、類似度閾値に基づいて、挿入されるノードの個数を自律的に管理することができるため、ノードの数を事前に決定することなく、逐次的に入力される新たな連想対を既存の知識を壊すことなく追加学習することができる。
【0021】
さらにまた、前記クラス間ノード挿入部は、入力される前記入力ベクトルに最も近い重みベクトルを持つノードを第1勝者ノードとし、2番目に近い重みベクトルを持つノードを第2勝者ノードとし、当該第1勝者ノード及び当該第2勝者ノードの間に辺を接続したとき、注目するノードについて、当該注目するノードと辺によって直接的に接続されるノードが存在する場合には、当該直接的に接続されるノードのうち当該注目するノードからの距離が最大であるノード間の距離を前記類似度閾値とし、当該注目するノードと辺によって直接的に接続されるノードが存在しない場合には、当該注目するノードからの距離が最小であるノード間の距離を前記類似度閾値として算出する類似度閾値算出部と、前記入力ベクトルと前記第1勝者ノード間の距離が当該第1勝者ノードの類似度閾値より大きいか否か、及び、前記入力ベクトルと前記第2勝者ノード間の距離が当該第2勝者ノードの類似度閾値より大きいか否かを判定する類似度閾値判定部と、類似度閾値判定結果に基づいて、前記入力ベクトルをノードとして当該入力ベクトルと同じ位置に挿入するノード挿入部とを備えるようにしてもよい。これにより、入力ベクトルに応じて変化する類似度閾値によれば、挿入されるノードの個数を自律的に管理することができるため、ノードの数を事前に決定することなく、逐次的に入力される新たな連想対を既存の知識を壊すことなく追加学習することができる。
【0022】
また、前記自己増殖型ニューラルネットワークは、前記辺に対応付けられる辺の年齢に基づいて、当該辺を削除する辺削除部と、注目するノードについて、当該注目するノードに直接的に接続される辺の本数に基づいて、当該注目するノードを削除するノード削除部とを更に備えるようにしてもよい。これにより、本来学習すべきでないデータである"入力データとは独立なノイズ"を効果的かつ動的に削除することができる。
【0023】
さらにまた、前記自己増殖型ニューラルネットワークは1層構造であるようにしてもよい。これにより、非特許文献:F. Shen and O. Hasegawa, "An Incremental Network for On-line Unsupervised Classification and Topology Learning, " Neural Networks, vol. 19, pp. 90-106, 2006.に開示された技術であるSelf-Organizing Incremental Neural Network(以下、SOINNという。)と比べて、2層目の学習を開始するタイミングを指定せずに追加学習を実行することができる。即ち、完全なオンラインでの追加学習を実行することができる。
【0024】
また、前記自己増殖型ニューラルネットワークは、前記連想対を入力ベクトルとして前記自己増殖型ニューラルネットワークに入力する入力部を更に備えるようにしてもよい。これにより、連想対をひとつの入力ベクトルとして、自己増殖型ニューラルネットワークに容易に入力することができる。
【0025】
さらにまた、前記入力部は、前記連想対からなるベクトルを摂動したベクトルを入力ベクトルとして前記自己増殖型ニューラルネットワークに入力するようにしてもよい。これにより、入力ベクトルをある程度の広がりをもたせることで、入力ベクトルに応じて生成されるノードからなるクラスタを柔軟に形成することができる。
【0026】
また、前記連想対の一方のベクトルを想起キーとして前記自己増殖型ニューラルネットワークに入力して、前記連想対の他方のベクトルを前記自己増殖型ニューラルネットワークから出力する想起部とを更に備えるようにしてもよい。これにより、連想対の一部より、その連想対の他の一部を自己増殖型ニューラルネットワークから容易に出力することができる。
【0027】
さらにまた、前記想起部は、前記連想対の一方のベクトルを想起キーとして前記自己増殖型ニューラルネットワークに入力して、当該想起キーとの距離が所定の閾値より小さい前記連想対の他方のベクトルを前記自己増殖型ニューラルネットワークから出力するようにしてもよい。これにより、入力される想起キーが既知か否かを容易に判定することができ、ランダムパターンなどが想起キーとして入力された場合には、入力された想起キーが未知であるものと適切に判定することができる。
【0028】
また、前記自己増殖型ニューラルネットワークは、ノードの集合であるクラスについて、各クラスの代表的なノードとしてのプロトタイプノードを生成するプロトタイプノード生成部を更に備え、前記想起部は、前記連想対の一方のベクトルを想起キーとして前記自己増殖型ニューラルネットワークに入力して、前記プロトタイプノードに対応する前記連想対の他方のベクトルを前記自己増殖型ニューラルネットワークから出力するようにしてもよい。これにより、ぶれや欠損による"入力データに乗ったノイズ"によって影響を受けたノードを避けてプロトタイプノードを出力することで、想起結果の歪みの軽減を図ることができる。
【0029】
本発明に係る連想記憶方法は、連想のキーとなるベクトル及び当該連想キーより想起されるベクトルからなる連想対を学習した結果に基づき、当該連想対の一方のベクトルを想起キーとして他方のベクトルを想起する連想記憶方法であって、前記連想対を入力ベクトルとしてニューラルネットワークに順次入力し、当該入力ベクトル、及び当該ニューラルネットワークに配置される多次元ベクトルで記述されるノードに基づいて、当該ノードを自動的に増加させる自己増殖型ニューラルネットワークを用いて連想記憶を行うものである。
【0030】
本発明に係るプログラムは、上述のような情報処理をコンピュータに実行させるものである。
【発明の効果】
【0031】
本発明によれば、ノードの数を事前に決定することなく、逐次的に入力される新たな連想対を既存の知識を壊すことなく追加学習することができる連想記憶装置、連想記憶方法、及びプログラムを提供することができる。
【0032】
さらに、"データに乗ったノイズ"及び"データと独立なノイズ"という2種のノイズ両方に対して、高い耐性を有する連想記憶装置、連想記憶方法、及びプログラムを提供することができる。
【発明を実施するための最良の形態】
【0033】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。尚、各図面において、同一要素には同一の符号を付しており、説明の明確化のため、必要に応じて重複説明を省略する。
【0034】
発明の実施の形態1.
本実施の形態1は、本発明を、連想のキーとなるベクトル及びその連想キーより想起されるベクトルからなる連想対を学習した結果に基づき、その連想対の一方のベクトルを想起キーとして他方のベクトルを想起する連想記憶装置に適用したものである。
【0035】
連想記憶装置は、事前にノード数を決定することなく追加学習を実現するため、自己増殖型ニューラルネットワークを用いて連想記憶を行う。自己増殖型ニューラルネットワークは、連想対を入力ベクトルとしてニューラルネットワークに順次入力し、入力ベクトル、及びニューラルネットワークに配置される多次元ベクトルで記述されるノードに基づいて、ノードを自動的に増加させることにより連想対を学習する。
【0036】
学習処理においては、自己増殖型ニューラルネットワークは、ノードの類似度閾値、及びノード間の距離に基づいて、入力ベクトルをノードとして挿入し、ノードに対応する重みベクトルを入力ベクトルに更に近づけるように更新する。そして、ノイズを削除するため、辺の年齢に基づいて、ノード間に存在する辺を削除すると共に、辺の本数に基づいて、ノードを削除する。また、学習処理においては、連想対は入力部を介して自己増殖型ニューラルネットワークに入力され、この際、入力部において、連想対からなるベクトルが摂動される。
【0037】
一方、想起処理においては、連想対の一方のベクトルを想起キーとして自己増殖型ニューラルネットワークに入力され、想起キーとの距離が所定の閾値より小さい連想対の他方のベクトルを出力することによって想起結果が得られる。そして、想起結果として、各クラスの代表的なノードであるプロトタイプノードが出力される。
【0038】
図1は、本発明の実施の形態1に係る連想記憶装置1を示すブロック図である。連想記憶装置1は、学習部10及び想起部20を備え、学習用の連想対が格納された学習用連想対データベース(DB)30と接続されている。自己増殖型ニューラルネットワークとしての学習部10は、入力部11、及びSOINN12を備える。後述するSOINN12は、クラス間ノード挿入部121と、辺削除部122と、ノード削除部123と、重みベクトル更新部124と、プロトタイプノード生成部125とを備える。
【0039】
次に、各ブロックについて以下詳細に説明する。学習部10は、連想対を学習することにより記憶する。より具体的には、連想のキーとなるベクトル及び連想キーより想起されるベクトルからなる連想対が学習用連想対DB30に格納されている場合に、学習用連想対DB30より連想対が与えられると、学習部10は、入力部11を介して連想対を入力ベクトルとして受け取り、入力ベクトル及び連想対の知識に対応するノードを生成し、生成されたノード及びノード間の辺に基づいて、ノードを自律的に増加させることによって連想対を学習する。即ち、連想対の知識を保持するノードを記憶する。
【0040】
図2は、学習部10の構造を示す概念図である。図2に示すように、学習部10は、入力部11としての入力層(Input Layer)及び、SOINN12としての競合層(Competitive Layer)を備える。
【0041】
入力部11は、連想対を入力ベクトルとしてSOINN12に入力する。図2においては、入力層のそれぞれの部位が連想のキーとなるベクトル及び想起されるベクトルに対応する。入力層は、2つの部位に入力された連想対のベクトルを結合してひとつのベクトルとし、競合層への入力信号を生成する。例えば、Fを連想のキーとなるM次元ベクトル、Rを連想のキーFから想起されるN次元ベクトルとした場合に、入力層は、入力された連想対である2つのベクトルF及びRをM+N次元の入力ベクトルXとして統合する。ここで、F及びRは、−1から1に正規化した実数値ベクトルである。
また、入力部11は、入力ベクトルXに対して正規分布に従う摂動を加えて、競合層への入力データを生成する。このように摂動を加えて入力ベクトルXをある程度の広がりをもたせることで、競合層において生成されるノードからなるクラスタを柔軟に形成させることができる。
【0042】
このように、入力層より競合層へと入力ベクトルを与えて、競合層においてクラスタリング処理を行うことにより、自己増殖型ニューラルネットワークを用いて連想対の学習を実現することができる。
【0043】
SOINN12は、入力ベクトル及びニューラルネットワークに配置されるノードに基づいて、ノードを自動的に増加させる自己増殖型ニューラルネットワークであり、本実施の形態1においては、従来技術であるSOINNの1層目を改良した競合層を用いる。
【0044】
従来技術であるSOINNは2層の競合層を有するため、入力データにオーバーラップが存在する場合であっても適切にクラスタリングが可能であるという利点を有するものの、本実施の形態1において使用する連想対ベクトルについてはオーバーラップを想定しないため、計算時間、メモリ使用量などの観点より1層のみを競合層として使用する。1層構造とすることにより、SOINNと比べて、2層目の学習を開始するタイミングを指定せずに追加学習を実行することができる。即ち、完全なオンラインでの追加学習を実行することができる。また、自己増殖型ニューラルネットワークはSOINNに限定されず、後述するadjusted SOINNや、Enhanced−SOINN(以下、E−SOINNという。)などとしても1層構造とすることができ、2層目の学習を開始するタイミングを指定せずに追加学習を実行することができる。
【0045】
以下、まず、従来技術であるSOINNについて簡単に説明し、次いで本実施の形態1にかかるSOINN12について説明する。
SOINNは、非特許文献:Fritzke.B, "A growing neural gas network learns topologies, " Advances in neural information processing systems(NIPS), pp 625-632, 1995.に開示された技術であるGrowing Neural Gas(以下、GNGという。)を拡張した、いわゆる自己増殖型ニューラルネットワークと呼ばれる教師なし追加学習手法である。ノードを自己増殖しながら入力ベクトルを逐次的に学習することにより、入力データの分布を表現するネットワークを追加的に構築することができる。SOINNは、次の4つの利点を有する。
(1)過去に学習したクラスタを壊さずに、新規に入力される未知クラスの入力ベクトルを追加的に学習して、新規のクラスタを構築することができる。
(2)入力データに対して独立なノイズを、効果的かつ動的に除去することができる。
(3)逐次的に与えられる教師無しデータについて、その位相構造を表現するネットワークを自律的に構築することができる。
(4)ノード数を事前に決定せずに、入力ベクトルを近似することができる。
【0046】
図3は、従来技術であるSOINNによる学習処理を説明するためのフローチャートである。以下、図3を用いてSOINNの処理を説明する。ここで、SOINNは2層ネットワーク構造を有し、1層目及び2層目において同様の学習処理を実施する。また、SOINNは、1層目の出力である学習結果を2層目への入力ベクトルとして利用する。
【0047】
S101:SOINNに対して入力ベクトルを与える。
S102:与えられた入力ベクトルに最も近いノード(以下、第1勝者ノードという。)、及び2番目に近いノード(以下、第2勝者ノードという。)を探索する。
S103:第1勝者ノード及び第2勝者ノードの類似度閾値に基づいて、入力ベクトルがこれら勝者ノードの少なくともいずれか一方と同一のクラスタに属すか否かを判定する。ここで、ノードの類似度閾値はボロノイ領域の考えに基づいて算出する。学習過程において、ノードの位置は入力ベクトルの分布を近似するため次第に変化し、それに伴いボロノイ領域も変化する。即ち、類似度閾値もノードの位置変化に応じて適応的に変化してゆく。
S104:S103における判定の結果、入力ベクトルが勝者ノードと異なるクラスタに属す場合は、入力ベクトルと同じ位置にノードを挿入し、S101へと進み次の入力ベクトルを処理する。尚、このときの挿入をクラス間挿入と呼ぶ。
S105:一方、入力ベクトルが勝者ノードと同一のクラスタに属す場合は、第1勝者ノード及び第2勝者ノード間に辺を生成し、ノード間を辺によって直接的に接続する。
S106:第1勝者ノード及び第1勝者ノードと辺によって直接的に接続しているノードの重みベクトルをそれぞれ更新する。
S107:S105において生成された辺は年齢を有しており、予め設定された閾値を超えた年齢を持つ辺を削除する。入力ベクトルを逐次的に与えてゆくオンライン学習においては、ノードの位置が常に徐々に変化してゆくため、初期の学習で構成した隣接関係が以後の学習によって成立しない可能性がある。このため、一定期間を経ても更新されないような辺について、辺の年齢が高くなるように構成することにより、学習に不要な辺を削除することができる。
【0048】
S108:入力ベクトルの入力総数が、予め設定されたλの倍数であるか否かを判定する。判定の結果、入力ベクトルの入力総数がλの倍数でない場合には、S101へと戻り次の入力ベクトルを処理する。一方、入力ベクトルの総数がλの倍数となった場合には以下の処理を実行する。
S109:局所累積誤差が最大であるノードを探索し、そのノード付近に新たなノードを挿入する。ノードの持つ平均誤差を示す誤差半径に基づいて、ノード挿入が成功であったか否かを判定する。尚、このときの挿入をクラス内挿入と呼ぶ。ここで、ノード及び入力ベクトル間の距離差をノードの持つ誤差として、入力ベクトルの入力に応じてノードの誤差を累積することにより局所累積誤差を算出する。誤差半径はノードの持つ誤差及びノードが第1勝者となった回数に基づいて算出する。
S110:クラス内挿入によるノード挿入が成功であると判定した場合には、クラス内挿入により挿入されたノード及び局所累積誤差が最大のノードを辺によって直接的に接続する。一方、クラス内挿入によるノード挿入が失敗であると判定した場合には、クラス内挿入により挿入したノードを削除してS111へと進む。
S111:隣接ノード数及びノードが第1勝者となった回数に基づいて、ノイズノードを削除する。ここで、隣接ノードとは、ノードと辺によって直接的に接続されるノードを示し、隣接ノードの個数が1以下であるノードを削除対象とする。また、第1勝者となった回数の累積回数を予め設定されたパラメタcを使用して算出される閾値と比較し、第1勝者累積回数が閾値を下回るノードを削除対象とする。
【0049】
S112:入力ベクトルの入力総数が予め設定されたLTの倍数であるか否かを判定する。判定の結果、入力ベクトルの入力総数がLTの倍数でない場合には、S101へと戻り次の入力ベクトルを処理する。一方、入力ベクトルの総数がLTの倍数となった場合には、以下の処理を実行する。
S113:1層目の学習を終了するか否かを判定する。判定の結果、2層目の学習へと進む場合には、S101へと進み1層目の学習結果であるノードを2層目への入力ベクトルとして入力する。ただし、追加学習を行う場合は、2層目に残っている以前の学習結果を消去した上で2層目の学習を開始する。
2層目への入力回数が予め設定された回数LTの倍数となり2層目の学習を終了する場合には、ノードを異なるクラスに分類し、クラス数及び各クラスの代表的なプロトタイプベクトルを出力し停止する。ここで、プロトタイプベクトルはノードの重みベクトルに相当する。
【0050】
ここで、SOINNの機能を検証するために人工データセットを用いて行った実験を示す。図4は、SOINNへと入力した2次元の人工データを示す画像である。図4に示した入力データセットは、2つのガウス分布、2つの同心円、及びサイン曲線の合計5つの信号発生源(クラス)からなる。また、実環境を想定して、5つの信号発生源から発生する信号に対して、10%の一様ノイズを加えた。SOINNに対して、図4に示した人工データセットをオンラインで追加的に入力し、教師無しのクラス分類を行わせた。
【0051】
図5は、図4に示した2次元の人工データをSOINNへと追加的に入力した場合における出力結果を示す画像である。図5に示すように、SOINNは、入力データに含まれるノイズを削除することが可能であると共に、入力データのクラス数及びそのトポロジ(位相構造)を正しく抽出することができる。このように、SOINNは、ノード数を自律的に管理することにより非定常的な入力を学習することができ、分布に複雑な形状を持つクラスに対しても適切なクラス数及び位相構造を抽出できるなど多くの利点を持つ。SOINNの応用例として、例えばパターン認識においては、ひらがな文字のクラスを学習させた後に、カタカナ文字のクラスなどを追加的に学習させることができる。
【0052】
次いで、本実施の形態1に係るSOINN12について説明する。
SOINN12は、クラス間ノード挿入部121と、辺削除部122と、ノード削除部123と、重みベクトル更新部124と、プロトタイプノード生成部125とを備える。
【0053】
クラス間ノード挿入部121は、類似度閾値算出部、類似度閾値判定部、及びノード挿入部を備える。クラス間ノード挿入部121は、入力される入力ベクトルに最も近い重みベクトルを持つノードを第1勝者ノードとし、2番目に近い重みベクトルを持つノードを第2勝者ノードとし、第1勝者ノード及び第2勝者ノードの間に辺を接続したとき、以下に述べるようにしてノードを挿入する。
【0054】
まず、類似度閾値算出部は、注目するノードについて、注目するノードと辺によって直接的に接続されるノードが存在する場合には、直接的に接続されるノードのうち注目するノードからの距離が最大であるノード間の距離を類似度閾値とし、注目するノードと辺によって直接的に接続されるノードが存在しない場合には、注目するノードからの距離が最小であるノード間の距離を類似度閾値として算出する。次いで、類似度閾値判定部は、入力ベクトルと第1勝者ノード間の距離が第1勝者ノードの類似度閾値より大きいか否か、及び、入力ベクトルと第2勝者ノード間の距離が第2勝者ノードの類似度閾値より大きいか否かを判定する。次いで、ノード挿入部は、類似度閾値判定結果に基づいて、入力ベクトルをノードとして入力ベクトルと同じ位置に挿入する。
【0055】
このようにして、入力ベクトルに応じて変化する類似度閾値によれば、挿入されるノードの個数を自律的に管理することができるため、ノードの数を事前に決定することなく、逐次的に入力される新たな連想対を既存の知識を壊すことなく追加学習することができる。
【0056】
また、従来の連想記憶モデルでは事前に1対多からなる連想対について、事前にその"多"の大きさを決定する必要があったが、本実施の形態1における連想記憶装置1では追加的に学習が可能であるため、1対多からなる連想対について、事前にその"多"の大きさを決定する必要がなく、想起する連想対の数を学習内容に応じて適応的に変化させることができる。さらにまた、ひとつの連想記憶装置によって様々な多方向連想(2対1、3対1、4対1など)を柔軟に実現することができる。
【0057】
辺削除部122は、辺に対応付けられる辺の年齢に基づいて、辺を削除する。ノード削除部123は、注目するノードについて、注目するノードに直接的に接続される辺の本数に基づいて、注目するノードを削除する。これにより、"入力データとは独立なノイズ"を効果的かつ動的に削除することができる。また、誤って生成された辺を適切に削除することができる。辺が存在しないノードは、そのノードの持つ結合重みベクトルに近い入力の頻度が極めて低いことを示しており、ノードの保持している情報は学習すべきデータと無関係なノイズであるものとみなすことができるためである。
【0058】
尚、後述する本実施の形態1にかかる効果の説明において、学習データにノイズが乗っていないという理想的な条件下での実験を実施するが、この場合、学習した連想対のノードが孤立点(辺が存在しないノード)となり消去されてしまうものの、入力層において入力データに正規分布に従う摂動を加えて競合層へ入力することによって、この問題を回避することができる。
【0059】
重みベクトル更新部124は、入力ベクトルに最も近いノードに対応する重みベクトル、及びそのノードと辺によって直接的に接続されるノードに対応する重みベクトルをそれぞれ入力ベクトルに更に近づけるように更新する。
【0060】
プロトタイプノード生成部125は、ノードの集合であるクラスについて、各クラスの代表的なノードとしてのプロトタイプノードを生成する。より具体的には、プロトタイプノード生成部125は、まず、辺によって到達可能なノードの集合をクラスとみなして、以下の手法によりノードの属するクラスを決定する。尚、辺を通じて到達できるノードの個数が1個以下である場合、即ち、クラスタを構成するノードの個数が2個以下である場合にはそのノードをノイズとみなし、クラスとは扱わないものとする。
【0061】
S201:全てのノードをどのクラスにも属していない状態とする。
S202:どのクラスにも属していないノードiをランダムに選択し、ノードiに近傍ノードが存在する場合のみ新しいクラスのラベルを付与する。一方、近傍ノードが存在しない場合にはクラスのラベルは付与せず、以後ステップS202における選択対象から外すものとする。尚、近傍ノードとは、ノードiと辺によって直接的に接続している他のノードを示す。
S203:ノードiから辺を通じて到達可能なノードを全て探索し、ノードiと同じラベルを付与する。
S204:どのクラスにも属さず、かつステップS202における選択対象から外されていないノードが存在する場合には、ステップS202に戻る。一方、存在しない場合には、ステップS205へと進む。
S205:クラスのラベルが付与されているノードのうち、近傍ノードの個数が1以下のノードについて、そのラベルを剥奪する。
【0062】
次いで、プロトタイプノード生成部125は、ひとつのクラス(同一のクラスのラベルが貼られているノード群)につきひとつのプロトタイプノードを生成する。より具体的には、クラスを代表するベクトルとして、同一クラスに属するノードが持つ結合重みベクトルの平均値算出し、そのクラスの重みベクトルの平均値を自身の結合重みベクトルとして持つプロトタイプノードを生成する。
【0063】
学習データにノイズが乗っている場合(ここでは実環境を想定し、ガウスノイズと仮定する)、あるいは学習データに摂動を加えた場合には、連想対の情報はある程度の広がりを持ったクラスタを形成し、ノイズも含めた入力の分布が近似されるものと予想される。位相空間中におけるノードの位置はノードの持つ結合重みベクトルによって決まるため、1つのクラスタに属するノードの結合重みベクトルを平均した結合重みベクトルは、クラスタの中心を近似する。即ち、クラスタの中心を近似したベクトルは、ノイズの乗っていないベクトルを近似したベクトルとすることができる。従って、このようなプロトタイプノードをクラスタごとに生成することにより、データに乗ったノイズの影響の低減を図ることができる。また、このようなプロトタイプノードを出力することにより、後述する想起部20は、"入力データに乗ったノイズ"による想起結果の歪みの軽減を図ることができる。
【0064】
想起部20は、学習部10により学習され記憶された連想対について、連想対の一方のベクトルを想起キーとして学習部10に入力して、連想対の他方のベクトルを学習部10から出力することによって想起する。ここで、想起は学習した連想対の一方を想起キーとして、他方を想起する双方向想起が可能である。例えば、M次元ベクトルFを想起キー、N次元ベクトルRを想起結果として学習を行い、F→Rという連想を学習した場合において、順方向想起とはFを想起キーとしてRを想起する連想であり、逆方向想起とはRを想起キーとしてFを想起する連想である。
【0065】
より具体的には、想起部20は、まず、想起キーとSOINN12上に配置されたノード間の距離を算出し、距離が最小かつ閾値δ以下となるノードについて、1つのクラスにつき1つのノードを探索して勝ちノードとする。ここで、想起キーとSOINN12上のノード間の距離を計算する際に、順方向想起においては想起キーFとSOINN12上のノードの1からM次元目の距離を計算し、逆方向想起においては想起キーRとSOINN12上のノードのM+1からM+N次元目の距離を計算する。次いで、それぞれの勝ちノードの属するクラスのプロトタイプノードを求め、プロトタイプノードの持つ結合重みベクトルのうち、順方向想起の場合はM+1からM+N次元目、逆方向想起の場合は1からM次元目を想起結果として出力する。
【0066】
ここで、ノイズによって変質したデータ(位相空間中で本来のデータ位置からずれたデータ)を連想キーとして想起を行った場合には、クラスタの中心から離れた位置に存在するノードが勝ちノードとなり、誤った想起結果を出力する可能性がある。かかる場合においても、想起部20は、勝ちノードの重みベクトルを直接想起結果とするのではなく、勝ちノードが属するクラスのプロトタイプノードの結合重みベクトルを想起結果とすることにより、入力データに乗ったノイズによる想起結果の歪みの軽減を図ることができる。また、プロトタイプノードのみに対応するベクトルを出力するため、計算量を削減することができる。
【0067】
さらにまた、想起部20は、閾値δを調整することにより、入力される想起キーに対して既知か否かとなる範囲を変化させることができるため、入力された想起キーが未知であるものと柔軟に判定することができる。また、閾値δを調整することにより、出力される連想対の想起数を柔軟に調整することができる。
【0068】
以上のような連想記憶装置1は、専用コンピュータ、パーソナルコンピュータ(PC)などのコンピュータにより実現可能である。但し、コンピュータは、物理的に単一である必要はなく、分散処理を実行する場合には、複数であってもよい。図6は、本実施の形態1に係る連想記憶装置1を実現するためのシステム構成の一例を示す図である。図6に示すように、コンピュータ40は、CPU41(Central Processing Unit)、ROM42(Read Only Memory)及びRAM43(Random Access Memory)を有し、これらがバス44を介して相互に接続されている。尚、コンピュータを動作させるためのOSソフトなどは、説明を省略するが、この連想記憶装置1を構築するコンピュータも当然備えているものとする。
【0069】
バス44には又、入出力インターフェイス45も接続されている。入出力インターフェイス45には、例えば、キーボード、マウス、センサなどよりなる入力部46、CRT、LCDなどよりなるディスプレイ、並びにヘッドフォンやスピーカなどよりなる出力部47、ハードディスクなどより構成される記憶部48、モデム、ターミナルアダプタなどより構成される通信部49などが接続されている。
【0070】
CPU41は、ROM42に記憶されている各種プログラム、又は記憶部48からRAM43にロードされた各種プログラムに従って各種の処理、本実施の形態においては、例えば学習処理や想起処理を実行する。RAM43には又、CPU41が各種の処理を実行する上において必要なデータなども適宜記憶される。通信部49は、例えば図示しないインターネットを介しての通信処理を行ったり、CPU41から提供されたデータを送信したり、通信相手から受信したデータをCPU41、RAM43、記憶部48に出力したりする。記憶部48はCPU41との間でやり取りし、情報の保存・消去を行う。通信部49は又、他の装置との間で、アナログ信号又はディジタル信号の通信処理を行う。入出力インターフェイス45は又、必要に応じてドライブ50が接続され、例えば、磁気ディスク501、光ディスク502、フレキシブルディスク503、又は半導体メモリ504などが適宜装着され、それらから読み出されたコンピュータプログラムが必要に応じて記憶部48にインストールされる。
【0071】
続いて、本実施の形態1に係る学習処理及び想起処理について説明する。まず、本実施の形態1に係る学習処理及び想起処理を説明するための用語について説明する。以下、Aはノードの集合、Wはi番目のノードが持つ結合重み、Eはi番目のノードの近傍ノード群、Pはプロトタイプノードの集合、dはi番目のノードの持つ類似度閾値としての近傍閾値、Γedgeは辺の年齢としての辺の寿命、μはi番目のノードが勝者ノードとなった勝ち回数、δは想起処理における勝者閾値、λはノードの除去が行われる頻度、‖a−b‖はノードa及びノードb間のユークリッド距離をそれぞれ示すものとする。
【0072】
次いで、図7を参照しながら連想記憶装置1による学習処理について説明する。図7は、連想記憶装置1による学習処理の概要を示すフローチャートである。
【0073】
S301:ノード集合A及びプロトタイプノード集合Pを空集合とし、学習回数カウンタを0として初期化し、その結果を一時記憶部(例えばRAM43)に格納する。
S302:学習用連想対DB30より、連想のキーとなるM次元ベクトルF及び連想のキーから想起されるN次元ベクトルRが学習部10へと与えられ、その結果を一時記憶部に格納する。ここで、F及びRは−1から1までの値を取る実数値ベクトルである。
S303:入力部11は、一時記憶部に格納されたベクトルF及びRより、以下の式に基づいてM+N次元ベクトルの連想対ベクトルXを生成し、その結果を一時記憶部に格納する。
【数1】

【0074】
S304:入力部11は、一時記憶部に格納された連想対ベクトルXについて、以下の式に基づいて連想対ベクトルXに摂動を加え、競合層への入力ベクトルである入力信号(Input)を生成し、その結果を一時記憶部に格納する。ここで、InputはベクトルInputにおけるk番目の成分を示す。
【数2】

S305:一時記憶部に格納されたノードについて、Aに含まれるノードの個数が2以上である場合には、Aに含まれるノードのうち、‖Input−W‖が最小となるノード、即ち、Inputに最も近い重みベクトルを持つ第1勝者ノードr、及び2番目に近い重みベクトルを持つ第2勝者ノードqを探索し、その結果を一時記憶部に格納する。尚、Aに含まれるノードの個数が2個より少ない場合には、Inputを結合重みとして持つ新たなノードを生成し、Aに追加してS315へと進む。
【0075】
S306:クラス間ノード挿入部121は、一時記憶部に格納されたInput及び重みベクトルWについて、以下の式が成立するか否かについて判定を行い、成立する場合にはS308へと進む。
【数3】

ここで、d及びdは以下の式に基づいてそれぞれ算出し、その結果を一時記憶部に格納する。
【数4】

S307:S306における判定の結果、成立しない場合には、クラス間ノード挿入部121は、Inputを結合重みとして持つ新たなノードを生成してAに追加し、その結果を一時記憶部に格納する。
【0076】
S308:一時記憶部に格納されたノードについて、ノードr及びq間に辺が存在しない場合には、r及びqを結ぶ辺を生成し、その結果を一時記憶部に格納する。次いで、一時記憶部に格納されたE及びEについて、Eにqを、Eにrをそれぞれ追加し、その結果を一時記憶部に格納する。また、一時記憶部に格納された、ノードr及びq間を結ぶ辺について、辺の寿命を0とし、その結果を一時記憶部に格納する。さらにまた、一時記憶部に格納された、ノードrと辺によって直接的に接続される他のノードについて、他のノードとの間に存在する全ての辺の寿命をインクリメントし(+1する)、その結果を一時記憶部に格納する。
S309:辺削除部122は、一時記憶部に格納された辺について、寿命がΓedgeを超えた辺を削除し、その結果を一時記憶部に格納する。
【0077】
尚、Γedgeを用いることにより、ノイズなどの影響により誤って生成される辺を削除することができる。Γedgeに小さな値を設定することにより、辺が削除されやすくなりノイズによる影響を防ぐことができるものの、値を極端に小さくすると、頻繁に辺が削除されるようになり学習結果が不安定になる。一方、極端に大きな値をΓedgeに設定すると、ノイズの影響で生成された辺を適切に取り除くことができない。これらを考慮して、パラメタΓedgeは実験により予め算出し一時記憶部に格納される。
【0078】
S310:重みベクトル更新部123は、一時記憶部に格納されたノードの結合重みベクトルWについて、ノードr及びその近傍ノードEの結合重みベクトルを以下の式に基づいて更新し、その結果を一時記憶部に格納する。
【数5】

【数6】

ここで、W及びWは以下の式に基づいてそれぞれ算出する。
【数7】

【数8】

次いで、一時記憶部に格納された、ノードrが勝者回数となった勝ち回数μについて、以下の式に基づいて、インクリメントし(+1する)、その結果を一時記憶部に格納する。
【数9】

また、一時記憶部に格納された学習回数カウンタをインクリメントし(+1する)、その結果を一時記憶部に格納する。
S311:学習部10は、一時記憶部に格納された学習カウンタがλを超えたか否かを判定する。学習カウンタがλを超えた場合にはS312へ進む。一方、超えていない場合にはS313へと進む。
【0079】
尚、λはノイズと見なされるノードを削除する周期である。λに小さな値を設定することにより、頻繁にノイズ処理を実施することができるものの、値を極端に小さくすると、実際にはノイズではないノードを誤って削除してしまう。一方、極端に大きな値をλに設定すると、ノイズの影響で生成されたノードを適切に取り除くことができない。これらを考慮して、パラメタλは実験により予め算出し一時記憶部に格納される。
【0080】
S312:ノード削除部123は、一時記憶部に格納されたAに含まれるノードiについて、Eが空集合であるノードを削除し、その結果を一時記憶部に格納する。次いで、一時記憶部に格納された学習回数カウンタを0とし、その結果を一時記憶部に格納する。
S313:プロトタイプノード生成部125は、上述したようにノードのクラス分類を行い、その結果を一時記憶部に格納する。
S314:プロトタイプノード生成部125は、一時記憶部に格納されたPを空集合に初期化し、1つのクラスにつき1つのプロトタイプノードを生成してPに追加し、その結果を一時記憶部に格納する。ここで、プロトタイプノードの結合重みベクトルは、クラス内ノードの結合重みベクトルの平均値により算出する。
S315:学習処理を続行し、次のデータを入力する場合にはS302へと進み処理を続行する。一方、学習処理を終了する場合には、以上の処理を終了して学習を停止する。
【0081】
次に、想起処理について説明する。図8は、連想記憶装置1による想起処理の概要を示すフローチャートである。
【0082】
S401:想起部20は、想起キーKEYが入力されると、以下の式に基づいてM+N次元ベクトルInputを生成して競合層への入力とし、その結果を一時記憶部に格納する。尚、KEYは順方向想起時にはM次元であり、逆方向想起時にはN次元のベクトルである。
【数10】

S402:一時記憶部に格納されたノードについて、各クラスにおいて、Inputとの間の距離が最小となるノードを探索する。さらに、距離が最小であり、かつ距離が閾値δ以下となるノード全てを勝ちノードとし、その結果を一時記憶部に格納する。ここで、勝ちノードのノード番号をrとする。
【0083】
ここで、Input及び競合層に存在するノードの結合重みベクトルW(j∈A)間のユークリッド距離dInput,Wjを、以下の式に基づいて算出する。尚、以下の式において示すように、ユークリッド距離dInput,Wjは連想キーが入力された側に対応する成分のみについて距離を算出する。ここで、Input,Wj,kはベクトルのk番目の成分を示している。
【数11】

【0084】
このように閾値δを用いてノードを探索することにより、勝ちノード(想起結果)となるノードは複数存在する場合があり、その数は学習の内容及び連想キーによって変化する。また、閾値δを調整することによって、勝ちノード数を柔軟に調整することができる。
【0085】
S403:一時記憶部に格納されたプロトタイプノードについて、勝ちノードの属するクラスのプロトタイプノードを探索し、その結果を一時記憶部に格納する。ここで、プロトタイプノードとは、ひとつのクラス(辺により接続された3つ以上のノードからなるクラスタ)にひとつ存在する、クラスの代表ノードである。探索したプロトタイプノード番号をProto(r)とする。
S404:一時記憶部に格納されたプロトタイプノードについて、プロトタイプノードの持つ結合重みベクトルWProto(r)のうち、連想キーが入力されていない側に対応する成分を想起結果Outputとして出力する。ここで、WProto(r),kはプロトタイプノードの持つ結合重みベクトルにおけるk番目の成分を示す。
【数12】

【0086】
続いて、本発明の実施の形態1に係る連想記憶装置1による効果について説明する。尚、以下においては、連想記憶装置1をAssociative Memory with Self−Organizing Incremental Neural Network(SOINN−AM)と呼ぶ。
【0087】
SOINN−AMの有効性を確認するため、グレイスケール顔画像及び2値の文字画像を用いて実験を行った。図9は、グレイスケールの顔画像を示すAT&T顔画像データベースの画像である。図9に示す92×112ピクセルのグレイスケール顔画像を、各ピクセルのデータについて[−1,1]の範囲に正規化し、実数値ベクトルとして実験した。
図10は、2値データを示すビットマップデータである。図10に示すビットマップデータは、7×7のビットマップデータであり、白いピクセルを−1、黒いピクセルを+1とすることにより、2値のデータとしてベクトル化した学習データとした。
【0088】
また、従来手法との比較に際しては、図10に示す2値データを用いて連想の学習実験を行った。比較手法としては、非特許文献:Oh.H, Kothari.S.C, "Adaptation of the relaxation method for learning in bidirectional associative memory, " IEEE Trans. Neural Networks, Vol.5, No.4, pp 576-583, 1994.に開示されるPseudo-Relaxation Learning Algorithmを用いたBidirectional Associative Memory(以下、BAM with PRLABという。)、非特許文献8に開示されるKohonen Feature Mapによる連想記憶モデル(以下、KFMAMという。)、及び非特許文献9に開示されるKFMAMにweight fixed及びsemi-fixedを導入した手法(以下、KFMAM−FWという。)を用いた。それぞれの従来手法においては、結合重みベクトルの初期値を−1から+1の間でランダムに選択した。
【0089】
また、SOINN−AMは学習用連想対データを50回ずつ入力するものとし、BAM with PRLAB及びKFMAMについては、重みベクトルが変化しなくなるまで学習を行った。図11は、それぞれの学習器におけるパラメタ設定を示す表である。
【0090】
まず、逐次的に与えられる学習データを、既存の知識を壊すことなく追加的に学習できるかについて検証する。このため、ひとつの連想対についての学習が完了した後に、続いて次の連想対の学習を開始させるという、逐次的な学習を行った。
【0091】
SOINN−AMに対して、各人10パターン、合計60パターンの顔画像を学習させた結果、27分11秒の学習処理時間を要し(Intel Xeon Processor 3.60GHz, 2GB RAM)、101個のノードからなるネットワークを生成した。例えば、図9(a)に示す画像は、図9(b)に示す顔画像をSOINN−AMにより学習させ、想起に成功した場合の想起結果を示している。図9(b)に示す学習対象の顔画像に対して、実際にSOINN−AMが想起した顔画像との間でユークリッド距離を算出すると、その距離は0.1から0.2の範囲であった。これは、ベクトルの次元数が10304であるため、次元辺り(ピクセル毎)の平均誤差は1×10−5から2×10−5である。即ち、人間の目では殆ど差が分からず、極めて微小な差であるといえる。
【0092】
ここで、Recall及びPrecisionという2つの尺度から、SOINN−AMの性能を評価する。Recallは再現率とも呼び、解と判定されるべき事例をシステムがどれだけ解として列挙できたかを示す。Recallは以下の式に基づいて算出する。
【数13】

一方、Precisionは精度とも呼び、システムが解として列挙した事例のうち、どれだけが想起すべき本当の解であるかを示す。Precisionは以下の式に基づいて算出する。
【数14】

【0093】
また、想起された顔画像を正解と判断するための評価基準について説明する。本明細書においては、SOINN−AMが想起した顔画像及び学習させた元画像との間のユークリッド距離を算出し、算出結果が0.3を下回った場合に正解であるものとみなした。即ち、図9(a)に示した顔画像及び元画像との間のユークリッド距離が0.1から0.2であったことから、SOINN−AMは高い正解率を有するものである。
【0094】
尚、SOINN−AMでは、パラメタδを操作することによりRecall−Precisionが変化するが、一般に、Recall及びPrecisionはトレードオフの関係にある。即ち、δの値を大きくしすぎた場合には、既知の知識の全てを想起結果として返してしまうため、想起結果には(本来Unknownであると答えるべき場合を除いて)正解が含まれることになり、Recallの値が1に到達する。しかし、この場合には、答えた解のほとんどが誤りであるため、Precisionは低下する。
他方、δの値を小さくしすぎた場合には、少しでも学習時と異なる想起キーを入力すると、未知入力であるものと解釈してUnknownと答えてしまい、Recallが低下し、さらにノイズ耐性も低下してしまう。
【0095】
ここで、上記の顔画像を用いた実験において、Recall及びPrecisionの関係がパラメタδによってどのように変化するかについて検証した。図12は、その結果を示す表である。図12に示すように、パラメタδの範囲が0.0015から0.25において、Recall−Precisionはともに1となり、SOINN−AMはその範囲においてパラメタの設定を柔軟に行うことができる。
【0096】
次に、図10に示す2値データを用いて従来手法との比較を行った。従来の連想記憶モデルの殆どは2値ベクトル間での連想を学習するものである。このため、従来手法との比較に際しては、2値データを用いて逐次的な学習を行わせた。ここで、学習した連想対はA→a、B→bのように、アルファベットの大文字から小文字への連想26対とし、それぞれの連想対をアルファベットの並び順に学習器へと入力し、逐次的な学習を行った。即ち、A→aという連想対を学習し終えた後に、B→bという連想対の学習を開始し、それが終わった場合に次はC→cという連想対の学習を行う、といったようにして学習を行った。
【0097】
全ての連想対を学習し終えた後、学習器に対して、想起キーとして大文字のアルファベットを入力して、対応する小文字のアルファベットが正しく出力されるか否かの判定を行った。尚、2値データを用いた実験においては、SOINN−AMが想起したベクトルの各成分について、正の値であるならば+1、負の値であるならば−1とみなして2値データ化した上で、元々の2値画像とビットの並びが完全に一致した場合のみを正解とした。また、δ=0.15とした。
【0098】
図13は、各学習器による再現結果を示す表である。SOINN−AMは、全ての連想対を学習するために99個のノードからなるネットワークを生成した。また、学習を完了するまでに4秒を要した(Intel Xeon Processor 3.60GHz , 2GB RAM)。そして、図13に示すように、BAM with PRLAB及びKFMAMによるRecall Rateが50%に満たない一方で、SOINN−AMは全てのパターンを想起することができた。
【0099】
図14に示す画像は、BAM with PRLAB及びKFMAMによる想起結果を示す画像である。図14(a)はBAM with PRLABによる想起結果を説明するための画像であり、上段が想起結果、下段が正しい想起結果を示す。図14(b)はKFMAMよる想起結果を説明するための画像であり、上段が想起結果、下段が正しい想起結果を示す。
【0100】
図14に示すように、これらの学習器においては、後半に学習させたX→xや、Y→yという連想については略正しく想起できたものの、前半に学習させたA→aや、B→bという連想については誤った想起をした。これは、新たな学習によって、それ以前に学習した記憶が失われるという問題のためである。
【0101】
他方、図13に示したように、KFMAM−FWでは、十分なサイズのネットワークが事前に与えられている場合には、全てのパターンを想起することが出来るものの、ネットワークサイズが十分でない場合には無限ループに陥り(Going to infinite loop)、学習を完了することができなかった。KFMAM−FWでは、新たな学習によってそれ以前に学習した記憶が失われる問題を解決するため、連想対を学習したノードの結合重みベクトルを固定する。このため、事前に与えられたネットワークサイズが学習すべき連想対の数に対して不足している場合には、ネットワーク中における全てのノードの結合重みベクトルが固定されてしまい、それ以上学習することができないという状況に陥る。従って、KFMAM−FWは、学習すべきデータの個数が明確に決まっている場合でなければ、有効に機能することができない。
【0102】
続いて、SOINN−AMに対して、多対一の連想対を学習させ、正しいペアを想起できるか否かについて検証を行った。図15は、学習に使用した顔画像を示している。連想対として、図15(a)に示す様々なアングルの顔から、図15(b)に示す正面の顔を想起するという5対1の連想とした。このような連想を20人分用意し、SOINN−AMに対して逐次的に入力して学習した。尚、学習に際して、ある想起キーからいくつの想起結果が得られればよいかという情報は事前に与えないものとした。
【0103】
図16は、多対一の連想実験の結果を示す表である。図16は、学習が完了した後、上記同様δを変化させながら想起キーを入力し、想起結果からRecall及びPrecisionを算出した結果を示しており、ここでは、δ=0.15とした。
図16に示すように、実験の結果、SOINN−AMは全ての想起キーに対して正しい想起結果を返すことができた。尚、一対多の連想において、正しい想起結果とは、学習させた連想対のペアだけを想起し、それ以外のペアは一切想起しないという結果である。
【0104】
さらに、5対1、4対1、3対1、及び2対1の連想対をひとつのSOINN−AMにより学習させ、同様にδを変化させながら想起キーを入力し、想起結果からRecall及びPrecisionを算出した。図17は、このような多対一の連想実験の結果を示す表である。図17に示すように、実験の結果、SOINN−AMは全ての想起キーに対して正しい想起結果を返すことができた。また、図12及び図16に示した結果と比較しても、Recall及びPrecisionの両方が1に達するパラメタδの範囲がほぼ同様の範囲となっており、連想方式に応じてパラメタを調整する必要がないことが示された。
【0105】
続いて、SOINN−AMが有するノイズ耐性能力についての検証実験を行った。本実施の形態1においては、ノイズとして、"データに乗ったノイズ"及び"データと独立なノイズ"という2種類のノイズを定義する。
"データに乗ったノイズ"とは、例えば顔画像において図27(a)に示したノイズを指す。このノイズへの耐性とは、本来のデータがノイズによって歪んだ場合であっても、ノイズの影響を排除して正しいペアを想起することが出来ることをいう。
"データと独立なノイズ"とは、例えば、図27(b)に示したようなホワイトノイズや、学習していない顔画像などの全く未知のデータが想起キーとして入力されたという状況に相当する。このノイズへの耐性とは、このようなランダムパターンが想起キーとして与えられた場合において、既知の記憶には相当しない未知データであるものと判定し、想起結果を返さないことが出来ることをいう。
【0106】
まず、実数値データを用いて、SOINN−AMによるノイズ耐性能力を検証した。そこで、図15に示した顔画像を用いて、上記の実験同様5対1の連想対20人分をSOINN−AMにより学習させ、学習が完了した後、ノイズの乗った学習済み顔画像を想起キーとして入力した。尚、これまでの実験結果を踏まえてδ=0.2と設定した。
【0107】
始めに、データに乗ったノイズへの耐性を検証するため、顔画像にホワイトノイズを加えた。そして、図27(a)のような画像を想起キーとし、想起された結果をもとにRecall及びPrecisionを算出した。
【0108】
図18は、データに乗ったノイズに対する想起結果を示す図である。ここで、図の横軸はシグナル−ノイズ比(SN比)であり、以下の式に基づいて算出する。Sは、入力画像の各ピクセルが取りうる値の幅を示し、本実験においてはS=2である。σは、データに加えるノイズが従う分布の偏差を示す。尚、SN比の数値が大きいほどノイズが少ない状態であることを意味する。
【数15】

【0109】
図19(a)は、SN比が20である画像を示している。SOINN−AMは、このようなノイズの乗った画像からでも、図9(a)に示したノイズ無しデータを想起キーとした場合と同様の画像を想起することができた。また、図19(b)は、SN比が18の画像を示し、ここまでノイズが増えた場合には、SOINN−AMは既知の人物ではないものと判定する。かかる場合において、Recallは低下するものの、Precisionは低下しないため、SOINN−AMが誤った解を想起結果として返すことはない。
尚、図18では、SN比が20前後において、Recallが急激に低下しているが、これはノイズが多くなりすぎたため、想起キーとなる画像と、学習時に用いた画像との間のユークリッド距離が閾値δrを超える程遠くなったためである。
【0110】
次に、図20に示すような、完全なホワイトノイズ及び未学習の顔画像を入力して、データと独立なノイズに対する耐性を検証した。その結果、SOINN−AMは、いずれの入力に対してもこれらの想起キーを、既知のどの記憶とも一致しない未知入力であるものと判定することができた(図20において、「Unknown」と出力した)。これは、ノードの持つ結合重みベクトルと、ランダムパターン及び未知画像との間の距離が大きく離れており、想起処理における閾値δを上回ったためである。
【0111】
続いて、図10に示した2値データを用いて、SOINN−AMによるノイズ耐性能力について検証した。ここでは、他手法との比較のため、2値データを用いて2種のノイズへの耐性を検証した。図10に示したビットマップデータを用いて、アルファベットの大文字から小文字への連想対を26対用意し、それぞれの学習器により学習した。尚、実験においては、KFMAM及びKFMAM−FWのネットワークサイズは100とし、KFMAM−FWがネットワークサイズの不足によって無限ループに陥るという事態を回避して行った。
【0112】
始めに、データに乗ったノイズへの耐性を検証するため、一部のビットが反転した2値データを想起キーとして入力し、正しい連想対を想起できるか検証を行った。尚、δ=0.15とし、ノイズ含有率の異なるデータを各連想対につき100組、合計2600組用意して、想起キーとして入力した。
【0113】
図21は、ノイズに対する各学習器の耐性結果を示す図である。ここで、Noise Levelはノイズ含有率を示し、データの各ビットが反転する確率を意味する。また、図21において、図中の(batch learning)により示される正解率は、バッチ学習によって連想対を学習させた場合の正解率であり、非特許文献9において開示された正解率とほぼ同様の数値である。
図21に示すように、ノイズが20%の時点において、他手法が正しく想起できた連想対の割合が70%以下であるのに対して、SOINN−AMは92.3%であった。また、ノイズが24%となる場合には、他手法は49%以下であるのに対して、SOINN−AMの正解率は88.8%であった。このように、2値データを用いた場合においても、従来手法に比較して、SOINN−AMはデータに乗ったノイズに対してより強い耐性を有するものである。
【0114】
次に、各ビットがランダムに+1又は−1の値をとる2値データを想起キーとしてそれぞれの学習器に入力し、データと独立なノイズへの耐性を検証した。
図22は、ランダムパターンを入力した場合の想起結果を示す図である。図22(a)及び(f)は学習器へと入力したランダムパターンの一例であり、(b)乃至(e)、及び(g)乃至(j)は、それぞれ入力(a)及び(f)に対する想起結果を示す図である。ここで、図22(b)及び(g)は、SOINN−AMによる想起結果を示し、(c)及び(h)は、PRLABによる想起結果を示し、(d)及び(i)は、KFMAMによる想起結果を示し、(e)及び(j)は、KFMAM−FWによる想起結果をそれぞれ示している。図22に示すように、SOINN−AMはこのようなデータが入力された場合、「未知の想起キーであり、対応する連想結果は存在しない(Unknown)」ものであると適切に判定することができた。一方、PRLAB、KFMAM、及びKFMAM−FWは、未知の想起キーに対して、学習していないデータを想起結果として出力した。即ち、これらの学習器は、入力された想起キーが既知か否かを判定する機構を持たず、未知の想起キーに対しても何らかのデータを出力し、不正な想起結果を返してしまう。
【0115】
続いて、実環境から得られるデータをSOINN−AMに学習させ、正しい想起が行えるか否かについて検証を行った。
図23は、実験において使用する物体を示す画像である。ステレオカメラを用いて、図23に示す物体から特徴量を取得するものとし、ここでは、特徴量として物体の色及び形を取得した。具体的には、色の特徴量は、物体のRGB値の平均値を0から1の範囲に正規化し、HSV値に変換して得た3次元ベクトルである。また、形の特徴量は、物体の輪郭と中心点の距離の系列を波形とみなして離散フーリエ変換を行い、実数部及び虚数部の第一係数から第八係数のみを取り出して得た16次元ベクトルである。色及び形の特徴量ベクトルを結合して19次元のベクトルとし、このベクトルを物体ベクトルとした。黒い実験台上に配置した物体を、カメラにより撮影し、逐次的に得た画像の黒い領域を背景とみなして除去して、物体画像だけを取り出すことにより物体ベクトルを取得した。図24は、SOINN−AMに学習させた、物体ベクトル間の連想対15組を示す表である。ここで、表中の(赤,三角)などは、左側が物体の色を、右側が物体の形を示している。
【0116】
学習が完了した後、それぞれの物体ベクトルを想起キーとして、順方向想起及び逆方向想起を行い、正しい想起が行えるか否かについて検証実験を行った。尚、δ=0.02とした。また、想起された物体ベクトルと、学習させた物体ベクトルとの間のユークリッド距離が0.3以下(次元あたり0.016)となり、学習させた連想対のみを想起した場合に、正しい想起を行ったものと判断した。
【0117】
実験の結果、SOINN−AMは全ての想起キーに対して正しい連想を行うことができた。図25及び26は、SOINN−AMが想起した物体ベクトルの例を示す図である。尚、図においては見易さのため、想起結果である物体ベクトルをそのまま表示せずに、形ベクトルを輪郭に戻して描写し、色ベクトルの表現する色により内側を塗りつぶした画像として表示している。
【0118】
図25(a)に示す画像は、カメラにより取得した画像である。図25(b)に示す画像は、図25(a)の画像から形及び色の特徴量を抽出し、(黄色,三角)を想起キーとした場合の順方向想起による想起結果((緑,丸)及び(黄色,三角))を示す画像である。また、図26(b)に示す画像は、図26(a)の画像から形及び色の特徴量を抽出し、(青,四角)を想起キーとした場合の逆方向想起による想起結果((緑,丸)及び(青,星型))を示す画像である。このように、SOINN−AMは逐次的に与えられる実数値データを追加的に学習することができ、多方向連想の機能をも有するものである。
【0119】
以上の実験において説明したように、SOINN−AMは、新たな学習データを与えられても既存の記憶を壊す事無く学習が可能であり、特に、学習すべきデータの数を事前に決定できない環境において、従来手法と比較してより有効に機能するものである。
【0120】
また、SOINN−AMは、多方向連想において、従来手法のようにいくつの連想対を想起すればよいかを事前に決定する必要がなく、想起する連想対の数は学習の内容に応じて変化し、かつひとつの学習器によって様々な多方向連想(2対1、3対1、4対1など)を実現可能である。
さらにまた、SOINN−AMは、"データに乗ったノイズ"及び"データと独立なノイズ"という2種類のノイズに対して高い耐性を有するものである。
また、SOINN−AMは、実環境から得られる実数値データ間での連想に用いることができる。
【0121】
尚、本実施の形態1においては、連想記憶装置1が学習処理及び想起処理を行うものとして説明したが、本発明はこれに限定されるものではない。例えば、学習部10を、自己増殖型ニューラルネットワークを用いて学習を行う学習装置としても使用することができる。また、想起部20を、自己増殖型ニューラルネットワークを用いて想起を行う想起装置としても使用することができる。
【0122】
尚、本実施の形態1において示した連想はこれに限定されず、SOINN−AMは実環境における他の連想についても適用することができる。
また、実環境において動作する知能ロボットにSOINN−AMを適用することができる。SOINN−AMを適用することにより、非定常かつノイズ在りの環境下において推論などの複雑なタスクを行うロボットを実現することができる。
【0123】
その他の発明の実施の形態.
以上、本発明をその実施の形態により説明したが、本発明はその趣旨の範囲において種々の変形が可能である。例えばSOINN12に代えて、SOINNに基づくadjusted SOINN、又はEnhanced−SOINN(以下E−SOINNという。)を使用しても良い。
【0124】
図28を用いてadjusted SOINNの処理を説明する。adjusted SOINNは、SOINNと比べて、学習に際して事前に指定するパラメタの数を少なくすることができ、より簡単に学習を実施することができる。
【0125】
S501:入力情報取得手段は、ランダムに2つの入力パターンを取得し、ノード集合Aをそれらに対応する2つのノードのみを含む集合として初期化し、その結果を一時記憶部に格納する。また、辺集合C⊂A×Aを空集合として初期化し、その結果を一時記憶部に格納する。
S502:入力情報取得手段は、入力ベクトルとしての新しい入力パターンξを入力し、その結果を一時記憶部に格納する。
S503:勝者ノード探索手段は、一時記憶部に格納された入力パターン及びノードについて、入力パターンξに最も近い重みベクトルを持つ第1勝者ノードa1及び2番目に近い重みベクトルを持つ第2勝者ノードa2を探索し、その結果を一時記憶部に格納する。
【0126】
S504:類似度閾値判定手段は、一時記憶部に格納された入力パターン、ノード、ノードの類似度閾値について、入力パターンξと第1勝者ノードa1間の距離が第1勝者ノードa1の類似度閾値T1より大きいか否か、及び、入力パターンξと第2勝者ノードa2間の距離が第2勝者ノードa2の類似度閾値T2より大きいか否かを判定し、その結果を一時記憶部に格納する。ここで、一時記憶部に格納された第1勝者ノードa1の類似度閾値T1及び第2勝者ノードa2の類似度閾値T2は、SOINNと同様にして算出され、その結果が一時記憶部に格納される。
S505:一時記憶部に格納されたS504における判定の結果、入力パターンξと第1勝者ノードa1間の距離が第1勝者ノードa1の類似度閾値T1より大きい、又は、入力パターンξと第2勝者ノードa2間の距離が第2勝者ノードa2の類似度閾値T2より大きい場合には、ノード挿入手段は、一時記憶部に格納された入力パターン及びノードについて、入力パターンξを新たなノードiとして、入力パターンξと同じ位置に挿入し、その結果を一時記憶部に格納する。
【0127】
S506:一方、一時記憶部に格納されたS504における判定の結果、入力パターンξと第1勝者ノードa1間の距離が第1勝者ノードa1の類似度閾値T1以下であり、かつ、入力パターンξと第2勝者ノードa2間の距離が第2勝者ノードa2の類似度閾値T2以下である場合には、辺接続判定手段は、一時記憶部に格納されたノード及びノード間の辺について、第1勝者ノードa1及び第2勝者ノードa2間に辺を接続するか否かを判定し、その結果を一時記憶部に格納する。
【0128】
S507:一時記憶部に格納されたS506における判定の結果、第1勝者ノードa1及び第2勝者ノードa2間に辺を生成して接続する場合には、辺接続手段は、一時記憶部に格納されたノード及びノード間の辺について、第1勝者ノード及び第2勝者ノード間に辺を接続し、その結果を一時記憶部に格納する。そして、adjusted SOINNは、一時記憶部に格納された辺及び辺の年齢について、新しく生成された辺、及び、既にノード間に辺が生成されていた場合にはその辺について、辺の年齢を0に設定しその結果を一時記憶部に格納し、第1勝者ノードa1と直接的に接続される辺の年齢をインクリメントし(1増やす)、その結果を一時記憶部に格納する。一方、一時記憶部に格納されたS506における判定の結果、第1勝者ノードa1及び第2勝者ノードa2間に辺を接続しない場合には、S508へと処理を進めるが、既にノード間に辺が生成されていた場合には、辺削除手段は、一時記憶部に格納されたノード及びノード間の辺について、第1勝者ノードa1及び第2勝者ノードa2間の辺を削除し、その結果を一時記憶部に格納する。
次いで、adjusted SOINNは、一時記憶部に格納された第1勝者ノードa1が第1勝者ノードとなった累積回数Ma1をインクリメントし(1増やす)、その結果を一時記憶部に格納する。
【0129】
S508:重みベクトル更新手段は、一時記憶部に格納されたノード及びノードの重みベクトルについて、第1勝者ノードa1の重みベクトル及び第1勝者ノードa1の隣接ノードの重みベクトルをそれぞれ入力パターンξに更に近づけるように更新し、その結果を一時記憶部に格納する。ここで、重みベクトルの更新量の算出には、一時記憶部に格納されるMa1をtとして使用する。
S509:adjusted SOINNは、一時記憶部に格納された辺について、予め設定され一時記憶部に格納された閾値ageを超えた年齢を持つ辺を削除し、その結果を一時記憶部に格納する。尚、ageはノイズなどの影響により誤って生成される辺を削除するために使用する。ageに小さな値を設定することにより、辺が削除されやすくなりノイズによる影響を防ぐことができるものの、値を極端に小さくすると、頻繁に辺が削除されるようになり学習結果が不安定になる。一方、極端に大きな値をageに設定すると、ノイズの影響で生成された辺を適切に取り除くことができない。これらを考慮して、パラメタageは実験により予め算出し一時記憶部に格納される。
【0130】
S510:adjusted SOINNは、一時記憶部に格納された与えられた入力パターンξの総数について、与えられた入力パターンξの総数が予め設定され一時記憶部に格納されたλの倍数であるか否かを判定し、その結果を一時記憶部に格納する。一時記憶部に格納された判定の結果、入力パターンの総数がλの倍数でない場合にはS502へと戻り、次の入力パターンξを処理する。一方、入力パターンξの総数がλの倍数となった場合には以下の処理を実行する。尚、λはノイズと見なされるノードを削除する周期である。λに小さな値を設定することにより、頻繁にノイズ処理を実施することができるものの、値を極端に小さくすると、実際にはノイズではないノードを誤って削除してしまう。一方、極端に大きな値をλに設定すると、ノイズの影響で生成されたノードを適切に取り除くことができない。これらを考慮して、パラメタλは実験により予め算出し一時記憶部に格納される。
S511:ノイズノード削除手段は、一時記憶部に格納されたノードについて、ノイズノードと見なしたノードを削除し、その結果を一時記憶部に格納する。
【0131】
S512:adjusted SOINNは、一時記憶部に格納された与えられた入力パターンξの総数について、与えられた入力パターンξの総数が予め設定されたLTの倍数であるか否かを判定し、その結果を一時記憶部に格納する。一時記憶部に格納された判定の結果、入力パターンの総数がLTの倍数でない場合にはS502へと戻り、次の入力パターンξを処理する。一方、入力パターンξの総数がLTの倍数となった場合には以下の処理を実行する。
S513:adjusted SOINNは、一時記憶部に格納されたノードをプロトタイプとして出力する。以上の処理を終了した後、adjusted SOINNによる学習を停止する。
【0132】
次に、Enhanced−SOINN(以下E−SOINNという。)について説明する。E−SOINNはSOINNに比べて、入力パターンの分布に高密度の重なりのあるクラスを分離することができる。そして、分布の重なり領域の検出処理においては、平滑化の手法を導入したことより、SOINNに比べてより安定的に動作することができる。さらに、1層構造であっても効率的にノイズノードを削除することができる。さらにまた、SOINNに比べて、より少ないパラメタで動作するため、処理をより容易に実行することができる。
【0133】
以下にE−SOINNを簡単に説明する。図29は、E−SOINNによる学習処理の処理概要を示すフローチャートである。尚、上述したadjusted SOINNと同様の処理については説明を省略する。まず、図29に示すS601乃至S605については、図28に示したadjusted SOINNと同様の処理を実施する。従って、以下では図29に示すS606からの処理について説明する。
【0134】
S606:辺接続判定手段は、一時記憶部に格納されたノード、ノード密度、ノード間の辺について、第1勝者ノードa1及び第2勝者ノードa2のノード密度に基づいて、第1勝者ノードa1及び第2勝者ノードa2間に辺を接続するか否かを判定し、その結果を一時記憶部に格納する。
【0135】
S607:一時記憶部に格納されたS606における判定の結果、第1勝者ノードa1及び第2勝者ノードa2間に辺を生成して接続する場合には、辺接続手段は、一時記憶部に格納されたノード及びノード間の辺について、第1勝者ノード及び第2勝者ノード間に辺を接続し、その結果を一時記憶部に格納する。そして、E−SOINNは、一時記憶部に格納された辺及び辺の年齢について、新しく生成された辺、及び、既にノード間に辺が生成されていた場合にはその辺について、辺の年齢を0に設定しその結果を一時記憶部に格納し、第1勝者ノードa1と直接的に接続される辺の年齢をインクリメントし(1増やす)、その結果を一時記憶部に格納する。一方、一時記憶部に格納されたS606における判定の結果、第1勝者ノードa1及び第2勝者ノードa2間に辺を接続しない場合には、S608へと処理を進めるが、既にノード間に辺が生成されていた場合には、辺削除手段は、一時記憶部に格納されたノード及びノード間の辺について、第1勝者ノードa1及び第2勝者ノードa2間の辺を削除し、その結果を一時記憶部に格納する。
次いで、一時記憶部に格納されたノード及びノード密度のポイント値について、第1勝者ノードa1について、ノード密度算出手段は、一時記憶部に格納された第1勝者ノードa1のノード密度のポイント値を算出しその結果を一時記憶部に格納し、算出され一時記憶部に格納されたノード密度のポイント値を以前までに算出され一時記憶部に格納されたポイント値に加算することで、ノード密度ポイントとして累積し、その結果を一時記憶部に格納する。
次いで、E−SOINNは、一時記憶部に格納された第1勝者ノードa1が第1勝者ノードとなった累積回数Ma1をインクリメントし(1増やす)、その結果を一時記憶部に格納する。
【0136】
S608:重みベクトル更新手段は、一時記憶部に格納されたノード及びノードの重みベクトルについて、第1勝者ノードa1の重みベクトル及び第1勝者ノードa1の隣接ノードの重みベクトルをそれぞれ入力ベクトルξに更に近づけるように更新し、その結果を一時記憶部に格納する。尚、E−SOINNにおいては、追加学習に対応するため、入力ベクトルの入力回数tに代えて、一時記憶部に格納される第1勝者ノードa1が第1勝者ノードとなった累積回数Ma1を用いる。
S609:E−SOINNは、一時記憶部に格納された辺について、予め設定され一時記憶部に格納された閾値ageを超えた年齢を持つ辺を削除し、その結果を一時記憶部に格納する。
【0137】
S610:E−SOINNは、一時記憶部に格納された与えられた入力ベクトルξの総数について、与えられた入力ベクトルξの総数が予め設定され一時記憶部に格納されたλの倍数であるか否かを判定し、その結果を一時記憶部に格納する。一時記憶部に格納された判定の結果、入力ベクトルの総数がλの倍数でない場合にはS602へと戻り、次の入力ベクトルξを処理する。一方、入力ベクトルξの総数がλの倍数となった場合には以下の処理を実行する。
【0138】
S611:分布重なり領域検出手段は、一時記憶部に格納されたサブクラスタ及び分布の重なり領域について、上述のS301乃至S305において示したようにしてサブクラスタの境界である分布の重なり領域を検出し、その結果を一時記憶部に格納する。
S612:ノード密度算出手段は、一時記憶部に格納されて累積されたノード密度ポイントを単位入力数あたりの割合として算出しその結果を一時記憶部に格納し、単位入力数あたりのノードのノード密度を算出し、その結果を一時記憶部に格納する。
S613:ノイズノード削除手段は、一時記憶部に格納されたノードについて、ノイズノードと見なしたノードを削除し、その結果を一時記憶部に格納する。尚、S613においてノイズノード削除手段が使用するパラメタc1及びc2はノードをノイズと見なすか否かの判定に使用する。通常、隣接ノード数が2であるノードはノイズではないことが多いため、c1は0に近い値を使用する。また、隣接ノード数が1であるノードはノイズであることが多いため、c2は1に近い値を使用するものとし、これらのパラメタは予め設定され一時記憶部に格納される。
【0139】
S614:E−SOINNは、一時記憶部に格納された与えられた入力ベクトルξの総数について、与えられた入力ベクトルξの総数が予め設定され一時記憶部に格納されたLTの倍数であるか否かを判定し、その結果を一時記憶部に格納する。一時記憶部に格納された判定の結果、入力ベクトルの総数がLTの倍数でない場合にはS602へと戻り、次の入力ベクトルξを処理する。
一方、入力ベクトルξの総数がLTの倍数となった場合には、一時記憶部に格納されたノードをプロトタイプとして出力する。以上の処理を終了した後、学習を停止する。
【0140】
ノード密度算出手段は、一時記憶部に格納されたノード及びノード密度について、注目するノードについて、その隣接ノード間の平均距離に基づいて、注目するノードのノード密度を算出し、その結果を一時記憶部に格納する。具体的には、ノード密度ポイント算出部は、例えば一時記憶部に格納される以下の式に基づいてノードiに与えられるノード密度のポイント値pを算出し、その結果を一時記憶部に格納する。尚、ノードiに与えられるポイント値pは、ノードiが第1勝者ノードとなった場合には一時記憶部に格納される以下の式に基づいて算出されるポイント値が与えられるが、ノードiが第1勝者ノードでない場合にはノードiにはポイントは与えられないものとする。
【数16】

ここで、eはノードiからその隣接ノードまでの平均距離を示し、一時記憶部に格納される以下の式に基づいて算出し、その結果を一時記憶部に格納する。
【数17】


尚、mは一時記憶部に格納されたノードiの隣接ノードの個数を示し、Wは一時記憶部に格納されたノードiの重みベクトルを示す。
【0141】
ここで、隣接ノードへの平均距離が大きくなる場合には、ノードを含むその領域にはノードが少ないものと考えられ、逆に平均距離が小さくなる場合には、その領域にはノードが多いものと考えられる。従って、ノードの多い領域で第1勝者ノードとなった場合には高いポイントが与えられ、ノードの少ない領域で第1勝者ノードとなった場合には低いポイントが与えられるようにノードの密度のポイント値の算出方法を上述のように構成する。
【0142】
これにより、ノードを含むある程度の範囲の領域におけるノードの密集具合を推定することができるため、ノードの分布が高密度の領域に位置するノードであっても、ノードが第1勝者回数となった回数をノードの密度とするSOINNに比べて、入力ベクトルの入力分布密度により近似した密度となるノード密度ポイントを算出することができる。
【0143】
単位ノード密度ポイント算出部は、例えば一時記憶部に格納される以下の式に基づいてノードiの単位入力数あたりのノード密度densityを算出し、その結果を一時記憶部に格納する。
【数18】

ここで、連続して与えられる入力ベクトルの入力回数を予め設定され一時記憶部に格納される一定の入力回数λごとの区間に分け、各区間においてノードiに与えられたポイントについてその合計を累積ポイントsと定める。尚、入力ベクトルの総入力回数を予め設定され一時記憶部に格納されるLTとする場合に、LT/λを区間の総数nとしその結果を一時記憶部に格納し、nのうち、ノードに与えられたポイントの合計が0以上であった区間の数をNとして算出し、その結果を一時記憶部に格納する(Nとnは必ずしも同じとならない点に注意する)。
【0144】
累積ポイントsは、例えば一時記憶部に格納される以下の式に基づいて算出し、その結果を一時記憶部に格納する。
【数19】

ここで、p(j,k)はj番目の区間におけるk番目の入力によってノードiに与えられたポイントを示し、上述のノード密度ポイント算出部により算出され、その結果を一時記憶部に格納する。
【0145】
このように、単位ノード密度ポイント算出部は、一時記憶部に格納されたノードiの密度densityを累積ポイントsの平均として算出し、その結果を一時記憶部に格納する。
【0146】
尚、E−SOINNにおいては追加学習に対応するため、nに代えてNを用いる。これは、追加学習において、以前の学習で生成されたノードにはポイントが与えられないことが多く、nを用いて密度を算出すると、以前学習したノードの密度が次第に低くなってしまうという問題を回避するためである。即ち、nに代えてNを用いてノード密度を算出することで、追加学習を長時間行った場合であっても、追加されるデータが以前学習したノードの近くに入力されない限りは、そのノードの密度を変化させずに保持することができる。これにより、追加学習を長時間実施する場合であっても、ノードのノード密度が相対的に小さくなってしまうことを防ぐことができ、SOINNを含む従来の手法に比べて、入力ベクトルの入力分布密度により近似したノード密度を変化させずに保持して算出することができる。
【0147】
分布重なり領域検出手段は、一時記憶部に格納されたノード、ノード間を接続する辺、及びノードの密度について、辺によって接続されるノードの集合であるクラスタを、ノード密度算出手段によって算出されるノード密度に基づいてクラスタの部分集合であるサブクラスタに分割し、その結果を一時記憶部に格納し、サブクラスタの境界である分布の重なり領域を検出し、その結果を一時記憶部に格納する。
【0148】
さらに、分布重なり領域検出手段は、一時記憶部に格納されたノード、ノード間を接続する辺、及びノードの密度について、ノード密度算出手段により算出されたノード密度に基づいて、ノード密度が局所的に最大であるノードを探索するノード探索部と、探索したノードに対して、既に他のノードに付与済みのラベルとは異なるラベルを付与する第1のラベル付与部と、第1のラベル付与部によりラベルが付与されなかったノードのうち、そのノードと辺によって接続されるノードについて、第1のラベル付与部によりラベルが付与されたノードのラベルと同じラベルを付与する第2のラベル付与部と、それぞれ異なるラベルが付与されたノード間に辺によって直接的に接続がある場合に、その辺によって接続されるノードの集合であるクラスタをクラスタの部分集合であるサブクラスタに分割するクラスタ分割部と、注目するノード及びその隣接ノードがそれぞれ異なるサブクラスタに属する場合に、その注目するノード及びその隣接ノードを含む領域を、サブクラスタの境界である分布の重なり領域として検出する分布重なり領域検出部を有する。具体的には、一時記憶部に格納されたノード、ノード間を接続する辺、及びノードの密度について、例えば以下のようにしてサブクラスタの境界である分布の重なり領域を検出し、その結果を一時記憶部に格納する。
【0149】
S701:ノード探索部は、一時記憶部に格納されたノード及びノードの密度について、ノード密度算出手段により算出されたノード密度に基づいて、ノード密度が局所的に最大であるノードを探索し、その結果を一時記憶部に格納する。
S702:第1のラベル付与部は、一時記憶部に格納されたノード、及びノードのラベルについて、S701において探索したノードに対して、既に他のノードに付与済みのラベルとは異なるラベルを付与し、その結果を一時記憶部に格納する。
S703:第2のラベル付与部は、一時記憶部に格納されたノード、ノード間を接続する辺、及びノードのラベルについて、S702において第1のラベル付与部によりラベルが付与されなかったノードについて、第1のラベル付与部にラベルが付与されたノードと辺によって接続されるノードについて、第1のラベル付与部によりラベルが付与されたノードのラベルと同じラベルを付与し、その結果を一時記憶部に格納する。即ち、密度が局所的に最大の隣接ノードと同じラベルを付与する。
S704:クラスタ分割部は、一時記憶部に格納されたノード、ノード間を接続する辺、及びノードのラベルについて、一時記憶部に格納された辺によって接続されるノードの集合であるクラスタを、同じラベルが付与されたノードからなるクラスタの部分集合であるサブクラスタに分割し、その結果を一時記憶部に格納する。
S705:分布重なり領域検出部は、一時記憶部に格納されたノード、ノード間を接続する辺、及びノードのラベルについて、注目するノードとその隣接ノードが異なるサブクラスタにそれぞれ属する場合に、その注目するノード及びその隣接ノードを含む領域を、サブクラスタの境界である分布の重なり領域として検出し、その結果を一時記憶部に格納する。
【0150】
辺接続判定手段は、一時記憶部に格納されたノード、ノード密度、及び分布重なり領域について、第1勝者ノード及び第2勝者ノードが分布重なり領域に位置するノードである場合に、第1勝者ノード及び第2勝者ノードのノード密度に基づいて第1勝者ノード及び第2勝者ノード間に辺を接続するか否かを判定し、その結果を一時記憶部に格納する。さらに辺接続判定手段は、一時記憶部に格納されたノード、ノード密度、ノードのサブクラスタについて、ノードが属しているサブクラスタを判定する所属サブクラスタ判定部と、ノードが属するサブクラスタの頂点の密度及びノードの密度に基づいて、第1勝者ノード及び第2勝者ノード間に辺を接続するか否かを判定する辺接続判定部を有する。
【0151】
辺接続手段は、一時記憶部に格納された辺接続判定手段の判定結果に基づいて、一時記憶部に格納されたノード及びノード間の辺について、第1勝者ノード及び第2勝者ノード間に辺を接続し、その結果を一時記憶部に格納する。辺削除手段は、一時記憶部に格納された辺接続判定手段の判定結果に基づいて、一時記憶部に格納されたノード及びノード間の辺について、第1勝者ノード及び第2勝者ノード間の辺を削除し、その結果を一時記憶部に格納する。具体的には、一時記憶部に格納されたノード、ノード密度、ノードのサブクラスタ、及びノード間の辺について、例えば以下のようにして辺接続判定手段は辺を接続するか否かを判定し、辺接続手段及び辺削除手段は辺の生成及び削除処理を実施し、その結果を一時記憶部に格納する。
【0152】
S801:所属サブクラスタ判定部は、一時記憶部に格納されたノード、ノードのサブクラスタについて、第1勝者ノード及び第2勝者ノードが属するサブクラスタをそれぞれ判定し、その結果を一時記憶部に格納する。
S802:一時記憶部に格納されたS801における判定の結果、第1勝者ノード及び第2勝者ノードがどのサブクラスタにも属していない場合、又は、第1勝者ノード及び第2勝者ノードが同じサブクラスタに属している場合には、辺接続手段は、一時記憶部に格納されたノード及びノード間の辺について、第1勝者ノード及び第2勝者ノード間に辺を生成することによりノード間を接続し、その結果を一時記憶部に格納する。
S803:一時記憶部に格納されたS801における判定の結果、第1勝者ノード及び第2勝者ノードが互いに異なるサブクラスタに属す場合には、辺接続判定部は、一時記憶部に格納されたノード、ノード密度、及びノード間の辺について、ノードが属するサブクラスタの頂点の密度及びノードの密度に基づいて、第1勝者ノード及び第2勝者ノード間に辺を接続するか否かを判定し、その結果を一時記憶部に格納する。
S804:一時記憶部に格納されたS803における辺接続判定部による判定の結果、辺を接続する必要がないと判定した場合には、一時記憶部に格納されたノード及びノード間の辺について、第1勝者ノード及び第2勝者ノード間を辺によって接続せず、既にノード間が辺によって接続されていた場合には、辺削除手段は、一時記憶部に格納されたノード及びノード間の辺について、一時記憶部に格納された第1勝者ノード及び第2勝者ノード間の辺を削除し、その結果を一時記憶部に格納する。
S805:一時記憶部に格納されたS803における辺接続判定部による判定の結果、辺を接続する必要があると判定した場合には、辺接続手段は、一時記憶部に格納されたノード及びノード間の辺について、第1勝者ノード及び第2勝者ノード間に辺を生成しノード間を接続する。
【0153】
ここで、辺接続判定部による判定処理について詳細に説明する。
まず、辺接続判定部は、一時記憶部に格納されたノード及びノード密度について、第1勝者ノードのノード密度densitywin及び第2勝者ノード密度densitysec−winのうち、最小のノード密度mを例えば一時記憶部に格納される以下の式に基いて算出し、その結果を一時記憶部に格納する。
【数20】

次に、一時記憶部に格納されたノード、ノードのノード密度、及びノードのサブクラスについて、第1勝者ノード及び第2勝者ノードがそれぞれ属するサブクラスタA及びサブクラスタBについて、サブクラスタAの頂点の密度Amax及びサブクラスタBの頂点の密度Bmaxを算出し、その結果を一時記憶部に格納する。尚、サブクラスタに含まれるノードのうち、ノード密度が最大であるノード密度をサブクラスタの頂点の密度とする。
【0154】
そして、一時記憶部に格納されたノードが属するサブクラスタの頂点の密度Amax及びBmax、及びノードの密度mについて、mがαmaxより小さく、かつ、mがαmaxより小さいか否かを判定し、その結果を一時記憶部に格納する。即ち、一時記憶部に格納される以下の不等式を満足するか否かを判定し、その結果を一時記憶部に格納する。
【数21】

【0155】
判定の結果、mがαmaxより小さく、かつ、mがαmaxより小さい場合には、一時記憶部に格納されたノード及びノード間の辺について、第1勝者ノード及び第2勝者ノード間には辺は不要であると判定し、その結果を一時記憶部に格納する。
一方、判定の結果、mがαmax以上、または、mがαmax以上である場合には、一時記憶部に格納されたノード及びノード間の辺について、第1勝者ノード及び第2勝者ノード間に辺は必要であると判定し、その結果を一時記憶部に格納する。
【0156】
このように、第1勝者ノード及び第2勝者ノードの最小ノード密度mを、第1勝者ノード及び第2勝者ノードをそれぞれ含むサブクラスタの平均的なノード密度と比較することで、第1勝者ノード及び第2勝者ノードを含む領域におけるノード密度の凹凸の大きさを判定することができる。即ち、サブクラスタA及びサブクラスタBの間に存在する分布の谷間のノード密度mが、閾値αmax又はαmaxより大きな場合には、ノード密度の形状は小さな凹凸であると判定することができる。
【0157】
ここで、α及びαは一時記憶部に格納される以下の式に基づいて算出し、その結果を一時記憶部に格納する。尚、αについてもαと同様にして算出することができるためここでは説明を省略する。
i) Amax/mean−1≦1の場合には、α=0.0とする。
ii) 1<Amax/mean−1≦2の場合には、α=0.5とする。
iii) 2<Amax/mean−1の場合には、α=1.0とする。
【0158】
max/meanの値が1以下となるi)の場合には、Amaxとmeanの値は同程度であり、密度の凹凸はノイズの影響によるものと判断する。そして、αの値を0.0とすることで、サブクラスタが統合されるようにする。また、Amax/meanの値が2を超えるiii)の場合には、Amaxはmeanに比べて十分大きく、明らかな密度の凹凸が存在するものと判断する。そして、αの値を1.0とすることで、サブクラスタが分離されるようにする。そして、Amax/meanの値が上述した場合以外となる i i)の場合には、αの値を0.5とすることで、密度の凹凸の大きさに応じてサブクラスタが統合又は分離されるようにする。尚、meanはサブクラスタAに属すノードiのノード密度densityの平均値を示し、NをサブクラスタAに属するノードの数として、一時記憶部に格納される以下の式に基づいて算出し、その結果を一時記憶部に格納する。
【数22】

【0159】
このように、サブクラスタへの分離を行う際に、サブクラスタに含まれるノード密度の凹凸の程度を判定し、ある基準を満たした2つのサブクラスタを1つに統合することで、分布の重なり領域の検出におけるサブクラスタの分けすぎによる不安定化を防止することができる。例えば、ノイズや学習サンプルが少ないことが原因で、密度の分布に多くの細かい凹凸が形成されることがある。このような場合に、第1勝者ノード及び第2勝者ノードがサブクラスタA及びBの間にある分布の重なり領域に位置する場合に、ノード間の接続を行う際にある基準を満たした2つのサブクラスタを1つに統合することで、密度の分布に多くの細かい凹凸が含まれる場合であっても平滑化することができる。
【0160】
ノイズノード削除手段は、一時記憶部に格納されたノード、ノード密度、ノード間の辺、隣接ノードの個数について、注目するノードについて、ノード密度算出手段により算出されるノード密度及び注目するノードの隣接ノードの個数に基づいて、注目するノードを削除し、その結果を一時記憶部に格納する。
【0161】
さらにノイズノード削除手段は、一時記憶部に格納されたノード、ノード密度、ノード間の辺、隣接ノードの個数について、注目するノードのノード密度を所定の閾値と比較するノード密度比較部と、注目するノードの隣接ノードの個数を算出する隣接ノード数算出部と、注目するノードをノイズノードとみなして削除するノイズノード削除部を有する。具体的には、例えば以下のようにして一時記憶部に格納されたノード、ノード密度、ノード間の辺、隣接ノードの個数について、ノード密度及び注目するノードの隣接ノードの個数に基づいて、注目するノードを削除し、その結果を一時記憶部に格納する。
【0162】
ノイズノード削除手段は、一時記憶部に格納されたノード、ノード間の辺、隣接ノードの個数について、注目するノードiについて、隣接ノード数算出部によりその隣接ノードの個数を算出し、その結果を一時記憶部に格納する。そして、一時記憶部に格納された隣接ノードの個数に応じて、以下の処理を実施する。
【0163】
i) 一時記憶部に格納された隣接ノード数が2の場合、ノード密度比較部はノードiのノード密度densityを例えば一時記憶部に格納される以下の式に基づいて算出する閾値と比較し、その結果を一時記憶部に格納する。
【数23】

一時記憶部に格納された比較結果について、ノード密度densityが閾値より小さい場合には、ノイズノード削除部は、一時記憶部に格納されたノードについて、ノードを削除し、その結果を一時記憶部に格納する。
【0164】
ii) 一時記憶部に格納された隣接ノード数が1の場合、ノード密度比較部はノードiのノード密度densityを例えば一時記憶部に格納される以下の式に基づいて算出する閾値と比較し、その結果を一時記憶部に格納する。
【数24】

一時記憶部に格納された比較の結果について、ノード密度densityが閾値より小さい場合には、ノイズノード削除部は、一時記憶部に格納されたノードについて、ノードを削除し、その結果を一時記憶部に格納する。
【0165】
iii) 一時記憶部に格納された隣接ノード数について、隣接ノードを持たない場合、ノイズノード削除部は、一時記憶部に格納されたノードについて、ノードを削除し、その結果を一時記憶部に格納する。
【0166】
ここで、予め設定され一時記憶部に格納される所定のパラメタc1及びc2を調整することで、ノイズノード削除手段によるノイズノードの削除の振る舞いを調整することができる。
【0167】
本発明の目的は、上述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体(または記憶媒体)を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記録媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは当然である。この場合、記録媒体から読み出されたプログラムコード自体が上述の実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
【0168】
また、コンピュータが読み出したプログラムコードを実行することにより、上述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているオペレーティングシステム(OS)などが実際の処理の一部又は全部を行い、その処理によって上述した実施形態の機能が実現される場合も当然含まれる。
【0169】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行い、その処理によって上述した実施形態の機能が実現される場合も当然含まれる。本発明を上記記録媒体に適用する場合、その記録媒体には、上述したフローチャートに対応するプログラムコードが格納されることになる。
【図面の簡単な説明】
【0170】
【図1】本発明を実施するための機能ブロックを示す図である。
【図2】本発明に係る学習部の構造を模式的に示す図である。
【図3】従来手法であるSOINNによる学習処理の処理概要を示すフローチャートである。
【図4】従来手法であるSOINNに対して入力した人工データセットを示す図である。
【図5】人工データセットに対するSOINNの出力結果を示す図である。
【図6】本実施形態に係る連想記憶装置のシステム構成を示す図である。
【図7】連想記憶装置による学習処理の処理概要を示すフローチャートである。
【図8】連想記憶装置による想起処理の処理概要を示すフローチャートである。
【図9】検証実験に用いたグレイスケールの顔画像を示す図である。
【図10】比較実験に用いた2値データの画像を示す図である。
【図11】学習器に対するパラメタ設定を示す表である。
【図12】閾値に対するRecall及びPrecisionの変化を示す表である。
【図13】学習器による想起結果を示す表である。
【図14】従来手法による想起結果を示す図である。
【図15】検証実験に用いた顔画像の連想対を示す図である。
【図16】閾値に対するRecall及びPrecisionの変化を示す表である。
【図17】閾値に対するRecall及びPrecisionの変化を示す表である。
【図18】ノイズに対するRecall及びPrecisionの変化を示す図である。
【図19】ノイズの乗った顔画像を示す図である。
【図20】データと独立なノイズ及びその想起結果を示す図である。
【図21】ノイズに対する学習器による想起結果を示す図である。
【図22】データと独立なノイズに対する学習器による想起結果を示す図である。
【図23】検証実験に用いた実環境から得られる物体を示す図である。
【図24】検証実験に用いた色及び形特徴からなる連想対を示す表である。
【図25】連想記憶装置による順方向想起結果の一例を示す図である。
【図26】連想記憶装置による逆方向想起結果の一例を示す図である。
【図27】データに乗ったノイズ及びデータと独立なノイズを示す図である。
【図28】従来手法であるadjusted SOINNによる学習処理の処理概要を示すフローチャートである。
【図29】従来手法であるE―SOINNによる学習処理の処理概要を示すフローチャートである。
【符号の説明】
【0171】
1 連想記憶装置
40 コンピュータ
41 CPU
42 ROM
43 RAM
44 バス
45 入出力インターフェイス
46 入力部
47 出力部
48 記憶部
49 通信部
50 ドライブ
501 磁気ディスク
502 光ディスク
503 フレキシブルディスク
504 半導体メモリ
10 学習部
11 入力部
12 SOINN
121 クラス間ノード挿入部
122 辺削除部
123 ノード削除部
124 重みベクトル更新部
125 プロトタイプノード生成部
20 想起部
30 学習用連想対DB

【特許請求の範囲】
【請求項1】
連想のキーとなるベクトル及び当該連想キーより想起されるベクトルからなる連想対を学習した結果に基づき、当該連想対の一方のベクトルを想起キーとして他方のベクトルを想起する連想記憶装置であって、
前記連想対を入力ベクトルとしてニューラルネットワークに順次入力し、当該入力ベクトル、及び当該ニューラルネットワークに配置される多次元ベクトルで記述されるノードに基づいて、当該ノードを自動的に増加させる自己増殖型ニューラルネットワークを用いて連想記憶を行う
ことを特徴とする連想記憶装置。
【請求項2】
前記自己増殖型ニューラルネットワークは、
入力される前記入力ベクトルに最も近い重みベクトルを持つノードと2番目に近い重みベクトルを持つノードの間に辺を接続したとき、
注目するノードと他のノード間の距離に基づいて算出される当該注目するノードの類似度閾値、及び前記入力ベクトルと当該注目するノード間の距離に基づいて、前記入力ベクトルをノードとして挿入するクラス間ノード挿入部と、
前記入力ベクトルに最も近いノードに対応する重みベクトル及び当該ノードと辺によって直接的に接続されるノードに対応する重みベクトルをそれぞれ前記入力ベクトルに更に近づけるように更新する重みベクトル更新部とを備える
ことを特徴とする請求項1記載の連想記憶装置。
【請求項3】
前記クラス間ノード挿入部は、
入力される前記入力ベクトルに最も近い重みベクトルを持つノードを第1勝者ノードとし、2番目に近い重みベクトルを持つノードを第2勝者ノードとし、当該第1勝者ノード及び当該第2勝者ノードの間に辺を接続したとき、
注目するノードについて、当該注目するノードと辺によって直接的に接続されるノードが存在する場合には、当該直接的に接続されるノードのうち当該注目するノードからの距離が最大であるノード間の距離を前記類似度閾値とし、当該注目するノードと辺によって直接的に接続されるノードが存在しない場合には、当該注目するノードからの距離が最小であるノード間の距離を前記類似度閾値として算出する類似度閾値算出部と、
前記入力ベクトルと前記第1勝者ノード間の距離が当該第1勝者ノードの類似度閾値より大きいか否か、及び、前記入力ベクトルと前記第2勝者ノード間の距離が当該第2勝者ノードの類似度閾値より大きいか否かを判定する類似度閾値判定部と、
類似度閾値判定結果に基づいて、前記入力ベクトルをノードとして当該入力ベクトルと同じ位置に挿入するノード挿入部とを備える
ことを特徴とする請求項2記載の連想記憶装置。
【請求項4】
前記自己増殖型ニューラルネットワークは、
前記辺に対応付けられる辺の年齢に基づいて、当該辺を削除する辺削除部と、
注目するノードについて、当該注目するノードに直接的に接続される辺の本数に基づいて、当該注目するノードを削除するノード削除部とを更に備える
ことを特徴とする請求項1記載の連想記憶装置。
【請求項5】
前記自己増殖型ニューラルネットワークは1層構造である
ことを特徴とする請求項1記載の連想記憶装置。
【請求項6】
前記自己増殖型ニューラルネットワークは、
前記連想対を入力ベクトルとして前記自己増殖型ニューラルネットワークに入力する入力部を更に備える
ことを特徴とする請求項1記載の連想記憶装置。
【請求項7】
前記入力部は、
前記連想対からなるベクトルを摂動したベクトルを入力ベクトルとして前記自己増殖型ニューラルネットワークに入力する
ことを特徴とする請求項6記載の連想記憶装置。
【請求項8】
前記連想対の一方のベクトルを想起キーとして前記自己増殖型ニューラルネットワークに入力して、前記連想対の他方のベクトルを前記自己増殖型ニューラルネットワークから出力する想起部とを更に備える
ことを特徴とする請求項1記載の連想記憶装置。
【請求項9】
前記想起部は、
前記連想対の一方のベクトルを想起キーとして前記自己増殖型ニューラルネットワークに入力して、当該想起キーとの距離が所定の閾値より小さい前記連想対の他方のベクトルを前記自己増殖型ニューラルネットワークから出力する
ことを特徴とする請求項8記載の連想記憶装置。
【請求項10】
前記自己増殖型ニューラルネットワークは、ノードの集合であるクラスについて、各クラスの代表的なノードとしてのプロトタイプノードを生成するプロトタイプノード生成部を更に備え、
前記想起部は、前記連想対の一方のベクトルを想起キーとして前記自己増殖型ニューラルネットワークに入力して、前記プロトタイプノードに対応する前記連想対の他方のベクトルを前記自己増殖型ニューラルネットワークから出力する
ことを特徴とする請求項8記載の連想記憶装置。
【請求項11】
連想のキーとなるベクトル及び当該連想キーより想起されるベクトルからなる連想対を学習した結果に基づき、当該連想対の一方のベクトルを想起キーとして他方のベクトルを想起する連想記憶方法であって、
前記連想対を入力ベクトルとしてニューラルネットワークに順次入力し、当該入力ベクトル、及び当該ニューラルネットワークに配置される多次元ベクトルで記述されるノードに基づいて、当該ノードを自動的に増加させる自己増殖型ニューラルネットワークを用いて連想記憶を行う
ことを特徴とする連想記憶方法。
【請求項12】
前記自己増殖型ニューラルネットワークは、
入力される前記入力ベクトルに最も近い重みベクトルを持つノードと2番目に近い重みベクトルを持つノードの間に辺を接続したとき、
注目するノードと他のノード間の距離に基づいて算出される当該注目するノードの類似度閾値、及び前記入力ベクトルと当該注目するノード間の距離に基づいて、前記入力ベクトルをノードとして挿入するクラス間ノード挿入ステップと、
前記入力ベクトルに最も近いノードに対応する重みベクトル及び当該ノードと辺によって直接的に接続されるノードに対応する重みベクトルをそれぞれ前記入力ベクトルに更に近づけるように更新する重みベクトル更新ステップとを備える
ことを特徴とする請求項11記載の連想記憶方法。
【請求項13】
前記クラス間ノード挿入ステップは、
入力される前記入力ベクトルに最も近い重みベクトルを持つノードを第1勝者ノードとし、2番目に近い重みベクトルを持つノードを第2勝者ノードとし、当該第1勝者ノード及び当該第2勝者ノードの間に辺を接続したとき、
注目するノードについて、当該注目するノードと辺によって直接的に接続されるノードが存在する場合には、当該直接的に接続されるノードのうち当該注目するノードからの距離が最大であるノード間の距離を前記類似度閾値とし、当該注目するノードと辺によって直接的に接続されるノードが存在しない場合には、当該注目するノードからの距離が最小であるノード間の距離を前記類似度閾値として算出する類似度閾値算出ステップと、
前記入力ベクトルと前記第1勝者ノード間の距離が当該第1勝者ノードの類似度閾値より大きいか否か、及び、前記入力ベクトルと前記第2勝者ノード間の距離が当該第2勝者ノードの類似度閾値より大きいか否かを判定する類似度閾値判定ステップと、
類似度閾値判定結果に基づいて、前記入力ベクトルをノードとして当該入力ベクトルと同じ位置に挿入するノード挿入ステップとを備える
ことを特徴とする請求項12記載の連想記憶方法。
【請求項14】
前記自己増殖型ニューラルネットワークは、
前記辺に対応付けられる辺の年齢に基づいて、当該辺を削除する辺削除ステップと、
注目するノードについて、当該注目するノードに直接的に接続される辺の本数に基づいて、当該注目するノードを削除するノード削除ステップとを更に備える
ことを特徴とする請求項11記載の連想記憶方法。
【請求項15】
前記自己増殖型ニューラルネットワークは1層構造である
ことを特徴とする請求項11記載の連想記憶方法。
【請求項16】
前記自己増殖型ニューラルネットワークは、
前記連想対を入力ベクトルとして前記自己増殖型ニューラルネットワークに入力する入力ステップを更に備える
ことを特徴とする請求項11記載の連想記憶方法。
【請求項17】
前記入力ステップでは、
前記連想対からなるベクトルを摂動したベクトルを入力ベクトルとして前記自己増殖型ニューラルネットワークに入力する
ことを特徴とする請求項16記載の連想記憶方法。
【請求項18】
前記連想対の一方のベクトルを想起キーとして前記自己増殖型ニューラルネットワークに入力して、前記連想対の他方のベクトルを前記自己増殖型ニューラルネットワークから出力する想起ステップを更に備える
ことを特徴とする請求項11記載の連想記憶方法。
【請求項19】
前記想起ステップでは、
前記連想対の一方のベクトルを想起キーとして前記自己増殖型ニューラルネットワークに入力して、当該想起キーとの距離が所定の閾値より小さい前記連想対の他方のベクトルを前記自己増殖型ニューラルネットワークから出力する
ことを特徴とする請求項18記載の連想記憶方法。
【請求項20】
前記自己増殖型ニューラルネットワークは、ノードの集合であるクラスについて、各クラスの代表的なノードとしてのプロトタイプノードを生成するプロトタイプノード生成ステップを更に備え、
前記想起ステップでは、前記連想対の一方のベクトルを想起キーとして前記自己増殖型ニューラルネットワークに入力して、前記プロトタイプノードに対応する前記連想対の他方のベクトルを前記自己増殖型ニューラルネットワークから出力する
ことを特徴とする請求項18記載の連想記憶方法。
【請求項21】
請求項11乃至20いずれか1項記載の連想記憶処理をコンピュータに実行させることを特徴とするプログラム。

【図1】
image rotate

【図3】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図11】
image rotate

【図12】
image rotate

【図14】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図22】
image rotate

【図24】
image rotate

【図28】
image rotate

【図29】
image rotate

【図2】
image rotate

【図4】
image rotate

【図5】
image rotate

【図9】
image rotate

【図10】
image rotate

【図13】
image rotate

【図15】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図23】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate


【公開番号】特開2008−299644(P2008−299644A)
【公開日】平成20年12月11日(2008.12.11)
【国際特許分類】
【出願番号】特願2007−145662(P2007−145662)
【出願日】平成19年5月31日(2007.5.31)
【出願人】(304021417)国立大学法人東京工業大学 (1,821)