(57)【特許請求の範囲】
【請求項１】
複数の被演算値を降順にソートし、当該複数の被演算値のうち、当該ソートされた順で上位の一部のみを出力するソーティング手段と、
前記ソーティング手段よりソートされた順に出力される各被演算値に対して、それぞれに対応する演算値を順次乗じる乗算手段と、
前記乗算手段による乗算結果の累算和を算出する累算和手段とを有することを特徴とする積和演算回路。
【請求項２】
前記ソーティング手段は、前記複数の被演算値のうち所定値以上の被演算値を出力し、該所定値未満の被演算値の出力を省略することを特徴とする請求項１に記載の積和演算回路。
【請求項３】
前記ソーティング手段は、前記複数の被演算値のうち所定値以上の被演算値を出力し、該所定値未満の被演算値に代えて一定値を出力することを特徴とする請求項１に記載の積和演算回路。
【請求項４】
前記ソーティング手段は、前記複数の被演算値のうち降順で所定の割合を占める被演算値を出力し、該所定の割合を占める被演算値以外の被演算値の出力を省略することを特徴とする請求項１に記載の積和演算回路。
【請求項５】
前記ソーティング手段は、前記複数の被演算値のうち降順で所定の割合を占める被演算値を出力し、該所定の割合を占める被演算値以外の被演算値に代えて一定値を出力することを特徴とする請求項１に記載の積和演算回路。
【請求項６】
前記乗算手段及び累算和手段が、それぞれ乗算及び累算和算出を行なう複数個の演算ブロックを有することを特徴とする請求項１〜５に記載の積和演算回路。
【請求項７】
前記複数個の演算ブロックが並列に演算を行なうことを特徴とする請求項６に記載の積和演算回路。
【請求項８】
前記複数の被演算値がラベルを有し、各被演算値をラベルに対応する演算ブロックで乗算することを特徴とする請求項６または７に記載の積和演算回路。
【請求項９】
スイッチにより各被演算値を入力する経路を切り替えて、当該被演算値をラベルに対応する演算ブロックに入力することを特徴とする請求項８に記載の積和演算回路。
【請求項１０】
前記乗算手段は、各被演算値に対して荷重値を掛ける重み付け演算を行なうことを特徴とする請求項１〜９に記載の積和演算回路。
【請求項１１】
前記複数の被演算値がデジタル信号であり、前記ソーティング手段が連想メモリを用いて当該複数の被演算値を降順に出力することを特徴とする請求項１〜１０に記載の積和演算回路。
【請求項１２】
前記ソーティング手段の出力に応じて、時間に対して単調に増加または減少する電圧信号を前記乗算手段に出力する信号出力手段を有することを特徴とする請求項１〜１１に記載の積和演算回路。
【請求項１３】
前記電圧信号を所定係数倍する手段を有することを特徴とする請求項１２に記載の積和演算回路。
【請求項１４】
前記複数の被演算値がアナログ信号であり、前記ソーティング手段がＷｉｎｎｅｒ−Ｔａｋｅ−Ａｌｌ回路を用いて当該複数の被演算値を降順または昇順に出力することを特徴とする請求項１〜１０に記載の積和演算回路。
【請求項１５】
前記乗算手段が、被演算値に相当する電圧値を、電圧制御電流源及び電圧制御抵抗素子の制御電圧として入力し、乗算結果を電圧値として出力することを特徴とする請求項１〜１４に記載の積和演算回路。
【請求項１６】
複数段のニューロン素子を有するニューラルネットワークであって、各ニューロン素子が請求項１〜１４に記載の積和演算回路を備え、当該積和演算回路が、
前段のニューロン素子の出力値を前記複数の被演算値として入力し、
前記乗算手段により各被演算値に対応する演算値としてシナプス荷重を乗じ、
前記累算和として内部状態値を算出することを特徴とするニューラルネットワーク。
【請求項１７】
積和演算回路により実行される積和演算方法であって、
ソーティング手段が、複数の被演算値を降順にソートし、当該複数の被演算値のうち、当該ソートされた順で上位の一部のみを出力するソーティング工程と、
乗算手段が、前記ソーティング工程によりソートされた順に出力される各被演算値に対して、それぞれに対応する演算値を順次乗じる乗算工程と、
累算和手段が、前記乗算工程による乗算結果の累算和を算出する累算和工程とを有することを特徴とする積和演算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、乗算と累算を並列に行う積和演算回路及びその方法に関するものである。
【背景技術】
【０００２】
現在、コンピュータは大きな進展を見せ、世の中の様々な場面で使用されている。しかしながら、これらノイマン型と呼ばれるコンピュータは、その処理方式自体の特性により、ヒトが容易に行うことができる処理（リアルタイムでのヒトの顔の認識等）を非常に不得意としている。
【０００３】
これに対して、脳の情報処理様式を真似た演算処理モデルである、ニューラルネットワークの研究が行われている。
【０００４】
ニューラルネットワークを構成するニューロンのモデルとしては、ニューロンに相当するユニットに対して、他の複数のユニット（ニューロン）の出力値をシナプス荷重値で重み付けした乗算値が入力され、その入力値の総和値をさらに非線形変換した値を出力値とするものが一般的である。
【０００５】
すなわち、一般的なニューラルネットワークにおいては、各ユニット、及びユニット間における積和演算と非線形変換により、所望の処理が実現される。
【０００６】
このニューロンモデルを用いたニューラルネットワークアーキテクチャとしては、これまでに、積和演算を実行するユニットを相互に結合した連想メモリや、同じく積和演算を実行するユニットを階層的に結合したパターン認識モデル等が提案されている。
【０００７】
ここでニューラルネットワークの実用化を狙い、集積回路化を図る際には、前記の積和演算をより効率的に実行することが必要となり、特に演算の実行速度や消費電力の面でその必要性が顕著となる。
【０００８】
前記のように積和演算を実行するニューロンモデル、及びニューラルネットワークアーキテクチャに関する発明が、各種提案されており、積和演算を行い階層的なニューロコンピュータを構成する方法も提案されている（例えば、特許文献１を参照）。
【特許文献１】特開平05−210651号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
上記においては、積和演算部に入力される被演算値がランダムに変化するために、そのことに起因する電力消費が存在していた。
【００１０】
また、積和演算処理部において全ての被演算値の演算が行なわれることから、例えば、ニューラルネットワークの演算動作としては影響の小さい値についても演算処理を行なうこととなり、演算速度・消費電力の点からより一層の改善が望まれていた。
【課題を解決するための手段】
【００１１】
そこで、本発明の目的は、積和演算における被演算値の演算順序や演算範囲を制御することで、低消費電力かつ高速な積和演算回路及びその方法を提供することにある。
【００１２】
上記目的を達成するため、本発明によれば、積和演算回路に、複数の被演算値を降順にソートし、当該複数の被演算値のうち、当該ソートされた順で上位の一部のみを出力するソーティング手段と、前記ソーティング手段よりソートされた順に出力される各被演算値に対して、それぞれに対応する演算値を順次乗じる乗算手段と、前記乗算手段による乗算結果の累算和を算出する累算和手段とを備える。
【００１３】
また、本発明の他の態様によれば、積和演算回路により実行される積和演算方法に、ソーティング手段が、複数の被演算値を降順にソートし、当該複数の被演算値のうち、当該ソートされた順で上位の一部のみを出力するソーティング工程と、乗算手段が、前記ソーティング工程によりソートされた順に出力される各被演算値に対して、それぞれに対応する演算値を順次乗じる乗算工程と、累算和手段が、前記乗算工程による乗算結果の累算和を算出する累算和工程とを備える。
【発明の効果】
【００１４】
以上説明したように、本発明によれば、低消費電力かつ高速な積和演算回路が実現できるという効果がある。
【発明を実施するための最良の形態】
【００１５】
以下、添付図面を参照しながら、本発明の実施形態を説明する。
【００１６】
（第一の実施形態）
図１は、本実施形態での積和演算方法を実行するための処理ブロックの構成図を示す。
【００１７】
図１に示すように、本実施形態における積和演算方法は、複数個の演算ブロック1と、被演算値Xiを保持する入力値保持ブロック2と、演算値Wiを保持する荷重値保持ブロック3と、被演算値Xiを値の大きい順に出力するソーティングブロック4と、被演算値Xiのラベルに対応する演算ブロックへ被演算値Xi、演算値Wiを入力するためのスイッチブロック5とから構成される。
【００１８】
なお、前記被演算値Xiと被演算値Wiのiは、それぞれ異なるXとWを表す添え字であり、1,2,3・・・の自然数をとる（以下同様）。
【００１９】
図２は、演算ブロック1をデジタル回路で構成したデジタル演算回路を示す。図２に示すように、本実施形態におけるデジタル演算回路は、３つのレジスタ6a、6b、6cと、乗算器7と、加減算器8とから構成される。
【００２０】
図３は、入力値保持ブロック2とソーティングブロック4の機能を連想メモリ回路で構成したものを示す。
【００２１】
以上説明した図を用いて、本実施形態における積和演算回路による演算処理工程を説明する。
【００２２】
まず図１に示すように、複数の被演算値Xiは入力保持ブロック2に保持され、さらにソーティングブロック4により、値の大きいもの順にソートされ出力される。
【００２３】
ここで本実施形態においては、値が等しい被演算値Xiがある場合には、値が等しい被演算値間での出力の順番は任意としているが、事前に適当な順番を設定しておいても良い。
【００２４】
続いて、被演算値Xiが有するラベルがソーティングブロック4からスイッチブロック5に入力され、そのラベルに応じてスイッチブロック5がスイッチングを行い、ソーティングブロック4から出力された被演算値Xiをそのラベルに対応する演算ブロックに入力する。なお、被演算値Xiのラベルに対応する演算ブロックの数は、１つの場合も複数の場合もあり得るが、本実施形態では複数の場合を説明する。
【００２５】
ここで、本実施形態においては、以上の入力保持ブロック2とソーティングブロック4で実行される処理は、図３に示す連想メモリ回路を用いて実現する。この連想メモリ回路には、被演算値Xiの値と、それぞれの被演算値Xiが有するラベルと検出フラグとが保持されている。
【００２６】
連想メモリ回路は、入力された検索値と、保持しているデータを比較し、両者の値が一致するものを出力する機能を有する。この連想メモリ回路の一般的な機能を利用し、検出フラグが立っていない被演算値Xiの中から値の大きな順に、１つずつその値とラベルを読み出し、読み出した値に検出フラグを立てることにより、前記の入力保持ブロックとソーティングブロックで実行される処理を実現することが可能となる。
【００２７】
すなわち連想メモリ回路に対して、検索値として被演算値Xiの最大値に相当する値から大きいもの順に一つずつ入力し、値が一致するデータを順に読み出すことにより、ソーティング機能を実現することが可能となる（逆に、被演算値Xiの値の小さなもの順に読み出すことも可能である。）。
【００２８】
なお本実施形態では、前記の通り入力保持ブロック2とソーティングブロック4の機能を連想メモリ回路で実現したが、具体的な回路構成は本発明の主眼とするところではなく、同様の処理が可能なものであれば、その他の処理構成を用いても良い。
【００２９】
一方、荷重値保持ブロック3から出力される複数の演算値Wiは、それぞれ所定の演算ブロックに入力される。ここで本実施形態においては、演算値Wiについても、被演算値Xiと同様に、被演算値Xiが有するラベルに応じてスイッチブロック5においてスイッチングが行なわれ、ラベルによって決定される所定の演算ブロックに入力される。
【００３０】
なお本実施形態とは異なり、被演算値Wiが入力される演算ブロックが、被演算値Xiのラベルにはよらずに、事前に設定されている手法を用いることも可能である。
【００３１】
また、各演算ブロックに入力される被演算値Wiの値は、演算毎に同一の場合も異なる場合もある。
【００３２】
本実施形態においては、荷重値保持ブロック3は一般的なSRAM回路によって構成しても良いが、同様の処理が可能なものであれば、その他の処理構成を用いても良い。
【００３３】
以上の処理を実行することにより、所定の演算ブロックに被演算値Xiと演算値Wiが入力される。
【００３４】
本実施形態においては、所定の演算ブロック（演算処理が実行される演算ブロック）は、図１中の演算ブロック３〜５としている。
【００３５】
続いて、被演算値Xiと演算値Wiの両者が入力された前記所定の演算ブロックにおいて行なわれる演算処理について説明する。なお、被演算値Xiが入力されない演算ブロックでは演算処理は実行されない。
【００３６】
図２に示す演算ブロックにおいて、被演算値Xiと演算値Wiは、一旦レジスタ6aとレジスタ6bとに保持された後、乗算器7によってXi×Wiが演算される。
【００３７】
前記Xi×Wiの乗算結果は、続いて加減算器8に入力され、レジスタ６cに保持されている結果と加減算した後、レジスタ6cに保持される。
【００３８】
以上の処理を繰り返すことにより、複数のXiとWiとの乗算結果の累算値がレジスタ6cに保持され、所定数の累算が完了すると累算値が出力される。
【００３９】
このように、レジスタ6aに保持される被演算値Xiは、ソーティングブロック4における処理によって値の大きな順に入力され、かつ同じ値を持つものは連続して入力されるため、被演算値Xiがランダムに入力される場合よりもレジスタのデータ遷移頻度が少なくなり、データ遷移により生ずる電力消費を削減することが可能となる。
【００４０】
なお本実施形態においては、ソーティングブロック4から演算ブロック1に対して被演算値Xi自体を入力したが、連想メモリにおいて被演算値Xiを値の大きいもの順に検索していく際に、Xiの値が変化したときのみ演算ブロック内のレジスタ6aに保持された値を変更するようにしても構わない。
【００４１】
この場合、ソーティングブロック4から演算ブロック1に対して、被演算値Xi自体では無く、レジスタ6aの値を適当に更新するよう指示するフラグ信号が入力される。
【００４２】
また本実施形態においては、ソーティングブロック4は被演算値Xiを値の大きいもの順にソートしたが、値の小さいもの順にソートした場合でも、前記と同様の効果がある。
【００４３】
また本実施形態においては、連想メモリからの出力を直接演算ブロック1及びスイッチブロック5に入力しているが、連想メモリから値の大きいもの順に出力される被演算値Xiのデータを一旦SRAM等のメモリに入力・保持し、更にSRAMから演算ブロック1及びスイッチブロック5へ入力する構成としても良い。
【００４４】
この場合は、メモリに被演算値のラベルと値を保持しても良いし、もしくは値の変わりに、上述したような大きいもの順に並んだ被演算値Xiの値が変化する位置を示すフラグを保持しても良い。SRAMにフラグを保持する場合の構成例を図4に示す。
【００４５】
続いて本実施形態において、入力値保持ブロック2に対して、被演算値XiがPWM（Pulse Width Modulation）信号として入力される場合に関して、図５を用いて説明を行なう。ここで、PWM信号の特性について簡単に説明しておく。PWM信号は、情報をパルス波形の幅に持たせた変調方式であり、ノイズに強いデジタル的な特性（電圧方向にＨｉｇｈレベルとＬｏｗレベルの２値の情報を有するという特性）と、連続情報を１パルスで表現することができるアナログ的な特性（時間方向に連続情報を有するという特性）の両者を併せ持つものである。
【００４６】
図５の積和演算回路は、入力保持ブロック2の入力部にパルス幅デジタル変換ブロック9を有すること以外は、前述した構成（図１）と全く同様である。
【００４７】
すなわち、PWM信号として入力される被演算値Xiは、パルス幅デジタル変換ブロック9によってデジタル信号に変換された後に入力値保持ブロック2に保持される。
【００４８】
なお、入力されたPWM信号をデジタル値に変換して出力する機能を有するパルス幅デジタル変換ブロックとしては、例えば、入力されたPWM信号のパルス幅をカウンタによりカウントし、カウント数をデジタル値として出力するものなどがある（鈴木八十二、吉田正廣著、「パルス・デジタル回路入門」、日刊工業新聞社、２００１年７月２６日発行、p.２２５〜p.２３２）。それ以外にも、パルス幅デジタル変換ブロックの機能を実現する構成は多数あるが、パルス幅デジタル変換ブロック自体の構成・処理手順は本発明の主眼とするところではないため、詳細な説明は省略する。
【００４９】
（第二の実施形態）
第二の実施形態では、積和演算回路をアナログ回路を用いて実現する。本実施形態における積和演算回路のブロック構成は、第一の実施形態と同様に図１によって示される。
【００５０】
図６は、演算ブロック1をアナログ回路で構成したアナログ演算回路を示す。図６に示すように、本実施形態におけるアナログ演算回路は、アナログ乗算器17と、キャパシタ18と、出力バッファ19とから構成される。
【００５１】
図７は、入力値保持ブロック2をアナログメモリで構成したものを示す。ここで、本実施形態においてはアナログメモリをキャパシタ20と出力バッファ21で構成することを想定しているが、同様の機能を有するものであればその他の回路を用いても構わない。
【００５２】
図８は、ソーティングブロック4をWTA(Winner-Take-All)回路22で構成したものを示す。
【００５３】
以上説明した図を用いて、本実施形態の積和演算方法における処理過程を説明する。
【００５４】
まず図１に示す装置全体の処理に関しては、第一の実施形態と同様であるため説明を省略し、以下では第一の実施形態と異なる入力保持ブロック2、荷重保持ブロック3、ソーティングブロック4及び演算ブロック1における各ブロックの処理に関して説明を行なう。なお本実施形態においては、第一の実施形態で説明したパルス幅デジタル変換ブロックを有するケースは除外する。
【００５５】
まず本実施形態における入力保持ブロック2は、図７に示すように、キャパシタ20と出力バッファ21により構成されており、被演算値Xiの値をキャパシタ20に蓄積された電圧値として保持している。
【００５６】
入力保持ブロック2に保持された被演算値Xiは、ソーティングブロック4により値の大きいもの順にスイッチブロック5に入力される。ここで、ソーティングブロック4は、本実施形態においては図に示すようにWTA回路22を用いて実現する。WTA回路とは、Winner-Take-All回路の略称であり、入力値の中で最大の値を有するものを出力値とする機能を有する。（逆に、最小の値を有するものを出力値とすることも可能である。）
そこで、WTA回路22に被演算値Xiを入力した場合、まずその中で最大の値を有する被演算値Xiが出力される。次に、前回出力された被演算値Xiを除いて再度被演算値Xi群を入力すると2番目に大きな値を有する被演算値Xiが出力される。以上の動作を繰り返すことにより、被演算値が値の大きなもの順に出力され、ソーティング動作が実行される。
【００５７】
ここで本実施形態においては、値が等しい被演算値Xiがある場合には、値が等しい被演算値間での出力の順番は任意とするが、事前に適当な順番を設定しておいても良い。
【００５８】
なおこの際、各被演算値が有するラベルも同時に保持されるが、その保持回路はデジタルメモリを用いても良いし、同様の機能を実現するアナログメモリを使用しても良い。
【００５９】
また、本実施形態ではソーティングブロック4としてアナログ回路を使用しているが、第一の実施形態で用いた様に連想メモリを使用しても良い。なおこの場合、連想メモリの出力は、D/A変換された後に演算ブロック1に入力される。ここで、D/A変換を行なうD/A変換回路としては、デジタル値をアナログ値に変換する機能を有するものであれば、どのような構成の回路であっても構わない。
【００６０】
なお上述したソーティングブロック4の具体的な回路構成は、本発明の主眼とするところではなく、同様の機能を実現するものであれば、その他の回路構成を用いても構わない。
【００６１】
続いて、荷重保持ブロック3について説明する。荷重保持ブロック3は、図９に示すように、入力保持ブロック2と同様にキャパシタ37と出力バッファ38により構成されており、被演算値Wiの値をキャパシタ37に蓄積された電圧値として保持している。
【００６２】
また荷重保持ブロック3に関しては、デジタルメモリ（例えばSRAM）に保持された被演算値Wiの値をD/A変換してから、図９に示すような荷重保持ブロック3にアナログ値として保持するものであっても構わない。
【００６３】
この場合のD/A変換回路は、前述した、本実施形態において連想メモリを使用する場合におけるD/A変換回路と同様に、デジタル値をアナログ値に変換する機能を有するものであれば、どのような構成の回路であっても構わない。
【００６４】
続いて、被演算値Xiと演算値Wiがアナログ電圧値として入力される所定の演算ブロック1において行なわれる演算処理について説明する。本実施形態における演算ブロック1は、図６に示すように、アナログ演算回路として、アナログ乗算器17とキャパシタ18と出力バッファ19とから構成される。
【００６５】
ここで、被演算値Xiと演算値Wiはアナログ電圧としてアナログ乗算器17に入力され、Xi×Wiが演算される。なお、各演算ブロックに入力される被演算値Wiの値は、演算毎に同一の場合も異なる場合もある。続いてXi×Wiの乗算結果は電荷量で表現され、キャパシタ18に追加蓄積される。
【００６６】
ここで、本実施形態ではアナログ乗算器17による乗算結果は、電荷量として出力されることを想定しているが、電圧値として出力される方法などその他の出力方法であっても同様の機能を実現できるものであれば構わない。
【００６７】
以上の処理を繰り返すことにより、複数のXiとWiとの乗算結果の累算値がキャパシタ18に保持され、所定の累算が完了すると出力バッファ19を介して累算値が出力される。
【００６８】
なお、デジタル値とアナログ値の違いはあるが、被演算値Xiに対応するアナログ電圧値が、被演算値Xiのラベルに対応してスイッチブロックを切り替えることにより、所定の演算ブロックに入力されることは第一の実施形態と同様である。
【００６９】
また、被演算値Xiが入力されない演算ブロックでは演算処理が行なわれないのも第一の実施形態と同様である。
【００７０】
また本実施形態においては、被演算値Wiに相当するアナログ電圧値は、被演算値Xiと同様に、被演算値Xiが有するラベルに応じてスイッチブロックにおいてスイッチングが行なわれ、ラベルによって決定される所定の演算ブロックに入力されるが、本実施形態とは異なる手法として、被演算値Wiに相当するアナログ電圧値が入力される所定の演算ブロックが、被演算値Xiのラベルにはよらず事前に設定されている手法を用いることも可能であるのも、デジタル値とアナログ値の違いはあるが、第一の実施形態と同様である。
【００７１】
このように、演算ブロック1にアナログ電圧として入力される被演算値Xiは、ソーティングブロック4によって値が大きいもの順に入力され、かつ同じ値を持つものは連続して入力されるため、被演算値Xiがランダムに入力される場合よりも電圧変動が小さくなり、電圧変動により生ずるタイムラグ及び電力消費を削減することが可能となる。
【００７２】
なお本実施形態においては、ソーティングブロックは被演算値Xiを値の大きいもの順にソートしたが、値の小さいもの順にソートした場合にも、前記と同様の効果がある。
【００７３】
（第三の実施形態）
本実施形態での積和演算回路のブロック構成は、図１０によって示される。
【００７４】
図１０の構成において、ソーティングブロック4の後段には、メモリ回路43が接続され、更にメモリ回路43の後段にランプ生成回路44が接続されており、ランプ生成回路44の出力がスイッチブロック5に入力されている。本実施形態におけるメモリ回路43はSRAMにより構成される。また、入力値保持ブロック2とソーティングブロック4は、第一の実施形態と同様に連想メモリ回路で構成されるものとする。
【００７５】
図１１は、演算ブロック1をアナログ回路で構成したアナログ演算回路を示す。図１１に示すように、本実施形態におけるアナログ演算回路は、アナログ乗算器45と、キャパシタ46と、出力バッファ47とから構成される。図１２は、ランプ生成回路44の構成を示す。
【００７６】
以上説明した図を用いて、本実施形態における積和演算方法の処理過程について説明する。
【００７７】
前記連想メモリ回路には、被演算値Xiの値と、それぞれの被演算値Xiが有するラベルが保持されている。これに対して、連想メモリ回路の一般的な機能として、値の大きなもの順に被演算値Xiを検索していき、そのラベルを出力する。
【００７８】
また同時に、被演算値Xiを値が大きいもの順に検索する際の検索値に関して、その検索値を1単位減らす時のみ、パルス信号のフラグを出力する（本実施形態においては、フラグ＝１を出力する）。
【００７９】
なお、本実施形態とは別の手法として、被演算値Xiを値が小さいもの順に検索する際の検索値に関して、その検索値を1単位増やす時のみ、パルス信号のフラグを出力する手法も可能である。
【００８０】
図１０に示すように、前記ラベルとフラグは、それぞれ対応するものが、検索された順番に（つまり値の大きいもの順に）後段のSRAMに入力され保持される。続いてSRAMは、前記ラベルとフラグを保持している順に（つまり値の大きいもの順に）出力し、ラベルはスイッチブロック5に入力され、フラグはランプ生成回路44に入力される。
【００８１】
次に、ランプ生成回路44について説明を行なう。ランプ生成回路44は、図１２に示すように、所定の電圧値Vbにバイアスされた電圧制御電流源48とキャパシタ50とスイッチ49とバッファ51により構成される。
【００８２】
ここで、前記フラグがランプ生成回路44に入力され、スイッチ49をオンにすると、電圧制御電流源48から一定の電流が流れてキャパシタ50に蓄積される。前記フラグは連想メモリにおける検索値が１単位減る時のみ１になるため、スイッチ49がオンになるのは、検索値が１単位減る時のみである。
【００８３】
従って、ランプ生成回路44におけるノードの電圧値は図１２の波形のように変化する。すなわち、被演算値Xiの値の大きいもの順に対応する、単調に増加する電圧値が生成される（ここで「単調」とは、時間に対して一定値を示す場合を含んでいる。以下同様）。
【００８４】
なお、ここで被演算値Xiの値の大きいもの順に対応した電圧値として、単調に増加する電圧値を設定したが、後述するアナログ乗算器によっては、単調に減少する電圧値を設定しても良い。
【００８５】
この場合は、ランプ生成回路44において、初期状態として所定の電荷を蓄積したキャパシタ50から、電圧制御電流源によって電荷を引き抜くことにより実現することができる。
【００８６】
続いて、ランプ生成回路44で生成された単調に増加する電圧値は、スイッチブロック5に入力される。スイッチブロック5は、入力された前記ラベルに対応してスイッチングを行い、ラベルによって決定される所定の演算ブロック1に対して、単調に増加する電圧値を入力する。
【００８７】
ここで、演算ブロック1に関して考えると、その演算ブロック1が、ラベルによって決定される所定の演算ブロックに一致する場合のみ、単調に増加する電圧値が入力されることとなり、またメモリ回路43から出力されるラベルが変化して、ラベルによって決定される所定の演算ブロックに一致しなくなった場合は、スイッチングにより、単調に増加する電圧値は入力されなくなる。
【００８８】
つまり、演算ブロック1においては、ラベルの出力タイミングによって単調に増加する電圧値をサンプリングすることになり、これはすなわちラベルによるスイッチングのタイミングで被乗算値Xiに対応する適当な電圧値が入力されることを意味する。
【００８９】
なお、被演算値Xiが入力されない演算ブロック1では演算処理が行なわれないのは第二の実施形態と同様である。また、荷重保持ブロック3における処理工程は、第二の実施形態と同様であるため、説明を省略する。
【００９０】
続いて、アナログ演算回路においては、図１１に示す通り、アナログ乗算器45に入力された被演算値Xiと演算値Wiとの乗算を行い、キャパシタ46に演算結果に相当する電荷が蓄積される。なお、アナログ演算回路における処理は第二の実施形態と同様であるため、説明を省略する。
【００９１】
なお本実施形態においては、被演算値Xiが入力値保持ブロック2に対してPWM信号として入力されるものであっても構わない。この場合、PWM信号の入力処理工程は第一の実施形態と同様となるので、説明を省略する。
【００９２】
（第四の実施形態）
本実施形態では、アナログ演算回路として、第二、第三の実施形態とは別の回路構成を用いたものに関して説明を行なう。なお、アナログ演算回路以外に関しては、第二、第三の実施形態と同様である。
【００９３】
図１３に本実施形態で説明するアナログ演算回路を示す。図１３に示すように、本実施形態のアナログ演算回路は、電圧制御電流源52と電圧制御抵抗素子53とキャパシタ55により構成され、被演算値Xiとして時間に関して単調に増加する電圧値が制御電圧として電圧制御電流源52に入力される。
【００９４】
ここで入力される時間に関して単調に増加する電圧値は、図１５に示すように、被演算値Xiに相当する電圧値をWTA回路56によって値の大きいもの順に出力する際に、連続したアナログ電圧値として出力することにより生成される。
【００９５】
なお、時間に関して単調に増加する電圧値を第三の実施形態と同様にメモリ回路とランプ生成回路を用いて生成しても構わない。この場合は、入力値保持ブロック及びソーティングブロックは、第三の実施形態と同様デジタル回路で構成される。
【００９６】
またこの場合は、被演算値Xiが入力値保持ブロックに対してPWM信号として入力されるものであっても構わない。この場合に関しては、PWM信号の入力処理工程は第一の実施形態と同様として、説明を省略する。
【００９７】
続いて図１４に示すように、WTA回路56（ソーティングブロック4）から出力された時間に関して単調に増加する電圧値は、スイッチブロック5を経て演算ブロック1に入力される。
【００９８】
ここでアナログ演算回路においては、ある時間タイミングで単調に増加する電圧値を参照することにより、第二、第三の実施形態で説明したのと同様に、被演算値Xiに相当する電圧値が、大きいもの順に、ラベルに対応するアナログ演算回路の電圧制御電流源52の制御電圧として入力される。なお電圧制御電流源52は、MOSトランジスタの飽和特性を利用して構成しても良いし、また差動型構成にしても良い。
【００９９】
続いてアナログ演算回路の電圧制御抵抗素子53に対して、被演算値Wiに相当するアナログ電圧値を制御電圧として入力する。ここで電圧制御抵抗素子53は、入力されたアナログ電圧値に応じて所定の抵抗値Rを示す。なお電圧制御抵抗素子53は、MOSトランジスタの線形特性を利用して構成しても良いし、また差動型構成にしても良い。
【０１００】
続いて、所定の演算タイミングで参照された被演算値Xiに相当するアナログ電圧値で決定される電圧制御電流源52の電流Iが、被演算値Wiに相当するアナログ電圧値で決定される電圧制御抵抗素子53（この時の抵抗値をRとする）を流れることにより、Xi×Wiの演算結果が、図１３中のノードにおいて、I×Rの電圧値として観察される。
【０１０１】
ノードの電圧は、さらに制御電圧として電圧制御電流源54に入力されることで、キャパシタにI×Rによって決定される電流iが流れる。
【０１０２】
なお電圧制御電流源54は、MOSトランジスタの飽和特性を利用して構成しても良いし、また差動型構成にしても良い。
【０１０３】
ここで、スイッチブロック5のスイッチング間隔を一定時間に設定しておくことで、I×R×（スイッチング間隔）の電荷をキャパシタ55に蓄積することができる。
【０１０４】
以上の演算動作を繰り返すことにより、累算結果が電荷量としてキャパシタ55に保持される。
【０１０５】
このようにして、第二、第三の実施形態に示したものと同様の演算を行なう事ができる。
【０１０６】
なお、本実施形態においては被演算値Xiに相当するアナログ電圧を時間に対して単調に増加する電圧値としたが、演算目的に応じて、時間に対して単調に減少する電圧値としても良い。
【０１０７】
また、被演算値Xiに対応するアナログ電圧値が、被演算値Xiのラベルに対応してスイッチブロック5を切り替えることにより、所定の演算ブロックに入力されることは第二、第三の実施形態と同様である。また、被演算値Xiが入力されない演算ブロック1では演算処理が行なわれないのも第二、第三の実施形態と同様である。
【０１０８】
また、本実施形態においては、被演算値Wiに相当するアナログ電圧値は、被演算値Xiと同様に、被演算値Xiが有するラベルに応じてスイッチブロック5においてスイッチングが行なわれ、ラベルによって決定される所定の演算ブロック1に入力されるが、本実施形態とは異なる手法として、被演算値Wiに相当するアナログ電圧値が入力される所定の演算ブロックが、被演算値Xiのラベルにはよらず事前に設定されている手法を用いることも可能であるのも、第二、第三の実施形態と同様である。
【０１０９】
（第五の実施形態）
本実施形態の構成を図１６に示す。本実施形態は、第三または第四の実施形態で説明した、時間に関して単調に増加するアナログ電圧値を係数Ki倍することで、被演算値Xiに所定の係数Kiを掛け合わせた演算を行なうことが可能な点が、第三または第四の実施形態と異なっている。
【０１１０】
従って本実施形態においては、第三または第四の実施形態と異なる点についてのみ説明を行い、その他に関しては第三または第四の実施形態と同様として説明を省略する。
【０１１１】
すなわち図１６に示すように、単調に増加するアナログ電圧値が係数Ki倍されることは、所定の演算タイミングで参照される電圧値（つまり被演算値Xi）に関して、所定の係数Kiが掛け合わせられていることを意味する。
【０１１２】
従って、演算ブロック1に入力する単調に増加するアナログ電圧値を係数Ki倍することで、Ki×Xi×Wiの3項の乗算を演算することが可能となる。また、図１６に示すように、それぞれ異なる値の係数Kiを掛けた単調に増加するアナログ電圧値を並列に入力することにより、それぞれの演算ブロック1において異なる３項の乗算を並列に演算することが可能となる。
【０１１３】
なお、それぞれの単調に増加するアナログ電圧値に対する係数Kiを変化させるためには、ソーティングブロック4（WTA回路またはランプ生成回路）の後段にそれぞれのKiの値に対応する電圧増幅器57を置くことで実現される。図１６では、WTA回路の後段に電圧増幅器57を置いた例を示している。また、ランプ生成回路の後段に電圧増幅器57を置いた場合は、図１０においてランプ生成回路44から出力される単調に増加するアナログ電圧値に対して、図１０と同様にそれぞれのKiの値に対応する電圧増幅器57を置くことで実現される。
【０１１４】
また、本実施形態においては単調に増加するアナログ電圧値を用いた場合について説明を行なったが、単調に減少するアナログ電圧値を用いた場合も同様の演算が可能である。なお、被演算値Xi×係数Kiに対応する単調に増加するアナログ電圧値が、被演算値Xiのラベルに対応してスイッチブロック5を切り替えることにより、所定の演算ブロックに入力されることは第三、第四の実施形態と同様である。
【０１１５】
また、本実施形態においては、被演算値Wiに相当するアナログ電圧値は、被演算値Xiと同様に、被演算値Xiが有するラベルに応じてスイッチブロック5においてスイッチングが行なわれ、ラベルによって決定される所定の演算ブロック1に入力されるが、本実施形態とは異なる手法として、被演算値Wiに相当するアナログ電圧値が入力される所定の演算ブロックが、被演算値Xiのラベルにはよらず事前に設定されている手法を用いることも可能であるのも、第三、第四の実施形態と同様である。
【０１１６】
また本実施形態において、被演算値Xiが入力値保持ブロック2に対してPWM信号として入力される場合に関しては、第三、第四の実施形態と同様である。
【０１１７】
（第六の実施形態）
第六の実施形態を図１７及び図１８を参照して説明する。
【０１１８】
本実施形態は、第三または第四の実施形態で説明した、時間に関して単調に増加するアナログ電圧値を係数Ki倍することで、被演算値Xiに所定の係数Kiを掛け合わせた演算を行なうことが可能な点が、第三または第四の実施形態と異なっている。従って本実施形態においては、第三または第四の実施形態と異なる点についてのみ説明を行い、その他に関しては第三または第四の実施形態と同様として説明を省略する。
【０１１９】
図１７において、被演算値Xiを大きいもの順にソートするためには、第一の実施形態と同様にソーティングブロック4として、連想メモリが用いられている。また、連想メモリの後段には、被演算値Xiに関する同値判定ブロック58が接続されている。同値判定ブロック58は、内部にレジスタ等のメモリ機能を有しており、連想メモリから前回出力された被演算値Xiの値を記憶している。
【０１２０】
ここで連想メモリから出力された次の被演算値Xi’が、同値判定ブロック58に入力されると、同値判定ブロック58においては、今回入力された被演算値Xi’と前回入力された被演算値Xiの値が比較され、両者の値が異なる場合には後述するランプ生成回路60のスイッチをオンにする検出信号を出力する。なお、両者の値が等しい際には、検出信号を出力しないため、ランプ生成回路60のスイッチはオフのままである。
【０１２１】
続いて、演算ブロック1における演算処理は、第三または第四の実施形態と同様に実施される。ここで、演算ブロック1に入力される時間に対して単調に増加する電圧値は、図１８のランプ生成回路によって作成される。
【０１２２】
ランプ生成回路60においては、係数Kiに相当する電圧値を制御電圧として電圧制御電流源61に与えることで一定の電流が流れ、キャパシタ50に電荷が蓄積される。ここで、ランプ生成回路60のスイッチ49は前述した通りに同値判定ブロック58からの検出信号によりオンされる。
【０１２３】
すなわちランプ生成回路60は、連想メモリからの出力値が前回の出力値と等しい場合は、スイッチ49がオフになり前記のキャパシタ50への電荷蓄積動作を停止し、連想メモリからの出力値が前回の出力値と異なる場合だけスイッチ49がオンになり、ノードの電圧値が図１８のように変化する。
【０１２４】
この際、係数Kiに相当する電圧値を適当に設定することにより、第五の実施形態で説明したのと同様に、単調に増加する電圧値を係数Ki倍することができる。これをバッファ51を介してアナログ演算回路に入力することによって、第五の実施形態と同様にKi×Xi×Wiの３項の乗算を演算することが可能となる。その他の演算処理動作は第三または第四の実施形態と同様であるため、説明を省略する。
【０１２５】
なお電圧制御電流源61は、MOSトランジスタの飽和特性を利用して構成しても良いし、また差動型構成にしても良い。また、ランプ発生回路自体60も、同様の機能を実現できるものであれば、その他の回路構成を使用しても構わない。また、本実施形態においては単調に増加するアナログ電圧値を用いた場合について説明を行なったが、単調に減少するアナログ電圧値を用いた場合も同様の演算が可能である。
【０１２６】
なお、被演算値Xi×係数Kiに対応する単調に増加するアナログ電圧値が、被演算値Xiのラベルに対応してスイッチブロック5を切り替えることにより、所定の演算ブロックに入力されることは第三、第四の実施形態と同様である。
【０１２７】
また、本実施形態においては、被演算値Wiに相当するアナログ電圧値は、被演算値Xiと同様に、被演算値Xiが有するラベルに応じてスイッチブロック5においてスイッチングが行なわれ、ラベルによって決定される所定の演算ブロックに入力されるが、本実施形態とは異なる手法として、被演算値Wiに相当するアナログ電圧値が入力される所定の演算ブロックが、被演算値Xiのラベルにはよらず事前に設定されている手法を用いることも可能であるのも、第三、第四の実施形態と同様である。また被演算値Xiが入力値保持ブロック2に対してPWM信号として入力される場合に関しては、第三または第四の実施形態と同様である。
【０１２８】
（第七の実施形態）
第七の実施形態を図１９及び図２０を参照して説明する。
【０１２９】
本実施形態は、それぞれのランプ生成回路62に対して係数値保持ブロック59からの出力を入力すること以外は第三の実施形態と同様の構成を有する。そこで、本実施形態の説明においては第三の実施形態と異なる点についてのみ説明を行い、それ以外は第三の実施形態と同様として説明を省略する。
【０１３０】
まず図１９に示すように、係数値保持ブロック59から係数Kiに対応する電圧値をそれぞれのランプ生成回路62に入力する。
【０１３１】
ランプ生成回路においては、図１２とは異なり図２０に示すように係数Kiに対応する電圧値が電圧制御電流源61のゲートに与えられることで、係数Kiに応じた一定電流が電圧制御電流源61を流れる。すなわち、本実施形態と第三の実施形態との相違は、ランプ生成回路62における電圧制御電流源61の電流量を係数値保持ブロック59に保持した係数Kiによって制御することが出来る点にある。
【０１３２】
電圧制御電流源61の電流値の変化は、キャパシタ50に蓄積される単位時間あたりの電荷量の変化量に相当し、すなわちこれはノードの電圧値の時間に対する変化の傾きが変わることを意味する。これは第五または第六の実施形態で説明したように、単調に増加する電圧値を係数Ki倍することに相当するため、これをバッファ51を介してアナログ演算回路に入力することによって、第五または第六の実施形態と同様にKi×Xi×Wiの３項の乗算を演算することが可能となる。
【０１３３】
また本実施形態において、被演算値Xiが入力値保持ブロック2に対してPWM信号として入力される場合に関しては、第三の実施形態と同様である。
【０１３４】
（第八の実施形態）
第八の実施形態を図２1〜図２４を参照して説明する。
【０１３５】
本実施形態におけるニューラルネットワークモデルを図２1に示す。また、本実施形態におけるニューラルネットワークに対して第一、第二、第三及び第四の実施形態で説明した積和演算方法を適用する際の演算処理ブロックの構成を図２２に示す（なお、図２２は第三の実施形態で説明した積和演算方法を適用した場合を示している）。
【０１３６】
図２２に示すように、本実施形態におけるニューラルネットワークの処理ブロックは、第一、第二、第三及び第四の実施形態で説明した積和演算方法による処理ブロックを含んでいる。
【０１３７】
まず、図２1に示すようにニューラルネットワークにおけるニューロン素子のモデルとしては、ニューロン素子63において、前段の複数のニューロン素子の出力値をシナプス荷重64で重み付けした値の総和を取り、ニューロン素子63の内部状態値を決定するものが一般的である。
【０１３８】
本実施形態におけるニューロン素子回路は、ニューロン素子のモデルとして、第一もしくは第二、第三、第四の実施形態で説明した演算処理ブロックを用いている。すなわち第一もしくは第二、第三、第四の実施形態で説明した被演算値Xiが前段ニューロン素子の出力値に相当し、また被演算値Wiがシナプス荷重値64に相当し、ニューロン素子63の内部状態値を決定する。
【０１３９】
続いて図２２に示すように、各演算ブロックで算出された累算値は所定の関数処理を行なう関数処理ブロック65に入力される。関数処理ブロック65は、目的に応じて非線形関数処理を行なっても良いし、線形関数処理を行なっても良い。本実施形態では、一例として図２3に示すシグモイド変換を行なう処理ブロックとしている。
【０１４０】
また関数処理ブロック65は、実際の回路構成としては、デジタル回路の場合はルックアップテーブルで実現することが可能であり、アナログ回路の場合はコンパレータで実現することが可能である。また関数処理は、演算ブロック1で算出された累算結果に対して処理を行なうものであれば、関数処理ブロック65を接続する位置は、他の部位であっても構わない。関数処理ブロック65の回路構成としては、その他にも様々な回路構成が提案されているが、本発明の主眼とするところではないので、説明を省略する。
【０１４１】
続いて、前記関数処理ブロック65によりシグモイド変換を施された結果の値（すなわち次の階層における被演算値Xiに相当）は、次の階層に相当する入力保持ブロックに保持される。ここでは、前記の値（次の階層における被演算値Xiに相当）のラベルも、同時に保持される。
【０１４２】
以上説明した演算処理を繰り返すことにより、図２1に示したニューラルネットワークにおける演算処理を実現することが可能になる。ここでは、積和演算手法として第一、第二、第三及び第四の実施形態で説明した手法を用いているため、第一、第二、第三及び第四の実施形態で説明した効果を有するニューラルネットワーク回路を構成することが可能となる。
【０１４３】
またさらに、各ニューロン素子間（各層間）の入出力においては、後段のニューロン素子回路に対して被演算値XiをPWM信号として入力することも可能であるのも、第一、第二、第三及び第四の実施形態と同様である。この際、演算ブロックがアナログ演算回路の場合は、図２４に示すように、キャパシタに蓄積された電荷量をコンパレータ66によってPWM信号として読み出し、後段のパルス幅デジタル変換ブロック67に入力する。
【０１４４】
ここで、コンパレータ66によるPWM信号作成手法は広く知られている手法であり、詳しくは説明しないが、参照電圧としてランプ電圧波形を入力した場合は、電荷量に比例するPWM信号として読み出すことができ、また参照電圧として非線形な電圧波形を入力した場合は、電荷量に対して非線形に対応するPWM信号として読み出すことができ、つまり関数処理ブロックとして機能させることができる。また、キャパシタに蓄積された電荷量をコンパレータ66によって電荷量に比例するPWM信号として読み出し、さらに後段のパルス幅デジタル変換ブロック67でデジタル値に変換した後に、ルックアップテーブルによって関数処理を行なうことも可能である。
【０１４５】
なお本実施形態におけるニューロン素子数及び階層数は、本発明におけるニューラルネットワークの構成を限定するものではなく、必要に応じて任意の数に設定することが可能である。
【０１４６】
（第九の実施形態）
第九の実施形態を図２５を参照して説明する。
【０１４７】
本実施形態におけるニューラルネットワークモデルは、シナプス荷重値が、被演算値Wiと係数Kiの積Wi×Kiで表されることを除いて、第八の実施形態で説明したニューラルネットワークモデルと同様である。本実施形態におけるニューラルネットワークに対して第五、第六または第七の実施形態で説明した積和演算方法を適用する際の演算処理ブロックの構成を図２５に示す（図は、第七の実施形態で説明した積和演算方法を適用した場合を示している）。
【０１４８】
本実施形態におけるニューロン素子のモデルは、ニューロン素子において、前段の複数のニューロン素子の出力値をWi×Kiで表されるシナプス荷重で重み付けした値の総和を取り、ニューロン素子の内部状態値を決定する。そこで本実施形態におけるニューロン素子回路は、ニューロン素子のモデルとして、第五、第六または第七の実施形態で説明した演算処理ブロックを用いている。すなわち第五、第六または第七の実施形態で説明した被演算値Xiが前段ニューロン素子の出力値に相当し、また被演算値WiとKiの積がシナプス荷重値に相当し、ニューロン素子の内部状態値を決定する。
【０１４９】
なお、続いて行なう関数処理、及び関数処理後の演算値の入力・保持に関しては第八の実施形態と同様であるため、説明を省略する。また、各ニューロン素子間（各層間）の入出力において、後段のニューロン素子回路に対して被演算値XiをPWM信号として入力することに関しても第八の実施形態と同様であるため、説明を省略する。
【０１５０】
ここでは、積和演算手法として第五、第六または第七の実施形態で説明した手法を用いているため、第五、第六または第七の実施形態で説明した効果を有するニューラルネットワーク回路を構成することが可能となる。また本実施形態におけるニューロン素子数及び階層数は、本発明におけるニューラルネットワークの構成を限定するものではなく、必要に応じて任意の数に設定することが可能である。
【０１５１】
（第十の実施形態）
ニューラルネットワークの演算処理は、一般的に図２1で示したモデルで説明されるが、実際の演算においては、ニューロン素子に入力される前段ニューロンの出力値のうち、所定値以上の値を有するものだけの演算処理を行なって内部状態を決定しても、最終的なニューラルネットワークの演算能力がほとんど変わらないケースが多い。その場合、前記所定値よりも小さい値を有する演算処理を省略した方が、ニューラルネットワークを回路化した場合には、消費電力や演算速度の点で有利となる。
【０１５２】
本実施形態は、第八および第九の実施形態でニューラルネットワークに適用した第一〜第七の実施形態に関して、被演算値Xiをソーティングブロック4によって大きいもの順にソートし、さらに所定値未満の値を有するXiに関する演算を省略する演算処理方法を説明するものである。
【０１５３】
図２６は、第一〜第七の実施形態で説明した演算処理構成の図１、図５、図１０、図１４、図１６、図１７、図１９、図２２、図２４および図２５において、本実施形態の機能を実現するために、ソーティングブロック4に対してさらに所定値保持メモリ71が付加されている部分のみを抽出して図示している。従って、図２６に図示した部分以外は、図１、図５、図１０、図１４、図１６、図１７、図１９、図２２、図２４および図２５に図示した構成と同様である。
【０１５４】
すなわち、ソーティングブロック4に対して、所定値保持メモリ71から所定値に関するデータが入力され、被演算値Xiに関するソーティング処理は所定値に達した時点で打ち切られる。ここで、所定値未満の値を有するXiに関する積和演算の省略は、ソーティングブロック4として連想メモリを用いる場合においては、連想メモリにおける内容検索時に検索値を順番に小さくしていく際に、所定値保持メモリ71から入力された所定値に達した時点で処理を打ち切ることで実現される。またソーティングブロック4としてWTA回路を用いる場合においては、WTA回路によるソーティング時に、参照電圧値が所定値保持メモリ71から入力された所定値に達した時点で処理を打ち切ることで実現される。
【０１５５】
なお本実施形態においては、所定値未満の値を有するXiに関する積和演算を省略する回路として上記２例を挙げたが、同様の効果を有するものであれば、その他の回路及び手法を用いても良い。
【０１５６】
以上説明したように、所定値未満の値を有するXiに関する積和演算を省略することにより、実際の処理ブロックを構成する際の低消費電力化及び動作速度の向上が可能となる。
【０１５７】
（第十一の実施形態）
ニューラルネットワークの演算処理能力に関しては、第十の実施形態において、ニューロン素子に入力される前段ニューロンの出力値のうち、所定値よりも小さい値を有する演算処理を省略せずに、一定値として演算を行なった方がより演算処理能力が向上するケースがある。そこで本実施形態は、第十の実施形態において被演算値Xiをソーティングブロック4によって大きいもの順にソートし、さらに所定値未満の値を有するXiに関しては、その値を一定値とする演算処理方法を説明するものである。
【０１５８】
図２７は、第十の実施形態で説明した図２６のソーティングブロック4に対して、さらに一定値保持メモリ72が付加されている部分が異なっている。従って、図２７に図示した部分以外に関しては、第十の実施形態で説明したものと同様である。
【０１５９】
すなわち、ソーティングブロック4に対して、所定値保持メモリ71から所定値に関するデータが入力され、被演算値Xiに関するソーティング処理は所定値に達した時点で打ち切られる。さらに、ソーティングブロック4に対して、一定値保持メモリ72から一定値に関するデータが入力され、被演算値Xiの値として前記一定値が出力される。
【０１６０】
ここで、所定値未満の値を有するXiを一定値として演算する回路は、第十の実施形態におけるソーティングブロック4として連想メモリを用いる場合においては、連想メモリにおける内容検索時に検索値を順番に小さくしていく際に、所定値に達した以降の被演算値Xiの値として一定値保持メモリ72から入力された一定値を出力することで実現できる。また、同様の機能を実現できるのであればその他の回路及び方法を用いても良い。
【０１６１】
また第十の実施形態におけるソーティングブロック4としてWTA回路を用いる場合においては、WTA回路によるソーティング時に、参照電圧値が所定値に達した以降の被演算値Xiに相当する電圧値として一定値保持メモリ72から入力された一定値を出力することで実現できる。また、同様の機能を実現できるのであればその他の回路及び方法を用いても良い。
【０１６２】
（第十二の実施形態）
ニューラルネットワークの演算処理は、一般的に図２1で示したモデルで説明されるが、実際の演算においては、ニューロン素子に入力される前段ニューロンの出力値のうち、値の大きいものから数えて所定の割合を占めるものだけの演算処理を行なって内部状態を決定しても、最終的なニューラルネットワークの演算能力がほとんど変わらないケースが多い。その場合、値の大きいものから数えて所定の割合を占めるもの以外に関する演算処理を省略した方が、ニューラルネットワークを回路化した場合には、消費電力や演算速度の点で有利となる。
【０１６３】
本実施形態は、第八、第九の実施形態でニューラルネットワークに適用した第一〜第七の実施形態において、被演算値Xiをソーティングブロック4によって大きいもの順にソートし、さらに値の大きいものから数えて所定の割合を占める被演算値Xi以外の被演算値Xiに関する演算を省略する演算処理方法を説明するものである。
【０１６４】
図２８は、第一〜第七の実施形態で説明した演算処理構成の図１、図５、図１０、図１４、図１６、図１７、図１９、図２２、図２４および図２５において、本実施形態の機能を実現するために、ソーティングブロック4に対してさらに所定数（割合）保持メモリ73が付加されている部分のみを抽出して図示している。従って、図２８に図示した部分以外は、図１、図５、図１０、図１４、図１６、図１７、図１９、図２２、図２４および図２５に図示した構成と同様である。
【０１６５】
すなわち、ソーティングブロック4に対して、所定数（割合）保持メモリ73から所定数（割合）に関するデータが入力され、被演算値Xiに関するソーティング処理は所定数（割合）に達した時点で打ち切られる。
【０１６６】
ここで、値の大きいものから数えて所定数（割合）を占める被演算値Xi以外の被演算値Xiに関する積和演算の省略は、ソーティングブロック4として連想メモリを用いる場合においては、連想メモリにおける内容検索時に検索値を順番に小さくしていく際に、出力した被演算値Xiの数が、所定数（割合）保持メモリ73から入力された所定数（割合）に達した時点で処理を打ち切ることで実現される。またソーティングブロック4としてWTA回路を用いる場合においては、WTAによるソーティング時に、参照電圧値が所定数（割合）番目の被演算値Xiに相当する電圧値に達した時点で処理を打ち切ることで実現される。
【０１６７】
なお本実施形態においては、値の大きいものから数えて所定数（割合）を占める被演算値Xi以外の被演算値Xiに関する積和演算を省略する回路として上記２例を挙げたが、同様の効果を有するものであれば、その他の回路及び手法を用いても良い。
【０１６８】
以上説明したように、値の大きいものから数えて所定の割合を占める被演算値Xi以外の被演算値Xiに関する積和演算を省略することにより、実際の処理ブロックを構成する際の低消費電力化及び動作速度の向上が可能となる。
【０１６９】
（第十三の実施形態）
ニューラルネットワークの演算処理能力に関しては、第十二の実施形態において、ニューロン素子に入力される前段ニューロンの出力値のうち、値の大きいものから数えて所定の割合を占める出力値以外の出力値に関する演算処理を省略せずに、一定値として演算を行なった方がより演算処理能力が向上するケースがある。
【０１７０】
そこで本実施形態は、第十二の実施形態において被演算値Xiをソーティングブロック4によって大きいもの順にソートし、さらに値の大きいものから数えて所定の割合を占める被演算値Xi以外の被演算値Xiに関しては、その値を一定値とする演算処理方法を説明するものである。
【０１７１】
図２９は、第十二の実施形態で説明した図２８のソーティングブロック4に対して、さらに一定値保持メモリ74が付加されている部分が異なっている。従って、図２９に図示した部分以外に関しては、第十二の実施形態で説明したものと同様である。
【０１７２】
すなわち、ソーティングブロック4に対して、所定数（割合）保持メモリ73から所定数（割合）に関するデータが入力され、被演算値Xiに関するソーティング処理は所定数（割合）に達した時点で打ち切られる。さらに、ソーティングブロック4に対して、一定値保持メモリ74から一定値に関するデータが入力され、被演算値Xiの値として前記一定値が出力される。
【０１７３】
ここで、値の大きいものから数えて所定の割合を占める被演算値Xi以外の被演算値Xiを一定値として演算する手法は、ソーティングブロック4として連想メモリを用いる場合においては、連想メモリにおける内容検索時に検索値を順番に小さくしていく際に、出力した被演算値Xiの数が、所定数（割合）保持メモリ73から入力された所定数（割合）に達してから以降の被演算値Xiの値を一定値保持メモリ74から入力された一定値として出力することで実現できる。また、同様の機能を実現できるのであればその他の回路を用いても良い。
【０１７４】
またソーティングブロック4としてWTA回路を用いる場合においては、WTA回路によるソーティング時に、参照電圧値が所定数（割合）保持メモリ73から入力された所定数（割合）番目の被演算値Xiに相当する電圧値に達してから以降の被演算値Xiに相当する電圧値を一定値保持メモリ74から入力された一定値として出力することで実現できる。また、同様の機能を実現できるのであればその他の回路及び手法を用いても良い。
【０１７５】
（第十四の実施形態）
第十四の実施形態における画像処理を行なう積和演算方法の構成例を図３０に示す。図３０に示すように、かかる積和演算方法は、第八〜第十三の実施形態で説明したニューラルネットワーク回路を含むことを特徴としている。なお図３０では、階層構造の初段のみを示しており、それ以降の階層の記述を省略している。ここで、入力される信号は画像信号である。すなわち、本実施形態における積和演算方法は、入力された画像信号に対して、ニューラルネットワーク回路により所定の演算を行うことにより、所望の画像処理（例えばパターン検出およびパターン認識）を行うことを目的とするものである。
【０１７６】
なお、実際に実現される画像処理の内容は、ニューラルネットワーク回路の被演算値Ｗｉ及び係数値Ｋｉ等を適当に調整することで、所望の処理内容（例えばパターン検出およびパターン認識）が実現されるよう設定可能であるが、その詳しい調整方法は、本発明の主眼とするところではないので、説明を省略する。
【０１７７】
ここで本実施形態においては、撮像素子（例えばＣＣＤまたはＣＭＯＳイメージセンサなど）から出力される画像信号は、第一〜第七の実施形態における被演算値Ｘｉに相当する。従って、画像信号に対して行なわれる演算処理は、第一〜第十三の実施形態における被演算値Ｘｉに対して行なわれる演算処理と同様である。
【０１７８】
なお前記画像信号は、アナログ信号、デジタル信号またはＰＷＭ信号として入力する。ここで、それぞれの種類の信号に対応する演算処理は、第一から第十三の実施形態で説明した被演算値Ｘｉの信号の種類に対応している。従って、演算処理に関する説明は各実施形態と同様として省略する。図３０においては、アナログ信号である画像信号をコンパレータ69によってPWM信号に変換し、さらにパルス幅デジタル変換ブロック70によってデジタル値に変換して、ニューラルネットワーク回路に入力する場合を示している。
【０１７９】
なお撮像素子として、ＣＣＤまたはＣＭＯＳイメージセンサを想定しているが、その他の撮像素子を用いても問題は無い。また本実施形態における撮像素子数、ニューロン素子数及び階層数は、本発明における画像信号処理回路の構成を限定するものではなく、必要に応じて任意の数に設定することが可能である。
【０１８０】
図３１は、以上で説明した演算処理フローを示している。まず撮像素子から出力された画像信号を入力する工程S1を実行し、次に入力された信号を保持する入力値保持工程S2を実行する。続いて、保持された入力値を値が大きいもの順に出力するソーティング工程S3を実行し、フラグとラベルをメモリに保持するメモリ保持工程S4を実行する。
【０１８１】
続いて、ランプ生成工程S6においては、係数値入力工程S5から入力された係数値とメモリ保持工程S4から入力されたフラグによって、時間に関して単調に増加する電圧波形（ランプ波形）を生成し、スイッチング工程S7に入力する。スイッチング工程S7においては、メモリ保持工程S4から入力されたラベルにより、ランプ波形を適当な演算ブロックに入力する。
【０１８２】
また、スイッチング工程S9においては、メモリ保持工程S4から入力されたラベルにより、荷重値入力工程S8によって入力された荷重値を適当な演算ブロックに入力する。ランプ波形と荷重値を入力された演算ブロックにおいては、乗算・累算工程S10を実行し、累算値を関数処理工程S11に出力する。関数処理工程S11では、所定の関数処理を実行し、出力値を後段層へ入力する工程S12を実行する。後段層側では、以上説明した演算処理工程を必要な回数（階層数）繰り返す。
【０１８３】
以上説明したように、ニューラルネットワーク回路による演算処理を画像信号に適用することにより、所望の演算処理（例えばパターン検出およびパターン認識など）を実現することができる。
【図面の簡単な説明】
【０１８４】
【図１】実施形態の積和演算回路の構成を示すブロック図である。
【図２】第一の実施形態における、デジタル演算回路図である。
【図３】第一の実施形態における、ソーティングブロックである。
【図４】第一の実施形態における、メモリである。
【図５】第一の実施形態における、もう一つの積和演算方法の全体構成図である。
【図６】第二の実施形態における、アナログ演算回路である。
【図７】第二の実施形態における、入力値保持ブロックである。
【図８】第二の実施形態における、ソーティングブロックである。
【図９】第二の実施形態における、荷重保持ブロックである。
【図１０】第三の実施形態における、積和演算方法の全体構成図である。
【図１１】第三の実施形態における、アナログ演算回路である。
【図１２】第三の実施形態における、ランプ生成回路である。
【図１３】第四の実施形態における、アナログ演算回路である。
【図１４】第四の実施形態における、積和演算方法の全体構成図である。
【図１５】第四の実施形態における、ランプ生成回路である。
【図１６】第五の実施形態における、積和演算方法の全体構成図である。
【図１７】第六の実施形態における、積和演算方法の全体構成図である。
【図１８】第六の実施形態における、ランプ生成回路である。
【図１９】第七の実施形態における、積和演算方法の全体構成図である。
【図２０】第七の実施形態における、ランプ生成回路である。
【図２１】ニューラルネットワークモデル図である。
【図２２】第八の実施形態における、積和演算方法の全体構成図である。
【図２３】シグモイド変換を示す図である。
【図２４】第八の実施形態における、もう一つの積和演算方法の全体構成図である。
【図２５】第九の実施形態における、積和演算方法の全体構成図である。
【図２６】第十の実施形態における、積和演算方法の部分図である。
【図２７】第十一の実施形態における、積和演算方法の部分図である。
【図２８】第十二の実施形態における、積和演算方法の部分図である。
【図２９】第十三の実施形態における、積和演算方法の部分図である。
【図３０】第十四の実施形態における、積和演算方法の全体構成図である。
【図３１】第十四の実施形態における、演算処理工程のフローチャートである。
【符号の説明】
【０１８５】
１  演算ブロック
２  入力値保持ブロック
３  荷重値保持ブロック
４  ソーティングブロック
５  スイッチブロック
６  レジスタ
７  乗算器
８  加減算器
９  パルス幅デジタル変換ブロック
１７  アナログ乗算器
１８  キャパシタ
１９  出力バッファ
２０  キャパシタ
２１  出力バッファ
２２  WTA回路
２４  電流源
２５  キャパシタ
２６  出力バッファ
３７  キャパシタ
３８  出力バッファ
４０  電流源
４１  キャパシタ
４２  出力バッファ
４３  メモリ回路
４４  ランプ生成回路
４５  アナログ乗算器
４６  キャパシタ
４７  出力バッファ
４８  電圧制御電流源
４９  スイッチ
５０  キャパシタ
５１  バッファ
５２  電圧制御電流源
５３  電圧制御抵抗素子
５４  電圧制御電流源
５５  キャパシタ
５６  WTA回路
５７  電圧増幅器
５８  同値判定ブロック
５９  係数値保持ブロック
６０  ランプ生成回路
６１  電圧制御電流源
６２  ランプ生成回路
６３  ニューロン素子
６４  シナプス荷重
６５  関数処理ブロック
６６  関数処理ブロック
６７  パルス幅デジタル変換ブロック
６８  撮像素子アレイ
６９  コンパレータ
７０  パルス幅デジタル変換ブロック
７１  所定値保持メモリ
７２  一定値保持メモリ
７３  所定数（割合）保持メモリ
７４  一定値保持メモリ
【図１】
0004620943.tif 000002
【図２】
0004620943.tif 000003
【図３】
0004620943.tif 000004
【図４】
0004620943.tif 000005
【図５】
0004620943.tif 000006
【図６】
0004620943.tif 000007
【図７】
0004620943.tif 000008
【図８】
0004620943.tif 000009
【図９】
0004620943.tif 000010
【図１０】
0004620943.tif 000011
【図１１】
0004620943.tif 000012
【図１２】
0004620943.tif 000013
【図１３】
0004620943.tif 000014
【図１４】
0004620943.tif 000015
【図１５】
0004620943.tif 000016
【図１６】
0004620943.tif 000017
【図１７】
0004620943.tif 000018
【図１８】
0004620943.tif 000019
【図１９】
0004620943.tif 000020
【図２０】
0004620943.tif 000021
【図２１】
0004620943.tif 000022
【図２２】
0004620943.tif 000023
【図２３】
0004620943.tif 000024
【図２４】
0004620943.tif 000025
【図２５】
0004620943.tif 000026
【図２６】
0004620943.tif 000027
【図２７】
0004620943.tif 000028
【図２８】
0004620943.tif 000029
【図２９】
0004620943.tif 000030
【図３０】
0004620943.tif 000031
【図３１】
0004620943.tif 000032