JPH07210533A - ニューラルネットワーク回路及びこれを用いた演算方法 - Google Patents

ニューラルネットワーク回路及びこれを用いた演算方法

Info

Publication number
JPH07210533A
JPH07210533A JP6004043A JP404394A JPH07210533A JP H07210533 A JPH07210533 A JP H07210533A JP 6004043 A JP6004043 A JP 6004043A JP 404394 A JP404394 A JP 404394A JP H07210533 A JPH07210533 A JP H07210533A
Authority
JP
Japan
Prior art keywords
value
synapse
circuit
input
cumulative addition
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
JP6004043A
Other languages
English (en)
Inventor
Kimihisa Aihara
公久 相原
Kuniharu Uchimura
国治 内村
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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP6004043A priority Critical patent/JPH07210533A/ja
Priority to US08/373,440 priority patent/US5630024A/en
Priority to DE69531418T priority patent/DE69531418T2/de
Priority to EP95100620A priority patent/EP0664516B1/en
Priority to EP00113124A priority patent/EP1033660A1/en
Priority to KR1019950000739A priority patent/KR0168975B1/ko
Publication of JPH07210533A publication Critical patent/JPH07210533A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Complex Calculations (AREA)

Abstract

(57)【要約】 【目的】 シナプス演算及び累積加算の演算量を削減で
き、大規模で且つ高速動作可能なニューラルネットワー
ク回路及びこれを用いた演算方法を提供する。 【構成】 シナプス演算回路1−1〜1−nにおける多
数の入力値とこれに対応してシナプス係数メモリ回路2
からメモリ読み出し回路3を介して読み出されるシナプ
ス係数値とのシナプス演算を、該入力値及びシナプス係
数値を構成する2進ビット列の上位ビットから行い、累
積回路4で累積加算し、該累積結果を比較器6−1,6
−2で飽和領域境界値1,2とそれぞれ比較し、飽和領
域でなければ入力値及びシナプス係数値をより下位ビッ
トまで拡大してシナプス演算及び累積加算を繰り返し、
飽和領域になれば演算を停止することにより、それ以降
の演算を省略する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、シナプス演算回路、累
積回路及びしきい値回路からなるニューロン回路を多数
接続して構成されるニューラルネットワーク回路及びこ
れを用いた演算方法に関するものである。
【0002】
【従来の技術】ニューラルネットワーク回路は、ニュー
ロン回路を単位として、これを多数接続して構成されて
いる。1個のニューロン回路は、図2に示すように多入
力(x1,x2,……xn)1出力(y)の回路であ
る。複数の入力にはそれぞれ対応するシナプス係数(w
1,w2,……wn)があり、入力値とシナプス係数値
との積、差の絶対値あるいは差の二乗等の演算を行った
後に累積加算が行われ、累積加算の結果の大きさにより
出力値が決定される。
【0003】出力値を最終的に決定するしきい値回路
は、図3に示すような伝達特性を備えている。図3(a)
のシグモイド関数形が最も汎用性が高いが、演算を簡単
化するために図3(b) の折れ線形あるいは図3(c) のス
テップ関数形のように単純化したものや、機能を高める
ために図3(d) のように非単調形にしたものも使用でき
る。なお、図中、Th,Th1,Th2,Th3,Th
4はそれぞれ飽和領域境界値である。このニューロン回
路の接続によりニューラルネットワーク回路の構造が決
まる。
【0004】最も一般的に用いられるのは、図4に示す
ような3層構造のニューラルネットワーク回路である。
3層構造の場合には、第2層のニューロン回路の層を中
間層、第3層のニューロン回路の層を出力層と呼んでい
る。それぞれの入力端子からの信号は全てのニューロン
回路に並列に入力され、それぞれのニューロン回路は並
列に入力信号を処理する。入力信号が加えられると、特
定のニューロン回路が反応して認識等の処理が実現され
る。
【0005】従来、前述したような機能を有する大規模
なニューラルネットワーク回路を具体化する場合、図5
に示すようにマイクロプロセッサとRAMとを組み合わ
せて構成するのが一般的であった。本構成では、シナプ
ス演算、累積加算、しきい値処理をマイクロプロセッサ
で行い、シナプス係数はRAMに格納する。そして、マ
イクロプロセッサで演算中、シナプス係数が必要となっ
た時点でRAMにアクセスしてシナプス係数を読み出す
という処理を行っていた。
【0006】
【発明が解決しようとする課題】このような構成におい
ては、RAMを増設することにより実現可能なニューラ
ルネットワーク回路の規模を拡大でき、プログラムを替
えることにより演算のアルゴリズムを変更することも容
易である。
【0007】しかしながら、その反面、RAMへのシナ
プス係数のアクセス速度が動作速度を規定し、さらにニ
ューラルネットワーク回路の規模が大きくなるとシナプ
ス演算及び累積加算の演算量が増加し、高速動作を妨げ
る要因の1つとなっていた。これは前述した従来の構成
では、全てのシナプス結合において入力値の全ビットと
シナプス係数の全ビットとのシナプス演算、並びにシナ
プス演算の結果の累積加算を行っていたため、演算量が
膨大となり、それに伴うシナプス係数のRAMへのアク
セスにも時間を要するためであった。
【0008】本発明の目的は、シナプス演算及び累積加
算の演算量を削減でき、大規模で且つ高速動作可能なニ
ューラルネットワーク回路及びこれを用いた演算方法を
提供することにある。
【0009】
【課題を解決するための手段】前記目的を達成するた
め、本発明では、2進ビット列で表される入力値及びシ
ナプス係数値とのシナプス演算を、従来のように全ての
ビット間で行うのではなく、上位ビットから徐々に演算
を進めて概算値から徐々に正確な結果が得られるような
演算過程をとることを特徴とする。また、累積値が演算
の進行に伴って単調増加あるいは単調減少するような演
算手順を用いることにより、累積結果がしきい値関数の
飽和領域内に入り、出力値が一定値に達した時点で演算
を停止することを特徴とする。
【0010】
【作用】本発明によれば、2進ビット列で表されるシナ
プス係数値をRAMから読み出す場合、従来のように全
てのビットを毎回読み出す必要がなく、上位ビットから
必要なビットを読み出すのみで良く、RAMへのアクセ
ス時間を大幅に削減できる。また、シナプス演算及び累
積加算についても、従来、行っていた演算を全て実行す
ることなく出力が決定した時点で以降の演算を停止する
ため、演算処理時間を大幅に短縮できる。
【0011】
【実施例1】図1は本発明の第1の実施例を示すもの
で、図中、1−1,……1−i,……1−nはシナプス
演算回路、2はシナプス係数メモリ回路、3はメモリ読
み出し回路、4は累積回路、5はしきい値回路、6−
1,6−2は比較器、7は制御回路、8−1は飽和領域
境界値1用レジスタ、8−2は飽和領域境界値2用レジ
スタである。
【0012】飽和領域境界値1及び2の値は、図3に示
したしきい値回路の伝達特性において飽和領域と過渡領
域との境界を表しており、小さいほうの値が飽和領域境
界値1、大きいほうが飽和領域境界値2である。しきい
値回路の伝達特性が図3(d)のように過渡領域が複数あ
る場合は、さらに飽和領域境界値3用レジスタ、飽和領
域境界値4用レジスタ及びこれらに対応する比較器が必
要となる。ここでは説明を簡便にするため、しきい値関
数の伝達特性が過渡領域を1つのみ有する場合について
説明する。
【0013】本実施例においては、n個のシナプス演算
回路1−1〜1−nがあり、それぞれのシナプス演算回
路には対応する入力端子及びメモリ読み出し回路3を介
してシナプス係数メモリ回路2が接続されている、ま
た、各シナプス演算回路1−1〜1−nの出力は累積回
路4の入力に接続され、累積回路4の出力はしきい値回
路5、比較器6−1,6−2の入力に接続されている。
【0014】しきい値回路5の出力はニューロン回路の
出力端子に接続されている。比較器6−1の他方の入力
には飽和領域境界値1用レジスタ8−1が、また、比較
器6−2の他方の入力には飽和領域境界値2用レジスタ
8−2がそれぞれ接続されている。比較器6−1,6−
2の出力は制御回路7の入力に接続されている。制御回
路7の出力はメモリ読み出し回路3及び各シナプス演算
回路1−1〜1−nに接続されている。
【0015】シナプス演算を、シナプス係数値及び入力
値を表す2進ビット列の上位ビットから演算を進めて概
算値から徐々に正確な最終結果が得られるような演算を
実現するため、以下に述べる処理が本実施例で行われ
る。
【0016】(1) 上位ビットからの演算を行うために、
制御回路7の指示に従い入力値及びシナプス係数の必要
なビットが適宜、シナプス演算回路に転送される。
【0017】(2) 各シナプス演算回路の演算結果は、累
積回路4で累積加算される。
【0018】(3) 累積結果は飽和領域境界値1及び飽和
領域境界値2と比較され、最終結果が飽和領域であるこ
とが判明するまで(1) 〜(2) の演算を繰り返す。飽和領
域であることが判明した場合には、制御回路7からの信
号により演算を停止させ、以降の演算及びメモリへのア
クセスを省略する。
【0019】前述したようにシナプス演算及び累積加算
を上位ビットから行い、飽和領域境界値1及び飽和領域
境界値2との大小関係を比較して、最終的な累積値が飽
和領域になることが判明した時点で演算を停止させるた
めには、累積加算値が演算の進行に伴い単調増加あるい
は単調減少することが必要である。
【0020】しかし、入力値、シナプス係数値とも正負
の値をとり得るため、シナプス演算として入力値とシナ
プス係数との積を実行する場合、従来のシナプス演算及
び累積加算では単調増加あるいは単調減少を実現するこ
とはできない。そこで、以下に示す演算手法を用いる。
【0021】(1) シナプス演算は入力値、シナプス係数
ともに“符号+絶対値”の2進数表現で演算を行う。こ
こで、各値の絶対値部分の語調(ビット数)をL、絶対
値部分の下位からのビット数をiとする。
【0022】(2) 累積加算時の単調増加を実現するた
め、累積加算の初期値を次のように設定する。
【0023】入力値とシナプス係数の符号ビットより、
シナプス演算の結果の符号を評価し、符号が正となる時
は0に設定する。
【0024】また、シナプス演算の結果の符号が負とな
る場合には以下のように初期値を求める。
【0025】(a) 入力値の絶対値部分のiビット目が
“0”となる時には0に設定する。
【0026】(b) 入力値の絶対値部分のiビット目が
“1”となる時は−2(i+L-1) +1に設定する。
【0027】(c) 各シナプス演算の入力値の絶対値部分
の全ビットに対する設定値を合計し、さらにこの値をニ
ューロンに接続された全てのシナプスについて合計した
値を累積加算の初期値とする。このように、初期値は入
力値のみを使って設定することができる。
【0028】この累積加算の初期値の求め方を図6を用
いて具体的に説明する。本例は各値の絶対値部分の語長
Lが4ビットで、シナプス係数が“11”、入力値が
“−13”の時である。この場合にはシナプス係数と入
力値とのシナプス演算結果は負である。各々の値の絶対
値を2進数表現し、積演算する場合の処理を分解する
と、シナプス係数と入力値のiビット目との積の結果を
シフトさせながら加算していくという処理に分解でき
る。下位ビットで抜けているところには“0”を補い、
各ビット列の桁数に応じて1の補数表現で負の値に変換
する。1の補数表現で表された各桁について、最上位の
負の部分の合計値を累積加算の初期値とする。
【0029】(3) 入力値とシナプス係数の積演算は、絶
対値部分の上位ビット同士から行い、ビット毎の乗算結
果の大きい順に進めていく。入力値のiビット目が
“0”の場合はシナプス演算結果は“0”となることが
明らかなので、入力値のiビット目とシナプス係数値と
の演算は省略する。
【0030】(4) 累積加算はシナプス演算結果が負の
時、1の補数表現で表された絶対値部分を加算して行う
ので、全て正値の加算で実行できる。
【0031】この処理により、図7に示すように演算が
進むにつれて、累積加算の初期値から最終値に向かって
徐々に収束していく。この時、加算されるシナプス演算
結果は上位ビットからの演算を行っているため、絶対値
の大きな値から小さな値へと変化していく。つまり、累
積加算値は概算値から徐々に正確な値に近づいていくわ
けである。そして、累積加算値が飽和領域境界値2を越
えたら飽和領域Aであることが確定するため、以降の演
算を省略できる。
【0032】しかし、前記方法のみでは図7の飽和領域
Bに最終値が入る場合の検出はできない。そこで、前述
した演算について正負を逆にすることにより、図8に示
すように累積加算値が飽和領域Bとなる場合にも判定を
行うことが可能となり、演算を省略することができる。
【0033】
【実施例2】図9は本発明の第2の実施例を示すもの
で、図中、第1の実施例と同一構成部分は同一符号をも
って表す。即ち、1はシナプス演算回路、2はシナプス
係数メモリ回路、3はメモリ読み出し回路、4は累積回
路、5はしきい値回路、6−1,6−2は比較器、7は
制御回路、8−1は飽和領域境界値1用レジスタ、8−
2は飽和領域境界値2用レジスタ、9はセレクタであ
る。
【0034】本実施例においては、1個のシナプス演算
回路1があり、該シナプス演算回路1にはセレクタ9を
介して入力端子が、また、メモリ読み出し回路3を介し
てシナプス係数メモリ回路2がそれぞれ接続されてい
る。また、シナプス演算回路1の出力は累積回路4の入
力に接続され、累積回路4の出力はしきい値回路5、比
較器6−1,6−2の入力に接続されている。しきい値
回路5の出力はニューロン回路の出力端子に接続されて
いる。比較器6−1の他方の入力には飽和領域境界値1
用レジスタ8−1が、また、比較器6−2の他方の入力
には飽和領域境界値2用レジスタ8−2がそれぞれ接続
されている。比較器6−1,6−2の出力は制御回路7
の入力に接続されている。制御回路7の出力はメモリ読
み出し回路3及びシナプス演算回路1に接続されてい
る。
【0035】第1の実施例とは、セレクタ9及びメモリ
読み出し回路3により演算に使用するシナプス係数値及
び入力値を選択することによって、1つのシナプス演算
回路を多重化して使用する点が異なる。これにより、回
路規模を小さくできる利点がある。
【0036】
【実施例3】図10は本発明の第3の実施例を示すもの
で、図中、第1、第2の実施例と同一構成部分は同一符
号をもって表す。即ち、2はシナプス係数メモリ回路、
3はメモリ読み出し回路、5はしきい値回路、6−1,
6−2は比較器、7は制御回路、8−1は飽和領域境界
値1用レジスタ、8−2は飽和領域境界値2用レジス
タ、9はセレクタ、10は1ビットシリアルシナプス演
算回路+累積回路、11はクロック発生回路である。ま
た、図11は図10中の1ビットシリアルシナプス演算
回路+累積回路10の詳細を示すものである。
【0037】本実施例ではシナプス演算回路の加算器部
分と累積回路の加算器部分とを多重化することにより、
回路規模を低減できる利点がある。また、シリアル演算
を行うため、入力値のビット値が“0”の場合はそのシ
ナプス演算を省略することが可能であり、演算量削減の
効果が得られる利点がある。
【0038】本実施例において、シナプス演算回路の加
算器部分と累積回路の加算器部分とを多重化可能である
理由を以下に説明する。シナプス演算回路で積演算をシ
リアルに行う場合を考えると、図12に示すように1ビ
ット積演算と、1ビット積演算の結果を順次加算すると
いう2つの演算に分解できる。一方、累積回路では積演
算の結果を累積加算する。従って、シリアル演算を行う
ことによりシナプス演算回路と累積回路との加算演算部
を一体化することができる。これにより回路規模を低減
させることが可能である。
【0039】図10において、1ビットシリアルシナプ
ス演算回路+累積回路10の入力にはそれぞれメモリ読
み出し回路3を介してシナプス係数メモリ回路2が、ま
た、セレクタ9を介して入力端子が接続されている。1
ビットシリアルシナプス演算回路+累積回路10の出力
は、しきい値回路5及び比較器6−1,6−2の一方の
入力に接続されている。比較器6−1の他方の入力には
飽和領域境界値1用レジスタ8−1が、また、比較器6
−2の他方の入力には飽和領域境界値2用レジスタ8−
2がそれぞれ接続されている。しきい値回路5の出力は
ニューロン回路の出力端子に接続されている。比較器6
−1,6−2の出力は制御回路7の入力に接続されてい
る。制御回路7からはデータのアクセス信号がセレクタ
9とメモリ読み出し回路3に出力され、リセット信号が
クロック発生回路11に出力される。
【0040】図11において、21はシナプス係数レジ
スタ、22は入力値レジスタ、23は累積加算値用レジ
スタ、24,25,26,27はスイッチa,b,c,
d、28,29はEX−OR回路、30はAND回路、
31は1ビット全加算器、32はDタイプフリップフロ
ップ回路、33は制御回路である。
【0041】AND回路30の入力はスイッチaを介し
てシナプス係数レジスタ21の出力に、また、スイッチ
bを介して入力値レジスタ22の出力に接続されてい
る。AND回路30の出力はEX−OR回路29の一方
の入力に接続されている。EX−OR回路28の入力は
シナプス係数レジスタ21の符号ビット及び入力値レジ
スタ22の符号ビットに接続されており、該EX−OR
回路28の出力はEX−OR回路29の他方の入力に接
続されている。EX−OR回路29の出力は1ビット全
加算器31の入力に接続されている。1ビット全加算器
31の他方の入力にはスイッチcの出力が接続され、ス
イッチcの入力には累積加算値用レジスタ23の出力が
接続されている。
【0042】1ビット全加算器31のS出力(加算結
果)はスイッチdの入力に接続され、Co出力(キャリ
ー信号)はDタイプフリップフロップ回路32を介して
Ci入力及び制御回路33の入力に接続されている。ス
イッチdの出力は累積加算値用レジスタ23の入力に接
続されている。スイッチbの出力は制御回路33の入力
に接続されている。また、スイッチbは入力値レジスタ
22のjビット目(jは下位からのビット数)を選択す
るように制御回路33で制御される。同様に、各スイッ
チの制御入力であるi,kの信号も制御回路33から供
給される。ここで、iはシナプス係数レジスタ21の下
位からのビット数、kは累積加算値用レジスタ23の下
位からのビット数である。
【0043】本回路の動作を以下に説明する。
【0044】(1) 累積加算値の初期値を以下のように設
定する。
【0045】累積加算値の初期値=第1の実施例の初期
値 (2) 制御回路33で入力値のjビット目が“0”である
か否かを判定し、“0”である場合には入力値のjビッ
ト目を使用するシナプス演算を省略し、その際、使用す
るシナプス係数のシナプス係数メモリへのアクセスも省
略し、次のシナプス演算を行うように制御回路33は新
しいi,j,kを出力する。
【0046】(3) シナプス係数の符号ビットと入力値の
符号ビットをEX−OR回路28へ送り、シナプス係数
と入力値との積演算の結果の符号を求める。
【0047】(4) シナプス係数のiビット目と入力値の
jビット目をAND回路30へ送り、両ビットを用いた
1ビットの積演算を行う。
【0048】(5) さらに、(3) 及び(4) の演算結果がE
X−OR回路29へ送られ、累積加算する値を評価す
る。
【0049】具体的には、積演算の結果の符号が正で積
演算の結果が“0”の時及び積演算の結果の符号が負で
積演算の結果が“1”の時には加算値を“0”にする。
【0050】また、積演算の結果の符号が正で積演算の
結果が“1”の時及び積演算の結果の符号が負で積演算
の結果が“0”の時には加算値を“1”にする。
【0051】(6) 1ビット全加算器31においては、前
記加算値と累積加算値のkビット目との加算が行われ、
S信号が累積加算値のkビット目に格納される。
【0052】(7) この時、キャリー信号が1の時、つま
り桁上がりが生じた場合には、キャリー信号と累積加算
値の前回より1桁上位のビットとの加算が行われる。
【0053】この演算が桁上がりが生じなくなるまで繰
り返されて、累積加算値が求められる。
【0054】
【実施例4】図13は本発明の第4の実施例を示すもの
で、ここでは図10に示した第3の実施例における1ビ
ットシリアルシナプス演算回路+累積回路10の他の回
路を示すものであり、以下の特徴を有する。
【0055】第1乃至第3の実施例において、飽和領域
Aと飽和領域Bの両方を判定するためには、シナプス演
算回路及び累積回路を2セット用意し、一方のセットで
累積加算値が単調増加となる演算を行うことにより飽和
領域Aを判定し(図7の演算に対応)、他方のセットで
累積加算値が単調減少となる演算を行うことにより飽和
領域Bを判定する(図8の演算に対応)必要がある。
【0056】しかし、シナプス係数と入力値との演算を
シリアルに行う場合の特徴的な性質を利用すると、第3
の実施例の1ビットシリアルシナプス演算回路+累積回
路を図13に示す回路に置き換えることにより、1セッ
トのシナプス演算回路及び帯累積回路で飽和領域Aと飽
和領域Bの判定を実現することができる。
【0057】具体的な演算の概要及びシナプス係数と入
力値とのシリアル演算を行う場合の特徴的性質につい
て、図14、15、16及び17を用いて説明する。第
4の実施例においては図14及び15に示すように単調
増加しながら累積加算値の最終値に近づいて行く累積加
算値2と、単調減少しながら累積加算値の最終値に近づ
いて行く累積加算値1の演算を、共通のシナプス演算回
路+累積回路において同時に行う。
【0058】累積加算値1及び累積加算値2の初期値は
以下のように設定する。
【0059】(1)シナプス係数と入力値とのシナプス
演算の結果が正数の時(図16の時)<累積加算値1の
初期値> (a) 入力値の絶対値部分の下位からiビット目が“0”
となる時には“0”に設定する。
【0060】(b) 入力値の絶対値部分の下位からiビッ
ト目が“1”となる時には「2(i+L -1) −1」に設定す
る。ここで、Lは各値の絶対値部分の語長(ビット数)
である。
【0061】(c) 入力値の絶対値部分の全ビットに対す
る設定値を合計した値を累積加算値1の初期値とする。
【0062】累積加算値1の初期値の意味は以下の通り
である。図16に示すように、シナプス係数の絶対値と
入力値の絶対値との積演算を「シナプス係数の絶対値部
分全ビットと入力値の各ビットとの部分積演算+各部分
積の累積加算」という形に分解して取り扱う。シナプス
係数の絶対値部分全ビットと入力値の各ビットとの部分
積のビット列のうち、入力ビット値が“1”に対応する
ビット列が全て“1”であると仮定した時の各部分積の
ビット列の合計値が累積加算値1の初期値である。
【0063】<累積加算値2の初期値>“0”に設定す
る 累積加算値2の初期値は図16に示すように、シナプス
係数の絶対値部分全ビットと入力値の各ビットとの部分
積のビット列が全て“0”であると仮定した時の各部分
積のビット列の合計値が累積加算値2の初期値である。
【0064】(2)シナプス係数と入力値とのシナプス
演算の結果が負数の時(図17の時) <累積加算値1の初期値>“0”に設定する。
【0065】ここで、累積加算値1の初期値の意味は以
下の通りである。図17に示すように、シナプス係数の
絶対値と入力値の絶対値との積演算を「シナプス係数の
絶対値部分全ビットと入力値の各ビットとの部分積演算
+各部分積の累積加算」という形に分解して取り扱う。
シナプス係数の絶対値部分全ビットと入力値の各ビット
との部分積のビット列を1の補数表現で負の値に変換す
る。1の補数表現に変換した結果のビット列が全て
“1”であると仮定した時の各ビット列の合計値が累積
加算値1の初期値である。
【0066】<累積加算値2の初期値> (a) 入力値の絶対値部分の下位からiビット目が“0”
となる時には“0”に設定する。
【0067】(b) 入力値の絶対値部分の下位からiビッ
ト目が“1”となる時には「−2(i +L-1) +1」に設定
する。
【0068】(c) 入力の絶対値部分の全ビットに対する
設定値を合計した値を累積加算値2の初期値とする。
【0069】累積加算値2の初期値の意味は以下の通り
である。図17に示すように、シナプス係数の絶対値部
分全ビットと入力値の各ビットとの部分積のビット列を
1の補数表現で負の値に変換する。1の補数表現に変換
した結果のビット列のうち、入力ビット値が“1”に対
応するビット列が最上位ビット列以外全て“0”である
と仮定した時の負の値に変換した結果のビット列の合計
値が累積加算値2の初期値である。
【0070】累積加算は以下のように行う。
【0071】シナプス係数と入力値との1ビット積演算
を上位ビットから行う。その結果、累積加算値1の初期
値を設定した時に加算されていたビットが“0”である
ことが判明したら、加算されていたビットを累積加算値
1から減算する(図16中のシリアル演算の順番(3)(4)
(7)(8)(9) 、図17中のシリアル演算の順番(1)(2)(5)
(6)に対応)。
【0072】一方、シナプス係数と入力値との1ビット
積演算の結果、累積加算値2の初期値を設定した時に加
算されていないビットが“0”でないことが判明した
ら、1ビット積演算の結果を累積加算値2に加算する
(図16中のシリアル演算の順番(1)(2)(5)(6)、図17
中のシリアル演算の番号(3)(4)(7)(8)(9) に対応)。
【0073】本動作においては、図16及び17の演算
の進行過程をみればわかるように、シナプス係数と入力
値との1ビット積演算の後に実行される累積加算値1か
らの減算及び累積加算値2への加算は相補的な関係にな
っており、常にいずれかの演算のみが行われていること
がわかる。
【0074】従って、単調増加して飽和領域Aを判定す
る累積加算値2に関する演算と、単調減少して飽和領域
Bを判定する累積加算値1に関する演算とを同一の積演
算器及び加算器を用いて、累積加算値1を保持するレジ
スタと累積加算値2を保持するレジスタとを切り換えな
がら演算することにより両方の演算を同時に実行するこ
とができる。
【0075】図13において、31は1ビット全加算
器、32はDタイプフリップフロップ回路、33は制御
回路、34は積演算器、35は定数“1”を格納するた
めのレジスタ、36は累積加算値1用レジスタ、37は
累積加算値2用レジスタ、38,39,40,41,4
2,43はスイッチc,d,e,f,g,hである。
【0076】積演算器34の入力には、制御回路33に
より指定されたシナプス係数と入力値が入力される。積
演算器34の出力はスイッチg及びhの制御入力に接続
され、積演算の結果によりスイッチを切り換えている。
【0077】1ビット全加算器31の入力には、定数
“1”用レジスタ35及びスイッチgの出力が接続さ
れ、S出力(加算結果)はスイッチhの入力に接続され
ている。Co出力(キャリー信号)はDタイプフリップ
フロップ回路32を介してCi入力に接続されている。
Co出力は制御回路33の入力にも接続されている。ス
イッチhの出力はスイッチdを介して累積加算値1用レ
ジスタ36の入力に、また、スイッチfを介して累積加
算値2用レジスタ37の入力に接続されている。スイッ
チgの入力にはスイッチcを介して累積加算値1用レジ
スタ36の出力が、また、スイッチeを介して累積加算
値2用レジスタ37の出力が接続されている。また、ス
イッチc,d,e,fの制御入力であるkの信号は制御
回路33から供給される。ここで、kは累積加算値1用
レジスタ36及び累積加算値2用レジスタ37の下位か
らkビット目をアクセスする信号である。
【0078】本回路の動作を以下に説明する。
【0079】(1) 累積加算値1及び累積加算値2の初期
値を前述のように設定する。
【0080】(2) 積演算器34においてシナプス係数と
入力値との積演算が行われ、積演算の結果とその符号が
求められる。積演算の結果とその符号が1ビットづつス
イッチg及びhの制御入力に送られ、累積加算値1と累
積加算値2のどちらを用いて累積加算を行うかを以下の
ように切り換える。
【0081】
【表1】 (3) 1ビット全加算器31においては、“1”と(2) で
選択された累積加算値の下位からkビット目との加算が
行われ、S信号が累積加算値の下位からkビット目に格
納される。
【0082】(4) この時、キャリー信号が1の時、つま
り桁上がりが生じた場合には、キャリー信号と累積加算
値の前回より1桁上位のビットとの加算が行われる。
【0083】この演算が桁上がりが生じなくなるまで繰
り返されて、累積加算値が求められる。
【0084】(5) 累積加算値1用レジスタ36及び累積
加算値2用レジスタ37の出力を、比較器において飽和
領域及び過渡領域の境界値と比較することにより、飽和
領域の判定を行う。
【0085】
【実施例5】第1乃至第4の実施例においては、累積加
算値と飽和領域境界値との大小関係を比較器を用いて評
価することにより、演算を継続するか否かの評価を行っ
ていた。しかし、第5の実施例においては、以下に述べ
るように、累積回路の最上位ビットからのキャリー信号
の検出のみで演算を継続するか否かを判断することが可
能であり、演算停止の判断をより簡単な処理で行うこと
ができるという利点がある。
【0086】本実施例においては、累積加算値が負数と
なる時は1の補数表現で表す。図18に示すように累積
加算を行うことにより累積加算値が変化してゆき、飽和
領域境界値に到達した時に“0”となるように累積加算
値の初期値を設定する。このように初期値を設定すれ
ば、飽和領域境界値に到達した時、つまり累積加算値が
“0”になった時、累積加算値の最上位ビットからキャ
リー信号が発生し、飽和領域であることを判定して演算
を停止させることができる。
【0087】しきい値回路の伝達特性において過渡領域
が1つで加算演算をシリアルに行う場合について説明す
る。
【0088】前記方法を実現するために以下に示す演算
手法を行う。
【0089】(1) 累積加算値1及び累積加算値2の初期
値を以下のように設定する。
【0090】・累積加算値1の初期値=第3の実施例の
累積加算値1の初期値+飽和領域境界値1 ・累積加算値2の初期値=第3の実施例の累積加算値2
の初期値−飽和領域境界値2 (2) 演算は第4の実施例と同様に行う。そして、演算
中、最上位ビットからキャリー信号が発生したら以降の
演算を省略する。
【0091】図19は本実施例の構成を示すもので、図
11または13中の制御回路33の一部として実現され
る。図中、51はシナプス係数の下位からのビット数i
を格納するレジスタ、52は入力値の下位からのビット
数jを格納するレジスタ、53は変数を格納するレジス
タ、54は定数“1”を格納するレジスタ、55は定数
L(Lは各値の絶対値部分の語長)を格納するレジス
タ、56,57,58は加算器、59は比較器、60は
AND回路である。
【0092】加算器56の入力にはi格納用レジスタ5
1及びj格納用レジスタ52が接続され、該加算器56
の出力は加算器58の一方の入力に接続されている。加
算器58の他方の入力は変数格納用レジスタ53に接続
され、該加算器58の出力は比較器59の一方の入力に
接続されている。加算器57の入力には変数格納用レジ
スタ53及び定数1格納用レジスタ54が接続され、出
力は変数格納用レジスタ53にフィードバックされてい
る。また、比較器59の他方の入力にはL格納用レジス
タ55が接続され、出力はAND回路60の一方の入力
に接続されている。AND回路60の他方の入力は累積
回路のキャリー信号であり、該AND回路60の出力は
演算停止信号の出力端子に接続されている。
【0093】次に、本回路の動作について説明する。
【0094】(1) 制御信号iとjの加算を行い、この結
果と変数との加算を行うことにより現在、何桁目の演算
を実行中であるかを示す値kを評価する。ここで、変数
の値の初期値は−L(Lは各値の絶対値部分の語長)で
ある。また、変数値は累積回路で桁上げが生じた時は1
ずつ加算されていき、桁上げが生じない時は初期値に戻
る。
【0095】(2) kの値は比較器59に送られ、定数L
と比較することにより現在の演算が最上位ビットに関す
るものであるか否かを評価する。
【0096】(3) 比較器59の出力と累積回路のキャリ
ー信号とのANDをとることにより、最上位ビットの演
算で桁上がりが生じたかどうかを判定する。そして、最
上位ビットの演算で桁上がりが生じた場合は演算を終了
させる演算停止信号を出力し、以降の演算を省略する。
【0097】以上の処理により、累積回路の最上位ビッ
トのキャリー信号の検出のみで演算の停止を実現するこ
とができる。
【0098】
【実施例6】以上説明した実施例はシナプス演算とし
て、シナプス係数と入力値との積の演算を行う場合につ
いて述べたが、以下に述べる点を変更すれば、シナプス
演算が差の絶対値の時あるいは2乗の時も同様の処理を
行うことができる。
【0099】<シナプス係数と入力値との差の絶対値を
とる場合> (1) 累積加算の初期値は常に0に設定する。
【0100】(2) シナプス係数と入力値の減算の結果の
絶対値が常に正となるので、上位ビットからシナプス演
算を行った後、累積加算する。
【0101】<シナプス係数と入力値との差の2乗をと
る場合> (1) 累積加算の初期値は常に0に設定する。
【0102】(2) シナプス係数と入力値の減算の結果の
2乗が常に正となるので、上位ビットからシナプス演算
を行った後、累積加算する。
【0103】例えば、シナプス係数値と入力値が(a×
3 +b×22 +c×2+d)の場合を考えると、2乗
した厳密な値は、2×26 +2ab×252×24 +2ac×24+2b
c×232×22 +2bd×22+2cd×2+2 となる。
【0104】一方、前述した処理では下線部のみが演算
され、本来の値よりも小さい値となる。しかし、ここで
は累積加算の結果が飽和領域に到達するか否かの判定が
行えれば良いわけであるから、前記処理を行うことによ
りシナプス係数と入力値との差の2乗をとるシナプス演
算の場合にも適用できる。
【0105】
【発明の効果】本発明を採用した場合の演算の省略効果
及びシナプス係数メモリ回路へのアクセスの低減効果を
評価した結果を図20及び21に示す。
【0106】図20は入力数が16個、シナプス係数、
入力値とも符号ビット及び絶対値部分を合わせて16ビ
ットの場合の1ニューロンに対する全シナプス結合の演
算を行った場合について、累積加算の最終値と演算の省
略率との関係を示したものである。この図より、最終値
が飽和領域境界値から離れると演算省略の効果が顕著に
現われることがわかる。また、図21は同様の演算にお
ける、累積加算の最終値とシナプス係数を何ビットアク
セスしたかの関係を示したものである。この図より、最
終値が飽和領域境界値から離れるとシナプス係数メモリ
回路へのアクセスの低減効果が顕著に現れることがわか
る。
【0107】具体的に演算省略の効果を見積ってみる。
入力値ビット列のうち“1”が占める割合を50%とし
て、入力値のビット列のうち“0”となるビットの演算
を省略することにより、演算を50%削減できる。累積
結果が飽和領域になる確率を90%、過渡領域になる確
率を10%とし、累積結果が飽和領域になる時の平均演
算省略率を図20に示す評価結果より20%と仮定すれ
ば、さらに演算量を28%に省略できる。従って、トー
タルで演算量を約14%に削減できる。また、同様にメ
モリ回路へのアクセスも、累積結果が飽和領域になる確
率を90%、過渡領域になる確率を10%とし、累積結
果が飽和領域になる時の平均メモリアクセス省略率を図
21に示す評価結果より20%と仮定すれば、メモリア
クセスを約28%に省略できる。
【0108】以上述べたように本発明によれば、演算量
の削減及びシナプス係数メモリ回路へのアクセス量の削
減が可能となり、シナプス演算の高速化及び演算に要す
る消費電力の低減が可能になる。これにより、大規模で
且つ高速動作可能なデジタルニューラルネットワーク回
路を構成することができる。
【図面の簡単な説明】
【図1】本発明の第1の実施例を示す構成図
【図2】ニューロン回路の構成図
【図3】しきい値回路の伝達特性の説明図
【図4】3層構造のニューラルネットワーク回路の構成
【図5】従来のニューラルネットワーク回路の具体的な
構成図
【図6】累積加算の初期値の設定法の説明図
【図7】飽和領域の判定動作の説明図
【図8】飽和領域の判定動作の説明図
【図9】本発明の第2の実施例を示す構成図
【図10】本発明の第3の実施例を示す構成図
【図11】図10中の1ビットシリアルシナプス演算回
路+累積回路10の詳細を示す構成図
【図12】積演算をシリアルに行う場合のようすを示す
説明図
【図13】本発明の第4の実施例を示す構成図
【図14】飽和領域の判定動作の説明図
【図15】飽和領域の判定動作の説明図
【図16】第4の実施例における演算過程の説明図
【図17】第4の実施例における演算過程の説明図
【図18】飽和領域判定の原理の説明図
【図19】本発明の第5の実施例を示す構成図
【図20】最終的な積和演算結果と演算の省略率との関
係を示すグラフ
【図21】最終的な積和演算結果とアクセスしたシナプ
ス係数値のビット数との関係を示すグラフ
【符号の説明】
1,1−1〜1−n…シナプス演算回路、2…シナプス
係数メモリ回路、3…メモリ読み出し回路、4…累積回
路、5…しきい値回路、6−1,6−2,59…比較
器、7,33…制御回路、8−1…飽和領域境界値1用
レジスタ、8−2…飽和領域境界値2用レジスタ、9…
セレクタ、10…1ビットシリアルシナプス演算回路+
累積回路、11…クロック発生回路、21…シナプス係
数レジスタ、22…入力値レジスタ、23…累積加算値
用レジスタ、24,25,26,27,38,39,4
0,41,42,43…スイッチ、28,29…EX−
OR回路、30,60…AND回路、31…1ビット全
加算器、32…Dタイプフリップフロップ回路、34…
積演算器、35,54…定数1格納用レジスタ、36…
累積加算値1用レジスタ、37…累積加算値2用レジス
タ、51…i格納用レジスタ、52…j格納用レジス
タ、53…変数格納用レジスタ、55…定数L格納用レ
ジスタ、56,57,58…加算器。

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 2進ビット列で表される多数の入力値と
    シナプス係数値との間でシナプス演算を行った後、累積
    加算し、さらにしきい値処理を行って出力値を決定する
    ニューラルネットワーク回路において、 入力値とシナプス係数値とのシナプス演算を任意のビッ
    ト間で実行するシナプス演算回路と、 シナプス係数値を格納したシナプス係数メモリ回路と、 シナプス係数メモリ回路から任意のシナプス係数値の任
    意のビットをシナプス演算回路に転送するメモリ読み出
    し回路と、 累積値が演算の進行に伴って単調増加あるいは単調減少
    となるように初期値を設定し、シナプス演算の結果を累
    積加算する累積回路と、 累積回路の出力に所定のしきい値処理を実行するしきい
    値回路と、 累積回路の出力としきい値回路の伝達特性における飽和
    領域及び過渡領域の境界値との大小関係を比較する比較
    器と、 シナプス演算を上位ビットから実行させ、累積値が飽和
    領域であることが判明した時点で演算を停止させる制御
    回路とからなることを特徴とするニューラルネットワー
    ク回路。
  2. 【請求項2】 シナプス演算回路と累積回路とを、 入力値の任意のビットとシナプス係数の任意のビットと
    の積演算を行う1ビット積演算器と、 累積加算値を格納する累積加算値用レジスタと、 1ビット積演算器の出力と累積加算値用レジスタの任意
    のビットとの加算を行い、これを累積加算値用レジスタ
    の任意のビットに格納する1ビット加算器とによって一
    体化し、 該シナプス演算回路と累積回路とを一体化した回路でシ
    ナプス演算の積演算過程で必要な加算及び累積演算に必
    要な加算を1個の加算器で実行可能とし、 さらに入力ビット値が“0”の場合にはこのビットとシ
    ナプス係数との演算を省略可能としたことを特徴とする
    請求項1記載のニューラルネットワーク回路。
  3. 【請求項3】 請求項2記載のニューラルネットワーク
    回路を用いた演算方法において、 累積加算値用レジスタを2個の切り換えスイッチと累積
    加算値を格納する2個のレジスタとから構成し、第1の
    切り換えスイッチの出力を1ビット加算器の一方に入力
    し、累積加算値を格納する2個のレジスタの出力を第1
    の切り換えスイッチに入力し、1ビット加算器の出力を
    第2の切り換えスイッチに入力し、第2の切り換えスイ
    ッチの出力を累積加算値を格納する2個のレジスタに入
    力し、さらに2個の切り換えスイッチを積演算器の出力
    で制御し、 第1の累積加算値用レジスタの初期値を「−(シナプス
    演算結果が負になる値を「負のバイアス+正の数値」と
    いう形式で表現した場合の「負のバイアス」の合計値+
    入力値とシナプス係数値の取り得る数値の最大値との積
    の絶対値)」に設定し、 第2の累積加算値用レジスタの初期値を「シナプス演算
    結果が負になる値を「負のバイアス+正の数値」という
    形式で表現した場合の「負のバイアス」の合計値」に設
    定し、 累積加算を行う際に使用するレジスタを、 シナプス係数と入力値との符号が等しく且つシナプス係
    数と入力値との絶対値の積演算結果が“1”の時及びシ
    ナプス係数と入力値との符号が異なり且つシナプス係数
    と入力値との絶対値の積演算結果が“0”の時には第2
    の累積加算値用レジスタに切り換え、 シナプス係数と入力値との符号が等しく且つシナプス係
    数と入力値との絶対値の積演算結果が“0”の時及びシ
    ナプス係数と入力値との符号が異なり且つシナプス係数
    と入力値との絶対値の積演算結果が“1”の時には第1
    の累積加算値用レジスタに切り換え、 第1及び第2の累積加算値用レジスタの出力を比較器に
    おいて飽和領域及び過渡領域の境界値と比較することに
    より、2つ以上の飽和領域の判定を同時に実行すること
    を特徴とするニューラルネットワーク回路を用いた演算
    方法。
  4. 【請求項4】 しきい値回路の伝達特性が2つの飽和領
    域を有する場合、 第1の累積加算値用レジスタの初期値を「(請求項3記
    載の第1の累積加算値用レジスタの初期値)+(過渡領
    域の下限の値)」に設定し、 第2の累積加算値用レジスタの初期値を「(請求項3記
    載の第2の累積加算値用レジスタの初期値)−(過渡領
    域の上限の値)」に設定することにより、 加算器の最上位ビットからの桁上げ信号が生じた場合に
    飽和領域であると判定して演算を停止させることを特徴
    とする請求項3記載のニューラルネットワーク回路を用
    いた演算方法。
JP6004043A 1994-01-19 1994-01-19 ニューラルネットワーク回路及びこれを用いた演算方法 Pending JPH07210533A (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP6004043A JPH07210533A (ja) 1994-01-19 1994-01-19 ニューラルネットワーク回路及びこれを用いた演算方法
US08/373,440 US5630024A (en) 1994-01-19 1995-01-17 Method and apparatus for processing using neural network with reduced calculation amount
DE69531418T DE69531418T2 (de) 1994-01-19 1995-01-18 Neuronales netzwerk mit reduzierter Berechnungsmenge
EP95100620A EP0664516B1 (en) 1994-01-19 1995-01-18 Neural network with reduced calculation amount
EP00113124A EP1033660A1 (en) 1994-01-19 1995-01-18 Method and apparatus for processing using neural network with reduced calculation amount
KR1019950000739A KR0168975B1 (ko) 1994-01-19 1995-01-18 신경망 회로, 신경망 시스템 및 이를 이용하는 연산 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP6004043A JPH07210533A (ja) 1994-01-19 1994-01-19 ニューラルネットワーク回路及びこれを用いた演算方法

Publications (1)

Publication Number Publication Date
JPH07210533A true JPH07210533A (ja) 1995-08-11

Family

ID=11573913

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6004043A Pending JPH07210533A (ja) 1994-01-19 1994-01-19 ニューラルネットワーク回路及びこれを用いた演算方法

Country Status (1)

Country Link
JP (1) JPH07210533A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0887485A (ja) * 1994-09-19 1996-04-02 Mitsui Eng & Shipbuild Co Ltd パターンマッチング装置
JPH10187648A (ja) * 1996-12-19 1998-07-21 Nec Corp ニューラルユニット演算方式およびその装置
JP2018120433A (ja) * 2017-01-25 2018-08-02 株式会社東芝 積和演算器、ネットワークユニットおよびネットワーク装置
JP2019522271A (ja) * 2016-05-26 2019-08-08 ザ ガバニング カウンシル オブ ザ ユニバーシティ オブ トロント ディープニューラルネットワークについての加速器
JP2020038655A (ja) * 2018-09-03 2020-03-12 三星電子株式会社Samsung Electronics Co.,Ltd. ニューロモーフィック装置、及びニューロモーフィック装置でマルチビットニューロモーフィック演算を処理する方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0887485A (ja) * 1994-09-19 1996-04-02 Mitsui Eng & Shipbuild Co Ltd パターンマッチング装置
JPH10187648A (ja) * 1996-12-19 1998-07-21 Nec Corp ニューラルユニット演算方式およびその装置
JP2019522271A (ja) * 2016-05-26 2019-08-08 ザ ガバニング カウンシル オブ ザ ユニバーシティ オブ トロント ディープニューラルネットワークについての加速器
JP2021144727A (ja) * 2016-05-26 2021-09-24 タータン エーアイ リミテッド ディープニューラルネットワークについての加速器
JP2018120433A (ja) * 2017-01-25 2018-08-02 株式会社東芝 積和演算器、ネットワークユニットおよびネットワーク装置
JP2020038655A (ja) * 2018-09-03 2020-03-12 三星電子株式会社Samsung Electronics Co.,Ltd. ニューロモーフィック装置、及びニューロモーフィック装置でマルチビットニューロモーフィック演算を処理する方法
US11868870B2 (en) 2018-09-03 2024-01-09 Samsung Electronics Co., Ltd. Neuromorphic method and apparatus with multi-bit neuromorphic operation

Similar Documents

Publication Publication Date Title
TWI701612B (zh) 用於神經網路中激勵函數的電路系統及其處理方法
CN108364064B (zh) 操作神经网络的方法、设备及系统
CN112162723B (zh) 一种量子减法运算方法、装置、电子装置及存储介质
JP2019139338A (ja) 情報処理装置、情報処理方法、およびプログラム
US5630024A (en) Method and apparatus for processing using neural network with reduced calculation amount
JPH08297716A (ja) ニューラル・ネットワーク用の適応型重み調整回路
CN111008003B (zh) 数据处理器、方法、芯片及电子设备
KR950001601B1 (ko) 뉴-럴 네트워크 회로
CN110362293B (zh) 乘法器、数据处理方法、芯片及电子设备
CN113741858B (zh) 存内乘加计算方法、装置、芯片和计算设备
JPH07210533A (ja) ニューラルネットワーク回路及びこれを用いた演算方法
CN111383157A (zh) 图像处理方法、装置、车载运算平台、电子设备及系统
CN111258544B (zh) 乘法器、数据处理方法、芯片及电子设备
CN113031912A (zh) 乘法器、数据处理方法、装置及芯片
CN112561050A (zh) 一种神经网络模型训练方法及装置
JP2020098469A (ja) 演算処理装置および演算処理装置の制御方法
US20220075601A1 (en) In-memory computing method and in-memory computing apparatus
JP2022045335A (ja) メモリデバイス及びその動作方法
CN209879493U (zh) 乘法器
JPH0830572A (ja) ニューラルネットワーク回路及びこれを用いた演算方法
CN115809707A (zh) 量子比较运算方法、装置、电子装置及基础算术组件
CN113031916A (zh) 乘法器、数据处理方法、装置及芯片
TWI775402B (zh) 資料處理電路及故障減輕方法
TWI844108B (zh) 積體電路及操作方法
CN114239818B (zh) 基于tcam和lut的存内计算架构神经网络加速器