JP2001117900A - ニューラルネットワーク演算装置 - Google Patents

ニューラルネットワーク演算装置

Info

Publication number
JP2001117900A
JP2001117900A JP29617899A JP29617899A JP2001117900A JP 2001117900 A JP2001117900 A JP 2001117900A JP 29617899 A JP29617899 A JP 29617899A JP 29617899 A JP29617899 A JP 29617899A JP 2001117900 A JP2001117900 A JP 2001117900A
Authority
JP
Japan
Prior art keywords
neuron
neurons
error signal
neural network
synapse
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
Application number
JP29617899A
Other languages
English (en)
Inventor
Sukeji Kato
典司 加藤
Hirotsugu Kashimura
洋次 鹿志村
Hitoshi Ikeda
仁 池田
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.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co Ltd
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 Fuji Xerox Co Ltd filed Critical Fuji Xerox Co Ltd
Priority to JP29617899A priority Critical patent/JP2001117900A/ja
Publication of JP2001117900A publication Critical patent/JP2001117900A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 ニューロン演算及び学習を多数の演算ユニッ
トを用いて並列計算する場合に、ニューロン演算用の演
算ユニットと誤差信号計算用の演算ユニットを別個に設
ける必要がなく、シナプス接続重みの更新時にバスの帯
域の消費量が少ないニューラルネットワーク演算装置を
提供する。 【解決手段】 ローカルバス18を介して演算ユニット
101〜10xの演算結果とマスターノード12の設定情
報及び誤差信号が互いに受け渡される構成であり、ニュ
ーロン演算時には、各演算ユニット101〜10xからの
ニューロン出力値を各演算ユニット101〜10xとマス
ターノード12で保存し、誤差信号演算時には、各演算
ユニット101〜10xからの誤差信号の部分和をマスタ
ーノード12が累積加算して特定のニューロンの誤差信
号を生成して出力し、該特定のニューロンが割り当てら
れた演算ユニットが出力された誤差信号を受け取って保
存する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、ニューラルネット
ワーク演算装置に係り、特に、複数の演算要素によって
並列にニューロン演算を行うニューラルネットワーク演
算装置に関する。
【0002】
【従来の技術】従来より、脳を中心とする神経系におけ
る情報処理を模倣して構築したニューラルネットワーク
は、認識、知識処理などの情報処理に応用されている。
そのようなニューラルネットワークは、一般に、複数の
ニューロンが多数接続され、各ニューロンに対応する信
号伝達ユニットを複数備えたものとして構成される。
【0003】個々のニューロンjには、他のニューロン
iからニューロン出力値Yiが入力される。そして、そ
れぞれの入力に対しシナプス接続重みWjiで重みづけを
行い、その総和ujを計算する。この値を例えばシグモ
イド関数fによって変換し、ニューロン出力値Yjを出力
する。この動作を式で示すと以下の(1)の式のように
なる。
【0004】
【数1】
【0005】この演算をニューロン演算と呼ぶ。また、
一般的に使用されるバックプロパゲーションによる学習
過程においては、与えられた入力に対して期待する出力
値d jを外部から与え、実際の出力値との誤差dj−Yj
=δjが少なくなるようにシナプス接続重みWjiを更新
していく。その更新量は以下の(2)の式で演算され
る。
【0006】
【数2】
【0007】ここで、ηは学習係数、δjは学習誤差で
ある。また、出力層では、以下の(3)の式で演算を行
う。
【0008】
【数3】
【0009】また、隠れ層では、以下の(4)の式で演
算を行う。
【0010】
【数4】
【0011】このような演算を数千から数万のニューロ
ンからなる大規模ニューラルネットワークで行う場合、
膨大な演算量となり、専用のハードウェアが必要とな
る。
【0012】特開平5‐197707号公報には、図1
4に示すように、ニューロン演算を受け持つ複数のニュ
ーロン演算ユニット501〜50x(但し、xは正の整
数)と、学習に用いる誤差信号の演算を受け持つ複数の
誤差信号演算ユニット521〜52x(但し、xは正の整
数)とが時分割バス56によって結合され、コントロー
ラ58により選択された1つのニューロン演算ユニット
のみがニューロン演算値を時分割バス56に出力する構
成の情報処理システムが開示されている。
【0013】ニューロン演算では、各ニューロン演算ユ
ニット501〜50xは、それぞれ特定のニューロンjの
持つシナプスの接続重みすなわち行列Wjiのj行をシナ
プス接続メモリ541〜54xに保持しており、コントロ
ーラ58によって選択されたニューロン演算ユニットに
より出力され、時分割バス56から逐次入力される値
に、該ニューロン演算ユニットに対応するシナプス接続
重みをシナプス接続メモリ541〜54xから読み出して
重み付けし、その積を累積加算する。
【0014】また、コントローラ58によって選択され
たニューロン演算ユニット(図14の状態では第2ニュ
ーロン演算ユニット502)は、累積加算した値を上記
(1)の式のシグモイド関数によって変換して時分割バス
56に出力する。各ニューロン演算ユニット501〜5
xが一通り時分割バス56へ出力すれば、すべてのニ
ューロン演算ユニット501〜50xが上記(1)の式の
演算を行うこととなる。
【0015】一方、学習過程では、ニューロン演算ユニ
ット501〜50xとは別個に設けられた誤差信号演算ユ
ニット521〜52xが上記(4)の式で表される隠れ層の
誤差信号を計算する。すなわち、複数の誤差信号演算ユ
ニット521〜52xの各々は、それぞれ行列Wjiの転置
行列Wijの特定のi行をシナプス接続メモリ541〜54
xに保持しており、時分割バス56から逐次入力する値
に、対応する行列成分をメモリから読み出して重み付け
し、その積を累積加算して(4)式を計算する。
【0016】(2)式の接続重みの更新では、ニューロン
演算ユニット501〜50xに対しては、それぞれ特定の
誤差信号δjを各誤差信号演算ユニットに設定した後、
ニューロン出力値Yiを時分割バス56に送出し、各ニ
ューロン演算ユニット501〜50xは対応するシナプス
接続重みWjiを更新する。
【0017】誤差信号演算ユニット521〜52xに対し
ては、それぞれ特定のニューロン出力値Yiを各誤差信
号演算ユニット521〜52xに設定した後、誤差信号δ
jを時分割バス56に送出し、各誤差信号演算ユニット
521〜52xの各々で対応するシナプス接続重みWij
更新する。
【0018】特開平5‐197707号公報では、この
ような構成による並列演算によって、大規模ニューラル
ネットワークのニューロン演算及びバックプロパゲーシ
ョンによる学習を構築している。
【0019】
【発明が解決しようとする課題】しかしながら、前記の
ような従来技術では、ニューロン演算用の演算ユニット
と誤差信号計算用の演算ユニットを別個に設けているた
め、コストが増大したり、また一つの基板に実装できる
演算ユニットの数には限りがあるため、大規模なニュー
ラルネットワークには対応できないという問題点があ
る。
【0020】さらに、シナプス接続重みの更新のため
に、時分割バスにニューロン出力値および誤差信号の両
者を送出する必要があり、時分割バスの帯域不足による
データの供給律速となり、演算速度が向上しないという
問題点がある。
【0021】以上のことから、本発明は、ニューラルネ
ットワークのニューロン演算およびバックプロパゲーシ
ョンによる学習を多数の演算ユニットを用いて並列計算
する場合に、ニューロン演算用の演算ユニットと誤差信
号計算用の演算ユニットを別個に設ける必要がなく、し
かもシナプス接続重みの更新時に時分割バスの帯域の消
費量が少ないニューラルネットワーク演算装置を提供す
ることを目的とする。
【0022】
【課題を解決するための手段】上記目的を達成するため
に、請求項1記載の発明のニューラルネットワーク演算
装置は、少なくとも1つ以上の伝送路で接続され、複数
のニューロンのうちの所定数のニューロンがそれぞれ割
り当てられた複数の演算要素によって並列にニューロン
演算を行うニューラルネットワーク演算装置であって、
前記複数の演算要素の各々は、1つのニューロンが持つ
全てのシナプスのシナプス接続重みを、割り当てられた
所定数のニューロン分保存するシナプス接続重み保存メ
モリと、ニューロン演算時には、前記所定数のニューロ
ンを順次選択すると共に、該選択したニューロンのシナ
プスを順次選択して、選択したシナプスのシナプス接続
重みと該シナプスと接続されたニューロンのニューロン
出力値とを乗算してニューロン毎に累積加算して出力
し、誤差信号演算時には、特定のニューロンと接続する
前記所定数のニューロンのシナプスを順次選択し、選択
されたシナプスの接続重みと、該選択されたシナプスを
持つニューロンの誤差信号とを乗算して、前記所定数の
ニューロン分累積加算し、得られた値を誤差信号の部分
和として出力する積和演算手段と、保存メモリに格納さ
れたシナプス接続重みのうち、選択したニューロンのシ
ナプス接続重みの各々を与えられた誤差信号に基いて更
新する接続重み更新手段と、を備え、前記誤差信号の部
分和を前記特定のニューロンと接続された全てのニュー
ロン分累積加算し、得られた値を前記特定のニューロン
の誤差信号として前記特定のニューロンが割り当てられ
た演算要素に出力する誤差信号生成手段を更に、備えて
いる。
【0023】すなわち、請求項1の発明では、少なくと
も1つ以上の伝送路で接続され、ニューラルネットワー
クを構成する複数のニューロンのうちの所定数のニュー
ロン割り当てられた複数の演算要素の各々が、シナプス
接続重み保存メモリと、積和演算手段と、接続重み更新
手段と、を備えているため、割り当てられた所定数のニ
ューロンに関するニューロン演算、及び、誤差信号演算
を演算要素単位で独立して行うことができる。
【0024】前記演算要素に割り当てられる所定数のニ
ューロンは、ニューロン演算時では、ニューラルネット
ワークを構成する1部のニューロンであり、誤差信号演
算時では、前記特定のニューロンと接続する全てのニュ
ーロンのうちの所定数のニューロンである。そのため、
各演算要素毎に得られる値は、ニューロン演算時では、
所定数のニューロンのニューロン出力値であり、誤差信
号演算時では、前記特定のニューロンと接続する所定数
のニューロンの各シナプスのシナプス接続重みと該シナ
プスを持つニューロンの誤差信号の積を所定数のニュー
ロン分累積加算した値、即ち、特定のニューロンの誤差
信号の部分和の値である。
【0025】請求項1の発明では、誤差信号生成手段を
更に備えており、各演算要素から出力された誤差信号の
部分和を前記特定のニューロンと接続された全てのニュ
ーロン分累積加算し、得られた値を前記特定のニューロ
ンの誤差信号として前記特定のニューロンが割り当てら
れた演算要素に出力する。これにより、ニューロン毎に
誤差信号が与えられることとなる。
【0026】シナプス接続重みの更新量は、上述した
(2)の式により算出できるので、上記演算の結果、ニ
ューロン毎に与えられた誤差信号を用いて各演算要素毎
に割り当てられたニューロンに関するシナプス接続重み
更新を行うことができる。
【0027】このように、各演算要素が各々独立して割
り当てられたニューロンに関するニューロン演算、誤差
信号演算、及びシナプス接続重み更新を行うことができ
る。そのため、従来のようにニューロン演算用の演算要
素と、誤差信号演算演算用の演算要素とを個別に設ける
必要がなく、従来よりも少ない演算要素数でニューラル
ネットワークの演算を実現できる。そのため、従来と同
程度又は従来より少ない演算要素数で、かつ、演算速度
を低下させることなく大規模ニューラルネットワークの
演算を行えるニューラルネットワーク演算装置が得られ
る。
【0028】また、複数の演算要素が各演算要素毎に保
持するシナプス接続重みを用いて演算を行い、各々の演
算要素において演算した演算結果を外部に出力する構成
であるため、データの受け渡しの回数が従来よりも少な
くなる。そのため、伝送路の帯域不足による演算速度の
低下を起こすことなく、大規模ニューラルネットワーク
の演算を実現出来る。
【0029】また、前記複数の演算要素の各々には、請
求項2に記載したように、前記複数の演算要素の各々に
は、各々複数のニューロンから構成され、かつ、ニュー
ラルネットワークを構成する複数の演算層の各々を分割
して得られた前記所定数のニューロンよりなる複数のグ
ループのうちの少なくとも1つのグループを割り当てる
ようにしてもよいし、請求項3に記載したように、前記
複数の演算要素の各々には、複数のニューロンから構成
され、かつ、ニューラルネットワークを構成する複数の
演算層のうちの演算対象となる演算層を分割して得られ
た前記所定数のニューロンよりなる複数のグループのう
ちの少なくとも1つのグループを割り当てるようにして
もよい。
【0030】演算要素は、所定数のニューロン単位で、
言い換えると、グループ単位で演算を行うため、1つの
グループが割り当てられた場合は1回の演算で演算対象
の演算層の演算が終了するように構成し、2つ以上のグ
ループが割り当てられた場合は、割り当てられたグルー
プ数回演算を行うことにより演算対象の演算層の演算が
終了するように構成することができる。
【0031】また、複数の演算要素の全てに演算対象の
演算層を構成する複数のグループを分散させて割り当て
るようにしてもよいし、複数の演算要素の1部の演算要
素に演算対象の演算層を構成する複数のグループを分散
させて割り当てるようにしてもよい。
【0032】また、演算要素の演算時間が割り当てられ
たニューロン数によって決まるため、割り当てられたニ
ューロンの数にバラツキがあると、各演算要素毎に演算
が終了する時間が異なる。複数の演算要素を用いて並列
して演算を行う場合、ロスタイムを短くするには各演算
要素が同じ時間に演算終了するように構成することが好
ましい。
【0033】そのため、請求項4に記載の発明は、請求
項2又は請求項3に記載のニューラルネットワーク演算
装置において、前記複数のグループの各々は、グループ
を構成するニューロン数を略同数としている。即ち、各
演算要素の1回の演算において演算対象となるニューロ
ン数が略同数であるので、各演算要素毎に演算が終了す
る時間が大きくことなること無く、ロスタイムを短くで
きる。これにより、各演算要素間の待ち時間が少なくな
り、演算要素を有効に利用することが可能である。
【0034】なお、グループを構成するニューロン数が
略同数とは、各グループを構成するニューロン数が同数
の場合と、グループを構成するニューロン数が全く同数
ではないがほぼ同じ数である場合とを含んでいる。
【0035】また、請求項5に記載の発明は、請求項1
から請求項4のいずれか1項に記載のニューラルネット
ワーク演算装置において、前記演算要素が、ニューロン
演算時には、少なくとも前記シナプス接続重み保存に保
存されたシナプスと接続するニューロン出力値が保存さ
れ、誤差信号演算時には、少なくとも割り当てられたグ
ループのニューロン毎に与えられる誤差信号の少なくと
も一方が保存されるデータ保存メモリを備えたものとし
ている。
【0036】即ち、前記複数の演算要素の各々に、シナ
プス接続重みの他に演算に必要な値(即ち、ニューロン
演算時には、少なくとも前記シナプス接続重み保存に保
存されたシナプスと接続するニューロン出力値、誤差信
号演算時には、少なくとも割り当てられたグループのニ
ューロン毎に与えられる誤差信号)が保存されるデータ
保存メモリを備える構成とすることにより、演算に必要
なデータを各々の演算要素に保持させておくことができ
るので、データの受け渡しの回数がさらに少なくなる。
そのため、伝送路の帯域不足による演算速度の低下を起
こすことなく、大規模ニューラルネットを適用した場合
にも充分な帯域を確保することができる。
【0037】好ましくは、請求項6に記載したように、
前記データ保存メモリを、ニューロン出力値を保存する
ニューロン出力値保存メモリと、誤差信号を保存する誤
差信号保存メモリとから構成すること、より受け渡すデ
ータ量を少なくできる。
【0038】また、請求項7に記載したように、データ
保存メモリ、又は、ニューロン出力値保存メモリ及び誤
差信号保存メモリの少なくとも一方は、2つのバンクか
らなり、一方のバンクには演算に用いるデータを保存す
ると共に、他方のバンクには演算により得られた結果を
保存するように設定される構成とすることにより、次の
演算層についての演算を開始する段階で、必要なデータ
を演算要素内に保持しておくことができるので、各々の
演算要素にデータを供給し直す必要がなく、その分速く
次の演算処理を開始させることが可能である。
【0039】なお、請求項8に記載したように、ニュー
ロン演算時に、前記積和演算手段により累積加算された
値を非線型演算し、前記1つのニューロンのニューロン
出力値として出力する非線型演算手段をさらに備える構
成とすることもできる。この非線型演算手段は、前記複
数の演算要素の各々に設けてもよいし、制御要素に設け
てもよく、また、演算要素と制御要素とは独立して設け
てもよい。
【0040】また、請求項9に記載したように、前記複
数の演算要素の少なくとも1つが制御要素を兼ねる構成
とすることも可能である。このような構成とすること
で、極力不要な部品数を少なくできるので、その分演算
要素を増やすことができ、より大規模なニューラルネッ
トを構築できる。
【0041】
【発明の実施の形態】以下、図1〜図13を参照してフ
ィードフォワード型のニューラルネットワークに本発明
を適用した実施の形態を詳細に説明する。
【0042】第1の実施の形態の情報処理装置は、図1
に示すように、大別して、複数の演算ユニット101
10x(1<x;但し、xは正の整数)、マスターノー
ド12、プログラムメモリ14、ホストコンピュータ1
6とから構成され、図3に示す入力層、隠れ層、及び出
力層からなる3層のパーセプトロンの処理を行う。
【0043】この3層のパーセプトロンは、入力層から
隠れ層、および隠れ層から出力層へは全結合をしてい
る。また、図3では説明のため、入力層iのニューロン
にはニューロン番号1からnまでの番号を付与し、隠れ
層jのニューロンにはニューロン番号n+1からn+m
までの番号を付与し、出力層kのニューロンにはニュー
ロン番号n+m+1からn+m+pまでの番号を連続し
て付与している(但し、n、m、pは正の整数、i、
j、kは連続する任意の整数)。
【0044】まず、第1の実施の形態の情報処理装置の
構成について説明する。図1に示すように、演算ユニッ
ト101〜10xとマスターノード12は、ローカルバス
18によって接続され、ローカルバス18を介して演算
ユニット101〜10xからの演算結果がマスターノード
12に受け渡され、また、マスターノード12からの制
御情報が演算ユニット101〜10xに伝送される。
【0045】マスターノード12は、例えば、CPUな
どのプログラム可能な演算処理装置により構成され、後
に詳述する演算ユニット101〜10xの制御を行うとと
もに、演算ユニット101〜10xから送信される誤差信
号の部分和α(後述する)を加算して誤差信号を生成
し、演算ユニット101〜10xに送出する。
【0046】このマスターノード12には、プログラム
メモリ14がローカルに接続されている。プログラムメ
モリ14は、後述する演算制御のためのプログラムや計
算されたニューロン出力値等を保存する。さらにマスタ
ーノード12は、ホストバス19を介してホストコンピ
ュータ16と接続され、ホストコンピュータ16とデー
タをやり取りする。
【0047】ホストコンピュータ16は、プログラムメ
モリ14にマスターノード12の動作を記述するプログ
ラムを書き込み、マスターノード12の動作を制御す
る。すなわち、プログラムメモリ14にマスターノード
12の動作を記述するプログラムを書き込んだ後、ニュ
ーロン演算開始信号をマスターノード12に送って複数
の演算ユニット101〜10xによるニューロン演算を開
始させ、得られた演算結果をマスターノード12から受
け取る。また、ホストコンピュータ16は、プログラム
メモリ14に教師信号dを書き込み、学習開始信号をマ
スターノード12に送ってバックプロパゲーションによ
る学習を開始させる。
【0048】本実施の形態では、演算ユニット101
10xは、各々独立した1つの半導体チップに形成さ
れ、マスターノード12からの制御データに基いてニュ
ーロン演算、誤差信号の部分和演算およびシナプス接続
重みの更新の3種類の動作を行う。
【0049】すなわち、ニューロン演算においては、隠
れ層jのニューロンn+1〜n+mがそれぞれ持つシナ
プスのシナプス接続重み{(Wn+1,1〜Wn+1,n)〜(W
n+m, 1〜Wn+m,n)}と、これらのシナプスのそれぞれに
接続する入力層iのニューロン出力値Y1〜Ynと、を乗
算し、乗算結果を全シナプスに渡って累積加算し、その
加算結果を非線型変換してニューロン出力値Yn+1〜Y
n+mを得る。
【0050】バックプロパゲーションによる学習におい
ては、ホストコンピュータ16から入力された教師信号
dとニューロン演算で得られた出力層のニューロンのニ
ューロン出力値Yn+m+1〜Yn+m+pとの差である誤差信号
δn+m+1〜δn+m+pを割り当てられた出力層のニューロン
について演算し、該誤差信号を用いて、前段の隠れ層j
のニューロンの1つと接続するシナプスの接続重みとを
乗算して得た誤差信号の部分和αを演算ユニット毎に演
算した後、マスターノード12が部分和を累積加算して
誤差信号を計算する。これを全てのシナプスについて行
う。さらに、それぞれの演算ユニットは各自の持つシナ
プス接続重みの更新を行う。これらの演算をそれぞれの
演算ユニットは、指定されたニューロンから順番に、割
り当てられた全てのニューロンに対して行う。
【0051】各々の演算ユニット101〜10xは、図2
に示すように(図2は説明のため、第H演算ユニット1
hのみを示す。;但し、H>1、かつ、Hは任意の整
数)、ローカルバスインターフェイス20、制御回路2
2、ニューロン出力値メモリ24、シナプス接続重みメ
モリ26、乗算器28、加算器30、累積レジスタ3
2、非線型演算回路34、学習回路36とから構成され
る。
【0052】ローカルバスインターフェイス20は、自
身の非線型演算回路34から出力されたニューロン出力
値をローカルバス18へ出力したり、他の演算ユニット
が出力ニューロン出力値をローカルバス18から入力し
たり、マスターノード12からの制御データの受信を行
う。
【0053】制御回路22は、ローカルバスインターフ
ェイス20を介して入力されたマスターノード12から
の制御データによって第H演算ユニット10hの動作を
制御する。制御回路22内には、図示しない複数のアド
レスカウンタがあり、制御回路22は、ローカルバスイ
ンターフェイス20介して入力されたマスターノード1
2からの制御データによって、ニューロン出力値メモリ
24およびシナプス接続重みメモリ26をアクセスする
アドレスを指定する。
【0054】また、この制御回路22は、シナプス数レ
ジスタ40とニューロン数レジスタ42とを含んで構成
されており、シナプス数レジスタ40には1つのニュー
ロンが持つシナプス数Sが保存され、また、ニューロン
数レジスタ42には個々の演算ユニットに割り当てられ
たニューロン数T(但し、Tは任意の整数)が保存され
ている。
【0055】ニューロン出力値メモリ24は、例えば、
バンクAとバンクBの2つのバンクからなり、各バンク
にはそれぞれS個のニューロン出力値、または、T個の
誤差信号δが保存される。
【0056】すなわち、ニューロン演算およびシナプス
接続重み更新の場合、ニューロン出力値メモリ24の一
方のバンク(例えば、バンクA)には、演算に用いられる
前段の演算層のニューロン出力値Yi〜Yi+sが保存さ
れ、他方のバンク(例えば、バンクB)には演算によって
自身もしくは他の演算ユニットで求められた出力値Yj
〜Yj+sが保存される。他方のバンク(例えば、バンク
B)に保存された出力値Yj〜Yj+sは、次の層のニュー
ロン演算で用いられる。
【0057】また、誤差信号演算の場合、ニューロン出
力値メモリ24の一方のバンク(例えば、バンクA)に
は、後段の演算層から逆伝搬された演算に用いる誤差信
号δj 1〜δjTが保存され、他方のバンク(例えば、バン
クB)には演算によって自身もしくは他の演算ユニット
で求められた誤差信号δi1〜δiTが保存される。他方の
バンク(例えば、バンクB)に保存された誤差信号は、次
の層の誤差信号演算に用いられる。どちらのバンクを計
算に用いるかは、計算ごとに任意に設定できる。
【0058】例えば、第H演算ユニット10Hに、図3
における連続したニューロンn+1からニューロンn+
TのT個のニューロンの演算が割り当てられている場
合、ニューロン演算においては、図4(A)に示すよう
に、第H演算ユニット10Hのニューロン出力値メモリ
24のバンクAには、n個のニューロン出力値Y1〜Yn
がアドレス0からアドレス(n−1)まで連続して保存
される。また、誤差信号演算においては、図4(B)に
示すように、第H演算ユニット10Hのニューロン出力
値メモリ24のバンクAには、T個の誤差信号δn+m+1
〜δn+m+Tがアドレス0からアドレス(T−1)まで連
続して保存される。
【0059】また、シナプス接続重みメモリ26は、1
つの演算ユニットに割り当てられた全てのニューロンの
シナプス接続重みが全て保存されている。シナプス接続
重みは、1つの演算ユニットに割り当てられたニューロ
ンのうち、最もニューロン番号が小さいニューロンのシ
ナプス接続重みが先頭アドレスから連続して格納され、
続いて次のアドレスに次に番号の小さいニューロンのシ
ナプス接続重みが連続して格納され、…というように番
号の小さいニューロンのシナプス接続重みから順に連続
してシナプス接続重みメモリ26に格納されている。
【0060】例えば、第H演算ユニット10Hに、図3
における連続したニューロンn+1からニューロンn+
TのT個のニューロンの演算が割り当てられている場
合、図5に示すように、シナプス接続重みメモリ26に
は、ニューロンn+1のn個のシナプスの接続重みW
n+1,1〜Wn+1,nがアドレス0からアドレスn−1まで順
に格納され、続いて、ニューロンn+2のn個のシナプ
スの接続重みWn+2,1〜Wn +2,nが次のアドレスnからア
ドレス2n−1まで順に格納され、…最後は、ニューロ
ンn+Tのn個のシナプスの接続重みWn+T,1〜Wn+T,n
がアドレス(T‐1)n+1からアドレスT・nに順に
格納される。
【0061】乗算器28は、制御回路の指示に基き、ニ
ューロン出力値メモリ24およびシナプス接続重みメモ
リ26からデータを順次読み出して乗算する。
【0062】加算器30は、乗算器28から入力された
乗算結果と累積レジスタ32に一旦保存された累積加算
値とを加算し、得られた累積加算値を累積レジスタ32
に一旦保存する。この演算は、ニューロン演算の場合は
シナプス数レジスタ40に設定された回数だけ、誤差信
号演算の場合はニューロン数レジスタ42に設定された
回数だけ繰り返される。
【0063】累積レジスタ32は、加算器30にから出
力された累積加算値を一旦保存し、加算器30により前
記設定された回数の累積加算が繰り返されるまで、一旦
保存した累積加算値を加算器30に出力する。加算器3
0により前記設定された回数の累積加算が繰り返される
と、累積レジスタ32は、保存した累積加算値を非線型
演算回路34に出力する。
【0064】非線型演算回路34は、ニューロン演算に
おいて累積加算された値に非線型演算を施してニューロ
ン出力を生成し、ローカルバスインターフェイス20に
出力する。なお、非線型演算としてはシグモイド関数や
閾値論理等の関数を用いることができる。
【0065】また、学習回路36は、学習係数レジスタ
44を含み、学習係数レジスタ44には、マスターノー
ド12から送出されたニューロンの誤差信号と学習係数
の積が書き込まれる。学習回路36は、シナプス接続重
みメモリ26からシナプス接続重みを読み出し、学習係
数レジスタ44に書き込まれたニューロンの誤差信号と
学習係数の積を用いてシナプス接続重みを変更し、シナ
プス接続重みメモリ26に書き込む。なお、学習回路3
6内にも制御回路22と同様のアドレスカウンタがあ
る。
【0066】上記構成の情報処理装置によるニューロン
演算処理ルーチンについて図6のフローチャートを参照
して説明する。なお、ここでは説明のため、1つのニュ
ーロンが持つシナプス数をSとし、1つの演算ユニット
に割り当てられたニューロン数をTとする。
【0067】まず、ステップ100において、全ての演
算ユニット101〜10xのニューロン出力値メモリ24
のバンクA、及び、シナプス接続重みメモリ26に初期
データを書き込む。この書き込みは、例えば、ローカル
バス18に出力された入力層のニューロン出力値Y1
nを読み出し、ニューロン出力値メモリ24のアドレ
ス0〜(n−1)とニューロン出力値Y1〜Yn及び、書
き込み指示を受け取って、各ニューロン出力値Y1〜Yn
を、各演算ユニット101〜10xの各ニューロン出力値
メモリ24のバンクAのアドレスNADR0〜(n−
1)に1対1で対応させるように行う。
【0068】なお、これらのデータの値はニューラルネ
ットワークの構成に従い、例えば、後述する割り当て方
法のように設定される。なお、接続重みの初期値として
は、ランダムな値や、あらかじめ学習によって決定され
た値など、自由に与えることができる。
【0069】次のステップ102では、シナプス接続重
みメモリ26の読み出しアドレスSADRをクリアし
て、変数jを0にセットする。その後、ステップ104
に移行して、累積レジスタ32の値をクリアし、ニュー
ロン出力値メモリ24の読み出しアドレスNADRを0
に設定する。
【0070】次のステップ106では、現在のシナプス
接続重みメモリ26の読み出しアドレスSADRに格納
されたシナプス接続重みWjiを読み出し、次のステップ
108では、現在のニューロン出力値メモリ24のバン
クAのアドレスから読み出しアドレスNADRに格納さ
れたニューロン出力値Yjを読み出す。
【0071】ステップ110では、読み出したシナプス
接続重みWjiとニューロン出力値Y jとを乗算器28に
よって乗算する。得られた乗算結果を加算器30によっ
て現在累積レジスタ32に保存されている値と加算し
て、累積レジスタ32に保存する。
【0072】次のステップ112では、1つのニューロ
ンの持つシナプス数の回数、すなわち、S回、積和演算
を行ったかを判断する。S回、積和演算を行っていない
と判断された場合は、ステップ122に移行し、ニュー
ロン出力値メモリ24の読み出しアドレスNADR及び
シナプス接続重みメモリ26の読み出しアドレスSAD
Rをインクリメントしてから、ステップ106に戻り、
上述した処理を繰り返す。
【0073】S回、積和演算を行っていると判断された
場合は、ステップ114に移行し、累積レジスタ32保
存されたデータを非線型演算回路34によって非線型演
算し、新規のニューロン出力値Yjを生成し、自身のニ
ューロン出力値メモリ24のバンクBのアドレスjに格
納する。同時に、生成した新規のニューロン出力値Yj
を変数jの値とともにローカルバスインターフェイス2
0を介してローカルバス18に出力する。これにより、
他の演算ユニットが新規のニューロン出力値Yjと変数j
をローカルバス18を介して受信し、各々、自身のニュ
ーロン出力値メモリ24のバンクBのアドレスjに格納
する。また、このとき後の学習演算に用いるための、非
線型関数の微分値も計算され、ローカルバス18に出力
される。
【0074】次のステップ118では、演算ユニットに
割り当てられたニューロン数Tの演算が終了したかを判
断する。すなわち、演算対象のニューロンのニューロン
番号jがT−1であるかを判断する。ニューロン番号j
がT−1でないと判断された場合は、ステップ124に
移行し、ニューロン番号jをインクリメントしてから、
ステップ104に戻り、上述した処理を繰り返す。
【0075】ニューロン番号jがT−1であると判断さ
れた場合は、割り当てられた全てのニューロンの演算が
終了したため、ステップ120に移行し、終了信号をロ
ーカルバス18を介してマスターノードに出力し、本ル
ーチンを終了する。なお、次のニューロンのシナプス数
が前回演算したニューロンのシナプス数と異なる場合、
演算を開始する前にシナプス数レジスタ40に記憶され
た値を今回演算するニューロンのシナプス数に変更する
ことも可能である。
【0076】以上のように演算ユニット101〜10x
シナプス接続重みメモリ26の先頭アドレスにその重み
が格納されたニューロンから順に演算を行う。ニューロ
ン数レジスタ42で示されたT個のニューロンのニュー
ロン演算を行った後、マスターノード12に終了信号を
送信し、動作が終了する。以上では、演算ユニットが一
つの加算器および一つの乗算器を持つ場合について説明
したが、演算器が複数あり、複数のニューロンに関する
ニューロン演算を同時に行う構成も可能である。
【0077】また、上記構成の情報処理装置による誤差
信号の部分和演算処理ルーチンについて図7のフローチ
ャートを参照して説明する。ここでも説明のため、1つ
のニューロンが持つシナプス数をSとし、1つの演算ユ
ニットに割り当てられたニューロン数をTとする。な
お、誤差信号演算処理では、ニューロン出力値メモリ2
4のバンクAには、逆伝播された誤差信号δn+1〜δn+T
が格納されている。
【0078】まず、ステップ200において、全ての演
算ユニット101〜10xのシナプス接続重みメモリ26
に初期データを書き込む。次のステップ201で、マス
ターノード12からのリセット信号を受け取ると、ステ
ップ202に移行してシナプス接続重みメモリ26の読
み出しアドレスSADRをクリアして、変数jを0にセ
ットする。その後、ステップ204に移行して、累積レ
ジスタ32の値をクリアし、ニューロン出力値メモリ2
4の読み出しアドレスNADRを0に設定する。
【0079】次のステップ206では、現在のシナプス
接続重みメモリ26の読み出しアドレスSADRに格納
されたシナプス接続重みWjiを読み出し、次のステップ
208では、現在のニューロン出力値メモリ24のバン
クAのアドレスから読み出しアドレスNADRに格納さ
れた誤差信号δjを読み出す。
【0080】ステップ210では、読み出したシナプス
接続重みWjiと誤差信号δjとを乗算器28によって乗
算する。得られた乗算結果を加算器30によって現在累
積レジスタ32に保存されている値と加算して、累積レ
ジスタ32に保存する。
【0081】次のステップ212では、割り当てられた
ニューロン数分、すなわち、T回、積和演算を行ったか
を判断する。T回、積和演算を行っていないと判断され
た場合は、ステップ218に移行し、シナプス接続重み
メモリ26のアドレスSADRをシナプス数レジスタ4
0に記憶された値、すなわちS分加算し、ニューロン出
力値メモリ24の読み出しアドレスNADRをインクリ
メントしてから、ステップ206に戻り、上述した処理
を繰り返す。
【0082】ステップ212において、T回、積和演算
を行っていると判断された場合は、ステップ214に移
行し、累積レジスタ32保存されたデータをローカルバ
スインターフェイス20に出力しローカルバス18を介
してマスターノード12に出力する。
【0083】次のステップ216では、マスターノード
12から次のニューロンの誤差信号演算指示の入力まで
待機する。誤差信号演算指示の入力が有ると判断される
と、ステップ222に移行し、ニューロン番号j及びシ
ナプス接続重みメモリ26のアドレスSADRをインク
リメントしてから、ステップ104に戻り、上述した処
理を繰り返す。また、リセット信号が入力されると、ス
テップ202に戻り、上述した処理を繰り返す。
【0084】以上のように演算ユニット101〜10x
マスターノード12からの誤差信号演算開始信号を受け
取るたびにニューロンjから順に誤差信号演算を行う。
マスターノード12からのリセット信号を受け取ると、
制御回路22内のシナプス接続重みメモリ26の読み出
しアドレスがクリアされ、再びニューロンjから誤差信
号演算を行う。
【0085】次に、上記構成の情報処理装置によるシナ
プス接続重みの更新処理ルーチンについて図8のフロー
チャートを参照して説明する。ここでも説明のため、1
つのニューロンが持つシナプス数をSとし、1つの演算
ユニットに割り当てられたニューロン数をTとする。
【0086】このシナプス接続重みの更新処理は、マス
ターノード12から接続重み更新信号が送られると開始
される。なお、j番目のニューロンの学習開始時には、
マスターノード12からニューロンjの誤差信号と学習
係数の積が与えられ、学習係数レジスタ44に保存され
る。
【0087】マスターノード12から接続重み更新信号
が送られると、まず、ステップ300では、全ての演算
ユニット101〜10xのニューロン出力値メモリ24の
バンクA、シナプス接続重みメモリ26、シナプス数レ
ジスタ40、及び、ニューロン数レジスタ42に、上記
ニューロン演算で設定した値と同じ値を設定する。
【0088】次のステップ301で、マスターノード1
2からのリセット信号を受け取ると、ステップ302に
移行して、学習回路36内のシナプス接続重みメモリ2
6の更新アドレスLADRをクリアし、変数jを0にセ
ットする。次のステップ304では、ニューロン出力値
メモリ24の読み出しアドレスNADRを0に設定す
る。
【0089】次のステップ306では、設定されたシナ
プス接続重みメモリ26の更新アドレスLADRに対応
するアドレスからシナプス接続重みWjiを読み出し、ま
た、ステップ308では、ニューロン出力値メモリ24
の読み出しアドレスNADRに対応するアドレスからニ
ューロン出力値Yjを読み出す。
【0090】ステップ310では、読み出したニューロ
ン出力値Yjを学習係数レジスタ44に保存された値
(すなわち、ニューロンjの誤差信号と学習係数の積)
と積算し、積算結果を読み出したシナプス接続重みWji
に加算して得られた値を新規の接続重みとして更新し、
次のステップ312で、前記設定されたシナプス接続重
みメモリ26の更新アドレスLADRに対応するアドレ
スに書き込む。
【0091】次のステップ314では、1つのニューロ
ンの持つシナプス数の回数、すなわち、S回、接続重み
の更新を行ったか、すなわち、ニューロン出力値メモリ
24の読み出しアドレスNADRがS−1になったかを
判断する。読み出しアドレスNADRがS−1になって
いないと判断された場合は、ステップ320に移行し、
ニューロン出力値メモリ24の読み出しアドレスNAD
R及び学習回路36内のシナプス接続重みメモリ26の
更新アドレスLADRをインクリメントしてから、ステ
ップ306に戻り、上述した処理を繰り返す。
【0092】読み出しアドレスNADRがS−1になっ
ていると判断された場合は、ステップ315に移行し、
更新終了信号を出力した後、ステップ316において、
マスターノード12から次のニューロンのシナプス接続
重みの更新指示の入力があるまで待機する。
【0093】シナプス接続重みの更新指示の入力が有る
と判断されると、ステップ324に移行し、ニューロン
番号jをインクリメントしてから、ステップ304に戻
り、上述した処理を繰り返す。またリセット信号が入力
されるとステップ300に戻り、上述した処理を繰り返
す。
【0094】以上のように演算ユニット101〜10x
マスターノード12からの接続重み更新信号を受け取る
たびにニューロンjから順に接続重み更新を行ってい
く。そしてマスターノード12からのリセット信号を受
け取った場合、学習回路36内のシナプス接続重みメモ
リ26の更新アドレスLADRをクリアして、再びニュ
ーロンjから接続重み更新処理を行う。なお、接続重み
更新処理が終了していない時に、ニューロン演算開始信
号が受信された場合、接続重み更新処理の終了後に、次
のニューロン演算が開始される。
【0095】また、例えば、ニューロン演算および接続
重み更新処理に使用するシナプス接続重みメモリ26と
ニューロン出力値メモリ24がそれぞれ別個のバンクを
持ち、メモリへのアクセスが競合しないような回路構成
で接続重み更新とニューロン演算を並列に動作させるこ
とも可能である。
【0096】ここで、本実施の形態において、図3に示
した、入力層、隠れ層および出力層からなる3層のパー
セプトロン型のニューラルネットワークの演算を、上記
構成の演算ユニット101〜10xに割り当てる方法につ
いて説明する。
【0097】図3に示した全てのニューロンのニューロ
ン出力値をそれぞれY1〜Y(n+m+p)、ニューロンi(但
し、iは任意の正の整数)からニューロンj(但し、j
は任意の正の整数)へのシナプス接続の重みをWjiとす
る。3層のパーセプトロン型のニューラルネットワーク
の演算は、Wjiを用いて、図9(A)に示すような3×
3のブロックからなる。
【0098】図9(A)中のIの領域は入力層から隠れ
層への接続(すなわち、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)、計算する必要の無い領域である。
【0099】本実施の形態におけるニューラルネットワ
ークの計算方法では、IおよびIIの領域で表された計算
すべき接続を、例えば、図9(B)に示すように、縦方
向に複数分割してx個の演算ユニットの全部又は1部に
割り当て、分散処理させる。なお、ここでは説明のた
め、前記計算すべき接続を均等に分割して、全部の演算
ユニット101〜10xに、IではニューロンをT1個ず
つ、IIではニューロンをT2個ずつ均等に割り当て、分
散処理させる場合について述べる。
【0100】すなわち、第1演算ユニット101のシナ
プス接続重みメモリ261にはI−1領域の接続重みW
ji(1≦i≦n、n+1≦j≦n+T1)及びII−1領域
の接続重みWji(n+1≦i≦n+m、n+m+1≦j≦
n+m+T2)が保存される。また、第2演算ユニット
102のシナプス接続重みメモリ262にはI−2領域の
接続重みWji(1≦i≦n、n+T1+1≦j≦n+T1
×2)及びII−2領域の接続重みWji(n+1≦i≦n+
m、n+m+T2+1≦j≦n+m+T2+……)が保
存される。なお、第3演算ユニット103から第x演算
ユニット10xまで、同様にして分割された前記計算す
べき接続の1部が保存される。
【0101】したがって、ニューロン演算およびシナプ
ス接続重み更新を行う場合は、各演算ユニット101
10xが並列して入力層から隠れ層への接続を演算し、
その後、各演算ユニット101〜10xが並列して隠れ層
から出力層領域への接続を演算することにより出力層の
ニューロン出力値Ykを得る。なお、入力層から隠れ層
への接続の演算のときには各演算ユニット101〜10x
のニューロン出力値メモリ24には入力層のニューロン
出力値Yi(1≦i≦n)が保存され、隠れ層から出力層
領域への接続を演算するときには各演算ユニット101
〜10xのニューロン出力値メモリ24には隠れ層のニ
ューロン出力値Yj(n+1≦j≦n+m)が保存され
る。
【0102】また、誤差信号演算の場合は、各演算ユニ
ット101〜10xのニューロン出力値メモリ24には、
出力層のニューロンの誤差信号δi(n+m+1≦i≦n
+m+p)が保存される。
【0103】ここで、上記のようにニューロン演算が割
り当てられた各演算ユニット101〜10xを制御するマ
スターノード12の制御ルーチンについて、図10のフ
ローチャートを参照しながら説明する。まず、ステップ
400において、ホストコンピュータ16からニューロ
ン演算開始命令が出力されたかを判断し、ニューロン演
算開始命令が出力されたと判断すると、プログラムメモ
リ14からマスターノード12の制御プログラムを読み
込み、次のステップ402に移行する。ステップ402
では、ニューロン演算を行う。
【0104】ここで、このニューロン演算について、図
11のフローチャートを参照しながら説明する。まず、
ステップ500では、隠れ層のニューロン演算を行うた
めに必要な各種データを書き込み指示とともに送出す
る。すなわち、ホストコンピュータ16がプログラムメ
モリ14に書き込んだ入力層のニューロン出力値Y1
nを読み出し、ニューロン出力値メモリ24のバンク
Aのアドレス0〜(n−1)とニューロン出力値Y1
n及び、書き込み指示をローカルバス18に出力す
る。これにより、各演算ユニット101〜10xの各ニュ
ーロン出力値メモリ24のバンクAのアドレスNADR
0〜(n−1)には入力層のニューロン出力値Y1〜Yn
が書き込まれる。
【0105】また、各演算ユニット101〜10xのシナ
プス数レジスタ40にS=nを設定し、各演算ユニット
101〜10xのニューロン数レジスタ42にT1を設定
し、各演算ユニットにT1個ずつニューロン番号の小さ
い順にニューロンを割り当てる。さらに、各演算ユニッ
ト101〜10xがニューロン出力値メモリ24のバンク
Aを用いて演算を行うように各演算ユニット101〜1
xを設定する。
【0106】全ての設定が終了したら次のステップ50
2に移行し、ローカルバス18にニューロン演算開始信
号を送信して隠れ層のニューロン(すなわち、ニューロ
ン番号n+1〜ニューロン番号n+m)に関するニュー
ロン演算処理を開始させる。
【0107】上述したように、演算開始信号を受信した
各演算ユニット101〜10xはそれぞれ割り当てられた
ニューロンの番号の若い順にニューロン演算を開始す
る。これにより、隠れ層のニューロン演算が並列して行
われる。
【0108】例えば、第1演算ユニット101はニュー
ロンn+1のニューロン演算を開始し、第2演算ユニッ
ト102はニューロンn+1+Tのニューロン演算を開
始し、…第x演算ユニット10xはニューロンn+m−
T+1のニューロン演算を開始する。
【0109】演算を開始した各演算ユニット101〜1
xはそれぞれ上述したニューロン演算処理ルーチンで
記したように、割り当てられたニューロンのニューロン
演算を順次行い、得られた演算結果(ニューロン出力値
j)をローカルバス18を介して変数jの値とともに
他のすべての演算ユニットに送信する。すべての演算ユ
ニットはローカルバス18を介して外部から送信された
演算結果(ニューロン出力値Yj)をニューロン出力値
メモリ24のバンクBの対応するアドレスjに格納す
る。
【0110】ステップ504では、マスターノード12
もローカルバス18に送出されたニューロン出力値Yj
を受信し、プログラムメモリ14中に確保した領域に保
存する。またこの時、マスターノード12は、後の学習
演算に用いるための、非線型関数の微分値も受信し、プ
ログラムメモリ14中に確保した領域に保存する。以上
の処理を、隠れ層のすべてのニューロンのニューロン演
算が終了するまで行う。
【0111】すなわち、次のステップ506では、全て
の演算ユニット101〜10xからニューロン演算の終了
信号を受け取ったかを判断し、受け取っていないと判断
されると、ステップ502に戻り、隠れ層のニューロン
演算を継続させ、受け取ったと判断されると、隠れ層の
ニューロン演算が全て終了したと判断してステップ50
8に移行する。
【0112】ステップ508では、出力層のニューロン
(ニューロン番号n+m+1〜ニューロン番号n+m+
p)のニューロン演算を行うために必要な各種設定を行
う。すなわち、隠れ層のニューロン演算が終了した時点
で、各演算ユニット101〜10xのニューロン出力値メ
モリ24のバンクBのアドレス0〜(m−1)には隠れ
層のニューロン出力Yn+1〜Yn+mが格納されている。従
って、各演算ユニット101〜10xによるニューロン演
算がニューロン出力値メモリ24のバンクBに格納され
たニューロン出力値を用いて行われるように設定する。
【0113】また、各演算ユニット101〜10xのシナ
プス数レジスタ40にS=mを設定し、各演算ユニット
101〜10xのニューロン数レジスタ42にT2を設定
し、各演算ユニットにT2個ずつニューロン番号の小さ
い順にニューロンを割り当てる。
【0114】全ての設定が終了したら次のステップ51
0に移行し、ローカルバス18にニューロン演算開始信
号を送信して出力層のニューロンに関するニューロン演
算処理を開始させる。出力層のニューロン演算は、上述
した隠れ層のニューロン演算の場合と同様に行われ、演
算開始信号を受信した各演算ユニット101〜10xはそ
れぞれ割り当てられたニューロンの番号の若い順にニュ
ーロン演算を開始する。これにより、出力層のニューロ
ン演算が並列して行われる。
【0115】演算を開始した各演算ユニット101〜1
xはそれぞれニューロン演算処理ルーチンの説明で記
したように割り当てられたニューロンのニューロン演算
を順次行い、得られた演算結果(ニューロン出力値
j)をローカルバス18を介して変数jの値とともに
他のすべての演算ユニットに送信する。すべての演算ユ
ニットはローカルバス18を介して外部から送信された
演算結果(ニューロン出力値Yj)をニューロン出力値
メモリ24のバンクBの対応するアドレスjに格納す
る。また、マスターノード12は、ステップ512にお
いて、得られた演算結果(ニューロン出力値Yj)をホ
ストバス19を介して変数jの値とともにホストコンピ
ュータ16に送信する。以上の処理を、出力層のすべて
のニューロンのニューロン演算が終了するまで行う。
【0116】すなわち、次のステップ514では、全て
の演算ユニット101〜10xからニューロン演算の終了
信号を受け取ったかを判断し、受け取っていないと判断
されると、ステップ510に戻り、出力層のニューロン
演算を継続させ、受け取ったと判断されると、出力層の
ニューロン演算が全て終了したと判断してホストコンピ
ュータ16に演算終了を通知し、本ルーチンを終了す
る。
【0117】ステップ402のニューロン演算が終了す
ると、引き続きバックプロパゲーションによる学習を行
う。バックプロパゲーションによる学習は、誤差信号演
算処理と接続重み更新処理の2つの処理により実行され
る。まず、ステップ404では、ホストコンピュータ1
6から学習開始信号の入力が有るかを判断し、学習開始
信号が入力されたと判断すると、次のステップ406に
移行する。
【0118】ステップ406では、誤差信号の演算を行
う。ここで、誤差信号の演算について、図12のフロー
チャートを参照しながら説明する。まず、ステップ60
0では、隠れ層の誤差信号δn+1〜δn+mの演算を行うた
めに必要な各種データを書き込み指示とともに送出す
る。
【0119】すなわち、ホストコンピュータ16がプロ
グラムメモリ14に書き込んだ教師信号dn+m+1 〜d
n+m+pを読み出し、上記の出力層のニューロン演算で得
られたニューロン出力値Yn+m+1〜Yn+m+pと、教師信号
n+m+1 〜dn+m+pとの差の値(すなわち、dn+m+1−Y
n+m+1〜dn+m+p−Yn+m+p)を、出力層の誤差信号δn+
m+1〜δn+m+pとして、ニューロン出力値メモリ24のバ
ンクAのアドレス0〜(p−1)及び、書き込み指示と
共に、ローカルバス18に出力する。これにより、各演
算ユニット101〜10xのニューロン出力値メモリ24
のバンクAのアドレスNADR0〜(p−1)には出力
層の誤差信号δn+m+1〜δn+m+pが書き込まれる。
【0120】また、各演算ユニット101〜10xがニュ
ーロン出力値メモリ24のバンクAを用いて演算を行う
ように各演算ユニット101〜10xを設定する。さら
に、各演算ユニット101〜10xのシナプス数レジスタ
40にS=pを設定し、各演算ユニット101〜10x
ニューロン数レジスタ42にT2を設定し、各演算ユニ
ットにT2個ずつニューロン番号の小さい順にニューロ
ンを割り当てる。
【0121】全ての設定が終了したらステップ602に
移行し、各演算ユニット101〜10xから受信した誤差
信号の部分和αを累積加算する変数SUM、および受信
した誤差信号の部分和αの数を表す変数NUMをリセッ
トしてから、ローカルバス18に誤差信号演算開始信号
を送信する。
【0122】次のステップ604では、誤差信号演算開
始信号の送信により、上述した各演算ユニット101
10xによる隠れ層のニューロンの誤差信号の部分和演
算処理ルーチンが開始される。すなわち、上述したよう
に、誤差信号演算開始信号を受信した各演算ユニット1
1〜10xはそれぞれ割り当てられたニューロンの番号
の若い順に隠れ層のニューロンの誤差信号の部分和演算
を開始する。これにより、隠れ層のニューロンの誤差信
号の部分和演算が並列して行われる。
【0123】次のステップ606では、各演算ユニット
101〜10xから出力された誤差信号の部分和αを受信
したかを判断し、受信したと判断されると、ステップ6
08に移行して、受信した誤差信号の部分和αを累積加
算し(SUM=SUM+α)、また、受信した誤差信号
演算の部分和αの数をカウントする(NUM=NUM+
1)。
【0124】次のステップ610では、受信した部分和
αの数が演算を割り当てた演算ユニットの数、すなわち
X個に達した場合かを判断する。達していないと判断さ
れた場合は、ステップ604に戻り、上述した処理を繰
り返す。
【0125】一方、受信した部分和αの数がX個に達し
たと判断された場合は、ステップ612に移行して累積
した誤差信号演算の部分和SUMをプログラムメモリ1
4中に確保した領域に書き込み、ステップ614に移行
する。
【0126】ステップ614では、隠れ層のすべてのニ
ューロンに関する誤差信号の演算が終了したを判断し、
終了していないと判断された場合は、ステップ602に
戻り、上述した処理を繰り返す。また。終了したと判断
された場合は、本ルーチンを終了する。
【0127】誤差信号演算が終了したら、図10のステ
ップ408に移行して、引き続きシナプス接続重みの更
新を行う。ここで、シナプス接続重みの更新について、
図13のフローチャートを参照して説明する。
【0128】まず、ステップ700では、隠れ層のシナ
プス接続重みの更新を行うために必要な各種データを書
き込み指示とともに送出する。すなわち、プログラムメ
モリ14に保存された入力層のニューロン出力値Y1
nを読み出し、ニューロン出力値メモリ24のバンク
Aのアドレス0〜(n−1)とニューロン出力値Y1
n及び、書き込み指示をローカルバス18に出力す
る。これにより、各演算ユニット101〜10xの各ニュ
ーロン出力値メモリ24のバンクAのアドレスNADR
0〜(n−1)には上記ニューロン演算によりプログラ
ムメモリ14に保存された入力層のニューロン出力値Y
1〜Ynが書き込まれる。
【0129】また、各演算ユニット101〜10xのシナ
プス数レジスタ40にS=nを設定し、各演算ユニット
101〜10xのニューロン数レジスタ42にT1を設定
し、各演算ユニットにT1個ずつニューロン番号の小さ
い順にニューロンを割り当てる。
【0130】さらに、各演算ユニット101〜10xがニ
ューロン出力値メモリ24のバンクAを用いて演算を行
うように各演算ユニット101〜10xを設定し、学習回
路36内のシナプス接続重みメモリ26の更新アドレス
LADRをクリアする。
【0131】演算ユニット101〜10xの学習係数レジ
スタ44にはそれぞれ上述の演算でプログラムメモリ1
4に保存され割り当てられたニューロンに対応する誤差
信号δn+m+1〜δn+m+pのいずれかと、プログラムメモリ
14に保存されたそれぞれのニューロンの非線型演算の
微分値、及び予め定められた学習係数の積が設定され
る。マスターノード12によるこれらの設定はローカル
バス18を通して行う。
【0132】全ての設定が終了したら次のステップ70
2に移行し、ローカルバス18に接続重み更新信号を送
信して隠れ層のニューロン(すなわち、ニューロン番号
n+1〜ニューロン番号n+m)に関する接続重みの更
新を開始させる。
【0133】上述の図8に示すように、シナプス接続重
み更新信号を受信した各演算ユニット101〜10xはそ
れぞれ割り当てられたニューロンの番号の若い順に接続
重み更新処理を開始する。これにより、隠れ層のニュー
ロンの接続重み更新処理が並列して行われる。
【0134】例えば、第1演算ユニット101はニュー
ロンn+1の接続重み更新処理を開始し、第2演算ユニ
ット102はニューロンn+1+T1の接続重み更新処
理を開始し、…第x演算ユニット10xはニューロンn
+m−T1+1の接続重み更新処理を開始する。
【0135】接続重み更新を開始した各演算ユニット1
1〜10xはそれぞれ上述した接続重み更新処理ルーチ
ンで記したように、割り当てられたニューロンの接続重
み更新処理を順次行い、各演算ユニット内のシナプス接
続重みを更新する。
【0136】次のステップ704では、マスターノード
12が更新終了信号を受け取ったかを判断し、受け取っ
ていないと判断されると、ステップ702に戻り、シナ
プス接続重み更新処理を継続させ、受け取ったと判断さ
れると、つぎのステップ706において、隠れ層の全て
のニューロンのシナプス接続重み更新処理が終了したか
を判断する。
【0137】隠れ層の全てのニューロンのシナプス接続
重み更新処理が終了していないと判断された場合は、ス
テップ720に移行して、更新終了信号を受け取った演
算ユニットに対して次のニューロンの誤差信号と学習係
数の積を学習係数レジスタ44に保存し、次のニューロ
ンの接続重み更新指示を出してステップ702に戻り、
上述した処理を繰り返す。隠れ層の全てのニューロンの
シナプス接続重み更新処理が終了したと判断された場合
は、ステップ710に移行して、出力層のシナプス接続
重みの更新を行うために必要な各種データを書き込み指
示とともに送出する。すなわち、プログラムメモリ14
に保存された隠れ層のニューロンn+1〜ニューロンn
+mのニューロン出力値Yn+1〜Yn+mを読み出し、ニュ
ーロン出力値メモリ24のバンクAのアドレス0〜(m
−1)とニューロン出力値Yn+1〜Yn+m及び、書き込み
指示をローカルバス18に出力する。これにより、各演
算ユニット101〜10xの各ニューロン出力値メモリ2
4のバンクAのアドレスNADR0〜(m−1)には上
記ニューロン演算によりプログラムメモリ14に保存さ
れた入力層のニューロン出力値Yn+1〜Yn+mが書き込ま
れる。
【0138】また、各演算ユニット101〜10xのシナ
プス数レジスタ40にS=mを設定し、各演算ユニット
101〜10xのニューロン数レジスタ42にT2を設定
し、各演算ユニットにT2個ずつニューロン番号の小さ
い順にニューロンを割り当てる。
【0139】さらに、各演算ユニット101〜10xがニ
ューロン出力値メモリ24のバンクAを用いて演算を行
うように各演算ユニット101〜10xを設定し、学習回
路36内のシナプス接続重みメモリ26の更新アドレス
LADRは、それぞれ割り当てられたニューロンのう
ち、最もニューロン番号の小さいニューロンのシナプス
接続重みの先頭のアドレスに設定される。
【0140】また、各演算ユニット101〜10xの学習
係数レジスタ44には、それぞれ上述の演算でプログラ
ムメモリ14に保存され割り当てられたニューロンに対
応する誤差信号δn+m+1〜δn+m+pのいずれかと、プログ
ラムメモリ14に保存されたそれぞれのニューロンの非
線型演算の微分値およびあらかじめ定められた学習係数
の積をローカルバス18を介して設定される。マスター
ノード12によるこれらの設定はローカルバス18を通
して行う。
【0141】全ての設定が終了したら次のステップ70
2に移行し、ローカルバス18に接続重み更新信号を送
信して出力層のニューロン(すなわち、ニューロン番号
n+m+1〜ニューロン番号n+m+p)に関するシナ
プス接続重みの更新を開始させる。
【0142】この出力層のニューロンに関するシナプス
接続重みの更新処理は、上述の隠れ層のニューロンに関
するシナプス接続重みの更新処理と同様であるため、こ
こでは、説明は省略する。
【0143】次のステップ714では、マスターノード
12が更新終了信号を受け取ったかを判断し、受け取っ
ていないと判断されると、ステップ712に戻り、シナ
プス接続重み更新処理を継続させ、受け取ったと判断さ
れると、つぎのステップ716において、出力層の全て
のニューロンのシナプス接続重み更新処理が終了したか
を判断する。
【0144】出力層の全てのニューロンのシナプス接続
重み更新処理が終了していないと判断された場合は、ス
テップ722に移行して、終了信号を受け取った演算ユ
ニットに対して次のニューロンの誤差信号と学習係数の
積を学習係数レジスタ44に保存し、次のニューロンの
接続重み更新指示を出してステップ712に戻り、上述
した処理を繰り返す。出力層の全てのニューロンのシナ
プス接続重み更新処理が終了したと判断された場合は、
本ルーチンを終了する。
【0145】接続重み更新が終了したら、図10のステ
ップ410に移行して、ホストコンピュータ16に学習
終了信号を送信する。これにより、1回の入力に対する
ニューロン演算およびバックプロパゲーション学習が終
了する。
【0146】次のステップ412では、ホストコンピュ
ータ16から新たな入力があるかを判断し、新たな入力
がある場合は、新たな入力に対するニューロン演算およ
びバックプロパゲーション学習を行うために、ステップ
402に戻り、上述した処理を繰り返す。新たな入力無
い場合は、本ルーチンを閉じ、ニューロン演算およびバ
ックプロパゲーション学習を終了する。
【0147】以上の動作では、各演算ユニット101
10xにおけるニューロン演算および隠れ層の誤差信号
の演算は各演算ユニット101〜10x内のメモリに保存
された値のみを用いた演算を行うため、高速に行うこと
がでる。また各演算ユニット101〜10x内からローカ
ルバス18に送出されるデータ量は1回のニューロンの
演算につき1回の転送、および1回の誤差演算につき、
誤差演算を割り当てた演算ユニットの数だけの部分和の
転送ですむため、ローカルバス18の帯域が律速となっ
て演算性能が低下する可能性は少ない。
【0148】また、以上の演算は任意の数の演算ユニッ
ト101〜10xによって並列に実行できるが、この構成
で、各演算ユニット101〜10x間の待ち時間を少なく
し演算ユニットを有効に利用するためには、各演算ユニ
ットに割り当てるニューロン数を均等にした方がよい。
【0149】また、上記実施の形態では、個々の演算ユ
ニットが一つの半導体チップに形成され、複数の半導体
チップが一つの基板上に実装されている例を示したが、
演算ユニットが半導体チップ内の一つの領域であり、複
数の演算ユニットが一つの半導体チップ内に形成される
構成とすることも可能である。また、演算ユニットが一
つの基板上に形成され、複数の基板がバスを介して結合
される構成ととすることも可能である。
【0150】マスターノード12に関しては、本実施の
形態では演算ユニットとは独立に設けたが、演算ユニッ
ト101〜10xのいずれか1つを選択してマスターノー
ド12の機能を持たせるように構成することも可能であ
る。また、演算するニューロン毎にマスターノード12
を兼ねる演算ユニットを、演算ユニット自身が自律的に
変える構成とすることも可能である。
【0151】さらに、本実施の形態では、非線型演算を
各演算ユニットで行う例を示したが、各演算ユニットに
は非線型演算回路を設けず、各演算ユニットで計算され
た積和値をマスターノード12に転送し、マスターノー
ド12で非線型演算を行う構成とすることも可能であ
る。この構成とすれば、各演算ユニットの回路規模を小
さくすることが出来るという効果がある。
【0152】本実施の形態では、誤差信号計算を行う隠
れ層は1層のみであるが、2層以上の隠れ層を有する場
合は引き続き各演算ユニットをニューロン出力値メモリ
24のバンクBを用いて演算を行うように設定して同様
の計算を行えばよい。
【0153】なお、本実施の形態では、マスターノード
12とホストコンピュータ16を別々の装置により構成
したが、ホストコンピュータ16がマスターノード12
を兼ねる等のように1つの装置により構成することも可
能である。また、マスターノード12とプログラムメモ
リ14を別々により構成したが、プログラムメモリ14
がマスターノード12に含まれた構成とすることも可能
である。
【0154】また、演算ユニットが一つの加算器30お
よび一つの乗算器28を持つ場合について説明したが、
演算器が複数あり、複数のニューロンに関するニューロ
ン演算を同時に行う構成も可能である。
【0155】
【発明の効果】以上説明したように本発明によれば、ニ
ューラルネットワークのニューロン演算およびバックプ
ロパゲーションによる学習を多数の演算ユニットを用い
て並列計算する場合に、ニューロン演算用の演算ユニッ
トと誤差信号計算用の演算ユニットを別個に設ける必要
がなく、しかもシナプス接続重みの更新時にバスの帯域
の消費量が少ない、という効果がある。
【図面の簡単な説明】
【図1】 本発明の実施の形態の情報処理装置の概略構
成を示すブロック図である。
【図2】 図1に示した演算ユニットの概略構成を示す
ブロック図である。
【図3】 本発明の実施の形態の情報処理装置を適用し
たニューラルネットワークの概念図である。
【図4】 図4(A)は、ニューロン演算時にニューロ
ン出力値メモリのバンクAに保存されるニューロン出力
値のメモリマップであり、図4(B)は、誤差信号演算
時にニューロン出力値メモリのバンクAに保存される誤
差信号のメモリマップである。
【図5】 シナプス接続重みメモリに保存されるシナプ
ス接続重みのメモリマップである。
【図6】 本実施の形態の情報処理装置によるニューロ
ン演算処理ルーチンである。
【図7】 本実施の形態の情報処理装置による誤差信号
の部分和演算処理ルーチンである。
【図8】 本実施の形態の情報処理装置によるシナプス
接続重みの更新処理ルーチンである。
【図9】 本実施の形態の情報処理装置に適用した3層
のパーセプトロン型のニューラルネットワークの演算を
行列で表現した説明図である。
【図10】 図1に示したマスターノードの制御ルーチ
ンである。
【図11】 図10のニューロン演算についてのフロー
チャートである。
【図12】 図10の誤差信号の演算についてのフロー
チャートである。
【図13】 図10の接続重み更新についてのフローチ
ャートである。
【図14】 従来のニューラルネットを適用した情報処
理装置の概略構成を示すブロック図である。
【符号の説明】
0 アドレス 101〜10x 演算ユニット(演算要素) 12 マスターノード(誤差信号生成手段) 14 プログラムメモリ 16 ホストコンピュータ 18 ローカルバス 19 ホストバス 20 ローカルバスインターフェイス 22 制御回路 24 ニューロン出力値メモリ(データ保存メモリ) 26 シナプス接続重みメモリ(シナプス接続重み保存
メモリ) 28 乗算器(積和演算手段) 30 加算器(積和演算手段) 32 累積レジスタ(積和演算手段) 34 非線型演算回路 36 学習回路(接続重み更新手段) 40 シナプス数レジスタ 42 ニューロン数レジスタ 44 学習係数レジスタ

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】 少なくとも1つ以上の伝送路で接続さ
    れ、ニューラルネットワークを構成する複数のニューロ
    ンのうちの所定数のニューロンがそれぞれ割り当てられ
    た複数の演算要素によって並列にニューロン演算を行う
    ニューラルネットワーク演算装置であって、 前記複数の演算要素の各々は、 1つのニューロンが持つ全てのシナプスのシナプス接続
    重みを、割り当てられた所定数のニューロン分保存する
    シナプス接続重み保存メモリと、 ニューロン演算時には、前記所定数のニューロンを順次
    選択すると共に、該選択したニューロンのシナプスを順
    次選択して、選択したシナプスのシナプス接続重みと該
    シナプスと接続されたニューロンのニューロン出力値と
    を乗算してニューロン毎に累積加算して出力し、誤差信
    号演算時には、特定のニューロンと接続する前記所定数
    のニューロンのシナプスを順次選択し、選択されたシナ
    プスの接続重みと、該選択されたシナプスを持つニュー
    ロンの誤差信号とを乗算して、前記所定数のニューロン
    分累積加算し、得られた値を誤差信号の部分和として出
    力する積和演算手段と、 保存メモリに格納されたシナプス接続重みのうち、選択
    したニューロンのシナプス接続重みの各々を与えられた
    誤差信号に基いて更新する接続重み更新手段と、を備
    え、 前記誤差信号の部分和を前記特定のニューロンと接続さ
    れた全てのニューロン分累積加算し、得られた値を前記
    特定のニューロンの誤差信号として前記特定のニューロ
    ンが割り当てられた演算要素に出力する誤差信号生成手
    段を更に、 備えたニューラルネットワーク演算装置。
  2. 【請求項2】 前記複数の演算要素の各々には、各々複
    数のニューロンから構成され、かつ、ニューラルネット
    ワークを構成する複数の演算層の各々を分割して得られ
    た前記所定数のニューロンよりなる複数のグループのう
    ちの少なくとも1つのグループが割り当てられている請
    求項1に記載のニューラルネットワーク演算装置。
  3. 【請求項3】 前記複数の演算要素の各々には、複数の
    ニューロンから構成され、かつ、ニューラルネットワー
    クを構成する複数の演算層のうちの演算対象となる演算
    層を分割して得られた前記所定数のニューロンよりなる
    複数のグループのうちの少なくとも1つのグループが割
    り当てられている請求項1に記載のニューラルネットワ
    ーク演算装置。
  4. 【請求項4】 前記複数のグループの各々は、グループ
    を構成するニューロン数が略同数である請求項2又は請
    求項3に記載のニューラルネットワーク演算装置。
  5. 【請求項5】 前記演算要素は、 ニューロン演算時には、少なくとも前記シナプス接続重
    み保存に保存されたシナプスと接続するニューロン出力
    値が保存され、誤差信号演算時には、少なくとも割り当
    てられたグループのニューロン毎に与えられる誤差信号
    の少なくとも一方が保存されるデータ保存メモリを備え
    た請求項1から請求項4のいずれか1項に記載のニュー
    ラルネットワーク演算装置。
  6. 【請求項6】 前記データ保存メモリは、ニューロン出
    力値を保存するニューロン出力値保存メモリと、誤差信
    号を保存する誤差信号保存メモリとから構成される請求
    項5に記載のニューラルネットワーク演算装置。
  7. 【請求項7】 データ保存メモリ、又は、ニューロン出
    力値保存メモリ及び誤差信号保存メモリの少なくとも一
    方は、2つのバンクからなり、一方のバンクには演算に
    用いるデータを保存すると共に、他方のバンクには演算
    により得られた結果を保存するように設定される請求項
    5又は請求項6に記載の記載のニューラルネットワーク
    演算装置。
  8. 【請求項8】 ニューロン演算時に、前記積和演算手段
    により累積加算された値を非線型演算し、前記1つのニ
    ューロンのニューロン出力値として出力する非線型演算
    手段を備えた請求項1から請求項7のいずれか1項に記
    載のニューラルネットワーク演算装置。
  9. 【請求項9】 前記複数の演算要素の少なくとも1つが
    誤差信号生成手段を含む請求項1から請求項8のいずれ
    か1項に記載の記載のニューラルネットワーク演算装
    置。
JP29617899A 1999-10-19 1999-10-19 ニューラルネットワーク演算装置 Pending JP2001117900A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP29617899A JP2001117900A (ja) 1999-10-19 1999-10-19 ニューラルネットワーク演算装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP29617899A JP2001117900A (ja) 1999-10-19 1999-10-19 ニューラルネットワーク演算装置

Publications (1)

Publication Number Publication Date
JP2001117900A true JP2001117900A (ja) 2001-04-27

Family

ID=17830183

Family Applications (1)

Application Number Title Priority Date Filing Date
JP29617899A Pending JP2001117900A (ja) 1999-10-19 1999-10-19 ニューラルネットワーク演算装置

Country Status (1)

Country Link
JP (1) JP2001117900A (ja)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003124110A (ja) * 2001-07-03 2003-04-25 Samsung Electronics Co Ltd 工程装置の制御方法
JP2018538607A (ja) * 2015-10-28 2018-12-27 グーグル エルエルシー 計算グラフの処理
JP2019537793A (ja) * 2016-10-27 2019-12-26 グーグル エルエルシー ニューラルネットワーク計算タイル
JP2020074099A (ja) * 2017-04-19 2020-05-14 シャンハイ カンブリコン インフォメーション テクノロジー カンパニー リミテッドShanghai Cambricon Information Technology Co.,Ltd. 処理装置と処理方法
JP2020532780A (ja) * 2017-08-11 2020-11-12 グーグル エルエルシー チップ上に常駐するパラメータを用いたニューラルネットワークアクセラレータ
JP2020197922A (ja) * 2019-06-03 2020-12-10 株式会社東芝 ニューラルネットワークの演算装置、ニューラルネットワーク、ニューラルネットワークの制御方法
CN112446463A (zh) * 2019-08-31 2021-03-05 安徽寒武纪信息科技有限公司 一种神经网络全连接层运算方法、装置以及相关产品
US11106606B2 (en) 2016-10-27 2021-08-31 Google Llc Exploiting input data sparsity in neural network compute units
US11379707B2 (en) 2016-10-27 2022-07-05 Google Llc Neural network instruction set architecture
US11886974B1 (en) 2023-07-20 2024-01-30 Chromatic Inc. Neural network chip for ear-worn device
US11934337B2 (en) 2019-08-31 2024-03-19 Anhui Cambricon Information Technology Co., Ltd. Chip and multi-chip system as well as electronic device and data transmission method

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003124110A (ja) * 2001-07-03 2003-04-25 Samsung Electronics Co Ltd 工程装置の制御方法
US10860925B2 (en) 2015-10-28 2020-12-08 Google Llc Processing computational graphs
US10534997B2 (en) 2015-10-28 2020-01-14 Google Llc Processing computational graphs
JP2018538607A (ja) * 2015-10-28 2018-12-27 グーグル エルエルシー 計算グラフの処理
US11769061B2 (en) 2015-10-28 2023-09-26 Google Llc Processing computational graphs
JP2019537793A (ja) * 2016-10-27 2019-12-26 グーグル エルエルシー ニューラルネットワーク計算タイル
US11422801B2 (en) 2016-10-27 2022-08-23 Google Llc Neural network compute tile
US11816045B2 (en) 2016-10-27 2023-11-14 Google Llc Exploiting input data sparsity in neural network compute units
US11816480B2 (en) 2016-10-27 2023-11-14 Google Llc Neural network compute tile
US11106606B2 (en) 2016-10-27 2021-08-31 Google Llc Exploiting input data sparsity in neural network compute units
JP6995851B2 (ja) 2016-10-27 2022-01-17 グーグル エルエルシー ニューラルネットワーク計算タイル
US11379707B2 (en) 2016-10-27 2022-07-05 Google Llc Neural network instruction set architecture
JP2020074099A (ja) * 2017-04-19 2020-05-14 シャンハイ カンブリコン インフォメーション テクノロジー カンパニー リミテッドShanghai Cambricon Information Technology Co.,Ltd. 処理装置と処理方法
JP2020532780A (ja) * 2017-08-11 2020-11-12 グーグル エルエルシー チップ上に常駐するパラメータを用いたニューラルネットワークアクセラレータ
JP7171622B2 (ja) 2017-08-11 2022-11-15 グーグル エルエルシー チップ上に常駐するパラメータを用いたニューラルネットワークアクセラレータ
US11501144B2 (en) 2017-08-11 2022-11-15 Google Llc Neural network accelerator with parameters resident on chip
US11727259B2 (en) 2017-08-11 2023-08-15 Google Llc Neural network accelerator with parameters resident on chip
JP7027371B2 (ja) 2019-06-03 2022-03-01 株式会社東芝 ニューラルネットワークの演算装置、ニューラルネットワーク、ニューラルネットワークの制御方法
JP2020197922A (ja) * 2019-06-03 2020-12-10 株式会社東芝 ニューラルネットワークの演算装置、ニューラルネットワーク、ニューラルネットワークの制御方法
CN112446463B (zh) * 2019-08-31 2023-06-02 安徽寒武纪信息科技有限公司 一种神经网络全连接层运算方法、装置以及相关产品
CN112446463A (zh) * 2019-08-31 2021-03-05 安徽寒武纪信息科技有限公司 一种神经网络全连接层运算方法、装置以及相关产品
US11934337B2 (en) 2019-08-31 2024-03-19 Anhui Cambricon Information Technology Co., Ltd. Chip and multi-chip system as well as electronic device and data transmission method
US11886974B1 (en) 2023-07-20 2024-01-30 Chromatic Inc. Neural network chip for ear-worn device

Similar Documents

Publication Publication Date Title
US6654730B1 (en) Neural network arithmetic apparatus and neutral network operation method
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
US5604840A (en) Information processing apparatus
EP0377221B1 (en) Neuro-computer
US5479571A (en) Neural node network and model, and method of teaching same
EP0421639B1 (en) Parallel data processing system
JPH04290155A (ja) 並列データ処理方式
US5146543A (en) Scalable neural array processor
US5148515A (en) Scalable neural array processor and method
JP2001117900A (ja) ニューラルネットワーク演算装置
US5799134A (en) One dimensional systolic array architecture for neural network
CN110580519B (zh) 一种卷积运算装置及其方法
US5065339A (en) Orthogonal row-column neural processor
JPH02193251A (ja) エラー後方伝ぱん法と神経網システム
JPH05282272A (ja) ニューラルネットワーク並列分散処理装置
JPH076146A (ja) 並列データ処理システム
JP2825133B2 (ja) 並列データ処理方式
JPH05128285A (ja) ニユーロプロセツサ
JPH05197707A (ja) 情報処理システム
JP2766858B2 (ja) ニューラルネットワーク並列シミュレーション方法及びそれに用いる装置
WO2020213670A1 (ja) ニューラル計算装置、および、ニューラル計算方法
JPH07101415B2 (ja) 情報処理装置及びその学習方法
Krikelis et al. Implementing neural networks with the associative string processor
JPH0264880A (ja) パイプライン処理を用いたニューラルアーキテクチュア
CN113703837A (zh) 数据处理装置以及人工智能处理器