JP2001188767A - ニューラルネットワーク演算装置及びニューラルネットワークの演算方法 - Google Patents
ニューラルネットワーク演算装置及びニューラルネットワークの演算方法Info
- Publication number
- JP2001188767A JP2001188767A JP37276199A JP37276199A JP2001188767A JP 2001188767 A JP2001188767 A JP 2001188767A JP 37276199 A JP37276199 A JP 37276199A JP 37276199 A JP37276199 A JP 37276199A JP 2001188767 A JP2001188767 A JP 2001188767A
- Authority
- JP
- Japan
- Prior art keywords
- neuron
- neural network
- neurons
- synapse
- partial sum
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Feedback Control In General (AREA)
Abstract
て並列計算する場合に、ニューロン演算用の演算ユニッ
トと誤差信号計算用の演算ユニットを別個に設ける必要
がなく、シナプス接続重みの更新時にバスの帯域の消費
量が少ないニューラルネットワーク演算装置を提供す
る。 【解決手段】 ローカルバス18を介して演算ユニット
101〜10xの演算結果とマスターノード12の設定情
報が互いに受け渡される構成であり、ニューロン演算時
には、各演算ユニット101〜10xからのニューロン出
力値の部分和をマスターノード12が累積加算してニュ
ーロン出力値を生成して出力し、該特定のニューロンの
ニューロン演算が割り当てられた演算ユニットがマスタ
ーノードから出力されたニューロン出力値を受け取って
保存する。
Description
ワーク演算装置及びニューラルネットワークの演算方法
に係り、特に、複数の演算ユニットによって並列にニュ
ーロン演算を行うニューラルネットワーク演算装置及び
ニューラルネットワークの演算方法に関する。
る情報処理を模倣して構築したニューラルネットワーク
は、認識、知識処理などの情報処理に応用されている。
そのようなニューラルネットワークは、一般に、複数の
ニューロンが多数接続され、各ニューロンに対応する信
号伝達ユニットを複数備えたものとして構成される。
iからニューロン出力値Yiが入力される。そして、そ
れぞれの入力に対しシナプス接続重みWjiで重みづけを
行い、その総和ujを計算する。この値を例えばシグモ
イド関数fによって変換し、ニューロン出力値Yjを出力
する。この動作を式で示すと以下の(1)の式のように
なる。(但し、i、jは任意の整数)
一般的に使用されるバックプロパゲーションによる学習
過程においては、与えられた入力に対して期待する出力
値d j(すなわち、教師信号)を外部から与え、実際の
出力値との誤差dj−Yj=δjが少なくなるようにシナ
プス接続重みWjiを更新していく。その更新量は以下の
(2)の式で演算される。
ある。また、出力層では、以下の(3)の式で演算を行
う。
算を行う。
ンからなる大規模ニューラルネットワークで行う場合、
膨大な演算量となり、専用のハードウェアが必要とな
る。
197707号公報には、図28に示すように、各々シ
ナプス接続重みメモリ621〜62x(但し、xは整数)
を有する複数の演算ユニット601〜60xが、コントロ
ーラ66に接続する時分割バス64によって並列に結合
された構成の情報処理システムが開示されている。
ニット601〜60xは特定のニューロン処理を受け持
ち、コントローラ66により選択された1つの演算ユニ
ット(図28の状態では第2演算ユニット602)がニ
ューロン出力値を時分割バス64に出力する。
いる演算ユニット(図28の状態では第2演算ユニット
602)のニューロン出力値に対するシナプス接続重み
をメモリに保持しており、時分割バス64から入力する
値に対応するシナプス接続重みをメモリから読み出して
重み付けし、その積を累積加算する。
ユニット(図28の状態では第2演算ユニット602)
は、累積加算した値を、例えば、シグモイド関数f(上
記(1)の式)によって変換して時分割バス64に出力
する。各演算ユニット601〜60xの時分割バス64へ
の出力が一通り行われれば、すべてが(1)の式の演算
を行うこととなる。
説明した構成による並列演算によって大規模ニューラル
ネットワークを構築している。
来技術では、時分割バスには多数の演算ユニットが接続
される構成であるため、時分割バスのクロックを高くす
ることができず、各演算ユニットに高速にニューロン出
力値を供給することができない。すなわち、バスの転送
クロックを高速化できないため、ニューロン出力値の伝
達速度がボトルネックとなり、処理速度があまり向上し
ないという問題点がある。
時に供給するため、不必要なデータまで受け取ってしま
う。これらのことから各演算ユニットはデータ供給律速
となり、高速に演算することができないという問題があ
る。
続重みだけでなく、ニューロン出力値も各演算ユニット
に持たせる構成が考えられるが、ニューロン出力値を保
存するメモリの容量は限りがあるため、ニューラルネッ
トワークの規模が大きくなった場合、全てのニューロン
出力値を保存することができなくなる。そのため、複数
の演算ユニットにニューロン出力値を分割して割り当て
る構成とすることが考えられるが、他の演算ユニット内
のメモリに保存されたニューロン出力値を用いてニュー
ロン演算を行う必要が生じる。従ってこの場合も、ニュ
ーロン出力値の伝達速度がボトルネックとなり、処理速
度があまり向上しないという問題点がある。
トワークを多数の演算ユニットを用いて並列計算する場
合に、各演算ユニットを独立して、かつ高速に動作させ
ることができ、また、ネットワーク規模に応じて演算ユ
ニットの数を増やしても処理速度が低下しないニューラ
ルネットワーク演算装置及びニューラルネットワークの
演算方法を提供することを目的とする。
に請求項1に記載の発明は、少なくとも1つ以上の伝送
路で接続され、ニューラルネットワークを構成する複数
のニューロンのうちの所定数のニューロンがそれぞれ割
り当てられた複数の演算要素によって並列にニューロン
演算を行うニューラルネットワーク演算装置であって、
前記複数の演算要素の各々は、1つのニューロンが持つ
全てのシナプスのうちの少なくとも1部のシナプスのシ
ナプス接続重みを、割り当てられた所定数のニューロン
分保存するシナプス接続重み保存メモリと、ニューロン
演算時に、前記所定数のニューロンを順次選択すると共
に、該選択したニューロンのシナプスを順次選択して、
該選択したシナプスのシナプス接続重みと前記シナプス
と接続された前段のニューロンのニューロン出力値とを
乗算して同一のニューロン毎に累積加算し、得られた値
をニューロン演算値の部分和として出力する累積加算手
段とを備え、前記複数の演算要素が出力したニューロン
演算値の部分和を1つのニューロンが持つ全てのシナプ
ス分の値が加算されるまで累積加算してニューロン出力
値を生成するニューロン出力値生成手段を更に、備えて
いる。
も1つ以上の伝送路で接続され、ニューラルネットワー
クを構成する複数のニューロンのうちの所定数のニュー
ロン割り当てられた複数の演算要素の各々が、1つのニ
ューロンが持つ全てのシナプスのうちの少なくとも1部
のシナプスのシナプス接続重みを保存するシナプス接続
重み保存メモリと累積加算手段とを備えているため、割
り当てられた所定数のニューロンに関するニューロン演
算を演算要素単位で独立して行うことができる。
ューロンは、ニューラルネットワークを構成する1部の
ニューロンである。そのため、各演算要素毎に得られる
値は、所定数のニューロンのそれぞれのニューロン演算
値の部分和であり、ニューロン出力値生成手段がニュー
ロン演算値の部分和を同じニューロン毎に累積加算して
ニューロン出力値を生成する。
の演算要素と、誤差信号演算演算用の演算要素とを個別
に設ける必要がなく、従来よりも少ない演算要素数でニ
ューラルネットワークの演算を実現できる。そのため、
従来と同程度又は従来より少ない演算要素数で、かつ、
演算速度を低下させることなく大規模ニューラルネット
ワークの演算を行えるニューラルネットワーク演算装置
が得られる。
持するシナプス接続重みを用いて演算を行い、各々の演
算要素において演算した演算結果を外部に出力する構成
であるため、データの受け渡しの回数が従来よりも少な
くなる。そのため、伝送路の帯域不足による演算速度の
低下を起こすことなく、大規模ニューラルネットワーク
の演算を実現出来る。
に記載のニューラルネットワーク演算装置において、前
記ニューロン演算値の部分和、及び、前記ニューロン演
算値の部分和を同一のニューロン毎に累積加算して得ら
れる部分和の少なくとも一方を、同一のニューロン毎に
累積加算してニューロン演算値の中間の部分和として出
力する中間の部分和累積加算手段をさらに備え、前記ニ
ューロン出力値生成手段は、前記ニューロン演算値の部
分和、及び、前記中間の部分和の少なくとも一方を、1
つのニューロンが持つ全てのシナプス分の値が加算され
るまで累積加算する。
記ニューロン演算値の部分和を累積加算してニューロン
演算値の中間の部分和を生成したり、前記ニューロン演
算値の部分和を累積加算して得られたニューロン演算値
の部分和(すなわち、中間の部分和)をさらに累積加算
してニューロン演算値の中間の部分和を生成したり、少
なくとも1つの前記ニューロン演算値の部分和と少なく
とも1つの前記中間の部分和とを加算してニューロン演
算値の中間の部分和を生成する、というように、ニュー
ロン演算値の部分和の累積加算処理を多層構造とするこ
とにより、膨大な数のニューロンより構成される大規模
ニューラルネットワークに対しても、伝送路の帯域が不
足することなく適用できる。
前記複数の演算要素を所定数の演算要素毎に分割して複
数グループとし、前記ニューロン出力値生成手段を前記
グループ毎に設ける構成とすることにより、演算要素の
外部に受け渡す情報量が減少するので、演算の速度を落
とすことなく大規模ニューラルネットワークの演算を行
うことができる。
置としては、請求項4に記載の発明のように、前記複数
グループのうちの1グループを構成する所定数の演算要
素が複数の半導体素子に分割して形成され、前記所定数
の演算要素が分割して形成された複数の半導体素子が、
同一の回路基板に実装されており、前記中間の部分和累
積加算手段は、前記所定数の演算要素が分割して形成さ
れた半導体素子毎に設けられている構成や、請求項5に
記載の発明のように、前記複数グループのうちの1グル
ープを構成する所定数の演算要素が複数の回路基板上の
複数の半導体素子に分割して形成され、前記複数の回路
基板が、同一の実装基板に実装されており、前記中間の
部分和累積加算手段は、少なくとも前記半導体素子毎、
若しくは、前記回路基板に設けられている構成とするこ
とができる。
から請求項6のいずれか1項に記載のニューラルネット
ワーク演算装置において、前記演算要素は、少なくとも
前記シナプス接続重み保存メモリに保存されたシナプス
と接続するニューロン出力値が保存されるデータ保存メ
モリを更に備えている。これにより、より一層受け渡す
データ量を少なくできるので、伝送路の使用量を減らす
ことができ、より大規模なニューラルネットワークの演
算に適用することが可能である。
タ保存メモリは、少なくとも2つのメモリから構成さ
れ、一方のメモリには演算に用いるデータを保存すると
共に、他方のメモリには演算により得られた結果を保存
するように設定される構成とすることにより、次の演算
層についての演算を開始する段階で、必要なデータを演
算要素内に保持しておくことができるので、各々の演算
要素にデータを供給し直す必要がなく、その分速く次の
演算処理を開始させることが可能である。
から請求項7のいずれか1項に記載のニューラルネット
ワーク演算装置において、保存メモリに保存されたシナ
プス接続重みのうち、選択したニューロンのシナプス接
続重みの各々を更新する接続重み更新手段を更に備えて
いる。
り当てられたニューロンに関するニューロン演算、シナ
プス接続重み更新を行うことができるので、従来のよう
にニューロン演算用の演算要素と、シナプス接続重み更
新用の演算要素とを個別に設ける必要がなく、従来より
も少ない演算要素数でニューラルネットワークの演算を
実現できる。そのため、従来と同程度又は従来より少な
い演算要素数で、かつ、演算速度を低下させることなく
大規模ニューラルネットワークの演算を行えるニューラ
ルネットワーク演算装置が得られる。
差信号の演算時には、逆伝播された誤差信号を用いてシ
ナプス接続重みの更新を行うが、本発明では、1つの演
算層を構成する複数のニューロンを所定数の演算要素毎
に分割して割当てているため、所定数の演算要素毎から
出力される値は、誤差信号の部分和となる。
求項3から請求項8のいずれか1項に記載のニューラル
ネットワーク演算装置において、前記累積加算手段は、
誤差信号演算時には、特定のニューロンと接続する前記
所定数のニューロンのシナプスを順次選択し、選択され
たシナプスの接続重みと、該選択されたシナプスを持つ
ニューロンの誤差信号とを乗算して、前記所定数のニュ
ーロン分累積加算し、得られた値を誤差信号の部分和と
して出力し、前記誤差信号の部分和を前記特定のニュー
ロンと接続された全てのニューロン分累積加算し、得ら
れた値を前記特定のニューロンの誤差信号として前記特
定のニューロンが割り当てられた演算要素に出力する誤
差信号生成手段を更に備えている。
項10に記載したように、前記誤差信号生成手段により
生成された誤差信号を用いて、保存メモリに保存された
シナプス接続重みを更新する。
られるので、各演算要素において得られた誤差信号を用
いて各演算要素毎に割り当てられたニューロンに関する
シナプス接続重み更新を行うことができる。
グループを構成する所定数の演算要素を接続する複数の
第1の伝送路と、該第1の伝送路よりも帯域が小さく、
かつ、複数のグループを接続する少なくとも1つの第2
の伝送路とを更に備え、前記第2の伝送路数は、前記所
定数の演算要素数グループを構成する所定数の演算要素
数よりも少なく設けられている。
求項1から請求項11のいずれか1項に記載のニューラ
ルネットワーク演算装置に好適なニューラルネットワー
ク演算方法であり、ニューラルネットワークを構成する
複数のニューロンのうちの所定数のニューロン毎に並列
してニューロン演算を行うニューラルネットワーク演算
方法であって、1つのニューロンが持つ全てのシナプス
のうちの少なくとも1部のシナプスのシナプス接続重み
を、割り当てられた所定数のニューロン分保存し、ニュ
ーロン演算時に、前記所定数のニューロンを順次選択す
ると共に、該選択したニューロンのシナプスを順次選択
して、選択したシナプスのシナプス接続重みと該シナプ
スと接続された前段のニューロンのニューロン出力値と
を乗算して同一のニューロン毎に累積加算してニューロ
ン演算値の部分和を生成し、前記ニューロン演算値の部
分和を1つのニューロンが持つ全てのシナプス分の値が
加算されるまで累積加算してニューロン出力値を生成す
る。
記載のニューラルネットワークの演算方法において、前
記ニューロン演算値の部分和を累積加算してニューロン
出力値を生成する際に、前記ニューロン演算値の部分
和、及び、前記ニューロン演算値の部分和を同一のニュ
ーロン毎に累積加算して得られる部分和の少なくとも一
方を、同一のニューロン毎に累積加算してニューロン演
算値の中間の部分和を生成し、前記ニューロン演算値の
部分和、及び、前記中間の部分和の少なくとも一方を、
1つのニューロンが持つ全てのシナプス分の値が加算さ
れるまで累積加算してニューロン出力値を生成する。
12又は請求項13に記載のニューラルネットワークの
演算方法において、同一のニューロンのニューロン演算
の演算すべきシナプス数を複数のグループに分割し、該
グループ毎に前記ニューロン演算値の中間の部分和を生
成する。
する際に、請求項15に記載のように演算すべきシナプ
ス数を均等に分割することにより、個々の演算に掛かる
時間の差に起因するタイムログが発生するのを防止で
き、効率的である。
ションによる学習時には、所定数の演算要素毎から出力
される値は、誤差信号の部分和となるため、請求項16
に記載の発明では、請求項12から請求項15のいずれ
か1項に記載のニューラルネットワークの演算方法にお
いて、誤差信号演算時には、特定のニューロンと接続す
る前記所定数のニューロンのシナプスを順次選択し、選
択されたシナプスの接続重みと、該選択されたシナプス
を持つニューロンの誤差信号とを乗算して、前記所定数
のニューロン分累積加算し、得られた値を誤差信号の部
分和として出力し、前記誤差信号の部分和を前記特定の
ニューロンと接続された全てのニューロン分累積加算
し、得られた値を前記特定のニューロンの誤差信号とし
て前記特定のニューロンが割り当てられた演算要素に出
力する。この場合、請求項17に記載したように、シナ
プス接続重み更新時には、前記誤差信号の部分和を累積
加算して得られた誤差信号を用いて、シナプス接続重み
を更新すると良い。
の形態のニューラルネットワーク演算装置は、図1に示
すように、大別して、複数の演算ユニット101〜10x
(1<x;但し、xは正の整数、Hは1≦H≦xの正の
整数、)、マスターノード12、プログラムメモリ1
4、ホストコンピュータ16とから構成され、図3に示
す入力層、隠れ層、及び出力層からなる3層のパーセプ
トロンのニューラルネットワークにおけるニューロン演
算及びヘッブ則による学習を行う。
隠れ層、及び隠れ層から出力層へは全結合をしている。
また、図3では説明のため、入力層のニューロンにはニ
ューロン番号1からnまでの番号を付与し、隠れ層のニ
ューロンにはニューロン番号n+1からn+mまでの番
号を付与し、出力層のニューロンにはニューロン番号n
+m+1からn+m+pまでの番号を連続して付与して
いる(N1<N2<n,N3<L1<N4<m,L2<
p;但し、n、m、p、N1、N2、N3、N4、L
1、L2は正の整数)。
トワーク演算装置の構成について説明する。図1に示す
ように、演算ユニット101〜10xとマスターノード1
2は、ローカルバス18によって接続され、ローカルバ
ス18を介して演算ユニット101〜10xからの演算結
果がマスターノード12に受け渡され、また、マスター
ノード12からの制御情報が演算ユニット101〜10x
に伝送される。
どのプログラム可能な演算処理装置により構成され、後
に詳述する演算ユニット101〜10xの制御を行うとと
もに、ニューロン演算時にはプログラムメモリ14から
各演算ユニット101〜10xが必要とするニューロン出
力値を読み出してローカルバス18に出力し、また、各
演算ユニット101〜10xから出力されるニューロン演
算値の部分和yαjをグループ毎に累積加算して(詳細
は後述)得られた値に非線型演算を施してニューロン出
力値Yjを生成した後、プログラムメモリ14に出力
し、学習時にはニューロンの出力値と学習係数の積を演
算ユニット101〜10xに送出する(詳細は後述)。な
お、非線型演算としてはシグモイド関数や閾値論理等の
関数を用いることができる。
メモリ14がローカルに接続されている。プログラムメ
モリ14には、後述する演算制御のためのプログラム
や、マスターノード12から出力されたニューロン出力
値Y1〜Yn+m+p等が保存される。ニューロン出力値Y1
〜Yn+m+pは、例えば、図4に示すように、ニューロン
番号の小さい順に連続して保存されている。
19を介してホストコンピュータ16と接続され、ホス
トコンピュータ16とデータをやり取りする。ホストコ
ンピュータ16は、プログラムメモリ14にマスターノ
ード12の動作を記述するプログラムを書き込み、マス
ターノード12の動作を制御する。
ログラムメモリ14にマスターノード12の動作を記述
するプログラムを書き込んだ後、ニューロン演算開始信
号をマスターノード12に送って複数の演算ユニット1
01〜10xによるニューロン演算を開始させ、得られた
演算結果をマスターノード12から受け取る。また、ホ
ストコンピュータ16は、学習開始信号をマスターノー
ド12に送って学習を開始させる。
た1つの半導体素子に形成され、マスターノード12か
らの制御データに基いてニューロン演算値の部分和yα
jの演算(詳細は後述)と、シナプス接続重みの更新の
2種類の動作を各々並列して行う。
ニューロン演算時には、特定のニューロンの持つ全シナ
プスのうちから割り当てられたシナプス(ここではN個
のシナプス)のそれぞれとシナプス接続する前段のニュ
ーロン出力値と、シナプスの接続重みとを乗算して、乗
算結果をN個のシナプスに亙って累積加算し、得られた
結果を出力する。この演算を指定されたニューロンから
順番に、割り当てられた全てのニューロン(ここではM
個のニューロン)に対して行う。
ン分加算して非線型変換することによりニューロン出力
値が得られるので、以下では個々の演算ユニットから出
力される累積加算結果をニューロン演算値の部分和yα
jと称す。また、演算ユニット101〜10xは、学習時
には、学習アルゴリズムに従い、割り当てられたシナプ
スの接続重みを更新する。
ついて説明する。演算ユニット10 1〜10xは、それぞ
れ図2に示すように(図2は説明のため、第H演算ユニ
ット10hのみを示す。;但し、H>1、かつ、Hは任意
の整数)、ローカルバスインターフェ−ス20、制御回
路22、ニューロン出力値メモリ24、シナプス接続重
みメモリ26、乗算器28、加算器30、累積レジスタ
32、学習回路36とから構成される。
小ニューロンレジスタ50、最大ニューロンレジスタ5
2、グループレジスタ54とを含み、自身の累積レジス
タ32から出力されたニューロン演算値の部分和yαj
をローカルバス18へ出力したり、マスターノード12
からの他のニューロンの出力値や制御データの受信を行
う。
後述するニューロン出力値メモリ24に保存されたニュ
ーロン出力値に対応するニューロンのうち、最小番号の
ニューロンのニューロン番号が保存され、最大ニューロ
ンレジスタ52には後述するニューロン出力値メモリ2
4に保存されたニューロン出力値に対応するニューロン
のうち、最大番号のニューロンの番号が保存されてい
る。また、グループレジスタ54には、後述する演算ユ
ニットの属するグループ番号が設定される。
ジスタ40と演算開始ニューロンレジスタ42とを含
み、ローカルバスインターフェ−ス20介して入力され
たマスターノード12からの制御データによって第H演
算ユニット10hの動作を制御する。演算シナプス数レ
ジスタ40には、1つのニューロンについて演算するシ
ナプス数Nが保存され、演算開始ニューロンレジスタ4
2には、ニューロン演算値の部分和演算のはじめに読み
出されるニューロン出力値メモリ24のアドレスNAD
Rが保存されている。
数のアドレスカウンタがあり、制御回路22は、ローカ
ルバスインターフェ−ス20介して入力されたマスター
ノード12からの制御データによって、シナプス接続重
みメモリ26及びニューロン出力値メモリ24をアクセ
スするアドレスを指定する。なお、アドレスカウンタは
メモリアクセス毎にインクリメントされるが、ローカル
バス18を介して特定の値に設定することもできる。
てられたシナプスの演算に必要な複数のニューロンのニ
ューロン出力値が保存されており、このニューロン出力
値はマスターノード12によりローカルバス18を介し
て書き替えられる。
割り当てられた複数のニューロンのシナプス接続重みの
1部、すなわち、N個のシナプスのシナプス接続重みが
M個のニューロン分保存されている。その順番は、最も
ニューロン番号の小さい1番目のニューロンのN個のシ
ナプス接続重みが先頭アドレスから連続して保存され、
続いて2番目のニューロンのN個のシナプス接続重みが
連続して保存され、以下同様にして、最後にM番目のニ
ューロンのN個のシナプス接続重みが連続して保存され
る。
ューロン出力値メモリ24及びシナプス接続重みメモリ
26からデータを順次読み出して乗算する。
乗算結果と累積レジスタ32に一旦保存された累積加算
値とを加算し、得られた累積加算値を累積レジスタ32
に一旦保存する。この演算は、ニューロン演算の場合は
演算シナプス数レジスタ40に設定された回数だけ繰り
返される。
力された累積加算値を一旦保存し、加算器30により前
記設定された回数の累積加算が繰り返されるまで、一旦
保存した累積加算値を加算器30に出力する。加算器3
0により前記設定された回数の累積加算が繰り返される
と、累積レジスタ32は、保存した累積加算値をローカ
ルバスインターフェ−ス20に出力する。
44を含み、学習係数レジスタ44には、マスターノー
ド12から送出されたニューロンの誤差信号δと学習係
数の積が書き込まれる。学習回路36は、シナプス接続
重みメモリ26からシナプス接続重みを読み出し、学習
則のアルゴリズムに従いシナプス重みを変更し、シナプ
ス接続重みメモリ26に書き込む。なお、学習回路36
内にも制御回路22と同様のアドレスカウンタLADR
がある。
ク演算装置を構成する複数の演算ユニットの各々で独立
して行うニューロン演算値の部分和演算処理ルーチンと
学習によるシナプス接続重みの更新の動作について説明
する。なお、ここでは説明のため、任意の第H演算ユニ
ット10hのニューロン演算値の部分和演算処理ルーチ
ンと学習によるシナプス接続重みの更新の動作について
図7及び図8のフローチャートを参照して説明する。こ
の第H演算ユニット10hには、図3における連続した
ニューロン番号n+1からニューロン番号n+N3のM
個のニューロン演算値の部分和演算が割り当てられてお
り、各ニューロンの全シナプス(S個のシナプス)のう
ち1からN1までのN個(但し、S>N)のシナプスが
割り当てられている。
開始ニューロンレジスタ42には、ADR=0が設定さ
れ、演算シナプス数レジスタ40には、Nが設定されて
いる。また、シナプス接続重みメモリ26には、図6に
示すように、ニューロンn+1のN個のシナプスの接続
重みWn+1,1〜Wn+1,N1がアドレス0からアドレスN−
1まで順に保存され、続いて、ニューロンn+2のN個
のシナプスの接続重みWn+2,1〜Wn+2,N1が次のアドレ
スNからアドレス2N−1まで順に保存され、以下同様
にして、最後は、ニューロンn+N3のN個のシナプス
の接続重みWn+ N3,1〜Wn+N3,N1がアドレス(N3‐
1)NからアドレスN3・N−1に順に連続して保存さ
れている。
図5に示すように、ニューロン演算に必要なニューロン
出力値であるニューロン1からニューロンN1までのN
個のニューロンのニューロン出力値Y1〜YN1がアドレ
ス0からアドレスN−1まで連続して保存される。この
値は、プログラムメモリ14に保存されたニューロン出
力値Y1〜Yn+m+pのうち演算に必要なニューロン出力値
であるアドレス0からアドレスN−1までのN個のニュ
ーロン出力値Y1〜YN1がマスターノード12により読
み出されて第H演算ユニット10hのニューロン出力値
メモリ24に書き込まれた値である。
ロン出力値等のデータの値はニューラルネットワークの
構成に従い、例えば、後述する割り当て方法のように設
定される。なお、接続重みの初期値としては、ランダム
な値や、予め学習によって決定された値など、自由に与
えることができる。
ューロン演算値の部分和演算処理ルーチンについて説明
する。まず、ステップ100では、シナプス接続重みメ
モリ26の読み出しアドレスSADRをクリアして、演
算するニューロン番号jを最小番号であるn+1にセッ
トし、ステップ104に移行する。
12からのニューロン演算値の部分和演算の開始信号を
受信されたかを判断する。受信した場合は、ステップ1
06に移行する。
値をクリアし、ニューロン出力値メモリ24の読み出し
アドレスNADRを0に設定する。次のステップ108
では、シナプス接続重みメモリ26から現在のアドレス
SADRに保存されたシナプス接続重みWjiを読み出
し、次のステップ110では、ニューロン出力値メモリ
24から現在のアドレスNADRに保存されたニューロ
ン出力値Yiを読み出す。
接続重みWjiとニューロン出力値Y iとを乗算器28に
よって乗算する。得られた乗算結果を加算器30によっ
て現在累積レジスタ32に保存されている値と加算し
て、累積レジスタ32に保存する。
シナプス数分の回数、すなわち、N回、積和演算を行っ
たかを判断する。N回、積和演算を行っていないと判断
された場合は、ステップ120に移行し、ニューロン出
力値メモリ24の読み出しアドレスNADR及びシナプ
ス接続重みメモリ26の読み出しアドレスSADRをイ
ンクリメントしてから、ステップ108に戻り、上述し
た処理を繰り返す。
場合は、ステップ116に移行し、累積レジスタ32に
保存されたデータをニューロン演算値の部分和yαjと
してローカルバスインターフェ−ス20を介してローカ
ルバス18に出力する。ローカルバス18に出力された
ニューロン演算値の部分和yαjは、後述するマスター
ノード12により同じグループ毎に累積加算された後、
非線型演算されてニューロン出力値Yjとされる。
割り当てられたニューロン数Mの演算が終了したかを判
断する。すなわち、演算対象のニューロンのニューロン
番号jがn+N3であるかを判断する。ニューロン番号
jがn+N3でないと判断された場合は、ステップ12
2に移行し、ニューロン番号jをインクリメントしてか
ら、ステップ100に戻り、上述した処理を繰り返す。
された場合は、割り当てられたM個のニューロンの演算
が終了したため、本ルーチンを終了する。
演算したニューロンのシナプス数と異なる場合や、次の
ニューロン演算値の部分和演算での演算開始番号が前回
演算したニューロン演算値の部分和演算での演算開始番
号と異なる場合は、次のニューロン演算値の部分和演算
を開始する前に、演算シナプス数レジスタ40に記憶さ
れたシナプス数を今回演算するニューロンのシナプス数
に変更したり、演算開始ニューロンレジスタ42に記憶
されたニューロン演算開始番号を今回演算するニューロ
ンの演算開始番号に変更することも可能である。
はシナプス接続重みメモリ26の先頭アドレスSADR
にその重みが保存されたニューロンから順に演算を行
い、ニューロン数レジスタ42で示されたM個のニュー
ロンのニューロン演算を行った後、動作が終了する。
び1つの乗算器を持つ場合について説明したが、加算器
及び乗算器がそれぞれ複数設けられた構成の演算ユニッ
トとすることにより、1つの演算ユニット内で複数のニ
ューロンに関するニューロン演算を複数の乗算器で同時
に行う構成も可能である。
習によるシナプス接続重みの更新について説明する。こ
こではヘッブ則による学習について説明する。まず、ス
テップ200では、学習回路36のシナプス接続重みメ
モリ更新アドレスLADRをクリアし、変数jの値(す
なわちニューロン番号)を最小番号であるn+1にセッ
トして、ステップ204に移行する。
12からシナプス接続重み更新信号が送られたかを判断
する。ステップ204において、マスターノード12か
らシナプス接続重み更新信号が送られたと判断される
と、次のステップ206に移行する。
与えられたニューロン番号jのニューロン出力値Yjと
学習係数ηの積を学習係数レジスタ44に保存し、次の
ステップ208に移行する。ステップ208では、ニュ
ーロン出力値メモリの読み出しアドレスNADRを演算
開始ニューロンレジスタ42に設定されたアドレスAD
Rに設定する。
みメモリ26のアドレスSADRからシナプス接続重み
Wj,iを読み出し、次のステップ212では、ニューロ
ン出力値メモリ24のアドレスNADRからニューロン
出力値Yiを読み出す。
ン出力値Yiと学習係数レジスタ44に保存された値と
を積算し、積算結果を読み出したシナプス接続重みW
j,iに加算し、得られた値を新規のシナプス接続重みと
して、シナプス接続重みメモリ26のアドレスSADR
に上書きすることによって、シナプス接続重みメモリ2
6のアドレスSADRのシナプス接続重みを更新する。
全てのシナプスの接続重みの更新処理が終了したか、す
なわち、N個のシナプスについて接続重み更新処理が終
了したかを判断する。N個のシナプスについて接続重み
更新処理が終了していないと判断された場合は、ステッ
プ220に移行し、シナプス接続重みメモリ26のアド
レスSADR、及び、ニューロン出力値メモリ24の読
み出しアドレスNADRをインクリメントしてから、ス
テップ210に戻り、上述した処理を繰り返す。
が終了したと判断された場合は、ステップ218に移行
し、割り当てられた全てのニューロンについてシナプス
接続重みの更新処理が終了したか、言いかえると、ニュ
ーロン番号jがn+N3であるかを判断する。ニューロ
ン番号jがn+N3でないと判断された場合、ステップ
222に移行してニューロン番号jをインクリメントし
てから、ステップ200に戻り、上述した処理を繰り返
す。一方、ニューロン番号jがn+N3であると判断さ
れると、本ルーチンを終了する。
マスターノード12からのシナプス接続重み更新信号を
受け取るたびに割り当てられたニューロンのうち最も番
号の小さいニューロンから順にシナプス接続重み更新処
理を行う。
る前に、マスターノード12からのニューロン演算値の
部分和演算の開始信号が受信された場合、接続重み更新
が終了してから次のニューロン演算値の部分和演算が開
始される。また、例えば、ニューロン演算及び学習に使
用するシナプス接続重みメモリ26とニューロン出力メ
モリ24がそれぞれバンクを持ち、メモリへのアクセス
が競合しないような回路構成で接続重み更新とニューロ
ン演算値の部分和演算を並列に動作させることも可能で
ある。
シナプス接続重みメモリ26及びニューロン出力値メモ
リ24への外部からのアクセスは、ローカルバス18を
通して行われる。マスターノード12によるシナプス接
続重みメモリ26及びニューロン出力値メモリ24から
のデータ読み出しは、演算ユニット101〜10xのうち
の特定の演算ユニットを選択する信号、選択した演算ユ
ニットの中に保存されたデータを読み出すアドレス、及
び読み出し制御信号をマスターノード12がローカルバ
ス18を通して供給することによって行われ、読み出さ
れたデータはローカルバス18に出力されてマスターノ
ード12に受け取られる。
ータ書き込みも同様に、演算ユニット101〜10xのう
ちの特定の演算ユニットを選択する信号、選択した演算
ユニットの中に書き込むデータのアドレス、書き込み制
御信号、及び、書き込むデータをローカルバス18を通
して供給することによって行われる。
ーロン出力値メモリ24へのニューロン出力値Yiの書
き込みは、ニューロン番号iを指定して行われ、同じ番
号のニューロンとシナプス接続するニューロンが割り当
てられた複数の演算ユニットに対して同時に行われる。
この書き込みは、ニューロン出力値を出力するニューロ
ンのニューロン番号i、書き込み制御信号、及び、書き
込むニューロン出力値Yiをローカルバス18を通して
供給することによって行われる。このとき、各演算ユニ
ット101〜10xは、それぞれ指定されたニューロン番
号と、ローカルバスインターフェ−ス20内の最小ニュ
ーロンレジスタ50に記憶された値、及び、最大ニュー
ロンレジスタ52に記憶された値と比較し、指定された
ニューロン番号が最小ニューロンレジスタ50に記憶さ
れた値と最大ニューロンレジスタ52に記憶された値の
間にある場合に、書き込みデータ(ニューロン出力値Y
i)を受け取る。
ユニットは、指定されたニューロン番号から最小ニュー
ロンレジスタ50に記憶された値を減算して、受け取っ
たニューロン出力値データを書き込むべきニューロン出
力値メモリ24のアドレスを計算し、得られたアドレス
に受信したニューロン出力値データを書き込む。
演算装置に、図3に示した、入力層、隠れ層及び出力層
からなる3層のパーセプトロン型のニューラルネットワ
ークの演算を、第1演算ユニット101から第x演算ユ
ニット10xのx個の演算ユニットに割り当てる方法に
ついて説明する。ここでは、説明を簡略にするため、ニ
ューラルネットワークの演算を第1演算ユニット101
から第6演算ユニット106の6個の演算ユニットに割
り当てる場合について説明する。
n+m+pのニューロン出力値をそれぞれY1〜
Yn+m+p、ニューロンiからニューロンjへのシナプス接
続の重みをWjiと書き表すと、3層のパーセプトロン型
のニューラルネットワークの演算は、Wjiを用いて、図
9(A)に示すような3×3のブロックからなる行列で
表すことができる。
層への接続(すなわち、1≦i≦n、n+1≦j≦n+
m)を表し、図9(A)中のIIの領域は隠れ層から出力
層への接続(すなわち、n+1≦i≦n+m、n+m+1
≦j≦n+m+p)を表しており、他の領域は接続が無
く(Wji=0)、計算する必要の無い領域である。
ットワークの計算方法では、I及びIIの領域で表された
計算すべき接続を、少なくとも横方向に複数分割してx
個の演算ユニットの全部又は1部に割り当て、分散処理
させる。
9(C)に示すように、I及びIIの領域で表された計算
すべき接続を、それぞれ横方向に3分割、縦方向に2分
割して6つの演算ユニット101〜106に均等に割り当
て、分散処理させるように構成する。
第1演算ユニット101〜第3演算ユニット103を第1
グループG1としてグループレジスタ54に「1」を設
定し、第4演算ユニット104〜第6演算ユニット106
を第2グループG2としてグループレジスタ54に
「2」を設定し、1つの演算層を構成する複数のニュー
ロンを2つのグループ(ここでは、隠れ層を、ニューロ
ンn+1〜ニューロンn+L1のグループとニューロン
n+L1+1〜ニューロンn+mのグループとし、出力
層をニューロンn+m+1〜ニューロンn+m+L2の
グループとニューロンn+m+L2+1〜ニューロンn
+m+pのグループに分割する。)に分割して前記2つ
のグループG1、G2のそれぞれに割り当てると共に、
1つのニューロンが行うニューロン演算を3分割して1
グループを構成する3つの演算ユニットに均等に割り当
てている。
ット101のシナプス接続重みメモリ26にはI−1の領
域の接続重みWji(1≦i≦N1、n+1≦j≦n+L
1)及びII−1の領域の接続重みWji(n+1≦i≦n+N
3、n+m+1≦j≦n+m+L2)が保存され、第2
演算ユニット102のシナプス接続重みメモリ26には
I−2の領域の接続重みWji(N1+1≦i≦N2、n
+1≦j≦n+L1)及びII−2の領域の接続重みW
ji(n+N3+1≦i≦n+N4、n+m+1≦j≦n+
m+L2)が保存され、第3演算ユニット103のシナプ
ス接続重みメモリ26にはI−3の領域の接続重みW
ji(N2+1≦i≦n、n+1≦j≦n+L1)及びII
−3の領域の接続重みWji(n+N4+1≦i≦n+m、
n+m+1≦j≦n+m+L2)が保存される。
ト104のシナプス接続重みメモリ26にはI−4の領
域の接続重みWji(1≦i≦N1、n+L1+1≦j≦
n+m)及びII−4の領域の接続重みWji(n+1≦i≦n
+N3、n+m+L2+1≦j≦n+m+p)が保存さ
れ、第5演算ユニット105のシナプス接続重みメモリ
26にはI−5の領域の接続重みWji(N1+1≦i≦
N2、n+L1+1≦j≦n+m)及びII−5の領域の
接続重みWji(n+N3+1≦i≦n+N4、n+m+L
2+1≦j≦n+m+p)が保存され、第6演算ユニッ
ト106のシナプス接続重みメモリ26にはI−6の領
域の接続重みWji(N2+1≦i≦n、n+L1+1≦
j≦n+m)及びII−6の領域の接続重みWji(n+N4
+1≦i≦n+m、n+m+L2+1≦j≦n+m+
p)が保存される。
ト101のニューロン出力値メモリ24には入力層から
隠れ層への接続を演算する場合には、I−1の領域の列
番号に対応したニューロン出力値Yi(1≦i≦N1)が
保存され、同時に最小ニューロンレジスタ50にはI−
1の領域の列番号の最小値1が、最大ニューロンレジス
タ52にはI−1の領域の列番号の最大値N1が設定さ
れる。隠れ層から出力層領域への接続を演算する場合に
は、II−1の領域の列番号に対応したYi(n+1≦i
≦n+N3)が保存され、同時に最小ニューロンレジス
タ50にはII−1の領域の列番号の最小値n+1が、
最大ニューロンレジスタ52にはII−1の領域の列番
号の最大値n+N3が設定される。第2演算ユニット1
02〜第6演算ユニット106についても同様に、接続重
み及びニューロン出力値が保存される。
ユニット103は、ニューロン計算を並列して行う第1
グループG1を形成しているため、それぞれのグループ
レジスタ54にはグループ番号である「1」が設定さ
れ、同様に第4演算ユニット10 4〜第6演算ユニット
106は、ニューロン計算を並列して行う第2グループ
G2を形成しているため、それぞれのグループレジスタ
54にはグループ番号である「2」が設定される。マス
ターノード12からのコントロール信号は、同一のグル
ープ番号を持つ演算ユニットに対して同時に行われる。
れた各演算ユニット101〜106を制御するマスターノ
ード12の制御ルーチンについて、図10のフローチャ
ートを参照しながら説明する。なお、マスターノード1
2は、ホストコンピュータ16がプログラムメモリ14
に書き込んだマスターノード12の動作を記述するプロ
グラムを読み込み、このプログラムにより動作を開始す
る。ホストコンピュータ16は、マスターノード12の
動作を記述するプログラムをプログラムメモリ14に書
き込むと共に、各演算ユニット101〜106に対して初
期設定を行っている。この初期設定では、シナプス接続
重みメモリ26への初期データの書き込み、及びグルー
プレジスタ54の設定を行う。これらのデータの値はニ
ューラルネットワークの構成に従い、前記演算の割り当
て方法の説明に示したように設定し、さらにプログラム
メモリ14に入力層への入力値Y1〜Ynを書き込む。
ュータ16からニューロン演算開始命令が出力されたか
を判断し、ニューロン演算開始命令が出力されたと判断
すると、プログラムメモリ14からマスターノード12
の制御プログラムを読み込み、次のステップ302に移
行する。ステップ302では、隠れ層のニューロン演算
を行うために必要な各種データを書き込み指示とともに
出力する。
ジスタ54に「1」が設定された演算ユニット、すなわ
ち、第1グループG1に属する演算ユニット101、1
02、103のそれぞれに対し、以下の設定を行う。すな
わち、第1演算ユニット101の最小ニューロンレジス
タ50には1を設定し、第2演算ユニット102の最小
ニューロンレジスタ50にはN1+1を設定し、第3演
算ユニット103の最小ニューロンレジスタ50にはN
2+1を設定すると共に、第1演算ユニット10 1の最
大ニューロンレジスタ52にはN1を設定し、第2演算
ユニット102の最大ニューロンレジスタ52にはN2
を設定し、第3演算ユニット103の最大ニューロンレ
ジスタ52にはnを設定する。
レジスタ54に「2」が設定された演算ユニット、すな
わち、第2グループG2に属する演算ユニット104、
105、106の最小ニューロンレジスタ50に対して
も、第4演算ユニット104には1を設定し、第5演算
ユニット105にはN1+1を設定し、第5演算ユニッ
ト105にはN2+1を設定すると共に、最大ニューロ
ンレジスタ52に対し、第4演算ユニット104にはN
1を設定し、第5演算ユニット105にはN2を設定
し、第5演算ユニット105にはnを設定する。
ピュータ16がプログラムメモリ14に書き込んだ入力
層のニューロン出力値Y1〜Ynをプログラムメモリ14
から読み出し、読み出したニューロン出力値Y1〜Ynを
ニューロン番号i、及び書き込み制御信号と共にローカ
ルバス18に出力する。
みは前述の方法によって行われる。すなわち、演算ユニ
ット101〜106は、それぞれ最小ニューロンレジスタ
50に設定された値と最大ニューロンレジスタ52に設
定された値の間のニューロン番号iのニューロン出力値
Yiを受取るため、ニューロン出力値Y1〜YN1は第1演
算ユニット101及び第4演算ユニット104のニューロ
ン出力値メモリ24のアドレス0からアドレスN−1に
順に保存され、ニューロン出力値YN1+1〜YN2は第2演
算ユニット102及び第5演算ユニット105のニューロ
ン出力値メモリ24のアドレス0からアドレスN−1に
順に保存され、ニューロン出力値YN2+1〜Ynは第3演
算ユニット103及び第6演算ユニット106のニューロ
ン出力値メモリ24のアドレス0からアドレスN−1に
順に保存される。
プG1に属する演算ユニット101、102、103のそ
れぞれの演算開始ニューロンレジスタ42及び演算シナ
プス数レジスタ40を設定する。すなわち、3つの演算
ユニット101、102、10 3の全てについて演算開始
ニューロンレジスタ42に0を設定し、第1演算ユニッ
ト101の演算シナプス数レジスタ40にはN1、第2
演算ユニット102の演算シナプス数レジスタ40には
N2−N1、及び第3演算ユニット103の演算シナプ
ス数レジスタ40にはn−N2を設定する。この時グル
ープ内のレジスタに同じ値を設定する場合は、グループ
番号を指定することにより同時に行うことができる。
04、105、106に対しても同様に、それぞれの演算
開始ニューロンレジスタ42及び演算シナプス数レジス
タ40を設定する。すなわち、3つの演算ユニット10
4、105、106の全てについて演算開始ニューロンレ
ジスタ42に0を設定し、第4演算ユニット104の演
算シナプス数レジスタ40にはN1、第5演算ユニット
105の演算シナプス数レジスタ40にはN2−N1、
及び第6演算ユニット106の演算シナプス数レジスタ
40にはn−N2を設定する。
4に移行して、ローカルバス18にニューロン演算値の
部分和演算の開始信号を出力して、ステップ306に移
行し、隠れ層のニューロン(すなわち、ニューロン番号
n+1〜ニューロン番号n+m)に関するニューロン演
算値の部分和演算処理を開始させる。
演算開始信号を受け取った各演算ユニット101〜10x
はそれぞれ割り当てられたニューロンの番号の若い順に
ニューロン演算値の部分和演算を開始する。これによ
り、隠れ層を構成する個々のニューロン演算値の部分和
演算が並列して行われると共に、隠れ層のニューロン演
算がグループ毎に並列して行われることとなる。
ット101〜第3演算ユニット103は、ニューロンn+
1のニューロン演算値の部分和演算を開始し、第2グル
ープG2の演算ユニット104〜106は、ニューロンn
+L1+1のニューロン演算値の部分和演算を開始す
る。演算を開始した各演算ユニット101〜10xはそれ
ぞれ上述したニューロン演算値の部分和演算処理ルーチ
ンで記したように、割り当てられたニューロン演算値の
部分和演算を順次行い、得られた演算結果(ニューロン
演算値の部分和yαj)をローカルバス18を介してグ
ループ番号とともにマスターノード12に出力する。
値の部分和yαjの累積加算処理及び接続重みの更新を
行う。ここで、累積加算処理及び接続重みの更新につい
て図11のフローチャートを参照しながら説明する。ま
ず、ステップ400では、第1グループG1の演算ユニ
ット101〜103から受け取ったニューロン演算値の部
分和yαjを累積加算する変数SUM1、及び入力された
ニューロン演算値の部分和yαjの数を表す変数NUM1
を0に初期化すると共に、第2グループG2に対しても
同様に第2グループG2の演算ユニット104〜106か
ら入力されたニューロン演算値の部分和yαjを累積加算
する変数SUM2及び入力されたニューロン演算値の部
分和yαjの数を表す変数NUM2を0に初期化する。
グループ番号及び部分和の演算開始信号を出力して、第
1グループG1の演算ユニット101〜103、及び第2
グループG2の演算ユニット104〜106にニューロン
の演算を開始させる。演算を開始した演算ユニットはそ
れぞれ前述の演算ユニットのニューロン演算値の部分和
演算処理の説明で記したように割り当てられたニューロ
ン演算値の部分和をyαj演算し、得られたニューロン
演算値の部分和yαjを、自分の属するグループ番号
(ここでは、1又は2)と共にマスターノード12に送
信する。
12にニューロン演算値の部分和yαjが入力されたか
を判断する。入力されたと判断されると、次のステップ
406に移行し、ニューロン演算値の部分和yαjと共
に入力されたグループ番号が「1」かを判断する。
と、第1グループG1のニューロン演算値の部分和であ
るので、ステップ408に移行し、SUM1にニューロ
ン演算値の部分和yαjを累積加算すると共に、変数N
UM1をインクリメントして次のステップ410に移行
する。
ン演算値の部分和の数が3つであるか、すなわち、NU
M1=3かを判断し、NUM1=3でない場合は、ステ
ップ404に戻り、上述した処理を繰り返す。また、N
UM1=3である場合は、ステップ412に移行して、
累積加算して得られた値を、例えば、シグモイド関数に
よって非線型変換を行い、ニューロンn+1のニューロ
ン出力値Yn+1とする。シグモイド関数のパラメータは
ニューロン毎に変更できる。非線型変換を行う関数とし
ては、閾値論理も考えられる。次のステップ414で
は、得られたニューロン出力値Yn+1をプログラムメモ
リ14中に確保した領域に保存する。
に、グループ番号1、ニューロンn+1のニューロン出
力値Yn+1、及び、予め定められた学習係数ηとの積を
送信して第1グループG1の演算ユニット101〜103
の学習係数レジスタ44を設定する。次に、マスターノ
ード12は、グループ番号1と接続重み更新信号を出力
し、第1グループG1の演算ユニット101〜103にシ
ナプス接続重みの更新を開始させて、ステップ418に
移行する。なお、各演算ユニット101〜103でのシナ
プス接続重みの更新の動作は前述したので説明は省略す
る。
ーロン演算値の部分和yαjと共に入力されたグループ
番号が「1」でないと判断されると、第2グループG2
のニューロン演算値の部分和であるので、ステップ42
0に移行し、SUM2にニューロン演算値の部分和yα
jを累積加算すると共に、変数NUM2をインクリメン
トして次のステップ422に移行する。
演算値の部分和yαjの数が3つであるか、すなわち、
NUM2=3かを判断し、NUM2=3でない場合は、
ステップ404に戻り、上述した処理を繰り返す。ま
た、NUM2=3である場合は、ステップ424に移行
して、累積加算して得られた値を、例えば、シグモイド
関数によって非線型変換を行い、ニューロンn+L1+
1のニューロン出力値Y n+L1+1とする。シグモイド関数
のパラメータはニューロン毎に変更できる。非線型変換
を行う関数としては、閾値論理も考えられる。次のステ
ップ426では、得られたニューロン出力値Yn+L1+1を
プログラムメモリ14中に確保した領域に保存する。
8に、グループ番号2、ニューロンn+L1+1のニュ
ーロン出力値Yn+L1+1、及び、予め定められた学習係数
ηとの積を送信して第2グループG2の演算ユニット1
04〜106の学習係数レジスタ44を設定する。次に、
マスターノード12は、グループ番号2と接続重み更新
信号を出力し、第2グループG2の演算ユニット104
〜106にシナプス接続重みの更新を開始させて、ステ
ップ418に移行する。なお、各演算ユニット103〜
106でのシナプス接続重みの更新の動作は前述したの
で説明は省略する。
第2グループG2に割り当てられた全てのニューロンの
演算が終了したかを判断する。第1グループG1と第2
グループG2に割り当てられた全てのニューロンの演算
が終了していないと判断されると、ステップ400に戻
り、上述した処理を繰り返す。この時、ステップ400
及びステップ402の処理はニューロン演算が終了した
グループ番号に対して行われる。また、第1グループG
1と第2グループG2に割り当てられた全てのニューロ
ンの演算が終了したと判断されると本ルーチンを終了す
る。
算処理及び接続重みの更新の終了後、出力層のニューロ
ンn+m〜ニューロンn+m+pの部分和演算を行う。
まず、ステップ310では、出力層のニューロン演算を
行うために必要な各種データを書き込み指示とともに送
出する。
54に「1」が設定された演算ユニット、すなわち、第
1グループG1に属する演算ユニット101、102、1
03のそれぞれに対し以下の設定を行う。すなわち、第
1演算ユニット101の最小ニューロンレジスタ50に
はn+1を設定し、第2演算ユニット102の最小ニュ
ーロンレジスタ50にはn+N3+1を設定し、第3演
算ユニット103の最小ニューロンレジスタ50にはn
+N4+1を設定すると共に、第1演算ユニット101
の最大ニューロンレジスタ52にはn+N3を設定し、
第2演算ユニット102の最大ニューロンレジスタ52
にはn+N4を設定し、第3演算ユニット103の最大
ニューロンレジスタ52にはn+mを設定する。
レジスタ54に「2」が設定された演算ユニット、すな
わち、第2グループG2に属する演算ユニット104、
105、106の最小ニューロンレジスタ50に対して
も、第4演算ユニット104にはn+1を設定し、第5
演算ユニット105にはn+N3+1を設定し、第6演
算ユニット106にはn+N4+1を設定すると共に、
最大ニューロンレジスタ52に対し、第4演算ユニット
104にはn+N3を設定し、第5演算ユニット105に
はn+N4を設定し、第6演算ユニット106にはn+
mを設定する。
ピュータ16がプログラムメモリ14に書き込んだ入力
層のニューロン出力値Yn+1〜Yn+mをプログラムメモリ
14から読み出し、読み出したニューロン出力値をニュ
ーロン番号i、及び書き込み制御信号と共にローカルバ
ス18を介して演算ユニット101〜106に供給する。
みは、前述の方法によって行われ、ニューロン出力値Y
n+1〜Yn+N3は第1演算ユニット101及び第4演算ユニ
ット104のニューロン出力値メモリ24のアドレス0
からアドレスN−1に順に保存され、ニューロン出力値
Yn+N3+1〜Yn+N4は第2演算ユニット102及び第5演
算ユニット105のニューロン出力値メモリ24のアド
レス0からアドレスN−1に順に保存され、ニューロン
出力値Yn+N4+1〜Yn+mは第3演算ユニット103及び第
6演算ユニット106のニューロン出力値メモリ24の
アドレス0からアドレスN−1に順に保存される。
ット101、102、103のそれぞれの演算開始ニュー
ロンレジスタ42及び演算シナプス数レジスタ40を設
定する。演算開始ニューロンレジスタ42の値は3つの
演算ユニット101、102、103の全てに0を設定
し、演算シナプス数レジスタ40の値は、第1演算ユニ
ット101にはN3、第2演算ユニット102にはN4−
N3、及び第3演算ユニット103にはm−N4をそれ
ぞれ設定する。この時グループ内のレジスタに同じ値を
設定する場合は、グループ番号を指定することにより同
時に行うことができる。なお、制御回路22のアドレス
カウンタは隠れ層の計算後にはニューロンn+m+1の
シナプス接続重みの先頭のアドレスになっている。
ニット104、105、106の演算開始ニューロンレジ
スタ42及び演算シナプス数レジスタ40も設定する。
すなわち、演算開始ニューロンレジスタ42の値は3つ
の演算ユニット104、105、106の全てに0を設定
し、演算シナプス数レジスタ40の値は、第4演算ユニ
ット104にはN3、第5演算ユニット105にはN4−
N3、及び第6演算ユニット106にはm−N4をそれ
ぞれ設定する。
2に移行して、ローカルバス18にニューロン演算値の
部分和演算の開始信号を出力して、ステップ314に移
行し、出力層のニューロン(すなわち、ニューロン番号
n+m+1〜ニューロン番号n+m+p)に関するニュ
ーロン演算値の部分和演算処理を開始させる。
演算開始信号を受信した各演算ユニット101〜10xは
それぞれ割り当てられたニューロンの番号の若い順にニ
ューロン演算値の部分和演算を開始する。これにより、
出力層を構成する個々のニューロン演算値の部分和演算
が並列して行われると共に、隠れ層のニューロン演算が
グループ毎に並列して行われることとなる。なお、この
ニューロン演算は、割り当てられたニューロンが異なる
だけで上述と同様なので説明は省略する。
値の部分和yαjの累積加算処理及び接続重みの更新を
行う。ここで、出力層の累積加算処理及び接続重みの更
新について、図12のフローチャートを参照しながら説
明するが、上記図11のフローチャートを用いて説明し
た隠れ層の累積加算処理及び接続重みの更新とほぼ同様
であるので、同様の符号を付して説明は省略し、異なる
ステップだけ説明する。
ップ415では、第1グループG1によって得られたニ
ューロン出力値Yjをホストコンピュータ16に送信す
る。同様に図12のフローチャートのステップ425で
は、第2グループG2によって得られたニューロン出力
値Yjをホストコンピュータ16に送信する。これによ
り、ホストコンピュータ16には、出力層のニューロン
出力値Yn+m+1〜Yn+m+pが保存されることな
る。
が終了すると、ステップ318に移行して、ホストコン
ピュータ16に終了信号を出力した後、ステップ320
に移行して、ホストコンピュータから次の演算開始命令
が入力されたかを判断する。ホストコンピュータから次
の演算開始命令が入力されたと判断された場合、ステッ
プ302に戻り、上述した処理を繰り返す。次の演算開
始命令が入力されていないと判断た場合、本ルーチンを
終了する。なお、ホストコンピュータ16は、マスター
ノード12から終了信号が通知されると、ニューラルネ
ットワークへ新たな入力を与えるので、マスターノード
12は、ホストコンピュータ16から演算開始命令が入
力されると、直ちに本ルーチンを開いて上記の動作を行
う。
ーラルネットワーク演算装置は第1の実施の形態の応用
例であり、ニューラルネットワークの学習アルゴリズム
としてヘッブ則の代わりにバックプロパゲーションを用
いる場合の一例である。
演算装置は、図13に示す様に、個々の演算ユニット内
の制御回路22に学習シナプス数レジスタ33が設けら
れている。この学習シナプス数レジスタ33には、1つ
のニューロンが持つシナプス数Sが保存されている。ま
た、ホストコンピュータ16は、プログラムメモリ14
に教師信号dを書き込み、学習開始信号をマスターノー
ド12に送ってバックプロパゲーションによる学習を開
始させる。
ニューロン演算およびシナプス接続重み更新の場合、演
算に用いられる前段の演算層のニューロン出力値Yi〜
Yi+Nが保存され、誤差信号演算の場合、受け持つニュ
ーロンの誤差信号δj1〜δjMが保存される。なお、その
他は、上述した第1の実施の形態と同様であるので、同
様の符号を付して説明は省略する。
ーク演算装置における演算ユニット101〜10xは、各
々独立した1つの半導体素子に形成され、マスターノー
ド12からの制御データに基いてニューロン演算値の部
分和演算、バックプロパゲーションによる学習の動作を
行う。なお、ニューロン演算値の部分和演算に関しては
上記第1の実施の形態と同じであるので説明は省略し、
バックプロパゲーションによる学習について説明する。
て、各演算ユニット101〜10xは、上記(4)の式に示
した逆伝播による誤差信号δの部分和演算、及び、上記
(2)の式に示したシナプス接続重みの更新の2種類の動
作を行う。
学習においては、出力層に対してはホストコンピュータ
16から入力された教師信号dとニューロン演算で得ら
れた出力層のニューロンのニューロン出力値Yn+m+1〜
Yn+m+pとの差から誤差信号δ n+m+1〜δn+m+pを割り当
てられた出力層のニューロンについて演算する。隠れ層
に対しては出力層の誤差信号を用いて、特定のニューロ
ンと接続する出力層のシナプスの接続重みとを乗算して
得た誤差信号δの部分和δαjを演算ユニット毎に演算
した後、マスターノード12が部分和δαjを累積加算
して隠れ層のニューロンの誤差信号δを演算する。これ
を全ての隠れ層のニューロンについて行う。さらに、そ
れぞれの演算ユニットは各自の持つシナプス接続重みの
更新を行う。
ク演算装置を構成する複数の演算ユニットの各々で独立
して行う隠れ層の誤差信号δの部分和演算、及び、シナ
プス接続重みの更新の動作について説明する。なお、こ
こでは説明のため、任意の第H演算ユニット10hの誤
差信号δの部分和演算、及び、シナプス接続重みの更新
の動作について図14及び図15のフローチャートを参
照して説明する。
おける連続したニューロン番号n+m+1からニューロ
ン番号n+m+L2のM個のニューロン演算値の部分和
演算が割り当てられており、各ニューロンの全シナプス
(S個のシナプス)のうちn+1からn+N3までのN
個(但し、S>N)のシナプスが割り当てられている。
また、誤差信号演算では、同じシナプスを用いてニュー
ロン番号n+1からn+N3までのN個のニューロンの
誤差信号の部分和を、それぞれに接続されたM個のシナ
プスの値から演算する。誤差信号δの部分和演算処理で
は、ニューロン出力値メモリ24には、誤差信号δ
n+m+1〜δn+m+L2が保存されている。
全ての演算ユニット101〜10xのシナプス接続重みメ
モリ26に初期データを書き込む。次のステップ502
では、シナプス接続重みメモリ26のアドレスSADR
をクリアし、変数jの値(すなわち、誤差信号を演算す
るニューロン番号)を誤差信号の演算を割り当てられた
全てのニューロンのうち最小番号であるn+1(すなわ
ち初期値)にセットして、ステップ504に移行する。
からの誤差信号δの部分和演算開始信号の入力があるか
を判断し、入力があると判断されると、ステップ506
に移行する。
値をクリアし、ニューロン出力値メモリ24の読み出し
アドレスNADRを0に設定する。次のステップ508
では、現在のシナプス接続重みメモリ26の読み出しア
ドレスSADRに保存されたシナプス接続重みWjiを読
み出し、次のステップ510では、現在のニューロン出
力値メモリ24から読み出しアドレスNADRに保存さ
れた誤差信号δjを読み出す。
接続重みWjiと誤差信号δjとを乗算器28によって乗
算する。得られた乗算結果を加算器30によって現在累
積レジスタ32に保存されている値と加算して、累積レ
ジスタ32に保存する。
みメモリ26に保存され、誤差信号の演算を行うニュー
ロンに接続されたシナプス数分、すなわち、M回、積和
演算を行ったかを判断する。M回、積和演算を行ってい
ないと判断された場合は、ステップ522に移行し、シ
ナプス接続重みメモリ26のアドレスSADRをシナプ
ス数レジスタ40に記憶された値、すなわちN分加算
し、ニューロン出力値メモリ24の読み出しアドレスN
ADRをインクリメントしてから、ステップ508に戻
り、上述した処理を繰り返す。
を行っていると判断された場合は、ステップ516に移
行し、累積レジスタ32に保存されたデータをローカル
バスインターフェ−ス20に出力しローカルバス18を
介してマスターノード12に出力する。
ンに対して誤差信号演算が終了したか、すなわち、変数
jがn+Nに等しいかを判断する。変数jがn+Nに等
しくないと断されると、ステップ520に移行する。ス
テップ520では、シナプス接続重みメモリ26の読出
しアドレスSADRと変数jをインクリメントしてステ
ップ502に戻り、上述した処理を繰り返す。一方、ス
テップ518において変数jがn+Nに等しいと判断さ
れると、本ルーチンを終了する。
マスターノード12からの誤差信号δの部分和演算開始
信号を受け取るたびに誤差信号δの部分和演算を行う。
15のフローチャートを参照して説明する。シナプス接
続重みの更新では、ニューロン出力値メモリ24には、
演算に用いられる前段の演算層のニューロン出力値Yi
〜Yi+Nが保存される。また、学習係数レジスタ44に
は、マスターノード12によって予め決められた学習係
数ηと、重みを更新するニューロンjの誤差信号δjの
積が設定される。
出力値メモリ24には、ニューロンn+1からニューロ
ンn+N3までのN個のニューロンのニューロン出力値
Yn+ 1〜Yn+N3がアドレス0からアドレスN−1まで連
続して保存されている。また、学習係数レジスタ44に
は、学習係数ηと、重みを更新するニューロンn+m+
1からニューロンn+m+L2の誤差信号δn+m+1〜δ
n+m+L2とのそれぞれとの積が順次設定される。
のシナプス接続重みメモリ更新アドレスLADRををク
リアし、変数jの値(すなわちニューロン番号)を最小
番号にセットして、ステップ604に移行する。
12から接続重み更新信号が送られたかを判断する。マ
スターノード12からの接続重み更新信号が送られたと
判断されると、次のステップ606に移行して、ニュー
ロン出力値メモリ24の読み出しアドレスNADRを0
に設定する。
プス接続重みメモリの更新アドレスLADRに対応する
アドレスからシナプス接続重みWjiを読み出し、また、
ステップ610では、ニューロン出力値メモリ24の読
み出しアドレスNADRに対応するアドレスからニュー
ロン出力値Yjを読み出す。
ン出力値Yjを学習係数レジスタ44に保存された値
(すなわち、ニューロンjの誤差信号δと学習係数ηの
積)と積算し、積算結果を読み出したシナプス接続重み
Wjiに加算して得られた値を新規の接続重みとして更新
し、次のステップ614で、前記設定されたシナプス接
続重みメモリの更新アドレスLADRに対応するアドレ
スに書き込む。
シナプス数の回数(すなわち、N回)接続重みの更新を
行ったか、すなわち、ニューロン出力値メモリ24の読
み出しアドレスNADRがN−1になったかを判断す
る。読み出しアドレスNADRがN−1になっていない
と判断された場合は、ステップ624に移行し、ニュー
ロン出力値メモリ24の読み出しアドレスNADR及び
学習回路36のシナプス接続重みメモリの更新アドレス
LADRをインクリメントしてから、ステップ608に
戻り、上述した処理を繰り返す。
ていると判断された場合は、ステップ618に移行し、
更新終了信号を出力した後、ステップ620において、
変数jがn+m+L2になっているかを判断する。変数
jがn+m+L2になっていないと判断されると、ステ
ップ622に移行して変数jをインクリメントして、ス
テップ604に戻り、上述した処理を繰り返す。ステッ
プ620において変数jがn+m+L2になっていると
判断されると、本ルーチンを終了する。
マスターノード12からの接続重み更新信号を受け取る
たびにニューロンjから順にN個のニューロンに対して
接続重み更新を行っていく。なお、接続重み更新処理が
終了していない時に、ニューロン演算開始信号が受信さ
れた場合、接続重み更新処理の終了後に、次のニューロ
ン演算が開始される。
重み更新処理に使用するシナプス接続重みメモリ26と
ニューロン出力値メモリ24がそれぞれ別個のバンクを
持ち、メモリへのアクセスが競合しないような回路構成
でニューロン演算値の部分和演算、誤差信号演算及び接
続重み更新を並列に動作させることも可能である。
にニューロン演算が割り当てられた各演算ユニット10
1〜106を制御するマスターノード12の制御ルーチン
について、図16のフローチャートを参照しながら説明
する。まず、ステップ700において、ホストコンピュ
ータ16からニューロン演算開始命令が出力されたかを
判断し、ニューロン演算開始命令が出力されたと判断す
ると、プログラムメモリ14からマスターノード12の
制御プログラムを読み込み、次のステップ702に移行
する。ステップ702では、ニューロン演算を行う。
17のフローチャートを参照しながら説明する。なお、
本第2の実施の形態のニューロン演算のフローチャート
は、上記図10のフローチャートとほぼ同様であるの
で、同様の符号を付して説明は省略し、異なるステップ
だけ説明する。
隠れ層のニューロンのニューロン演算値の部分和yαj
の累積加算処理を行い、ステップ315では、出力層の
ニューロンのニューロン演算値の部分和yαjの累積加
算処理を行っている。
ロンのニューロン演算値の部分和yαjの累積加算処理
について図18のフローチャートを参照しながら説明す
る。なお、本第2の実施の形態の隠れ層のニューロンの
ニューロン演算値の部分和yαjの累積加算処理のフロ
ーチャートは、上記図11のフローチャートとほぼ同様
であるので、同様の符号を付して説明は省略し、異なる
ステップだけ説明する。
おいて、得られたニューロン出力値をプログラムメモリ
24に保存した後、ステップ418に移行して、第1グ
ループG1と第2グループG2に割り当てられた全ての
ニューロンの演算が終了したかを判断する。同様に、ス
テップ426において、得られたニューロン出力値をプ
ログラムメモリ14中に確保した領域に保存した後、ス
テップ418に移行して、第1グループG1と第2グル
ープG2に割り当てられた全てのニューロンの演算が終
了したかを判断する。
ニューロンのニューロン演算値の部分和yαjの累積加
算処理についても同様に図19のフローチャートを参照
しながら説明するが、上記図18のフローチャートとほ
ぼ同様であるので、同様の符号を付して説明は省略し、
異なるステップだけ説明する。
おいて、得られたニューロン出力値をホストコンピュー
タ16に出力した後、ステップ418に移行して、第1
グループG1と第2グループG2に割り当てられた全て
のニューロンの演算が終了したかを判断する。同様に、
ステップ425において、得られたニューロン出力値を
ホストコンピュータ16に出力した後、ステップ418
に移行して、第1グループG1と第2グループG2に割
り当てられた全てのニューロンの演算が終了したかを判
断する。
が終了すると、引き続きバックプロパゲーションによる
学習を行う。バックプロパゲーションによる学習は、誤
差信号演算処理と接続重み更新処理の2つの処理により
実行される。まず、ステップ704では、ホストコンピ
ュータ16から学習開始信号の入力が有るかを判断し、
学習開始信号が入力されたと判断すると、次のステップ
706に移行する。
行う。ここで、誤差信号δの演算について、図20のフ
ローチャートを参照しながら説明する。なお、誤差信号
δの演算では、ニューロン演算処理とは演算ユニットの
グループ分けの設定が異なり、第1演算ユニット101
および第4演算ユニット104を第1グループG1、第
2演算ユニット102および第5演算ユニット105を第
2グループG2、第3演算ユニット103および第6演
算ユニット106を第3グループG3にそれぞれ設定す
る。
差信号δn+1〜δn+mの演算を行うために必要な各種デー
タを書き込み指示とともに出力する。
コンピュータ16がプログラムメモリ14に書き込んだ
教師信号dn+m+1 〜dn+m+pを読み出し、上記の出力層
のニューロン演算で得られたニューロン出力値Yn+m+1
〜Yn+m+pと、教師信号dn+m+ 1 〜dn+m+pとの差の値
(すなわち、dn+m+1−Yn+m+1〜dn+m+p−Yn+m+p)
を、出力層の誤差信号δn+m+1〜δn+m+pとして、各演算
ユニット101〜106のニューロン出力値メモリ24に
設定する。
G1に属する演算ユニット101、104の最小ニューロ
ンレジスタ50をそれぞれn+mおよびn+m+L2+
1に、最大ニューロンレジスタ52をそれぞれn+m+
L2およびn+m+pに設定し、第2グループG2に属
する演算ユニット102、105および第3グループG3
に属する演算ユニット103、106に対しても同様に、
最小ニューロンレジスタ50をそれぞれn+mおよびn
+m+L2+1に、最大ニューロンレジスタ52をそれ
ぞれn+m+L2およびn+m+pに設定した後、δ
n+m+1=dn+m+1−Yn+m+1〜δn+m+p=dn+m+p−Yn+m+pを
ローカルバス18に出力することによって行われる。
小ニューロンレジスタ50に設定された値と最大ニュー
ロンレジスタ52に設定された値の間のニューロン番号
の誤差信号δを受取るため、誤差信号δn+m+1〜誤差信
号δn+m+L2は第1〜第3の演算ユニット101〜103の
ニューロン出力値メモリ24に書き込まれ、誤差信号δ
n+m+L1+1〜誤差信号δn+m+pは第4〜第6の演算ユニッ
ト104〜106のニューロン出力値メモリ24に書き込
まれることとなる。
プG1の2つの演算ユニット101、104の演算開始ニ
ューロンレジスタ42を0、演算シナプス数レジスタ4
0をN3に設定する。また、第1演算ユニット101の
学習シナプス数レジスタ33にはL2、制御回路22の
アドレスカウンタはニューロンn+m+1の接続重みの
先頭のアドレスに設定し、第4演算ユニット104の学
習シナプス数レジスタ33にはp−L2、制御回路22
のアドレスカウンタはニューロンn+m+L2+1の接
続重みの先頭のアドレスに設定する。
02、105に対しても同様に、演算開始ニューロンレジ
スタ42を0、演算シナプス数レジスタ40をN4−N
3に設定し、また、第2演算ユニット102の学習シナ
プス数レジスタ33にはL2、制御回路22のアドレス
カウンタはニューロンn+m+1の接続重みの先頭のア
ドレスに設定し、第5演算ユニット105の学習シナプ
ス数レジスタ33にはp−L2、制御回路22のアドレ
スカウンタはニューロンn+m+L2+1の接続重みの
先頭のアドレスに設定する。
ニット103、106に対しても同様に、演算開始ニュー
ロンレジスタ42を0、演算シナプス数レジスタ40を
m−N4に設定し、また、第2演算ユニット102の学
習シナプス数レジスタ33にはL2、制御回路22のア
ドレスカウンタはニューロンn+m+1の接続重みの先
頭のアドレスに設定し、第5演算ユニット105の学習
シナプス数レジスタ33にはp−L2、制御回路22の
アドレスカウンタはニューロンn+m+L2+1の接続
重みの先頭のアドレスに設定する。
移行し、第1グループG1の演算ユニット101、104
からの誤差信号δの部分和δαjを累積加算する変数S
UM1、及び誤差信号δの部分和δαjの数を表す変数
NUM1を0に初期化する。第2グループG2、第3グ
ループG3に対しても同様に、第2グループG2の演算
ユニット102、105からの誤差信号δの部分和δαj
を累積加算する変数SUM2及び誤差信号δの部分和δ
αjの数を表す変数NUM2を0に初期化すると共に、
第3グループG3の演算ユニット103、106からの誤
差信号δの部分和δαjを累積加算する変数SUM3、
及び誤差信号δの部分和δαjの数を表す変数NUM3
を0に初期化する。
グループ番号及び部分和の演算開始信号を出力して、第
1グループG1の演算ユニット101、104、第2グル
ープG2の演算ユニット102、105、及び第3グルー
プG3の演算ユニット103、106に誤差信号の演算を
開始させる。演算を開始した演算ユニットはそれぞれ前
述の誤差信号δの部分和演算処理の説明で記したように
割り当てられたニューロンの誤差信号δの部分和δαj
を演算し、得られた誤差信号δの部分和δαjを、自分
の属するグループ番号(ここでは、1、2又は3)と共
にマスターノード12に出力する。
12に誤差信号δの部分和δαjが入力されたかを判断
する。入力されたと判断されると、次のステップ808
に移行し、誤差信号δの部分和δαjと共に入力された
グループ番号が「1」かを判断する。
と、第1グループG1の誤差信号δの部分和δαjであ
るので、ステップ810に移行し、SUM1に誤差信号
δの部分和δαjを累積加算する(SUM1=SUM1
+δαj)、と共に、変数NUM1をインクリメントし
て(NUM1=NUM1+1)、次のステップ812に
移行する。
信号δの部分和δαjの数が2つであるか、すなわち、
NUM1=2かを判断し、NUM1=2でない場合は、
ステップ806に戻り、上述した処理を繰り返す。ま
た、NUM1=2である場合は、ステップ814に移行
して、SUM1をプログラムメモリ14中に確保した領
域に保存し、ステップ816に移行する。
和δαjと共に入力されたグループ番号が「1」でない
と判断されると、ステップ818に移行し、グループ番
号が「2」であるかを判断する。グループ番号が「2」
であると判断されると、入力された誤差信号δの部分和
δαjが第2グループG2の誤差信号δの部分和δαjで
あるので、ステップ820に移行し、SUM2に誤差信
号δの部分和δαjを累積加算する(SUM2=SUM
2+δαj)、と共に、変数NUM2をインクリメント
して(NUM2=NUM2+1)、次のステップ822
に移行する。
信号δの部分和δαjの数が2つであるか、すなわち、
NUM2=2かを判断し、NUM2=2でない場合は、
ステップ806に戻り、上述した処理を繰り返す。ま
た、NUM2=2である場合は、ステップ824に移行
して、SUM2をプログラムメモリ14中に確保した領
域に保存し、ステップ816に移行する。
和δαjと共に入力されたグループ番号が「2」でない
と判断されると、入力された誤差信号δの部分和δαj
が第3グループG3の誤差信号δの部分和δαjである
ので、ステップ826に移行し、SUM3に誤差信号δ
の部分和δαjを累積加算する(SUM3=SUM3+
δαj)、と共に、変数NUM3をインクリメントして
(NUM3=NUM3+1)、次のステップ822に移
行する。
信号δの部分和δαjの数が2つであるか、すなわち、
NUM3=2かを判断し、NUM3=2でない場合は、
ステップ806に戻り、上述した処理を繰り返す。ま
た、NUM3=2である場合は、ステップ830に移行
して、SUM3をプログラムメモリ14中に確保した領
域に保存し、ステップ816に移行する。
ューロンに関する誤差信号δの演算が終了したかを判断
する。終了していないと判断された場合は、ステップ8
02に戻り、部分和を受取ったグループのSUMおよび
NUMの値をクリアして上述した処理を繰り返す。ま
た、終了したと判断された場合は、本ルーチンを終了す
る。
ップ708に移行して、引き続きシナプス接続重みの更
新を行う。ここで、シナプス接続重みの更新について、
図21のフローチャートを参照して説明する。なお、グ
ループ設定は、ニューロン演算値の部分和演算時と同様
であり、第1演算ユニット101〜第3演算ユニット1
03を第1グループG1、第4演算ユニット104〜第6
演算ユニット106を第2グループG2として、1つの
演算層を構成する複数のニューロンを2つのグループに
分けている。
54に「1」が設定された演算ユニット、すなわち、第
1グループG1に属する演算ユニット101、102、1
03のそれぞれに対し、以下の設定を行う。すなわち、
第1演算ユニット101の最小ニューロンレジスタ50
には1を設定し、第2演算ユニット102の最小ニュー
ロンレジスタ50にはN1+1を設定し、第3演算ユニ
ット103の最小ニューロンレジスタ50にはN2+1
を設定すると共に、第1演算ユニット101の最大ニュ
ーロンレジスタ52にはN1を設定し、第2演算ユニッ
ト102の最大ニューロンレジスタ52にはN2を設定
し、第3演算ユニット103の最大ニューロンレジスタ
52にはnを設定する。
レジスタ54に「2」が設定された演算ユニット、すな
わち、第2グループG2に属する演算ユニット104、
105、106の最小ニューロンレジスタ50に対して
も、第4演算ユニット104には1を設定し、第5演算
ユニット105にはN1+1を設定し、第5演算ユニッ
ト105にはN2+1を設定すると共に、最大ニューロ
ンレジスタ52に対し、第4演算ユニット104にはN
1を設定し、第5演算ユニット105にはN2を設定
し、第5演算ユニット105にはnを設定する。
ナプス接続重みの更新を行うために必要な各種データを
書き込み指示とともに出力する。なお、この隠れ層のシ
ナプス接続重みの更新を行うために必要な各種データ
は、上述の図10のステップ302で説明した隠れ層の
ニューロン演算を行うために必要な各種データと同様で
あるので説明は省略する。なお、第1グループG1に属
する演算ユニット101、102、103の制御回路22
のアドレスカウンタはニューロンn+1の接続重みの先
頭のアドレスに設定し、第2グループG2に属する演算
ユニット104、105、106の制御回路22のアドレ
スカウンタはニューロンn+L1+1の接続重みの先頭
のアドレスに設定する。
みを更新するために、第1グループG1の演算ユニット
101〜103の学習係数レジスタ44にプログラムメモ
リ14に保存されたニューロンn+1の誤差信号δn+1
と予め定められた学習係数ηの積を設定し、また、ニュ
ーロンn+L1+1のシナプス接続重みを更新するため
に、第2グループG2の演算ユニット104〜106の学
習係数レジスタ44にプログラムメモリ14に保存され
たニューロンn+L1+1の誤差信号δn+L1+1と予め定
められた学習係数ηの積を設定する。これはローカルバ
ス18を通して行われる。
2に移行して、ローカルバス18にニューロン番号j、
グループ番号及び接続重み更新信号を出力して隠れ層の
ニューロン(すなわち、ニューロン番号n+1〜ニュー
ロン番号n+m)に関する接続重みの更新を開始させ
る。
み更新処理を行う。シナプス接続重み更新処理は、上述
の図15に示すように、シナプス接続重み更新信号を受
信した各演算ユニット101〜10xはそれぞれ割り当て
られたニューロンの番号の若い順に接続重み更新処理を
開始する。これにより、隠れ層のニューロンの接続重み
更新処理が並列して行われる。
ニット101、102、103はニューロンn+1の割り
当てられたシナプスに対して接続重み更新処理をそれぞ
れ並列して開始し、第2グループG2に属する演算ユニ
ット104、105、106はニューロンn+L1+1の
割り当てられたシナプスに対して接続重み更新処理をそ
れぞれ並列して開始する。
01〜106はそれぞれ上述した接続重み更新処理ルーチ
ンで記したように、割り当てられたニューロンjの接続
重み更新処理を順次行う。すなわち、指定されたニュー
ロンのシナプス接続重みWjiについて、ニューロン出力
値Yjと学習係数レジスタ44に保存された値(すなわ
ち、ニューロンjの誤差信号δと学習係数ηの積)とを
積算し、得られた値を加算した値を新規の接続重みとし
てシナプス接続重みメモリ26のアドレスSADRに上
書きすることによって更新する。
入力されたかを判断し、入力されていないと判断される
と、ステップ904に戻り、シナプス接続重み更新を継
続させる。また、更新終了信号が入力されたと判断され
ると、次のステップ908において、隠れ層の全てのニ
ューロンのシナプス接続重み更新処理が終了したかを判
断する。
重み更新処理が終了していないと判断された場合は、次
のニューロンの誤差信号δj+1と学習係数の積ηを学習
係数レジスタ44に保存し、ステップ920に移行し
て、変数jをインクリメントして次のニューロンのニュ
ーロン番号j、グループ番号G及び接続重み更新信号を
ローカルバス18出力してステップ904に戻り、上述
した処理を繰り返す。
重み更新処理が終了したと判断された場合は、ステップ
910に移行して、出力層のシナプス接続重みの更新を
行うために必要な各種データを書き込み指示とともに送
出する。なお、この出力層のシナプス接続重みの更新を
行うために必要な各種データは、上述の図10のステッ
プ310で説明した出力層のニューロン演算を行うため
に必要な各種データと同様であるので説明は省略する。
ット101、102、103の制御回路22のアドレスカ
ウンタはニューロンn+m+1の接続重みの先頭のアド
レスに設定し、第2グループG2に属する演算ユニット
104、105、106の制御回路22のアドレスカウン
タはニューロンn+m+L2+1の接続重みの先頭のア
ドレスに設定する。
続重みを更新するために、第1グループG1の演算ユニ
ット101〜103の学習係数レジスタ44にプログラム
メモリ14に保存されたニューロンn+m+1の誤差信
号δn+m+1と予め定められた学習係数ηの積を設定し、
また、ニューロンn+m+L2+1のシナプス接続重み
を更新するために、第2グループG2の演算ユニット1
04〜106の学習係数レジスタ44にプログラムメモリ
14に保存されたニューロンn+L1+1の誤差信号δ
n+m+L2+1と予め定められた学習係数ηの積を設定する。
これはローカルバス18を通して行われる。
2に移行して、ローカルバス18にグループ番号および
接続重み更新信号を出力して出力層のニューロン(すな
わち、ニューロン番号n+m+1〜ニューロン番号n+
m+p)に関する接続重みの更新処理を開始させる。こ
のシナプス接続重み更新処理は、上述の隠れ層のシナプ
ス接続重み更新処理と同様であるので、説明は省略す
る。
入力されたかを判断し、入力されていないと判断される
と、ステップ912に戻り、シナプス接続重み更新を継
続させる。また、更新終了信号が入力されたと判断され
ると、次のステップ916において、出力層の全てのニ
ューロンのシナプス接続重み更新処理が終了したかを判
断する。
重み更新処理が終了していないと判断された場合は、次
のニューロンの誤差信号δj+1と学習係数の積ηを学習
係数レジスタ44に保存し、ステップ922に移行し
て、変数jをインクリメントして次のニューロンのニュ
ーロン番号j、グループ番号G及び接続重み更新信号を
ローカルバス18出力してステップ912に戻り、上述
した処理を繰り返し、出力層の全てのニューロンのシナ
プス接続重み更新処理が終了したと判断された場合は、
本ルーチンを終了する。
16のステップ710に移行して、ホストコンピュータ
16に終了信号を出力する。これにより、1回の入力に
対するニューロン演算およびバックプロパゲーション学
習が終了する。
ータ16から新たな入力があるかを判断し、新たな入力
がある場合は、新たな入力に対するニューロン演算およ
びバックプロパゲーション学習を行うために、ステップ
702に戻り、上述した処理を繰り返す。新たな入力無
い場合は、本ルーチンを閉じ、ニューロン演算およびバ
ックプロパゲーション学習を終了する。
10xにおけるニューロン演算および隠れ層の誤差信号
の演算は各演算ユニット101〜10x内のメモリに保存
された値のみを用いて演算を行うため、高速に行うこと
ができる。また、各演算ユニット101〜10x内からロ
ーカルバス18に送出されるデータ量は1回のニューロ
ンの演算につき1回の転送、および1回の誤差演算につ
き、誤差演算を割り当てた演算ユニットの数だけの部分
和の転送で済むため、ローカルバス18の帯域が律速と
なって演算性能が低下する可能性を低く抑えることがで
きる。
形態においては、説明のため、隠れ層を1層有する3層
のパーセプトロンのニューラルネットワークとしたが、
勿論、3層のパーセプトロンのニューラルネットワーク
に限らず、隠れ層を2層以上有する4層以上のパーセプ
トロンのニューラルネットワークにも適用可能である。
ューラルネットワーク演算装置は、第1の実施の形態の
応用例であり、ニューラルネットワークとして巡回結合
型のネットワークを用いる場合の一例である。なお、学
習則は、ヘッブ則を用いている。
演算装置は、図22に示すように、第1の実施の形態の
ニューラルネットワーク演算装置と比べてニューロン出
力メモリが2つ(すなわち、第1ニューロン出力メモリ
24a、第2ニューロン出力メモリ24b)設けられて
いる点が異なる。その他は、第1の実施の形態のニュー
ラルネットワーク演算装置と同様であるので、説明は省
略する。
ークに同じ入力を与えても、ネットワーク中のニューロ
ンの出力が時間とともに変化する。このようなネットワ
ークを計算するためには、時間t+1のネットワークの
状態を、時間tのニューロン出力を用いて計算する必要
がある。そのため、第3実施の形態のニューラルネット
ワーク演算装置では、各演算ユニット10は、時間tの
ニューロン出力値を保存するメモリと時間t+1のニュ
ーロン出力値を保存するメモリとの2つのメモリ(すな
わち、第1ニューロン出力メモリ24a及び第2ニュー
ロン出力メモリ24b)を備えている。
部分和を計算する際に第1ニューロン出力メモリ24a
または第2ニューロン出力メモリ24bのいずれか一方
から時間tのニューロン出力値を読み出して部分和を計
算する。次の時刻では第1ニューロン出力メモリ24a
または第2ニューロン出力メモリ24bのいずれか他方
から時間t+1のニューロン出力値を読み出して部分和
を計算する。その他は第1の実施の形態のニューラルネ
ットワーク演算装置と同様であるので、説明は省略す
る。
ーラルネットワーク演算装置で用いる巡回結合型ニュー
ラルネットワークの構造を示す。説明のためにニューラ
ルネットワーク中のニューロンに1〜n+m+pの番号
を与える。ネットワーク中のニューロン1〜nが入力層
のニューロン、ニューロンn+m+1〜n+m+pが出
力層のニューロンであり、残りのニューロンn+1〜n
+mは自由な相互接続が許されている。
〜106への割り当て方法について説明する。図23に
示した全てのニューロン1〜n+m+pのニューロン出
力値をそれぞれY1〜Yn+m+p、ニューロンiからニュー
ロンjへのシナプス接続の重みをWjiと書き表すと、巡
回結合型ニューラルネットワークの演算は、n+m+p
行n+m+p列の行列で表すことができ、シナプス接続
の重みWjiは、図24に示すようにI、II、III、及びIV
の4つの領域に分けることができる。
なわち、1≦i≦n、n+1≦j≦n+m)を表し、II
の領域は隠れ層から出力層への接続(すなわち、n+1
≦i≦n+m、n+m+1≦j≦n+m+p)を表し、I
Vの領域は隠れ層のニューロン間の相互接続(すなわち、
n+1≦i≦n+m、n+1≦j≦n+m)を表してい
る。なお、IIIの領域は入力層から出力層への接続(1≦
i≦n、n+m+1≦j≦n+m+p)表すが、ここで
は接続が無く(Wji=0)、計算する必要の無い領域であ
る。他の領域も接続が無く(Wji=0)計算する必要の無
い領域である。
ットワークの計算方法では、Iの領域、IIの領域、及びI
Vの領域で表された計算すべき全ての接続を、少なくと
も横方向に複数分割してx個の演算ユニットの全部又は
1部に割り当て、分散処理させる。
域、及びIVの領域で表された計算すべき全ての接続を、
図25に示すようにA−1〜A−6の6つの領域に分割
して6つの演算ユニット101〜106に均等に割り当
て、分散処理させるように構成する。
プ設定は、上記第1の実施の形態のニューロン演算値の
部分和演算時と同様であり、第1演算ユニット101〜
第3演算ユニット103を第1グループG1としてグル
ープレジスタ54に「1」を設定し、第4演算ユニット
104〜第6演算ユニット106を第2グループG2とし
てグループレジスタ54に「2」を設定して、1つの演
算層を構成する複数のニューロンを2つのグループに分
けこれら第1グループG1と第2グループG2とに割り
当てている。なお、このニューロンの割り当ても、上記
第1の実施の形態のニューロン演算値の部分和演算時と
同様であるので説明は省略する。
1のシナプス接続重みメモリ26にはA−1の領域の接
続重みWji(1≦i≦T、n+1≦j≦n+L1)が保存
され、第2演算ユニット102のシナプス接続重みメモ
リ26にはA−2の領域の接続重みWji(T+1≦i≦
2T、n+1≦j≦n+L1)が保存され、第3演算ユ
ニット103のシナプス接続重みメモリ26にはA−3
の領域の接続重みWji(2T+1≦i≦n+m、n+1
≦j≦n+L1)が保存される。(ただし、Tは、n+
mを3等分する正の整数である。)また、第2グループ
G2の第4演算ユニット104のシナプス接続重みメモ
リ26にはA−4の領域の接続重みWji(1≦i≦T、
n+L1+1≦j≦n+m)が保存され、第5演算ユニ
ット105のシナプス接続重みメモリ26にはA−5の
領域の接続重みWji(T+1≦i≦2T、n+L1+1
≦j≦n+m)が保存され、第6演算ユニット106のシ
ナプス接続重みメモリ26にはA−6の領域の接続重み
Wji(2T+1≦i≦n+m、n+L1+1≦j≦n+
m)、及びWji(n+1≦i≦n+m、n+m+1≦j≦
n+m+q)が保存される。
にはA−1の領域の列番号に対応したYi(1≦i≦T)
が保存され、同時に最小ニューロンレジスタ50にはA
−1の領域の先頭のニューロン番号1が、最大ニューロ
ンレジスタ52にはA−1の領域の最後のニューロン番
号Tが設定される。第2演算ユニット102〜106につ
いてもそれぞれA−2の領域、A−3の領域、A−4の
領域、A−5の領域およびA−6の領域の接続重み及び
対応するニューロン出力値が保存される。
れた各演算ユニット101〜106を制御するマスターノ
ード12の制御ルーチンについては、上記第1の実施の
形態とほぼ同様であり、隠れ層の演算時に得られたニュ
ーロン出力値を第1のニューロン出力メモリ24aに保
存したら、次の隠れ層の演算時には得られたニューロン
出力値を第2ニューロン出力メモリ24bに保存すると
いうように、第1のニューロン出力メモリ24aと第2
ニューロン出力メモリ24bの役割を交互に変えながら
各時刻の演算を繰り返す。なお、その他は、上述の第1
の実施の形態と同様であるので説明は省略する。
実施の形態では、各演算ユニット101〜10xからマス
ターノード12に転送されるデータ量は1回のニューロ
ンの演算につき、1つのグループ内の演算ユニット数分
の部分和の転送ですむため、ローカルバス18の帯域が
律速となって演算性能が低下する可能性を低く抑えるこ
とができる。
クの演算を行うためには、グループ内の演算ユニットの
数を少なくし、演算ユニット内からマスターノード12
に転送されるデータ量を少なくすると良い。また、演算
ユニット内のニューロン出力値メモリ24の容量は例え
ばNmaxニューロン分と固定値である。そのため、1つ
の演算ユニットは最大Nmaxシナプス分のニューロン演
算しか担当できないので、グループ内の演算ユニットの
数は隠れ層ではn÷Nmax、出力層ではm÷Nm ax以上の
もっとも小さな整数に設定した方が良い。
形態においては説明を簡略にするため、ニューラルネッ
トワークの演算を第1演算ユニット101から第6演算
ユニット106の6個の演算ユニットに割り当てる場合
について説明したが、もちろん、本発明は、6個の演算
ユニットに割り当てる場合に限らず、2個からx個の演
算ユニットの全て又は1部に割り当てるように構成する
こともできる。
の形態及び第3の実施の形態では、各演算ユニット10
1〜10xが独立した半導体素子に形成され、複数の半導
体素子が一つの基板上に実装されている構成としたが、
1つの半導体素子内に複数の領域を設け、該領域のそれ
ぞれに各演算ユニット101〜10xを構成したり、各演
算ユニット101〜10xが独立した基板上に個別に形成
され、複数の基板がバスを介して結合される構成とする
ことも可能である。
ューラルネットワーク演算装置は、第1の実施の形態の
応用例であり、ニューラルネットワークとして第3の実
施の形態と同様に巡回結合型のネットワークを用い、学
習則として、ヘッブ則を用いている。
演算装置は、図26に示すように、第1の実施の形態の
ニューラルネットワーク演算装置を構成した複数の演算
ユニット101〜10x(1<x;但し、xは正の整数、
Hは1≦H≦x)、マスターノード12、プログラムメ
モリ14とを1つのプロセッサボード15に設け、複数
のプロセッサボード151〜15Zとホストコンピュータ
16とがシステムバス17により接続され、ホストコン
ピュータ16からの制御情報がシステムバス17を介し
て各プロセッサボード151〜15Zに設けられたマスタ
ーノード12に出力され、また、各プロセッサボード1
51〜15Z毎に得られた演算値がマスターノード12か
らシステムバス17を介してホストコンピュータ16に
出力される。
られたマスターノード12は、例えば、CPUなどのプ
ログラム可能な中央演算処理装置より構成され、各々ロ
ーカルバス18を介して接続された複数の演算ユニット
101〜10xの制御を行うとともに、自らのプロセッサ
ボード上の各演算ユニット101〜10xから出力された
第1の部分和(後述する)を累積加算する。
指定された特定のプロセッサボード15上のマスターノ
ード12は、他のプロセッサボード15上のマスターノ
ード12の制御を行うとともに、各演算ユニット101
〜10xからローカルバス18に出力された第1の部分
和を累積加算した値と、同じニューロンのニューロン演
算を割り当てられた他のプロセッサボードのマスターノ
ード12から出力された第2の部分和(後述する)とを
加算し、得られた値を非線型変換演算してニューロン出
力値を演算する。なお、各プロセッサボード151〜1
5Z上の演算ユニット101〜10xのマスターノード1
2、プログラムメモリ14の構成及び動作は、第1の実
施の形態と同様であるので、説明は省略する。
演算装置に、上記第3の実施の形態で説明した巡回結合
型のネットワークの演算を、第1プロセッサボード15
1から第Zプロセッサボード15ZのZ個(ただし、Zは
任意の正の整数)のプロセッサボードに割り当てる方法
について説明する。ここでは、説明を簡略にするため、
ニューラルネットワーク演算装置が第1プロセッサボー
ド151から第4プロセッサボード154の4個のプロセ
ッサボードを備え、各プロセッサボード15には、第1
演算ユニット101から第6演算ユニット106の6個の
演算ユニットが設けられている場合について説明する。
は、図27に示すような行列で表すことができる。本第
4の実施の形態におけるニューラルネットワークの計算
方法では、4つのプロセッサボードに対応するように計
算すべきシナプス接続の重みWjiを横方向に2分割縦方
向に2分割して、VIの領域、VIIの領域、VIIIの領域、
及びIXの領域の4つの領域とし、それぞれVIの領域は第
1プロセッサボード151、VIIの領域は第2プロセッサ
ボード152、VIIIの領域は第3プロセッサボード1
53、IXの領域は第4プロセッサボード154、の4個の
プロセッサボードに割り当てる。
ボード毎に割り当てられたVI、VII、VIII、及びIXの4
つの各領域を横方向に6分割してプロセッサボード上の
6つの演算ユニット101〜106に均等に割り当て、分
散処理させるように構成する。
の演算ユニット、及び第2プロセッサボード152上の
演算ユニットを第1グループG1に設定し、第3プロセ
ッサボード153上の演算ユニット、及び第4プロセッ
サボード154上の演算ユニットを第2グループG2に
設定し、第1グループG1と第2グループG2が別々の
ニューロンを並列して演算できるように構成する。
ンが持つシナプスは、2つのプロセッサボード、すなわ
ち、第1プロセッサボード151及び第2プロセッサボ
ード152、又は第3プロセッサボード153及び第4プ
ロセッサボード154に分割して割当てられている。そ
のため、第1プロセッサボード151内の演算ユニット
101〜106が出力した値を累積加算した値を第1の部
分和yαj1と称し、同じニューロンついて第2プロセッ
サボード152内の演算ユニット101〜106が出力し
た値を累積加算した値を第2の部分和yαj2と称する。
同様に、第3プロセッサボード153内の演算ユニット
101〜106が出力した値を累積加算した値を第1の部
分和yαj1と称し、同じニューロンついて第4プロセッ
サボード154内の演算ユニット101〜106が出力し
た値を累積加算した値を第2の部分和yαj2と称する。
セッサボード151上のマスターノード12、及び、第
3プロセッサボード153上のマスターノード12を第
2の部分和yαj2の加算を行うマスターノード12に指
定する。
マスターノード12は、第1プロセッサボード151内
の演算ユニット101〜106から出力された第1の部分
和yαj1及び第2プロセッサボード152のマスターノ
ード12から出力された第2の部分和yαj2を受け取
り、6個の第1の部分和yαj1と1個の第2の部分和y
αj2をグループ毎に加算し、得られた値を、例えば、シ
グモイド関数によって非線型変換を行って、ニューロン
の出力値Yjを演算する。また、第3プロセッサボード
153のマスターノード12も同様に、第3プロセッサ
ボード153内の演算ユニット101〜106から出力さ
れた第1の部分和yαj1及び第4プロセッサボード15
4のマスターノード12から出力された第2の部分和y
αj2を受け取り、6個の第1の部分和yαj1と1個の第
2の部分和yαj2をグループ毎に加算し、得られた値
を、例えば、シグモイド関数によって非線型変換を行っ
て、ニューロンの出力値Yjを演算する。なお、シグモ
イド関数のパラメータはニューロン毎に変更できる。非
線型変換を行う関数としては、閾値論理も考えられる。
ーロン番号jとともにローカルバス18に出力される。
これにより、ニューロン出力値を計算したマスターノー
ドがあるプロセッサボード上の演算ユニット101〜1
06がニューロンjの出力値Y jを受け取り、第2ニュー
ロン出力値メモリ24bに書き込む。また、マスターノ
ード12はシステムバス17にもニューロン番号jと共
に演算されたニューロン出力値Yjを出力する。システ
ムバス17に出力されたニューロン番号jとニューロン
出力値Yjは、他のプロセッサボード上の各マスターノ
ード12が受け取り、各ボード内のローカルバス18に
中継される。これにより、ニューロン番号jが最小ニュ
ーロンレジスタ50に設定された値と最大ニューロンレ
ジスタ52に設定された値との間となる他のプロセッサ
ボード上の演算ユニット101〜106がニューロン出力
値Yjを受取り、第2ニューロン出力値メモリ24bに
書き込む。なお、その他のニューラルネットの演算の動
作については、上述の第1の実施の形態と同様であるの
で説明は省略する。
ューロンn+m+pの演算結果は、システムバス17を
介してホストコンピュータ16に出力される。指定され
た第1のプロセッサボード151及び第3のプロセッサ
ボード153のマスターノード12はそれぞれ割り当て
られたすべてのニューロンの演算が終了すると、それぞ
れホストコンピュータ16に演算終了を通知する。
サボード151及び第3のプロセッサボード153のそれ
ぞれのマスターノード12から終了信号が入力される
と、ニューラルネットワークへ新たな入力を与え、次の
時刻の計算を開始する。その場合、第1プロセッサボー
ド151〜第4プロセッサボード154内の各演算ユニッ
ト101〜106は第2ニューロン出力メモリ24bに保
存されたニューロン出力値Yiを用いて演算を行い、演
算により得られたニューロン出力値を第1ニューロン出
力メモリ24aに保存する。このように第4の実施の形
態のニューラルネットワーク演算装置は、第1のニュー
ロン出力メモリ24aと第2ニューロン出力メモリ24
bの役割を交互に変えながら各時刻の演算を繰り返す。
の動作も、上記第1の実施の形態と同様であり、各プロ
セッサボード151〜154に対する制御も上述したニュ
ーロン演算と同様であるので、説明は省略する。
プロセッサボード151〜154内の演算ユニット101
〜106からマスターノード12に転送されるデータ量
は1回のニューロンの演算につき、プロセッサボード1
51〜154内の同一グループに属する演算演算ユニット
の数だけの第1の部分和の転送ですむため、ローカルバ
ス18の帯域が律速となって演算性能が低下する可能性
を低く抑えることができる。さらに、各プロセッサボー
ド151〜154間で転送されるデータ量は、1回のニュ
ーロンの演算につき同一グループに属するプロセッサボ
ードの数だけの第2の部分和の転送ですむため、システ
ムバス17の帯域が律速となって演算性能が低下する可
能性を低く抑えることができる。
規模なニューラルネットワークの演算を行うためには、
各プロセッサボードにおけるグループ内の演算ユニット
数もしくは同一グループに属するプロセッサボード数を
少なくし、転送されるデータ量が少なくなるように構成
することが好適である。
7の帯域を比較した場合、通常システムバス17の帯域
の方が低いため、同一グループに属するプロセッサボー
ドの数を少なくした方が好ましい。すなわち、プロセッ
サボード内に実装されたすべての演算ユニットを同一の
グループに属するように割当てる、あるいは、プロセッ
サボード内の演算ユニット数をローカルバスが律速にな
らない範囲で増やせば良い。
メモリ24a、24bの容量は、例えば、Nmaxニュー
ロン分と固定されているため、1つの演算ユニットは最
大Nm axシナプス分、1つのプロセッサボードではNmax
×(実装された演算ユニット数X)の部分和しか担当でき
ない。従ってグループ内のプロセッサボード数はM2÷
Nmax÷(実装された演算ユニット数X)以上のもっとも
小さな整数に設定すると好ましい。
セッサボード151上のマスターノード12、及び、第
3プロセッサボード153上のマスターノード12をそ
れぞれ第1の部分和yαj1と第2の部分和yαj2の加算
を行うマスターノード12に指定して、異なったグルー
プに属するボード間に第2の部分和を伝送する必要を無
くし、システムバス17の使用帯域をさらに低減させる
構成としたが、もちろんこの構成に限らず、第1プロセ
ッサボード151上のマスターノード12のみを指定し
て、第1プロセッサボード151の第1演算ユニット1
01〜103が出力した値を累積加算した第1の部分和y
αj1と第2プロセッサボード152のマスターノード1
2が出力した第2の部分和yαj2を加算すると共に、第
3プロセッサボード153のマスターノード12が出力
した第2の部分和yαj2と第4プロセッサボード154
のマスターノード12が出力した第2の部分和yαj2を
加算するように構成することも可能である。
接続の重みWjiを4つの領域に分割した場合について説
明したが、4つに限らず、複数に分割することができ
る。特に、プロセッサボード数分に分割して各プロセッ
サボードに割当てるようにするよい。
ルネットワーク演算装置が4個のプロセッサボードを備
え、各プロセッサボード15には6個の演算ユニットを
備え、ニューラルネットワークの演算を合計24個の演
算ユニットに割り当てる場合について説明したが、もち
ろん、本発明はこの構成に限らず、プロセッサボード数
を2個からZ個とし、各プロセッサボードに2個からx
個の演算ユニットを設けて、各演算ユニットの全て又は
1部にニューラルネットワークの演算を割り当てるよう
に構成することもできる。
ット101〜10Xが1つの半導体素子として形成され、
ローカルバス18が1つのプロセッサボード(基板)上
で各演算ユニット101〜10Xを結合し、システムバス
17が各プロセッサボード(基板)を結合する構成を示
したが、演算ユニット101〜10Xが半導体素子内の1
つの領域であり、ローカルバス18が1つの半導体素子
内で各演算ユニット101〜10Xを結合し、システムバ
ス17が1つのプロセッサボード(基板)上で各半導体
素子を結合する構成とすることもできる。また、プロセ
ッサボード群を結合するさらに上位のバスに第4の実施
の形態のニューラルネットワーク演算装置を設け、この
プロセッサボード群、プロセッサボードおよび半導体素
子の三者の関係に拡張することも可能である。
は、演算層及び出力層のニューロン演算値の部分和演算
において、演算層及び出力層を構成する複数のニューロ
ンを2分割して2つのグループに割り当てたが、2分割
に限らず、演算層及び出力層を構成する複数のニューロ
ンを3分割以上に分割して、分割した数と同数の演算ユ
ニットのグループに割り当てるように構成したり、逆
に、演算層及び出力層を構成する複数のニューロンを分
割せず、演算ユニットをグループ化しないでニューロン
演算値の部分和演算を行うように構成することも可能で
ある。
形態では、各演算ユニット101〜10xにおける部分和
yαjの演算は、各演算ユニット101〜10x毎に設け
られたメモリに保存されたシナプス接続重みWjiとニュ
ーロン出力値Yiを用いて行うため、高速に演算処理で
きる。
態及び第4の実施の形態では、学習アルゴリズムとして
ヘッブ則を用いて説明したが、学習回路36の制御プロ
グラムの変更等によって、1つのニューロンの持つシナ
プス接続重みの総和を制限する変形ヘッブ則等他の学習
則にも容易に適用可能である。
形態では、マスターノード12と演算ユニット101〜
10xとを別々のものとして説明したが、演算ユニット
101〜10xのいずれかがマスターノード12を兼ねる
ように構成することも可能である。また、演算するニュ
ーロン毎にマスターノード12を兼ねる演算ユニットを
演算ユニット自身が自律的に変えることも可能である。
形態において、演算は任意の数の演算ユニット101〜
10xによって並列に実行できるが、1つのニューロン
の演算は同じグループ内のすべての演算ユニットの部分
和の演算が終了するまで完了しないため、各演算ユニッ
トの演算時間が等しくなるように均等に、ニューロン又
はシナプスを割り当て、分担する演算量をほぼ同一量と
することが望ましい。
ーロン出力値メモリ24からデータを読み出す方法とし
て、連続したアドレスから順次読み出すようにしたが、
任意の順序での読み出すようにすることもできる。ま
た、ニューロン出力値メモリ24に、連続したニューロ
ン番号のニューロン出力値を保存するように構成した
が、ランダムに選択した不連続のニューロン番号のニュ
ーロン出力値を保存するように構成することもできる。
形態において、各演算ユニットにおける部分和の演算は
演算ユニット内のメモリに保存されたシナプス接続重み
とニューロン出力値のみを用いた演算を行うため、高速
に行うことができる。
トとは独立のものとして構成したが、演算ユニット10
1〜10xのいずれか1つを選択してマスターノード12
の機能を持たせるように構成することも可能である。ま
た、演算するニューロン毎にマスターノード12を兼ね
る演算ユニットを、演算ユニット自身が自律的に変える
構成とすることも可能である。
形態において、マスターノード12とホストコンピュー
タ16を別々の装置により構成したが、ホストコンピュ
ータ16がマスターノード12を兼ねる等のように1つ
の装置により構成することも可能である。また、マスタ
ーノード12とプログラムメモリ14を別々により構成
したが、プログラムメモリ14がマスターノード12に
含まれた構成とすることも可能である。また、演算ユニ
ットが1つの加算器30および1つの乗算器28を持つ
場合について説明したが、演算器が複数あり、1つの演
算ユニットが複数のニューロンに関するニューロン演算
を同時に行う構成も可能である。
ューラルネットワークを多数の演算ユニットを用いて並
列計算する場合に、各演算ユニットを独立して、かつ高
速に動作させることができ、また、ネットワーク規模に
応じて演算ユニットの数を増やしても処理速度が低下し
ない、という効果がある。
トワーク演算装置の概略構成を示すブロック図である。
置を構成する演算ユニットの概略構成を示すブロック図
である。
トワーク演算装置を適用したニューラルネットワークの
概念図である。
力値のメモリマップである。
存されるニューロン出力値のメモリマップである。
ス接続重みのメモリマップである。
演算装置によるニューロン演算値の部分和演算処理ルー
チンである。
演算装置によるシナプス接続重みの更新処理ルーチンで
ある。
ルネットワーク演算装置に適用した3層のパーセプトロ
ン型のニューラルネットワークの演算を行列で表現した
説明図であり、図9(B)は、図9(A)の行列内のI
の領域で表された計算すべき接続を分割する方法の一例
を示す説明図であり、図9(C)は、図9(A)内のII
の領域で表された計算すべき接続を分割する方法の一例
を示す説明図である。
ンである。
ロン演算値の部分和累積加算処理、シナプス接続重み更
新についてのフローチャートである。
ロン演算値の部分和累積加算処理、シナプス接続重み更
新についてのフローチャートである。
ットワーク演算装置を構成する演算ユニットの概略構成
を示すブロック図である。
ットワーク演算装置による誤差信号の部分和演算処理ル
ーチンである。
ットワーク演算装置によるシナプス接続重み更新処理処
理ルーチンである。
ドの制御ルーチンである。
算のフローチャートである。
ロンのニューロン演算値の部分和の累積加算処理につい
てのフローチャートである。
ロンのニューロン演算値の部分和の累積加算処理につい
てのフローチャートである。
についてのフローチャートである。
みの更新についてのフローチャートである。
演算装置を構成する演算ユニットの概略構成を示すブロ
ック図である。
ットワーク演算装置を適用したニューラルネットワーク
の概念図である。
ク演算装置に適用した巡回結合型のニューラルネットワ
ークの演算を行列で表現した説明図である。
接続を分割する方法の一例を示す説明図である。
ットワーク演算装置の概略構成を示すブロック図であ
る。
ク演算装置に適用した巡回結合型のニューラルネットワ
ークの演算を行列で表現した説明図である。
域で表された計算すべき接続を分割する方法の一例を示
す説明図であり、図28(B)は、図27の行列内のVI
Iの領域で表された計算すべき接続を分割する方法の一
例を示す説明図であり、図28(C)は、図27の行列
内のVIIIの領域で表された計算すべき接続を分割する方
法の一例を示す説明図であり、図28(D)は、図27
の行列内のIXの領域で表された計算すべき接続を分割す
る方法の一例を示す説明図である。
ブロック図である。
Claims (17)
- 【請求項1】 少なくとも1つ以上の伝送路で接続さ
れ、ニューラルネットワークを構成する複数のニューロ
ンのうちの所定数のニューロンがそれぞれ割り当てられ
た複数の演算要素によって並列にニューロン演算を行う
ニューラルネットワーク演算装置であって、 前記複数の演算要素の各々は、 1つのニューロンが持つ全てのシナプスのうちの少なく
とも1部のシナプスのシナプス接続重みを、割り当てら
れた所定数のニューロン分保存するシナプス接続重み保
存メモリと、 ニューロン演算時に、前記所定数のニューロンを順次選
択すると共に、該選択したニューロンのシナプスを順次
選択して、該選択したシナプスのシナプス接続重みと前
記シナプスと接続された前段のニューロンのニューロン
出力値とを乗算して同一のニューロン毎に累積加算し、
得られた値をニューロン演算値の部分和として出力する
累積加算手段とを備え、 前記複数の演算要素が出力したニューロン演算値の部分
和を1つのニューロンが持つ全てのシナプス分の値が加
算されるまで累積加算してニューロン出力値を生成する
ニューロン出力値生成手段を更に、 備えたニューラルネットワーク演算装置。 - 【請求項2】 前記ニューロン演算値の部分和、及び、
前記ニューロン演算値の部分和を同一のニューロン毎に
累積加算して得られる部分和の少なくとも一方を、同一
のニューロン毎に累積加算してニューロン演算値の中間
の部分和として出力する中間の部分和累積加算手段をさ
らに備え、 前記ニューロン出力値生成手段は、前記ニューロン演算
値の部分和、及び、前記中間の部分和の少なくとも一方
を、1つのニューロンが持つ全てのシナプス分の値が加
算されるまで累積加算する請求項1に記載のニューラル
ネットワーク演算装置。 - 【請求項3】 前記複数の演算要素を所定数の演算要素
毎に分割して複数グループとし、前記ニューロン出力値
生成手段は、前記グループ毎に設けられている請求項1
又は請求項2に記載のニューラルネットワーク演算装
置。 - 【請求項4】 前記複数グループのうちの1グループを
構成する所定数の演算要素が複数の半導体素子に分割し
て形成され、 前記所定数の演算要素が分割して形成された複数の半導
体素子が、同一の回路基板に実装されており、 前記中間の部分和累積加算手段は、前記所定数の演算要
素が分割して形成された半導体素子毎に設けられている
請求項3に記載の記載のニューラルネットワーク演算装
置。 - 【請求項5】 前記複数グループのうちの1グループを
構成する所定数の演算要素が複数の回路基板上の複数の
半導体素子に分割して形成され、 前記複数の回路基板が、同一の実装基板に実装されてお
り、 前記中間の部分和累積加算手段は、少なくとも前記半導
体素子毎、若しくは、前記回路基板に設けられている請
求項3に記載の記載のニューラルネットワーク演算装
置。 - 【請求項6】 前記演算要素は、 少なくとも前記シナプス接続重み保存メモリに保存され
たシナプスと接続するニューロン出力値が保存されるデ
ータ保存メモリを更に備えた請求項1から請求項5のい
ずれか1項に記載のニューラルネットワーク演算装置。 - 【請求項7】 前記データ保存メモリは、少なくとも2
つのメモリから構成され、 一方のメモリには演算に用いるデータを保存すると共
に、他方のメモリには演算により得られた結果を保存す
るように設定される請求項6に記載のニューラルネット
ワーク演算装置。 - 【請求項8】 保存メモリに保存されたシナプス接続重
みのうち、選択したニューロンのシナプス接続重みの各
々を更新する接続重み更新手段を更に備えた請求項1か
ら請求項7のいずれか1項に記載のニューラルネットワ
ーク演算装置。 - 【請求項9】 前記累積加算手段は、 誤差信号演算時には、特定のニューロンと接続する前記
所定数のニューロンのシナプスを順次選択し、選択され
たシナプスの接続重みと、該選択されたシナプスを持つ
ニューロンの誤差信号とを乗算して、前記所定数のニュ
ーロン分累積加算し、得られた値を誤差信号の部分和と
して出力し、 前記誤差信号の部分和を前記特定のニューロンと接続さ
れた全てのニューロン分累積加算し、得られた値を前記
特定のニューロンの誤差信号として前記特定のニューロ
ンが割り当てられた演算要素に出力する誤差信号生成手
段を更に、備えた請求項1〜請求項8のいずれか1項に
ニューラルネットワーク演算装置。 - 【請求項10】 前記接続重み更新手段は、前記誤差信
号生成手段により生成された誤差信号を用いて、保存メ
モリに保存されたシナプス接続重みを更新する請求項9
に記載のニューラルネットワーク演算装置。 - 【請求項11】 1つのグループを構成する所定数の演
算要素を接続する複数の第1の伝送路と、該第1の伝送
路よりも帯域が小さく、かつ、複数のグループを接続す
る少なくとも1つの第2の伝送路とを更に備え、 前記第2の伝送路数は、前記所定数の演算要素数グルー
プを構成する所定数の演算要素数よりも少なく設けられ
ている請求項3から請求項7のいずれか1項に記載のニ
ューラルネットワーク演算装置。 - 【請求項12】ニューラルネットワークを構成する複数
のニューロンのうちの所定数のニューロン毎に並列して
ニューロン演算を行うニューラルネットワーク演算方法
であって、 1つのニューロンが持つ全てのシナプスのうちの少なく
とも1部のシナプスのシナプス接続重みを、割り当てら
れた所定数のニューロン分保存し、 ニューロン演算時に、前記所定数のニューロンを順次選
択すると共に、該選択したニューロンのシナプスを順次
選択して、選択したシナプスのシナプス接続重みと該シ
ナプスと接続された前段のニューロンのニューロン出力
値とを乗算して同一のニューロン毎に累積加算してニュ
ーロン演算値の部分和を生成し、 前記ニューロン演算値の部分和を1つのニューロンが持
つ全てのシナプス分の値が加算されるまで累積加算して
ニューロン出力値を生成するニューラルネットワークの
演算方法。 - 【請求項13】 前記ニューロン演算値の部分和を累積
加算してニューロン出力値を生成する際に、 前記ニューロン演算値の部分和、及び、前記ニューロン
演算値の部分和を同一のニューロン毎に累積加算して得
られる部分和の少なくとも一方を、同一のニューロン毎
に累積加算してニューロン演算値の中間の部分和を生成
し、 前記ニューロン演算値の部分和、及び、前記中間の部分
和の少なくとも一方を、1つのニューロンが持つ全ての
シナプス分の値が加算されるまで累積加算してニューロ
ン出力値を生成する請求項12に記載のニューラルネッ
トワークの演算方法。 - 【請求項14】 同一のニューロンのニューロン演算の
演算すべきシナプス数を複数のグループに分割し、該グ
ループ毎に前記ニューロン演算値の中間の部分和を生成
する請求項12又は請求項13に記載のニューラルネッ
トワークの演算方法。 - 【請求項15】 前記演算すべきシナプス数を均等に分
割する請求項14に記載のニューラルネットワークの演
算方法。 - 【請求項16】 誤差信号演算時には、特定のニューロ
ンと接続する前記所定数のニューロンのシナプスを順次
選択し、選択されたシナプスの接続重みと、該選択され
たシナプスを持つニューロンの誤差信号とを乗算して、
前記所定数のニューロン分累積加算し、得られた値を誤
差信号の部分和として出力し、 前記誤差信号の部分和を前記特定のニューロンと接続さ
れた全てのニューロン分累積加算し、得られた値を前記
特定のニューロンの誤差信号として前記特定のニューロ
ンが割り当てられた演算要素に出力する請求項12〜請
求項15のいずれか1項にニューラルネットワーク演算
方法。 - 【請求項17】 シナプス接続重み更新時には、前記誤
差信号の部分和を累積加算して得られた誤差信号を用い
て、シナプス接続重みを更新する請求項16に記載のニ
ューラルネットワークの演算方法。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP37276199A JP2001188767A (ja) | 1999-12-28 | 1999-12-28 | ニューラルネットワーク演算装置及びニューラルネットワークの演算方法 |
| US09/703,921 US6654730B1 (en) | 1999-12-28 | 2000-11-01 | Neural network arithmetic apparatus and neutral network operation method |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP37276199A JP2001188767A (ja) | 1999-12-28 | 1999-12-28 | ニューラルネットワーク演算装置及びニューラルネットワークの演算方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2001188767A true JP2001188767A (ja) | 2001-07-10 |
Family
ID=18501011
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP37276199A Pending JP2001188767A (ja) | 1999-12-28 | 1999-12-28 | ニューラルネットワーク演算装置及びニューラルネットワークの演算方法 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US6654730B1 (ja) |
| JP (1) | JP2001188767A (ja) |
Cited By (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2018055570A (ja) * | 2016-09-30 | 2018-04-05 | キヤノン株式会社 | 演算処理装置、演算処理方法及びプログラム |
| WO2019049741A1 (ja) | 2017-09-07 | 2019-03-14 | パナソニック株式会社 | 不揮発性半導体記憶素子を用いたニューラルネットワーク演算回路 |
| JP2020087009A (ja) * | 2018-11-27 | 2020-06-04 | 富士通株式会社 | 最適化装置及び最適化装置の制御方法 |
| JP2020530916A (ja) * | 2017-08-31 | 2020-10-29 | カンブリコン テクノロジーズ コーポレーション リミテッドCambricon Technologies Corporation Limited | チップ装置および関連製品 |
| JP2021521539A (ja) * | 2018-04-27 | 2021-08-26 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | ニューラル推論プロセッサのための中央スケジューラおよび命令ディスパッチャ |
| JP2021527864A (ja) * | 2018-06-19 | 2021-10-14 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 実行時再構成可能なニューラル・ネットワーク・プロセッサ・コア |
| JP2021532451A (ja) * | 2018-07-12 | 2021-11-25 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 分散型ニューラル・ネットワークのコアのネットワークにおける階層的並列処理 |
| JP2022164559A (ja) * | 2021-04-16 | 2022-10-27 | 旺宏電子股▲ふん▼有限公司 | メモリデバイスおよびその動作方法 |
| US11615299B2 (en) | 2017-09-07 | 2023-03-28 | Panasonic Holdings Corporation | Neural network computation circuit including non-volatile semiconductor memory element |
| US11681904B2 (en) | 2019-08-13 | 2023-06-20 | Samsung Electronics Co., Ltd. | Processor chip and control methods thereof |
| US11900242B2 (en) | 2017-12-14 | 2024-02-13 | Cambricon Technologies Corporation Limited | Integrated circuit chip apparatus |
Families Citing this family (26)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP4208485B2 (ja) * | 2001-05-31 | 2009-01-14 | キヤノン株式会社 | パルス信号処理回路、並列処理回路、パターン認識装置、及び画像入力装置 |
| US6836767B2 (en) * | 2001-10-03 | 2004-12-28 | International Business Machines Corporation | Pipelined hardware implementation of a neural network circuit |
| US7401057B2 (en) * | 2002-12-10 | 2008-07-15 | Asset Trust, Inc. | Entity centric computer system |
| US8140261B2 (en) | 2005-11-23 | 2012-03-20 | Alcatel Lucent | Locating sensor nodes through correlations |
| US8103606B2 (en) * | 2006-12-08 | 2012-01-24 | Medhat Moussa | Architecture, system and method for artificial neural network implementation |
| KR101910576B1 (ko) * | 2011-11-08 | 2018-12-31 | 삼성전자주식회사 | 인공신경망을 이용하여 신속하게 입력 패턴을 분류하는 방법 및 장치 |
| US9311600B1 (en) | 2012-06-03 | 2016-04-12 | Mark Bishop Ring | Method and system for mapping states and actions of an intelligent agent |
| US9904889B2 (en) | 2012-12-05 | 2018-02-27 | Applied Brain Research Inc. | Methods and systems for artificial cognition |
| US10635968B2 (en) * | 2016-03-24 | 2020-04-28 | Intel Corporation | Technologies for memory management of neural networks with sparse connectivity |
| US10839289B2 (en) * | 2016-04-28 | 2020-11-17 | International Business Machines Corporation | Neural network processing with von-Neumann cores |
| CN113537480B (zh) * | 2016-12-30 | 2024-04-02 | 上海寒武纪信息科技有限公司 | 用于执行lstm神经网络运算的装置和运算方法 |
| US10585818B2 (en) | 2017-04-05 | 2020-03-10 | International Business Machines Corporation | Low overhead exclusive control for shared memory objects |
| US10795836B2 (en) * | 2017-04-17 | 2020-10-06 | Microsoft Technology Licensing, Llc | Data processing performance enhancement for neural networks using a virtualized data iterator |
| US11360930B2 (en) * | 2017-12-19 | 2022-06-14 | Samsung Electronics Co., Ltd. | Neural processing accelerator |
| US10445638B1 (en) * | 2018-02-28 | 2019-10-15 | Amazon Technologies, Inc. | Restructuring a multi-dimensional array |
| US12456039B2 (en) | 2018-10-08 | 2025-10-28 | Deeper-I Co., Inc. | Artificial neural network computation acceleration apparatus for distributed processing, artificial neural network acceleration system using same, and artificial neural network acceleration method therefor |
| CN109670581B (zh) * | 2018-12-21 | 2023-05-23 | 中科寒武纪科技股份有限公司 | 一种计算装置及板卡 |
| DE102020121214B4 (de) | 2019-11-15 | 2024-10-31 | Samsung Electronics Co., Ltd. | Neuromorphe Vorrichtung basierend auf einem Speicher |
| US11741350B2 (en) | 2019-11-27 | 2023-08-29 | Amazon Technologies, Inc. | Efficient utilization of processing element array |
| CN111239802B (zh) * | 2020-01-19 | 2021-05-28 | 中国海洋大学 | 基于地震反射波形和速度谱的深度学习速度建模方法 |
| US12423074B1 (en) * | 2020-01-24 | 2025-09-23 | Nvidia Corporation | Neural network layer fusion |
| US12039330B1 (en) * | 2021-09-14 | 2024-07-16 | Amazon Technologies, Inc. | Programmable vector engine for efficient beam search |
| CN114510339B (zh) * | 2022-04-20 | 2022-07-29 | 苏州浪潮智能科技有限公司 | 一种计算任务调度方法、装置、电子设备及可读存储介质 |
| US12008368B2 (en) | 2022-09-21 | 2024-06-11 | Amazon Technologies, Inc. | Programmable compute engine having transpose operations |
| US12242853B1 (en) | 2022-09-30 | 2025-03-04 | Amazon Technologies, Inc. | Configurable vector compute engine |
| US12271732B1 (en) | 2022-09-30 | 2025-04-08 | Amazon Technologies, Inc. | Configuration of a deep vector engine using an opcode table, control table, and datapath table |
Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH02236658A (ja) * | 1989-03-10 | 1990-09-19 | Hitachi Ltd | 情報処理装置 |
| JPH02287862A (ja) * | 1989-04-28 | 1990-11-27 | Toshiba Corp | ニューラルネットワーク演算装置 |
| JPH0471063A (ja) * | 1990-07-12 | 1992-03-05 | Fujitsu Ltd | 神経回路網型計算装置 |
| JPH0484264A (ja) * | 1990-07-26 | 1992-03-17 | Fujitsu Ltd | 積和演算器 |
| JPH06259585A (ja) * | 1993-03-10 | 1994-09-16 | Toyota Central Res & Dev Lab Inc | ニューラルネットワーク装置 |
| JPH1040234A (ja) * | 1996-07-18 | 1998-02-13 | Fuji Xerox Co Ltd | 演算装置 |
Family Cites Families (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2679738B2 (ja) * | 1989-03-01 | 1997-11-19 | 富士通株式会社 | ニューロコンピュータにおける学習処理方式 |
| JP3260357B2 (ja) * | 1990-01-24 | 2002-02-25 | 株式会社日立製作所 | 情報処理装置 |
| JPH04211802A (ja) * | 1990-07-25 | 1992-08-03 | Toshiba Corp | ニュ−ラルネットワ−ク装置 |
| JP3102918B2 (ja) * | 1990-11-22 | 2000-10-23 | 株式会社リコー | ニューラルネットワーク学習方法およびこの学習方法を用いた信号処理装置 |
| US5636327A (en) * | 1991-09-18 | 1997-06-03 | Matsushita Electric Industrial Co., Ltd. | Neural network circuit |
| JPH05210649A (ja) * | 1992-01-24 | 1993-08-20 | Mitsubishi Electric Corp | 神経回路網表現装置 |
| FR2687814A1 (fr) * | 1992-02-26 | 1993-08-27 | Philips Electronique Lab | Processeur neuronal a cellules synaptiques reparties. |
| US5343555A (en) * | 1992-07-06 | 1994-08-30 | The Regents Of The University Of California | Artificial neuron with switched-capacitor synapses using analog storage of synaptic weights |
| JPH05197707A (ja) | 1992-08-05 | 1993-08-06 | Hitachi Ltd | 情報処理システム |
| US5288645A (en) * | 1992-09-04 | 1994-02-22 | Mtm Engineering, Inc. | Hydrogen evolution analyzer |
| US5542054A (en) * | 1993-12-22 | 1996-07-30 | Batten, Jr.; George W. | Artificial neurons using delta-sigma modulation |
| JP3096387B2 (ja) * | 1994-01-28 | 2000-10-10 | 三菱電機株式会社 | 数値演算処理装置 |
| US6389404B1 (en) * | 1998-12-30 | 2002-05-14 | Irvine Sensors Corporation | Neural processing module with input architectures that make maximal use of a weighted synapse array |
-
1999
- 1999-12-28 JP JP37276199A patent/JP2001188767A/ja active Pending
-
2000
- 2000-11-01 US US09/703,921 patent/US6654730B1/en not_active Expired - Fee Related
Patent Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH02236658A (ja) * | 1989-03-10 | 1990-09-19 | Hitachi Ltd | 情報処理装置 |
| JPH02287862A (ja) * | 1989-04-28 | 1990-11-27 | Toshiba Corp | ニューラルネットワーク演算装置 |
| JPH0471063A (ja) * | 1990-07-12 | 1992-03-05 | Fujitsu Ltd | 神経回路網型計算装置 |
| JPH0484264A (ja) * | 1990-07-26 | 1992-03-17 | Fujitsu Ltd | 積和演算器 |
| JPH06259585A (ja) * | 1993-03-10 | 1994-09-16 | Toyota Central Res & Dev Lab Inc | ニューラルネットワーク装置 |
| JPH1040234A (ja) * | 1996-07-18 | 1998-02-13 | Fuji Xerox Co Ltd | 演算装置 |
Cited By (30)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2018055570A (ja) * | 2016-09-30 | 2018-04-05 | キヤノン株式会社 | 演算処理装置、演算処理方法及びプログラム |
| US11531553B2 (en) | 2017-08-31 | 2022-12-20 | Cambricon Technologies Corporation Limited | Processing device and related products |
| US11561800B2 (en) | 2017-08-31 | 2023-01-24 | Cambricon Technologies Corporation Limited | Processing device and related products |
| JP2020530916A (ja) * | 2017-08-31 | 2020-10-29 | カンブリコン テクノロジーズ コーポレーション リミテッドCambricon Technologies Corporation Limited | チップ装置および関連製品 |
| US11775311B2 (en) | 2017-08-31 | 2023-10-03 | Cambricon Technologies Corporation Limited | Processing device and related products |
| US11409535B2 (en) | 2017-08-31 | 2022-08-09 | Cambricon Technologies Corporation Limited | Processing device and related products |
| US11354133B2 (en) | 2017-08-31 | 2022-06-07 | Cambricon Technologies Corporation Limited | Processing device and related products |
| JP7065877B2 (ja) | 2017-08-31 | 2022-05-12 | カンブリコン テクノロジーズ コーポレーション リミテッド | チップ装置および関連製品 |
| US11334363B2 (en) | 2017-08-31 | 2022-05-17 | Cambricon Technologies Corporation Limited | Processing device and related products |
| US11347516B2 (en) | 2017-08-31 | 2022-05-31 | Cambricon Technologies Corporation Limited | Processing device and related products |
| US11604974B2 (en) | 2017-09-07 | 2023-03-14 | Panasonic Holdings Corporation | Neural network computation circuit including non-volatile semiconductor memory element |
| US11615299B2 (en) | 2017-09-07 | 2023-03-28 | Panasonic Holdings Corporation | Neural network computation circuit including non-volatile semiconductor memory element |
| WO2019049741A1 (ja) | 2017-09-07 | 2019-03-14 | パナソニック株式会社 | 不揮発性半導体記憶素子を用いたニューラルネットワーク演算回路 |
| US11900242B2 (en) | 2017-12-14 | 2024-02-13 | Cambricon Technologies Corporation Limited | Integrated circuit chip apparatus |
| US12136029B2 (en) | 2017-12-14 | 2024-11-05 | Cambricon Technologies Corporation Limited | Integrated circuit chip apparatus |
| US12217162B2 (en) | 2017-12-14 | 2025-02-04 | Cambricon Technologies Corporation Limited | Integrated circuit chip apparatus |
| JP2021521539A (ja) * | 2018-04-27 | 2021-08-26 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | ニューラル推論プロセッサのための中央スケジューラおよび命令ディスパッチャ |
| JP7332247B2 (ja) | 2018-04-27 | 2023-08-23 | インターナショナル・ビジネス・マシーンズ・コーポレーション | ニューラル推論プロセッサのための中央スケジューラおよび命令ディスパッチャ |
| JP7241771B2 (ja) | 2018-06-19 | 2023-03-17 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 実行時再構成可能なニューラル・ネットワーク・プロセッサ・コア |
| US12056598B2 (en) | 2018-06-19 | 2024-08-06 | International Business Machines Corporation | Runtime reconfigurable neural network processor core |
| JP2021527864A (ja) * | 2018-06-19 | 2021-10-14 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 実行時再構成可能なニューラル・ネットワーク・プロセッサ・コア |
| US12481861B2 (en) | 2018-07-12 | 2025-11-25 | International Business Machines Corporation | Hierarchical parallelism in a network of distributed neural network cores |
| JP2021532451A (ja) * | 2018-07-12 | 2021-11-25 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 分散型ニューラル・ネットワークのコアのネットワークにおける階層的並列処理 |
| JP7426980B2 (ja) | 2018-07-12 | 2024-02-02 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 分散型ニューラル・ネットワークのコアのネットワークにおける階層的並列処理 |
| JP2020087009A (ja) * | 2018-11-27 | 2020-06-04 | 富士通株式会社 | 最適化装置及び最適化装置の制御方法 |
| JP7108186B2 (ja) | 2018-11-27 | 2022-07-28 | 富士通株式会社 | 最適化装置及び最適化装置の制御方法 |
| US11681904B2 (en) | 2019-08-13 | 2023-06-20 | Samsung Electronics Co., Ltd. | Processor chip and control methods thereof |
| US11842265B2 (en) | 2019-08-13 | 2023-12-12 | Samsung Electronics Co., Ltd. | Processor chip and control methods thereof |
| JP7206531B2 (ja) | 2021-04-16 | 2023-01-18 | 旺宏電子股▲ふん▼有限公司 | メモリデバイスおよびその動作方法 |
| JP2022164559A (ja) * | 2021-04-16 | 2022-10-27 | 旺宏電子股▲ふん▼有限公司 | メモリデバイスおよびその動作方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| US6654730B1 (en) | 2003-11-25 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2001188767A (ja) | ニューラルネットワーク演算装置及びニューラルネットワークの演算方法 | |
| US5509106A (en) | Triangular scalable neural array processor | |
| US5604840A (en) | Information processing apparatus | |
| EP0504932A2 (en) | A parallel data processing system | |
| US20160196488A1 (en) | Neural network computing device, system and method | |
| CN107918794A (zh) | 基于计算阵列的神经网络处理器 | |
| JP6823495B2 (ja) | 情報処理装置および画像認識装置 | |
| US5608844A (en) | Neural processor comprising distributed synaptic cells | |
| US5065339A (en) | Orthogonal row-column neural processor | |
| US5600843A (en) | Ring systolic array system for synchronously performing matrix/neuron computation using data transferred through cyclic shift register connected in cascade of trays | |
| US5146543A (en) | Scalable neural array processor | |
| CN110580519B (zh) | 一种卷积运算装置及其方法 | |
| US5148515A (en) | Scalable neural array processor and method | |
| CN104145281A (zh) | 神经网络计算装置和系统及其方法 | |
| US5799134A (en) | One dimensional systolic array architecture for neural network | |
| EP4180978A1 (en) | Neural network training system with acceleration and neural network training method thereof | |
| JP2001117900A (ja) | ニューラルネットワーク演算装置 | |
| Chinn et al. | Systolic array implementations of neural nets on the MasPar MP-1 massively parallel processor | |
| US5857178A (en) | Neural network apparatus and learning method thereof | |
| CN114330682A (zh) | 应用于Fastformer神经网络的硬件架构及其计算方法 | |
| US5621862A (en) | Information processing apparatus for implementing neural network | |
| CN119440461B (zh) | 一种基于Chiplet的矩阵链乘法加速器及加速方法 | |
| US5146420A (en) | Communicating adder tree system for neural array processor | |
| CN109272112B (zh) | 一种面向神经网络的数据重用指令映射方法、系统及装置 | |
| CN119358617A (zh) | 算力引擎构建方法、装置、设备和存储介质 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040119 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050802 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050928 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20051213 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060208 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20060314 |