説明

並列演算装置および並列演算方法

【課題】複数の演算ユニット間の配線を簡易にすることを可能とする並列演算装置を提供する。
【解決手段】並列演算装置が、予め定められた識別番号である固有ユニット番号によりそれぞれが識別される複数のユニットと、複数のユニットの中のいずれか1つのユニットが出力する出力値がユニット出力バスを介して入力されたことに応じて、該入力された入力値と複数のユニットの中から選択したいずれか1つのユニットを選択する識別番号である選択ユニット番号とを含む制御データを、複数のユニットのそれぞれにユニット入力バスを介して出力する分配制御部と、を有する。ユニットは、入力された制御データに含まれる入力値に基づいてユニット毎に予め定められた演算方法により演算し、データ入力部に入力された制御データに含まれる選択ユニット番号と固有ユニット番号とが一致する場合には、演算結果を出力値として分配制御部にユニット出力バスを介して出力する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数の演算ユニットを有する並列演算装置に関し、特に、複数の演算ユニット間の接続を簡易にすることを可能とする並列演算装置に関する。
【背景技術】
【0002】
並列演算の1つとして、ニューラルネットワークが知られている。このニューラルネットワークは、脳機能に見られるいくつかの特性を表現することを目指した数学モデルである。このニューラルネットワークによる処理は、入力されたデータの情報量を削減することが可能であるため、画像や統計など多次元量のデータでかつ線形分離不可能な問題に対して、比較的小さい計算量で良好な解を得られることが多い。そのためニューラルネットワークは、パターン認識やデータマイニングをはじめ、さまざまな分野において応用されている。
【0003】
ここで、大規模なニューラルネットワークを実現しようとすると、その計算量が膨大となるため、現実的な時間での処理が難しくなる。これを解決する方法として、(1)単体プロセッサ自体のコンピューティングパワーを上げる方法、(2)プロセッサを複数用いる並列コンピューティングの手法を用いる方法、(3)機能をLSI等によりハードウェアにより実装する方法、等が考えられる。上記(1)と(2)との方法は、プロセッサの能力を上げることで膨大な計算量に対処しようとするものであり、プログラムを変更することで様々なニューラルネットワークのアルゴリズムに対応することができる。
【0004】
ここで(1)の方法においては、従来、単体プロセッサのクロック周波数を高速化することで単体プロセッサ自体のコンピューティングパワーを上げてきていた。しかし、近年、クロック周波数の高速化は発熱量を増加させ、また、微細加工寸法が物理的限界に達しつつあることからムーアの法則が破綻しつつあり、単体プロセッサ自体のコンピューティングパワーを上げることが難しくなってきている。そのため、(1)の方法から(2)の方法へと、プロセッサのコンピューティングパワーを上げる方法の開発がシフトしてきており、コンピューティングパワーを上げるという高性能化と、発熱を抑えることの両立をより進めるために、より大きなキャッシュと複数の計算コアを持つことに焦点が当てられている。また、このプロセッサの開発は、低いクロック周波数で動作し、低電力化で動作するようにも、進められている。
【0005】
しかし、(2)の方法においては、膨大なプロセッサを効率的に動作させる方法、つまり並列度を上げることと、複数のプロセッサ間の膨大なデータ通信を可能とするネットワークの構成が難しいことが本質的な問題としてある。そのため、(2)の方法である、プロセッサを複数用いる並列コンピューティングの手法を用いる方法により、大規模なニューラルネットワークの並列演算効率を上げることは、難しい。
【0006】
一方、(3)の方法であるハードウェア化に関しては、ハードウェアで実現可能なニューラルネットワークのアルゴリズムに制限があるが、特定な用途に対しては(1)または(2)の方法に比べ、低周波数での場合でも、桁違いな演算速度の性能を発揮することが可能である。このような、並列演算をハードウェア化する技術として、特許文献1および特許文献2が知られている。
【特許文献1】特開平6−195454号公報
【特許文献2】特開平2006−39790号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
しかしながら、(3)の方法であるハードウェア化に関しての特許文献1および特許文献2の従来技術においては、配線の問題があり、配線のために回路規模が膨大となり、または、回路間の配線が出来ないという問題がある。例えば、多層型のニューラルネットワークにおいては、出力層のあるノードからの出力を、入力層の全てのノードの入力に入力することが必要となり、各層のノード数が増大すると、その配線量が急激に増大してしまう。
【0008】
また、例えば、実際の脳のニューラルネットワークの場合、ニューロンは3次元空間に配置され配線されているのに対し、LSIのようなハードウェアによる構成では構成要素の配置は2次元が基本であるため、配線の問題を本質的には解決できない。積層構造などで構成要素を3次元化しようとしても配線の問題は残るので、応用は限られた配線(近傍のみとの結合)で事足りるような用途に限定される。
【0009】
また、このような複数の演算ユニット間の配線の問題は、ニューラルネットワークに限られるものではなく、演算ユニットの出力を、一度に複数の演算ユニットに入力することが計算上必要な場合に、問題となる。階層型ニューラルネットワークや自己組織化マップのような一般のニューラルネットワーク以外にも、例えば、重力多体問題、電荷を持った多体粒子のシミュレーション、信号のフィルタリング、などがある。
【0010】
本発明は、このような事情に鑑みてなされたもので、その目的の一つは、複数の演算ユニット間の配線を簡易にすることを可能とする並列演算装置および並列演算方法を提供することにある。
【課題を解決するための手段】
【0011】
この発明は上述した課題を解決するためになされたもので、並列演算装置が、予め定められた識別番号である固有ユニット番号によりそれぞれが識別される複数のユニットと、前記複数のユニットの中のいずれか1つのユニットが出力する出力値がユニット出力バスを介して入力されたことに応じて、該入力された入力値と前記複数のユニットの中から選択したいずれか1つのユニットを選択する識別番号である選択ユニット番号とを含む制御データを、前記複数のユニットのそれぞれにユニット入力バスを介して出力する分配制御部と、を有し、前記ユニットが、前記ユニット入力バスを介して前記分配制御部からの制御データを入力するデータ入力部と、前記データ入力部に入力された制御データに含まれる選択ユニット番号と、前記固有ユニット番号とが一致するか否かを判定するユニット番号一致判定部と、前記データ入力部に入力された制御データに含まれる入力値に基づいて、前記ユニット毎に予め定められた演算方法により演算するユニット演算部と、前記ユニット番号一致判定部が判定した結果が一致である場合には、前記ユニット演算部が演算した結果である演算結果を前記出力値として、前記分配制御部に前記ユニット出力バスを介して出力するデータ出力部と、を有することを特徴とする並列演算装置である。
【0012】
この発明によれば、並列演算装置の複数の演算ユニット間の接続を簡易にすることが出来るという効果を奏する。また、複数のユニットが並列に演算をするため、高速に演算することが出来るという効果を奏する。
【0013】
また、この発明は、前記分配制御部は、前記制御データに、前記ユニット演算部の演算方法を選択するための制御コードを含めており、前記ユニットが、前記データ入力部に入力された制御データから前記制御コードを抽出する制御コード抽出部を有し、前記ユニット演算部が、前記制御コード抽出部が抽出した制御データと前記ユニット番号一致判定部が判定した結果とに基づいて前記演算を実行する、または、前記演算を実行させるユニット制御部を有する、ことを特徴とする並列演算装置である。
【0014】
この発明によれば、制御コードを用いて、分配制御部が全てのユニットを制御することが出来るという効果を奏する。また、分配制御部が全てのユニットを制御することにより、各ユニットの構成、および、分配制御部と各ユニットとの接続などの並列演算装置全体の構成が、より簡易となる効果を奏する。
【0015】
また、この発明は、前記分配制御部が、前記ユニット出力バスを介して前記複数のユニットの中のいずれか1つのユニットが出力する出力値を入力するユニット出力値入力部と、前記ユニット出力値入力部に入力された出力値に基づいて、予め定められた処理手順により前記制御データを生成する制御データ生成部と、前記制御データ生成部が生成した制御データを前記複数のユニットのそれぞれに前記ユニット入力バスを介して出力する制御データ出力部と、を有することを特徴とする並列演算装置である。
【0016】
この発明によれば、分配制御部がユニット出力値入力部に入力された出力値に基づいて、予め定められた処理手順により制御データを生成することが可能となり、例えば、階層型ニューラルネットワークや自己組織化マップなどの目的とする演算方法に応じて、制御データを生成することが可能となる効果を奏する。
【0017】
また、この発明は、前記ユニットが、前記演算結果が記憶されるユニット出力記憶部を有し、前記ユニット演算部が、前記演算結果を前記ユニット出力記憶部に記憶させ、前記データ出力部が、前記ユニット番号一致判定部が判定した結果が一致である場合には、前記演算結果を前記ユニット出力記憶部から読み出し、該読み出した演算結果を前記出力値として前記分配制御部に前記ユニット出力バスを介して出力する、ことを特徴とする並列演算装置である。
【0018】
この発明によれば、各ユニットが演算結果をユニット出力記憶部に記憶しておき、例えば、階層型ニューラルネットワークや自己組織化マップなどの全体の演算処理において、適切なタイミングで出力することができるという効果を奏する。
【0019】
また、この発明は、前記ユニットが、前記固有ユニット番号が予め記憶されている固有ユニット番号記憶部と、前記データ入力部に入力された制御データから前記選択ユニット番号を抽出する選択ユニット番号抽出部と、前記データ入力部に入力された制御データから前記入力値を抽出する入力値抽出部と、を有し、前記ユニット番号一致判定部は、前記選択ユニット番号抽出部が抽出した選択ユニット番号と、前記固有ユニット番号記憶部から読み出した固有ユニット番号とが一致するか否かを判定し、前記ユニット演算部は、前記入力値抽出部が抽出した入力値に基づいて、前記ユニット毎に予め定められた演算方法により演算する、ことを特徴とする並列演算装置である。
【0020】
また、この発明は、前記並列演算装置が階層型ニューラルネットワークを演算する並列演算装置である場合には、前記ユニット演算部が、前記階層型ニューラルネットワークの階層のうち、出力する層を識別する層情報が記憶されている層情報記憶部と、前記ユニットの出力関数と前記層情報とが関連付けて予め記憶されている関数記憶部と、前記層情報で識別される出力層のユニットからの出力値に乗ずる予め定められた結合荷重と、前記層情報とが関連付けて記憶されている重み記憶部と、前記出力ユニットからの入力値と結合荷重とを乗じた積和計算一次値情報が記憶される積和計算一次値記憶部と、前記ユニット制御部の選択に応じて、前記層情報記憶部から読み出した層情報に該当する結合荷重を前記重み記憶部から読み出し、該読み出した結合荷重と、前記データ入力部に入力された入力値とを乗算し、該乗算した値を前記積和計算一次値記憶部に記憶されている積和計算一次値情報に加算して記憶させる積和計算一次値算出部と、前記ユニット制御部の選択に応じて、前記積和計算一次値記憶部から積和計算一次値情報を読み出し、前記層情報記憶部から読み出した層情報に該当する出力関数を前記関数記憶部から読み出し、該読み出した出力関数に前記読み出した積和計算一次値情報を代入することにより出力値を算出し、該算出した出力値を前記ユニット出力記憶部に記憶させるユニット出力算出部と、を有することを特徴とする並列演算装置である。
【0021】
この発明によれば、並列演算装置を階層型ニューラルネットワークに適応可能となる効果を奏する。
【0022】
また、この発明は、前記ユニット演算部が、前記出力層に属しているユニットのうち、いずれのユニットが出力ユニットとして出力しているかを示す配信ユニット識別情報が記憶されている前段ユニット番号記憶部、を有し、前記重み記憶部には、前記層情報と前記配信ユニット識別情報とで識別される前記出力層のユニットからの出力値に乗ずる予め定められた結合荷重と、前記層情報と前記配信ユニット識別情報とが、関連付けて記憶されており、前記積和計算一次値算出部が、前記前段ユニット番号記憶部から読み出した配信ユニット識別情報と前記層情報記憶部から読み出した層情報とに該当する結合荷重を前記重み記憶部から読み出し、該読み出した結合荷重と、前記データ入力部に入力された入力値とを乗算し、該乗算した値を前記積和計算一次値記憶部に記憶されている積和計算一次値情報に加算して記憶させる、ことを特徴とする並列演算装置である。
【0023】
この発明によれば、複数の層からなっており層間が複数のノードにより結合している階層型ニューラルネットワークの演算が可能となる効果を奏する。
【0024】
また、この発明は、前記データ入力部に入力された制御データに含まれる制御コードが、積和計算一次値を初期化することを示す場合には、前記ユニット制御部が、前記積和計算一次値記憶部に記憶されている積和計算一次値情報を0に初期化する、ことを特徴とする並列演算装置である。
【0025】
また、この発明は、前記データ入力部に入力された制御データに含まれる制御コードが、積和計算一次値を算出し加算格納することを示し、該制御データが出力値と該出力値を出力しているユニットのユニット識別情報である配信ユニット識別情報とを含む場合には、前記ユニット制御部が、前記配信ユニット識別情報を前記前段ユニット番号記憶部に記憶し、前記出力値に基づいて前記積和計算一次値算出部の処理を実行させる、ことを特徴とする並列演算装置である。
【0026】
また、この発明は、前記データ入力部に入力された制御データに含まれる制御コードがユニット出力演算を実行することを示す場合には、前記ユニット制御部が、前記ユニット出力算出部の処理を実行させる、ことを特徴とする並列演算装置である。
【0027】
また、この発明は、前記データ入力部に入力された制御データに含まれる制御コードがアクティブなユニットとして出力値を出力することを示し、該制御データが選択ユニット番号を含む場合には、前記ユニット制御部が、前記ユニット番号一致判定部が判定した結果が一致である場合には、前記演算結果を前記ユニット出力記憶部から読み出し、該読み出した演算結果を前記出力値として前記分配制御部に前記データ出力部と前記ユニット出力バスとを介して出力する、ことを特徴とする並列演算装置である。
【0028】
また、この発明は、前記データ入力部に入力された制御データが配信層情報を含む場合には、前記ユニット制御部が、前記データ入力部に入力された制御データに含められた配信層情報を前記層情報記憶部に記憶する、ことを特徴とする並列演算装置である。
【0029】
また、この発明は、前記分配制御部が、前記積和計算一次値を初期化することを示す制御コード、前記出力値と前記配信ユニット識別情報とを含み、前記積和計算一次値を算出し加算格納することを示す制御コード、前記ユニット出力演算を実行することを示す制御コード、前記アクティブなユニットとして出力値を出力することを示す制御コード、または、前記配信層情報を含む制御データを含む制御データを、前記階層型ニューラルネットワークの階層数と該階層のノード数とに合わせて予め定められた順序で出力する、ことを特徴とする並列演算装置である。
【0030】
また、この発明は、前記並列演算装置が自己組織化マップを演算する並列演算装置である場合には、前記固有ユニット番号にかわってユニット固有のネットワーク座標であるユニットネットワーク座標により前記複数のユニットのそれぞれが識別されており、前記ユニット演算部が、前記ユニットネットワーク座標が予め記憶されているユニットネットワーク座標記憶部と、前記ユニットの結合重みベクトルが記憶されている重み記憶部と、前記ユニットのノルムであるユニットノルムを記憶するユニットノルム記憶部と、ノルムを算出することを示す制御コードと入力ベクトルとを含む制御データを前記ユニット制御部から前記データ入力部に入力した場合には、前記データ入力部に入力された入力データベクトルと、前記重み記憶部から読み出した結合重みベクトルとのノルムを算出し、該算出したノルムを前記ユニットノルムとして前記ユニットノルム記憶部に記憶させるノルム算出部と、を有し、ノルムを出力することを示す制御コードと入力ネットワーク座標とを含む制御データを前記ユニット制御部から前記データ入力部に入力した場合には、前記ユニット制御部が、該入力された入力ネットワーク座標と前記ユニットネットワーク座標記憶部から読み出したユニットネットワーク座標とが一致する場合には、前記ユニットノルム記憶部から読み出したユニットノルムを前記データ出力部を介して出力する、ことを特徴とする並列演算装置である。
【0031】
この発明によれば、並列演算装置が自己組織化マップを演算することが可能となる効果を奏する。
【0032】
また、この発明は、前記データ入力部に入力された制御データに含まれる制御コードが重みを設定することを示し、入力ネットワーク座標と入力結合重みベクトルとを含んでいる場合には、前記ユニット制御部が、入力ネットワーク座標記憶部に記憶されている入力ネットワーク座標の値を、受信した制御データに含まれる入力ネットワーク座標に更新し、前記ユニット番号一致判定部が、該更新した入力ネットワーク座標とユニットネットワーク座標記憶部から読み出したユニットネットワーク座標とが一致するか否かを判定し、前記ユニット番号一致判定部の判定結果が一致する場合には、前記ユニット制御部が、重み記憶部に記憶されている結合重みベクトルを、受信した制御データに含まれる入力結合重みベクトルに更新する、ことを特徴とする並列演算装置である。
【0033】
また、この発明は、前記データ入力部に入力された制御データに含まれる制御コードが学習速度と近傍距離とを設定することを示し、入力学習速度と入力近傍距離とを含んでいる場合には、前記ユニット制御部が、学習速度記憶部に記憶されている学習速度を受信した制御データに含まれる入力学習速度に更新するとともに、距離記憶部に記憶されている基準距離を受信した制御データに含まれる入力近傍距離に更新する、ことを特徴とする並列演算装置である。
【0034】
また、この発明は、前記データ入力部に入力された制御データに含まれる制御コードが実数ベクトルの次元数を設定すること示し、入力次元数Nを含んでいる場合には、前記ユニット制御部が、実数ベクトル次元数記憶部に記憶されている次元数を受信した制御データに含まれる入力次元数に更新する、ことを特徴とする並列演算装置である。
【0035】
また、この発明は、前記データ入力部に入力された制御データに含まれる制御コードがノルムを算出することを示し、入力ベクトルを含んでいる場合には、前記ユニット制御部が、入力データ記憶部に記憶されている入力データベクトルを入力ベクトルに更新し、前記ノルム算出部が、該更新した入力ベクトルと重み記憶部から読み出した結合重みベクトルとのノルムを算出し、該算出したノルムをユニットノルムとしてユニットノルム記憶部に記憶させる、ことを特徴とする並列演算装置である。
【0036】
また、この発明は、前記データ入力部に入力された制御データに含まれる制御コードがノルムを出力することを示し、入力ネットワーク座標を含んでいる場合には前記ユニット制御部が、入力ネットワーク座標記憶部に記憶されている入力ネットワーク座標の値を、受信した制御データに含まれる入力ネットワーク座標に更新し、前記ユニット番号一致判定部が、該更新した入力ネットワーク座標とユニットネットワーク座標記憶部から読み出したユニットネットワーク座標とが一致するか否かを判定し、前記ユニット番号一致判定部の判定結果が一致する場合には、前記ユニット制御部が、前記ユニットノルム記憶部から読み出したユニットノルムを前記データ出力部と前記ユニット出力バスとを介して前記分配制御部に出力する、ことを特徴とする並列演算装置である。
【0037】
また、この発明は、前記データ入力部に入力された制御データに含まれる制御コードが学習することを示し、入力ネットワーク座標を含んでいる場合には、前記ユニット制御部が、前記入力ネットワーク座標記憶部に記憶されている入力ネットワーク座標を、前記制御データに含まれていた入力ネットワーク座標に更新し、前記演算部が、前記データ入力部に入力された制御データに含まれる制御コードが学習することを示す場合には、前記ユニットネットワーク座標記憶部から読み出したユニットネットワーク座標と前記入力ネットワーク座標記憶部から読み出した入力ネットワーク座標との間の距離を算出し、該算出した距離が、前記距離記憶部から読み出した距離以下であるか否かを判定することにより、ユニットネットワーク座標記憶部から読み出したユニットネットワーク座標が、入力ネットワーク座標記憶部から読み出した入力ネットワーク座標の近傍にあるか否かを判定する近傍判定部と、前記近傍判定部の判定した結果が近傍である場合には、前記入力データ記憶部から読み出した入力データベクトルと前記重み記憶部から読み出した結合重みベクトルとの差を算出し、該算出した差に前記学習速度記憶部から読み出した学習速度係数を乗じた値を、重み記憶部に記憶されている結合重みベクトルに加算し、重み記憶部に記憶されている結合重みベクトルを更新する重み更新部と、を有することを特徴とする並列演算装置である。
【0038】
また、この発明は、前記データ入力部に入力された制御データに含まれる制御コードが学習結果を出力することを示し、入力ネットワーク座標を含んでいる場合には、前記ユニット制御部が、前記入力ネットワーク座標記憶部に記憶されている入力ネットワーク座標の値を、受信した制御データに含まれる入力ネットワーク座標に更新し、前記ユニット番号一致判定部が、該更新した入力ネットワーク座標と前記ユニットネットワーク座標記憶部から読み出したユニットネットワーク座標とが一致するか否かを判定し、前記ユニット番号一致判定部の判定結果が一致する場合には、前記ユニット制御部が、前記重み記憶部から読み出した結合重みベクトルを、データ出力部と前記ユニット出力バスとを介して前記分配制御部に出力する、ことを特徴とする並列演算装置である。
【0039】
また、この発明は、前記分配制御部が、前記重みを設定することを示す制御コード、前記学習速度と近傍距離とを設定することを示す制御コード、実数ベクトルの次元数を設定すること示す制御コード、ノルムを算出することを示す制御コード、ノルムを出力することを示す制御コード、学習することを示す制御コード、または、学習結果を出力することを示す制御コードを含む制御データを、前記複数のユニットの数および学習回数に合わせて予め定められた順序で出力する、ことを特徴とする並列演算装置である。
【0040】
また、この発明は、前記複数のユニットと前記分配制御部とを接続する前記ユニット出力バスとユニット出力バスとが、互いに接続可能な第1の接続部と第2の接続部とにより分離し、前記複数のユニットと前記第1の接続部とを含む第1の装置とし、前記分配制御部と前記第2の接続部とを含む第2の装置とする、ことを特徴とする並列演算装置である。
【0041】
また、この発明は、予め定められた識別番号である固有ユニット番号によりそれぞれが識別される複数のユニットと、前記複数のユニットの中のいずれか1つのユニットが出力する出力値がユニット出力バスを介して入力されたことに応じて、該入力された入力値と前記複数のユニットの中から選択したいずれか1つのユニットを選択する識別番号である選択ユニット番号とを含む制御データを、前記複数のユニットのそれぞれにユニット入力バスを介して出力する分配制御部と、を有する並列演算装置で用いられる並列演算であって、前記ユニットが、前記ユニット入力バスを介して前記分配制御部からの制御データを入力し、前記データ入力部に入力された制御データに含まれる選択ユニット番号と、前記固有ユニット番号とが一致するか否かを判定し、前記入力された制御データに含まれる入力値に基づいて、前記ユニット毎に予め定められた演算方法により演算し、前記判定した結果が一致である場合には、前記演算した結果である演算結果を前記出力値として、前記分配制御部に前記ユニット出力バスを介して出力する、ことを特徴とする並列演算方法である。
【発明を実施するための最良の形態】
【0042】
<第1の基本構成>
以下、図面を参照して、本発明の実施の形態について説明する。図1は、この発明の一実施形態による並列演算装置の構成(第1の基本構成)を示す概略ブロック図である。ここでは、ユニットU1からU10の、ユニットの個数が10である場合について説明する。なお、このユニットの詳細については、後述する。
【0043】
複数のユニットU1からU10は、予め定められた順序であるデイジーチェーン順序で、デイジーチェーン制御バス1を介してデイジーチェーンされている。ここでは、このデイジーチェーン順序は、ユニットU1、ユニットU2、ユニットU3、・・・ユニットU10の順と、予め定められているものとして説明する。また、デイジーチェーン制御バス1は、デイジーチェーン順序で隣接するユニット同士を接続している。例えば、デイジーチェーン制御バス1は、ユニットU1とユニットU2、ユニットU2とユニットU3、・・・ユニットU10とユニットU1、を接続している。また、このデイジーチェーン制御バス1は、ユニットU1からU10をデイジーチェーン順序で循環的に接続している。そのため、ユニットU10とユニットU1とも、デイジーチェーン制御バス1を介して接続されている。
【0044】
ユニットU1からU10のそれぞれのユニットは、トークンをデイジーチェーン順序で、デイジーチェーン制御バス1を介してユニット間で送受信している。このトークンは、デイジーチェーンされたユニットU1からU10の、いずれかの1つのユニットが有しており、このトークンを有しているユニットが、出力ユニットとなることを示す信号である。ユニットは、トークンを有しているユニットのみが出力ユニットとなり、また、全てのユニットが入力ユニットとなる。
【0045】
この各ユニットは、ユニット出力バス2を介して入力される増幅器4からの入力値に基づいて、ユニット毎に予め定められた演算方法により演算する。また、各ユニットは、トークンがデイジーチェーン順序で前のユニットからデイジーチェーン制御バス1を介して入力されたことに応じて、トークンをデイジーチェーン順序で次のユニットにデイジーチェーン制御バス1を介して出力すると共に、演算した結果を出力値として増幅器4にユニット出力バス2を介して出力する。
【0046】
増幅器(中継器)4は、複数のユニットU1からU10の内のいずれか1つが出力する出力値がユニット出力バス2を介して入力され、入力された出力値を複数のユニットU1からU10のそれぞれに、ユニット入力バス3を介して入力値として出力する。また、増幅器4は、入力された出力値の信号を、電気的に増幅して、入力値として出力する。
【0047】
また、ユニット出力バス2の一端が、並列演算装置の出力端子P1に接続されている。また、増幅器4の入力端子に、並列演算装置の入力端子P2に接続されている。また、ユニットU1は、トリガ入力線5を介して、トリガ入力端子P3と、接続されている。また、出力端子P1、入力端子P2、トリガ入力端子P3は、並列演算装置の外部にある制御装置に接続されている。制御装置は、出力端子P1、入力端子P2、トリガ入力端子P3を介して、並列演算装置にデータを入力し、並列演算装置から演算結果を取得し、また、並列演算装置を制御する。
【0048】
次に、図2を用いて、各ユニットの構成について説明する。なお、ユニットU1からU10は同一の構成を有するため、ここでは、ユニットU2の構成のみについて説明する。ユニットU2は、トークン入力部12と、トークン出力部13と、データ入力部11と、データ出力部14と、ユニット演算部15と、ユニット出力記憶部16と、を有する。
【0049】
トークン入力部12は、デイジーチェーン制御バス1を介してデイジーチェーンされている順序が1つ前のユニットからのトークンを入力する。例えば、ユニットU2のトークン入力部12は、デイジーチェーン制御バス1を介してデイジーチェーンされている順序が1つ前のユニットであるユニットU1からのトークンを入力する。なお、ユニットU1のトークン入力部12は、ユニットU10からのトークンがトークンデイジーチェーン制御バス1を介して入力されるだけでなく、制御装置からのトークンがトリガ入力端子P3とトリガ入力線5とを介して入力される。
【0050】
トークン出力部13は、トークン入力部にトークンが入力されたことに応じて、トークンをデイジーチェーンされている順序が1つ後のユニットへデイジーチェーン制御バス1を介して出力する。例えば、ユニットU2のトークン出力部13は、デイジーチェーン制御バス1を介してデイジーチェーンされている順序が1つ後のユニットであるユニットU3へトークンを出力する。
【0051】
データ入力部11は、ユニット出力バス2を介して増幅器4からの入力値を入力する。ユニット出力記憶部16は、ユニット演算部15が演算した結果である演算結果が記憶される。ユニット演算部15は、データ入力部11に入力された入力値に基づいて、ユニット毎に予め定められた演算方法により演算する。また、ユニット演算部15は、演算した結果である演算結果を、ユニット出力記憶部16に記憶させる。
【0052】
データ出力部14は、トークン入力部12にトークンが入力されたことに応じて、ユニット演算部15が演算した結果である演算結果を出力値として、増幅器4にユニット出力バス2を介して出力する。また、データ出力部14は、トークン入力部12にトークンが入力されたことに応じて、ユニット出力記憶部16から演算結果を読み出し、読み出した演算結果を出力値として、増幅器4にユニット出力バス2を介して出力する。
【0053】
なお、後述するように、並列演算装置が、トリガであるトークンをユニットU1にトリガ入力端子P3を介して入力し、ユニットU1から順にトークンがユニット間で順次渡されていくことにより、並列演算装置の各ユニットでの処理が実行される。この並列演算装置の動作については、次に説明する並列演算装置を階層型ニューラルネットワークに適応した場合を例にして説明する。
【0054】
<第1の実施形態>
<階層型ニューラルネットワークに適応した場合のユニットの構成>
次に、並列演算装置を、階層型ニューラルネットワークに適応した場合の構成について説明する。階層型ニューラルネットワークにおいても並列演算装置全体の構成は、図1の並列演算装置の構成と同一であり、ユニットの構成のみが異なる。従って、図3を用いて、階層型ニューラルネットワークに適応した場合のユニットの構成を説明する。
【0055】
ユニットは、データ入力部101と、トークン入力部102と、トークン出力部103と、データ出力部104とを有する。また、ユニットは、重み記憶部130と、層情報記憶部133と、ユニット数記憶部134と、積和計算一次値記憶部131と、関数記憶部132と、ユニット出力記憶部135と、データ出力フラグ記憶部136と、ユニット識別情報記憶部137とを有する。また、ユニットは、カウンタ114と、積和計算一次値算出部111と、層情報算出部113と、ユニット出力算出部112とを有する。
【0056】
ここで、図3のデータ入力部101、トークン入力部102、トークン出力部103、データ出力部104は、図2のデータ入力部11、トークン入力部12、トークン出力部13、データ出力部14に、それぞれ対応する。また、図3のユニット出力記憶部135が、図2のユニット出力記憶部16に対応する。これらの図2と図3とにおいて対応する構成について、共通の機能については、その説明を省略する。
【0057】
また、図3の重み記憶部130と、層情報記憶部133と、ユニット数記憶部134と、積和計算一次値記憶部131と、関数記憶部132と、データ出力フラグ記憶部136と、ユニット識別情報記憶部137と、カウンタ114と、積和計算一次値算出部111と、層情報算出部113と、ユニット出力算出部112とが、図2のユニット演算部15に対応する。
【0058】
層情報記憶部133には、階層型ニューラルネットワークの階層のうち、アクティブな層(出力層)を識別する層情報が記憶されている。ユニット識別情報記憶部137には、アクティブな層に属しているユニットのうち、いずれのユニットが出力しているかを示すユニット識別情報が記憶されている。関数記憶部132には、ユニットの出力関数と層情報とが関連付けて予め記憶されている。この出力関数とは、例えば、シグモイド関数、ステップ関数、区分線形関数などの、予め定められた関数である。
【0059】
重み記憶部130には、層情報で識別されるアクティブな層のユニットからの出力値に乗ずる予め定められた結合荷重と、層情報とが関連付けて記憶されている。また、重み記憶部130には、層情報とユニット識別情報とで識別される層のユニットからの出力値に乗ずる予め定められた結合荷重と、層情報とユニット識別情報とが、関連付けて記憶されている。
【0060】
ユニット数記憶部134には、層情報と層情報で識別される階層に属する階層型ニューラルネットワークのユニット数とが関連付けて予め記憶されている。積和計算一次値記憶部131には、前段ユニットに相当するユニットからの入力値と結合荷重とを乗じた積和計算一次値情報が記憶される。データ出力フラグ記憶部136には、データ出力部104が出力値を出力済みであるか否かを示すデータ出力フラグが記憶されている。カウンタ114は、データ入力部101に入力値が入力される毎に、ユニット識別情報記憶部137に記憶されているユニット識別情報の値をインクリメントする。
【0061】
ユニット数比較部115は、層情報記憶部133から層情報を読み出し、読み出した層情報に該当するユニット数をユニット数記憶部134から読み出し、ユニット識別情報記憶部137からユニット識別情報を読み出し、読み出したユニット識別情報の値と読み出したユニット数とを比較し、比較した結果が一致した場合に、読み出したユニット識別情報の値と読み出したユニット数とが一致したことを示す比較一致信号を出力する。また、ユニット数比較部115は、読み出したユニット識別情報の値と読み出したユニット数とを比較し、比較した結果が一致した場合に、ユニット識別情報記憶部137に記憶されているユニット識別情報の値をリセットする。
【0062】
積和計算一次値算出部111は、層情報記憶部133から読み出した層情報に該当する結合荷重を重み記憶部130から読み出し、読み出した結合荷重と、データ入力部101に入力された入力値とを乗算し、乗算した値を積和計算一次値記憶部131に記憶されている積和計算一次値情報に加算して記憶させる。
【0063】
また、積和計算一次値算出部111は、ユニット識別情報記憶部137から読み出したユニット識別情報と層情報記憶部133から読み出した層情報とに該当する結合荷重を重み記憶部130から読み出し、読み出した結合荷重と、データ入力部101に入力された入力値とを乗算し、乗算した値を積和計算一次値記憶部131に記憶されている積和計算一次値情報に加算して記憶させる。
【0064】
ユニット出力算出部112は、積和計算一次値記憶部131から積和計算一次値情報を読み出し、層情報記憶部133から読み出した層情報に該当する出力関数を関数記憶部132から読み出し、読み出した出力関数に読み出した積和計算一次値情報を代入することにより出力値を算出し、算出した出力値をユニット出力記憶部135に記憶させる。
【0065】
また、ユニット出力算出部112は、ユニット数比較部115から比較一致信号を入力されたことに応じて、積和計算一次値記憶部131から積和計算一次値情報を読み出し、層情報記憶部133から読み出した層情報に該当する出力関数を関数記憶部132から読み出し、読み出した出力関数に読み出した積和計算一次値情報を代入することにより出力値を算出し、算出した出力値をユニット出力記憶部135に記憶させる。
また、ユニット出力算出部112は、積和計算一次値記憶部131から積和計算一次値情報を読み出した後、積和計算一次値記憶部131に記憶されている積和計算一次値情報の値を0にリセットする。
【0066】
層情報算出部113は、ユニット数比較部115から比較一致信号を入力されたことに応じて、層情報記憶部133に記憶されている層情報の値をインクリメントする。データ出力部104は、トークン入力部102にトークンが入力されたことに応じて、データ出力フラグ記憶部136のデータ出力フラグを出力済みに設定する。
【0067】
トークン出力部103は、データ入力部101に入力値が入力されたことに応じて、データ出力フラグ記憶部136からデータ出力フラグを読み出し、該読み出したデータ出力フラグが出力済みに設定されている場合には、トークンを出力する(トークン出力手順)。また、トークン出力部103は、トークンを出力すると共に、データ出力フラグ記憶部136のデータ出力フラグを未出力に設定する。
【0068】
なお、トークン出力部103は、データ入力部101に入力値が入力されたことに応じて、データ出力フラグ記憶部136からデータ出力フラグを読み出し、読み出したデータ出力フラグが出力済みに設定されている場合には、トークンを出力するという上記トークン出力手順の代わりに、積和計算一次値算出部111にデータ入力部101からの入力値が入力されたことに応じて、データ出力フラグ記憶部136からデータ出力フラグを読み出し、該読み出したデータ出力フラグが出力済みに設定されている場合には、トークンを出力してもよい。
【0069】
<階層型ニューラルネットワークに適応した場合のユニットの動作>
次に、図4と図5とを用いて、図3の階層型ニューラルネットワークに適応した場合のユニットの動作について説明する。まず、図4を用いて、ユニットに入力値が入力された場合の動作について説明する。
【0070】
まず、データ入力部101に、増幅器4からユニット入力バス3を介して入力値が入力される(ステップS100)。次に、ステップS100で、データ入力部101に入力値が入力されたことに応じて、カウンタ114がユニット識別情報記憶部137に記憶されているユニット識別情報の値を、1つインクリメントする(ステップS101)。
【0071】
また、ステップS100で、データ入力部101に入力値が入力されたことに応じて、積和計算一次値算出部111が、ユニット識別情報記憶部137から読み出したユニット識別情報と層情報記憶部133から読み出した層情報とに該当する結合荷重を重み記憶部130から読み出し、読み出した結合荷重と、データ入力部101に入力された入力値とを乗算し、乗算した値を積和計算一次値記憶部131に記憶されている積和計算一次値情報に加算して記憶させる。
【0072】
次に、ユニット数比較部115が、層情報記憶部133から層情報を読み出し、読み出した層情報に該当するユニット数をユニット数記憶部134から読み出し、ユニット識別情報記憶部137からユニット識別情報を読み出し、読み出したユニット識別情報の値と読み出したユニット数とを比較し、比較した結果が一致した場合に、読み出したユニット識別情報の値と読み出したユニット数とが一致したことを示す比較一致信号を出力する(ステップS103)。また、このユニット数比較部115が、読み出したユニット識別情報の値と読み出したユニット数とを比較し、比較した結果が一致した場合に、ユニット識別情報記憶部137に記憶されているユニット識別情報の値をリセットする。
【0073】
次に、ステップS103にて比較した結果が一致した場合には、層情報算出部113が、ユニット数比較部115から比較一致信号を入力されたことに応じて、層情報記憶部133に記憶されている層情報の値をインクリメントする(ステップS104)。
【0074】
次に、ステップS103にて比較した結果が一致した場合には、ユニット出力算出部112は、ユニット数比較部115から比較一致信号を入力されたことに応じて、積和計算一次値記憶部131から積和計算一次値情報を読み出し、層情報記憶部133から読み出した層情報に該当する出力関数を関数記憶部132から読み出し、読み出した出力関数に読み出した積和計算一次値情報を代入することにより出力値を算出し、算出した出力値をユニット出力記憶部135に記憶させる(ステップS105)。次に、このユニット出力算出部112は、積和計算一次値記憶部131から積和計算一次値情報を読み出した後、積和計算一次値記憶部131に記憶されている積和計算一次値情報の値を0にリセットする。
【0075】
次に、または、ステップS103にて比較した結果が不一致であった場合には、トークン出力部103が、ステップS100にてデータ入力部101に入力値が入力されたことに応じて、データ出力フラグ記憶部136からデータ出力フラグを読み出し、該読み出したデータ出力フラグが出力済みであるか否かを検出し(ステップS106)、データ出力フラグが出力済みに設定されている場合には、トークンを出力する(ステップS107)。
【0076】
また、トークン出力部103は、ステップS107にてトークンを出力すると共に、データ出力フラグ記憶部136のデータ出力フラグを未出力に設定し(ステップS108)、処理を終了する。一方、ステップS106にてデータ出力フラグが未出力に設定されている場合には、トークン出力部103は、処理を終了する。
【0077】
次に、図5を用いて、ユニットにトークンが入力された場合の動作について説明する。まず、トークン入力部102に、デイジーチェーン制御バス1を介してデイジーチェーンされている順序が1つ前のユニットからのトークンが入力される(ステップS200)。
【0078】
次に、データ出力部104は、トークン入力部102にトークンが入力されたことに応じて、ユニット出力記憶部135から出力値(演算結果)を読み出し、読み出した出力値(演算結果)を出力値として、増幅器4にユニット出力バス2を介して出力する(ステップS201)。次に、データ出力部104は、トークン入力部102にトークンが入力されたことに応じて、データ出力フラグ記憶部136のデータ出力フラグを出力済みに設定して(ステップS202)、処理を終了する。
【0079】
<階層型ニューラルネットワークの全体の構成>
次に、本実施形態による階層型ニューラルネットワークの全体の構成について、説明する。
ここでは、図6に示すように、階層型ニューラルネットワークとして、入力層L1、隠れ層L2、出力層L3の3層がある場合について説明する。各層は、層情報により識別されており、また、階層の層情報は、階層の順に層情報が1つずつ大きくなるようにして、識別されている。例えば、入力層L1の層情報が1、隠れ層L2の層情報が2、出力層L3の層情報が3として識別されている。
【0080】
また、入力層L1には、P101、P102、P103の3個のノードがあり、隠れ層L2には、P201、P202、P203、P204、P205、P206、P207、P208、P209、P210の10個のノードがあり、出力層L3には、P301、P302、P303の3個のノードがある場合について説明する。入力層L1の各ノードの出力は、隠れ層L2の各ノードの入力に入力され、また、隠れ層L2の各ノードの出力は、出力層L3の各ノードの入力に入力されている。
【0081】
各層において、各ノードはユニット識別情報により識別されており、各ノードのユニット識別情報は、予め定められたノードの配置順に、ユニット識別情報が1つずつ大きくなるようにして設定されている。例えば、P101はユニット識別情報が1であり、P102はユニット識別情報が2であり、P103はユニット識別情報が3である。
【0082】
本実施の形態においては、それぞれのユニットが、隠れ層L2、出力層L3のノードとして機能する。なお、この例においては、ユニットU1からユニットU3は、隠れ層L2、出力層L3のノードとして機能し、ユニットU4からユニットU10は、隠れ層L2のノードとして機能する。ここで、制御装置が入力層L1として出力値を、増幅器4とユニット出力バス2とを介して、隠れ層L2としての各ユニットに、順次出力する。そのために、ここでは、各ユニットは、隠れ層L2と出力層L3として機能する。
例えば、ユニットU1は、隠れ層L2のノードP201と出力層L3のノードP301として機能する。また、ユニットU3は、隠れ層L2のノードP203と出力層L3のノードP303として機能する。また、ユニットU4は、隠れ層L2のノードP204として機能する。
【0083】
ここで、あるユニットに値が入力された際、入力層L1、隠れ層L2、出力層L3のいずれの層からの入力であるかは、各ユニットにおいて、ユニットが有する層情報記憶部133に記憶してある層情報により判定される。
【0084】
<階層型ニューラルネットワークの全体の動作>
次に、本実施形態による階層型ニューラルネットワークの、一例としての、全体の動作について説明する。ここでは、各ユニットが、出力層L3のノードとして機能し、トークンを入力されたいずれか1つのユニットが隠れ層L2のアクティブなノードとして機能する場合について説明する。この場合、各ユニットが出力層L3のノードとして機能し、アクティブな層が隠れ層L2であるため、各ユニットの層情報記憶部133には層情報の値として2が記憶されている。
【0085】
まず、ノードP201であるユニットU1が、トークンが制御装置から入力されることにより、ユニット出力記憶部135から出力値を読み出し、出力値を出力すると共に、データ出力フラグ記憶部136のデータ出力フラグを出力済みとして設定する(手順A100)。次に、ノードP201からの出力値が、ユニット出力バス2と増幅器4とユニット入力バス3とを介して、ユニットU1からU10の各ユニットのデータ入力部101に入力される。
【0086】
次に、ユニットU1からU10の各ユニットは、ユニットU1からの入力値に基づいて、積和計算一次値算出部111が、ユニット識別情報記憶部137から読み出したユニット識別情報と層情報記憶部133から読み出した層情報とに該当する結合荷重を重み記憶部130から読み出し、読み出した結合荷重と、データ入力部101に入力された入力値とを乗算し、乗算した値を積和計算一次値記憶部131に記憶されている積和計算一次値情報に加算して記憶させる(手順A101)。
ここで、各ユニットの積和計算一次値算出部111が、ユニット識別情報記憶部137から読み出したユニット識別情報と層情報記憶部133から読み出した層情報とに該当する結合荷重を重み記憶部130から読み出すことにより、各ユニットは、層情報に基づいて出力層L3のノードとして機能し、また、層情報に基づいて、アクティブなユニットの属する層が隠れ層L2であると識別し、更に、ユニット識別情報に基づいてアクティブとなる隠れ層L2での各ノードを識別し、この隠れ層L2のアクティブとなるノードに対応する結合荷重を、このアクティブとなった隠れ層L2のノードからの出力値に乗ずることが可能となる。
【0087】
ここで、ユニットU1のデータ出力フラグ記憶部136のデータ出力フラグは、出力済みとして設定されてあるため、ユニットU1のトークン出力部103は、データ入力部101に入力値が入力されたことに応じて、トークンを出力すると共に、データ出力フラグ記憶部136のデータ出力フラグを未出力として設定する(手順A102)。
【0088】
次に、ユニットU1から出力されたトークンは、デイジーチェーン制御バス1を介して、デイジーチェーンされている順序が1つ後のユニットであるユニットU2のトークン入力部12に入力される(手順A103)。
【0089】
ユニットU2はトークン入力部12にトークンが入力されたことに応じて、上記に説明した手順A100でノードP101であるユニットU1が、トークンが入力された場合と同様に、ユニット出力記憶部135から出力値を読み出し、出力値を出力すると共に、データ出力フラグ記憶部136のデータ出力フラグを出力済みとして設定する(手順A104)。
【0090】
以降、同様に、手順A101から手順A103を繰り返し、隠れ層L2のノードP210であるユニットU10が、出力値を出力すると共に、データ出力フラグ記憶部136のデータ出力フラグを出力済みとして設定する。
【0091】
次に、出力層L3のノードP301からP303に該当するユニットU1からU3の各ユニットは、手順A101と同様に、ユニットU10からの入力値に基づいて、各ユニットの積和計算一次値算出部111が、ユニット識別情報記憶部137から読み出したユニット識別情報と層情報記憶部133から読み出した層情報とに該当する結合荷重を重み記憶部130から読み出し、読み出した結合荷重と、データ入力部101に入力された入力値とを乗算し、乗算した値を積和計算一次値記憶部131に記憶されている積和計算一次値情報に加算して記憶させる(手順A105)。
【0092】
ここで、ユニットU10からの入力値が、各ユニットのデータ入力部101に入力されたことに応じて、各ユニットのカウンタ114は、ユニット識別情報記憶部137に記憶されているユニット識別情報の値をインクリメントし、ユニット識別情報の値は3となる(手順A106)。
なお、各ユニットのユニット数記憶部134には、層情報と層情報で識別される階層に属する階層型ニューラルネットワークのユニット数とが関連付けて予め記憶されている。例えば、図6の階層型ニューラルネットワークの場合には、入力層L1の層情報である値1と、階層型ニューラルネットワークのユニット数、つまり、入力層L1のノード数である3とが、関連付けて予め記憶されている。また、例えば、図6の階層型ニューラルネットワークの場合には、隠れ層L2の層情報である値2と、階層型ニューラルネットワークのユニット数、つまり、隠れ層L2のノード数である10とが、関連付けて予め記憶されている。
【0093】
次に、各ユニットのユニット数比較部115は、層情報記憶部133から層情報を読み出し、読み出した層情報に該当するユニット数をユニット数記憶部134から読み出し、ユニット識別情報記憶部137からユニット識別情報を読み出し、読み出したユニット識別情報の値と読み出したユニット数とを比較し、比較した結果が一致するために、読み出したユニット識別情報の値と読み出したユニット数とが一致したことを示す比較一致信号を出力すると共に、ユニット識別情報記憶部137に記憶されているユニット識別情報の値をリセットする(手順A107)。
【0094】
次に、各ユニットのユニット出力算出部112は、ユニット数比較部115から比較一致信号を入力されたことに応じて、積和計算一次値記憶部131から積和計算一次値情報を読み出し、層情報記憶部133から読み出した層情報に該当する出力関数を関数記憶部132から読み出し、読み出した出力関数に読み出した積和計算一次値情報を代入することにより出力値を算出し、算出した出力値をユニット出力記憶部135に記憶させる(手順A108)。
【0095】
ここで、各ユニットのユニット出力算出部112は、層情報記憶部133から読み出した層情報に該当する出力関数を関数記憶部132から読み出すため、出力層L3に該当するユニット毎の出力関数により、ユニットの出力値を算出することが可能となる。また、各ユニットのユニット出力記憶部135に出力層L3のノードとして算出した出力値が記憶されるため、各ユニットはトークンが入力された場合に、各ユニットは出力層L3のアクティブなノードとして、出力値を出力することが可能となる。
【0096】
また、各ユニットの層情報算出部113が、ユニット数比較部115から比較一致信号を入力されたことに応じて、層情報記憶部133に記憶されている層情報の値をインクリメントして、層情報の値を3とする。そのために、各ユニットは、以降、トークンが入力されたいずれか1つのユニットが、出力層L3のアクティブなノードとして出力値を出力する。
【0097】
なお、上記において、出力層L3でユニットU3からユニットU4にトークンが出力され、次に、トークンを入力されたユニットU4が出力層L3のノードとして出力値を出力するが、この例における階層型ニューラルネットワークにおいて、出力層L3のノードとしてユニットU4に相当するノードは無いため、ユニットU4は、出力層L3のノードとして出力値を出力しないことが望ましい。または、ユニットU4は、出力層L3のノードとしては、出力値の値を0として出力してもよい。または、各ユニットにおいて、出力層L3としてのユニットU4からの出力値に乗じる結合荷重を0として、重み記憶部130に予め記憶しておいてもよい。
【0098】
このようにユニットU4の出力値、または、ユニットU4からの出力値を受けた各ユニットの結合荷重を、予め階層型ニューラルネットワークの各層のノードの個数に合わせて設定しておくことにより、ユニットに対して、ある層でそのユニットに対応するノードが無い場合においても、本実施形態の並列演算装置は階層型ニューラルネットワークとして問題なく動作することが可能である。
【0099】
以上説明したように、本実施形態を階層型ニューラルネットワークに適応した場合には、一度に発火すうニューロンの個数を1つに限定したことにより、つまり、出力層において出力値を出力するノードを、トークンが入力された1つのユニットに限定することにより、ユニット間の配線が増大することを減じる効果を奏する。
また、1つの出力層のノードであるユニットからの出力値が、ユニット入力バス3を介して、1度に全ての入力層となるノードであるユニットに分配して入力されるため、分配に要する時間を減じる効果を奏する。また、複数のユニットが、並列にユニット内演算を演算するため、全体としての演算が高速になるという効果を奏する。
【0100】
例えば、階層型ニューラルネットワークを演算した場合、従来型のプロセッサを用いた場合には、その計算時間は概算として、計算時間=(シナプス数×1回の演算に要するステップ数÷クロック周波数)として算出されるのに対して、本実形態による並列演算装置を用いた場合には、計算時間=(ニューロン数×1ニューロンの発火周期)により算出される。ここで、シナプス数は、ニューロン数の2乗に比例するため、本実形態による並列演算装置を用いた階層型ニューラルネットワークの計算時間は、従来型のプロセッサを用いた場合に比較して、計算時間を大幅に減ずることが可能となる。
【0101】
また、各ユニットが、階層型ニューラルネットワークの層を変更し、かつ、入力側の層のノードと出力側の層のノードとして機能するため、少ないユニット数で多層のノードの演算を実行することが可能となる効果を奏する。
【0102】
なお、上記に説明した第1の実施形態においては、制御装置が入力層L1として出力値を順次出力し、そのために、各ユニットは隠れ層L2と出力層L3のノードとして機能するとして説明したが、各ユニットは、入力層L1のノードとして機能するようにしてもよい。例えば、制御装置が入力層L1のノードに対応する出力値を順次出力し、ユニットが入力層L1のノードとして、制御装置からの出力値をユニット出力記憶部135に順次記憶する。次に、トークンが入力されたユニットが、入力層L1のアクティブなユニットとして出力値を出力する。このようにして、各ユニットは、入力層L1と、隠れ層L2と、出力層L3とのユニットとして機能することも可能である。
【0103】
なお、上記の第1の実施形態においては、階層型ニューラルネットワークとして、入力層L1、隠れ層L2、出力層L3の3層がある場合について説明したが、本実施形態は、階層型ニューラルネットワークの階層は3層に限られるものではなく、任意の階層に適応可能である。
【0104】
<第2の実施形態>
<自己組織化マップに適応した場合のユニットの構成>
次に、本実施形態の並列演算装置を、自己組織化マップに適応した場合について説明する。自己組織化マップは、次のような処理を実行することにより、多変量からなるデータの統計的性質を学習し、 類似したデータが近接するように配列し、また、データの視覚化することを可能とするものである。
【0105】
各ユニットは、ユニットの結合重みベクトルを有している。まず、各ユニットに入力データベクトルが入力され、各ユニットは入力された入力データベクトルと結合重みベクトルの差であるノルムを算出する(手順A200)。次に、最もノルムの小さい出力ユニットを勝者ユニットとして選択する(手順A201)。次に、選択した勝者ユニットとその近傍のユニットが、より入力データベクトルに近づくように結合重みベクトルの値を予め定められた関数により変更して、学習を行う(手順A203)。この、手順A200から手順A203を繰り返す。
【0106】
本実施形態の並列演算装置を自己組織化マップに適応する場合、各ユニットに入力されるデータは、上記の手順A200と、手順A201と、手順A202とで異なるため、実施形態においては、ユニットに入力するデータに、上記の手順A200と、手順A201と、手順A202とを識別する識別情報を組とすることにより、識別する。
【0107】
図9(a)に示すように、ユニット入力バス3からの入力値は、ノルム部とデータ部とを有する。また、図9(b)に示すように、ノルム部の値が−2である場合、入力値のノルム部は「データ部の値が入力ベクトルである」ことを示す識別子であり、そのデータ部は入力ベクトルである。また、図9(c)に示すように、ノルム部の値が−1である場合、ノルム部は「近傍判定識別情報」であり、そのデータ部は、ネットワーク座標である。また、図9(d)に示すように、ノルム部の値が零または正の値である場合、ノルム部の値はノルムであり、また、データ部は、ネットワーク座標である。これらの詳細については、後述する。
【0108】
次に、図7と図8とを用いて、自己組織化マップに適応した場合の並列演算装置のユニットの構成について説明する。ここで、複数のユニットのそれぞれは、ネットワーク座標により識別される座標で予め識別されている。なお、各ユニットは、第1の実施形態と同様に、同一の構成を有しているので、ここでは1つのユニットの構成のみについて説明する。
【0109】
この図7または図8のユニットの構成において、データ入力部201はデータ入力部11に対応し、データ出力部204はデータ出力部14に対応し、トークン入力部202はトークン入力部12に対応と、トークン出力部203はトークン出力部13に対応する。また、ユニットノルム記憶部236と、入力ノルム記憶部237と、ユニットネットワーク座標記憶部234と、入力ネットワーク座標記憶部233とは、ユニット出力記憶部16に対応する。また、他の構成は、ユニット演算部15に対応する。
【0110】
ユニットネットワーク座標記憶部234には、ユニットのネットワーク座標であるユニットネットワーク座標が予め記憶されている。入力ネットワーク座標記憶部233には、入力されたネットワーク座標である入力ネットワーク座標が記憶される。重み記憶部231には、ユニットの結合重みベクトルが予め記憶されている。入力データ記憶部230には、入力された入力データベクトルが記憶される。ユニットノルム記憶部236には、ユニットのノルムが記憶される。入力ノルム記憶部237には、入力されたノルムが記憶される。
【0111】
学習速度記憶部235には、学習速度を決める係数である学習速度係数が予め記憶されている。また、学習速度記憶部235には、学習した回数を示す学習ステップ数と、前記学習速度係数とが予め関連付けて記憶されている。距離記憶部232には、ネットワーク座標の間の距離が近傍であるか否かを判定する基準である基準距離が予め記憶されている。また、距離記憶部232には、学習ステップ数と基準距離とが予め関連付けて記憶されている。
【0112】
データ入力判定部222は、データ入力部201に入力された入力値が入力データベクトルであるか否かを判定し、入力データベクトルである場合には、データ抽出部210に入力値である入力データベクトルを出力し、入力データベクトルでない場合には、ネットワーク座標抽出部211とノルム抽出部212とに入力値を出力する。
このデータ入力判定部222は、入力値のノルムの値が、入力値が入力データベクトルであることを示す値である−2であるか否かを判定することにより、データ入力部201に入力された入力値が入力データベクトルであるか否かを判定する。
【0113】
データ抽出部210は、データ入力部201に入力された入力値が入力データベクトルである場合には、入力された入力データベクトルを入力データ記憶部230に記憶させる。また、データ抽出部210は、入力された入力データベクトルを、ノルム算出部214に出力する。また、データ抽出部210は、入力データベクトルが入力される毎に、カウンタ213がカウントアップ信号を出力する。
【0114】
カウンタ213は、ユニットに入力データベクトルが入力される毎に、ユニットに入力データベクトルが入力された回数であるステップ数をカウントアップする。また、カウンタ213は、データ抽出部210からカウントアップ信号を入力される毎に、ステップ数をカウントアップする。
【0115】
ノルム算出部214は、データ入力部201に入力された入力値が入力データベクトルである場合には、入力された入力データベクトルと、重み記憶部231から読み出した結合重みベクトルとのノルムを算出し、算出したノルムをユニットノルムとしてユニットノルム記憶部236に記憶させる。
【0116】
入力ノルム部250は、データ入力部201に入力された入力値が、ネットワーク座標とノルムとの組みである場合には、入力されたネットワーク座標を入力ネットワーク座標として入力ネットワーク座標記憶部233に記憶させると共に、入力されたノルムを入力ノルムとして入力ノルム記憶部237に記憶させる。この入力ノルム部250は、ネットワーク座標抽出部211と、ノルム抽出部212と、入力ノルム判定部218とから構成されている。
【0117】
ネットワーク座標抽出部211は、入力された入力値から、ネットワーク座標を抽出し、抽出したネットワーク座標を入力ネットワーク座標として入力ネットワーク座標記憶部233に記憶させる。ノルム抽出部212は、入力された入力値から、ノルムを抽出し、抽出したノルムを入力ノルム判定部218に出力する。
【0118】
入力ノルム判定部218は、ノルム抽出部212から入力されたノルムの値により、入力されたノルムが、ノルムであるのか、または、ネットワーク座標と近傍判定を実行することを示す識別情報である近傍判定識別情報であるのかを判定し、ノルムである場合には、入力されたノルムを入力ノルムとして入力ノルム記憶部237に記憶させる。逆に、入力されたノルムが近傍判定識別情報である場合には、入力ノルム判定部218は、近傍判定部215に、近傍判定識別情報を出力する。
例えば、この入力ノルム判定部218は、ノルム抽出部212から入力されたノルムの値が−1である場合には、入力されたノルムが近傍判定識別情報であるとして判定し、ノルム抽出部212から入力されたノルムの値が−1でない場合には、ノルムとして判定する。
【0119】
ノルム比較部217は、トークン入力部202を介してトークンが入力されたことに応じて、ユニットノルム記憶部236から読み出したユニットノルムと、入力ノルム記憶部237から読み出した入力ノルムとを比較する。
【0120】
選択出力部251は、ノルム比較部217の比較した結果が、読み出したユニットノルムが入力ノルムより小さい場合には、ユニットノルム記憶部236から読み出したユニットノルムとユニットネットワーク座標記憶部234から読み出したユニットネットワーク座標とを組みとして、データ出力部204を介して出力し、読み出したユニットノルムが入力ノルム以上である場合には、入力ノルム記憶部237から読み出した入力ノルムと入力ネットワーク座標記憶部233から読み出した入力ネットワーク座標とを組みとして、データ出力部204を介して出力する。この選択出力部251は、ネットワーク座標選択部219と、ノルム選択部220と、データ合成出力部221とから構成されている。
【0121】
ノルム選択部220は、ノルム比較部217の比較した結果が、読み出したユニットノルムが入力ノルムより小さい場合には、ユニットノルム記憶部236からユニットノルムを読み出し、読み出したユニットノルムをデータ合成出力部221に出力する。また、ネットワーク座標選択部219は、ノルム比較部217の比較した結果が、読み出したユニットノルムが入力ノルム以上である場合には入力ノルム記憶部237から入力ノルムを読み出し、読み出した入力ノルムをデータ合成出力部221に出力する。
【0122】
ネットワーク座標選択部219は、ノルム比較部217の比較した結果が、読み出したユニットノルムが入力ノルムより小さい場合には、ユニットネットワーク座標記憶部234からユニットネットワーク座標を読み出し、読み出したユニットネットワーク座標をデータ合成出力部221に出力する。また、ネットワーク座標選択部219は、ノルム比較部217の比較した結果が、読み出したユニットノルムが入力ノルム以上である場合には、入力ネットワーク座標記憶部233から入力ネットワーク座標を読み出し、読み出した入力ネットワーク座標をデータ合成出力部221に出力する。
【0123】
データ合成出力部221は、ノルム選択部220から入力されたユニットノルムまたは入力ノルムであるノルムと、ネットワーク座標選択部219から入力されたユニットネットワーク座標または入力ネットワーク座標であるネットワーク座標とを組みとして合成し、組として合成したノルムとネットワーク座標とを、データ出力部204を介して出力する。
【0124】
近傍判定部215は、データ入力部201に入力された入力値が、ネットワーク座標と近傍判定を実行することを示す識別情報である近傍判定識別情報との組みである場合には、ユニットネットワーク座標記憶部234から読み出したユニットネットワーク座標が、入力されたネットワーク座標である入力ネットワーク座標の近傍にあるか否かを判定する。
【0125】
また、近傍判定部215は、近傍判定識別情報が入力ノルム部250または入力ノルム判定部218から入力されたことに応じて、ユニットネットワーク座標記憶部234から読み出したユニットネットワーク座標が、入力されたネットワーク座標である入力ネットワーク座標の近傍にあるか否かを判定する。
【0126】
また、近傍判定部215は、データ入力部201に入力された入力値が、ネットワーク座標と近傍判定を実行することを示す識別情報である近傍判定識別情報との組みである場合には、距離記憶部232から基準距離を読み出し、ユニットネットワーク座標記憶部234から読み出したユニットネットワーク座標と入力されたネットワーク座標である入力ネットワーク座標との間の距離が、読み出した基準距離以下であるか否かを判定することにより、ユニットネットワーク座標が入力ネットワーク座標の近傍にあるか否かを判定する。
【0127】
また、近傍判定部215は、カウンタ213から読み出したステップ数に一致する学習ステップ数に関連付けられている基準距離を距離記憶部232から読み出し、該読み出した基準距離に基づいて前記ユニットネットワーク座標が前記入力ネットワーク座標の近傍にあるか否かを判定する。
【0128】
重み更新部216は、近傍判定部215の判定した結果が近傍である場合には、重み記憶部231に記憶されている結合重みベクトルの値を更新する。また、重み更新部216は、入力データ記憶部230から読み出した入力データベクトルと重み記憶部231から読み出した結合重みベクトルとの差を算出し、算出した差に、学習速度記憶部235から読み出した学習速度係数を乗じた値を、重み記憶部231に記憶されている結合重みベクトルに加算することにより、重み記憶部231に記憶されている結合重みベクトルの値を更新する。
【0129】
また、重み更新部216は、カウンタ213から読み出したステップ数と一致する学習ステップ数に関連付けられている学習速度係数を学習速度記憶部235から読み出し、読み出した学習速度係数に基づいて重み記憶部231に記憶されている結合重みベクトルの値を更新する。
【0130】
トークン出力フラグ記憶部238には、トークン出力部203がトークンを出力済みであるか否かを示すトークン出力フラグが記憶されている。トークン出力フラグ判定部223は、トークン入力部202にトークンが入力されたことに応じて、トークン出力フラグ記憶部238からトークン出力フラグを読み出し、読み出したトークン出力フラグがトークンを未出力である場合に、入力されたトークンをノルム比較部217に出力すると共に、入力されたトークンを、トークン出力部203を介して出力する。
【0131】
トークン出力部203は、トークン入力部202にトークンが入力されたことに応じて、トークンを出力する。また、トークン出力部203は、データ合成出力部221または選択出力部251が、ユニットノルム記憶部236から読み出したユニットノルムとユニットネットワーク座標記憶部234から読み出したユニットネットワーク座標とを組みとしてデータ出力部204を介して出力したことに応じて、または、入力ノルム記憶部237から読み出した入力ノルムと入力ネットワーク座標記憶部233から読み出した入力ネットワーク座標とを組みとしてデータ出力部204を介して出力したことに応じて、トークンを出力する。また、トークン出力部203は、トークンを出力した後に、トークン出力フラグ記憶部238に記憶されているトークン出力フラグを出力済みに更新する。
【0132】
<自己組織化マップに適応した場合のユニットの動作>
次に、図10と図11とを用いて、自己組織化マップに適応した場合の並列演算装置のユニットの動作について説明する。最初に、図10を用いて、ユニットのデータ入力部に入力値が入力された場合の動作について説明する。
【0133】
まず、データ入力部201に入力値であるデータが入力される(ステップS400)。次に、データ入力判定部222は、入力値のノルムの値が、入力値が入力データベクトルであることを示す値である−2であるか否かを判定することにより、データ入力部201に入力された入力値が入力データベクトルであるか否かを判定する(ステップS401)。
【0134】
次に、ステップS401の判定結果が、ノルムの値が−2であり、入力データベクトルである場合には、データ抽出部210が、入力された入力データベクトルを入力データ記憶部230に記憶させる(ステップS402)と共に、カウントアップ信号をカウンタ213に出力する。次に、カウンタ213は、データ抽出部210からカウントアップ信号を入力されたことに応じて、ステップ数をカウントアップする(ステップS403)。
【0135】
次に、ノルム算出部214は、データ抽出部210を介して入力された入力データベクトルと、重み記憶部231から読み出した結合重みベクトルとのノルムを算出し、算出したノルムをユニットノルムとしてユニットノルム記憶部236に記憶させ(ステップS404)、処理を終了する。
【0136】
一方、ステップS401の判定結果が、ノルムの値が−2ではなく、入力データベクトルではない場合には、ネットワーク座標抽出部211が、入力された入力値から、ネットワーク座標を抽出し、抽出したネットワーク座標を入力ネットワーク座標として入力ネットワーク座標記憶部233に記憶させる(ステップS405)と共に、ノルム抽出部212は、入力された入力値から、ノルムを抽出し、抽出したノルムを入力ノルム判定部218に出力する。
【0137】
次に、入力ノルム判定部218は、ノルム抽出部212から入力されたノルムの値が−1であるか否かを判定し(ステップS406)、判定結果が、ノルム抽出部212から入力されたノルムの値が−1でない場合には、ノルムとして判定し、入力されたノルムを入力ノルムとして入力ノルム記憶部237に記憶させ(ステップS407)、処理を終了する。
【0138】
一方、ステップS406の判定結果が、ノルム抽出部212から入力されたノルムの値が−1である場合には、入力ノルム判定部218は、入力されたノルムが近傍判定識別情報であるとして判定し、近傍判定部215に、近傍判定識別情報を出力する。次に、近傍判定部215は、近傍判定識別情報が入力ノルム判定部218から入力されたことに応じて、ユニットネットワーク座標記憶部234から読み出したユニットネットワーク座標が、入力されたネットワーク座標である入力ネットワーク座標の近傍にあるか否かを判定する(ステップS408)。
【0139】
ステップS408の判定結果が、近傍である場合には、重み更新部216が、重み記憶部231に記憶されている結合重みベクトルの値を更新して(ステップS409)、処理を終了する。一方、ステップS408の判定結果が、近傍でない場合には、処理を終了する。
【0140】
次に、図11を用いて、ユニットのトークン入力部にトークンが入力された場合の動作について説明する。まず、トークン入力部202に、トークンが入力される(ステップS500)。次に、トークン出力フラグ判定部223が、トークン入力部202にトークンが入力されたことに応じて、トークン出力フラグ記憶部238からトークン出力フラグを読み出し、読み出したトークン出力フラグがトークンを未出力であるか否かを判定し(ステップS501)、読み出したトークン出力フラグがトークンを未出力である場合には、入力されたトークンをノルム比較部217に出力すると共に、入力されたトークンを、トークン出力部203を介して出力する。
【0141】
次に、ノルム比較部217は、トークン入力部202を介してトークンが入力されたことに応じて、ユニットノルム記憶部236から読み出したユニットノルムと、入力ノルム記憶部237から読み出した入力ノルムとを比較する(ステップS502)。
【0142】
ノルム比較部217の比較した結果が、読み出したユニットノルムが入力ノルムより小さい場合には、ノルム選択部220が、ユニットノルム記憶部236からユニットノルムを読み出し、読み出したユニットノルムをデータ合成出力部221に出力する(ステップS503)と共に、ネットワーク座標選択部219が、ユニットネットワーク座標記憶部234からユニットネットワーク座標を読み出し、読み出したユニットネットワーク座標をデータ合成出力部221に出力する(ステップS504)。
【0143】
次に、データ合成出力部221が、ノルム選択部220から入力されたユニットノルムと、ネットワーク座標選択部219から入力されたユニットネットワーク座標とを組みとして合成し、組として合成したユニットノルムとユニットネットワーク座標とを、データ出力部204を介して出力する(ステップS505)。
【0144】
一方、ステップS502でノルム比較部217が比較した結果が、読み出したユニットノルムが入力ノルム以上である場合には、ノルム選択部220が、入力ノルム記憶部237から入力ノルムを読み出し、読み出した入力ノルムをデータ合成出力部221に出力する(ステップS508)と共に、ネットワーク座標選択部219が、入力ネットワーク座標記憶部233から入力ネットワーク座標を読み出し、読み出した入力ネットワーク座標をデータ合成出力部221に出力する(ステップS509)。
【0145】
次に、データ合成出力部221は、ノルム選択部220から入力された入力ノルムと、ネットワーク座標選択部219から入力された入力ネットワーク座標とを組みとして合成し、組として合成した入力ノルムと入力ネットワーク座標とを、データ出力部204を介して出力する(ステップS510)。
【0146】
次に、トークン出力部203が、ステップS505にて、データ合成出力部221が、ユニットノルム記憶部236から読み出したユニットノルムとユニットネットワーク座標記憶部234から読み出したユニットネットワーク座標とを組みとしてデータ出力部204を介して出力したことに応じて、または、ステップS510にて、入力ノルム記憶部237から読み出した入力ノルムと入力ネットワーク座標記憶部233から読み出した入力ネットワーク座標とを組みとしてデータ出力部204を介して出力したことに応じて、トークンを出力する(ステップS506)。
【0147】
次に、トークン出力部203は、トークンを出力した後に、トークン出力フラグ記憶部238に記憶されているトークン出力フラグを出力済みに更新し(ステップS507)、処理を終了する。
【0148】
<自己組織化マップに適応した場合の並列演算装置全体の動作>
次に、自己組織化マップに適応した場合の並列演算装置全体の動作について説明する。まず、制御装置は、入力ベクトルと、値を−2としたノルムとを組みとした入力値を、全てのユニットに、ユニット入力バス3を介して、入力する(手順A300)。
【0149】
次に、入力ベクトルを入力された各ユニットのノルム算出部214は、入力された入力ベクトルと、ユニットが有する結合重みベクトルとのノルムを算出し、算出したノルムを、ユニットノルム記憶部236に記憶させる(手順A301)。
【0150】
次に、制御装置は、ユニットU1に、トークンを入力する(手順A302)。次に、ユニットU1のノルム比較部217は、ユニットU1のトークン入力部202を介してトークンが入力されたことに応じて、ユニットノルム記憶部236から読み出したユニットノルムと、入力ノルム記憶部237から読み出した入力ノルムとを比較する(手順A303)。
【0151】
ここで、ユニットU1の入力ノルム記憶部237には、ユニットU1が手順A301で算出したノルムに比較して、十分に大きな値のノルムが予め記憶されているものとして説明する。
【0152】
ここでは、ユニットノルム記憶部236から読み出したユニットノルムの方が、入力ノルム記憶部237から読み出した入力ノルムより小さいため、ユニットU1の選択出力部251は、ユニットノルム記憶部236から読み出したユニットノルムとユニットネットワーク座標記憶部234から読み出したユニットネットワーク座標とを組みとして、データ出力部204を介して出力する(手順A304)。
【0153】
次に、ユニットU1のデータ出力部204が出力したノルムとネットワーク座標とが組として、ユニット出力バス2と増幅器4とユニット入力バス3とを介して、各ユニットのデータ入力部201に入力される(手順A305)。
【0154】
次に、各ユニットの入力ノルム部250は、データ入力部201に入力された入力値のノルムの値が−1でないため、入力されたネットワーク座標を入力ネットワーク座標として入力ネットワーク座標記憶部233に記憶させると共に、入力されたノルムを入力ノルムとして入力ノルム記憶部237に記憶させる(手順A306)。ここで、入力ネットワーク座標記憶部233に記憶されるネットワーク座標と、入力ノルム記憶部237に記憶されるノルムは、ユニットU1の、ネットワーク座標とノルムである。
【0155】
次に、ユニットU1のトークン出力部203は、ユニットU1のデータ合成出力部221または選択出力部251が、ユニットノルム記憶部236から読み出したユニットノルムとユニットネットワーク座標記憶部234から読み出したユニットネットワーク座標とを組みとしてデータ出力部204を介して出力したことに応じて、トークンを、デイジーチェーン制御バス1を介してユニットU2に出力する(手順A307)。
【0156】
次に、手順A303のユニットU1と同様に、ユニットU2のノルム比較部217は、ユニットU2のトークン入力部202を介してユニットU1からのトークンが入力されたことに応じて、ユニットノルム記憶部236から読み出したユニットノルムと、入力ノルム記憶部237から読み出した入力ノルムとを比較する(手順A308)。
【0157】
ここで、入力ノルム記憶部237に記憶される入力ノルムは、ユニットU1のノルムであり、また、ユニットノルム記憶部236から読み出したユニットノルムは、ユニットU2のノルムであるため、このユニットU2のノルム比較部217は、ユニットU2のノルムと、ユニットU1のノルムとを比較することになる。以降、ユニットU2のノルム比較部217の比較結果に基づいて、手順A304から手順A306の処理が、同様に実行される(手順A309)。
【0158】
従って、トークンがユニットU2に入力されることにより、ユニットU1とユニットU2とのノルムが比較され、ノルムが小さい方のユニットが勝者ユニットとして選択され、勝者ユニットのノルムとユニットネットワーク座標とが、全てのユニットの入力ノルム記憶部237と入力ネットワーク座標記憶部233とに記憶される(手順A310)。
【0159】
次に、手順A307と同様に、ユニットU2からユニットU3にトークンが送信されることにより、次に、ユニットU3が、手順A303から手順A307とを実行することにより、ユニットU1とユニットU2との勝者ユニットのノルムと、ユニットU3のノルムとが比較され、ユニットU1からユニットU3までのユニットの中からの勝者ユニットが選択される(手順A311)。
【0160】
以降、トークンがデイジーチェーン順序でユニットに渡されていく毎に、トークンが入力されたユニットの中での勝者ユニットが選択される(手順A312)。その後、デイジーチェーン順序で最後のユニットであるユニットU10にトークンが入力されると、ユニットU10のデータ出力部204が、ユニットU1からユニットU10の中の勝者ユニットのノルムとネットワーク座標とを出力する(手順A313)。
【0161】
制御装置は、ユニットU10のデータ出力部204が出力するノルムとネットワーク座標とを、勝者ユニットのノルムとネットワーク座標として受信する(手順A314)。これにより、制御装置は、入力ベクトルに対しての、勝者ユニットのノルムとネットワーク座標とを、受信することが出来る。
【0162】
次に、制御装置は、ユニットU10のデータ出力部204から受信したネットワーク座標と、値を−1としたノルムとを組みとした入力値を、全てのユニットに、ユニット入力バス3を介して、入力する(手順A315)。
【0163】
次に、ネットワーク座標と値を−1としたノルムとを組みとした入力値を入力された各ユニットは、各ユニットのネットワーク座標抽出部211が、入力された入力値から、ネットワーク座標を抽出し、抽出したネットワーク座標を入力ネットワーク座標として入力ネットワーク座標記憶部233に記憶させる(手順A316)と共に、各ユニットの入力ノルム判定部218が、ノルム抽出部212から入力されたノルムの値が−1であるため、入力されたノルムが近傍判定識別情報であるとして判定し、近傍判定部215に、近傍判定識別情報を出力する(手順A317)。
【0164】
次に、各ユニットの近傍判定部215が、近傍判定識別情報が入力ノルム部250または入力ノルム判定部218から入力されたことに応じて、ユニットネットワーク座標記憶部234から読み出したユニットネットワーク座標が、入力ネットワーク座標記憶部233から読み出した入力ネットワーク座標の近傍にあるか否かを判定する(手順A318)。
【0165】
次に、各ユニットの重み更新部216は、そのユニットの近傍判定部215の判定した結果が近傍である場合には、そのユニットの重み記憶部231に記憶されている結合重みベクトルの値を更新する(手順A319)。これにより、勝者ユニットのネットワーク座標の近傍であるユニットの結合重みベクトルが、更新され、学習が実行される。
【0166】
以上に説明した自己組織化マップに適応した場合の並列演算装置においては、ユニット入力バス3に全てのユニットが接続されているため、制御装置が入力ベクトルをユニット入力バス3に1度出力するだけで、全てのユニットに入力ベクトルを入力することができる。また、各ユニットが、入力された入力ベクトルに対して、並列にノルムを算出することができるため、ユニット全体で、短時間でノルムを算出することができる。
【0167】
また、ユニット入力バス3に全てのユニットが接続されているため、制御装置が勝者ユニットのネットワーク座標をユニット入力バス3に1度出力するだけで、全てのユニットに勝者ユニットのネットワーク座標を入力することができる。また、各ユニットが、入力された勝者ユニットのネットワーク座標の近傍にあるか否かを並列に判定し、学習するため、ユニット全体で、短時間で学習することができる。
【0168】
また、デイジーチェーン制御バス1を介してトークンをユニット間で渡していくことにより、デイジーチェーン順序で順に勝者ユニットを決定することができる。つまり、勝者ユニットの決定が、デイジーチェーン制御バス1という、簡易な配線で可能となる。
【0169】
<冗長性を持たせた並列演算装置>
次に、図12を用いて、デイジーチェーン制御バス1に冗長性をもたせた場合の並列演算装置の構成を説明する。
各ユニットは、予め定められた順序であるデイジーチェーン順序において、1つ飛ばしの順序である第1の冗長順序で、複数のユニットのうちの半数のユニットが、第1の冗長デイジーチェーン制御バス6によりデイジーチェーンされている。例えば、ユニットU1とユニットU3とユニットU5とユニットU7とユニットU9とが、第1の冗長デイジーチェーン制御バス6により、デイジーチェーンされている。
【0170】
また、予め定められた順序であるデイジーチェーン順序において、1つ飛ばしの順序で、上記の第1の冗長デイジーチェーン制御バス6によりデイジーチェーンされていない複数のうちの残りの半数のユニットが、第2の冗長デイジーチェーン制御バス7によりデイジーチェーンされている。例えば、ユニットU2とユニットU4とユニットU6とユニットU8とユニットU10とが、第2の冗長デイジーチェーン制御バス7により、デイジーチェーンされている。
【0171】
次に、図13を用いて、第1の冗長デイジーチェーン制御バス6によりデイジーチェーンされているユニットの構成について説明する。つまり、例えば、ユニットU1とユニットU3とユニットU5とユニットU7とユニットU9の構成について説明する。なお、冗長性について変更される構成のみについて説明するため、図2のユニットの構成において、変更される構成のみについて説明する。
【0172】
図13において、図13(a)と(c)とには、変更される前の図2で示されたユニットの構成が示してある。並列演算装置が冗長性を有するようにすることにより、図13(a)のユニットの構成が、図13(b)の構成に変更される。また、図13(c)のユニットの構成が、図13(d)のユニットの構成に変更される。
【0173】
図13(b)に示すようにユニットは、トークン出力部A13_1と、トークン出力部B13_2と、トークン出力部選択部17と、トークン選択情報記憶部18とを有する。ここで、トークン出力部A13_1は、図2のトークン出力部13に対応する。
【0174】
トークン出力部B13_2(冗長トークン出力部)は、トークン入力部12にトークンが入力されたことに応じて、トークンを冗長順序で1つ後のユニットへ第1の冗長デイジーチェーン制御バス6を介して出力する。トークン選択情報記憶部18には、トークン出力部A13_1とトークン出力部B13_2とのうち、いずれを選択するかを示すトークン出力選択情報が記憶されている。
【0175】
トークン出力部選択部17は、トークン入力部12にトークンが入力されたことに応じて、トークン選択情報記憶部18から読み出したトークン出力選択情報に基づいて、トークン出力部A13_1とトークン出力部B13_2とのうちいずれか一方を選択し、選択したトークン出力部A13_1またはトークン出力部B13_2を介してトークンを出力する。
【0176】
また、図13(d)に示すように、ユニットは、トークン入力部A12_1と、トークン入力部B12_2(冗長トークン入力部)とを有する。ここで、トークン入力部A12_1は、図2のトークン入力部12に対応する。
【0177】
トークン入力部B12_2は、第1の冗長デイジーチェーン制御バス6を介してデイジーチェーンされている冗長順序が1つ前のユニットからのトークンを入力する。
また、トークン出力部13は、トークン入力部A12_1またはトークン入力部B12_2にトークンが入力されたことに応じて、トークンを出力する。
【0178】
また、第1の冗長デイジーチェーン制御バス6によりデイジーチェーンされているユニットと同様に、第2の冗長デイジーチェーン制御バス7によりデイジーチェーンされているユニットも、第2の冗長デイジーチェーン制御バス7を第1の冗長デイジーチェーン制御バス6として、トークン入力部B12_2(冗長トークン出力部)とトークン選択情報記憶部18とトークン出力部選択部17とトークン入力部B12_2(冗長トークン入力部)を有している。
【0179】
なお、ここでは、トークン選択情報記憶部18には、トークン出力部A13_1とトークン出力部B13_2とのうち、いずれを選択するかを示すトークン出力選択情報が記憶されているもとして説明したが、このトークン出力選択情報は、例えば、デイジーチェーン順序で次のユニットに欠陥があるか否かを示す情報であってもよい。
【0180】
トークン出力選択情報が、デイジーチェーン順序で次のユニットに欠陥があるか否かを示す情報である場合、トークン出力部選択部17は、トークン選択情報記憶部18から読み出したトークン出力選択情報に基づいて、デイジーチェーン順序で次のユニットに欠陥がない場合には、トークン出力部A13_1を選択してトークンを出力し、逆に欠陥がある場合には、トークン出力部B13_2を選択してトークンを出力する。
【0181】
<欠陥チェックの方法>
次に、欠陥チェックの方法について説明する。ここでは、並列演算装置が、階層型ニューラルネットワークの場合について説明する。まず、ニューラルネットワークの並列演算装置が、結合係数がすべて同じで、中間層無しの入力層と出力層との2層である階層型ニューラルネットワークとして演算を実行し、制御装置が、演算結果の出力値を得る。制御装置は、出力値を判定し、正常な場合は処理を修了する。制御装置は、出力値を判定し、異常があることを検出した場合には、異常ユニットの前段ユニットのトークン選択情報記憶部18に対し、欠陥情報を書き込む。
【0182】
次に、制御装置の、正常な場合と異常な場合の、判定方法とその処理について、詳細に説明する。まず、制御装置は、全てのユニットから、すべて同じ出力を得る場合に、正常として判定する。次に、制御装置は、ユニットからの出力が途中で止まる、または、ユニットからの出力値が予想された値と異なる部分がある場合に、異常として判定する。この場合、制御装置は、異常として検出したユニットである異常ユニットの、デイジーチェーン順序で1つ前となる前段ユニットのトークン選択情報記憶部18に、欠陥情報を書き込み、もう一度欠陥チェックを実行し、判定結果が正常となるまで欠陥チェックを実行する。このとき、欠陥が原因で電気的に切り離す必要が生じる場合に備え、ユニットの入出力部にハイインピーダンススイッチを設け、回路を電気的に切り離す機構を備えても良い。
【0183】
以上のように、並列演算装置が、第1の冗長デイジーチェーン制御バス6と、第2の冗長デイジーチェーン制御バス7とにより冗長性を有するようにすることにより、デイジーチェーン制御バス1またはいずれかのユニットに欠陥が生じた場合においても、並列演算装置は問題なく動作することが可能となる。
【0184】
なお、ここでは、冗長配線が、デイジーチェーン順序において1つ飛ばしの第1の冗長デイジーチェーン制御バス6と第2の冗長デイジーチェーン制御バス7との場合について説明したが、更に、デイジーチェーン順序において2つ飛ばしの冗長デイジーチェーン制御バスなどを追加することも可能である。
【0185】
<第2の基本構成>
次に、この発明の一実施形態による並列演算装置の第2の基本構成を、図14の概略ブロック図を用いて説明する。図14の概略ブロック図において、図1の第1の基本構成と同一の構成には同一の符号を付けて、その説明を省略する。ここでは、ユニットAU1からAU10の、ユニットの個数が10である場合について説明する。このユニットの詳細については、後述する。
【0186】
並列演算装置は、第2の基本構成においては、予め定められた識別番号である固有ユニット番号で識別される複数のユニット(AU1〜AU10)と、この複数のユニットの中のいずれか1つのユニットが出力する出力値がユニット出力バス2を介して入力されたことに応じて、該入力された入力値と複数のユニットの中から選択したいずれか1つのユニットを識別する識別番号である選択ユニット番号とを含む制御データを、複数のユニットのそれぞれにユニット入力バス3を介して出力する分配制御部8と、を有する。なお、この制御データには、入力値と、選択ユニット番号と、ユニットの演算方法または制御方法を選択するための制御コードとを含む。
【0187】
次に、図15を用いて、各ユニットの構成について説明する。なお、ユニットAU1からAU10は同一の構成を有するため、ここでは、ユニットAU1の構成のみについて説明する。ユニットAU1は、データ入力部11Aと、データ出力部14Aと、ユニット演算部15Aと、ユニット出力記憶部16Aと、制御コード抽出部17Aと、入力値抽出部18Aと、ユニット番号抽出部19Aと、ユニット番号一致判定部20Aと、固有ユニット番号記憶部21Aと、を有する。
【0188】
固有ユニット番号記憶部21Aには、それぞれのユニットを識別するための識別番号である固有ユニット番号が予め記憶されている。ユニット出力記憶部16Aには、ユニット演算部15Aが演算した結果である演算結果が記憶される。データ入力部11Aは、ユニット入力バス3を介して分配制御部8からの制御データを入力する。入力値抽出部18Aは、データ入力部11Aに入力された制御データから入力値を抽出する。選択ユニット番号抽出部19Aは、データ入力部11Aに入力された制御データから選択ユニット番号を抽出する。制御コード抽出部17Aは、データ入力部11Aに入力された制御データから制御コードを抽出する。
【0189】
ユニット番号一致判定部20Aは、データ入力部11Aに入力された制御データに含まれる出力ユニット番号と、固有ユニット番号とが一致するか否かを判定する。このユニット番号一致判定部20Aは、選択ユニット番号抽出部19Aが抽出した選択ユニット番号と、固有ユニット番号記憶部21Aから読み出した固有ユニット番号とが一致するか否かを判定する。
【0190】
ユニット演算部15Aは、データ入力部11Aに入力された制御データに含まれる入力値に基づいて、ユニット毎に予め定められた演算方法により演算する。このユニット演算部15Aは、入力値抽出部18Aが抽出した入力値に基づいて、ユニット毎に予め定められた演算方法により演算する。また、このユニット演算部15Aは、予め定められた演算方法から、制御コード抽出部17Aが抽出した制御コードに基づいて、演算方法を選択し、該選択した演算方法により演算する。また、ユニット演算部15Aは、演算した結果である演算結果をユニット出力記憶部16Aに記憶させる。
【0191】
データ出力部14Aは、ユニット番号一致判定部20Aが判定した結果が一致である場合には、ユニット演算部15Aが演算した結果である演算結果を出力値として、分配制御部8にユニット出力バス2を介して出力する。また、データ出力部14Aは、ユニット番号一致判定部20Aが判定した結果が一致である場合には、演算結果をユニット出力記憶部16Aから読み出し、該読み出した演算結果を出力値として分配制御部8にユニット出力バス2を介して出力する。
【0192】
次に、図16を用いて、分配制御部8の構成を説明する。分配制御部8は、ユニット出力値入力部31と、制御データ生成部32と、制御データ出力部33と、処理手順記憶部34と、を有する。ユニット出力値入力部31は、ユニット出力バス2を介して複数のユニットの中のいずれか1つのユニットが出力する出力値を入力する。制御データ生成部32は、ユニット出力値入力部31に入力された出力値に基づいて、予め定められた処理手順により制御データを生成する。制御データ出力部33は、制御データ生成部32が生成した制御データを複数のユニットのそれぞれにユニット入力バス3を介して出力する。なお、この制御データ出力部33は、出力する制御データを、電気的に増幅する増幅器を、その内部に有していてもよい。
【0193】
また、処理手順記憶部34には、演算を実行する処理手順が予め記憶されている。制御データ生成部32は、処理手順を処理手順記憶部34から順に読み出すことにより、また、必要であれば読み出した処理手順にユニット出力値入力部31に入力された出力値を挿入することにより、予め定められた処理手順により制御データを生成する。
【0194】
ここで、分配制御部8の制御データ生成部32は、ユニット出力値入力部31に出力値が入力されたことに応じて、または、制御データ出力部33が制御データを出力してから予め定められた一定時間の経過後に、制御データを生成する。そのため、分配制御部8、より詳しくは、分配制御部8の制御データ出力部33は、ユニット出力値入力部31に出力値が入力されたことに応じて、または、制御データ出力部33が制御データを出力してから予め定められた一定時間の経過後に、制御データを出力する。
【0195】
また、分配制御部8は、入力端子P2を介して外部から初期値などのデータである入力値を入力され、入力された入力値を各ユニットにユニット入力バス3を介して設定することにより、各ユニットを用いた並列演算を実行する。また、分配制御部8は、各ユニットが演算した演算結果を、各ユニットからユニット出力バス2を介して入力され、該入力された演算結果を外部に出力端子P1を介して出力する。なお、ここでいう外部とは、並列演算装置の外部にある制御装置やコンピュータである。
【0196】
図14から図16を用いて説明した並列演算装置の第2の基本構成においては、分配制御部8が制御データにより各ユニットを制御するために、図1に示す並列演算装置の第1の基本構成と比較して、各ユニットでの処理が簡易となり、また、各ユニット間をデイジーチェーン順序で接続していたデイジーチェーン制御バス1が不要となる効果を奏する。
【0197】
<第3の実施形態>
<階層型ニューラルネットワークに適応した場合のユニットの構成>
次に、第2の基本構成による並列演算装置を、階層型ニューラルネットワークに適応した場合の構成について説明する。階層型ニューラルネットワークにおいても並列演算装置全体の構成は、図14の並列演算装置の構成と同一であり、ユニットの構成のみが異なる。従って、図17を用いて、階層型ニューラルネットワークに適応した場合のユニットの構成のみについて説明する。
【0198】
ユニットは、データ入力部101Aと、データ出力部104Aと、重み記憶部130と、積和計算一次値記憶部131と、層情報記憶部133と、関数記憶部132と、ユニット出力記憶部135Aと、前段ユニット出力記憶部138Bと、前段ユニット番号記憶部139Bと、選択ユニット番号記憶部141Bと、固有ユニット番号記憶部140Bと、を有する。また、ユニットは、積和計算一次値算出部111Aと、ユニット出力算出部112Aと、比較部115Bと、ユニット制御部116Bと、ファンクション番号抽出部150Bと、ファンクション番号記憶部151Bと、オペランド抽出部152Bと、汎用バッファー記憶部153Bと、を有する。
【0199】
ここで、図17のデータ入力部101A、データ出力部104A、ユニット出力記憶部135Aは、図15のデータ入力部11A、データ出力部14A、ユニット出力記憶部16Aに、それぞれ対応する。また、図17の固有ユニット番号記憶部140B、比較部115Aが、図15の固有ユニット番号記憶部21A、ユニット番号一致判定部20Aに、それぞれ対応する。これらの図17と図15とにおいて対応する構成について、共通の機能については、その説明を省略する。
【0200】
また、図17のファンクション番号抽出部150Bとファンクション番号記憶部151Bとが図15の制御コード抽出部17Aに対応する。また、図17のオペランド抽出部152Bと汎用バッファー記憶部153Bとが、図15の入力値抽出部18Aまたは選択ユニット番号抽出部19Aに対応する。
【0201】
また、図17の重み記憶部130と、層情報記憶部133と、積和計算一次値記憶部131と、関数記憶部132と、積和計算一次値算出部111Aと、ユニット出力算出部112Aと、前段ユニット番号記憶部139Bとが、図15のユニット演算部15Aに対応する。
【0202】
また、図17の構成において、図3の第1の基本構成における階層型ニューラルネットワークに適応した場合の並列演算装置のユニットの構成と同様の構成には、同一の符号、または、同一の符号に符号Aを付した符号を付け、その説明を省略する。
【0203】
<第3の実施形態におけるユニットの各構成の説明>
ファンクション番号記憶部151Bには、制御データに含まれる制御コード(ファンクション番号)が記憶される。汎用バッファー記憶部153Bには、制御データに含まれる制御コードA(ファンクション番号)以外の情報、例えば、後述する選択ユニット番号B、出力値C、配信層情報D、または、配信ユニット識別情報Eが記憶される。以降において、制御データに含まれる制御コードA(ファンクション番号)以外の情報、例えば、後述する選択ユニット番号B、出力値C、配信層情報D、または、配信ユニット識別情報Eを汎用データとして説明する。この制御データの詳細については、図18を用いて後述する。
【0204】
ファンクション番号抽出部150Bは、データ入力部101Aに入力された制御データに含まれる制御コードを抽出し、抽出した制御コードをファンクション番号記憶部151Bに記憶させる。オペランド抽出部152Bは、データ入力部101Aに入力された制御データに含まれる汎用データを抽出し、抽出した汎用データを汎用バッファー記憶部153Bに記憶させる。
【0205】
ユニット制御部116Bは、データ入力部101Aに入力された制御データと比較部115Bが判定した結果とに基づいて、処理を実行する、または、予め定められた処理部の中から選択的に処理を実行させる。このデータ入力部101Aに入力された制御データとは、ファンクション番号記憶部151Bから読み出した制御コードと、汎用バッファー記憶部153Bから読み出した汎用データとである。
【0206】
この前記ユニット制御部116Bは、データ入力部101Aに入力された制御データに含まれる制御コードが、積和計算一次値を初期化することを示す場合には、積和計算一次値記憶部131に記憶されている積和計算一次値情報の値を0に初期化する。
【0207】
またユニット制御部116Bは、データ入力部101Aに入力された制御データに含まれる制御コードが、積和計算一次値を算出し加算格納することを示し、該制御データが出力値と該出力値を出力しているユニットのユニット識別情報である配信ユニット識別情報とを含む場合には、配信ユニット識別情報を前段ユニット出力記憶部138Bに記憶し、出力値に基づいて積和計算一次値算出部111Aを用いて処理を選択的に実行する。
【0208】
また、ユニット制御部116Bは、データ入力部101Aに入力された制御データに含まれる制御コードがユニット出力演算を実行することを示す場合には、ユニット出力算出部112Aを用いて処理を選択的に実行する。
【0209】
また、ユニット制御部116Bは、データ入力部101Aに入力された制御データに含まれる制御コードがアクティブなユニットとして出力値を出力することを示し、該制御データが選択ユニット番号を含む場合であり、かつ、比較部115B(ユニット番号一致判定部)が判定した結果が一致である場合には、データ出力部104Aの処理を用いて処理を選択的に実行し、演算結果をユニット出力記憶部135Aから読み出し、該読み出した演算結果を出力値として分配制御部8にデータ出力部104Aとユニット出力バス2とを介して出力する。
【0210】
なお、ユニット出力記憶部135Aに層情報と演算結果とが関連付けて記憶されている場合においては、ユニット制御部116Bは、データ入力部101Aに入力された制御データに含まれる制御コードがアクティブなユニットとして出力値を出力することを示し、該制御データが選択ユニット番号を含む場合であり、かつ、比較部115Bが判定した結果が一致である場合には、データ出力部104Aの処理を選択的に実行し、層情報記憶部133から読み出した層情報に該当する演算結果をユニット出力記憶部135Aから読み出し、該読み出した演算結果を出力値として分配制御部8にデータ出力部104Aとユニット出力バス2とを介して出力する。
【0211】
また、ユニット制御部116Bは、データ入力部101Aに入力された制御データが配信層情報を含む場合には、データ入力部101Aに入力された制御データに含められた配信層情報を層情報記憶部133に記憶する。
詳細には、ユニット制御部116Bは、データ入力部101Aに入力された制御データが配信層情報を含む場合には、データ入力部101Aに入力された制御データから配信層情報を抽出し、抽出した配信層情報を層情報記憶部133に記憶する。また、このユニット制御部116Bは、汎用バッファー記憶部153Bから配信層情報を読み出すことにより、データ入力部101Aに入力された制御データから配信層情報を抽出する。
【0212】
またユニット制御部116Bは、出力値を出力しているユニットのユニット識別情報である配信ユニット識別情報を、データ入力部101Aに入力された制御データが含む場合には、データ入力部101Aに入力された制御データに含められた配信ユニット識別情報を前段ユニット出力記憶部138Bに記憶する。
詳細には、ユニット制御部116Bは、出力値を出力しているユニットのユニット識別情報である配信ユニット識別情報を、データ入力部101Aに入力された制御データが含む場合には、データ入力部101Aに入力された制御データから配信ユニット識別情報を抽出し、抽出した配信ユニット識別情報をユニット番号記憶部139Bに記憶する。また、このユニット制御部116Bは、汎用バッファー記憶部153Bから配信ユニット識別情報を読み出すことにより、データ入力部101Aに入力された制御データから配信ユニット識別情報を抽出する。
【0213】
積和計算一次値算出部111Aは、ユニット制御部116Bの選択に応じて、層情報記憶部133から読み出した層情報に該当する結合荷重を重み記憶部130から読み出し、該読み出した結合荷重と、データ入力部101Aに入力された入力値とを乗算し、該乗算した値を積和計算一次値記憶部131に記憶されている積和計算一次値情報に加算して記憶させる。
【0214】
また、積和計算一次値算出部111Aは、ユニット制御部116Bの選択に応じて、前段ユニット出力記憶部138Bから読み出したユニット識別情報と層情報記憶部133から読み出した層情報とに該当する結合荷重を重み記憶部130から読み出し、該読み出した結合荷重と、データ入力部101Aに入力された入力値とを乗算し、該乗算した値を前記積和計算一次値記憶部131に記憶されている積和計算一次値情報に加算して記憶させる。
【0215】
ユニット出力算出部112Aは、ユニット制御部116Bの選択に応じて、積和計算一次値記憶部131から積和計算一次値情報を読み出し、層情報記憶部133から読み出した層情報に該当する出力関数を関数記憶部132から読み出し、該読み出した出力関数に読み出した積和計算一次値情報を代入することにより出力値を算出し、該算出した出力値をユニット出力記憶部135Aに記憶させる。また、ユニット出力算出部112Aは、この算出した出力値をユニット出力記憶部135Aに記憶させるときに、層情報記憶部133から読み出した層情報と関連付けて、この算出した出力値を前記ユニット出力記憶部135Aに記憶させる。
【0216】
<第3の実施形態における制御データのプロトコル>
次に、図18を用いて、一例としての制御データのプロトコルについて説明する。この制御データは、制御コードAと、選択ユニット番号Bと、出力値Cとを含み、更に、配信層情報Dと、配信ユニット識別情報Eと、を含む。この配信層情報Dとは、出力値Cを出力しているユニットの層情報であり、また、配信ユニット識別情報Eとは、出力値Cを出力しているユニットのユニット識別情報である。この制御コードのプロトコルは、制御コードの値により、次に示すように予め定められている。
【0217】
<選択処理0>
制御データに含まれる制御コードAの値が“0”であり、“積和計算一次値を初期化する”ことを示す制御コードである場合には、この制御データは、他の情報(汎用データ)を含んでいない。この制御コードAの値が“0”である制御データを受信した全てのユニットは、積和計算一次値算出部111Aに記憶されている積和計算一次値の値を0に初期化する。
【0218】
<選択処理1>
また、制御データに含まれる制御コードAの値が“1”であり、“積和計算一次値を算出し加算格納する”ことを示す制御コードである場合には、この制御データは、出力値Cと、配信層情報Dと、配信ユニット識別情報Eと、を含む。この制御コードAの値が1である制御データを受信した全てのユニットは、層情報lを配信層情報Dとし、ユニット識別情報iを配信ユニット識別情報Eとし、入力値の値を出力値Cとして、積和計算一次値を算出する。
【0219】
<選択処理2>
また、制御データに含まれる制御コードAの値が“2”であり、“ユニット出力演算を実行する”ことを示す制御コードである場合には、この制御データは、配信層情報Dを含む。この制御コードAの値が“2”である制御データを受信した全てのユニットは、層情報lを配信層情報Dとして、ユニット出力演算を実行し、実行した演算結果を出力値として層情報lと関連付けてユニット出力記憶部135Aに格納する。
【0220】
<選択処理3>
また、制御データに含まれる制御コードAの値が“3”であり、“アクティブなユニットとして出力値を出力する”ことを示す制御コードである場合には、制御データは、選択ユニット番号Bと配信層情報Dとを含む。この制御コードAの値が“3”である制御データを受信した全てのユニットは、受信した制御データに含まれる選択ユニット番号Bが、自身のユニットが有する固有ユニット番号Iと一致するか否かを判定し、判定した結果が一致する場合には、層情報lを配信層情報Dの値とし、この層情報lに該当するユニット出力記憶部135Aから読み出した出力値を出力する。
【0221】
この図18の制御データのプロトコルに基づいて、分配制御部9は、積和計算一次値を初期化することを示す制御コード、出力値と配信ユニット識別情報とを含み、積和計算一次値を算出し加算格納することを示す制御コード、ユニット出力演算を実行することを示す制御コード、アクティブなユニットとして出力値を出力することを示す制御コード、または、前記配信層情報を含む制御データを、階層型ニューラルネットワークの階層数と該階層のノード数とに合わせて予め定められた順序で出力する。
【0222】
<第3の実施形態におけるユニットの動作>
次に、図19を用いて、図18で説明した制御データのプロトコルを受信した場合の、ユニットの動作、特に、ユニットのユニット制御部116の動作について説明する。
まず、ユニットは、データ入力部101Aに制御データが入力されたことに応じて、処理を開始する(ステップS1901)。次に、ファンクション番号抽出部150Bが、データ入力部101Aに入力された制御データから、制御コードを抽出し、抽出した制御コードをファンクション番号記憶部151Bに記憶させる。
【0223】
また、オペランド抽出部152Bが、データ入力部101Aに入力された制御データから、オペランドである制御コード以外の情報、例えば、選択ユニット番号Bと、出力値Cと、配信層情報Dと、配信ユニット識別情報Eとを抽出し、抽出したオペランドを汎用バッファー記憶部153Bに記憶させる。
【0224】
次に、ユニット制御部116Bが、ファンクション番号抽出部150Bが制御コードを抽出したことに応じて、ファンクション番号記憶部151Bから読み出した制御コードの値に基づいて、以降に説明するステップS1902からステップS1908により、ユニットにおける処理を選択的に実行する。
【0225】
まず、ユニット制御部116Bは、読み出した制御コードAの値が“0”であるか否かを判定する(ステップS1902)。ステップS1902の判定結果が、読み出した制御コードAの値が“0”である場合には、ユニット制御部116Bは、上記に説明した選択処理0を実行し(ステップS1903)、処理を終了する。
【0226】
一方、ステップS1902の判定結果が、読み出した制御コードAの値が“0”でない場合には、ユニット制御部116Bは、読み出した制御コードAの値が“1”であるか否かを判定する(ステップS1904)。ステップS1904の判定結果が、読み出した制御コードAの値が“1”である場合には、ユニット制御部116Bは、上記に説明した選択処理1を実行し(ステップS1905)、処理を終了する。
【0227】
一方、ステップS1904の判定結果が、読み出した制御コードAの値が“1”でない場合には、ユニット制御部116Bは、読み出した制御コードAの値が“2”であるか否かを判定する(ステップS1905)。ステップS1905の判定結果が、読み出した制御コードAの値が“2”である場合には、ユニット制御部116Bは、上記に説明した選択処理2を実行し(ステップS1906)、処理を終了する。
【0228】
一方、ステップS1905の判定結果が、読み出した制御コードAの値が“2”でない場合には、つまり、読み出した制御コードAの値が“3”である場合には、比較部115Bが、選択ユニット番号記憶部141Bから読み出した選択ユニット番号と固有ユニット番号記憶部140Bから読み出した固有ユニット番号とが一致するか否かを判定する(ステップS1907)。ステップS1907の判定結果が、選択ユニット番号と固有ユニット番号とが一致する場合には、ユニット制御部116Bは、上記に説明した選択処理3を実行し(ステップS1908)、処理を終了する。一方、ステップS1907の判定結果が、選択ユニット番号と固有ユニット番号とが一致しない場合には、処理を終了する。
【0229】
<第3の実施形態における分配制御部8の動作>
次に、図20と図21とを用いて、第2の基本構成による並列演算装置を階層型ニューラルネットワークに適応した場合の分配制御部8の動作について説明する。なお、分配制御部8が出力した制御データに含まれる制御コードの値に応じた各ユニットの動作については、図17から図19を用いて既に説明したので、ここでは、分配制御部8の動作のみについて説明する。なお、ここでも図6の階層型ニューラルネットワークに、第2の基本構成による並列演算装置を適応した場合について説明する。
【0230】
まず、図20(a)を用いて、階層型ニューラルネットワークに適応した場合における、分配制御部8の動作概要について説明する。まず、各ユニットの初期設定(初期化)をする(ステップS2001)。次に、外部から入力端子P2を介して入力層L1のノード用の入力データ(パターン入力)である入力の指示を受けて、受けた入力を、中間層(隠れ層)L2のノードとしての各ユニットに、分配制御部8が入力層L1として、分配することにより、各ユニットを用いて中間層L2の積和計算を並列に実行する(ステップS2002)。このステップS2002では、分配制御部8が入力層L1のノードとして、中間層L2のノードとなる各ユニットに出力値を出力している。
【0231】
次に、階層型ニューラルネットワークの全ての中間層(層情報カウンタ変数l=2、・・・L+1)について、中間層積和計算(ステップS2004)の処理を繰り返す(ステップL2002からステップL2005の層ループ処理)。ここで、Lは、中間層の総数(中間層総数)の値であり、図6の3階層である階層型ニューラルネットワークにおいては、この中間層総数Lの値は1である。このステップS2004の中間層積和計算は、後に図21(a)を用いて詳述する。
【0232】
このステップL2002からステップL2005の層ループ処理により、階層型ニューラルネットワークの中間層のノードとしての処理が階層型ニューラルネットワークの層において、入力層L1から出力層L3の方向に順に実行され、最終的には、各ユニットには出力層L3としての演算結果の値が記憶される。なお、このステップL2002からステップL2005のループにおいては、いずれか1つのユニットは、出力をする層としてのアクティブなユニットとして機能し、全てのユニットは入力を受ける層のノードとして機能する。
【0233】
次に、出力層L3のノードとしてのユニットに出力値を、ユニット識別情報で識別されるユニットの順に出力させる(ステップS2006)ことにより、階層型ニューラルネットワークの出力層L3に属するノードとなる全てのユニットからの演算結果を順に受信する。また、この順に受信した演算結果を、入力されたパターン入力に対しての階層型ニューラルネットワーク演算装置の演算結果として、出力端子P1を介して外部に順に出力する。
【0234】
以上のステップS2001からステップS2006の処理により、この並列演算装置は、外部から入力された入力データ(パターン入力)である入力に応じて、階層型ニューラルネットワークの演算を複数のユニットを用いて並列に実行し、この実行した演算結果を、外部に出力することができる。
【0235】
次に、図20(b)、図20(c)、図21(a)、および、図21(b)を用いて、図20(a)の各処理について詳細に説明する。なお、ここでは、図20(b)、図20(c)、図21(a)、および、図21(b)の処理を、図20(a)の各処理についての関数またはサブルーチンとして説明する。
【0236】
最初に、図20(b)を用いて、図20(a)のステップS2001の処理を詳細に説明する。まず、制御コードAの値を“0”とした制御データを出力し(ステップS20011)、次に、処理を戻す。
【0237】
次に、図20(c)を用いて、図20(a)のステップS2002の処理を詳細に説明する。まず、カウンタ変数iの値を0から、1、2、・・・N(1)まで順次増加させながら、次のステップS20022とステップS20023との処理を繰り返す(ステップL20021とステップL20024の入力ループ)。このN(1)は、層識別情報の値が1である層のノード数の値、つまり、入力層L1のノード数の値である。例えば、図6の階層型ニューラルネットワークにおいては、この入力層L1のノード数の値は3である。
【0238】
このステップS20022では、パターン入力x(l)を外部から入力する。次に、このステップS20023では、制御コードAの値を“1”とし、出力値Cの値をステップS20022で外部から入力されたパターン入力x(1)とし、配信層情報Dの値をカウンタ変数iとし、配信ユニット識別情報Eの値を1とした制御データを、各ユニットに出力する。
次に、制御コードAの値を“2”とし、配信層情報Dの値を1とした制御データを、各ユニットに出力し(ステップS20025)、処理を戻す。
【0239】
次に、図21(a)を用いて、図20(a)のステップS2004の処理を詳細に説明する。まず、カウンタ変数iの値を0から、1、2、・・・N(l)まで順次増加させながら、次のステップS20042からステップS20044の処理を繰り返す(ステップL20041とステップL20045の入力ループ)。このN(l)は、層識別情報の値が層情報カウンタ変数lである層のノード数の値である。
【0240】
このステップS20042では、制御コードAの値を“3”とし、選択ユニット番号Bをカウンタ変数iとし、配信層情報Dを層情報カウンタ変数lとした制御データを、各ユニットに出力する。また、このステップS20043では、ステップS20042で出力した選択ユニット番号Bであるカウンタ変数iと固有ユニット番号とが一致したユニットから出力された出力値x(l)を入力する。また、このステップS20044では、制御コードAの値を“2”とし、出力値CをステップS20043でユニットから入力された出力値x(l)とし、配信層情報Dをカウンタ変数iとし、配信ユニット識別情報Eを層情報カウンタ変数lとした制御データを、各ユニットに出力する。
次に、制御コードAの値を“2”とし、配信層情報Dを層情報カウンタ変数lとした制御データを、各ユニットに出力し(ステップS20046)、処理を戻す。
【0241】
次に、図21(b)を用いて、図20(a)のステップS2006の処理を詳細に説明する。まず、カウンタ変数iの値を0から、1、2、・・・N(L+2)まで順次増加させながら、次のステップS20062からステップS20064の処理を繰り返し(ステップL20061とステップL20065の出力ループ)、処理を戻す。このN(L+2)は、層識別情報の値が(中間層総数L+2)である層のノード数の値であり、つまり、出力層L3のノードの数である。例えば、図6の階層型ニューラルネットワークにおいては、この出力層L3のノード数の値は3である。
【0242】
このステップS20062では、制御コードAの値を“3”とし、選択ユニット番号Bをカウンタ変数iとし、配信層情報Dを(中間層総数L+2)とした制御データを、各ユニットに出力する。また、このステップS20063では、ステップS20062で出力した選択ユニット番号Bであるカウンタ変数iと固有ユニット番号とが一致したユニットから出力された出力値x(L+2)を入力する。また、このステップS20064では、ステップS20063でユニットから入力された出力値x(L+2)を、出力端子P1を介して外部に出力する。
【0243】
以上の処理により、この第3の実施形態による階層型ニューラルネットワークに適応した場合の並列演算装置は、第1の実施形態による階層型ニューラルネットワークに適応した場合の並列演算装置と同様に、階層型ニューラルネットワークを実行することができ、また、第1の実施形態による階層型ニューラルネットワークと同様の効果を奏することが可能である。
【0244】
<第4の実施形態>
<自己組織化マップに適応した場合のユニットの構成>
次に、第2の基本構成による並列演算装置を、自己組織化マップに適応した場合の構成について説明する。自己組織化マップにおいても並列演算装置全体の構成は、図14の並列演算装置の構成と同一であり、ユニットの構成のみが異なる。従って、図22を用いて、自己組織化マップに適応した場合のユニットの構成のみについて説明する。
【0245】
ここで、第1の基本構成における自己組織化マップの並列演算装置においては、最小のノルムを有するユニットの決定は、各ユニットがノルムを算出し、次に、ユニット間でノルムの大小を順に比較していた。これに対して、この第2の基本構成における自己組織化マップの並列演算装置においては、各ユニットがノルムを算出した後に、分配制御部8の制御に基づいて、各ユニットが算出したノルムを順に分配制御部8にユニット出力バス2を介して出力する。次に、分配制御部8が、入力されたノルムの中から最小となるノルムを選択することにより、最小のノルムを有するユニットを決定する。
【0246】
また、第1の基本構成における自己組織化マップの並列演算装置においては、各ユニットが、学習回数に関連付けて学習速度と近傍距離とを予め内部の記憶部(学習速度記憶部と近傍距離記憶部)に記憶していた。これに対して第2の基本構成における自己組織化マップの並列演算装置においては、分配制御部8が、内部に有する学習速度記憶部と近傍距離記憶部とに、学習回数に関連付けて学習速度と近傍距離とを記憶する。また、各ユニットは、1つの値の学習速度と近傍距離とを内部の記憶部(学習速度記憶部と近傍距離記憶部)に記憶する。また、分配制御部8が、学習回数に応じて、学習速度記憶部と近傍距離記憶部とを各ユニットに制御データに含めて配信し、各ユニットが、内部の記憶部(学習速度記憶部と近傍距離記憶部)の学習速度記憶部と近傍距離記憶部とを、分配制御部8から受信した制御データに含まれている学習速度記憶部と近傍距離記憶部とに更新する。
【0247】
以上のように、分配制御部8が、学習回数に応じて、学習速度記憶部と近傍距離記憶部とを各ユニットに制御データに含めて配信するようにすることにより、全てのユニットが学習回数に関連付けて学習速度と近傍距離とを予め内部の記憶部しておく必要がなくなるという効果を奏する。また、例えば、学習速度と近傍距離との変化の度合いを学習回数に応じて早くするまたは遅くするなどの、学習回数に関連付いた学習速度と近傍距離との変化の仕方を変更する場合には、学習回数と関連付けて学習速度記憶部と近傍距離記憶部とを記憶している分配制御部8内部の記憶部の情報のみを変更するのみでよく、変更が簡易となる効果を奏する。
【0248】
また、自己組織化マップに適応した場合のユニットは、第2の実施形態と同様に、ネットワーク座標により識別される座標で予め識別されている。そこで、第4の実施形態においては、固有ユニット番号をネットワーク座標として説明する。なお、各ユニットは、第2の実施形態または第3の実施形態と同様に、同一の構成を有しているので、ここでは図22を用いて1つのユニットの構成のみについて説明する。
【0249】
ユニットは、データ入力部201Aと、データ出力部204Aと、距離記憶部232Aと、重み記憶部231Aと、ノルム算出部214Aと、近傍判定部215Aと、重み更新部216Aと、ユニットネットワーク座標記憶部234Aと、入力ネットワーク座標記憶部233Aと、学習速度記憶部235Aと、ユニットノルム記憶部236Aと、入力データ記憶部230Aと、実数ベクトル次元数記憶部242Bと、比較部215Bと、ユニット制御部216Bと、ファンクション番号抽出部250Bと、ファンクション番号記憶部251Bと、オペランド抽出部252Bと、汎用バッファー記憶部253Bと、を有する。
【0250】
ここで、図22のデータ入力部201A、データ出力部204A、ユニットノルム記憶部236Aと重み記憶部231Aは、図15のデータ入力部11A、データ出力部14A、ユニット出力記憶部16Aに、それぞれ対応する。また、図22のユニットネットワーク座標記憶部234A、比較部215Bが、図15の固有ユニット番号記憶部21A、ユニット番号一致判定部20Aに、それぞれ対応する。これらの図22と図15とにおいて対応する構成について、共通の機能については、その説明を省略する。
【0251】
また、図22のファンクション番号抽出部250Bとファンクション番号記憶部251Bとが図15の制御コード抽出部17Aに対応する。また、図22のオペランド抽出部252Bと汎用バッファー記憶部253Bとが、図15の入力値抽出部18Aまたは選択ユニット番号抽出部19Aに対応する。
【0252】
また、図22の構成において、図7と図8との第1の基本構成における自己組織化マップに適応した場合の並列演算装置のユニットの構成と同様の構成には、同一の符号、または、同一の符号に符号Aを付した符号を付け、その説明を省略する。
【0253】
<第4の実施形態におけるユニットの各構成の説明>
ファンクション番号記憶部251Bには、制御データに含まれる制御コード(ファンクション番号)が記憶される。汎用バッファー記憶部253Bには、制御データに含まれる制御コードA(ファンクション番号)以外の情報、例えば、後述する入力ネットワーク座標B、入力学習速度C、入力近傍距離D、入力重みW、入力次元数N、または、入力値Xが記憶される。
【0254】
以降において、制御データに含まれる制御コードA(ファンクション番号)以外の情報、例えば、後述する入力ネットワーク座標B、入力学習速度C、入力近傍距離D、入力重みW、入力次元数N、または、入力値Xを汎用データとして説明する。この制御データの詳細については、図23を用いて後述する。
【0255】
ファンクション番号抽出部250Bは、データ入力部201Aに入力された制御データに含まれる制御コードを抽出し、抽出した制御コードをファンクション番号記憶部251Bに記憶させる。オペランド抽出部252Bは、データ入力部201Aに入力された制御データに含まれる汎用データを抽出し、抽出した汎用データを汎用バッファー記憶部253Bに記憶させる。
【0256】
ユニット制御部216Bは、データ入力部201Aに入力された制御データと比較部215Bが判定した結果とに基づいて、処理を実行する、または、予め定められた処理部の中から選択的に処理を実行させる。このデータ入力部201Aに入力された制御データとは、ファンクション番号記憶部251Bから読み出した制御コードと、汎用バッファー記憶部253Bから読み出した汎用データとである。
【0257】
また、図22の距離記憶部232Aと、ノルム算出部214Aと、近傍判定部215Aと、重み更新部216Aと、入力ネットワーク座標記憶部233Aと、学習速度記憶部235Aと、入力データ記憶部230Aと、実数ベクトル次元数記憶部242Bと、ユニット制御部216Bとが、図15のユニット演算部15Aに対応する。なお、図22の重み記憶部231Aは、図15のユニット演算部15Aとユニット出力記憶部16Aとに対応する。
【0258】
また、ユニット制御部216Bの詳細と他の構成とについては、次に図23を用いて、一例としての制御データのプロトコルの説明とともに説明する。
【0259】
<第4の実施形態における制御データのプロトコル>
次に、図23を用いて、一例としての制御データのプロトコルについて説明する。この制御データは、制御コードAと、入力ネットワーク座標Bと、入力学習速度Cと、入力近傍距離Dと、入力結合重みベクトルW(W1、W2、・・・)と、入力次元数Nと、入力ベクトルX(X1、X2、・・・)と、を含む。この制御コードのプロトコルは、制御コードの値により、次に示すように予め定められている。
【0260】
<選択処理4>
制御データに含まれる制御コードAの値が“4”であり、“重みを設定する”ことを示す場合には、この制御データは、入力ネットワーク座標Bと入力結合重みベクトルW(W1、W2、・・・)とを含んでいる。この制御コードAの値が“4”であり、“重みを設定する”ことを示す制御データを受信した全てのユニットは、ユニットのユニット制御部216Bが、入力ネットワーク座標記憶部233Aに記憶されている入力ネットワーク座標の値を、受信した制御データに含まれる入力ネットワーク座標Bに更新するとともに、比較部215Bが、該更新した入力ネットワーク座標とユニットネットワーク座標記憶部234Aから読み出したユニットネットワーク座標とが一致するか否かを判定する。次に、比較部215Bの判定結果が一致する場合には、ユニット制御部216Bが、重み記憶部231Aに記憶されている結合重みベクトルを、受信した制御データに含まれる入力結合重みベクトルW(W1、W2、・・・)に更新する。
【0261】
<選択処理5>
制御データに含まれる制御コードAの値が“5”であり、“学習速度と近傍距離とを設定する”ことを示す場合には、この制御データは、入力学習速度Cと、入力近傍距離Dと、を含んでいる。この制御コードAの値が“5”であり、“学習速度と近傍距離とを設定する”ことを示す制御データを受信した全てのユニットは、ユニットのユニット制御部216Bが、学習速度記憶部235Aに記憶されている学習速度を受信した制御データに含まれる入力学習速度Cに更新するとともに、距離記憶部232Aに記憶されている基準距離を受信した制御データに含まれる入力近傍距離Dに更新する。
【0262】
<選択処理6>
制御データに含まれる制御コードAの値が“6”であり、“実数ベクトルの次元数を設定する”こと示す場合には、この制御データは、入力次元数Nを含んでいる。この制御コードAの値が“6”であり、“実数ベクトルの次元数を設定する”ことを示す制御データを受信した全てのユニットは、ユニットのユニット制御部216Bが、実数ベクトル次元数記憶部242Bに記憶されている次元数を受信した制御データに含まれる入力次元数Nに更新する。
【0263】
<選択処理7>
制御データに含まれる制御コードAの値が“7”であり、“ノルムを算出する”ことを示す場合には、この制御データは、入力ベクトルX(X1、X2、・・・)を含んでいる。この制御コードAの値が“7”であり、“ノルムを算出する”ことを示す制御データを受信した全てのユニットは、ユニットのユニット制御部216Bが、入力データ記憶部230Aに記憶されている入力データベクトルを入力ベクトルX(X1、X2、・・・)に更新する。次に、ノルム算出部214Aが、該更新した入力ベクトルX(X1、X2、・・・)と、重み記憶部231Aから読み出した結合重みベクトルとのノルムを算出し、該算出したノルムをユニットノルムとしてユニットノルム記憶部236Aに記憶させる。
【0264】
<選択処理8>
制御データに含まれる制御コードAの値が“8”であり、“ノルムを出力する”ことを示す場合には、この制御データは、入力ネットワーク座標Bを含んでいる。この制御コードAの値が“8”であり、“ノルムを出力する”ことを示す制御データを受信した全てのユニットは、ユニットのユニット制御部216Bが、入力ネットワーク座標記憶部233Aに記憶されている入力ネットワーク座標の値を、受信した制御データに含まれる入力ネットワーク座標Bに更新するとともに、比較部215Bが、該更新した入力ネットワーク座標とユニットネットワーク座標記憶部234Aから読み出したユニットネットワーク座標とが一致するか否かを判定する。次に、比較部215Bの判定結果が一致する場合には、ユニット制御部216Bが、ユニットノルム記憶部236Aから読み出したユニットノルムを、データ出力部204Aとユニット出力バス2とを介して分配制御部8に出力する。
【0265】
<選択処理9>
制御データに含まれる制御コードAの値が“9”であり、“学習する”ことを示す場合には、この制御データは、入力ネットワーク座標Bを含んでいる。この制御コードAの値が“9”であり、“学習する”ことを示す制御データを受信した全てのユニットは、ユニット制御部216Bが、入力ネットワーク座標記憶部233Aに記憶されている入力ネットワーク座標を、制御データに含まれていた入力ネットワーク座標Bに更新する。次に、ユニットの近傍判定部215Aが、ユニットネットワーク座標記憶部234Aから読み出したユニットネットワーク座標と入力ネットワーク座標記憶部233Aから読み出した入力ネットワーク座標との間の距離を算出し、該算出した距離が、距離記憶部232Aから読み出した距離以下であるか否かを判定することにより、ユニットネットワーク座標記憶部234Aから読み出したユニットネットワーク座標が、入力ネットワーク座標記憶部233Aから読み出した入力ネットワーク座標の近傍にあるか否かを判定する。次に、近傍判定部215Aの判定した結果が近傍である場合には、重み更新部216Aが、入力データ記憶部230Aから読み出した入力データベクトルと重み記憶部231Aから読み出した結合重みベクトルとの差を算出し、該算出した差に学習速度記憶部235Aから読み出した学習速度係数を乗じた値を、重み記憶部231Aに記憶されている結合重みベクトルに加算し、重み記憶部231Aに記憶されている結合重みベクトルを更新することにより、学習する。
【0266】
<選択処理10>
制御データに含まれる制御コードAの値が“10”であり、“学習結果を出力する”ことを示す場合には、この制御データは、入力ネットワーク座標Bを含んでいる。この制御コードAの値が“10”であり、“学習結果を出力する”ことを示す制御データを受信した全てのユニットは、ユニットのユニット制御部216Bが、入力ネットワーク座標記憶部233Aに記憶されている入力ネットワーク座標の値を、受信した制御データに含まれる入力ネットワーク座標Bに更新するとともに、比較部215Bが、該更新した入力ネットワーク座標とユニットネットワーク座標記憶部234Aから読み出したユニットネットワーク座標とが一致するか否かを判定する。次に、比較部215Bの判定結果が一致する場合には、ユニット制御部216Bが、重み記憶部231Aから読み出した結合重みベクトルを、データ出力部204Aとユニット出力バス2とを介して分配制御部8に出力する。
【0267】
<第4の実施形態におけるユニットの動作>
次に、図24を用いて、図23で説明した制御データのプロトコルを受信した場合の、ユニットの動作、特に、ユニットのユニット制御部216Bの動作について説明する。なお、説明の簡略のために、以降においては制御コードAの値を用いて説明する。この制御コードAの値の意味は、上記に図23の説明と同様である。
【0268】
まず、ユニットは、データ入力部201Aに制御データが入力されたことに応じて、処理を開始する(ステップS2401)。次に、ファンクション番号抽出部250Bが、データ入力部201Aに入力された制御データから、制御コードを抽出し、抽出した制御コードをファンクション番号記憶部251Bに記憶させる。
【0269】
また、オペランド抽出部252Bが、データ入力部201Aに入力された制御データから、オペランドである制御コード以外の情報を汎用バッファー記憶部253Bに記憶させる。
【0270】
次に、ユニット制御部216Bが、ファンクション番号抽出部250Bが制御コードを抽出したことに応じて、ファンクション番号記憶部251Bから読み出した制御コードの値に基づいて、以降に説明するステップS2402からステップS2412により、ユニットにおける処理を選択的に実行する(ステップS2402)。
【0271】
ステップS2402で、読み出した制御コードの値が“4”である場合には、比較部215Bが、ユニットネットワーク座標記憶部234Aから読み出したユニットネットワーク座標と入力ネットワーク座標記憶部233Aから読み出した入力ネットワーク座標とが一致するか否かを判定する(ステップS2403)。ステップS2403の判定結果が、選択ユニット番号と固有ユニット番号とが一致する場合には、ユニット制御部216Bは、上記に説明した選択処理4を実行し(ステップS2404)、処理を終了する。一方、ステップ2403の判定結果が、選択ユニット番号と固有ユニット番号とが一致しない場合には、処理を終了する。
【0272】
一方、ステップS2402で、読み出した制御コードの値が“5”である場合には、ユニット制御部216Bは、上記に説明した選択処理5を実行し(ステップS2405)、処理を終了する。一方、ステップS2402で、読み出した制御コードの値が“6”である場合には、ユニット制御部216Bは、上記に説明した選択処理6を実行し(ステップS2406)、処理を終了する。一方、ステップS2403で、読み出した制御コードの値が“7”である場合には、ユニット制御部216Bは、上記に説明した選択処理7を実行し(ステップS2407)、処理を終了する。
【0273】
一方、ステップS2402で、読み出した制御コードの値が“8”である場合には、比較部215Bが、ユニットネットワーク座標記憶部234Aから読み出したユニットネットワーク座標と入力ネットワーク座標記憶部233Aから読み出した入力ネットワーク座標とが一致するか否かを判定する(ステップS2408)。ステップS2408の判定結果が、選択ユニット番号と固有ユニット番号とが一致する場合には、ユニット制御部216Bは、上記に説明した選択処理8を実行し(ステップS2409)、処理を終了する。一方、ステップ2408の判定結果が、選択ユニット番号と固有ユニット番号とが一致しない場合には、処理を終了する。
【0274】
一方、ステップS2402で、読み出した制御コードの値が“9”である場合には、ユニット制御部216Bは、上記に説明した選択処理9を実行し(ステップS2410)、処理を終了する。
【0275】
一方、ステップS2402で、読み出した制御コードの値が“10”である場合には、比較部215Bが、ユニットネットワーク座標記憶部234Aから読み出したユニットネットワーク座標と入力ネットワーク座標記憶部233Aから読み出した入力ネットワーク座標とが一致するか否かを判定する(ステップS2411)。ステップS2411の判定結果が、選択ユニット番号と固有ユニット番号とが一致する場合には、ユニット制御部216Bは、上記に説明した選択処理10を実行し(ステップS2412)、処理を終了する。一方、ステップ2411の判定結果が、選択ユニット番号と固有ユニット番号とが一致しない場合には、処理を終了する。
【0276】
上記に図24を用いて説明したように、各ユニットは、ユニットのユニット制御部216Bにより、入力された入力データに含まれる制御コードの値に基づいて、選択的に予め定められた処理を実行する。
【0277】
<第4の実施形態における分配制御部8の動作>
次に、図25と図26とを用いて、第2の基本構成による並列演算装置を自己組織化マップに適応した場合の、並列演算装置の動作について説明する。なお、並列演算装置は分配制御部8と複数のユニットを有するが、分配制御部8が出力した制御データに含まれる制御コードの値に応じた各ユニットの動作については、図22から図24を用いて既に説明したので、ここでは、分配制御部8の動作のみについて説明する。
【0278】
まず、図25(a)を用いて、自己組織化マップに適応した場合における並列演算装置の分配制御部8の動作について説明する。まず、各ユニットの初期設定をする(ステップS2501)。この初期設定については、後に図25(b)を用いて詳述する。
【0279】
次に、学習回数変数t=0、1、2、・・・・Tについて、競合学習(ステップS2503)を繰り返す(ステップL2502からステップL2504の学習ループ処理)。ここで、このTは、競合学習の学習回数である。また、このステップS2502の競合学習については、後に図26(a)を用いて詳述する。
【0280】
次に、学習した結果を出力する(ステップS2505)。この出力については、後に図26(c)を用いて詳述する。
【0281】
次に、図25(b)と、図26(a)から図26(c)とを用いて、図25(a)の各処理について詳細に説明する。なお、ここでは、図25(b)と、図26(a)から図26(c)との処理を、図20(a)の各処理についての関数またはサブルーチンとして説明する。
【0282】
最初に、図25(b)を用いて、図25(a)のステップS2501の初期設定の処理について説明する。まず、パターン入力nを外部から入力する(ステップS250101)。次に、制御コードAの値を“6”、出力値Dの値を入力されたパターン入力nとした制御データを、各ユニットに出力する(ステップS250102)。
【0283】
次に、ユニットループ変数j=1、2、・・・Nで示されるユニットの順に、次のステップL250104からステップL250106の次元ループとS250107との処理を繰り返す(ステップL250103からステップL250108のユニットループ)。ここで、Nは、ユニットの総数の値である。
【0284】
このステップL250104からステップL250106の次元ループでは、入力ベクトル次元数i=1、2、・・・nで示される入力ベクトルの次元数の順に、次のステップS250105の処理を繰り返す。このステップS250105では、外部から入力パターンwjiを入力する。ここで、nは、入力ベクトルの次元数である。
【0285】
また、このステップS250107の処理では、制御コードAの値を“4”、入力ネットワーク座標Bの値をユニットループ変数j、出力値C(C1、C2、・・・Cn)を入力パターンwji(wj1、wj2、・・・wjn)とした制御データを、各ユニットに出力する。
【0286】
上記のステップL250103からステップL250108の処理により、各ユニットに対して、それぞれのユニット内の重み記憶部231Aの結合重みベクトルを初期設定する。
【0287】
次に、学習回数変数t=0、1、2、・・・Tについて、ステップS250110の処理を繰り返す(ステップL250109からステップL250111の入力ループ)。このステップS250110では、外部から学習速度η(t)と近傍距離d(t)とを入力し、学習回数変数tと関連付けて入力した学習速度η(t)を内部の学習速度記憶部に記憶するとともに、学習回数変数tと関連付けて入力した近傍距離d(t)を内部の近傍距離記憶部に記憶する。
次に、後に図26(b)を用いて説明する最小ノルム判定に用いるダミー変数であるノルム最小値dminの値を−1に設定し(ステップS250112)、処理を戻す。
【0288】
次に、図26(a)を用いて、図25(a)のステップS2503の競合学習の処理について説明する。まず、制御コードAの値を“5”、入力学習速度Cを内部の学習速度記憶部から読み出した学習速度η(t)、入力近傍距離Dを内部の近傍距離記憶部から読み出した近傍距離d(t)とした制御データを各ユニットに出力する(ステップS250301)。
【0289】
次に、次元ループ変数i=1、2、・・・nについて、次のステップS250303の処理を繰り返す(ステップL250302からステップL250304の次元ループ)。このステップS250303では、外部からパターン入力xiを入力する。
【0290】
次に、制御コードAの値を“7”、入力ベクトルC(C1、C2、・・・Cn)をステップL250302からステップL250304で外部から入力したパターン入力x(x1、x2、・・・xn)とした制御データを各ユニットに出力する(ステップS250305)。
【0291】
次に、ユニットループ数変j=1、2、・・・Nについて、次のステップS250307とステップS250308とステップS250309との処理を繰り返す(ステップL250306からステップL250310のユニットループ)。このステップS250307では、制御コードAの値を“8”、入力ネットワーク座標Bの値をユニットループ変数j、とした制御データを各ユニットに出力する。また、このステップS250308では、ステップS250307で制御コードAの値を“8”、入力ネットワーク座標Bの値をユニットループ数変j、とした制御データに対して、ユニットネットワーク座標が入力ネットワーク座標Bであるユニットループ数変jに一致するユニットからのノルムの出力を、ノルムdnとして入力する。
【0292】
また、このステップS250309では、ステップS250308で入力したノルムdnに基づいて、最小ノルム判定の処理を実行する。このステップS250309における最小ノルム判定の処理については、後に、図26(b)を用いて詳細に説明する。
【0293】
上記のステップL250306からステップL250310の処理により、各ユニットで算出されたノルムを全てのユニットから順に入力し、ステップS250309の処理にて入力したノルムを順に比較することにより、全てのユニットからのノルムの出力の中から最小となるノルムと、該最小となるノルムを出力したユニットを識別する識別情報であるユニットネットワーク座標をノルム最小ユニットネットワーク座標jminとして選択する。
【0294】
次に、制御コードAの値を“9”、入力ネットワーク座標Bの値をノルム最小ユニットネットワーク座標jmin、とした制御データを各ユニットに出力する。これにより、各ユニットは、入力されたノルム最小ユニットネットワーク座標jminに基づいて、近傍となるユニットが学習をする。
【0295】
次に、図26(b)を用いて、図26(a)のステップS250309の最小ノルム判定の処理について説明する。
まず、ステップS250308で入力したノルムdnがノルム最小値dminより小さいか否か、または、ノルム最小値dminの値が−1であるか否かを判定する(ステップS2503091)。ステップS2503091で判定した結果が、入力したノルムdnがノルム最小値dminより小さい場合、または、ノルム最小値dminの値が−1である場合には、ノルム最小値dminを入力したノルムdnとするともに、ノルム最小ユニットネットワーク座標jminをユニットループ変数jとし(ステップS2503092)、処理を戻す。
【0296】
一方、ステップS2503091で判定した結果が、入力したノルムdnがノルム最小値dminより小さくない場合であって、かつ、ノルム最小値dminの値が−1でない場合には、処理を戻す。
【0297】
次に、図26(c)を用いて、図25(a)のステップS2505の出力の処理について説明する。まず、ユニットループ変数j=0、1、2、・・・Nについて、次のステップS250502の処理とステップL250503からステップL250506の次元ループの処理とを繰り返す(ステップL250501からステップL250507のユニットループ)。
【0298】
このステップS250502では、制御コードAの値を“10”、入力ネットワーク座標Bの値をユニットループ変数j、とした制御データを各ユニットに出力する。
【0299】
また、このステップL250503からステップL250506の次元ループの処理では、次元ループ変数i=1、2、・・・nについて、次のステップS250504とステップS250505との処理を繰り返す。このステップS250504では、ステップS250502で出力した制御データに応じたユニットからの出力である結合重みベクトルを、結合重みベクトルwjiとして入力する。次に、このステップS250505では、ステップS250504でユニットから入力した結合重みベクトルwjiを外部に出力する。
【0300】
以上の、ステップL250501からステップL250507の処理により、まず、各ユニットから順に結合重みベクトルを出力させ(ステップS250502)、次に、ステップS250502に応じて各ユニットが順に出力した結合重みベクトルを順に入力する(ステップS250504)。次に、ステップS250504で各ユニットから順に入力した結合重みベクトルを、順に外部に自己組織化マップの演算結果として出力する(ステップS250505)。
【0301】
以上の図22から図26を用いて説明した第2の基本構成による自己組織化マップに適応した場合の並列演算装置は、第1の基本構成による自己組織化マップに適応した場合の並列演算装置と同様に、自己組織化マップの演算を実行し、実行した結果を外部に出力することが可能である。
【0302】
また、第2の基本構成による自己組織化マップに適応した場合の並列演算装置は、第1の基本構成による自己組織化マップに適応した場合の並列演算装置と比較して、その構成が簡易であるという効果がある。また、入力ベクトルの次元数や学習速度や近傍距離の変更など、自己組織化マップにおける様々な変数の値の設計変更が容易であるという効果がある。
【0303】
<分離構成>
次に、図27を用いて、図14の第2の基本構成による並列演算装置において、各ユニットと分配制御装置8とを、分離構成とした場合の並列演算装置の構成について説明する。
【0304】
この図27の並列演算装置は、図14の並列演算装置に対して、互いに接続可能な接続部9Aと接続部9Bとを有する。この接続部9Aと接続部9Bとを介して、ユニットAU1からユニットAU10の全てのユニットと分配制御装置8とは、ユニット出力バス2とユニット入力バス3とにより接続される。例えば、この接続部9Aと接続部9Bとは、互いに嵌合する部材であることが望ましい。
【0305】
また、図27に示すように、互いに接続可能な接続部9Aと接続部9Bとにより、ユニットAU1からユニットAU10の全てのユニットと接続部9Bとを1つの装置(装置B)とし、分配制御装置8と接続部9Aとを1つの装置(装置A)とする。
【0306】
この場合、例えば、この接続部9Aと接続部9Bとは、USB(Universal Serial Bus)(登録商標)コネクタのメスとオスとし、また、装置BをUSB機器とし、装置Aをパーソナルコンピュータとしてもよい。以上のように、ユニットと分配制御装置8とを別の装置として構成し、分配制御装置8をパーソナルコンピュータとすることにより、並列演算装置全体の構成がより簡易となり、安価に製造可能となる。
【0307】
また、分配制御装置8をパーソナルコンピュータとすることにより、予め定められた制御の手順などを、コンピュータプログラミングすることにより、より簡易に制御の手順が作成可能となる。また、分配制御装置8であるパーソナルコンピュータは、入力手段としてのキーボードや、表示手段または出力手段としてのモニタも有しているため、よりユーザが簡易に並列演算装置を用いることが可能となる。
【0308】
なお、接続部9Aと接続部9BとはUSBコネクタに限られるものではなく、他の規格のコネクタでもよいし、または、通信ネットワークのコネクタであってもよい。通信ネットワークのコネクタの場合には、ユニットAU1からユニットAU10と配制御装置8との間の接続は、接続部9Aと接続部9Bとを介した通信プロトコルを用いた通信接続であってもよいし、接続部9Aと接続部9Bとが、通信プロトコルを制御するようにしてもよい。
【0309】
また、装置Bを拡張基盤装置として構成し、この拡張基盤装置を、パーソナルコンピュータである分配制御装置8の拡張スロットに接続するようにしてもよい。例えば、拡張基盤装置として構成された装置Bが、例えば、PCI(Peripheral Component Interconnect)規格またはPCI−Express規格のバスに準じたボードであってもよい。また、この場合には、装置Aであるパーソナルコンピュータは、接続部9Aとして、例えば、PCI規格またはPCI−Express規格に準じた拡張スロットを有するようにしてもよい。
【0310】
なお、上記実施形態の各図で示した構成である記憶部のそれぞれは、ハードディスク装置や光磁気ディスク装置、フラッシュメモリ等の不揮発性のメモリや、CR−ROM等の読み出しのみが可能な記憶媒体、RAM(Random Access Memory)のような揮発性のメモリ、あるいはこれらの組み合わせにより構成されるものとする。
なお、図2の図15のユニット算出部、または、図16の分配制御部8は、専用のハードウェアにより実現されるものであってもよく、また、メモリおよびマイクロプロセッサにより実現させるものであってもよい。
【0311】
以上、この発明の実施形態を、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【図面の簡単な説明】
【0312】
【図1】この発明の一実施形態による並列演算装置の構成を示すブロック図である。
【図2】この発明の一実施形態による並列演算装置のユニットの構成を示すブロック図である。
【図3】階層型ニューラルネットワークにおける図2のユニットの構成を示すブロック図である。
【図4】図3のユニットの動作を示す第1のフローチャート図である。
【図5】図3のユニットの動作を示す第2のフローチャート図である。
【図6】ニューラルネットワークを説明する説明図である。
【図7】自己組織化マップにおける図2のユニットの構成を示す第1のブロック図である。
【図8】自己組織化マップにおける図2のユニットの構成を示す第2のブロック図である。
【図9】自己組織化マップにおけるデータ構造を示す説明図である。
【図10】図7および図8のユニットの動作を示す第1のフローチャート図である。
【図11】図7および図8のユニットの動作を示す第2のフローチャート図である。
【図12】冗長回路を有した並列演算装置の構成を示すブロック図である。
【図13】図12のユニットの構成を示すブロック図である。
【図14】第2の基本構成による並列演算装置の構成を示すブロック図である。
【図15】図14のユニットの構成を示すブロック図である。
【図16】図14の分配制御部8の構成を示すブロック図である。
【図17】階層型ニューラルネットワークにおける図14のユニットの構成を示すブロック図である。
【図18】図14の階層型ニューラルネットワークにおけるプロトコル表である。
【図19】図14の各ユニットの動作を説明するフローチャートである。
【図20】図14の分配制御部8の動作を説明するフローチャートその1である。
【図21】図14の分配制御部8の動作を説明するフローチャートその2である。
【図22】自己組織化マップにおける図14のユニットの構成を示すブロック図である。
【図23】図22の自己組織化マップにおけるプロトコル表である。
【図24】図22の各ユニットの動作を説明するフローチャートである。
【図25】図22の分配制御部8の動作を説明するフローチャートその1である。
【図26】図22の分配制御部8の動作を説明するフローチャートその2である。
【図27】図14の並列演算装置を分離構成とした場合の並列演算装置の構成を示すブロック図である。
【符号の説明】
【0313】
1 デイジーチェーン制御バス
2 ユニット出力バス
3 ユニット入力バス
4 増幅器
5 トリガ入力線
6 第1の冗長デイジーチェーン制御バス
7 第2の冗長デイジーチェーン制御バス
11、101、201、11A、101A、201A データ入力部
12、A12、B12、102、202 トークン入力部
13、A13、B13、103、203 トークン出力部
14、104、204、14A、104A、204A データ出力部
16、16A ユニット出力記憶部
17 トークン出力部選択部
18 トークン選択情報記憶部
33 制御データ出力部
101A、201A データ入力部
104A、204A データ出力部
150B、250B ファンクション番号抽出部
151B、251B ファンクション番号記憶部
152B、252B オペランド抽出部
153B、253B 汎用バッファー記憶部
111、111A 積和計算一次値算出部
112、112A ユニット出力算出部
113 層情報算出部
114 カウンタ
130、231、231A 重み記憶部
131 積和計算一次値記憶部
132 関数記憶部
133 層情報記憶部
134 ユニット数記憶部
135、135A ユニット出力記憶部
136 データ出力フラグ記憶部
137 ユニット識別情報記憶部
138B 前段ユニット出力記憶部
210 データ抽出部
211 ネットワーク座標抽出部
212 ノルム抽出部
213 カウンタ
214、214A ノルム算出部
215、215A 近傍判定部
216、216A 重み更新部
217 ノルム比較部
218 入力ノルム判定部
219 ネットワーク座標選択部
220 ノルム選択部
221 データ合成出力部
222 データ入力判定部
223 トークン出力フラグ判定部
230、230A 入力データ記憶部
232、232A 距離記憶部
233、233A 入力ネットワーク座標記憶部
234、234A ユニットネットワーク座標記憶部
235、235A 学習速度記憶部
236、236A ユニットノルム記憶部
237 入力ノルム記憶部
238 トークン出力フラグ記憶部
250 入力ノルム部
251 選択出力部
L1 入力層
L2 隠れ層
L3 出力層
P1 出力端子
P2 入力端子
P3 トリガ入力端子
U1、U2、U3、U4、U5、U6、U7、U8、U9、U10、AU1、AU2、AU3、AU4、AU5、AU6、AU7、AU8、AU9、AU10 ユニット

【特許請求の範囲】
【請求項1】
並列演算装置が、
予め定められた識別番号である固有ユニット番号によりそれぞれが識別される複数のユニットと、
前記複数のユニットの中のいずれか1つのユニットが出力する出力値がユニット出力バスを介して入力されたことに応じて、該入力された入力値と前記複数のユニットの中から選択したいずれか1つのユニットを選択する識別番号である選択ユニット番号とを含む制御データを、前記複数のユニットのそれぞれにユニット入力バスを介して出力する分配制御部と、
を有し、
前記ユニットが、
前記ユニット入力バスを介して前記分配制御部からの制御データを入力するデータ入力部と、
前記データ入力部に入力された制御データに含まれる選択ユニット番号と、前記固有ユニット番号とが一致するか否かを判定するユニット番号一致判定部と、
前記データ入力部に入力された制御データに含まれる入力値に基づいて、前記ユニット毎に予め定められた演算方法により演算するユニット演算部と、
前記ユニット番号一致判定部が判定した結果が一致である場合には、前記ユニット演算部が演算した結果である演算結果を前記出力値として、前記分配制御部に前記ユニット出力バスを介して出力するデータ出力部と、
を有することを特徴とする並列演算装置。
【請求項2】
前記分配制御部は、
前記制御データに、前記ユニット演算部の演算方法を選択するための制御コードを含めており、
前記ユニットが、
前記データ入力部に入力された制御データから前記制御コードを抽出する制御コード抽出部を有し、
前記ユニット演算部が、
前記制御コード抽出部が抽出した制御データと前記ユニット番号一致判定部が判定した結果とに基づいて前記演算を実行する、または、前記演算を実行させるユニット制御部を有する、
ことを特徴とする請求項1に記載の並列演算装置。
【請求項3】
前記分配制御部が、
前記ユニット出力バスを介して前記複数のユニットの中のいずれか1つのユニットが出力する出力値を入力するユニット出力値入力部と、
前記ユニット出力値入力部に入力された出力値に基づいて、予め定められた処理手順により前記制御データを生成する制御データ生成部と、
前記制御データ生成部が生成した制御データを前記複数のユニットのそれぞれに前記ユニット入力バスを介して出力する制御データ出力部と、
を有することを特徴とする請求項1または請求項2に記載の並列演算装置。
【請求項4】
前記ユニットが、
前記演算結果が記憶されるユニット出力記憶部を有し、
前記ユニット演算部が、
前記演算結果を前記ユニット出力記憶部に記憶させ、
前記データ出力部が、
前記ユニット番号一致判定部が判定した結果が一致である場合には、前記演算結果を前記ユニット出力記憶部から読み出し、該読み出した演算結果を前記出力値として前記分配制御部に前記ユニット出力バスを介して出力する、
ことを特徴とする請求項1から請求項3に記載の並列演算装置。
【請求項5】
前記ユニットが、
前記固有ユニット番号が予め記憶されている固有ユニット番号記憶部と、
前記データ入力部に入力された制御データから前記選択ユニット番号を抽出する選択ユニット番号抽出部と、
前記データ入力部に入力された制御データから前記入力値を抽出する入力値抽出部と、
を有し、
前記ユニット番号一致判定部は、
前記選択ユニット番号抽出部が抽出した選択ユニット番号と、前記固有ユニット番号記憶部から読み出した固有ユニット番号とが一致するか否かを判定し、
前記ユニット演算部は、
前記入力値抽出部が抽出した入力値に基づいて、前記ユニット毎に予め定められた演算方法により演算する、
ことを特徴とする請求項1から請求項4に記載の並列演算装置。
【請求項6】
前記並列演算装置が階層型ニューラルネットワークを演算する並列演算装置である場合には、
前記ユニット演算部が、
前記階層型ニューラルネットワークの階層のうち、出力する層を識別する層情報が記憶されている層情報記憶部と、
前記ユニットの出力関数と前記層情報とが関連付けて予め記憶されている関数記憶部と、
前記層情報で識別される出力層のユニットからの出力値に乗ずる予め定められた結合荷重と、前記層情報とが関連付けて記憶されている重み記憶部と、
前記出力ユニットからの入力値と結合荷重とを乗じた積和計算一次値情報が記憶される積和計算一次値記憶部と、
前記ユニット制御部の選択に応じて、前記層情報記憶部から読み出した層情報に該当する結合荷重を前記重み記憶部から読み出し、該読み出した結合荷重と、前記データ入力部に入力された入力値とを乗算し、該乗算した値を前記積和計算一次値記憶部に記憶されている積和計算一次値情報に加算して記憶させる積和計算一次値算出部と、
前記ユニット制御部の選択に応じて、前記積和計算一次値記憶部から積和計算一次値情報を読み出し、前記層情報記憶部から読み出した層情報に該当する出力関数を前記関数記憶部から読み出し、該読み出した出力関数に前記読み出した積和計算一次値情報を代入することにより出力値を算出し、該算出した出力値を前記ユニット出力記憶部に記憶させるユニット出力算出部と、
を有することを特徴とする請求項4または請求項5に記載の並列演算装置。
【請求項7】
前記ユニット演算部が、前記出力層に属しているユニットのうち、いずれのユニットが出力ユニットとして出力しているかを示す配信ユニット識別情報が記憶されている前段ユニット番号記憶部、を有し、
前記重み記憶部には、前記層情報と前記配信ユニット識別情報とで識別される前記出力層のユニットからの出力値に乗ずる予め定められた結合荷重と、前記層情報と前記配信ユニット識別情報とが、関連付けて記憶されており、
前記積和計算一次値算出部が、前記前段ユニット番号記憶部から読み出した配信ユニット識別情報と前記層情報記憶部から読み出した層情報とに該当する結合荷重を前記重み記憶部から読み出し、該読み出した結合荷重と、前記データ入力部に入力された入力値とを乗算し、該乗算した値を前記積和計算一次値記憶部に記憶されている積和計算一次値情報に加算して記憶させる、
ことを特徴とする請求項6に記載の並列演算装置。
【請求項8】
前記データ入力部に入力された制御データに含まれる制御コードが、積和計算一次値を初期化することを示す場合には、
前記ユニット制御部が、
前記積和計算一次値記憶部に記憶されている積和計算一次値情報を0に初期化する、
ことを特徴とする請求項6または請求項7に記載の並列演算装置。
【請求項9】
前記データ入力部に入力された制御データに含まれる制御コードが、積和計算一次値を算出し加算格納することを示し、該制御データが出力値と該出力値を出力しているユニットのユニット識別情報である配信ユニット識別情報とを含む場合には、
前記ユニット制御部が、
前記配信ユニット識別情報を前記前段ユニット番号記憶部に記憶し、
前記出力値に基づいて前記積和計算一次値算出部の処理を実行させる、
ことを特徴とする請求項6から請求項8に記載の並列演算装置。
【請求項10】
前記データ入力部に入力された制御データに含まれる制御コードがユニット出力演算を実行することを示す場合には、
前記ユニット制御部が、
前記ユニット出力算出部の処理を実行させる、
ことを特徴とする請求項6から請求項9に記載の並列演算装置。
【請求項11】
前記データ入力部に入力された制御データに含まれる制御コードがアクティブなユニットとして出力値を出力することを示し、該制御データが選択ユニット番号を含む場合には、
前記ユニット制御部が、
前記ユニット番号一致判定部が判定した結果が一致である場合には、前記演算結果を前記ユニット出力記憶部から読み出し、該読み出した演算結果を前記出力値として前記分配制御部に前記データ出力部と前記ユニット出力バスとを介して出力する、
ことを特徴とする請求項6から請求項10に記載の並列演算装置。
【請求項12】
前記データ入力部に入力された制御データが配信層情報を含む場合には、
前記ユニット制御部が、
前記データ入力部に入力された制御データに含められた配信層情報を前記層情報記憶部に記憶する、
ことを特徴とする請求項6から請求項11に記載の並列演算装置。
【請求項13】
前記分配制御部が、
前記積和計算一次値を初期化することを示す制御コード、前記出力値と前記配信ユニット識別情報とを含み、前記積和計算一次値を算出し加算格納することを示す制御コード、前記ユニット出力演算を実行することを示す制御コード、前記アクティブなユニットとして出力値を出力することを示す制御コード、または、前記配信層情報を含む制御データを含む制御データを、前記階層型ニューラルネットワークの階層数と該階層のノード数とに合わせて予め定められた順序で出力する、
ことを特徴とする請求項6から請求項12に記載の並列演算装置。
【請求項14】
前記並列演算装置が自己組織化マップを演算する並列演算装置である場合には、前記固有ユニット番号にかわってユニットのネットワーク座標であるユニットネットワーク座標により前記複数のユニットのそれぞれが識別されており、
前記ユニット演算部が、
前記ユニットネットワーク座標が予め記憶されているユニットネットワーク座標記憶部と、
前記ユニットの結合重みベクトルが記憶されている重み記憶部と、
前記ユニットのノルムであるユニットノルムを記憶するユニットノルム記憶部と、
ノルムを算出することを示す制御コードと入力ベクトルとを含む制御データを前記ユニット制御部から前記データ入力部に入力した場合には、前記データ入力部に入力された入力データベクトルと、前記重み記憶部から読み出した結合重みベクトルとのノルムを算出し、該算出したノルムを前記ユニットノルムとして前記ユニットノルム記憶部に記憶させるノルム算出部と、
を有し、
ノルムを出力することを示す制御コードと入力ネットワーク座標とを含む制御データを前記ユニット制御部から前記データ入力部に入力した場合には、
前記ユニット制御部が、
該入力された入力ネットワーク座標と前記ユニットネットワーク座標記憶部から読み出したユニットネットワーク座標とが一致する場合には、前記ユニットノルム記憶部から読み出したユニットノルムを前記データ出力部を介して出力する、
ことを特徴とする請求項4または請求項5に記載の並列演算装置。
【請求項15】
前記データ入力部に入力された制御データに含まれる制御コードが重みを設定することを示し、入力ネットワーク座標と入力結合重みベクトルとを含んでいる場合には、
前記ユニット制御部が、入力ネットワーク座標記憶部に記憶されている入力ネットワーク座標の値を、受信した制御データに含まれる入力ネットワーク座標に更新し、
前記ユニット番号一致判定部が、該更新した入力ネットワーク座標とユニットネットワーク座標記憶部から読み出したユニットネットワーク座標とが一致するか否かを判定し、
前記ユニット番号一致判定部の判定結果が一致する場合には、前記ユニット制御部が、重み記憶部に記憶されている結合重みベクトルを、受信した制御データに含まれる入力結合重みベクトルに更新する、
ことを特徴とする請求項14に記載の並列演算装置。
【請求項16】
前記データ入力部に入力された制御データに含まれる制御コードが学習速度と近傍距離とを設定することを示し、入力学習速度と入力近傍距離とを含んでいる場合には、
前記ユニット制御部が、学習速度記憶部に記憶されている学習速度を受信した制御データに含まれる入力学習速度に更新するとともに、距離記憶部に記憶されている基準距離を受信した制御データに含まれる入力近傍距離に更新する、
ことを特徴とする請求項14または請求項15に記載の並列演算装置。
【請求項17】
前記データ入力部に入力された制御データに含まれる制御コードが実数ベクトルの次元数を設定すること示し、入力次元数Nを含んでいる場合には、
前記ユニット制御部が、実数ベクトル次元数記憶部に記憶されている次元数を受信した制御データに含まれる入力次元数に更新する、
ことを特徴とする請求項14から請求項16に記載の並列演算装置。
【請求項18】
前記データ入力部に入力された制御データに含まれる制御コードがノルムを算出することを示し、入力ベクトルを含んでいる場合には、
前記ユニット制御部が、入力データ記憶部に記憶されている入力データベクトルを入力ベクトルに更新し、
前記ノルム算出部が、該更新した入力ベクトルと重み記憶部から読み出した結合重みベクトルとのノルムを算出し、該算出したノルムをユニットノルムとしてユニットノルム記憶部に記憶させる、
ことを特徴とする請求項14から請求項17に記載の並列演算装置。
【請求項19】
前記データ入力部に入力された制御データに含まれる制御コードがノルムを出力することを示し、入力ネットワーク座標を含んでいる場合には
前記ユニット制御部が、入力ネットワーク座標記憶部に記憶されている入力ネットワーク座標の値を、受信した制御データに含まれる入力ネットワーク座標に更新し、
前記ユニット番号一致判定部が、該更新した入力ネットワーク座標とユニットネットワーク座標記憶部から読み出したユニットネットワーク座標とが一致するか否かを判定し、
前記ユニット番号一致判定部の判定結果が一致する場合には、前記ユニット制御部が、前記ユニットノルム記憶部から読み出したユニットノルムを前記データ出力部と前記ユニット出力バスとを介して前記分配制御部に出力する、
ことを特徴とする請求項14から請求項18に記載の並列演算装置。
【請求項20】
前記データ入力部に入力された制御データに含まれる制御コードが学習することを示し、入力ネットワーク座標を含んでいる場合には、
前記ユニット制御部が、前記入力ネットワーク座標記憶部に記憶されている入力ネットワーク座標を、前記制御データに含まれていた入力ネットワーク座標に更新し、
前記演算部が、
前記データ入力部に入力された制御データに含まれる制御コードが学習することを示す場合には、前記ユニットネットワーク座標記憶部から読み出したユニットネットワーク座標と前記入力ネットワーク座標記憶部から読み出した入力ネットワーク座標との間の距離を算出し、該算出した距離が、前記距離記憶部から読み出した距離以下であるか否かを判定することにより、ユニットネットワーク座標記憶部から読み出したユニットネットワーク座標が、入力ネットワーク座標記憶部から読み出した入力ネットワーク座標の近傍にあるか否かを判定する近傍判定部と、
前記近傍判定部の判定した結果が近傍である場合には、前記入力データ記憶部から読み出した入力データベクトルと前記重み記憶部から読み出した結合重みベクトルとの差を算出し、該算出した差に前記学習速度記憶部から読み出した学習速度係数を乗じた値を、重み記憶部に記憶されている結合重みベクトルに加算し、重み記憶部に記憶されている結合重みベクトルを更新する重み更新部と、
を有することを特徴とする請求項14から請求項19に記載の並列演算装置。
【請求項21】
前記データ入力部に入力された制御データに含まれる制御コードが学習結果を出力することを示し、入力ネットワーク座標を含んでいる場合には、
前記ユニット制御部が、前記入力ネットワーク座標記憶部に記憶されている入力ネットワーク座標の値を、受信した制御データに含まれる入力ネットワーク座標に更新し、
前記ユニット番号一致判定部が、該更新した入力ネットワーク座標と前記ユニットネットワーク座標記憶部から読み出したユニットネットワーク座標とが一致するか否かを判定し、
前記ユニット番号一致判定部の判定結果が一致する場合には、前記ユニット制御部が、前記重み記憶部から読み出した結合重みベクトルを、データ出力部と前記ユニット出力バスとを介して前記分配制御部に出力する、
ことを特徴とする請求項14から請求項20に記載の並列演算装置。
【請求項22】
前記分配制御部が、
前記重みを設定することを示す制御コード、前記学習速度と近傍距離とを設定することを示す制御コード、実数ベクトルの次元数を設定すること示す制御コード、ノルムを算出することを示す制御コード、ノルムを出力することを示す制御コード、学習することを示す制御コード、または、学習結果を出力することを示す制御コードを含む制御データを、前記複数のユニットの数および学習回数に合わせて予め定められた順序で出力する、
ことを特徴とする請求項6から請求項12に記載の並列演算装置。
【請求項23】
前記複数のユニットと前記分配制御部とを接続する前記ユニット出力バスとユニット出力バスとが、互いに接続可能な第1の接続部と第2の接続部とにより分離し、
前記複数のユニットと前記第1の接続部とを含む第1の装置とし、
前記分配制御部と前記第2の接続部とを含む第2の装置とする、
ことを特徴とする請求項1から請求項22に記載の並列演算装置。
【請求項24】
予め定められた識別番号である固有ユニット番号によりそれぞれが識別される複数のユニットと、
前記複数のユニットの中のいずれか1つのユニットが出力する出力値がユニット出力バスを介して入力されたことに応じて、該入力された入力値と前記複数のユニットの中から選択したいずれか1つのユニットを選択する識別番号である選択ユニット番号とを含む制御データを、前記複数のユニットのそれぞれにユニット入力バスを介して出力する分配制御部と、
を有する並列演算装置で用いられる並列演算であって、
前記ユニットが、
前記ユニット入力バスを介して前記分配制御部からの制御データを入力し、
前記データ入力部に入力された制御データに含まれる選択ユニット番号と、前記固有ユニット番号とが一致するか否かを判定し、
前記入力された制御データに含まれる入力値に基づいて、前記ユニット毎に予め定められた演算方法により演算し、
前記判定した結果が一致である場合には、前記演算した結果である演算結果を前記出力値として、前記分配制御部に前記ユニット出力バスを介して出力する、
ことを特徴とする並列演算方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate