JPH0736182B2 - ニューロコンピュータ - Google Patents

ニューロコンピュータ

Info

Publication number
JPH0736182B2
JPH0736182B2 JP1024307A JP2430789A JPH0736182B2 JP H0736182 B2 JPH0736182 B2 JP H0736182B2 JP 1024307 A JP1024307 A JP 1024307A JP 2430789 A JP2430789 A JP 2430789A JP H0736182 B2 JPH0736182 B2 JP H0736182B2
Authority
JP
Japan
Prior art keywords
processor
processors
row
weight
cell
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP1024307A
Other languages
English (en)
Other versions
JPH02202665A (ja
Inventor
好司 藤本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sharp Corp
Original Assignee
Sharp Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sharp Corp filed Critical Sharp Corp
Priority to JP1024307A priority Critical patent/JPH0736182B2/ja
Priority to EP89124130A priority patent/EP0377221B1/en
Priority to DE68927474T priority patent/DE68927474T2/de
Publication of JPH02202665A publication Critical patent/JPH02202665A/ja
Priority to US07/885,239 priority patent/US5170463A/en
Publication of JPH0736182B2 publication Critical patent/JPH0736182B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Description

【発明の詳細な説明】 〈産業上の利用分野〉 本発明は、神経回路素子モデルに基づいて構成された大
規模な神経回路網を多数のプロセッサーを用いてシミュ
レーションするニューロコンピュータに関するものであ
る。
〈従来の技術〉 従来、神経回路素子モデルに基づいて構成された大規模
な神経回路網をシミュレーションする方法としては、高
速の汎用コンピュータが用いられているが、小規模な神
経回路網でも学習にかなりの時間が必要であり、中規模
の神経回路網では、数週間の単位の時間が必要となる。
このため、最近では計算の高速化のために、マルチプロ
セッサーによる並列処理が行われている。神経回路網を
構成する神経回路素子のモデルは多数提案されている
が、1つの神経回路網で使われる神経回路素子は1種類
の場合が多く、希に複数個のモデルが使用されることも
ある。このように各神経回路素子に対して同じ計算を行
うので、神経回路網のシミュレーションは、並列計算に
適していると考えられており、汎用の並列コンピュータ
によるシミュレーションが試みられている。大規模な神
経回路網では神経回路素子間の結合が非常に多いため、
多数のプロセッサーでシミュレーションする場合、各プ
ロセッサー間の結合方式が重要な問題である。
並列コンピュータの結合方式には、メッシュ型(格子
型)結合、クロスバー結合、トリー型結合、多段クロス
型結合、キューブ型結合など様々な方式が提案されてい
る。特に、神経回路素子のシミュレーションにはトリー
型結合、多段クロスバー型結合、キューブ型結合などが
適していると考えられている。しかし、これらの結合方
式では、プロセッサーの数が増えると、多数の切換え回
路を必要としたり、伝送路の容量が不足したり、配線の
交差が非常に多くなって実装が非常に複雑になるなど種
々の問題を含んでおり、神経回路網のシミュレーション
を効率良く並列処理するためのプロセッサー間の結合方
式は確立されていない。
〈発明が解決しようとする課題〉 神経回路網は同質の神経回路素子で構成されているの
で、これをシミュレーションする場合に多数のプロセッ
サーによる並列処理によって高速化が期待される。しか
し、大規模な神経回路網においては、神経回路素子間に
神経細胞のシナプスに相当する多数の結合があり、その
数は神経回路素子の数のほぼ2乗に比例して増加する。
したがって、多数の神経回路素子を適当な数のグループ
に分割して、各グループ毎に1つのプロセッサーを割り
付け、多数のプロセッサーによってシミュレーションの
処理をする場合に、各グループに含まれる神経回路素子
の間にも結合があるので、それに対応してプロセッサー
間にも情報を伝達する結合が必要である。そこで、シミ
ュレーションの処理速度を上げるためにプロセッサーの
数を増やしていくと、プロセッサー間の結合の数はプロ
セッサーの数のほぼ2乗に比例して増加する。また、処
理速度の向上のためには、プロセッサー間で情報を高速
に転送する必要があるので、プロセッサー間の結合を並
列化するなどして伝送容量、伝送速度を大きくして行く
必要がある。すなわち、シミュレーションの高速化のた
めにプロセッサーの並列化を高めようとすると、プロセ
ッサー間の結合が膨大になり、実装上実現が不可能にな
ってくる。したがって、プロセッサー間の結合が簡単で
処理の並列度が高い並列処理プロセッサーの構成を如何
に実現するかが本発明の解決すべき課題である。
〈課題を解決するための手段〉 上記の課題の解決手段として、本発明のニューロコンピ
ュータは、神経回路素子の1つのシナプスに対応する処
理として、1つのシナプスの結合係数に相当する重みの
係数を記憶する機能と、該記憶されている重み係数とそ
の重み係数に対応する入力の値との乗算を行い、伝送さ
れて来た部分和とその乗算結果との加算を行って部分和
を出力する機能および学習においてその重み係数の更新
処理を行う機能を有する重みプロセッサーと、重みプロ
セッサーの機能と、神経回路素子に必要な演算処理の中
で積和演算を除いた、神経回路素子モデルの出力結果と
関連付けられた所定関係の演算処理を行う神経回路素子
の細胞体に対応する演算処理機能を有する細胞プロセッ
サーと、外部装置から入力データを取り込み、該入力デ
ータを重みプロセッサー及び細胞プロセッサーに転送す
る機能を有する入力プロセッサーと、上記細胞プロセッ
サーの出力を取り出し、該出力を外部装置に転送する機
能を有する出力プロセッサーと、上記細胞プロセッサー
から出力を取り出して外部装置に転送する機能および学
習のための教師データを外部装置から取り込み、該教師
データを細胞プロセッサーに転送する機能を有する入出
力プロセッサーとから成り、神経回路網の外部入力の数
をH、神経回路素子の数をJとして、重みプロセッサ
ー、細胞プロセッサー、入力プロセッサー、出力プロセ
ッサー、入出力プロセッサーを(J+1)行、(H+
J)列の格子状に配列し、第0行目には(H+J)個の
入力プロセッサー、出力プロセッサーまたは入出力プロ
セッサーを配置し、第1行目から第J行目までは(H+
J−1)個の重みプロセッサーと1個の細胞プロセッサ
ーを配置し、各列には多くても1個の細胞プロセッサー
しか存在しないように配置し、個々の重みプロセッサー
および細胞プロセッサーは上、下、右、左の重みプロセ
ッサーあるいは細胞プロセッサーと格子状に双方向に接
続し、第1行目の重みプロセッサーおよび細胞プロセッ
サーはそれぞれ同じ列の入力プロセッサー、出力プロセ
ッサーまたは入出力プロセッサーに各々双方向に接続
し、さらに入力プロセッサー、出力プロセッサーまたは
入出力プロセッサーは外部装置と各々接続することによ
り、多数の神経回路素子よりなる神経回路網の計算を多
数のプロセッサーにより並列に行うことを特徴とする。
また、上記本発明のニューロコンピュータにおいて、上
記重みプロセッサー、細胞プロセッサー、入力プロセッ
サー、出力プロセッサーおよび入出力プロセッサーをす
べて仮想プロセッサーとみなし、(J+1)行、(H+
1)列の格子状に配列された仮想プロセッサー群を行方
向にP(P<J+1)分割、列方向にQ(Q<H+J)
分割し、分割された矩形領域に各々1つの実プロセッサ
ーを割り当てることにより、P行、Q列の格子状に実プ
ロセッサーの配列を構成し、各実プロセッサーは、上、
下、左、右の実プロセッサーと格子状に双方向に接続
し、各列には少なくとも1つの実プロセッサーには外部
装置との入出力機能を持たせ、各実プロセッサーは割り
当てられた該矩形領域に含まれる仮想プロセッサーの演
算機能を分担することにより、多数の神経回路素子より
成る神経回路網の計算を多数のプロセッサーにより並列
に行うことを特徴とする。
さらに、上記仮想プロセッサーの格子状配列の行の置
換、あるいは列の置換を行うことにより、各実プロセッ
サーに割り当てられる矩形領域内の仮想プロセッサーと
他の実プロセッサーに割り当てられる矩形領域内の仮想
プロセッサーとを入れ換えることにより、各実プロセッ
サーの負荷を均等化することを特徴とする。
〈作用〉 一般に、従来の並列型ニューロコンピュータの考え方で
は、第11図に示す神経回路素子を単位として、複数個の
神経回路素子のシミュレーションを1つの実プロセッサ
ーに分担させることによって並列処理を行うことが基本
的な考え方になっている。これに対して、本発明では、
1つの神経回路素子の計算処理をさらに細分化して、シ
ナプスの部分と細胞体の部分に分解してそれぞれのシミ
ュレーションに必要な計算処理を単位として、複数の計
算処理をプロセッサーに分担させるものである。これに
より非常に単純な結合方式によって、大規模で複雑な神
経回路網のシミュレーションを多数の実プロセッサーに
より並列に処理することができる。
神経回路素子のモデルは多くの種類が存在するが、一般
に第11図に示すように神経回路素子のモデルは次の式で
表される。
このモデルでは、式(1)がシナプスの機能に相当する
もので、シナプスの結合係数(重み係数)とそれに対応
する入力との積和演算である。そして、式(2)は、細
胞体の機能に対応するもので、一般的な表現をしてお
り、神経回路素子のモデルによって変化する。例えば、
パーセプトロンの場合にはシグモイド関数であり、ホッ
プフィールドモデルでは微分方程式の形で表される。
次に、神経回路網は一般的な形として第12図のように表
される。そして、神経回路網への入力を列ベクトル すべての神経回路素子の出力を列ベクトル で表し、中間結果を列ベクトル 重み係数をマトリックス とすると、神経回路網のモデルは一般に次のように表さ
れる。( )Tは行ベクトルと列ベクトル間の転置を示す。
ただし、 で、〔,〕はベクトルの併置を示す。
で表すと式(1)はベクトルの内積・を使って次のよう
に表すことができる。
式(5)をさらに分解すると、yj iを部分和として、式
(6)の漸化式で表すことができる。
yj i=yj i-1+wij・vi (6) yj i=yj i+1+Wij・Vi (7) この神経回路網のモデルでは、式(3)、式(5)、式
(6)及び式(7)が各シナプスの機能に相当するもの
で、シナプスの結合係数(重み係数)と神経回路網の入
力および細胞の出力との積和演算である。そして、式
(4)が各細胞体の機能に相当するものである。
本発明では、神経回路網の計算としては最も数の多い積
和演算を並列に行うために、積和演算を分解して部分和
を求める式(6)及び式(7)の演算とこの演算に必要
な重み係数の記憶を重みプロセッサーに分担させるもの
である。そして、細胞体の機能に相当する式(4)の計
算を細胞プロセッサーに分担させるものである。そし
て、これらの重みプロセッサーと細胞プロセッサーを格
子状に双方向の伝送線で接続し、上下左右のプロセッサ
ーと情報の交換を行うことができる。例えば、式(6)
の場合には、上の重みプロセッサーから伝搬されてきた
信号viを受け取り、その重みプロセッサーが持っている
重み係数Wijとの積wij・viを計算し、その結果に左の重
みプロセッサーから受け取った部分和yj i-1を加えて新
たな部分和yj i=yj i-1+wij・viを作る。最後に、これ
を右の重みプロセッサーに伝送する。これとは別に上の
重みプロセッサーから伝送されてきた信号viを下の重み
プロセッサーに転送する。
また、式(7)の場合には、上の重みプロセッサーから
伝搬されてきた信号viを受け取り、その重みプロセッサ
ーが持っている重み係数wijとの積wij・viを計算し、そ
の結果に右の重みプロセッサーから受け取った部分和yj
i+1を加えて新たな部分和yj i=yj i+1+wij・viを作る。
最後に、これを左の重みプロセッサーに伝送する。これ
とは別に上の重みプロセッサーから伝搬されてきた信号
viを下の重みプロセッサーに転送する。このような処理
を繰り返すことにより、yj 1=w1j・v1として最左端から
次々と重みプロセッサーを右方向に経由して部分和を積
算し、各行に配置された細胞プロセッサーに到達したと
ころで積和演算が完了する。同時に、yj H+J=wH+J,Jv
H+Jとして最右端から次々と重みプロセッサーを左方向
に経由して部分和を積算し、各行に配置された細胞プロ
セッサーに到達したところで積和演算が完了する。この
左右両方向からの積和演算の結果を加算し、その結果は
細胞プロセッサーにおいて式(4)の計算に使用され
る。計算された細胞体の出力zjは次の計算のために細胞
プロセッサー内に記憶され、次の計算では上と下の重み
プロセッサーに伝送される。細胞プロセッサーは各列に
は多くとも1つしか配置されていないので、細胞プロセ
ッサーの出力が他の細胞プロセッサーの出力と重なるこ
とはない。以上の格子状に配列された重みプロセッサー
および細胞プロセッサーによる神経回路網モデルの積和
演算は神経回路網の学習においても同様に行うことがで
きる。
次に、重みプロセッサー、細胞プロセッサー、入力プロ
セッサー、出力プロセッサー、入出力プロセッサーをす
べて仮想プロセッサーと考え、(J+1)行、(H+
J)列の格子状に配列された仮想プロセッサー群を縦方
向にP分割、横方向にQ分割し、分割された矩形領域に
各々1つの実プロセッサーを割り当て、P行、Q列の矩
形の格子状に実プロセッサーを接続した場合、各実プロ
セッサーは割り当てられた矩形領域の重みプロセッサー
が行っていた積和演算を逐次的に実行するが、P×Q個
の実プロセッサーがこの積和演算を並列に実行すること
ができる。式(6)及び式(7)を実プロセッサー毎の
式に書き換えると次のようになる。
ここで、Ilq、Iuqはそれぞれ第p行、第q列の実プロセ
ッサーが分担する矩形領域の最初の列番号と最後の列番
号を示す。式(8)または式(9)の右辺後半の積和演
算は各々の実プロセッサーで並列に実行することができ
る。細胞プロセッサーが分担する式(4)の計算はyj
計算が終わらないと実行することができないが、別々の
実プロセッサーに含まれている細胞プロセッサーについ
てはvj qの計算さえ終われば、並列に計算を実行するこ
とができる。一方yjの隣の実プロセッサーへの伝送は、
次のyj+1 qの計算中に行なうことができるので、実プロ
セッサー間の伝送が隘路になることはない。
以上、矩形の格子状接続によって、各々の実プロセッサ
ーで並列に計算が行われることを簡単に示したが、以下
に実施例として詳しく説明する。
〈実施例〉 本発明の実施例として、多層パーセプトロンのシミュレ
ーションを例に説明する。神経回路素子としてのパーセ
プトロンのモデルは、入力をxi、結合係数をwijとする
と、次の式で表される。
このモデルでは式(10)がシナプスの機能に相当するも
ので、シナプスの結合係数(重み係数)と入力値との積
和演算である。そして、式(11)は、細胞体の機能に対
応するもので、シグモイド関数による閾値処理を行って
いる。このように、パーセプトロンのモデルにおいても
シナプスに相当する積和演算と細胞体に相当する演算処
理に分けることができる。
この神経回路素子を使って、第13図に示すような多層パ
ーセプトロンの神経回路網を構成すると、n回目の神経
回路網の入力をxh(n)〔h=1,2,…,H,n=1,2,…,
N〕、そのときの各神経回路素子の出力をzj(n)〔j
=1,2,…,I,…,J,n=1,2,…,N〕、またn回目の学習に
おける神経回路素子の結合係数(重み係数)をw
ij(n)(i=1,2,…,H+J,j=1,2,…,J)とすると、
多層パーセプトロンのモデルは次のように表される。
〔中間層の第1層〕 〔中間層の第2層以降と出力層〕 さらに、入力値xh(n)に対して希望する出力値をt
j(n)とすると、式(16)〜(21)に示すエラーバッ
クプロパゲーションのアルゴリズムにより教師付学習が
行われる。
Δwij(n)=α・δ(n)・xi(n)〔i=1,2,…,
H〕 (16) Δwij(n)=α・δ(n)・zi-H(n)〔i=H+
1,H+2,…,H+J〕 (17) wij(n+1)=wij(n)+Δwij(n)+β・Δw
ij(n−1) (18) 〔出力層〕 δ(n)=f′(yj(n))・(tj(n)−z
j(n))=〔zj(n)・(1−zj(n))〕・(t
j(n)−zj(n)) (19) 〔中間層〕 δ(n+1)=f′(yj(n))・Sj(n)=〔z
j(n)・(1−zj(n))・Sj(n) (21) ここで、α,βは学習の条件をきめる係数を示す。
以上の学習の演算処理においても式(16)、式(17)、
式(18)および式(20)をシナプスの機能に対応させ、
式(19)および式(21)を細胞体の機能に対応させるこ
とができる。したがって、式(12)、式(14)、式(1
6)、式(17)、式(18)および式(20)を重みプロセ
ッサーに分担させ、式(13)、式(15)、式(19)およ
び式(21)を細胞プロセッサーに分担させることができ
る。
多層パーセプトロンの計算においては、入力層から出力
層に向けて前向きに層毎に逐次的に計算され、また学習
の計算においても、出力層から入力層に向けて逆向きに
層毎に逐次的に計算される。したがって、入力層を除く
層の数をM、L=M−1とし、また、 v1(n,m)=xi(n) 〔i=1,2,…,H〕 (22) として、計算の過程を細分化すると、式(12)〜式(2
1)は次のように表される。
〔前向きの計算〕
zj(n,0)=0 (24) zj(n)=zj(n,M) (27) 〔後向きの学習計算〕 Δwij(n)=α・δ(n,L)・vi(n,M) (28) wij(n+1)=wij(n)+Δwij(n)+β・Δw
ij(n−1) (29) 〔出力層〕 δ(n,l)=〔zj(n)・(1−zj(n))〕・(tj
(n)−zj(n)) (30) 〔中間層〕 δ(n,0)=0 (31) δ(n,l+1)=〔zj(n)・(1−zj(n))〕・S
j(n,l) (33) 式(25)をさらに分解すると、yj k(n,m)を部分和とし
て、細胞プロセッサーが第j行、第g(j)列に位置し
ているとすると、式(34)〜(37)の漸化式で表すこと
ができる。
yj 1(n,m)=w1,j(n)・v1(n,m) (34) yj k(n,m)=yj k-1(n,m)+wk,j(n)・vk(n,m)
〔k=2,…,g(j)〕 (35) yj H+J(n,m)=wH+J,j(n)・vH+J(n,m) (36) yj k(n,m)=yj k+1(n,m)+wk,j(n)・vk(n,m)
〔k=g(j)+1,…,H+J−1〕 (37) 同様に、式(32)もSj k(n)を部分和とし、細胞プロ
セッサーが第j行、第g(j)列に位置しているとする
と、式(38)〜(41)のように漸化式で表すことができ
る。
Sj 1(n,l)=δ(n,l)・wg(j),,1(n) (38) Sj k(n,l)=Sj k-1(n,l)+δ(n,l)・w
g(j),k(n)〔k=2,…,j〕 (39) Sj J(n,l)=δ(n,l)・wg(j),J(n) (40) Sj k(n,l)=Sj k+1(n,1)+δ(n,l)・w
g(j),k(n)〔k=j+1,…,J−1〕 (41) 以上の準備の下に、矩形の格子状に接続された重みプロ
セッサー、細胞プロセッサー、入力プロセッサー、出力
プロセッサーおよび入出力プロセッサーによって、多層
パーセプトロンのシミュレーションを行う方法について
説明する。
まず、重みプロセッサー、細胞プロセッサー、入力プロ
セッサー、出力プロセッサー、および入出力プロセッサ
ーの5種類のプロセッサーによる並列処理システムの構
成を第1図に示しており、同図及び後述する図中におい
て、□は重みプロセッサー、□は細胞プロセッサー、 入力プロセッサー、 出力プロセッサー、 入出力プロセッサーをそれぞれ示している。
神経回路網の外部入力の数をH、神経回路素子の数をJ
として、これらのプロセッサーを(J+1)行、(H+
J)列の格子状に配列する。第0行目にはH個の入力プ
ロセッサー100〜102、I個の出力プロセッサー103〜10
6、(J−I)個の入出力プロセッサー107〜108を配置
し、第1行目から第J行目までは行毎に(H+J−1)
個の重みプロセッサー110〜112、114〜121、123〜133、
135〜143、145〜146、150〜151、153〜163、165〜169、
180〜188と1個の細胞プロセッサー113、122、134、14
4、152、164、170、189を配置する。細胞プロセッサー
は第1行、第(H+1)列目から第J行、第(H+J)
列目まで対角線上に配置する。
個々の重みプロセッサーおよび細胞プロセッサーは上、
下、左、右の重みプロセッサーあるいは細胞プロセッサ
ーと格子状に双方向の伝送線に接続し、第1行目の重み
プロセッサー、細胞プロセッサーは同じ列の入力プロセ
ッサー、出力プロセッサーあるいは入出力プロセッサー
と双方向の信号線で接続する。そして、入力プロセッサ
ー103〜106および入出力プロセッサー107、108は外部装
置と信号線190〜198によって各々接続する。これらの接
続により重みプロセッサー、細胞プロセッサー、入力プ
ロセッサー、出力プロセッサーおよび入出力プロセッサ
ーは、格子状の矩形面を構成する。
次に、重みプロセッサーは重み係数が使われているか、
否か、すなわち、接続されているか否かを1ビットの結
合フラグとして記憶し、使われていれば(結合フラグ=
“1"ならば)その重み係数wij(n)を記憶する機能を
持っている。また細胞プロセッサーはその細胞の出力値
zj(n,m)と学習の計算における中間値δ(n,l)を記
憶する機能を持っている。入力プロセッサーは、入力デ
ーターを一時的に保持する機能を持っている。また、入
出力プロセッサーは、教師データーを一時的に保持する
機能を持っている。
多層パーセプトロンのシミュレーションでは、入力信号
に対して出力を計算する前向きの処理と学習をバックプ
ロパゲーションの方法によって行う後向きの処理があ
る。ここでは、前者を基本モードと呼び、後者を学習モ
ードと呼ぶことにする。学習モードには、中間値δ
(n)を計算する学習モード1と重み係数を更新する
学習モード2に分かれる。多層パーセプトロンの学習
は、第2図に示すように、入力データの設定、教師デー
タの設定およびこれら基本モード、学習モード1、学習
モード2の計算処理を繰り返し行うことにより実行され
る。第2図に示された多層パーセプトロンの学習処理
が、第1図に示す矩形の格子状に接続されたプロセッサ
ー群によって、どのように実行されるかを以下に示す。
S1重み係数の初期設定 重み係数の初期設定では、重みプロセッサー110〜112、
114〜121、123〜133、135〜143、145〜146、150〜151、
153〜163、165〜169、180〜188の中で結合係数Fij=1
の重みプロセッサーが記憶している重み係数wij(n)
を乱数によって初期化する。
S2入力データの設定 入力データの設定では、入力プロセッサー100〜102が外
部の処理装置から信号線190〜192を通して入力データxh
(n)を受け取り、これをvh(n,m)として保持すると
同時に下の重みプロセッサーにこのデータvh(n,m)を
転送する。
S3基本モードの計算処理 基本モードの計算処理では、与えられた入力に対して神
経回路網の出力を求めるために以下の計算処理を行な
う。まず、細胞プロセッサー113、122、134、144、15
2、164、170、189の出力値zj(n,0)を式(24)によっ
てすべて零にする。各重みプロセッサーおよび細胞プロ
セッサーは式(25)〜(27)に基づいて次の計算処理を
行う。ここでは、第i行、第1列目の重みプロセッサー
126、第i行、第h列目の重みプロセッサー129、第i
行、第(H+j)列目の重みプロセッサー137、第i
行、第(H+J)列目の重みプロセッサー140と第i
行、第(H+i)列目の細胞プロセッサー134の計算処
理を代表例として示す。
〔第i行、第1列目の重みプロセッサー126〕 上の重みプロセッサー120から転送されて来た信号v1
(n,m)を受け取り、下の重みプロセッサー141に転送す
る。
結合フラグ=“1"ならば、式(34)に示すように、信
号v1(n,m)と記憶している重み係数w1i(n)との積を
部分和の初期値yi 1(n,m)として右の重みプロセッサー
127に伝送する。もし、結合フラグ=“0"ならば、y
i 1(n,m)=0として右の重みプロセッサー127に転送す
る。
〔第i行、第h列目の重みプロセッサー129〕 上の重みプロセッサー121から転送されて来た信号vh
(n,m)を受け取り、下の重みプロセッサー142に転送す
る。
結合フラグ=“1"ならば、式(35)に示すように、左
の重みプロセッサー128から送られて来た部分和y
i h-1(n,m)に信号vh(n,m)と記憶している重み係数w
hi(n)との積を加えて新しい部分和yi h(n,m)として
右の重みプロセッサー130に伝送する。もし、結合フラ
グ=“0"ならば、左の重みプロセッサー128から送られ
て来た部分和yi h-1(n,m)をyi h(n,m)として右の重み
プロセッサー130に転送する。
〔第i行、第(k=H+J)列目の重みプロセッサー14
0〕 上の重みプロセッサー125から転送されて来た信号vk
(n,m)を受け取り、下の重みプロセッサー146に転送す
る。
結合フラグ=“1"ならば、式(37)に示すように、右
の重みプロセッサー138から送られて来た部分和y
i k+1(n,m)に信号vk(n,m)と記憶している重み係数w
ki(n)との積を加えて新しい部分和yi k(n,m)として
左の重みプロセッサー136に伝送する。もし、結合フラ
グ=“0"ならば、右の重みプロセッサー138から送られ
て来た部分和yi k+1(n,m)をyi k(n,m)として左の重み
プロセッサー136に転送する。
〔第i行、第(k=H+i)列目の細胞プロセッサー13
4〕 細胞プロセッサーの出力zi(n,m)をvg(i)(n,m)=v
H+i(n,m)として上の重みプロセッサー123と下の重み
プロセッサー143に伝送する。
結合フラグ=“1"ならば、左の重みプロセッサー133
から送られて来た部分和yi k-1(n,m)に信号vk(n,m)
と記憶している重み係数wki(n)との積を加え、さら
に、右の重みプロセッサー135から送られて来た部分和y
i k+1(n,m)を加えて最終の積和結果yi(n,m)=y
i k(n,m)+yi k+1(n,m)を得る。もし、結合フラグ=
“0"ならば、左の重みプロセッサー133から送られて来
た部分和yi k-1(n,m)と右の重みプロセッサー135から
送られて来た部分和yi k+1(n,m)を加えて最終の積和結
果yi(n,m)=yi k-1(n,m)+yi k+1(n,m)とする。
式(26)に従って、最終の積和結果yi(n,m)にシグ
モイド関数をかけて、神経細胞の出力zi(n,m+1)を
得る。
以上のように、細胞プロセッサーの左側にある重みプロ
セッサーでは部分和の計算を左から右方向に行い、細胞
プロセッサーの右側にある重みプロセッサーでは部分和
の計算を右から左方向に行うことになる。
上記の計算は入力に近い層から順番に出力値が決まって
行くので中間層、出力層の数、すなわちM回だけ繰り返
すことにより出力層の細胞プロセッサーの出力zi(n,
M)を得ることができる。
なお、基本モードでは、上記の計算後、各細胞プロセッ
サーの出力zj(n,M)は上方向に重みプロセッサーを通
して出力プロセッサー、入出力プロセッサーに転送し、
さらに、出力プロセッサー、入出力プロセッサーから外
部装置に出力することが出来る。
S4教師データの設定 教師データの設定では、細胞プロセッサーの内、外部に
対して結果を出力する細胞プロセッサーについて、対応
する入出力プロセッサー、例えば、107〜108が外部の処
理装置から信号線197〜198を通して教師データtj(n)
を取り込んで保持し、下の重みプロセッサーまたは細胞
プロセッサーに出力する。各重みプロセッサーはこの教
師データを上の重みプロセッサーから受け取り、下の重
みプロセッサーに転送する。そして、各細胞プロセッサ
ーは、上の重みプロセッサーから受け取った教師データ
に基づいて次の計算処理を行い、学習の中間値δ(n,
l)の初期化を行う。
〔第j行、第(k=H+j)列目の細胞プロセッサー16
4(出力層)〕 出力層の細胞プロセッサーでは、上の重みプロセッサー
153から転送されてきた教師データtj(n)を受け取
り、中間値δ(n,0)の初期値の式(30)に従って計
算する。
〔第i行、第(k=H+i)列目の細胞プロセッサー13
4(中間層)〕 中間層の細胞プロセッサーでは、中間値δ(n,0)の
初期値を式(31)に従って零にする。
S5学習モード1の計算処理 学習モード1では、学習の中間値δ(n,L)を求める
ために、入力プロセッサー、出力プロセッサーおよび入
出力プロセッサーは休止状態になり、各重みプロセッサ
ー、細胞プロセッサーは式(32)、式(33)に基づいて
次の計算処理を行う。ここでは、第j行、第h列目の重
みプロセッサー156,第1行、第(H+i)列目の重みプ
ロセッサー115、第j行、第(H+i)列目の重みプロ
セッサー161、第J行、第(H+i)列目の重みプロセ
ッサー186、第i行、第(H+j)列目の重みプロセッ
サー137、第i行、第(H+i)列目の細胞プロセッサ
ー134と第j行、第(H+j)列目の細胞プロセッサー1
64の計算処理を代表例として示す。
〔第j行、第h列目の重みプロセッサー156〕 右の重みプロセッサー157から転送されて来た信号δ
(n,l)を受け取り、左の重みプロセッサー155に転送
する。
〔第1行、第(k=H+i)列目の重みプロセッサー11
5〕 左の重みプロセッサー114から転送されて来た信号δ
(n,l)を受け取り、右の重みプロセッサー116に転送
する。
結合フラグ=“1"ならば、式(38)に従って、信号δ
(n,l)と記憶している重み係数wk1(n)との積を部
分和の初期値Si 1(n,l)として下の重みプロセッサー11
9に伝送する。もし、結合フラグ=“0"ならば、Si 1(n,
l)=0として下の重みプロセッサー119に転送する。
〔第i行、第(k=H+j)列目の重みプロセッサー13
7〕 左の重みプロセッサー136から転送されて来た信号δ
(n,l)を受け取り、右の重みプロセッサー138に転送
する。
結合フラグ=“1"ならば、式(39)に従って、上の重
みプロセッサー124から送られて来た部分和Sj i-1(n,
l)に信号δ(n,l)と記憶している重み係数w
ki(n)との積を加えて新しい部分和Sj i(n,l)として
下の重みプロセッサー145に伝送する。もし、結合フラ
グ=“0"ならば、送られて来た部分和Sj i-1(n,l)とし
て下の重みプロセッサー145に転送する。
〔第J行、第(k=H+i)列目の重みプロセッサー18
6〕 右の重みプロセッサー187から転送されて来た信号δ
(n,l)を受け取り、左の重みプロセッサー185に転送
する。
結合フラグ=“1"ならば、式(40)に従って、信号δ
(n,l)と記憶している重み係数wkJ(n)との積を部
分和の初期値Si J(n,l)として上の重みプロセッサー18
0に伝送する。もし、結合フラグ=“0"ならば、Si J(n,
l)=0として上の重みプロセッサー180に転送する。
〔第j行、第(k=H+i)列目の重みプロセッサー16
1〕 右の重みプロセッサー162から転送されて来た信号δ
(n,l)を受け取り、左の重みプロセッサー160に転送
する。
結合フラグ=“1"ならば、式(41)に従って、下の重
みプロセッサー168から送られて来た部分和Si j+1(n,
l)に信号δ(n,l)と記憶している重み係数w
kj(n)との積を加えて新しい部分和Si j(n,l)として
上の重みプロセッサー151に伝送する。もし、結合フラ
グ=“0"ならば、送られて来た部分和Si j+1(n,l)をSi
j(n,l)として上の重みプロセッサー151に転送する。
〔第j行、第(k=H+j)列目の細胞プロセッサー
(出力層)164〕 学習の中間値δ(n,l)を左の重みプロセッサー163
および右の重みプロセッサー165に伝送する。
出力層においては、式(30)から学習の中間値δ
(n,l)はlによっては変化しないので、δ(n,l+
1)=δ(n,l)とする。
〔第i行目、第(k=H+i)列の細胞プロセッサー
(中間層)134〕 学習の中間値δ(n,l)を左の重みプロセッサー133
および右の重みプロセッサー135に転送する。
結合フラグ=“1"ならば、式(39)に従って、上の重
みプロセッサー123から送られて来た部分和Si i-1(n,
l)に信号δ(n,l)と記憶している重み係数w
ki(n)の積を加え、さらに下の重みプロセッサー143
から送られて来た部分和Si i+1(n,l)を加えて最終の積
和結果Si(n,l)=Si i(n,l)+Si i+1(n,l)を得る。
もし、結合フラグ=“0"ならば、上の重みプロセッサー
から送られて来た部分和Si i-1(n,l)と下の重みプロセ
ッサーから送られて来た部分和Si i-1(n,l)と下の重み
プロセッサーから送られて来た部分和Si i+1(n,l)とを
加えて最終の積和結果Si(n,l)=Si i-1(n,l)+Si i+1
(n,l)とする。
最終の積和結果Si(n,l)と出力値zi(n)から式(3
3)に従って、新しい学習の中間値δ(n,l+1)を計
算する。
以上のように、細胞プロセッサーの上側に位置する重み
プロセッサーでは部分和の計算を上から下方向に行い、
細胞プロセッサーの下側に位置する重みプロセッサーで
は部分和の計算を下から上方向に行うことになる。ま
た、細胞プロセッサーが存在しない列においては、縦方
向(列方向)の計算は行われず単に横方向(右から左あ
るいは左から右)の情報伝送が行われるのみである。
学習モード1も基本モードとは異なり、上記の計算は出
力層から入力層に向かって層毎に順番に行われるので、
中間層の数、すなわち、L=M−1回だけ繰返すことに
より学習の中間値δ(n,L)を得ることができる。
S6学習モード2の計算処理 学習モード2では、各重みプロセッサー、細胞プロセッ
サー、入力プロセッサーは式(28)、式(29)に基づい
て以下の計算処理を行う。このモードでは重み係数の更
新を行うので、出力プロセッサーおよび入出力プロセッ
サーは、休止状態となる。ここでは、第1行、第h列目
の入力プロセッサー101、第j行、第h列目の重みプロ
セッサー156,第i行、第(H+j)列目の重みプロセッ
サー137と第i行、第(H+i)列目の細胞プロセッサ
ー134の計算処理を代表例として示す。
〔第1行、第h列目の入力プロセッサー101〕 入力データxh(n)をvh(n,M)として下の重みプロ
セッサー111に転送する。
〔第j行、第h列目の重みプロセッサー156〕 右の重みプロセッサー157から転送されて来た学習の
中間値δ(n,L)を受け取り、左の重みプロセッサー1
55に転送する。h=1のときには、左の重みプロセッサ
ーへの転送は行わない。
上の重みプロセッサー150から転送されて来た信号vh
(n)を受け取り、下の重みプロセッサー167に転送す
る。j=Jのときには、下の重みプロセッサーへの転送
は行わない。
結合フラグ=“1"ならば、右の重みプロセッサー157
から送られて来た学習の中間値δ(n,L)と上の重み
プロセッサー150から送られて来た信号vh(n,m)から式
(28)に従って、重み係数whj(n)の変更量Δw
hj(n)を計算し、式(29)に従って重み係数w
hj(n)をwhj(n+1)に更新する。もし、結合フラ
グ=“0"ならば、何も行わない。
〔第i行、第(k=H+j)列目の重みプロセッサー13
7〕 左の重みプロセッサー136から転送されて来た学習の
中間値δ(n,L)を受け取り、右の重みプロセッサー1
38に転送する。
下の重みプロセッサー145から転送されて来た信号v
g(j)(n,M)=vk(n,M)を受け取り、上の重みプロセッ
サー124に転送する。
結合フラグ=“1"ならば、左の重みプロセッサー136
から送られて来た学習の中間値δ(n,L)と下の重み
プロセッサー145から送られて来た信号vk(n,M)から式
(28)に従って、重み係数wki(n)の変更量Δw
ki(n)を計算し、式(29)に従って重み係数w
ki(n)をwki(n+1)に更新する。もし、結合フラ
グ=“0"ならば、何も行わない。
〔第j行、第(k=H+j)列目の細胞プロセッサー16
4〕 細胞プロセッサーの学習の中間値δ(n,L)を左の
重みプロセッサー163および右の重みプロセッサー165に
転送する。
細胞プロセッサーの出力zj(n,M)をvg(j)(n,M)=v
k(n,M)として上の重みプロセッサー153および下の重
みプロセッサー169に転送する。
結合フラグ=“1"ならば、学習の中間値δ(n,L)
と信号vk(n,M)から式(28)に従って、重み係数w
kj(n)の変更量Δwkj(n)を計算し、式(29)に従
って重み係数wkj(n)を更新する。もし、結合フラグ
=“0"ならば、何も行わない。
S7学習の収束判定 学習の収束判定では、出力層の細胞プロセッサーの出力
信号と教師データとの誤差ξ=(tj(n)-zj(n))2の平均
値または最大値が所定の値より小さくなったかどうかを
調べて学習の完了を判定する。誤差が所定の値より小さ
くなった場合は、学習を終了する。一方、誤差が所定の
値より大きい場合には、S2の処理にもどって入力データ
を繰り返し与えることにより学習を継続する。
以上、多層パーセプトロンを例に神経回路網のシミュレ
ーションを並列に実行するニューロコンピュータの構成
について説明した。
しかし、上記の矩形の格子状に結合されたプロセッサー
群より成るニューロコンピュータでは、神経回路網の規
模が大きくなると(J+1)×(H+J)個の極めて多
くのプロセッサーが必要ニなり現実的ではない。したが
って、本発明では現実的な数のプロセッサーで大規模な
神経回路網をシミュレーションできる手段を上記の矩形
の格子状結合を基本として更に提案するものである。
前記の重みプロセッサー、細胞プロセッサー、入力プロ
セッサー、出力プロセッサー、入出力プロセッサーをす
べて仮想プロセッサーと考え、第3図に示すように、
(J+1)行、(H+J)列の格子状に配列された仮想
プロセッサー群を行方向にP(P<J+1)分割、列方
向にQ(Q<H+J)分割する。
次に、第4図(a)に示すように分割された矩形領域に
各々1つの実プロセッサー(実際のプロセッサー)410
〜434を割り当てることにより、P行、Q列の格子状に
実プロセッサーの配列を構成する。各実プロセッサー
は、上、下、左、右の実プロセッサーと双方向の伝送線
によって格子状に接続する。ただし、最右端の実プロセ
ッサー414、419、424、429、434は右方向への接続がな
く、また最左端の実プロセッサー410、415、420、425、
430は左方向への接続がない。更に、最下端の実プロセ
ッサー430〜434は下方向への接続がない。さらに、各列
には少なくとも1つの実プロセッサーに入出力機能を持
たせるために、最上端の実プロセッサー410〜414を信号
線401〜405によって、ホストコンピュータ400のバスラ
イン406にそれぞれ接続する。
入出力機能をもった実プロセッサーは第4図(b)に示
すように、割り当てられた矩形領域に含まれる入力プロ
セッサー、出力プロセッサー、入出力プロセッサー、重
みプロセッサーおよび細胞プロセッサーの演算機能、記
憶機能を分担する。そして、他の実プロセッサーは第4
図(c)に示すように、割り当てられた矩形領域に含ま
れる重みプロセッサーおよび細胞プロセッサーの演算機
能、記憶機能を分担する。実プロセッサーは、重み係
数、細胞の出力値や学習の中間値を記憶するデータメモ
リーと4方向の接続ができる入出力機能をもった通常の
マイクロプロセッサーで良いが、高速の積和演算機能を
持っていることが望ましい。以上のように構成された実
プロセッサー群は仮想プロセッサー群と同様に矩形の格
子状に結合された実プロセッサー群を構成する。この実
プロセッサーは格子の接点(交差点)に位置するので、
これをノードプロセッサー(Node Processor略してNP)
と呼ぶことにする。
適切なPとQの値を選んでこの矩形の格子状に結合され
たノードプロセッサー群を用いれば、現実的な数のプロ
セッサーで大規模な神経回路網の計算を並列に行うニュ
ーロコンピュータを実現することができる。各ノードプ
ロセッサーは逐次処理を行うが、P×Q台のノードプロ
セッサーが並列に処理を行う。特に、非常に時間のかか
る積和演算については、重みプロセッサーが個々に行っ
ていた部分和の計算を、各ノードプロセッサーが分担す
る矩形領域の中での部分和の計算として各ノードプロセ
ッサーが独立に行うものである。すなわち、式(34)〜
式(37)の積和演算に対しては第j行目に位置する細胞
プロセッサーを含むノードプロセッサーが第U(J)
行、第R(j)列目に位置するものとすると、式(42)
〜式(46)のように統合される。
yj 1(n,m)=Bj 1(n,m) (43) yj q(n,m)=yj q-1(n,m)+Bj q(n,m)〔q=2,…,R
(j)〕 (44) yj Q(n,m)=Bj Q(n,m) (45) yj q(n,m)=yj q+1(n,m)+Bj q(n,m) (46) ここで、Iuqは第q列目の矩形領域の最右端の列番号を
表し、Ilqは同じ矩形領域の最左端の列番号を表わす。
上式は、細胞プロセッサーを含むノードプロセッサーよ
り左側に位置するノードプロセッサーは左から右方向に
部分和を計算し、細胞プロセッサーを含むノードプロセ
ッサーより右側に位置するノードプロセッサーは右から
左方向に部分和を計算する。
また、式(38)〜式(41)の積和演算に対しては、第j
行目に位置する細胞プロセッサーを含むノードプロセッ
サーが第U(j)行、第R(j)列目に位置するものと
すると、式(47)〜式(51)のように統合される。
Sj 1(n,l)=Dj 1(n,l) (48) Sj p(n,l)=sj p-1(n,l)+Dj p(n,l)〔p=2,…,U
(j)〕 (49) Sj p(n,l)=Dj p(n,l) (50) Sj p(n,l)=Sj p+1(n,l)+Dj p(n,l)〔p=U(j)
+1,…,P−1〕 (51) ここで、Iupは第p行目の矩形領域の最上端の行番号を
表し、Ilpは同じ矩形領域の最下端の行番号を表わす。
上式は、細胞プロセッサーを含むノードプロセッサーよ
り上側に位置するノードプロセッサーは上から下方向に
部分和を計算し、細胞プロセッサーを含むノードプロセ
ッサーより下側に位置するノードプロセッサーは下から
上方向に部分和を計算する。ただし、細胞プロセッサー
を含まない列については、信号を右から左、または、左
から右に情報を転送するだけで、上式の処理は行われな
い。
以上の計算処理において、式(42)、式(47)は各ノー
ドプロセッサーにおいて並列に計算され、式(43)〜式
(46)、式(48)〜式(51)はノードプロセッサーの中
を部分和yj q(n,m)、Sj p(n,l)が通過していく過程に
おいて逐次計算される。
なお、第4図(b),(c)及び後述する図中におい
て、 はバッファメモリを表している。
以上の準備の元に、第4図(a)、第4図(b)及び第
4図(c)を用いて、格子状矩形面のニューロコンピュ
ータの並列動作について、重みプロセッサー、細胞プロ
セッサー、入力プロセッサー、出力プロセッサー、入出
力プロセッサーの場合と同様、多層パーセプトロンのシ
ミュレーションを例に第2図に示す処理フローに沿って
説明する。
S1重み係数の初期設定 各ノードプロセッサーは、分担している重みプロセッサ
ーが記憶している重み係数を、逐次、乱数によって初期
化する。各ノードプロセッサーは独立に初期化を行う。
S2入力データの設定 入出力機能を持った各ノードプロセッサー410〜414は第
4図(a)に示すように、分担している各入力プロセッ
サーに対して入力データを逐次ホストコンピュータ400
から受け取り、これを入力プロセッサーのバッファ44
5、446に保持する。
S3基本モードの計算処理 基本モードの計算処理では、まず、細胞プロセッサーを
分担している各ノードプロセッサーは、細胞プロセッサ
ーの出力値zj(n,0)=vg(j)(n,0)に初期値として
式(24)によって逐次零をあたえる。
次に、m=0として以下の処理を繰り返す。各重みプロ
セッサーおよび細胞プロセッサーの計算処理について、
第1行、第q列目のノードプロセッサー412、第p行、
第1行目のノードプロセッサー420、第p行、第Q列目
のノードプロセッサー424、第p行、第q列目のノード
プロセッサー422、の計算処理を例に説明するが、これ
らの処理は各ノードプロセッサーで同時に並列に実行さ
れる。
〔第1行、第q列目のノードプロセッサー412〕 (第4図(b)) 第1行、第q列目のノードプロセッサー412が分担し
ている矩形領域内に細胞プロセッサーが存在する列k=
g(j)があれば、vk(n,m)=zj(n,m)とし、vk(n,
m)を列番号kと一緒に下のノードプロセッサーに逐次
転送する。また、入力プロセッサーが存在する列hがあ
れば、ホストコンピュータから入力データを取り込み、
vh(n,m)=xh(n)として、これを入力プロセッサー
内に保持すると同時に、vh(n,m)を列番号hと一緒に
下のノードプロセッサーに逐次転送する。細胞プロセッ
サー、入力プロセッサーが存在していない列について
は、下のノードプロセッサーから転送されて来た信号vi
(n)〔iε{Ilp,Ilp+1,…,Iup−1,Iup}〕を次受け
取り、各列毎にバッファ464に保持する。
第1行、第q列目のノードプロセッサー412が分担し
ている矩形領域の重みプロセッサーについて各行毎に式
(42)によって矩形領域内の部分和Bj q(n,m)を計算す
る。計算が終われば、バッファ456〜460に格納してお
く。
左のノードプロセッサーから部分和yjq-1(n,m)が行
番号jと一緒に送られて来た場合には、矩形領域内の部
分和Bj q(n,m)の計算が済んでいるか否かを調べ、も
し、済んでいれば、式(44)によって新しい部分和yj q
(n,m)を計算する。もし、矩形領域内の部分和の計算
が終わっていない場合には、部分和yj q-1(n,m)を一旦
行番号jと一緒にバッファ456〜460に格納しておき、矩
形領域内の部分和Bj q(n,m)の計算が済むのを待つ。矩
形領域内の部分和Bj q(n,m)の計算が終了すれば直ちに
式(44)によって、新しい部分和yj q(n,m)を計算す
る。ここで、矩形領域内のj行目に細胞プロセッサーが
含まれているかを調べ、もし、含まれていなければ、新
しい部分和yj q(n,m)を番号jと一緒に右のノードプロ
セッサーに転送する。もし、含まれていれば、右のノー
ドプロセッサーから送られてくるyj q+1(n,m)と新しい
部分和yj q(n,m)を加算して積和演算結果yj(n,m)=y
j q(n,m)+yj q+1(n,m)とする。
次に、右のノードプロセッサーから部分和yj q+1(n,m)
が行番号jと一緒に送られて来た場合には、左の場合と
同様、上記のように式(46)によって新しい部分和yj q
(n,m)を計算する。ここで、矩形領域内のj行目に細
胞プロセッサーが含まれているかを調べ、もし、含まれ
ていなければ、新しい部分和yj q(n,m)を番号jと一緒
に右のノードプロセッサーに転送する。もし、含まれて
いれば、左のノードプロセッサーから送られて来るyj
q-1(n,m)と新しい部分和yj q(n,m)を加算して積和演
算結果yj(n,m)=yj q(n,m)+yj q-1(n,m)とする。
細胞プロセッサーを含む行については、最終の積和結
果yj(n,m)の計算が終了すれば、式(26)に従って、
積和結果yj(n,m)にシグモイド関数をかけて、神経細
胞の出力zj(n,m+1)を計算し、これを細胞プロセッ
サー467〜469に対応する記憶領域に格納する。
〔第p行、第1列目のノードプロセッサー420〕 (第4図(c)) 第p行、第1列目のノードプロセッサー420が分担し
ている矩形領域内に細胞プロセッサーが存在する列k=
g(j)があれば、vk(n,m)=zj(n,m)とし、vk(n,
m)を列番号kと一緒に上のノードプロセッサー415およ
び下のノードプロセッサー425に逐次転送する。細胞プ
ロセッサーが存在していない列については、上のノード
プロセッサー415から転送されて来た信号vi(n)〔i
Ilp,Ilp+1.…,Iup−1,Iup〕を逐次受け取り、各列毎
にバッファ470,473,474に保持すると同時に、vi(n,m)
を列番号iと一緒に下のノードプロセッサー425に逐次
転送する。ただし、p=pの場合には下方向への転送は
行わない。下のノードプロセッサー425から転送されて
来た信号vi(n)〔iε{Ilp Ilp+1,…,Iup−1,Iu
p}〕については、これを逐次受け取り、各列毎バッフ
ァ470、473、474に保持すると同時に、vi(n,m)を列番
号iと一緒に上のノードプロセッサー415に逐次転送す
る。ただし、p=1の場合には上方向への転送は行わな
い。
第p行、第1列目のノードプロセッサー420が分担し
ている矩形領域の重みプロセッサーについては各行毎に
式(42)によって矩形領域内の部分和Bj 1(n,m)を計算
する。計算が終われば、バッファ488〜493に格納してお
く。
第p行、第1列目のノードプロセッサー420が分担し
ている矩形領域内のj行目に細胞プロセッサーが含まれ
ていない場合には、式(43)により部分和の初期値をyj
1(n,m)=Bj 1(n,m)としてその行番号jと一緒に右の
ノードプロセッサーに転送する。
第p行、第1列目のノードプロセッサー420が分担し
ている矩形領域内のj行目に細胞プロセッサーが含まれ
ている場合には、右のノードプロセッサーから部分和yj
2(n,m)が行番号jと一緒に送られて来たならば、矩形
領域内の部分和Bj 1(n,m)の計算が済んでいるか否かを
調べ、もし、済んでいれば、式(46)によって新しい部
分和yj 1(n,m)を計算する。もし、矩形領域内の部分和
の計算がまだ終わっていない場合には、部分和yj 2(n,
m)を一旦行番号jと一緒にバッファ488〜493に格納し
ておき、矩形領域内の部分和Bj 1(n,m)の計算が済むの
を待つ。矩形領域内の部分和Bj 1(n,m)の計算が終了す
れば、直ちに式(46)によって、新しい部分和yj 1(n,
m)を計算する。ここで得られた新しい部分和yj 1(n,
m)を積和演算結果yj(n,m)とする。
〔第p行、第Q列目のノードプロセッサー424〕 (第4図(c)) 第p行、第Q列目のノードプロセッサー424が分担し
ている矩形領域内に細胞プロセッサーが存在する列k=
g(j)があれば、vk(n,m)=zj(n,m)とし、vk(n,
m)を列番号kと一緒に上のノードプロセッサー419およ
び下のノードプロセッサー429に逐次転送する。細胞プ
ロセッサーが存在していない列については、上のノード
プロセッサー419から転送されて来た信号vi(n)〔i
∈{Ilp,Ilp+1,…,Iup−1,Iup}〕を逐次受け取り、各
列毎にバッファ470、473、474に保持すると同時に、vi
(n,m)を列番号iと一緒に下のノードプロセッサー429
に逐次転送する。ただし、p=Pの場合には下方向への
転送は行わない。下のノードプロセッサー429から転送
されて来た信号vi(n)〔iε{Ilp,Ilp+1,…,Iup−
1,Iup}〕については、これを逐次受け取り、各列毎に
バッファ470、473、474に保持すると同時に、vi(n,m)
を列番号iと一緒に上のノードプロセッサー419に逐次
転送する。ただし、p=1の場合には上方向への転送は
行わない。
第p行、第Q列目のノードプロセッサー424が分担し
ている矩形領域の重みプロセッサーについて各行毎に式
(42)によって矩形領域内の部分和Bj Q(n,m)を計算す
る。計算が終われば、バッファ488〜493に格納してお
く。
第p行、第Q列目のノードプロセッサー424が分担し
ている矩形領域内のj行目に細胞プロセッサーが含まれ
ていない場合には、式(45)により部分和の初期値をyj
Q(n,m)=Bj Q(n,m)としてその行番号jと一緒に左の
ノードプロセッサーに転送する。
第p行、第Q列目のノードプロセッサー424が分担し
ている矩形領域内のj行目に細胞プロセッサーが含まれ
ている場合には、左のノードプロセッサーから部分和yj
Q-1(n,m)が行番号jと一緒に送られて来たならば、矩
形領域内の部分和Bj 1(n,m)の計算が済んでいるか否か
を調べ、もし、済んでいれば、式(46)によって新しい
部分和yj Q(n,m)を計算する。もし、矩形領域内の部分
和の計算がまだ終わっていない場合には、部分和yj Q-1
(n,m)を一旦行番号jと一緒にバッファ488〜492に格
納しておき、矩形領域内の部分和Bj Q(n,m)の計算が済
むのを待つ。矩形領域内の部分和Bj Q(n,m)の計算が終
了ずれば直ちに式(44)によって、新しい部分和y
j Q(n,m)を計算する。ここで得られた新しい部分和yj Q
(n,m)を積和演算結果yj(n,m)とする。
細胞プロセッサーを含む行については、最終の積和結
果yj(n,m)の計算が終了すれば、式(26)に従って、
積和結果yj(n,m)にシグモイド関数をかけて、神経細
胞の出力zj(n,m+1)を計算し、これを細胞プロセッ
サー494〜496に対応する記憶領域に格納する。
〔第p行、第q列目のノードプロセッサー422〕 (第4図(c)) 第p行、第q列目のノードプロセッサー422が分担し
ている矩形領域内に細胞プロセッサーが存在する列k=
g(j)があれば、vk(n,m)=zj(n,m)とし、vk(n,
m)を列番号kと一緒に上のノードプロセッサー417およ
び下のノードプロセッサー427に逐次転送する。細胞プ
ロセッサーが存在していない列については、上のノード
プロセッサー417から転送されて来た信号vi(n)〔i
∈{Ilp,Ilp+1,…,Iup,Iup}〕を逐次受け取り、各列
毎にバッファ470、473、474に保持すると同時に、v
i(n,m)を列番号iと一緒に下のノードプロセッサー42
7に逐次転送する。ただし、p=Pの場合には下方向へ
の転送は行わない。下のノードプロセッサー427から転
送されて来た信号vi(n)〔i∈{Ilp,Ilp+1,…,Iup
−1,Iup}〕については、これを逐次受け取り、各列毎
にバッファ470,473,474に保持すると同時に、vi(n,m)
を列番号iと一緒に上のノードプロセッサー417に逐次
転送する。ただし、p=1の場合には上方向への転送は
行わない。
第p行、第q列目のノードプロセッサー422が分担し
ている矩形領域の重みプロセッサーについて各行毎に式
(42)によって矩形領域内の部分和Bj q(n,m)を計算す
る。計算が終われば、バッファ488〜493に格納してお
く。
左のノードプロセッサー421から部分和yj q-1(n,m)
が行番号jと一緒に送られて来たならば、矩形領域内の
部分和Bj q(n,m)の計算が済んでいるか否かを調べ、も
し、済んでいれば、式(44)によって新しい部分和yj q
(n,m)を計算する。もし、矩形領域内の部分和の計算
がまだ終わっていない場合には、部分和yj q-1(n,m)を
一旦行番号jと一緒にバッファ488〜493に格納してお
き、矩形領域内の部分和Bj q(n,m)の計算が済むのを待
つ。矩形領域内の部分和Bj q(n,m)の計算が終了すれば
直ちに式(44)によって、新しい部分和yj q(n,m)を計
算する。ここで、矩形領域内のj行目に細胞プロセッサ
ーが含まれているかを調べ、もし、含まれていなけれ
ば、新しい部分和yj q(n,m)を番号jと一緒に右のノー
ドプロセッサー423に転送する。もし、含まれていれ
ば、右のノードプロセッサー423から行番号jと一緒に
送られて来る部分和yj q+1(n,m)と新しい部分和y
j q(n,m)を加算して積和演算結果yj(n,m)=yj q(n,
m)+yj q+1(n,m)とする。
また、右のノードプロセッサー423から部分和yj q+1(n,
m)が行番号jと一緒に送られて来たならば、矩形領域
内の部分和Bj q(n,m)の計算が済んでいるか否かを調
べ、もし、済んでいれば、式(46)によって新しい部分
和yj q(n,m)を計算する。もし、矩形領域内の部分和の
計算がまだ終わっていない場合には、部分和yj q+1(n,
m)を一旦行番号jと一緒にバッファ476〜481に格納し
ておき、矩形領域内の部分和Bj q(n,m)の計算が済むの
を待つ。矩形領域内の部分和Bj q(n,m)の計算が終了す
れば直ちに式(46)によって、新しい部分和yi q(n,m)
を計算する。ここで、矩形領域内のj行目に細胞プロセ
ッサーが含まれているかを調べ、もし、含まれていなけ
れば、新しい部分和yj q(n,m)を番号jと一緒に左のノ
ードプロセッサー421に転送する。もし、含まれていれ
ば、左のノードプロセッサー421から行番号jと一緒に
送られてくる部分和yj q-1(n,m)と新しい部分和y
j q(n,m)を加算して積和演算結果yj(n,m)=y
j q-1(n,m)+yj q(n,m)とする。
細胞プロセッサーを含む行については、最終の積和結
果yj(n,m)の計算が終了すれば、式(26)に従って、
積和結果yj(n,m)にシグモイド関数をかけて、神経細
胞の出力zj(n,m+1)を計算し、これを細胞プロセッ
サー494〜496に対応する記憶領域に格納する。
以上の計算は、各行について、細胞プロセッサーを含む
ノードプロセッサーより左にあるノードプロセッサーに
ついては左から右方向に計算が行われ、細胞プロセッサ
ーを含むノードプロセッサーより右にあるノードプロセ
ッサーについては右から左方向に計算が行われる。
上記の計算は入力に近い層から順番に出力値が決まって
行くので、m=m+1としながら中間層、出力層の数、
すなわち、M回だけ繰り返すことにより出力層の細胞プ
ロセッサーの出力zj(n,M)を得ることができる。
S4教師データの設定 教師データの設定では、入出力機能を持つノードプロセ
ッサー410〜414の内で入出力プロセッサー(出力層に属
する各細胞プロセッサーが位置する列に1つずつ配置さ
れる)を含むノードプロセッサーは、ホストプロセッサ
ーから信号バス406を通して教師データtj(n)を受け
取り、その列番号g(j)と一緒に下のノードプロセッ
サーに出力する。各ノードプロセッサーはこの教師デー
タを上のノードプロセッサーから受け取り、その列番号
と一緒に下のノードプロセッサーに転送する。そして、
各細胞プロセッサーを含むノードプロセッサーは、式
(30)によって学習の中間値δ(n,l)の初期化を行
う。
出力層の細胞プロセッサーを含むノードプロセッサー
では、上のノードプロセッサーから転送されてきた教師
データtj(n)を受け取り、中間値δ(n,0)初期値
を式(30)に従って計算し、細胞プロセッサーに対応す
る記憶領域にに格納する。
中間層の細胞プロセッサーを含むノードプロセッサー
では、中間値δ(n,0)の初期値を式(31)に従って
零にし、細胞プロセッサーに対応する記憶領域に格納す
る。
S5学習モード1の計算処理 学習モード1では、各ノードプロセッサーはl=0とし
て以下の処理を繰り返す。各ノードプロセッサーが分担
する重みプロセッサーおよび細胞プロセッサーの計算処
理について、第1行、第q列目のノードプロセッサー41
2、第P行、第q列目のノードプロセッサー432、第p
列、第q列目のノードプロセッサー422の計算処理を例
に説明するが、これらの処理は各ノードプロセッサーで
同時に並列に実行される。
〔第1行、第q列目のノードプロセッサー412〕 (第4図(b)) 第1行、第q列目のノードプロセッサー412が分担し
ている矩形領域内に細胞プロセッサーを含む行jがあれ
ば、学習の中間値δ(n,l)を行番号jと一緒に左の
ノードプロセッサー411および右のノードプロセッサー4
13に転送する。細胞プロセッサーの含まれていない行に
ついては、左のノードプロセッサー411から転送されて
来た学習の中間値δ(n,l)〔k∈{Jlp,Jlp+1,…,J
up−1,Jup}〕を逐次受け取り、行毎にバッファ452、45
5に保持すると同時に、学習の中間値δ(n,l)を行番
号kと一緒に右のノードプロセッサー413に転送する。
ただし、q=Qの時には、右方向への転送は行わない。
右のノードプロセッサーから転送されて来た学習の中間
値δ(n,l)〔k∈{Jlp,Jlp+1,…,Jup−1,Jup}〕
を逐次受け取り、行毎にバッファ457、460に保持すると
同時に、学習の中間値δ(n,l)を行番号kと一緒に
左のノードプロセッサー411に転送する。ただし、q=
Qの時には、右方向への転送は行わない。
第1行、第q列目のノードプロセッサー412が分担し
ている矩形領域の重みプロセッサーについて各行毎に式
(47)によって矩形領域内の部分和Dj 1(n,l)を計算す
る。計算が終われば、結果をバッファ461〜466に格納し
ておく。
第1行、第q列目のノードプロセッサー412が分担し
ている矩形領域内のj行目に細胞プロセッサーが含まれ
ていない場合には、式(48)により部分和の初期値をSi
1(n,l)=Dj 1(n,l)として、その列番号jと一緒に下
のノードプロセッサーに転送する。
第1行、第q列目のノードプロセッサー412が分担し
ている矩形領域内のj行目に細胞プロセッサーが含まれ
ている場合には、下のノードプロセッサーから部分和Sj
2(n,l)が列番号jと一緒に送られて来たならば、矩形
領域内の部分和Dj 1(n,l)の計算が済んでいるか否かを
調べ、もし、済んでいれば、式(51)によって新しい部
分和Sj 1(n,l)を計算する。もし、矩形領域内の部分和
の計算がまだ終わっていない場合には、部分和Sj 2(n,
l)を一旦行番号jと一緒にバッファ461〜466の一つに
格納しておき、矩形領域内の部分和Dj 1(n,l)の計算が
済むのを待つ。矩形領域内の部分和Dj 1(n,l)の計算が
終了すれば直ちに式(51)によって、新しい部分和Sj 1
(n,l)を計算する。ここで得られた新しい部分和S
j 1(n,l)を積和演算結果Sj(n,l)とする。
細胞プロセッサーを含む列については、最終の積和結
果Sj(n,l)の計算が終了すれば、式(33)に従って、
積和結果Sj(n,l)からδ(n,l+1)を計算し、これ
を細胞プロセッサーに対応する記憶領域に格納する。
〔第P行、第q列目のノードプロセッサー432〕 (第4図(c)) 第P行、第q列目のノードプロセッサー432が分担し
ている矩形領域内に細胞プロセッサーを含む行jがあれ
ば、学習の中間値δ(n,l)を行番号jと一緒に左の
ノードプロセッサー431および右のノードプロセッサー4
33に転送する。細胞プロセッサーの含まれていない行に
ついては、左のノードプロセッサー431から転送されて
来た学習の中間値δ(n,l)〔k∈{Jlp,Jlp+1,…,J
up−1,Jup}〕を逐次受け取り、行毎にバッファ478、48
0、481に保持すると同時に、学習の中間値δ(n,l)
を行番号kと一緒に右のノードプロセッサー433に転送
する。ただし、q=Qの時には、右方向への転送は行わ
ない。右のノードプロセッサーから転送されて来た学習
の中間値δ(n,l)〔k∈{Jlp,Jlp+1,…,Jup−1,Ju
p}〕を逐次受け取り、行毎にバッファ490、492、493に
保持すると同時に、学習の中間値δ(n,l)を行番号
kと一緒に左のノードプロセッサー431に転送する。た
だし、q=Qの時には、右方向への転送は行わない。
第P行、第q列目のノードプロセッサー432が分担し
ている矩形領域の重みプロセッサーについて各行毎に式
(47)によって矩形領域内の部分和Dj p(n,l)を計算す
る。計算が終われば、結果をバッファ470〜475に格納し
ておく。
第P行、第q列目のノードプロセッサー432が分担し
ている矩形領域内のj行目に細胞プロセッサーが含まれ
ていない場合には、式(50)により部分和の初期値をSj
p(n,l)=Dj p(n,l)として、その列番号jと一緒に下
のノードプロセッサーに転送する。
第P行、第q列目のノードプロセッサー412が分担し
ている矩形領域内のj行目に細胞プロセッサーが含まれ
ている場合には、下のノードプロセッサーから部分和Sj
p-1(n,l)が列番号jと一緒に送られて来たならば、矩
形領域内の部分和Dj p(n,l)の計算が済んでいるか否か
を調べ、もし、済んでいれば、式(49)によって新しい
部分和Sj p(n,l)を計算する。もし、矩形領域内の部分
和の計算がまだ終わっていない場合には、部分和Sj p-1
(n,l)を一旦行番号jと一緒にバッファ461〜466の一
つに格納しておき、矩形領域内の部分和Dj p(n,l)の計
算が済むのを待つ。矩形領域内の部分和Dj p(n,l)の計
算が終了すれば直ちに式(51)によって、新しい部分和
Sj p(n,l)を計算する。ここで得られた新しい部分和Sj
p(n,l)を積和演算結果Sj(n,l)とする。
細胞プロセッサーを含む列については、最終の積和結
果Sj(n,l)の計算が終了すれば、式(33)に従って、
積和結果Sj(n,l)からδ(n,l+1)を計算し、これ
を細胞プロセッサー493〜495に対応する記憶領域に格納
する。
〔第p行、第q列目のノードプロセッサー422〕 (第4図(c)) 第p行、第q列目のノードプロセッサー422が分担し
ている矩形領域内に細胞プロセッサーを含む行jがあれ
ば、学習の中間値δ(n,l)を行番号jと一緒に左の
ノードプロセッサー421および右のノードプロセッサー4
23に転送する。細胞プロセッサーの含まれていない行に
ついては、左のノードプロセッサー421から転送されて
来た学習の中間値δ(n,l)〔k∈{Jlp,Jlp+1,…,J
up−1,Jup}〕を逐次受け取り、行毎にバッファ478、48
0、481に保持すると同時に、学習の中間値δ(n,l)
を行番号kと一緒に右のノードプロセッサー423に転送
する。ただし、q=Qの時には、右方向への転送は行わ
ない。右のノードプロセッサー423から転送されて来た
学習の中間値δ(n,l)〔k∈{Jlp,Jlp+1,…,Jup−
1,Jup}〕を逐次受け取り、行毎にバッファ490、492、4
93に保持すると同時に、学習の中間値δ(n,l)を行
番号kと一緒に左のノードプロセッサー421に転送す
る。ただし、q=Qの時には、右方向への転送は行わな
い。
第p行、第q列目のノードプロセッサー422が分担し
ている矩形領域の重みプロセッサーについて各行毎に式
(47)によって矩形領域内の部分和Dj p(n,l)を計算す
る。計算が終われば、逐次結果をバッファ482〜487に格
納しておく。
上のノードプロセッサー417から部分和Sj p-1(n,l)
が列番号jと一緒に送られて来た場合には、矩形領域内
の部分和Dj p(n,l)の計算が済んでいるか否かを調べ、
もし、済んでいれば、式(49)によって新しい部分和Sj
p(n,l)を計算する。もし、矩形領域内の部分和の計算
がまだ終わっていない場合には、部分和Sj p-1(n,l)を
一旦行番号jと一緒にバッファ482〜487に格納してお
き、矩形領域内の部分和Dj p(n,l)の計算が済むのを待
つ。矩形領域内の部分和Dj p(n,l)の計算が終了すれば
直ちに式(49)によって、新しい部分和Sj p(n,l)を計
算する。ここで、矩形領域内のj列目に細胞プロセッサ
ーが含まれているかを調べ、もし、含まれていなけれ
ば、新しい部分和Sj p(n,l)を番号jと一緒に下のノー
ドプロセッサー427に転送する。もし、含まれていれ
ば、下のノードプロセッサー427から列番号jと一緒に
送られて来た部分和sj p+1(n,l)と新しい部分和S
j p(n,l)を加算して積和演算結果Sj(n,l)=Sj p(n,
l)+Sj p+1(n,l)とする。
また、下のノードプロセッサー427から部分和Sj p+1(n,
l)が列番号jと一緒に送られて来た場合には、矩形領
域内の部分和Dj p(n,l)の計算が済んでいるか否かを調
べ、もし、済んでいれば、式(51)によって新しい部分
和Sj p(n,l)を計算する。もし、矩形領域内の部分和の
計算がまだ終わっていない場合には、部分和Sj p+1(n,
l)を一旦行番号jと一緒にバッファ470〜475に格納し
ておき、矩形領域内の部分和Dj p(n,l)の計算が済むの
を待つ。矩形領域内の部分和Dj p(n,l)の計算が終了す
れば直ちに式(51)によって新しい部分和Sj p(n,l)を
計算する。ここで、矩形領域内のj列目に細胞プロセッ
サーが含まれているかを調べ、もし、含まれていなけれ
ば、新しい部分和Sj p(n,l)を番号jと一緒に下のノー
ドプロセッサー427に転送する。もし、含まれていれ
ば、上のノードプロセッサー417から列番号jと一緒に
送られてくる部分和Sj p-1(n,l)と新しい部分和S
j p(n,l)を加算して積和演算結果Sj(n,l)=sj p(n,
l)+sj p-1(n,l)とする。
細胞プロセッサーを含む列については、最終の積和結
果Sj(n,l)の計算が終了すれば、式(33)に従って、
積和結果Sj(n,l)からδ(n,l+1)を計算し、これ
を細胞プロセッサーに対応する記憶領域に格納する。
以上の計算は、各列について、細胞プロセッサーを含む
ノードプロセッサーより上に位置するノードプロセッサ
ーについては上から下方向に計算が行われ、細胞プロセ
ッサーを含むノードプロセッサーより下に位置するノー
ドプロセッサーについては下から上方向に計算が行われ
る。
学習モード1も基本モードと同様に、上記の計算は出力
層から入力層に向かって層毎に順番に行われるので、中
間層の数。すなわち、L=M−1回だけ繰返すことによ
り学習の中間値δ(n,L)を得ることができる。
S6学習モード2の計算処理 学習モード2では、各ノードプロセッサーは以下の処理
を行う。各ノードプロセッサーが分担する重みプロセッ
サーおよび細胞プロセッサーの計算処理について、第1
行、第q列目のノードプロセッサー412、第p行、第q
列目のノードプロセッサー422の計算処理を例に説明す
るが、これらの処理は各ノードプロセッサーで同時に並
列に実行される。
〔第1行、第q列目のノードプロセッサー412〕 第1行、第q列目のノードプロセッサー412が分担し
ている矩形領域の仮想プロセッサー群の中に第j行、第
g(j)列、に細胞プロセッサーを含んでいれば、学習
の中間値δ(n,L)を行番号g(j)と一緒に左のノ
ードプロセッサー411および右のノードプロセッサー413
に転送する。同時に、細胞プロセッサーの出力zj(n)
をvg(j)(n)として、列番号g(j)と一緒に下のノ
ードプロセッサーに転送する。また、第1行、第q列目
のノードプロセッサー412が分担している矩形領域内に
第h列の入力プロセッサーを含むならば、入力信号x
h(n)をvh(n)=xh(n)として、列番号hと一緒
に下のノードプロセッサーに転送する。細胞プロセッサ
ーおよび入力プロセッサーの含まれていない行について
は、左のノードプロセッサー411から学習の中間値δ
(n,L)〔kε{Jlp,Jlp+1,…,Jup−1,Jip}〕が転送
されて来たならば、これを受け取り、その行に対応する
バッファ452、455に保持すると同時に、学習の中間値δ
(n,L)を行番号kと一緒に右のノードプロセッサー4
13に転送する。また、右のノードプロセッサー413から
学習の中間値δ(n,L)〔kε{Jlp,Jlp+1,…,Jup−
1,Jup}〕が転送されて来たならば、これを受け取り、
その行に対応するバッファ457、460に保持すると同時
に、学習の中間値δ(n,L)を行番号kと一緒に左の
ノードプロセッサー411に転送する。
一方、細胞プロセッサーおよび入力プロセッサーの含ま
れていない列については、下のノードプロセッサーから
列番号iと一緒にvi(n)が転送されて来たならば、こ
れを受け取り、その列に対応するバッファ464に保持す
る。
第1行、第q列目のノードプロセッサー412が分担し
ている矩形領域の中の個々の重みプロセッサーについ
て、結合フラグ=“1"ならば、左のノードプロセッサー
411または右のノードプロセッサー413から送られて来た
学習の中間値δ(n,L)と下のノードプロセッサーか
ら送られて来た信号vi(n)から式(28)に従って重み
係数wij(n)の変更量Δwij(n)を計算し、式(29)
に従って重み係数wij(n)を更新する。もし、結合フ
ラグ=“0"ならば、何も行わない。
〔第p行、第q列目のノードプロセッサー422〕 第p行、第q列目のノードプロセッサー422が分担し
ている矩形領域内に第j行、第g(j)列、に細胞プロ
セッサーを含んでいれば、学習の中間値δ(n,L)を
行番号g(j)と一緒に左のノードプロセッサー421お
よび右のノードプロセッサー423に転送する。同時に、
細胞プロセッサーの出力zj(n)をvg(j)(n)とし
て、列番号g(j)と一緒に上のノードプロセッサー41
7および下のノードプロセッサー427に転送する。また、
第p行、第q列目のノードプロセッサー422が分担して
いる矩形領域内で細胞プロセッサーの含まれていない行
については、左のノードプロセッサー421から学習の中
間値δ(n,L)〔kε{Jlp,Jlp+1,…,Jup−1,Ju
p}〕が転送されて来たならば、これを受け取り、その
行に対応するバッファ478、480、481に保持すると同時
に、学習の中間値δ(n,L)を行番号kと一緒に右の
ノードプロセッサー423に転送する。また、右のノード
プロセッサー423から学習の中間値δ(n,L)〔k∈
{Jlp,Jlp+1,…,Jup−1,Jup}〕が転送されて来たなら
ば、これを受け取り、その行に対応するバッファ490、4
92、493に保持すると同時に、学習の中間値δ(n,L)
を行番号kと一緒に左のノードプロセッサー421に転送
する。一方、細胞プロセッサーの含まれていない列につ
いては、上のノードプロセッサー417から列番号iと一
緒にvi(n)が転送されて来たならば、これを受け取
り、その列に対応するバッファ470、473、474に保持す
ると同時に、vi(n)を行番号iと一緒に下のノードプ
ロセッサー427に転送する。また、下のノードプロセッ
サー427からvi(n)が転送されて来たならば、これを
受け取り、その列に対応するバッファ482、485、486に
保持すると同時に、vi(n)を列番号iと一緒に上のノ
ードプロセッサー417に転送する。
第p行、第q列目のノードプロセッサー422が分担し
ている矩形領域の中の個々の重みプロセッサーについ
て、結合フラグ=“1"ならば左のノードプロセッサー42
1または右のノードプロセッサー423から送られて来た学
習の中間値δ(n,L)と上のノードプロセッサー417ま
たは下のノードプロセッサー427から送られて来た信号v
i(n)から式(28)に従って、重み係数wij(n)の変
更量Δwij(n)を計算し、式(29)に従って重み係数w
ij(n)を更新する。もし、結合フラグ=“0"ならば、
何も行わない。
S7学習の収束判定 学習の収束判定では、出力層の細胞プロセッサーを含む
ノードプロセッサーは出力信号と教師データとの誤差ξ
=(tj(n)−zj(n)2の平均値が所定の値より小さく
なったかどうかを調べて学習の完了を判定する。誤差が
所定の値より小さくなった場合は、学習を終了する。一
方、誤差が所定の値より大きい場合には、入力データを
繰り返し与えてS2の処理から学習を繰り返す。
以上、格子状矩形面に接続されたノードプロセッサーに
よって、神経回路網のシミュレーションが各ノードプロ
セッサー毎に並列に実行されることを示した。しかし、
次に問題になるのは、各ノードプロセッサーの負荷の不
均衡である。この問題を解決する方法を、第5図に示す
多層パーセプトロンの具体例を用いて説明する。
まず、第5図に対する仮想プロセッサーの構成は第6図
のようになる。この第6図において、 は重みプロセッサーで結合フラグFij=1になっている
ことを示し、 は重みプロセッサーで結合フラグFij=0になっている
ことを示している。結合フラグFij=0になっている重
みプロセッサーでは、部分和の積和演算をする必要がな
く、結合フラグFij=1になっている重みプロセッサー
のみ部分和の積和演算を行う必要がある。一方、細胞プ
ロセッサーの数は少ないが、その処理内容は複雑で、神
経細胞モデルに依存するが重みプロセッサーの処理に比
べて10倍以上の処理内容になるものと推定される。
第7図(a)は結合フラグFij=1と結合フラグFij=0
の重みプロセッサーの配列を分かり易く示したものであ
る。この図から分かるように、多層パーセプトロンでは
結合フラグFij=1の重みプロセッサーから成る矩形領
域700、704と結合フラグFij=0の重みプロセッサーか
ら成る矩形領域702、703と結合フラグFij=0の重みプ
ロセッサーと細胞プロセッサーが混在する矩形領域70
1、705に大きく分かれる。したがって、結合フラグFij
=0の重みプロセッサーをより多く分担したノードプロ
セッサーは負荷が軽く、細胞プロセッサーや結合フラグ
Fij=1の重みプロセッサーをより多く分担したノード
プロセッサーは負荷が重くなる。並列処理を効果的に行
うためには各ノードプロセッサーがほぼ同じ時間で処理
が終わる必要がある。もし、1つでも処理の終わる時間
が遅くなると、そのノードプロセッサーに処理のフェー
ズを合わせなければならず、多くのノードプロセッサー
が処理を待たなければならなくなり、処理効率が悪くな
る。
第7図(b)は、これらの重みプロセッサーおよび細胞
プロセッサーの処理を2行、3列の6台のノードプロセ
ッサーで処理することを考えた場合、負荷が出来るだけ
均衡するように行方向、列方向に点線で分割したもので
ある。しかし、第1行、第1列のノードプロセッサーが
分担する矩形領域710には結合フラグFij=1の重みプロ
セッサーが108個存在せるのに対して、第2行、第1列
のノードプロセッサーが分担する矩形領域713には、結
合フラグFij=1の重みプロセッサーが36個存在するだ
けでその他は結合フラグFij=0の重みプロセッサーで
ある。同様に、第2行、第2列のノードプロセッサーが
分担する矩形領域714には、結合フラグFij=1の重みプ
ロセッサーが42個存在するだけでその他は結合フラグF
ij=0の重みプロセッサーである。また、第2行、第3
列のノードプロセッサーが分担する矩形領域715には結
合フラグFij=1の重みプロセッサーが48個と細胞プロ
セッサーが9個存在するのに対して、第1行、第3列の
ノードプロセッサーが分担する矩形領域712には、細胞
プロセッサーが5個存在するだけでその他は結合フラグ
Fij=0の重みプロセッサーである。このように各ノー
ドプロセッサー間でかなりの負荷の不均衡が存在する。
この問題を解決するために、本発明では、仮想プロセッ
サーの行あるいは列の置換(Parmutation)を行う。式
(25)、式(32)の積和演算は、加算の順序には全く影
響されないので、行と行、列と列の置換を行っても全く
同じ計算結果を得ることができる。第8図(a)は第7
図(a)における結合フラグFij=1の重みプロセッサ
ーだけの矩形領域700、704、結合フラグFij=0の重み
プロセッサーだけの矩形領域702、703、細胞プロセッサ
ーと結合フラグFij=0の重みプロセッサーだけの矩形
領域701、705をそれぞれ6分割あるいは12分割したもの
である。この分割を単位に行および列の置換を順次行う
と第8図(b)のような配列に変えることができる。
第8図(b)の配列に変換すれば、容易に負荷の均衡を
保って6分割を行なうことができる。
第9図に置換によって負荷の均衡化を行った後の重みプ
ロセッサー、細胞プロセッサー、入力プロセッサー、出
力プロセッサー、入出力プロセッサーによる格子状矩形
面結合の構成とその分割を示す。さらに、第10図に格子
状矩形面に結合したノードプロセッサーより成るニュー
ロコンピュータシステムの構成とノードプロセッサーの
分担の内部構成を示す。
このように仮想プロセッサーの行および列の置換を行っ
た後でも前に述べた処理手順は、細胞プロセッサーが位
置する行と列の関係を表すg(j)の関数を変更するだ
けで適用することが出来る。ただし、入力プロセッサ
ー、出力プロセッサー、入出力プロセッサーは第0行目
に配置しておく必要がある。
この例では、仮想プロセッサーの行数、列数がノードプ
ロセッサーの行数、列数でそれぞれ割り切れるため全く
同じ負荷になるように分割することができた。しかし、
割り切れない場合でも1行または1列の誤差の範囲内で
均衡を保つことができる。
以上、多層パーセプトロンを例に大規模な神経回路網の
シミュレーションを並列に実行するニューロコンピュー
タとして、現実的な数のプロセッサーを格子状矩形面に
結合する構成法と各プロセッサーの負荷を均衡させる方
法について説明した。本発明では、多層パーセプトロン
を例に説明を行ったが、ホップヒィールドモデルなど、
他の神経回路網モデルに対しても容易に適用出来るもの
である。特に、ホップヒィールドの離散モデルについて
は、式(42)、式(43)、式(44)で表されるが、式
(44)をシナプスの機能、すなわち重みプロセッサーに
対応させ、式(42)、式(43)を細胞体の機能、すなわ
ち細胞プロセッサーに対応させれば、多層パーセプトロ
ンの基本モードと同様の処理によってシミュレーション
を行うことができる。
yi(t)−yi(t−1)=−γ・yi(t)+Si (42) zi(t)=F(yi(t)) (43) 〈発明の効果〉 以上のように本発明によれば、多数のプロセッサーを並
列に動作させることにより、大規模な神経回路網のシミ
ュレーションを高速に実行できるニューロコンピュータ
を実現することが出来る。
特に、大規模な神経回路網を多数のプロセッサーで並列
にシミュレーションを行う場合に非常に複雑になること
が予想されるプロセッサー間の結合の問題を格子状矩形
面の非常に実装に適した結合方式によって解決してお
り、しかも、多数のプロセッサーの並列処理において
も、行および列の置換により負荷のバランスを取ること
ができ、また、実プロセッサー間の情報の伝送が、行あ
るいは列毎に計算処理とほぼ並行して行うことが出来る
ので、伝送路が隘路になって処理能力を落とすようなこ
ともない。したがって、個々のプロセッサーの能力を十
分に発揮させることができ、ニューロコンピュータの処
理能力をプロセッサーの数にほぼ比例して増大させるこ
とが出来るものである。一方、実装する実プロセッサー
の数が決まっていても、任意の数の神経回路素子から成
る神経回路網をシミュレーションすることが出来る。た
だし、シミュレーション出来る神経回路網の大きさは実
プロセッサーがもっているメモリーの大きさによって制
限される。これはメモリーを増やせば幾らでも大きな神
経回路網をシミュレーション出来ることを意味し、ま
た、実プロセッサーの数を増やせば、その数に比例した
性能の向上を実現できることを意味する。また、本発明
の結合方式では、細胞体の処理を一般的な形式て表して
いるので、多層パーセプトロン、ホップフィールドモデ
ルをはじめ、種々の神経回路網モデルに適用することが
出来るものである。
また、本発明により、従来極めて困難と考えられていた
数百万にも及ぶ神経回路素子から成る大規模な神経回路
網のシミュレーションが容易に実現できるようになっ
た。
【図面の簡単な説明】
第1図は本発明の一実施例の構成を示し、重みプロセッ
サー、細胞プロセッサー、入力プロセッサー、出力プロ
セッサー、入出力プロセッサーによる格子状矩形面結合
の構成を示す図、第2図は多層パーセプトロンのシミュ
レーションの手順を示すフロー図、第3図は、本発明に
したがって仮想プロセッサー群を矩形領域に分割するこ
とを示す図、第4図(a)、乃至(c)は、それぞれ格
子状矩形面に結合されたノードプロセッサーから成るニ
ューロコンピュータシステムの構成と各ノードプロセッ
サーの仮想的な内部構成を示す図、第5図は3層のパー
セプトロンの具体例を示す図、第6図は、第5図の3層
パーセプトロンのシミュレーションを行うための重みプ
ロセッサー、細胞プロセッサー、入力プロセッサー、出
力プロセッサー、入出力プロセッサーによる格子状矩形
面結合の構成を示す図、第7図(a)及び(b)は、そ
れぞれ3層パーセプトロンのシミュレーションにおいて
各ノードプロセッサーの負荷の不均衡を示す図、第8図
(a)及び(b)は、それぞれ列の置換によって、負荷
の不均衡を解消する様子を示す図、第9図は、負荷の均
衡化を行った後の重みプロセッサー、細胞プロセッサ
ー、入力プロセッサー、出力プロセッサー、入出力プロ
セッサーによる格子状矩形面結合の構成を示す図、第10
図は、2行3列の格子状矩形面に結合されたノードプロ
セッサーより成るニューロコンピュータシステムを示す
図、第11図は一般的な神経回路素子のモデルを示す図、
第12図は一般的な神経回路網の構成を示す図、第13図は
多層パーセプトロンの構成を示す図である。 100〜102…入力プロセッサー、103〜106…出力プロセッ
サー、107〜108…入出力プロセッサー、110〜112,114〜
121,123〜133,135〜143,145〜146,150〜151,153〜163,1
65〜169,180〜188…重みプロセッサー、113,122,134,14
4,152,164,170,189…細胞プロセッサー。

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】神経回路素子の1つのシナプスに対応する
    処理として、1つのシナプスの結合係数に相当する重み
    の係数を記憶する機能と、該記憶されている重み係数と
    その重み係数に対応する入力の値との乗算を行い、伝送
    されて来た部分和とその乗算結果との加算を行って部分
    和を出力する機能および学習においてその重み係数の更
    新処理を行う機能を有する重みプロセッサーと、 重みプロセッサーの機能と、神経回路素子に必要な演算
    処理の中で積和演算を除いた、神経回路素子モデルの出
    力結果と関連付けられた所定関係の演算処理を行う神経
    回路素子の細胞体に対応する演算処理機能を有する細胞
    プロセッサーと、 外部装置から入力データを取り込み、該入力データを重
    みプロセッサー及び細胞プロセッサーに転送する機能を
    有する入力プロセッサーと、 上記細胞プロセッサーの出力を取り出し、該出力を外部
    装置に転送する機能を有する出力プロセッサーと、 上記細胞プロセッサーから出力を取り出して外部装置に
    転送する機能および学習のための教師データを外部装置
    から取り込み、該教師データを細胞プロセッサーに転送
    する機能を有する入出力プロセッサーとから成り、 神経回路網の外部入力の数をH、神経回路素子の数をJ
    として、重みプロセッサー、細胞プロセッサー、入力プ
    ロセッサー、出力プロセッサー、入出力プロセッサーを
    (J+1)行、(H+J)列の格子状に配列し、第0行
    目には(H+J)個の入力プロセッサー、出力プロセッ
    サーまたは入出力プロセッサーを配置し、第1行目から
    第J行目までは(H+J−1)個の重みプロセッサーと
    1個の細胞プロセッサーを配置し、各列には多くても1
    個の細胞プロセッサーしか存在しないように配置し、 個々の重みプロセッサーおよび細胞プロセッサーは上、
    下、右、左の重みプロセッサーあるいは細胞プロセッサ
    ーと格子状に双方向に接続し、第1行目の重みプロセッ
    サーおよび細胞プロセッサーはそれぞれ同じ列の入力プ
    ロセッサー、出力プロセッサーまたは入出力プロセッサ
    ーに各々双方向に接続し、さらに入力プロセッサー、出
    力プロセッサーまたは入出力プロセッサーは外部装置と
    各々接続することにより、 多数の神経回路素子よりなる神経回路網の計算を多数の
    プロセッサーにより並列に行うことを特徴とするニュー
    ロコンピュータ。
  2. 【請求項2】上記重みプロセッサー、細胞プロセッサ
    ー、入力プロセッサー、出力プロセッサーおよび入出力
    プロセッサーをすべて仮想プロセッサーとみなし、(J
    +1)行、(H+1)列の格子状に配列された仮想プロ
    セッサー群を行方向にP(P<J+1)分割、列方向に
    Q(Q<H+J)分割し、分割された矩形領域に各々1
    つの実プロセッサーを割り当てることにより、P行、Q
    列の格子状に実プロセッサーの配列を構成し、各実プロ
    セッサーは、上、下、左、右の実プロセッサーと格子状
    に双方向に接続し、各列には少なくとも1つの実プロセ
    ッサーには外部装置との入出力機能を持たせ、各実プロ
    セッサーは割り当てられた該矩形領域に含まれる仮想プ
    ロセッサーの演算機能を分担することにより、多数の神
    経回路素子より成る神経回路網の計算を多数のプロセッ
    サーにより並列に行うことを特徴とする請求項1記載の
    ニューロコンピュータ。
  3. 【請求項3】上記仮想プロセッサーの格子状配列の行の
    置換、あるいは列の置換を行うことにより、各実プロセ
    ッサーに割り当てられる矩形領域内の仮想プロセッサー
    と他の実プロセッサーに割り当てられる矩形領域内の仮
    想プロセッサーとを入れ換えることにより、各実プロセ
    ッサーの負荷を均等化することを特徴とする請求項2記
    載のニューロコンピュータ。
JP1024307A 1988-12-29 1989-02-01 ニューロコンピュータ Expired - Lifetime JPH0736182B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP1024307A JPH0736182B2 (ja) 1989-02-01 1989-02-01 ニューロコンピュータ
EP89124130A EP0377221B1 (en) 1988-12-29 1989-12-29 Neuro-computer
DE68927474T DE68927474T2 (de) 1988-12-29 1989-12-29 Neuro-Rechner
US07/885,239 US5170463A (en) 1988-12-29 1992-05-20 Neuro-computer

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP1024307A JPH0736182B2 (ja) 1989-02-01 1989-02-01 ニューロコンピュータ

Publications (2)

Publication Number Publication Date
JPH02202665A JPH02202665A (ja) 1990-08-10
JPH0736182B2 true JPH0736182B2 (ja) 1995-04-19

Family

ID=12134521

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1024307A Expired - Lifetime JPH0736182B2 (ja) 1988-12-29 1989-02-01 ニューロコンピュータ

Country Status (1)

Country Link
JP (1) JPH0736182B2 (ja)

Also Published As

Publication number Publication date
JPH02202665A (ja) 1990-08-10

Similar Documents

Publication Publication Date Title
EP0377221B1 (en) Neuro-computer
JP2663996B2 (ja) ニューラル・ネットワーク用の仮想ニューロコンピュータ・アーキテクチュア
Carrillo et al. Scalable hierarchical network-on-chip architecture for spiking neural network hardware implementations
US5506998A (en) Parallel data processing system using a plurality of processing elements to process data and a plurality of trays connected to some of the processing elements to store and transfer data
CN107578098A (zh) 基于脉动阵列的神经网络处理器
CN109190756A (zh) 基于Winograd卷积的运算装置及包含该装置的神经网络处理器
US20130073494A1 (en) Event-driven universal neural network circuit
CN107578095A (zh) 神经网络计算装置及包含该计算装置的处理器
JPH05505268A (ja) デイジーチェーン制御付ニューラルネットワーク
KR20160111795A (ko) 인공 신경망의 뉴로모픽 하드웨어 구현 방법
JP2666830B2 (ja) トライアングル・スケーラブル・ニューラル・アレイ・プロセッサ
Atlas et al. Digital systems for artificial neural networks
US5148515A (en) Scalable neural array processor and method
US5640586A (en) Scalable parallel group partitioned diagonal-fold switching tree computing apparatus
JP2809791B2 (ja) モジュール割当方法
JPH05346914A (ja) ニューロプロセッサ
JPH0736182B2 (ja) ニューロコンピュータ
Ayoubi et al. Efficient mapping algorithm of multilayer neural network on torus architecture
CN114519425A (zh) 一种规模可扩展的卷积神经网络加速系统
Sudhakar et al. Efficient mapping of backpropagation algorithm onto a network of workstations
JPH0690704B2 (ja) ニューロコンピュータ
JPH02266458A (ja) ニューラルネットワークシミュレーション装置
EP0435208B1 (en) Neuro-computer
JP2766858B2 (ja) ニューラルネットワーク並列シミュレーション方法及びそれに用いる装置
Ayoubi et al. An efficient mapping algorithm of multilayer perceptron on mesh-connected architectures