(57)【要約】【課題】電子回路規模を縮小しつつ、様々なタイプのニューラルネットワークを実現できるニューラル電子回路を提供する。【解決手段】  並列で入力される１ビットの入力データであって、並列の各入力データ（Ｉ１、…、Ｉｍ）に応じて、「１」または「０」の１ビットの重み付け係数（Ｗ１、…、Ｗｍ）を記憶し、当該重み付け係数を出力する記憶部（ＭＣ）と、並列の各入力データに設定された電子回路部であって、記憶部（ＭＣ）から出力された重み付け係数と入力データとを乗算する乗算機能を実現する第１電子回路部（Ｐｅ）と、並列の各入力データの第１電子回路部（Ｐｅ）からの各乗算結果を加算し、かつ、当該加算結果に活性化関数を適用して１ビットの出力データを出力する加算・適用機能を実現する第２電子回路部（Ａｃｔ）と、を備える。【選択図】図３
2019139300.tif 000002
【特許請求の範囲】
【請求項１】
並列で入力される１ビットの入力データであって、並列の各前記入力データに応じて、「１」または「０」の１ビットの重み付け係数を記憶し、当該重み付け係数を出力する記憶部と、
前記並列の各入力データに設定された電子回路部であって、前記記憶部から出力された重み付け係数と前記入力データとを乗算する乗算機能を実現する第１電子回路部と、
前記並列の各入力データの前記第１電子回路部からの各乗算結果を加算し、かつ、当該加算結果に活性化関数を適用して１ビットの出力データを出力する加算・適用機能を実現する第２電子回路部と、
を備え、
前記第１電子回路部が、前記入力データの値と前記記憶部から出力された値とが一致する場合に前記入力データの入力に対応して「１」を出力し、前記入力データの値と前記記憶部から出力された値とが異なる場合に前記入力データの入力に対応して「０」を出力することを特徴とするニューラル電子回路。
【請求項２】
請求項１に記載のニューラル電子回路において、
前記記憶部および前記第２電子回路部が、並列で出力される各前記出力データに応じて設定されたことを特徴とするニューラル電子回路。
【請求項３】
請求項１または請求項２に記載のニューラル電子回路において、
各前記第１電子回路部からの前記乗算結果を一時記憶する一時記憶部を前記第１電子回路部毎に更に備え、
前記各一時記憶部が、直列に設定され、前記乗算結果を前記第２電子回路部へ順次転送することを特徴とするニューラル電子回路。
【請求項４】
請求項１から請求項３のいずれか１項に記載のニューラル電子回路において、
前記第２回路部は、前記並列の各入力データに設定された複数の前記第１電子回路部において、前記入力データが入力されるサイクル単位で、前記第１電子回路部が「１」を算出した回数から、前記第１電子回路部が「０」を算出した回数を減じた値が予め定められた閾値以上の場合に「１」を前記出力データとして出力し、前記減じた値が前記閾値未満の場合に「０」を前記出力データとして出力することを特徴とするニューラル電子回路。
【請求項５】
請求項１から請求項４のいずれか１項に記載のニューラル電子回路において、
前記記憶部は、「１」または「０」の重み付け係数、および、ニューロン間の接続の有無を示す所定値の組を複数記憶し、当該重み付け係数および当該所定値を出力し、
前記第１電子回路部が、前記入力データの値と前記記憶部から出力された値とが一致する場合に前記入力データの入力に対応して「１」を出力し、前記入力データの値と前記記憶部から出力された値とが異なる場合に前記入力データの入力に対応して「０」を出力し、前記所定値が前記記憶部から出力された場合に前記入力データの入力に対応して当該所定値を出力することを特徴とするニューラル電子回路。
【請求項６】
請求項１から請求項５のいずれか１項に記載のニューラル電子回路において、
前記記憶部が、前記第１電子回路部に順次入力される前記入力データに対応した重み付け係数を、前記第１電子回路部に順次出力することを特徴とするニューラル電子回路。
【請求項７】
請求項６に記載のニューラル電子回路において、
前記第１電子回路部が、並列で入力される前記入力データの入力並列数分、前記乗算結果を加算した部分加算結果を出力し、
前記第２電子回路部が、前記部分加算結果から前記加算結果を算出することを特徴とするニューラル電子回路。
【請求項８】
請求項１から請求項５のいずれか１項に記載のニューラル電子回路において、
前記記憶部が、並列で入力される並列の各前記入力データに対応した重み付け係数を、各前記第１電子回路部に出力することを特徴とするニューラル電子回路。
【請求項９】
請求項８に記載のニューラル電子回路において、
前記入力データを並列で一度に入力可能な入力可能並列数より、前記入力データの入力並列数が大きい場合、
前記第１電子回路部は、前記入力可能並列数の並列で前記入力データを受け入れた後、前記入力可能並列数の並列で受け入れできなかった残りの前記入力データを受け入れ、
前記記憶部は、前記残りの入力データに対応する前記重み付け係数を出力することを特徴とするニューラル電子回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ニューラルネットワークを電子回路で実現するニューラル電子回路の技術分野に属する。
【背景技術】
【０００２】
近年、人の脳機能をモデル化した、いわゆるニューラルネットワーク回路についての研究開発が行われている。このとき、従来のニューラルネットワーク回路としては、例えば浮動小数点又は固定小数点を使った積和演算を用いて実現される場合が多く、この場合には、例えば演算コストが大きく、処理負荷が高いという問題点があった。
【０００３】
そこで近年、上記入力データ及び上記重み付け係数をそれぞれ１ビットとする、いわゆる「バイナリニューラルネットワーク回路」のアルゴリズムが提案されている。ここで、上記バイナリニューラルネットワーク回路のアルゴリズムを示す先行技術文献としては、例えば下記非特許文献１及び非特許文献２が挙げられる。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】「XNOR-Net: ImageNet Classification Using Binary Convolutional Neural Networks」論文、Mohammad Rastegari他、arXiv:1603.05279v2 [cs.CV、2016年４月19日（ＵＲＬ：http://arxiv.org/abs/1603.05279）
【非特許文献２】「Binarized Neural Networks: Training Neural Networks with Weights and Activations Constrained to +1 or -1」論文、Matthieu Courbariaux他、arXiv:1602.02830v3 [cs.LG]、2016年3月17日（ＵＲＬ：http://arxiv.org/abs/1602.02830）
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述したいずれの非特許文献においても、当該論文記載の理論を具体的にどのように実現するかについては、全く記載されていない。また、各論文記載の理論により単位演算コストが大幅に下がることを利用して並列演算を可能にしたいが、そのためのハードウエア構成も未知である。更に、複雑多岐なニューラルネットを構築するためにも、フル結合のニューラルネットワークの他にも、コンボリューション演算等も効率的に計算できる電子回路を実現する必要があった。
【０００６】
そこで本発明は、上記の各問題点及び要請等に鑑みて為されたもので、その課題の一例は、上記バイナリニューラルネットワーク回路のアルゴリズムを用いて、電子回路規模を縮小しつつ、様々なタイプのニューラルネットワークを実現できるニューラル電子回路を提供することにある。
【課題を解決するための手段】
【０００７】
上記の課題を解決するために、請求項１に記載の発明は、並列で入力される１ビットの入力データであって、並列の各前記入力データに応じて、「１」または「０」の１ビットの重み付け係数を記憶し、当該重み付け係数を出力する記憶部と、前記並列の各入力データに設定された電子回路部であって、前記記憶部から出力された重み付け係数と前記入力データとを乗算する乗算機能を実現する第１電子回路部と、前記並列の各入力データの前記第１電子回路部からの各乗算結果を加算し、かつ、当該加算結果に活性化関数を適用して１ビットの出力データを出力する加算・適用機能を実現する第２電子回路部と、を備え、前記第１電子回路部が、前記入力データの値と前記記憶部から出力された値とが一致する場合に前記入力データの入力に対応して「１」を出力し、前記入力データの値と前記記憶部から出力された値とが異なる場合に前記入力データの入力に対応して「０」を出力することを特徴とする。
【０００８】
請求項２に記載の発明は、請求項１に記載のニューラル電子回路において、前記記憶部および前記第２電子回路部が、並列で出力される各前記出力データに応じて設定されたことを特徴とする。
【０００９】
請求項３に記載の発明は、請求項１または請求項２に記載のニューラル電子回路において、各前記第１電子回路部からの前記乗算結果を一時記憶する一時記憶部を前記第１電子回路部毎に更に備え、前記各一時記憶部が、直列に設定され、前記乗算結果を前記第２電子回路部へ順次転送することを特徴とする。
【００１０】
請求項４に記載の発明は、請求項１から請求項３のいずれか１項に記載のニューラル電子回路において、前記第２回路部は、前記並列の各入力データに設定された複数の前記第１電子回路部において、前記入力データが入力されるサイクル単位で、前記第１電子回路部が「１」を算出した回数から、前記第１電子回路部が「０」を算出した回数を減じた値が予め定められた閾値以上の場合に「１」を前記出力データとして出力し、前記減じた値が前記閾値未満の場合に「０」を前記出力データとして出力することを特徴とする。
【００１１】
請求項５に記載の発明は、請求項１から請求項４のいずれか１項に記載のニューラル電子回路において、前記記憶部は、「１」または「０」の重み付け係数、および、ニューロン間の接続の有無を示す所定値の組を複数記憶し、当該重み付け係数および当該所定値を出力し、前記第１電子回路部が、前記入力データの値と前記記憶部から出力された値とが一致する場合に前記入力データの入力に対応して「１」を出力し、前記入力データの値と前記記憶部から出力された値とが異なる場合に前記入力データの入力に対応して「０」を出力し、前記所定値が前記記憶部から出力された場合に前記入力データの入力に対応して当該所定値を出力することを特徴とする。
【００１２】
請求項６に記載の発明は、請求項１から請求項５のいずれか１項に記載のニューラル電子回路において、前記記憶部が、前記第１電子回路部に順次入力される前記入力データに対応した重み付け係数を、前記第１電子回路部に順次出力することを特徴とする。
【００１３】
請求項７に記載の発明は、請求項６に記載のニューラル電子回路において、前記第１電子回路部が、並列で入力される前記入力データの入力並列数分、前記乗算結果を加算した部分加算結果を出力し、前記第２電子回路部が、前記部分加算結果から前記加算結果を算出することを特徴とする。
【００１４】
請求項８に記載の発明は、請求項１から請求項５のいずれか１項に記載のニューラル電子回路において、前記記憶部が、並列で入力される並列の各前記入力データに対応した重み付け係数を、各前記第１電子回路部に出力することを特徴とする。
【００１５】
請求項９に記載の発明は、請求項８に記載のニューラル電子回路において、前記入力データを並列で一度に入力可能な入力可能並列数より、前記入力データの入力並列数が大きい場合、前記第１電子回路部は、前記入力可能並列数の並列で前記入力データを受け入れた後、前記入力可能並列数の並列で受け入れできなかった残りの前記入力データを受け入れ、前記記憶部は、前記残りの入力データに対応する前記重み付け係数を出力することを特徴とする。
【発明の効果】
【００１６】
本発明によれば、１ビットの入力データの値と記憶部から出力された値とが一致する場合に入力データの入力に対応して「１」を出力し、入力データの値と記憶部から出力された値とが異なる場合に入力データの入力に対応して「０」を出力することにより、乗算機能を実現するため、回路規模を縮小でき、並列で入力される並列の各入力データに応じて配置された第１電子回路部により、様々なタイプのニューラルネットワークを実現できる。
【図面の簡単な説明】
【００１７】
【図１】実施形態に係るニューラルネットワークを説明する図であり、（ａ）は一つのニューロンをモデル化したユニットを示す図であり、（ｂ）は複数のユニットの結合からなるニューラルネットワークの状態を示す図である。
【図２】実施形態に係るニューラルネットワーク・システムの概要構成例を示すブロック図である。
【図３】図２のニューラル電子回路の一例を示すブロック図である。
【図４】図３のプロセスエレメント・コラムの一例を示すブロック図である。
【図５】図４のプロセスエレメントの動作のタイミングの一例を示す模式図である。
【図６Ａ】図２のプロセスエレメントのデジタル回路の一例を示す回路図である。
【図６Ｂ】図２の加算活性化部のデジタル回路の一例を示す回路図である。
【図７】コンボリューション演算におけるデータの関係の一例を示す模式図である。
【図８】図７のコンボリューション演算を実現するニューラル電子回路の一例を示すブロック図である。
【図９】フル結合のニューラルネットワークの一例を示す模式図である。
【図１０】図９のフル結合のニューラルネットワークを実現するニューラル電子回路の一例を示すブロック図である。
【図１１】ニューラルネットワークの層内拡張の一例を示す模式図である。
【図１２】図１１の層内拡張を実現するコア電子回路の接続の一例を示すブロック図である。
【図１３】ニューラルネットワークの層数拡張の一例を示す模式図である。
【図１４】図１３の層数拡張を実現するコア電子回路の接続の一例を示すブロック図である。
【図１５】実施形態に係るニューラルネットワーク回路を示す図であり、（ａ）は当該ニューラルネットワーク回路に相当するニューラルネットワークを示す図であり、（ｂ）は当該ニューラルネットワーク回路の構成を示すブロック図であり、（ｃ）は当該ニューラルネットワーク回路に対応する真理値表である。
【図１６】実施形態に係るニューラルネットワーク回路の細部構成を示す図であり、（ａ）は当該細部構成に係るメモリセルの回路の一例を示す図であり、（ｂ）は当該細部構成の回路の一例を示す図である。
【図１７】実施形態に係るニューラルネットワーク集積回路の第１例を示す図であり、（ａ）は当該第１例に相当するニューラルネットワークを示す図であり、（ｂ）は当該第１例の構成を示すブロック図である。
【図１８】実施形態に係るニューラルネットワーク集積回路の第２例を示す図であり、（ａ）は当該第２例に相当するニューラルネットワークを示す図であり、（ｂ）は当該第２例の構成を示すブロック図である。
【図１９】実施形態に係るニューラルネットワーク集積回路の第３例を示す図であり、（ａ）は当該第３例に相当するニューラルネットワークを示す図であり、（ｂ）は当該第３例の構成を示すブロック図である。
【図２０】実施形態に係るニューラルネットワーク集積回路の第４例を示す図であり、（ａ）は当該第４例に相当するニューラルネットワークを示す図であり、（ｂ）は当該第４例の構成を示すブロック図であり、（ｃ）は当該第４例に係るスイッチボックスの構成の一例を示すブロック図である。
【図２１】関連形態に係るニューラルネットワーク集積回路の第１例の一部を示す図であり、（ａ）は当該一部に相当するニューラルネットワークを示す図であり、（ｂ）は当該一部の構成を示すブロック図であり、（ｃ）の当該一部に対応する真理値表である。
【図２２】関連形態に係るニューラルネットワーク集積回路の第１例を示す図であり、（ａ）は当該第１例に相当するニューラルネットワークを示す図であり、（ｂ）は当該第１例の構成を示すブロック図である。
【図２３】関連形態に係るニューラルネットワーク回路の第１例を示す図であり、（ａ）は当該第１例に相当するニューラルネットワークを示す図であり、（ｂ）は当該第１例の構成を示すブロック図である。
【図２４】関連形態に係るニューラルネットワーク集積回路の第２例を示す図であり、（ａ）は当該第２例に相当するニューラルネットワークを示す図であり、（ｂ）は当該第２例の構成を示すブロック図である。
【図２５】関連形態に係るニューラルネットワーク集積回路の第３例を示す図であり、（ａ）は当該第３例に相当するニューラルネットワークを示す図であり、（ｂ）は当該第３例の構成を示すブロック図である。
【図２６】関連形態に係るニューラルネットワーク集積回路の第４例を示す図であり、（ａ）は当該第４例の構成を示すブロック図であり、（ｂ）は当該第４例に相当する回路例を示す図である。
【図２７】関連形態に係るニューラルネットワーク集積回路の第４例の細部構成を示す図であり、（ａ）は当該第４例に係るパイプラインレジスタ等の回路の一例を示す図であり、（ｂ）は当該第４例に係る多数判定入力回路及び直列多数判定回路それぞれの一例を示す図であり、（ｃ）は当該第４例に係る並列多数判定回路の一例を示す図であり、（ｄ）は当該第４例における動作を示すタイミングチャートである。
【発明を実施するための形態】
【００１８】
次に、本発明に係る実施形態及び関連形態について、図面に基づいてそれぞれ説明する。なお以下に説明する実施形態等は、人の脳機能をモデル化したニューラルネットワークを電子的な回路で実現したニューラルネットワーク回路について本発明を適用した場合の実施形態等である。
【００１９】
［１．ニューラルネットワークについて］
【００２０】
先ず、上記脳機能をモデル化したニューラルネットワークについて、一般的に図１を用いて説明する。
【００２１】
一般に人の脳の中には、多数のニューロン（神経細胞）が存在しているとされている。脳の中で各ニューロンは、多数の他のニューロンからの電気信号を受信し、また更に他の多数のニューロンへ電気信号を送信している。そして脳は、各ニューロン間のこれら電気信号の伝達によって、様々な情報処理を行っているとされている。このとき、各ニューロン間における電気信号の送受信は、シナプスと呼ばれる細胞を介して行われる。そして、脳における上記ニューロン間の電気信号の送受信をモデル化してコンピュータ内に脳機能を実現しようとしたものが、ニューラルネットワークである。
【００２２】
より具体的にニューラルネットワークでは図１（ａ）に例示するように、外部から入力される複数の入力データＩ1、入力データＩ2、…、入力データＩn（ｎは自然数。以下同様。）のそれぞれに対する乗算処理、各乗算結果とバイアス（閾値）の加算処理及び活性化関数の適用処理を一つのニューロンＮＲで実行し、その結果を出力データＯとすることで、脳機能における一つのニューロンに対する上記電気信号の送受信をモデル化する。なお以下の説明において、上記活性化関数の適用処理を、単に「活性化処理」と称する。このとき一つのニューロンＮＲでは、複数の入力データＩ1、入力データＩ2、…、入力データＩnそれぞれに対応して予め設定された（つまり既定の）重み付け係数Ｗ1、重み付け係数Ｗ2、…、重み付け係数Ｗnを当該入力データＩ1、入力データＩ2、…、入力データＩnに対してそれぞれ乗算することで上記乗算処理が実行される。
【００２３】
その後当該ニューロンＮＲは、各入力データＩ1、入力データＩ2、…、入力データＩnに対する上記乗算処理の結果のそれぞれを加算してバイアスｂｉａｓの値を加算する上記加算処理を実行する。そして当該ニューロンＮＲは次に、上記加算処理の結果に既定の活性化関数Ｆを適用する上記活性化処理を実行し、その結果を上記出力データΟとして他の一又は複数のニューロンＮＲに出力する。上述した一連の乗算処理、加算処理及び活性化処理を数式で表すと、図１（ａ）に示す式（１）となる。このとき、重み付け係数Ｗ1、重み付け係数Ｗ2、…、重み付け係数Ｗnを入力データＩ1、入力データＩ2、…、入力データＩnにそれぞれ乗算する乗算処理が、ニューロンＮＲ間の上記電気信号のやり取りにおける上記シナプスの作用に相当すると共に、本発明に係る「乗算機能」の一例に相当する。また、上記加算処理及び活性化処理が本発明に係る「加算／適用機能」の一例に相当する。そして図１（ｂ）に例示されるように、図１（ａ）に例示する一つのニューロンＮＲが多数集まってシナプスにより互いに接続されることにより、脳全体がニューラルネットワークＳＳとしてモデル化される。
【００２４】
［２．ニューラルネットワーク・システムの構成および機能概要］
（２．１  ニューラルネットワーク・システムの構成および機能）
次に、本発明の一実施形態に係るニューラルネットワーク・システムの構成および概要機能について、図２を用いて説明する。
【００２５】
図２は、本実施形態に係るニューラルネットワーク・システムＮＮＳの概要構成例を示す模式図である。
【００２６】
図２に示すように、ニューラルネットワーク・システムＮＮＳは、様々なタイプのニューラルネットワークを電子回路で実現可能な複数のコア電子回路Ｃｏｒｅと、コア電子回路Ｃｏｒｅ同士を接続するシステムバスｂuｓと、を備えている。
【００２７】
コア電子回路Ｃｏｒｅは、様々なタイプのニューラルネットワークを電子回路で実現可能なニューラル電子回路ＮＮと、ニューラル電子回路ＮＮの重み付け係数等を設定するメモリアクセス制御部ＭＣｎｔと、ニューラル電子回路ＮＮおよびメモリアクセス制御部ＭＣｎｔを制御する制御部Ｃｎｔと、を有する。ここで、様々なタイプのニューラルネットワークの一例として、ニューロン層間のニューロン同士がフル結合したフル結合のタイプのニューラルネットワーク、コンボリューション演算をするニューラルネットワーク、ニューロン層における層内拡張をしたニューラルネットワーク、層数を拡張するニューラルネットワーク等が挙げられる。
【００２８】
ニューラル電子回路ＮＮは、入力データＩ１、・・・、Ｉｍ（ｍは自然数。以下同様）を並列で順次供給する入力メモリアレイ部ＭＡｉと、重み付け係数のデータを並列で順次供給するメモリセルアレイ部ＭＣ（記憶部の一例）と、供給された入力データＩ１、・・・、Ｉｍと重み付け係数とを乗算する乗算機能を実現して乗算結果を出力する複数のプロセスエレメント部Ｐｅ（第１電子回路部の一例）と、並列の各入力データのプロセスエレメント部Ｐｅからの各乗算結果を加算して加算結果に活性化関数を適用する加算活性化部Ａｃｔ（第２電子回路部の一例）と、各加算活性化部Ａｃｔからの出力データＯ１、・・・、Ｏｎ（ｎは自然数。以下同様）をそれぞれ順次記憶する出力メモリアレイ部ＭＡｏと、各加算活性化部Ａｃｔにバイアス用の値を順次提供するバイアス用メモリアレイＭＡｂとを有する。
【００２９】
メモリアクセス制御部ＭＣｎｔは、例えば、Direct Memory Access Controllerである。メモリアクセス制御部ＭＣｎｔは、制御部Ｃｎｔの制御に従い、各プロセスエレメント部Ｐｅに逐次供給する入力データを、入力メモリアレイ部ＭＡｉに設定する。また、メモリアクセス制御部ＭＣｎｔは、制御部Ｃｎｔの制御に従い、重み付け係数およびニューロン間の接続の有無を示す所定値を、各メモリセルアレイ部ＭＣに予め設定する。また、メモリアクセス制御部ＭＣｎｔは、制御部Ｃｎｔの制御に従い、加算活性化部Ａｃｔから出力された出力データを、出力メモリアレイ部ＭＡｏから取り出す。
【００３０】
制御部Ｃｎｔは、ＣＰＵ（Central Processing Unit）等を有する。制御部Ｃｎｔは、ニューラル電子回路ＮＮの各素子の同期等のタイミングを計ったり、計算やデータの転送の同期を取ったりする。また、制御部Ｃｎｔは、ニューラル電子回路ＮＮ内の後述のセレクタ素子の切り替え制御を行う。
【００３１】
制御部Ｃｎｔは、メモリアクセス制御部ＭＣｎｔを制御して、他のコア電子回路Ｃｏｒｅから出力されたデータを入力メモリアレイ部ＭＡｉ用に整えて、入力データとして入力メモリアレイ部ＭＡｉに供給するように制御する。制御部Ｃｎｔは、メモリアクセス制御部ＭＣｎｔが、出力メモリアレイ部ＭＡｏから取得した出力データを、他のコア電子回路Ｃｏｒｅに転送するように制御する。
【００３２】
なお、上位コントローラ（図示せず）が、ニューラルネットワーク・システムＮＮＳや、各コア電子回路Ｃｏｒｅの制御部Ｃｎｔを制御してもよい。また、上位コントローラが、制御部Ｃｎｔの代わりに、ニューラル電子回路ＮＮおよびメモリアクセス制御部ＭＣｎｔを制御してもよい。上位コントローラは、外付けのコンピュータでもよい。
【００３３】
バイアス用メモリアレイ部ＭＡｂは、各加算活性化部Ａｃｔに提供するバイアス用のデータを予め記憶している。
【００３４】
（２．２  ニューラル電子回路の構成および機能）
次に、ニューラル電子回路ＮＮについて、図３を用いて説明する。
図３は、図２のニューラル電子回路の一例を示すブロック図である。
【００３５】
図３に示すように、ニューラル電子回路ＮＮは、例えば、入力ｍ個×出力ｎ個の２層のニューラルネットワークを実現する。
【００３６】
記憶部の一例であるメモリセルアレイ部ＭＣは、重み付け係数を記憶するメモリセル１０を有する。メモリセル１０は、構築するニューラルネットワークによる実現する脳機能に基づいて予め設定された「１」または「０」の１ビットの重み付け係数を記憶している。
【００３７】
なお、メモリセルアレイ部ＭＣは、上記脳機能に基づいて予め設定されたニューロン間の接続有無情報を記憶している別の接続有無情報用のメモリセル（図示せず）も有していてもよい。ここで、接続無情報は、例えば、ＮＣ（Not Connected（接続なし））を意味する１ビット所定値であり、所定値として「１」または「０」等が割り当てられる。
【００３８】
メモリセル１０が並んで、メモリセルの列が形成される。同時に各プロセスエレメント部Ｐｅに出力されるメモリセル１０をまとめてメモリセルブロックＣＢが形成される。メモリセルブロックＣＢのメモリセル１０は、並列で入力される各入力データに対応している。
【００３９】
メモリセルアレイ部ＭＣは、入力メモリアレイ部ＭＡｉから並列で入力される入力データＩ１、・・・、Ｉｍの入力並列数ｍ個以上のメモリセルブロックＣＢを有することが好ましい。メモリセルブロックＣＢにおいて、メモリセル１０の数は、入力メモリアレイ部ＭＡｉから１ビット順次入力されるシリアルの入力データのサイクル数以上が好ましい。
【００４０】
メモリセルアレイ部ＭＣは、メモリセルブロックＣＢ毎に、１ビットの重み付け係数を、１ビット順次入力されるシリアルの入力データに対応してプロセスエレメント部Ｐｅに、順次出力する。各プロセスエレメント部Ｐｅに、メモリセルブロックＣＢからの重み付け係数と、入力メモリアレイ部ＭＡｉからの入力データとが入力される。
【００４１】
メモリセルブロックＣＢは、１ビットの重み付け係数と１ビットの接続有無情報とを、交互に、プロセスエレメント部Ｐｅに順次、出力してもよい。メモリセル１０は、プロセスエレメント部Ｐｅに対して独立した結線を有し、別々に順次、プロセスエレメント部Ｐｅに出力してもよい。
【００４２】
メモリセルアレイ部ＭＣは、図２および図３に示すように、出力メモリアレイ部ＭＡｏに並列に出力される出力データの出力並列数ｎ個、並列に出力される出力データＯ１、・・・、Ｏｎに対応して、ニューラル電子回路ＮＮに配置される。
【００４３】
このように、メモリセルアレイ部ＭＣは、並列で入力される１ビットの並列の各入力データに応じて、「１」または「０」の１ビットの重み付け係数を記憶し、当該重み付け係数を出力する記憶部の一例として機能する。メモリセルアレイ部ＭＣは、並列で出力される前記並列の各出力データに応じて配置された記憶部の一例として機能する。メモリセルアレイ部ＭＣは、「１」または「０」の重み付け係数、および、ニューロン間の接続の有無を示す所定値の組を複数記憶し、当該重み付け係数および当該所定値を出力する記憶部の一例として機能する。
【００４４】
なお、メモリセル１０、および、メモリセルブロックＣＢの構成および機能の詳細は、図１５以降、特に、図１５および図１６のメモリセル１に関する記述部分、図２１から図２７のメモリセル１０、および、メモリセルブロック１５に関する記述部分等で後述する。また、メモリセルアレイ部ＭＣは、後述するメモリセルアレイＭＣ１、メモリセルアレイＭＣ２に対応する。
【００４５】
図３に示すように、並列で入力される並列の各入力データに配置された入力並列数ｍ個のプロセスエレメント部Ｐｅは、ニューラル電子回路ＮＮにおいて、プロセスエレメント・コラム（例えば、プロセスエレメント・コラムＰＣ１）を形成する。出力並列数ｎ個のプロセスエレメント・コラムＰＣ１からＰＣｎは、並列に出力される出力データに対応して、ニューラル電子回路ＮＮにおいて、ｎ列に配置される。プロセスエレメント部Ｐｅは、図３に示すように、ニューラル電子回路ＮＮにおいて、ｍ行×ｎ列に２次元の演算器アレイとして設定される。
【００４６】
行列（１，１）、（１，２）、・・・、（１，ｎ）のプロセスエレメント部Ｐｅには、入力データＩ１が共通で入力される結線になっている。行列（２，１）、（２，２）、・・・、（２，ｎ）のプロセスエレメント部Ｐｅには、入力データＩ２が共通で入力される結線になっている。行列（ｍ，１）、（ｍ，２）、・・・、（ｍ，ｎ）のプロセスエレメント部Ｐｅには、入力データＩｍが共通で入力される結線になっている。
【００４７】
プロセスエレメント部Ｐｅは、対応するメモリセル１０から出力される１ビットの重み付け係数と、１ビットの入力データとの排他的論理和（ＸＮＯＲ）を乗算結果として算出して出力する。
【００４８】
なお、接続有無情報用のメモリセルからの接続無情報（例えば、「ＮＣ」を意味する所定値）が出力された場合、加算活性化部Ａｃｔにおいて、乗算結果が加算されない。例えば、乗算結果と接続有無情報とが交互にペアで出力されてもよい。また、接続有無情報に関して、プロセスエレメント部Ｐｅから加算活性化部Ａｃｔへ、乗算結果とは独立の結線を有し、乗算結果と接続有無情報とは別々に出力されてもよい。
【００４９】
なお、プロセスエレメント部Ｐｅで、乗算結果の部分和を計算するとき、接続有無情報用のメモリセルからの接続無情報（例えば、「ＮＣ」を意味する所定値）が出力された場合、乗算結果の部分和に加算されない。
【００５０】
このように、プロセスエレメント部Ｐｅは、前記並列の各入力データに設定された電子回路部であって、前記記憶部から出力された重み付け係数と前記入力データとを乗算する乗算機能を実現する第１電子回路部の一例として機能する。プロセスエレメント部Ｐｅは、前記入力データの値と前記記憶部から出力された値とが一致する場合に前記入力データの入力に対応して「１」を出力し、前記入力データの値と前記記憶部から出力された値とが異なる場合に前記入力データの入力に対応して「０」を出力する第１電子回路部の一例として機能する。プロセスエレメント部Ｐｅは、前記入力データの値と前記記憶部から出力された値とが一致する場合に前記入力データの入力に対応して「１」を出力し、前記入力データの値と前記記憶部から出力された値とが異なる場合に前記入力データの入力に対応して「０」を出力し、前記所定値が前記記憶部から出力された場合に前記入力データの入力に対応して当該所定値を出力する第１電子回路部の一例として機能する。
【００５１】
プロセスエレメント・コラムＰＣ１、・・・、ＰＣｎは、各プロセスエレメント部Ｐｅからの乗算結果または一部の乗算結果を加算した部分和結果等を加算活性化部Ａｃｔに出力する。
【００５２】
なお、プロセスエレメント部Ｐｅに対応する多数判定入力回路の構成および機能の詳細は、図１５以降、特に、図２１および図２２等の多数判定入力回路１２に関する記述部分等で後述する。ちなみに、多数判定入力回路１２は、対応する接続有無情報用のメモリセルから出力される接続有無情報をそのまま出力したり、対応するメモリセル１０から出力される重み付け係数と入力データとの排他的論理和を算出し、出力データとして出力したりする。
【００５３】
図２および図３に示すように、加算活性化部Ａｃｔは、並列で出力される各出力データＯ１、・・・、Ｏｎに応じて配置されている。
【００５４】
加算活性化部Ａｃｔは、プロセスエレメント・コラムから逐次出力される乗算結果を、接続有無情報に基づき加算して、加算結果に活性化関数を適用して１ビットの出力データを出力メモリアレイ部ＭＡｏに出力する。プロセスエレメント部Ｐｅが乗算結果の部分和を出力する場合、加算活性化部Ａｃｔは、プロセスエレメント・コラムから逐次出力される乗算結果を加算して、加算結果に活性化関数を適用して１ビットの出力データを出力メモリアレイ部ＭＡｏに出力する。
【００５５】
加算活性化部Ａｃｔは、プロセスエレメント・コラムにおいて、入力データの１サイクル単位で、乗算結果として「１」を算出した回数から、乗算結果として「０」を算出した回数を減じた値が予め定められた閾値以上の場合に「１」を出力データとして出力し、減じた値が閾値未満の場合に「０」を前記出力データとして出力する。
【００５６】
このように、加算活性化部Ａｃｔは、前記並列の各入力データの前記第１電子回路部からの各乗算結果を加算し、かつ、当該加算結果に活性化関数を適用して１ビットの出力データを出力する加算・適用機能を実現する第２電子回路部の一例として機能する。加算活性化部Ａｃｔは、並列で出力される前記並列の各出力データに応じて配置された第２電子回路部の一例として機能する。加算活性化部Ａｃｔは、前記並列の各入力データに設定された複数の第1電子回路部において、前記入力データが入力されるサイクル単位で、前記第1電子回路部が「１」を算出した回数から、前記第1電子回路部が「０」を算出した回数を減じた値が予め定められた閾値以上の場合に「１」を前記出力データとして出力し、前記減じた値が前記閾値未満の場合に「０」を前記出力データとして出力する第２電子回路部の一例として機能する。
【００５７】
なお、加算活性化部Ａｃｔの構成および機能の詳細は、図１５以降、特に図２１から図２７で後述する。ここで、加算活性化部Ａｃｔは、例えば、後に詳細に説明する直列多数判定回路１３に対応する。ちなみに、直列多数判定回路１３は、時間的に直列に順次入力される「１」または「０」の乗算結果に対して、「１」または「０」の数に関する判定を行う。
【００５８】
図３に示すように、ビットシリアル入力の並列化が行われ、プロセスエレメント部Ｐｅの行が入力データに対して共有し、プロセスエレメント部Ｐｅの列である各プロセスエレメント・コラムが独立して出力データを出力する。
【００５９】
（１．３  プロセスエレメント・コラムの構成および機能）
次に、プロセスエレメント・コラムの構成および機能について、図４および図５を用いて説明する。
【００６０】
図４は、図３のプロセスエレメント・コラムの一例を示すブロック図である。図５は、図４のプロセスエレメントの動作のタイミングの一例を示す模式図である。
【００６１】
図４に示すように、プロセスエレメント・コラムＰＣ１のようなプロセスエレメント・コラムは、フェーズ１として計算を行う複数のプロセスエレメント部Ｐｅと、フェーズ１での計算結果の転送を行うフェーズ２の複数のフリップフロップＦｐ（一時記憶部の一例）およびセレクタＳｅと、を有する。
【００６２】
フリップフロップＦｐは、各プロセスエレメント部Ｐｅの出力側に接続され、プロセスエレメント部Ｐｅの乗算結果または部分和結果を一時的に記憶する。フリップフロップＦｐは、１行目のプロセスエレメント部Ｐｅからｎ行目のプロセスエレメント部Ｐｅに対応して、セレクタＳｅを介して直列に接続されている。ｎ行目のフリップフロップＦｐは、加算活性化部Ａｃｔに接続されている。なお、これらの接続が、図２において、プロセスエレメント部Ｐｅ間を太線で示した部分の機能の一例である。
【００６３】
セレクタＳｅは、プロセスエレメント部Ｐｅ間に配置され、上流のフリップフロップＦｐからのデータと、プロセスエレメント部Ｐｅからのデータとを切り替える。
【００６４】
図５に示すように、フェーズ１において、各フリップフロップＦｐで乗算等の計算が行われ、セレクタＳｅは、入力側のフリップフロップＦｐのデータを選択して、フリップフロップＦｐに計算結果が出力される。次に、フェーズ２において、セレクタＳｅは、上流のフリップフロップＦｐのデータを選択する。これにより、入力並列数ｍ個のサイクル単位のタイミングで、計算結果が加算活性化部Ａｃｔに逐次転送され、計算結果の転送が行われる。
【００６５】
このように、フリップフロップＦｐは、前記第１電子回路部毎に、各前記第１電子回路部からの前記乗算結果を一時記憶する一時記憶部の一例として機能する。フリップフロップＦｐは、直列に設定され、前記乗算結果を前記第２電子回路部へ順次転送する一時記憶部の一例として機能する。
【００６６】
なお、各プロセスエレメント部Ｐｅからの乗算結果が直接、加算活性化部Ａｃｔに供給されてもよい。この場合、加算活性化部Ａｃｔは、各入力データが入力される並列多数判定回路である。並列多数判定回路２０の詳細については、後述する。ちなみに、並列多数判定回路２０は、並列で入力される「１」または「０」の乗算結果に対して、「１」または「０」の数に関する判定を行う。
【００６７】
（２．４  プロセスエレメントおよび加算活性化部の回路構成）
次に、プロセスエレメントおよび加算活性化部の回路構成について、図６Ａおよび図６Ｂを用いて説明する。
【００６８】
図６Ａに示すように、プロセスエレメント部Ｐｅは、ＸＮＯＲ素子ｐｅ１と、セレクタｐｅ２と、加算器ｐｅ３と、フリップフロップｐｅ４と、を有する。
【００６９】
ＸＮＯＲ素子ｐｅ１は、１ビットの重み付け係数（例えば、ｗ１）と、１ビットの入力データ（例えば、ｉ１）との排他的論理和を乗算結果として算出して出力する。
【００７０】
セレクタｐｅ２は、乗算結果に基づき、値（０、１）を、正負の値（−１、１）または（１、−１）に変換する。例えば、セレクタｐｅ２は、乗算結果が「０」の場合、「−１」を選択し、乗算結果が「１」の場合、「１」を選択する。
【００７１】
加算器ｐｅ３は、フリップフロップｐｅ４に一時記憶された前の値と、セレクタｐｅ２の出力値（１または−１）とを、例えば、１０ビット程度の精度で加算する。加算器ｐｅ３の加算結果は、フリップフロップｐｅ４に記憶される。例えば、加算器ｐｅ３およびフリップフロップｐｅ４は、入力データの並列数回ループして、乗算結果の部分和を、例えば、１０ビットで出力する。
【００７２】
次に、加算活性化部Ａｃｔの回路構成について、図６Ｂを用いて説明する。
【００７３】
図６Ｂに示すように、加算活性化部Ａｃｔは、セレクタａｃ１と、加算器ａｃ２と、フリップフロップａｃ３と、符号判定器ａｃ４と、セレクタａｃ５と、フリップフロップａｃ６と、を有する。
【００７４】
セレクタａｃ１は、加算器ａｃ２への入力を制御する。セレクタａｃ１は、各プロセスエレメント・コラムＰＣ１、・・・、ＰＣｎからの乗算結果の部分和のデータ（例えば、２０ビット）を入力とし、最後にフリップフロップａｃ６からのバイアスｂｉａｓの値を加算器ａｃ２で加算するように制御する。
【００７５】
加算器ａｃ２およびフリップフロップａｃ３により加算を行い、加算結果のデータ（例えば、３２ビット）を符号判定器ａｃ４に出力する。
【００７６】
符号判定器ａｃ４は、加算器ａｃ２およびフリップフロップａｃ３で乗算結果の部分和の総和と、フリップフロップａｃ６からのバイアスｂｉａｓの値とを加算された値の符号を判定し、１ビットの出力データを出力する。なお、ゼロの値の場合、符号は正としてもよい。
【００７７】
なお、セレクタａｃ５およびフリップフロップａｃ６は、バイアス用メモリアレイＭＡｂから出力されたバイアスｂｉａｓの値（例えば、３２ビット値）を、次の加算活性化部Ａｃｔに転送するか保持するかを制御する。
【００７８】
［３．ニューラル電子回路の適用例］
次に、ニューラル電子回路ＮＮにより、様々なタイプのニューラルネットワークを実現する実施例について説明する。
【００７９】
（３．１  コンボリューション演算を実現するニューラル電子回路）
次に、コンボリューション演算を実現するニューラル電子回路について、図７および図８を用いて説明する。
【００８０】
図７は、コンボリューション演算におけるデータの関係の一例を示す模式図である。図８は、図７のコンボリューション演算を実現するニューラル電子回路の一例を示すブロック図である。
【００８１】
図７に示すように、チャンネル数ＣＩの入力画像Ｉｉｍの入力データと、フィルタ画像Ｐａ、Ｐｂ、・・・、ＰＣＯの種類数ＣＯのフィルタデータとに対して、コンボリューション演算が行われる。ここで、ＲＧＢのようなカラーが画像の場合、チャンネル数は、３である。白黒画像の場合、チャンネル数は１である。CMYKカラーモデルの画像の場合、チャンネル数は４である。
【００８２】
図７に示すように、１ビットの値のｋ×ｋピクセルの入力画像Ｉｉｍに対して、個々の入力データｉ１、ｉ２、・・・、ｉｋ、・・・、ｉｋ２が形成される。なお、原画像に対して、ｋ×ｋピクセルの領域を順次切り出して、コンボリューション演算が原画像に対して行われる。ここで、コンボリューション演算は、第１関数を平行移動しながら第２関数に重ね足し合わせる二項演算である。例えば、入力画像Ｉｉｍが第１関数に対応して、フィルタ画像が第２関数に対応する。
【００８３】
ここで、図７において、入力データＩ１は、チャンネル１の入力データの総称を示し、入力データｉ１、ｉ２、・・・、ｉｋ、・・・、ｉｋ２は、チャンネル１に順次入力される１ビットの個々の入力データである。入力データＩ２は、チャンネル２の入力データの総称を示し、灰色のボックスで示す入力データｉ１、ｉ２、・・・、ｉｋ、・・・、ｉｋ２は、チャンネル２に順次入力される１ビットの個々の入力データである。
【００８４】
フィルタデータは、入力画像Ｉｉｍに対応して、１ビットの値のｋ×ｋピクセルのフィルタ画像Ｐａ、Ｐｂ、・・・、ＰＣＯである。カラーの場合、例えば、３チャンネル分の要素画像が一組で、ＣＯ個の種類のフィルタ画像が用意される。
【００８５】
１枚のｋ×ｋピクセルの入力画像Ｉｉｍと、１枚のｋ×ｋピクセルのフィルタ画像（例えば、１のフィルタ画像Ｐａ）から、コンボリューション演算により、１ビットの出力データが出力される。ＣＩ個のチャンネル毎の１ビットの出力データに対して、フィルタ画像のＣＯ種類分であるＣＩ×ＣＯ個の出力データが生成される。
【００８６】
図８に示すように、ニューラル電子回路ＮＮは、チャンネル数のプロセスエレメント部Ｐｅが並んだプロセスエレメント・コラムＰＣ１、ＰＣ２、・・・、ＰＣｃｏと、ＣＯ個の種類の各フィルタ画像に対応したメモリセルアレイ部ＭＣとを有する。制御部Ｃｎｔは、ニューラル電子回路ＮＮのうち、プロセスエレメント・コラムＰＣ１、ＰＣ２、・・・、ＰＣｃｏと、ＣＯ個のメモリセルアレイ部ＭＣとを、使用するように制御する。
【００８７】
メモリアクセス制御部ＭＣｎｔは、メモリセルアレイ部ＭＣのメモリセル１０の列（ｋ２個の行のメモリセル１０）に、重み付け係数として、フィルタ画像のｋ×ｋピクセルに対応した１ビットの値を、設定する。各チャンネルに対応したＣＩ個のメモリセルの列に、データが設定される。
【００８８】
メモリアクセス制御部ＭＣｎｔは、入力メモリアレイ部ＭＡｉに、チャンネル毎にｋ２個の入力データｉ１、ｉ２、・・・、ｉｋ、・・・、ｉｋ２を設定する。
【００８９】
ニューラル電子回路ＮＮは、先ず、チャンネル数ＣＩ個分の入力データを順次処理する。
【００９０】
具体的には、チャンネル１の入力データＩ１のうち入力データｉ１、ｉ２、・・・、ｉＣＩが、行列（１，１）、（１，２）、・・・、（１，ＣＯ）の各プロセスエレメント部Ｐｅに順次入力される。
【００９１】
入力データｉ１、ｉ２、・・・、ｉＣＩに同期して、行列（１，１）のプロセスエレメント部Ｐｅに、メモリセルアレイ部ＭＣから出力された重み付け係数ｗ１、ｗ２、・・・、ｗＣＩも順次入力される。
【００９２】
このように、メモリセルアレイ部ＭＣが、前記第１電子回路部に順次入力される前記入力データに対応した重み付け係数を、前記第１電子回路部に順次出力する記憶部の一例として機能する。
【００９３】
図５に示すように、フェーズ１で、プロセスエレメント・コラムＰＣ１に、おいては、行列（１，１）のプロセスエレメント部Ｐｅが、乗算結果ｉ１×ｗ１、ｉ２×ｗ２、・・・、ｉＣＩ×ｗＣＩを算出し、チャンネル数ＣＩ個分の和であるチャンネル１の部分和ｉ１×ｗ１＋ｉ２×ｗ２＋・・・＋ｉＣＩ×ｗＣＩを算出する。部分和ｉ１×ｗ１＋ｉ２×ｗ２＋・・・＋ｉＣＩ×ｗＣＩは、並列で入力される入力データの入力並列数分、乗算結果を加算した部分加算結果の一例である。
【００９４】
チャンネル２の入力データＩ２のうち、図８中、グレイの四角形で示した入力データｉ１、ｉ２、・・・、ｉＣＩが、行列（２，１）、（２，２）、・・・、（２，ＣＯ）の各プロセスエレメント部Ｐｅに順次入力される。行列（２，１）のプロセスエレメント部Ｐｅが、チャンネル２の入力データＩ２に対して、乗算結果を算出し、チャンネル２の部分和を算出する。
【００９５】
チャンネルＣＩに関しても、行列（ＣＩ，１）のプロセスエレメント部Ｐｅが、チャンネルＣＩの入力データＩＣＩに対して、乗算結果を算出し、部分和を算出する。
【００９６】
このように、プロセスエレメント部Ｐｅが、並列で入力される前記入力データの入力並列数分、前記乗算結果を加算した部分加算結果を出力する第１電子回路部の一例として機能する。
【００９７】
次に、フェーズ２で、プロセスエレメント・コラムＰＣ１は、行列（１，１）、（２，１）、・・・、（ＣＩ，１）の各プロセスエレメント部Ｐｅから出力されたチャンネル毎の部分和を順に加算活性化部Ａｃｔに転送する。
【００９８】
フェーズ１の次の計算では、入力データｉＣＩ＋１、ｉＣＩ＋２、・・・、ｉ２ＣＩに対して、行列（１，１）のプロセスエレメント部Ｐｅが、乗算結果ｉＣＩ＋１×ｗＣＩ＋１、ｉＣＩ＋２×ｗＣＩ＋２、・・・、ｉ２ＣＩ×ｗ２ＣＩを算出し、部分和ｉＣＩ＋１×ｗＣＩ＋１＋ｉＣＩ＋２×ｗＣＩ＋２＋・・・＋ｉ２ＣＩ×ｗ２ＣＩを算出する。
【００９９】
ｋ２目の入力データまで、チャンネル数ＣＩ個分の入力データで、乗算結果および部分和を算出して転送する。ｋ×ｋピクセルの入力画像に対してｋ２サイクル単位のシリアル入力が形成され、各フィルタ画像に対して、１画素分、出力される。
【０１００】
プロセスエレメント・コラムＰＣ２等も、同様に部分和を算出して加算活性化部Ａｃｔに転送する。
【０１０１】
加算活性化部Ａｃｔは、チャンネル毎に部分和の和を計算して、入力データｋ２個に対する総和をコンボリューション演算の結果として算出する。加算活性化部Ａｃｔは、入力データの重み付け総和に閾値であるバイアスｂｉａｓの値を加え、活性化関数を適用として、例えば、符号が正の値の場合（すなわち、所定の閾値を超えた場合）、「１」を、符号が負の値の場合（すなわち、所定の閾値を超えない場合）は「０」を、出力データＯｏａ等として、出力メモリアレイ部ＭＡｏに出力する。入力画像Ｉｉｍとフィルタ画像Ｐａとに対する出力結果が、出力データｏａである。入力画像Ｉｉｍとフィルタ画像Ｐｂとに対する出力結果が、出力データｏｂである。各チャネル毎に、出力データが計算される。なお、出力データｏａ等が、コンボリューション演算の結果として設定されてもよい。
【０１０２】
このように、加算活性化部Ａｃｔは、前記部分加算結果から前記加算結果を算出する第２電子回路の一例として機能する。
【０１０３】
出力メモリアレイ部ＭＡｏは、チャンネル数ＣＩ個分の出力データｏａ、・・・を１ワードとして記憶する。出力メモリアレイ部ＭＡｏは、フィルタ画像Ｐａ、Ｐｂ、・・・、ＰＣＯ毎に、１ワードの出力データｏａ、・・・、１ワードの出力データｏｂ、・・・、・・・を記憶する。
【０１０４】
（３．２  フル結合のニューラルネットワークを実現するニューラル電子回路）
次に、ニューロン層間のニューロン同士がフル結合したフル結合のニューラルネットワークを実現するニューラル電子回路について、図９および図１０を用いて説明する。
【０１０５】
図９は、フル結合のニューラルネットワークの一例を示す模式図である。図１０は、図９のフル結合のニューラルネットワークを実現するニューラル電子回路の一例を示すブロック図である。
【０１０６】
Ｍ×Ｎのニューラル電子回路ＮＮで、入力並列数Ｍ個以上の入力で、出力並列数Ｎ個以上の出力のフル結合のニューラルネットワークを実現する場合について説明する。例えば、図９は、ＡＭ×ＢＮのフル結合のニューラルネットワークでＭ＝３、Ｎ＝２で、Ａ＝２、Ｂ＝３の一例を示している。
【０１０７】
図１０に示すように、ニューラル電子回路ＮＮは、入力並列数Ｍ個のプロセスエレメント部Ｐｅが並んだプロセスエレメント・コラムと、出力並列数Ｎ個のプロセスエレメント・コラムＰＣ１、ＰＣ２、・・・、ＰＣＮと、出力並列数Ｎ個のメモリセルアレイ部ＭＣとを有する。制御部Ｃｎｔは、ニューラル電子回路ＮＮのうち、プロセスエレメント・コラムＰＣ１、ＰＣ２、・・・、ＰＣＮと、Ｎ個のメモリセルアレイ部ＭＣと、を使用するように制御する。ここで、入力並列数Ｍ個が、入力可能並列数の一例で、出力並列数Ｎ個が、出力可能並列数の一例である。
【０１０８】
メモリアクセス制御部ＭＣｎｔは、入力メモリアレイ部ＭＡｉに、並列に入力データｉ１、ｉ２、・・・、ｉＭを設定して、次のｉＭ＋１、ｉＭ＋２、・・・、ｉ２Ｍを設定して、次々に、入力データｉＡＭまで、を設定する。メモリアクセス制御部ＭＣｎｔは、入力データｉ１から入力データｉＡＭまでを、Ｂ個回繰り返して、入力メモリアレイ部ＭＡｉにデータを設定する。
【０１０９】
メモリアクセス制御部ＭＣｎｔは、メモリセルアレイ部ＭＣのメモリセル１０の列（Ａ×Ｂ個の行のメモリセル１０）に、Ａ×Ｂ個の重み付け係数の１ビットの値を、予め設定する。例えば、メモリアクセス制御部ＭＣｎｔは、メモリセルアレイ部ＭＣのメモリセルの列のメモリセル１０に、入力データｉ１、ｉＭ＋１、ｉ２Ｍ＋１、・・・、ｉ（Ａ-１）Ｍ＋１に対応して重み付け係数ｗ１、ｗＭ＋１、ｗ２Ｍ＋１、・・・、ｗ（Ａ-１）Ｍ＋１をＢ個回繰り返した重み付け係数を設定する。入力並列数Ｍ個のメモリセルの列に、データが予め設定される。
【０１１０】
ニューラル電子回路ＮＮは、先ず、入力並列数Ｍ個分の入力データを並列処理する。
【０１１１】
具体的には、入力データｉ１が、行列（１，１）、（１，２）、・・・、（１，Ｎ）の各プロセスエレメント部Ｐｅに入力される。入力データｉ２が、行列（２，１）、（２，２）、・・・、（２，Ｎ）の各プロセスエレメント部Ｐｅに入力される。入力データｉＭが、行列（Ｍ，１）、（Ｍ，２）、・・・、（Ｍ，Ｎ）の各プロセスエレメント部Ｐｅに入力される。
【０１１２】
入力データｉ１に同期して、行列（１，１）のプロセスエレメント部Ｐｅに、メモリセルアレイ部ＭＣから出力された重み付け係数ｗ１も入力される。入力データｉ２に同期して、行列（２，１）のプロセスエレメント部Ｐｅに、メモリセルアレイ部ＭＣから出力された重み付け係数ｗ２も入力される。入力データｉＭに同期して、行列（Ｍ，１）のプロセスエレメント部Ｐｅに、メモリセルアレイ部ＭＣから出力された重み付け係数ｗＭも入力される。
【０１１３】
このように、メモリセルアレイ部ＭＣが、並列で入力される並列の各前記入力データに対応した重み付け係数を、各前記第１電子回路部に出力する記憶部の一例として機能する。
【０１１４】
図５に示すように、フェーズ１で、プロセスエレメント・コラムＰＣ１においては、行列（１，１）のプロセスエレメント部Ｐｅが、乗算結果ｉ１×ｗ１を算出し、行列（２，１）のプロセスエレメント部Ｐｅが、乗算結果ｉ２×ｗ２を算出し、行列（Ｍ，１）のプロセスエレメント部Ｐｅが、乗算結果ｉＭ×ｗＭを算出する。
【０１１５】
次に、フェーズ２で、プロセスエレメント・コラムＰＣ１は、行列（１，１）、（２，１）、・・・、（Ｍ，１）の各プロセスエレメント部Ｐｅから出力された乗算結果ｉ１×ｗ１、乗算結果ｉ２×ｗ２、・・・、乗算結果ｉＭ×ｗＭを、乗算結果ｉＭ×ｗＭから順に加算活性化部Ａｃｔに転送する。
【０１１６】
次に、加算活性化部Ａｃｔは、出力データＯ１に関して、Ａ×Ｍ個の総和に対して、Ｍ個分の和である部分和ｉ１×ｗ１＋ｉ２×ｗ２＋・・・＋ｉＭ×ｗＭを生成する。
【０１１７】
プロセスエレメント・コラムＰＣ２においては、フェーズ１で、行列（１，２）のプロセスエレメント部Ｐｅが、入力データｉ１に関する乗算結果を算出し、行列（２，２）のプロセスエレメント部Ｐｅが、入力データｉ２に関する乗算結果を算出し、行列（Ｍ，２）のプロセスエレメント部Ｐｅが、入力データｉＭに関する乗算結果を算出する。
【０１１８】
次に、フェーズ２で、プロセスエレメント・コラムＰＣ２は、行列（１，２）、（２，２）、・・・、（Ｍ，２）の各プロセスエレメント部Ｐｅから出力された各乗算結果を、入力データｉＭに関する乗算結果から順に加算活性化部Ａｃｔに転送する。
【０１１９】
次に、加算活性化部Ａｃｔは、出力データＯ２に関して、Ｍ個の分の和である部分和を生成する。
【０１２０】
プロセスエレメント・コラムＰＣＮにおいても同様に、乗算結果が算出される。
【０１２１】
次の入力データを入力するタイミングで、フェーズ１で、プロセスエレメント・コラムＰＣ１においては、行列（１，１）のプロセスエレメント部Ｐｅが、乗算結果ｉＭ＋１×ｗＭ＋１を算出し、行列（２，１）のプロセスエレメント部Ｐｅが、乗算結果ｉＭ＋２×ｗＭ＋２を算出し、行列（Ｍ，１）のプロセスエレメント部Ｐｅが、乗算結果ｉ２Ｍ×ｗ２Ｍを算出する。
【０１２２】
次に、フェーズ２で、プロセスエレメント・コラムＰＣ１は、行列（１，１）、（２，１）、・・・、（Ｍ，１）の各プロセスエレメント部Ｐｅから出力された乗算結果ｉＭ＋１×ｗＭ＋１、乗算結果ｉＭ＋２×ｗＭ＋２、・・・、乗算結果ｉ２Ｍ×ｗ２Ｍを、乗算結果ｉ２Ｍ×ｗ２Ｍから順に加算活性化部Ａｃｔに転送する。
【０１２３】
次に、加算活性化部Ａｃｔは、出力データＯ１に関して、部分和ｉＭ＋１×ｗ１＋ｉＭ＋２×ｗＭ＋２＋・・・＋ｉ２Ｍ×ｗ２Ｍを生成する。
【０１２４】
以上、Ａ×Ｍ番目の入力データｉＡＭまで、繰り返し、各加算活性化部Ａｃｔは、部分和の総和を計算して、閾値であるバイアスｂｉａｓの値を加え、活性化関数を適用として、例えば、符号が正の値の場合（すなわち、所定の閾値を超えた場合）、「１」を、符号が負の値の場合（すなわち、所定の閾値を超えない場合）は「０」とした出力データｏ１、・・・ｏＮを算出して、出力メモリアレイ部ＭＡｏに出力する。
【０１２５】
出力データｏＮ＋１、ｏＮ＋２、・・・ｏＮ＋１に関しても、上記のように、入力データｉ１から入力データｉＡＭまで処理をして、各加算活性化部Ａｃｔは、Ａ個の部分和の総和を計算して、活性化関数を適用して、出力データｏＮ＋１、ｏＮ＋２、・・・ｏＮ＋１を算出して、出力メモリアレイ部ＭＡｏに出力する。
【０１２６】
同様な計算で、ニューラル電子回路ＮＮは、出力データｏＢＮまで計算する。Ａ×Ｍ個の入力データに対して、Ｍ個の並列入力で、Ａ×Ｂサイクル単位のシリアル入力が形成され、Ｂ×Ｎ個の出力データに対して、Ｎ個の並列出力で、Ｂ個出力される。
【０１２７】
このように、メモリセルアレイ部ＭＣが、前記入力データを並列で一度に入力可能な入力可能並列数より、前記入力データの入力並列数が大きい場合、前記残りの入力データに対応する前記重み付け係数を出力する記憶部の一例として機能する。プロセスエレメント部Ｐｅが、前記入力可能並列数の並列で前記入力データを受け入れた後、前記入力可能並列数の並列で受け入れできなかった残りの前記入力データを入れ受け入れる前記第１電子回路部の一例として機能する。
【０１２８】
（３．３  コア電子回路同士の連結）
次に、コア電子回路Ｃｏｒｅ同士の連結により、ニューロン層における層内拡張をしたニューラルネットワーク、層数を拡張するニューラルネットワークを実現する実施例について図を用いて説明する。
【０１２９】
図１１は、ニューラルネットワークの層内拡張の一例を示す模式図である。図１２は、図１１の層内拡張を実現するコア電子回路の接続の一例を示すブロック図である。図１３は、ニューラルネットワークの層数拡張の一例を示す模式図である。図１４は、図１３の層数拡張を実現するコア電子回路の接続の一例を示すブロック図である。
【０１３０】
図１１に示すように、出力側の層内拡張するためには、図１２に示すように、入力データに対して、コア電子回路Ｃｏｒｅを並列に接続すればよい。
【０１３１】
図１１に示すように、入力３個×出力２個の２層のニューラルネットワークと、入力３個×出力４個の２層のニューラルネットワークと、並列に接続してもよいし、入力３個×出力３個の２層のニューラルネットワークと、入力３個×出力３個の２層のニューラルネットワークと、並列に接続してもよい。
【０１３２】
図１３に示すように、層数拡張するためには、図１４に示すように、コア電子回路Ｃｏｒｅを直列に接続すればよい。
【０１３３】
図１３に示すように、入力３個×出力２個の２層のニューラルネットワークと、入力２個×出力４個の２層のニューラルネットワークと、を直列に接続する。
【０１３４】
実際の接続は、メモリアクセス制御部ＭＣｎｔを介して、システムバスｂuｓによって接続される。更に、メモリアクセス制御部ＭＣｎｔが、入力メモリアレイ部ＭＡｉおよびメモリセルアレイ部ＭＣを設定して、コア電子回路Ｃｏｒｅの並列接続または直列接続を実現する。
【０１３５】
以上説明したように、本実施形態によれば、１ビットの入力データの値とメモリセルアレイ部ＭＣから出力された値とが一致する場合に入力データの入力に対応して「１」を出力し、入力データの値とメモリセルアレイ部ＭＣから出力された値とが異なる場合に入力データの入力に対応して「０」を出力することにより、乗算機能を実現するため、回路規模を縮小でき、並列で入力される並列の各入力データに応じて設定されたプロセスエレメント部Ｐｅにより、様々なタイプのニューラルネットワークを実現できる。
【０１３６】
また、シナプスを独立に、ニューロンの入力を行方向に共有したアレイ構造のプロセスエレメント部Ｐｅにより、コンボリューション演算とフル結合演算の両計算を効率化させることができる。
【０１３７】
また、メモリセルアレイ部ＭＣおよび加算活性化部Ａｃｔが、並列で出力される並列の各出力データに応じて設定された場合、コンボリューション型や、フル結合等の多様性を有するニューラル電子回路を容易に実現することができる。
【０１３８】
各プロセスエレメント部Ｐｅからの乗算結果を一時記憶するフリップフロップＦｐを備え、各フリップフロップＦｐが、直列に設定され、乗算結果を加算活性化部Ａｃｔへ順次転送する場合、更に配線が単純になり、回路面積が小さくなるので、回路規模を縮小できる。また、配線が単純になるので、製造コストが減少する。
【０１３９】
また、部分加算等の途中計算結果を、プロセスエレメント・コラムにおいて、列方向に伝播させる制御で、演算器であるフリップフロップＦｐの使用率を最大化させることができる。
【０１４０】
加算活性化部Ａｃｔが、並列の各入力データに設定された複数のプロセスエレメント部Ｐｅにおいて、入力データが入力されるサイクル単位で、加算活性化部Ａｃｔが「１」を算出した回数から、加算活性化部Ａｃｔが「０」を算出した回数を減じた値が予め定められた閾値以上の場合に「１」を出力データとして出力し、減じた値が閾値未満の場合に「０」を出力データとして出力する場合、回路規模を縮小した活性化関数を実現できる。
【０１４１】
メモリセルアレイ部ＭＣが、「１」または「０」の重み付け係数、および、ニューロン間の接続の有無を示す所定値の組を複数記憶し、当該重み付け係数および当該所定値を出力し、プロセスエレメント部Ｐｅが、入力データの値とメモリセルアレイ部ＭＣから出力された値とが一致する場合に入力データの入力に対応して「１」を出力し、入力データの値とメモリセルアレイ部ＭＣから出力された値とが異なる場合に入力データの入力に対応して「０」を出力し、所定値がメモリセルアレイ部ＭＣから出力された場合に入力データの入力に対応して当該所定値を出力する場合、「１」をプラス値、「０」をマイナス値に対応させ、シナプスの接続の有無を表現できるニューラル電子回路が実現できる。
【０１４２】
メモリセルアレイ部ＭＣが、プロセスエレメント部Ｐｅに順次入力される入力データに対応した重み付け係数を、プロセスエレメント部Ｐｅに順次出力する場合、フィルタ画像に対応したメモリセルアレイ部ＭＣの重み付け係数に、コンボリューション演算の一方の関数の値を設定し、入力画像に対応した入力データに、コンボリューション演算の他方の関数の値を設定することにより、コンボリューションニューラル電子回路が実現できる。
【０１４３】
プロセスエレメント部Ｐｅが、並列で入力される入力データの入力並列数分、乗算結果を加算した部分加算結果を出力し、加算活性化部Ａｃｔが、部分加算結果から加算結果を算出する場合、多チャンネルのコンボリューション演算を実現でき、カラー画像等の入力データに対応できる。
【０１４４】
メモリセルアレイ部ＭＣが、並列で入力される並列の各入力データに対応した重み付け係数を、各プロセスエレメント部Ｐｅに出力する場合、フル結合のニューラル電子回路が実現できる。
【０１４５】
入力データを並列で一度に入力可能な入力可能並列数より、入力データの入力並列数が大きいとき、プロセスエレメント部Ｐｅは、入力可能並列数の並列で入力データを受け入れた後、入力可能並列数の並列で受け入れできなかった残りの入力データを受け、メモリセルアレイ部ＭＣは、残りの入力データに対応する重み付け係数を出力する場合、少数の電子回路で、より多くの並列入力数を有するニューラル電子回路が実現できる。
【０１４６】
プロセスエレメント部Ｐｅが格納されたコア電子回路Ｃｏｒｅを、制御部Ｃｎｔまたはメモリアクセス制御部ＭＣｎｔでコントロールし、任意の大きさのネットワークを計算することができる。また、コア電子回路Ｃｏｒｅの入出力を制御部Ｃｎｔまたはメモリアクセス制御部ＭＣｎｔでコントロールし、複数のコア電子回路Ｃｏｒｅに展開することができる。
【０１４７】
［４．メモリセル、メモリセルブロック等の詳細な構成および機能］
次に、メモリセル１０、接続有無情報用のメモリセル、メモリセルブロックＣＢに関係するメモリセルブロック１５、メモリセルアレイＭＣ、プロセスエレメント部Ｐｅ、および、加算活性化部Ａｃｔ等に関連する詳細な構成および機能について、図を用いて説明する。
【０１４８】
なお、プロセスエレメント部Ｐｅは、多数判定入力回路１２に関係し、加算活性化部Ａｃｔは、下記に示される直列多数判定回路１３に関係する。下記に示されるニューラルネットワーク回路およびニューラルネットワーク集積回路は、ニューラル電子回路ＮＮに関係する。
【０１４９】
（Ｉ）メモリセル等の実施形態
メモリセル等の実施形態について、図１５乃至図２０を用いて説明する。なお、図１５は実施形態に係るニューラルネットワーク回路を示す図であり、図１６は当該ニューラルネットワーク回路の細部構成を示す図である。また、図１７は実施形態に係るニューラルネットワーク集積回路の第１例を示す図であり、図１８は当該ニューラルネットワーク集積回路の第２例を示す図であり、図１９は当該ニューラルネットワーク集積回路の第３例を示す図であり、図２０は当該ニューラルネットワーク集積回路の第４例を示す図である。
【０１５０】
そして、以下に説明する実施形態等に係るニューラルネットワーク回路又はニューラルネットワーク集積回路は、図１を用いて説明した一般的なニューラルネットワークを、上記非特許文献１又は非特許文献２に記載されている手法によりバイナリ化したニューラルネットワーク回路又はニューラルネットワーク集積回路によりモデル化するものである。
【０１５１】
（Ａ）実施形態に係るニューラルネットワーク回路について
次に、実施形態に係るニューラルネットワーク回路について、図１５及び図１６を用いて例示しつつ説明する。ここで、入力データＩ1乃至入力データＩn又は入力データＩmに共通の事項を説明する場合、単に「入力データＩ」と称する。出力データＯ1乃至出力データＯn又は出力データＯmに共通の事項を説明する場合、単に「出力データＯ」と称する。重み付け係数Ｗ1乃至重み付け係数Ｗn又は重み付け係数Ｗmに共通の事項を説明する場合、単に「重み付け係数Ｗ」と称する。
【０１５２】
図１５（ａ）に示すように、当該ニューラルネットワーク回路に相当するニューラルネットワークＳでは、一つのニューロンＮＲに対して例えば四つの他のニューロンＮＲから１ビットの入力データＩがそれぞれ入力され、それに対応する出力データＯが当該ニューロンＮＲから出力される。このとき入力データＩは、その出力元のニューロンＮＲから見れば１ビットの出力データＯとなる。また１ビットの出力データＯは、その出力先のニューロンＮＲから見ると１ビットの入力データＩとなる。上記の通り入力データＩ及び出力データＯはそれぞれ１ビットであるため、入力データＩの値及び出力データＯの値は、いずれも「０」又は「１」のいずれかである。そして、図１５（ａ）において四つの入力データＩが入力されているニューロンＮＲ（図１５（ａ）においてハッチングで示される）において実行される上記乗算処理等に相当する上記式（１）は、上記式（１）においてｎ＝４とした場合の式である。即ち上記ニューラルネットワークＳは、並列多入力−一出力型の一段ニューラルネットワークである。
【０１５３】
次に、図１５（ａ）に示すニューラルネットワークＳにおいてハッチングで示されるニューロンＮＲに相当する実施形態に係るニューラルネットワーク回路の構成を、図１５（ｂ）にニューラルネットワーク回路ＣＳとして示す。当該ニューラルネットワーク回路ＣＳは、各々が１ビットの入力データＩ1乃至入力データＩ4にそれぞれ対応する四つのメモリセル１と、多数判定回路２と、により構成される。このとき、各メモリセル１が本発明に係る「第１回路部」の一例、「記憶部」の一例及び「出力部」の一例に、それぞれ相当する。また上記多数判定回路２が、本発明に係る「第２回路部」の一例に相当する。この構成において各メモリセル１は、「１」、又は「０」、或いは「ＮＣ」を意味する所定値の三つのいずれか一つを記憶値として記憶すると共に、比較機能を有する三値のメモリセルである。そして各メモリセル１は、それぞれへの入力データＩの値と、それぞれの記憶値と、に応じた値を有する出力データＥ1乃至出力データＥ4を、多数判定回路２にそれぞれ出力する。
【０１５４】
ここで、メモリセル１の記憶値の一つである上記所定値が意味する上記「ＮＣ」は、実施形態に係るニューラルネットワークＳにおける二つのニューロンＮＲ間に接続がない状態である。即ち、そのメモリセル１が対応している二つのニューロンＮＲ（即ち入力ニューロンと出力ニューロン）が接続されていない場合、そのメモリセル１の記憶値は上記所定値に設定される。一方、メモリセル１の他の記憶値（「１」又は「０」）のいずれをそのメモリセル１に記憶させておくかは、そのメモリセル１が対応している接続により接続される二つのニューロンＮＲ間の当該接続における重み係数Ｗに基づいて設定される。ここで各メモリセル１にどのような記憶値を記憶させておくかは、ニューラルネットワークＳとしてどのような脳機能をモデル化するか（より具体的には、例えばニューラルネットワークＳを構成するニューロンＮＲ間の接続状態等）等に基づいて予め設定されている。なお以下の説明において、出力データＥ1乃至出力データＥnに共通の事項を説明する場合、単に「出力データＥ」と称する。
【０１５５】
そして、各メモリセル１における上記記憶値及びそれぞれに入力される入力データＩの値と、各メモリセル１から出力される出力データＥの値と、の間の関係は、図１５（ｃ）に真理値表を示す関係とされる。即ち各メモリセル１は、当該各メモリセル１の記憶値と入力データＩの値との排他的否定論理和を当該各メモリセル１から出力データＥとして出力する。また各メモリセル１の記憶値が上記所定値である場合、そのメモリセル１からは、入力データＩがいずれの値であっても当該所定値が出力データＥとして多数判定回路２に出力される。なお、各メモリセル１の細部構成については、後ほど図１６（ａ）を用いて説明する。
【０１５６】
次に多数判定回路２は、各メモリセル１からの出力データＥの値に基づき、値「１」の出力データＥの数が値「０」の出力データＥの数より大きい場合にのみ値「１」の出力データＯを出力し、それ以外の場合に値「０」の出力データＯを出力する。このとき、値「１」の出力データＥの数が値「０」の出力データＥの数より大きい場合以外の場合とは、具体的には、いずれかのメモリセル１から値「ＮＣ」が出力されている場合、又は各メモリセル１からの値「１」の出力データＥの数が値「０」の出力データＥの数以下の場合、のいずれかである。なお多数判定回路２及び各メモリセル１を含むニューラルネットワーク回路ＣＳの細部構成については、後ほど図１６（ｂ）を用いて説明する。
【０１５７】
ここでニューラルネットワーク回路ＣＳは上述したように、図１５（ａ）においてハッチングで示されるニューロンＮＲにおける上記乗算処理、加算処理及び活性化処理をモデル化した回路である。そして、各メモリセル１からの上記排他的否定論理和としての出力データＥの出力が上記重み付け係数Ｗを用いた上記乗算処理に相当する。また多数判定回路２は、値「１」の出力データＥの数と値「０」の出力データＥの数とを比較する比較処理の前提として、値「１」の出力データＥの数を加算してその合計値を算出すると共に、値「０」の出力データＥの数を加算してその合計値を算出する。これらの加算が上記加算処理に相当する。そして多数判定回路２において、値「１」の出力データＥ及び値「０」の出力データＥそれぞれの数の上記合計値を比較し、前者の数から後者の数を減じた値が予め設定された多数判定閾値以上の場合にのみ、値「１」の出力データＯを多数判定回路２から出力する。一方それ以外の場合、即ち値「１」の出力データＥの数の合計値から値「０」の出力データＥの数の合計値を減じた値が多数判定閾値未満の場合に値「０」の出力データＯを多数判定回路２から出力する。このとき、出力データＥが上記所定値の場合に多数判定回路２は、当該出力データＥを、値「１」の出力データＥの数及び値「０」の出力データＥの数のいずれにも加算しない。
【０１５８】
ここで、多数判定回路２における上記多数判定閾値を用いた処理について、より具体的に説明する。なお図１５に例示するニューラルネットワーク回路ＣＳでは、値「１」の出力データＥの数と値「０」の出力データＥの数との総数は「４」であるが、説明の明確化のため、当該総数が「１０」である場合の上記処理について説明する。
【０１５９】
即ち、例えば多数判定閾値が「０」であり、値「１」の出力データＥの数と値「０」の出力データＥの数が共に「５」であるとすると、値「１」の出力データＥの数から値「０」の出力データＥの数を減じた値は「０」であり、これは当該多数判定閾値と等しい。よってこの場合に多数判定回路２は、値「１」の出力データＯを出力する。これに対して、多数判定閾値が「０」であり、値「１」の出力データＥの数が「４」であり、値「０」の出力データＥの数が「６」であるとすると、値「１」の出力データＥの数から値「０」の出力データＥの数を減じた値は「−２」であり、これは当該多数判定閾値より小さい。よってこの場合に多数判定回路２は、値「０」の出力データＯを出力する。
【０１６０】
他方、例えば多数判定閾値が「−２」であり、値「１」の出力データＥの数と値「０」の出力データＥの数が共に「５」であるとすると、値「１」の出力データＥの数から値「０」の出力データＥの数を減じた値「０」は当該多数判定閾値より大きい。よってこの場合に多数判定回路２は、値「１」の出力データＯを出力する。これに対して、多数判定閾値が「−２」であり、値「１」の出力データＥの数が「４」であり、値「０」の出力データＥの数が「６」であるとすると、値「１」の出力データＥの数から値「０」の出力データＥの数を減じた値「−２」は当該多数判定閾値と等しい。よってこの場合も多数判定回路２は、値「１」の出力データＯを出力する。
【０１６１】
以上具体的に説明した多数判定回路２における処理が上記活性化処理に相当する。以上の通り、図１５（ｂ）に示すニューラルネットワーク回路ＣＳにより、図１５（ａ）においてハッチングで示されるニューロンＮＲとしての各処理がモデル化される。
【０１６２】
次に、各メモリセル１の細部構成について、図１６（ａ）を用いて説明する。図１６（ａ）に示すように、各メモリセル１のそれぞれは、トランジスタＴ1乃至トランジスタＴ14と、インバータＩＶ1乃至インバータＩＶ4と、により構成されている。なお図１６に示す各トランジスタＴ1等のそれぞれは、例えばＭＯＳＦＥＴ（Metal Oxide semiconductor Field Effected Transistor）等により構成されている。そしてこれらの素子が、入力データＩnに相当する接続線ＬＩn及び接続線／ＬＩn、ワード（Word）信号に相当する接続線Ｗ１及び接続線Ｗ２、並びにマッチ（match）信号に相当するマッチ線Ｍ及び反転マッチ線／Ｍにより図１６（ａ）に示す態様で接続されて、一つのメモリセル１が構成されている。このとき、トランジスタＴ1及びトランジスタＴ2、並びにインバータＩＶ1及びインバータＩＶ2により例えばＳＲＡＭ（static random access memory）としての一のメモリＣＬ1が構成され、トランジスタＴ3及びトランジスタＴ4、並びにインバータＩＶ3及びインバータＩＶ4により例えばＳＲＡＭとしての一のメモリＣＬ2が構成される。また、トランジスタＴ5乃至トランジスタＴ9によりＸＮＯＲゲートＧ1が構成され、トランジスタＴ10乃至トランジスタＴ14によりＸＯＲゲートＧ2が構成される。
【０１６３】
次に、多数判定回路２及び各メモリセル１を含むニューラルネットワーク回路ＣＳの細部構成について、図１６（ｂ）を用いて説明する。なお図１６（ｂ）は、図１５（ａ）に対応して入力データＩが四つである（即ち、メモリセル１を四つ備える）ニューラルネットワーク回路ＣＳの細部構成について示している。なお図１６（ｂ）に例示するニューラルネットワーク回路ＣＳでは、上記多数判定閾値が「０」である場合について説明する。
【０１６４】
図１６（ｂ）に示すようにニューラルネットワーク回路ＣＳは、四つのメモリセル１と、多数判定回路２を構成するトランジスタＴ20乃至トランジスタＴ30（図１６（ｂ）破線参照）と、により構成されている。このとき、図１６（ｂ）において一点鎖線で示されるように、トランジスタＴ25乃至トランジスタＴ28により、フリップフロップ型のセンスアンプＳＡが構成されている。そしてこれらの素子が、四つのメモリセル１に共通の上記接続線Ｗ１及び接続線Ｗ２並びに上記接続線Ｍ及び接続線／Ｍ、及び出力データＯに相当する接続線ＬＯ及び接続線／ＬＯにより図１６（ｂ）に示す態様で接続されて、一つのニューラルネットワーク回路ＣＳが構成されている。また図１６（ｂ）に示すニューラルネットワーク回路ＣＳには、当該ニューラルネットワーク回路ＣＳとしての処理を規定するための予め設定されたタイミング信号φ1、タイミング信号φ2及びタイミング信号／φ2並びにタイミング信号φ3が外部から入力されている。このとき、タイミング信号φ1はトランジスタＴ20乃至トランジスタＴ22のゲート端子にそれぞれ入力され、タイミング信号φ2及びタイミング信号／φ2はトランジスタＴ29及びトランジスタＴ30のゲート端子にそれぞれ入力され、タイミング信号φ3はトランジスタＴ23及びトランジスタＴ24のゲート端子にそれぞれ入力されている。以上の構成において、タイミング信号φ1に基づいてそれぞれプリチャージされた各メモリセル１のマッチ線Ｍと反転マッチ線／Ｍとでは、入力データＩの値並びにメモリＣＬ1及びメモリＣＬ2の記憶値に応じて、当該プリチャージされた電荷が引き抜かれるタイミングが異なる。そしてセンスアンプＳＡは、これらマッチ線Ｍ又は反転マッチ線／Ｍのどちらがより早く当該プリチャージされた電荷を引き抜かれるかを検出し、更に当該マッチ線Ｍと反転マッチ線／Ｍとの間の電圧差を増幅することにより、当該検知結果を接続線ＬＯ及び接続線／ＬＯに出力する。ここで、接続線ＬＯにおける値が「１」であることが、ニューラルネットワーク回路ＣＳとしての出力データＯの値「１」であることを意味することになる。以上の構成及び動作によりニューラルネットワーク回路ＣＳは、上記タイミング信号φ1等に基づいて、図１５（ａ）においてハッチングで示されるニューロンＮＲとしての各処理をモデル化した処理を実行し、上記出力データＯを出力する。
【０１６５】
（Ｂ）実施形態に係るニューラルネットワーク集積回路の第１例について
次に、実施形態に係るニューラルネットワーク集積回路の第１例について、図１７を用いて説明する。なお図１７において、図１５及び図１６を用いて説明した実施形態に係るニューラルネットワーク回路と同様の構成部材については、同様の部材番号を付して細部の説明を省略する。
【０１６６】
以下の図１７乃至図２０を用いてそれぞれ説明する実施形態に係るニューラルネットワーク集積回路は、図１５及び図１６を用いて説明した実施形態に係るニューラルネットワーク回路を複数集積した集積回路である。そしてこれらのニューラルネットワーク集積回路は、より多くのニューロンＮＲからなる複雑なニューラルネットワークをモデル化するためのものである。
【０１６７】
先ず、図１７（ａ）に例示するニューラルネットワークＳ１をモデル化するための実施形態に係るニューラルネットワーク集積回路の第１例について説明する。当該ニューラルネットワークＳ１は、図１７（ａ）においてハッチングで示されるｍ個のニューロンＮＲのそれぞれに対してｎ個のニューロンＮＲから１ビットの出力データＯがそれぞれ出力されることにより、当該ハッチングで示されるニューロンＮＲから１ビットの出力データＯがそれぞれ出力されるニューラルネットワークである。即ち上記ニューラルネットワークＳ１は、並列多入力−並列多出力型の一段ニューラルネットワークである。ここで図１７（ａ）においては、各ニューロンＮＲの全てが入力信号Ｉ又は出力信号Ｏにより接続されている場合を示しているが、モデル化しようとする脳機能に応じて、各ニューロンＮＲのいずれかの間が接続されていなくてもよい。そしてこのことが、当該接続されていないニューロンＮＲ間の接続に対応するメモリセル１の記憶値として上記所定値が記憶されていることにより表現される。なおこの点は、以降に図１８（ａ）、図１９（ａ）又は図２０（ａ）を用いてそれぞれ説明するニューラルネットワークの場合においても同様である。
【０１６８】
上記ニューラルネットワークＳ１をモデル化する場合、図１５及び図１６を用いて説明した実施形態に係るニューラルネットワーク回路ＣＳにおいて、１ビットの入力データＩをｎ個とする。このとき、当該ｎ個の入力データＩが入力されるニューラルネットワーク回路ＣＳのそれぞれが、図１７（ａ）においてハッチングで示されるニューロンＮＲの機能をモデル化したものであり、上記乗算処理、加算処理及び活性化処理をそれぞれ実行する。なお以下の図１７乃至図２０を用いた説明においては、上記ｎ個の入力データＩが入力されるニューラルネットワーク回路ＣＳを、「ニューラルネットワーク回路ＣＳ１」、「ニューラルネットワーク回路ＣＳ２」、…、と称する。そして実施形態に係るニューラルネットワーク集積回路の第１例としては、当該ｎ個の入力データＩが入力されるニューラルネットワーク回路ＣＳ１等をｍ個集積する。
【０１６９】
即ち図１７（ｂ）に示すように、実施形態に係るニューラルネットワーク集積回路の第１例であるニューラルネットワーク集積回路Ｃ１は、各１ビットのｎ個の入力データＩ1乃至入力データＩnがそれぞれ共通的に入力されるｍ個のニューラルネットワーク回路ＣＳ１乃至ニューラルネットワーク回路ＣＳｍが集積されて構成されている。そして、ニューラルネットワーク回路ＣＳ１乃至ニューラルネットワーク回路ＣＳｍのそれぞれには、上記タイミング信号φ1等がタイミング生成回路ＴＧから共通的に入力される。このときタイミング生成回路ＴＧは、予め設定された基準クロック信号ＣＬＫに基づいて上記タイミング信号φ1等を生成してニューラルネットワーク回路ＣＳ１乃至ニューラルネットワーク回路ＣＳｍに出力する。そしてニューラルネットワーク回路ＣＳ１乃至ニューラルネットワーク回路ＣＳｍの各々は、上記入力データＩ1乃至入力データＩnと、タイミング信号φ１等と、に基づいて、各１ビットの出力データＯ1、出力データＯ2、…、出力データＯmをそれぞれ出力する。
【０１７０】
以上説明した構成を備えるニューラルネットワーク集積回路Ｃ１において、ｍ個のニューロンＮＲに対してｎ個のニューロンＮＲからそれぞれ出力データＯが出力されることにより、ｍ個のニューロンＮＲから出力データＯが合計ｍ個出力される図１７（ａ）のニューラルネットワークＳ１がモデル化される。
【０１７１】
（Ｃ）実施形態に係るニューラルネットワーク集積回路の第２例について
次に、実施形態に係るニューラルネットワーク集積回路の第２例について、図１８を用いて説明する。なお図１８において、図１５及び図１６を用いて説明した実施形態に係るニューラルネットワーク回路と同様の構成部材については、同様の部材番号を付して細部の説明を省略する。
【０１７２】
実施形態に係るニューラルネットワーク集積回路の第２例は、図１８（ａ）に例示するニューラルネットワークＳＳ１をモデル化するためのニューラルネットワーク集積回路である。当該ニューラルネットワークＳＳ１は、図１７（ａ）を用いて説明したニューラルネットワークＳ１においてｎ＝ｍとした場合に相当する。即ちニューラルネットワークＳＳ１は、図１８（ａ）においてハッチングで示される３×ｎ個のニューロンＮＲのそれぞれに対して相隣接する列の（ｎ個の）ニューロンＮＲから出力データＯがそれぞれ出力されることにより、図１８（ａ）右端列のｎ個のニューロンＮＲから出力データＯがそれぞれ出力されるニューラルネットワークである。上記ニューラルネットワークＳＳ１は、並列多入力−並列多出力型の多段ニューラルネットワークである。
【０１７３】
上記ニューラルネットワークＳＳ１をモデル化する場合も、図１７を用いて説明したニューラルネットワークＳ１と同様に、図１５及び図１６を用いて説明した実施形態に係るニューラルネットワーク回路ＣＳにおいて、１ビットの入力データＩをｎ個とする。このとき、当該ｎ個の入力データＩが入力されるニューラルネットワーク回路ＣＳのそれぞれが、図１８（ａ）においてハッチングで示されるニューロンＮＲの機能をモデル化したものであり、上記乗算処理、加算処理及び活性化処理をそれぞれ実行する。そして実施形態に係るニューラルネットワーク集積回路の第２例としては、当該ｎ個の入力データＩが入力されるニューラルネットワーク回路ＣＳ１１等を直列に接続して計３×ｎ個集積する。
【０１７４】
即ち図１８（ｂ）に示すように、実施形態に係るニューラルネットワーク集積回路の第２例であるニューラルネットワーク集積回路ＣＣ１は、各１ビットのｎ個の入力データＩ1乃至入力データＩnがそれぞれ共通的に入力されるｎ個のニューラルネットワーク回路ＣＳ１１乃至ニューラルネットワーク回路ＣＳ１ｎが集積されて一のニューラルネットワーク集積回路Ｃ１が構成される（図１７（ｂ）参照）。そして、ニューラルネットワーク集積回路Ｃ１を構成するニューラルネットワーク回路ＣＳ１１乃至ニューラルネットワーク回路ＣＳ１ｎのそれぞれは、各１ビットの出力データＯ11乃至出力データＯ1nを出力し、それらが次段のｎ個のニューラルネットワーク回路ＣＳ２１乃至ニューラルネットワーク回路ＣＳ２ｎに共通的に入力される。これらニューラルネットワーク回路ＣＳ２１乃至ニューラルネットワーク回路ＣＳ２ｎにより、他の一のニューラルネットワーク集積回路Ｃ２が構成される。そして、ニューラルネットワーク集積回路Ｃ２を構成するニューラルネットワーク回路ＣＳ２１乃至ニューラルネットワーク回路ＣＳ２ｎのそれぞれは、各１ビットの出力データＯ21乃至出力データＯ2nを出力し、それらが次段のｎ個のニューラルネットワーク回路ＣＳ３１乃至ニューラルネットワーク回路ＣＳ３ｎに共通的に入力される。これらニューラルネットワーク回路ＣＳ３１乃至ニューラルネットワーク回路ＣＳ３ｎにより、更に一のニューラルネットワーク集積回路Ｃ３が構成される。ここで、各ニューラルネットワーク回路ＣＳ１１等に対しては、図１７（ａ）に示す場合と同様に上記タイミング信号φ1等が共通的に入力されているが、説明の簡略化のために図１８（ｂ）では図示を省略している。そしてニューラルネットワーク集積回路Ｃ１は上記入力データＩ1乃至入力データＩnと、タイミング信号φ1等と、に基づいて、出力データＯ11、出力データＯ12、…、出力データＯ1nをそれぞれ生成し、これらを次段のニューラルネットワーク集積回路Ｃ２に共通的に出力する。次にニューラルネットワーク集積回路Ｃ２は上記出力データＯ12乃至出力データＯ1nと、タイミング信号φ1等と、に基づいて、出力データＯ21、出力データＯ22、…、出力データＯ2nをそれぞれ生成し、これらを次段のニューラルネットワーク集積回路Ｃ３に共通的に出力する。最後にニューラルネットワーク集積回路Ｃ３は上記出力データＯ21乃至出力データＯ2nと、タイミング信号φ1等と、に基づいて、最終的な出力データＯ31、出力データＯ32、…、出力データＯ3nをそれぞれ生成して出力する。
【０１７５】
以上説明した構成を備えるニューラルネットワーク集積回路ＣＣ１において、ｎ個のニューロンＮＲから次段のｎ個のニューロンＮＲに対してそれぞれが１ビットの出力データＯがそれぞれ出力されることが段階的に繰り返されることにより、最終的に出力データＯが合計ｎ個出力される図１８（ａ）のニューラルネットワークＳＳ１がモデル化される。
【０１７６】
（Ｄ）実施形態に係るニューラルネットワーク集積回路の第３例について
次に、実施形態に係るニューラルネットワーク集積回路の第３例について、図１９を用いて説明する。なお図１９において、図１５及び図１６を用いて説明した実施形態に係るニューラルネットワーク回路と同様の構成部材については、同様の部材番号を付して細部の説明を省略する。
【０１７７】
実施形態に係るニューラルネットワーク集積回路の第３例は、図１９（ａ）に例示するニューラルネットワークＳＳ２をモデル化するためのニューラルネットワーク集積回路の例である。当該ニューラルネットワークＳＳ２は、それぞれが図１９（ａ）においてハッチングで示されるｍ個のニューロンＮＲからなる複数の組により構成され、これらのニューロンＮＲのそれぞれに対して共通のｎ個のニューロンＮＲ（図１９（ａ）において破線で示される）から１ビットの出力データＯがそれぞれ出力されることにより、図１９（ａ）においてハッチングで示される各ニューロンＮＲから各１ビットで合計ｍ×組数個の出力データＯが出力されるニューラルネットワークである。このニューラルネットワークＳＳ２の場合、図１９（ａ）においてハッチングで示される各ニューロンＮＲは、各１ビットで同じ数（ｎ個）の出力データＯをそれぞれ受信することになる。即ち上記ニューラルネットワークＳＳ２は、並列多入力−並列多出力型の一段ニューラルネットワークである。
【０１７８】
上記ニューラルネットワークＳＳ２をモデル化する場合も、図１７を用いて説明したニューラルネットワークＳ１と同様に、図１５及び図１６を用いて説明した実施形態に係るニューラルネットワーク回路ＣＳにおいて、１ビットの入力データＩをｎ個とする。このとき、当該ｎ個の入力データＩが入力されるニューラルネットワーク回路ＣＳのそれぞれが、図１９（ａ）においてハッチングで示されるニューロンＮＲの機能をモデル化したものであり、上記乗算処理、加算処理及び活性化処理をそれぞれ実行する。そして実施形態に係るニューラルネットワーク集積回路の第３例としては、当該ｎ個の入力データＩが入力されるニューラルネットワーク回路ＣＳ１１等を並列に接続して上記組数分集積する。
【０１７９】
即ち図１９（ｂ）に示すように、実施形態に係るニューラルネットワーク集積回路の第３例であるニューラルネットワーク集積回路ＣＣ２は、各１ビットのｎ個の入力データＩ1乃至入力データＩnがそれぞれ共通的に入力されるｍ個のニューラルネットワーク回路ＣＳ１１乃至ニューラルネットワーク回路ＣＳ１ｍが集積されて、一のニューラルネットワーク集積回路Ｃ１が構成される（図１７（ｂ）参照）。また同じｎ個の入力データＩ1乃至入力データＩnがそれぞれ並列的且つ共通的に入力されるｍ個のニューラルネットワーク回路ＣＳ２１乃至ニューラルネットワーク回路ＣＳ２ｍが集積されて、他の一のニューラルネットワーク集積回路Ｃ２が構成される（図１７（ｂ）参照）。これ以降、同様にｎ個の入力データＩ1乃至入力データＩnがそれぞれ並列的且つ共通的に入力されるｍ個のニューラルネットワーク回路が集積されて、図１９（ｂ）において図示を省略する他のニューラルネットワーク集積回路がそれぞれ構成される。ここで、各ニューラルネットワーク回路ＣＳ１１等に対しては、図１８を用いて説明した場合と同様に、図１７（ａ）に示す場合と同様の上記タイミング信号φ1等が共通的に入力されているが、説明の簡略化のために図１９（ｂ）では図示を省略している。そしてニューラルネットワーク集積回路Ｃ１は上記入力データＩ1乃至入力データＩnと、タイミング信号φ1等と、に基づいて、各１ビットの出力データＯ11、出力データＯ12、…、出力データＯ1mをそれぞれ生成して出力する。一方ニューラルネットワーク集積回路Ｃ２は、同じ入力データＩ1乃至入力データＩnと、タイミング信号φ1等と、に基づいて、各１ビットの出力データＯ21、出力データＯ22、…、出力データＯ2mをそれぞれ生成して出力する。これ以降、図示を省略する他のニューラルネットワーク集積回路も、それぞれにｍ個の出力データを出力する。
【０１８０】
以上説明した構成を備えるニューラルネットワーク集積回路ＣＣ２において、ｍ×組数分のニューロンＮＲから並行的にそれぞれ出力データＯが出力されることにより、最終的に出力データＯが合計ｍ×組数分出力される図１９（ａ）のニューラルネットワークＳＳ２がモデル化される。
【０１８１】
（Ｅ）実施形態に係るニューラルネットワーク集積回路の第４例について
最後に、実施形態に係るニューラルネットワーク集積回路の第４例について、図２０を用いて説明する。なお図２０において、図１５及び図１６を用いて説明した実施形態に係るニューラルネットワーク回路と同様の構成部材については、同様の部材番号を付して細部の説明を省略する。
【０１８２】
実施形態に係るニューラルネットワーク集積回路の第４例は、図２０（ａ）に例示するニューラルネットワークＳＳ３をモデル化するためのニューラルネットワーク集積回路の例である。当該ニューラルネットワークＳＳ３は、これまで説明してきた実施形態に係るニューラルネットワークＳ１等に対して、ニューロンＮＲの数及びニューロンＮＲ間の接続の態様についての自由度を更に向上させたニューラルネットワークである。なお図２０（ａ）には、段階的に各１ビットの出力データＯ（入力データＩ）が授受されるニューロン群（図２０（ａ）破線参照）に属するニューロンＮＲの数が相互に異なるニューラルネットワークＳＳ３について例示している。
【０１８３】
上記ニューラルネットワークＳＳ３をモデル化する場合、図２乃至図１６を用いて説明した実施形態に係るニューラルネットワーク回路ＣＳにおいて、１ビットの入力データＩを例えばｎ個とする。このとき、当該ｎ個の入力データＩが入力されるニューラルネットワーク回路ＣＳのそれぞれが、図２０（ａ）に示す各ニューロンＮＲの機能をモデル化したものであり、上記乗算処理、加算処理及び活性化処理をそれぞれ実行する。そして実施形態に係るニューラルネットワーク集積回路の第４例としては、当該ｎ個の入力データＩが入力されるニューラルネットワーク回路ＣＳ１１等をそれぞれに複数備えたニューラルネットワーク集積回路を複数備え、当該各ニューラルネットワーク集積回路を、後述する複数のスイッチ及びそれらを切り換えるスイッチボックスにより接続して集積する。
【０１８４】
即ち図２０（ｂ）に示すように、実施形態に係るニューラルネットワーク集積回路の第４例であるニューラルネットワーク集積回路ＣＣ３は、各１ビットのｎ個の入力データＩ1乃至入力データＩnがそれぞれ共通的に入力されるｎ個のニューラルネットワーク回路ＣＳ１１乃至ニューラルネットワーク回路ＣＳ１ｎが集積されて一のニューラルネットワーク集積回路Ｃ１が構成される（図１７（ｂ）参照）。そして同様に、例えばｍ個のニューラルネットワーク回路ＣＳ２１乃至ニューラルネットワーク回路ＣＳ２ｍが集積されて一のニューラルネットワーク集積回路Ｃ２が、ニューラルネットワーク回路ＣＳ３１乃至ニューラルネットワーク回路ＣＳ３ｐ（ｐは２以上の自然数。以下、同様。）が集積されて一のニューラルネットワーク集積回路Ｃ３が、ニューラルネットワーク回路ＣＳ４１乃至ニューラルネットワーク回路ＣＳ４ｑ（ｑは２以上の自然数。以下、同様。）が集積されて一のニューラルネットワーク集積回路Ｃ４が、それぞれ構成される。また、ニューラルネットワーク集積回路Ｃ１乃至ニューラルネットワーク集積回路Ｃ４のそれぞれは、図２０（ｂ）に例示するようにスイッチＳＷ１乃至スイッチＳＷ４を介して、相互に各１ビットの入力データＩ及び出力データＯの授受が可能とされている。そして、ニューラルネットワーク集積回路Ｃ１乃至ニューラルネットワーク集積回路Ｃ４間における入力データＩ及び出力データＯの授受の態様（即ちニューラルネットワーク集積回路Ｃ１乃至ニューラルネットワーク集積回路Ｃ４間の接続態様）が、スイッチＳＷ１乃至スイッチＳＷ４を介してスイッチボックスＳＢ１乃至スイッチボックスＳＢ４により切り換えられる。このとき、上記スイッチＳＷ１乃至スイッチＳＷ４及びスイッチボックスＳＢ１乃至スイッチボックスＳＢ４が、本発明に係る「スイッチ部」の一例に相当する。
【０１８５】
次に、上記スイッチボックスＳＢ１乃至スイッチボックスＳＢ４の細部構成について、図２０（ｃ）を用いて説明する。なお、スイッチボックスＳＢ１乃至スイッチボックスＳＢ４はいずれも同様の構成を備えるので、図２０（ｃ）では、これらを纏めてスイッチボックスＳＢとして説明する。
【０１８６】
図２０（ｃ）に示すように、ニューラルネットワーク集積回路ＣＣ３における各１ビットの入力データＩ又は出力データＯの接続態様、及び結果的に有効なニューロンＮＲの数を制御するスイッチボックスＳＢは、セレクタＭ1乃至セレクタＭ5が図２０（ｃ）に示す態様により接続されて構成されている。この図２０（ｃ）に示すスイッチボックスＳＢの構成においては、上述してきた入力データＩに対応する信号は図２０（ｃ）中左から入力される信号であり、上記出力データＯに対応する信号は図２０（ｃ）中の上方及び下方からそれぞれ入力される信号である。そしてニューラルネットワーク集積回路Ｃ１乃至ニューラルネットワーク集積回路Ｃ４に対する入力データＩ等の切り換えは、当該切り換えを制御する切換制御信号Ｓc1乃至切換制御信号Ｓc5が外部からそれぞれ入力されるセレクタＭ1乃至セレクタＭ5により、実行される。
【０１８７】
以上説明したように、入力データＩに対応する出力データＯを生成して出力する図２０（ａ）のニューラルネットワークＳＳ３が、図２０（ｃ）に示す構成を備えるスイッチボックスＳＢ１乃至スイッチボックスＳＢ４により各スイッチＳＷ１乃至スイッチＳＷ４が切り換えられる、図２０（ｂ）に示す構成のニューラルネットワーク集積回路ＣＣ３によりモデル化される。
【０１８８】
以上それぞれ説明したように、実施形態に係るニューラルネットワーク回路ＣＳ及びニューラルネットワーク集積回路Ｃ１等の構成及び動作によれば、図１５及び図１６に例示するように、対応すべき脳機能に基づいてその数が既定されているメモリセル１のそれぞれが、記憶値として「ＮＣ」を意味する所定値或いは「１」又は「０」のいずれかを記憶し、１ビットの入力データＩの値と記憶値とが等しい場合に入力データＩの入力に対応して「１」を出力し、入力データＩの値と記憶値とが等しくない場合に入力データＩの入力に対応して「０」を出力し、上記所定値が記憶されている場合にいずれの値の入力データＩが入力されても当該所定値を出力する。そして多数判定回路２が、値「１」を出力するメモリセル１の総数が値「０」を出力するメモリセル１の総数より大きい場合に値「１」を出力データＯとして出力し、値「１」を出力するメモリセル１の総数が値「０」を出力するメモリセル１の総数以下の場合に「０」を出力データＯとして出力する。よって、メモリセル１においてニューラルネットワーク回路としての乗算処理を行い、一の多数判定回路２によりニューラルネットワーク回路としての加算処理及び活性化処理を行うので、回路規模及びそれに対応するコストを大幅に縮小しつつ、ニューラルネットワーク回路を効率的に実現することができる。
【０１８９】
また図１７（ｂ）に例示するように、それぞれが１ビットのｎ個の入力データＩにそれぞれ対応してメモリセル１の数がｎであるニューラルネットワーク回路ＣＳをｍ個備え、各ニューラルネットワーク回路ＣＳに対してｎ個の入力データＩが並列且つ共通的に入力され、各ニューラルネットワーク回路ＣＳから出力データＯをそれぞれ出力させる場合は、図１７（ａ）に例示するニューラルネットワークＳ１をモデル化し且つ入力がｎ個であり出力がｍ個であるｎ×ｍのニューラルネットワーク集積回路Ｃ１を、回路規模及びそれに対応するコストを大幅に縮小しつつ効率的に実現することができる。更にこの場合に、図１７（ａ）においてハッチングで示されるｍ個のニューロンＮＲと、当該ｍ個に対して出力データＯをそれぞれ出力するｎ個のニューロンＮＲと、の間に多様な接続のパターンがあっても、ニューラルネットワーク集積回路Ｃ１においてニューロンＮＲ間に接続がない場合に対応するメモリセル１の記憶値として上記所定値を用いることで、ニューラルネットワーク集積回路Ｃ１をより効率的に実現することができる。更に図１７に例示する場合には、ｎ個の入力データＩを各ニューラルネットワーク回路ＣＳに対して並列且つ共通的に入力し、それに基づくｍ個の出力データＯを並列に出力させることができるため、入力データＩ及び出力データＯを逐次的に入出力させなければならない場合と比べて処理の大幅な高速化が可能となる。
【０１９０】
更にまた図１８に例示するように、上記「ｎ」と上記「ｍ」とが等しいニューラルネットワーク集積回路Ｃ１等を直列に接続し、一のニューラルネットワーク集積回路Ｃ１（又はニューラルネットワーク集積回路Ｃ２）からの出力データＯを、当該ニューラルネットワーク集積回路Ｃ１（又はニューラルネットワーク集積回路Ｃ２）の直後に接続され他のニューラルネットワーク集積回路Ｃ２（又はニューラルネットワーク集積回路Ｃ３）における入力データＩとする場合は、入力及び出力が共に並列型であるニューラルネットワーク集積回路ＣＣ１を、回路規模及びそれに対応するコストを大幅に縮小しつつ効率的に実現することができる。
【０１９１】
また図１９に例示するように、各ニューラルネットワーク集積回路ＣＳに対してｎ個の入力データＩが並列且つ共通に入力され、各ニューラルネットワーク集積回路ＣＳからｍ個の出力データＯを並列にそれぞれ出力する場合は、入力及び出力が共に並列型であり且つ出力データＯの数が入力データＩの数より多いニューラルネットワーク集積回路ＣＣ２を、回路規模及びそれに対応するコストを大幅に縮小しつつ効率的に実現することができる。
【０１９２】
また図２０に例示するように、ニューラルネットワーク集積回路Ｃ１等を複数備え、各ニューラルネットワーク集積回路Ｃ１等をアレイ状に且つ相互に接続するスイッチＳＷ１等により、各ニューラルネットワーク集積回路Ｃ１等に対する入力データＩ及び出力データＯが切り換える場合には、スイッチＳＷ１等における切換動作が、対応すべき脳機能に基づいて既定されていれば、大規模なニューラルネットワーク集積回路ＣＣ３を、対応するコストを大幅に縮小しつつ効率的に実現することができる。
【０１９３】
（II）関連形態
次に、本発明に関連する関連形態について、図２１乃至図２７を用いて説明する。なお、図２１及び図２２は関連形態に係るニューラルネットワーク集積回路の第１例をそれぞれ示す図であり、図２３は関連形態に係るニューラルネットワーク回路の第１例を示す図であり、図２４は関連形態に係るニューラルネットワーク集積回路の第２例を示す図である。また、図２５は当該ニューラルネットワーク集積回路の第３例を示す図であり、図２６は当該ニューラルネットワーク集積回路の第４例を示す図であり、図２７は当該第４例の細部構成を示す図である。
【０１９４】
以下に説明する関連形態は、図１および図１５乃至図２０を用いて上述してきたニューラルネットワークＳ等のモデル化の構成又は手法とは異なる構成又は手法により、当該ニューラルネットワークＳ等をモデル化しようとするものである。
【０１９５】
（Ａ）関連形態に係るニューラルネットワーク集積回路の第１例について
初めに、関連形態に係るニューラルネットワーク集積回路の第１例について、図２１及び図２２を用いて説明する。なお、図２１は当該第１例としての上記乗算処理を行う当該第１例の一部を示す図であり、図２２は当該第１例全体を示す図である。
【０１９６】
図２１（ａ）に例示するように、当該第１例の一部によりモデル化されるネットワークＳ’では、一つのニューロンＮＲから１ビットの出力データＯ（換言すれば入力データＩ）が入力される。そして、入力データＩの出力先となる図示しない複数の他のニューロンにそれぞれ対応する異なった重み付け係数Ｗ1乃至重み付け係数Ｗ4のうちの一つが当該入力データＩに乗算され、上記図示しない他のニューロンに対して、出力データＥ1乃至出力データＥ4としてそれぞれ出力される。そしてこのときの出力データＥは、入力データＩと同様に１ビットの信号である。よって、図２１に示す入力データＩの値、各重み付け係数Ｗの値及び出力データＥの値は、いずれも「０」又は「１」のいずれかである。
【０１９７】
次に、関連形態に係るニューラルネットワーク集積回路の第１例における図２１（ａ）に示すネットワークＳ’に相当する部分の構成を、図２１（ｂ）にネットワーク回路ＣＳ’として示す。当該ネットワーク回路ＣＳ’は、各々が図２１（ａ）に示す出力データＥ1乃至出力データＥ4にそれぞれ対応する四組のメモリセル１０及びメモリセル１１（接続有無情報用のメモリセル）と、各々が出力データＥ（換言すれば、上記図示しない他のニューロンの入力データＩ）にそれぞれ対応する四つの多数判定入力回路１２と、により構成される。このとき、一つのメモリセル１０と一つのメモリセル１１からなるメモリセル対の数及びそれらに対応する多数判定入力回路１２の数（図２１に例示する場合は共に四つ）は、関連形態に係るニューラルネットワーク集積回路の第１例として所望される出力データＯの数に等しい。なお以下の図２１の説明において、出力データＯの数分の上記メモリセル対を、纏めて「メモリセルブロック１５」（図２１（ｂ）破線参照）と称する。
【０１９８】
以上の構成において各メモリセルブロック１５内のメモリセル１０は、ネットワーク回路ＣＳ’を含む関連形態に係るニューラルネットワーク集積回路の第１例が対応すべき脳機能に基づいて予め設定された１ビットの重み付け係数Ｗをそれぞれに記憶している。これに対して各メモリセルブロック１５内のメモリセル１１は、上記脳機能に基づいて予め設定された１ビットの接続有無情報をそれぞれに記憶している。ここで当該接続有無情報は、上記実施形態におけるメモリセル１の記憶値「ＮＣ」に相当するものであり、関連形態に係るニューラルネットワークにおける二つのニューロンＮＲ間に接続がある状態であるか、又は当該接続がない状態であるか、のいずれかを表すための記憶値である。なお、各メモリセル１０及びメモリセル１１にどのような記憶値を記憶させておくかは、例えば、ネットワークＳ’を含む関連形態に係るニューラルネットワーク集積回路の第１例としてどのような脳機能をモデル化するか等に基づいて予め設定されていればよい。
【０１９９】
そして各メモリセル１０は、それぞれの記憶値を、重み付け係数Ｗ1、重み付け係数Ｗ2、重み付け係数Ｗ3及び重み付け係数Ｗ4として多数判定入力回路１２にそれぞれ出力する。このとき各メモリセル１０は、それぞれの記憶値を、重み付け係数Ｗ1乃至重み付け係数Ｗ4として同時に多数判定入力回路１２に出力する。なおこの同時出力の構成は、以下の図２２乃至図２７を用いてそれぞれ説明するニューラルネットワーク回路及びニューラルネットワーク集積回路における各メモリセル１０においても同様である。一方各メモリセル１１も、それぞれの記憶値を、接続有無情報Ｃ1、接続有無情報Ｃ2、接続有無情報Ｃ3及び接続有無情報Ｃ4として多数判定入力回路１２にそれぞれ出力する。このとき各メモリセル１１は、それぞれの記憶値を、接続有無情報Ｃ1乃至接続有無情報Ｃ4として同時に多数判定入力回路１２に出力する。また各メモリセル１１は、上記各メモリセル１０からの記憶値の出力に対して例えば一サイクル前又は後にずらして、それぞれの記憶値を同時に多数判定入力回路１２に出力する。なおこの同時出力の構成及び各メモリセル１０からの記憶値の出力のタイミングと関係は、以下の図２２乃至図２７を用いてそれぞれ説明するニューラルネットワーク回路及びニューラルネットワーク集積回路における各メモリセル１１においても同様である。更に以下の説明において、接続有無情報Ｃ1、接続有無情報Ｃ2、接続有無情報Ｃ3、…、に共通の事項を説明する場合、単に「接続有無情報Ｃ」と称する。
【０２００】
他方各多数判定入力回路１２には、図２１（ｂ）において図示しない他のノードＮＲ（図２１（ａ）参照）からの１ビットの入力データＩが共通的に入力されている。そして各多数判定入力回路１２は、対応するメモリセル１１から出力される上記接続有無情報を、そのまま接続有無情報Ｃ1乃至接続有無情報Ｃ4としてそれぞれ出力する。
【０２０１】
これらに加えて各多数判定入力回路１２は、対応するメモリセル１０から出力される重み付け係数Ｗ1、重み付け係数Ｗ2、重み付け係数Ｗ3及び重み付け係数Ｗ4と上記入力データＩとの排他的論理和（ＸＮＯＲ）を算出し、上記出力データＥ1、出力データＥ2、出力データＥ3及び出力データＥ4としてそれぞれ出力する。このとき、対応するメモリセル１１の記憶値（重み付け係数Ｗ）と、入力データＩの値と、多数判定入力回路１２から出力される出力データＥの値と、の間の関係は、図２１（ｃ）に真理値表を示す関係となる。なお図２１（ｃ）には、上記排他的否定論理和（ＸＮＯＲ）を算出する前提としての排他的論理和（ＸＯＲ）についても記載している。
【０２０２】
ここで、図１５を用いて説明した実施形態に係るニューラルネットワーク回路ＣＳに対応する真理値表（図１５（ｃ）参照）と、上記図２１（ｃ）に示す真理値表とを比較する。このとき、メモリセル１０における記憶値及び入力データＩの値をそれぞれ図１５（ｃ）に示した真理値表のものと同じとした場合、図２１（ｂ）に示す出力データＥの値は図２（ｂ）に示す出力データＥの値と同一となる。これらにより、図２１（ｂ）に示すネットワーク回路ＣＳ’は、図１５（ｂ）に示したニューラルネットワーク回路ＣＳにおける上記乗算処理と同様の論理により、図２１（ａ）に示すネットワークＳ’における上記乗算処理をモデル化した回路となる。即ち、各メモリセル１０から出力されてくる各々の記憶値（重み付け係数Ｗ）と入力データＩの値との間の排他的論理和を多数判定入力回路１２において算出することが上記乗算処理に相当する。以上の通り、図２１（ｂ）に示すネットワーク回路ＣＳ’により、図２１（ａ）に示すネットワークＳ’における乗算処理がモデル化される。
【０２０３】
（Ｂ）関連形態に係るニューラルネットワーク集積回路の第１例について
次に、関連形態に係るニューラルネットワーク集積回路の第１例について、図２１及び図２２を用いて説明する。なお図２２において、図２１を用いて説明した関連形態に係るネットワーク回路と同様の構成部材については、同様の部材番号を付して細部の説明を省略する。
【０２０４】
図２２を用いて説明する関連形態に係るニューラルネットワーク集積回路の第１例は、図２１を用いて説明した関連形態に係るネットワーク回路ＣＳ’を複数集積した集積回路である。関連形態に係るニューラルネットワーク集積回路の第１例では、当該ネットワーク回路ＣＳ’に相当する上記乗算処理に加えて、上記加算処理及び上記活性化処理が実行される。
【０２０５】
先ず、関連形態に係るニューラルネットワーク集積回路の第１例によりモデル化されるニューラルネットワークの全体について、図２２（ａ）を用いて説明する。図２２（ａ）に示す当該ニューラルネットワークＳ１’は、図２１を用いて説明したネットワークＳ’をｍ個のニューロンＮＲ分含んでいる。当該ニューラルネットワークＳ１’では、図２２（ａ）においてハッチングで示されるｎ個のニューロンＮＲのそれぞれに対して、それぞれが上記ネットワークＳ’を構成するｍ個のニューロンＮＲからそれぞれ１ビットの出力データＯ（換言すれば入力データＩ）が出力される。そしてこれにより、各出力データＯが出力データＥとなって上記ハッチングで示されるｎ個のニューロンＮＲのそれぞれに入力され、当該ハッチングで示されるニューロンＮＲから出力データＯが一つずつ合計ｎ個並列的に出力される。即ち上記ニューラルネットワークＳ１’は、直列（ｍ）入力−並列（ｎ）出力型の一段ニューラルネットワークである。
【０２０６】
上記ニューラルネットワークＳ１’をモデル化した関連形態に係るニューラルネットワーク集積回路の第１例は、図２２（ｂ）に示すニューラルネットワーク集積回路Ｃ１’となる。当該ニューラルネットワーク集積回路Ｃ１’は、上記メモリセル対及び多数判定入力回路１２をそれぞれにｎ個ずつ含む関連形態に係るニューラルネットワーク回路ＣＳ’（図２１参照）をｍ個備えると共に、各多数判定入力回路１２及びメモリセル対に対応させてｎ個の直列多数判定回路１３を備えている。そして図２２（ｂ）に示すように、ｎ×ｍ個の上記メモリセル対（換言すれば、ｍ個のメモリセルブロック１５）により、メモリセルアレイＭＣ１が構成されている。またニューラルネットワーク集積回路Ｃ１’では、図２２（ｂ）に示すメモリセルアレイＭＣ１における横一行（ｍ個）のメモリセル対で一つの多数判定入力回路１２を共用する。なお、メモリセルアレイＭＣ１、各多数判定入力回路１２及び各直列多数判定回路１３には、それぞれ上記タイミング信号φ１等が共通的に入力されているが、説明の簡略化のために図２２（ｂ）では図示を省略している。
【０２０７】
以上の構成において、それぞれのニューラルネットワーク回路ＣＳ’を構成するメモリセルブロック１５のメモリセル１０からは、上記重み付け係数Ｗが、一のメモリセルブロック１５に含まれる各メモリセル１０について同時に、且つｍ個のメモリセルブロック１５について順次に（即ちシリアル形式で）、それぞれ出力される。そして、これらの重み付け係数Ｗと、対応するタイミングによりシリアル形式で入力されるｍ個の入力データＩ（各１ビットの入力データＩ）と、の上記排他論理和を、上記共有する多数判定入力回路１２において時分割的に演算し、それを出力データＥとして、対応する直列多数判定回路１３にシリアル形式で出力する。一方、それぞれのニューラルネットワーク回路ＣＳ’を構成するメモリセルブロック１５のメモリセル１１からは、上記接続有無情報Ｃが、一のメモリセルブロック１５に含まれる各メモリセル１１について同時に、且つｍ個のメモリセルブロック１５について順次に（即ちシリアル形式で）、それぞれ出力される。そしてこれらの接続有無情報Ｃが、上記共有する多数判定入力回路１２を介し、各入力データＩの入力タイミングに対応したシリアル形式で、対応する直列多数判定回路１３に出力される。なお、各メモリセルブロック１５からの上記各重み付け係数Ｗの出力タイミングの態様、及び各メモリセルブロック１５からの上記各接続有無情報Ｃの出力タイミングの態様のそれぞれは、以下の図２３乃至図２７を用いてそれぞれ説明するニューラルネットワーク集積回路における各メモリセル１１においても同様である。
【０２０８】
次に、各多数判定入力回路１２から出力データＥ及び接続有無情報Ｃがそれぞれ入力されるｎ個の直列多数判定回路１３はそれぞれ、同じタイミングで入力された接続有無情報Ｃが「接続あり」を示している最大ｍ個の出力データＥについて、値「１」の当該出力データＥの数を加算してその合計値を算出すると共に、値「０」の出力データＥの数を加算してその合計値を算出する。これらの加算が上記加算処理に相当する。そして各直列多数判定回路１３はそれぞれ、値「１」の出力データＥ及び値「０」の出力データＥそれぞれの数の上記合計値を比較し、前者の数から後者の数を減じた値が、実施形態に係る上記多数判定閾値と同様にして予め設定された多数判定閾値以上の場合にのみ、値「１」の出力データＯを出力する。一方それ以外の場合、即ち値「１」の出力データＥの数の合計値から値「０」の出力データＥの数の合計値を減じた値が上記多数判定閾値未満の場合に各直列多数判定回路１３はそれぞれ、値「０」の出力データＯを出力する。これらの各直列多数判定回路１３における処理が上記活性化処理に相当すると共に、各出力データＯは１ビットとなる。ここで、同じタイミングで出力される上記接続有無情報Ｃが「接続なし」を示している場合、直列多数判定回路１３は、出力データＥを、値「１」の出力データＥの数及び値「０」の出力データＥの数のいずれにも加算しない。そして各直列多数判定回路１３は、上述した各処理により１ビットの出力データＯを出力することを、入力データＩが入力されるタイミングに合わせて繰り返す。このときの出力データＯは、結果的に各直列多数判定回路１３から並列的に出力される。この場合、出力データＯの総数はｎ個となる。以上の通り、図２２（ａ）においてハッチングで示される一つのニューロンＮＲに対応する上記乗算処理、加算処理及び活性化処理のそれぞれは、図２２（ｂ）に示すメモリセルアレイＭＣ１における横一行分のメモリセル対と、それらに対応する多数判定入力回路１２及び直列多数判定回路１３と、により実行されることになる。
【０２０９】
以上説明したように、図２２（ａ）においてハッチングで示されるｎ個のニューロンＮＲに対してｍ個のニューロンＮＲから１ビットの出力データＯがそれぞれ出力され、これらにより当該ｎ個のニューロンＮＲから出力データＯが合計ｎ個出力されるニューラルネットワークＳ１’が、図２２（ｂ）に示す構成を備えるニューラルネットワーク集積回路Ｃ１’によりモデル化される。
【０２１０】
（Ｃ）関連形態に係るニューラルネットワーク回路の第１例について
次に、関連形態に係るニューラルネットワーク回路の第１例について、図２３を用いて説明する。
【０２１１】
図２３（ａ）に例示するように、当該第１例に相当するニューラルネットワークＳは、基本的には図２（ａ）に例示した実施形態に係るニューラルネットワークＳと同一の構成である。但し図２３（ａ）に示す例では、図２３（ａ）においてハッチングで示される一つのニューロンＮＲに対して他の三つのニューロンＮＲから１ビットの入力データＩ（当該他のニューロンＮＲから見ると出力データＯ）が並列的に入力され、それに対応する出力データＯが当該ニューロンＮＲからシリアル形式で一つ出力される構成となっている。このときの出力データＯも、各入力データＩと同様に１ビットの信号である。よって、図２３に示す入力データＩの値及び出力データＯの値は、いずれも「０」又は「１」のいずれかである。そして、図２３（ａ）に示すニューロンＮＲにおいて実行される上記乗算処理等に相当する上記式（１）は、上記式（１）においてｎ＝３とした場合の式である。即ち上記ニューラルネットワークＳは、並列入力−直列出力型の一段ニューラルネットワークである。
【０２１２】
次に、図２３（ａ）においてハッチングで示したニューロンＮＲに相当する関連形態に係るニューラルネットワーク回路の第１例の構成を、図２３（ｂ）にニューラルネットワーク回路ＣＣＳ’として示す。当該ニューロンＮＲに相当する関連形態に係るニューラルネットワーク回路ＣＣＳ’は、各々が図２３（ａ）に例示する入力データＩにそれぞれ対応する三組のメモリセル１０及びメモリセル１１と、各入力データＩが入力される並列多数判定回路２０と、により構成される。このとき、一つのメモリセル１０と一つのメモリセル１１からなるメモリセル対の数及びそれらに対応する多数判定入力回路１２の数（図２３に例示する場合は共に三つ）は、図２３（ａ）に示すニューラルネットワークＳとして所望される入力データＩの数に等しい。なお以下の図２３の説明において、入力データＩの数分の上記メモリセル対はそれぞれメモリセルブロック１５と示されている（図２３（ｂ）破線参照）。
【０２１３】
以上の構成において各メモリセルブロック１５内のメモリセル１０は、ニューラルネットワーク回路ＣＣＳ’が対応すべき脳機能に基づいて予め設定された１ビットの重み付け係数Ｗをそれぞれに記憶している。これに対して各メモリセルブロック１５内のメモリセル１１は、上記脳機能に基づいて予め設定された１ビットの接続有無情報をそれぞれに記憶している。ここで当該接続有無情報は、図２１及び図２２を用いて説明した関連形態に係るニューラルネットワーク回路の第１例における接続有無情報Ｃnと同一の情報であるので、細部の説明は省略する。また、各メモリセル１０及びメモリセル１１にどのような記憶値を記憶させておくかは、例えば、図２３（ａ）に示すニューラルネットワークＳとしてどのような脳機能をモデル化するか等に基づいて予め設定されていればよい。
【０２１４】
そして各メモリセル１０は、それぞれの記憶値を、図２１（ｂ）に示す各メモリセル１０と同様のタイミングで、重み付け係数Ｗ1、重み付け係数Ｗ2及び重み付け係数Ｗ3として並列多数判定回路２０にそれぞれ出力する。一方各メモリセル１１も、それぞれの記憶値である接続有無情報Ｃを、図２１（ｂ）に示す各メモリセル１１と同様のタイミングで並列多数判定回路２０にそれぞれ出力する。
【０２１５】
他方並列多数判定回路２０には、上述したように入力データＩ1、入力データＩ2及び入力データＩ3（各１ビット）が並列的に入力されている。そして並列多数判定回路２０は、図２２を用いて説明した一組の多数判定入力回路１２及び直列多数判定回路１３と同様の動作を含む動作（即ち、上記乗算処理、上記加算処理及び上記活性化処理）を行う。具体的に並列多数判定回路２０は先ず、対応する接続有無情報Ｃが「接続あり」を示している場合に、それぞれが１ビットの各入力データＩと、それらに対応する重み付け係数Ｗと、の上記排他論理和を当該各入力データＩについて演算する。次に並列多数判定回路２０は、各上記演算結果について、値「１」の当該演算結果の数を加算してその合計値を算出すると共に、値「０」の当該演算結果の数を加算してその合計値を算出する。そして並列多数判定回路２０は、値「１」の当該演算結果及び値「０」の当該演算結果それぞれの数の上記合計値を比較し、前者の数から後者の数を減じた値が、実施形態に係る上記多数判定閾値と同様にして予め設定された多数判定閾値以上の場合にのみ、値「１」の出力データＯをシリアル形式で出力する。一方それ以外の場合、即ち値「１」の出力データＥの数の合計値から値「０」の出力データＥの数の合計値を減じた値が上記多数判定閾値未満の場合に並列多数判定回路２０は値「０」の出力データＯをシリアル形式で出力する。この場合に出力データＯは１ビットとなる。ここで、対応する接続有無情報Ｃが「接続なし」を示している場合、並列多数判定回路２０は上記排他的論理和を演算しない。なお、各入力データＩと、対応する重み付け係数Ｗと、の上記排他論理和を全ての入力データＩについて一旦演算し、対応する接続有無情報Ｃが「接続なし」を示している場合に、その演算結果を値「１」の演算結果の数及び値「０」の演算結果の数のいずれにも加算しないように構成してもよい。そして並列多数判定回路２０は、上述した各処理により１ビットの出力データＯをシリアル形式で出力することを、並列的に入力されている各入力データＩの数ごとに繰り返す。以上の各処理により、図２３（ｂ）に示すニューラルネットワーク回路ＣＣＳ’は、図２３（ａ）においてハッチングで示されるニューロンＮＲにおける上記乗算処理、加算処理及び活性化処理をモデル化した回路となる。
【０２１６】
（Ｄ）関連形態に係るニューラルネットワーク集積回路の第２例について
次に、関連形態に係るニューラルネットワーク集積回路の第２例について、図２４を用いて説明する。なお図２４において、図２３を用いて説明した関連形態に係るニューラルネットワーク回路と同様の構成部材については、同様の部材番号を付して細部の説明を省略する。
【０２１７】
図２４を用いて説明する関連形態に係るニューラルネットワーク集積回路の第２例は、図２３を用いて説明した関連形態に係るニューラルネットワーク回路ＣＣＳ’を複数集積した集積回路であり、より多くのニューロンＮＲからなる複雑なニューラルネットワークをモデル化するためのものである。
【０２１８】
先ず、関連形態に係るニューラルネットワーク集積回路の第２例によりモデル化されるニューラルネットワークについて、図２４（ａ）を用いて説明する。図２４（ａ）に示す当該ニューラルネットワークＳ２’は、図２４（ａ）においてハッチングで示されるｍ個のニューロンＮＲのそれぞれに対してｎ個のニューロンＮＲから１ビットの出力データＯ（ｍ個のニューロンＮＲから見た場合は入力データＩ）が並列的にそれぞれ入力され、それらに対応する出力データＯが当該ニューロンＮＲからシリアル形式で出力される構成となっている。このときの出力データＯも、各入力データＩと同様に１ビットの信号である。よって、図２４に示す入力データＩの値及び出力データＯの値は、いずれも「０」又は「１」のいずれかである。即ち上記ニューラルネットワークＳ２’は、並列入力−直列出力型の一段ニューラルネットワークである。
【０２１９】
上記ニューラルネットワークＳ２’をモデル化した関連形態に係るニューラルネットワーク集積回路の第２例は、図２４（ｂ）に示すニューラルネットワーク集積回路Ｃ２’となる。当該ニューラルネットワーク集積回路Ｃ２’は、上記メモリセル対をそれぞれにｎ個ずつ含む関連形態に係るニューラルネットワーク回路ＣＣＳ’（図２３参照）をｍ個備えると共に、上記並列多数判定回路２０を備えている。そして図２４（ｂ）に示すように、ｎ×ｍ個の上記メモリセル対（換言すれば、ｍ個のメモリセルブロック１５）により、メモリセルアレイＭＣ２が構成されている。またニューラルネットワーク集積回路Ｃ２’では、一つの並列多数判定回路２０を図２４（ｂ）に示すメモリセルアレイＭＣ２における横一行（ｍ個）のメモリセル対で共用する。なお、メモリセルアレイＭＣ２及び並列多数判定回路２０には、それぞれ上記タイミング信号φ１等が共通的に入力されているが、説明の簡略化のために図２４（ｂ）では図示を省略している。
【０２２０】
以上の構成において、それぞれのニューラルネットワーク回路ＣＣＳ’を構成するメモリセルブロック１５のメモリセル１０からは、上記重み付け係数Ｗが、図２２（ｂ）に示す各メモリセル１０及び各メモリセルブロック１５と同様のタイミングで並列多数判定回路２０に出力される。一方、それぞれのニューラルネットワーク回路ＣＣＳ’を構成するメモリセルブロック１５のメモリセル１１からは、上記接続有無情報Ｃが、図２２（ｂ）に示す各メモリセル１１及び各メモリセルブロック１５と同様のタイミングで並列多数判定回路２０に出力される。
【０２２１】
そして並列多数判定回路２０は、メモリセルアレイＭＣ２から出力されてくる重み付け係数Ｗ及び接続有無情報Ｃと、それらに対応する入力データＩと、に基づき、接続有無情報Ｃが「接続あり」を示している重み付け係数Ｗ及び入力データＩを用いた上記排他的論理和の演算処理、その演算結果に基づく値「１」の演算結果及び値「０」の演算結果それぞれの数の加算処理、その加算結果に基づく上記合計数の比較処理（図２３（ｂ）参照）、及びその比較結果に基づく出力データＯの生成処理を、メモリセルアレイＭＣ２における横一行（ｍ個）についてそれぞれ行う。また並列多数判定回路２０は、上記横一行についての演算処理、加算処理、比較処理及び生成処理を、各入力データＩについて、メモリセルブロック１５ごとにシリアル形式で実行し、それぞれの実行結果としての出力データＯをシリアル形式で出力する。ここで、対応する接続有無情報Ｃが「接続なし」を示している場合、並列多数判定回路２０は上記演算処理、加算処理、比較処理及び生成処理を行わない。
【０２２２】
以上説明したように、図２４（ａ）においてハッチングで示されるｍ個のニューロンＮＲに対してｎ個のニューロンＮＲからそれぞれ出力データＯが出力され、これらにより当該ｍ個のニューロンＮＲから１ビットの出力データＯがシリアル形式で出力されるニューラルネットワークＳ２’が、図２４（ｂ）に示す構成を備えるニューラルネットワーク集積回路Ｃ２’によりモデル化される。
【０２２３】
（Ｅ）関連形態に係るニューラルネットワーク集積回路の第３例について
次に、関連形態に係るニューラルネットワーク集積回路の第３例について、図２５を用いて説明する。なお図２５において、図２１及び図２３を用いてそれぞれ説明した関連形態に係るニューラルネットワーク回路と同様の構成部材については、同様の部材番号を付して細部の説明を省略する。
【０２２４】
図２５を用いて説明する関連形態に係るニューラルネットワーク集積回路の第３例は、図２２を用いて説明した関連形態に係るニューラルネットワーク集積回路Ｃ１’と、図２４を用いて説明した関連形態に係るニューラルネットワーク集積回路Ｃ２’と、を組み合わせた集積回路である。ここで、上記ニューラルネットワーク集積回路Ｃ１’は上述した通り直列入力−並列出力型の一段ニューラルネットワークＳ１’をモデル化したニューラルネットワーク回路である。一方上記ニューラルネットワーク集積回路Ｃ２’は、上述した通り並列入力−直列出力型の一段ニューラルネットワークＳ２’をモデル化したニューラルネットワーク回路である。そしてこれらを組み合わせた関連形態に係るニューラルネットワーク集積回路の第３例は、全体として直列入力−並列処理−直列出力型の多段ニューラルネットワークをモデル化したニューラルネットワーク集積回路であり、更に多くのニューロンＮＲからなる複雑なニューラルネットワークをモデル化するためのものである。
【０２２５】
先ず、関連形態に係るニューラルネットワーク集積回路の第３例によりモデル化されるニューラルネットワークについて、図２５（ａ）を用いて説明する。図２５（ａ）に示す当該ニューラルネットワークＳ１−２は、図２５（ａ）において４５度のハッチングで示されるｎ個のニューロンＮＲのそれぞれに対してｍ個のニューロンＮＲからそれぞれ１ビットの出力データＯがシリアル形式で出力され、当該４５度のハッチングで示されるニューロンＮＲと図２４（ａ）において１３５度のハッチングで示されるｍ個のニューロンＮＲとの間で出力データＯ及び入力データＩの授受が行われ、結果的に１３５度のハッチングで示されるｍ個のニューロンＮＲからそれぞれ出力データＯがシリアル形式で出力されるニューラルネットワークである。なお上記ニューラルネットワークＳ１−２は、全体として、図１７を用いて説明したニューラルネットワークＳ１を複数並べたニューラルネットワークに相当する。
【０２２６】
上記ニューラルネットワークＳ１−２をモデル化した関連形態に係るニューラルネットワーク集積回路の第３例は、図２５（ｂ）に示すニューラルネットワーク集積回路Ｃ１−２となる。当該ニューラルネットワーク集積回路Ｃ１−２は、図２２を用いて説明したニューラルネットワーク集積回路Ｃ１’の各出力データＯ（並列的に出力される各出力データＯ）を、図２４を用いて説明したニューラルネットワーク集積回路Ｃ２’における並列多数判定回路２０への入力データ（即ち図２４（ｂ）に示す入力データＩ）とし、これにより、当該並列多数判定回路２０から上記出力データＯをシリアル形式で出力する構成を備える。このように、上記ニューラルネットワーク集積回路Ｃ１’とニューラルネットワーク集積回路Ｃ２’とを組み合わせることにより、結果的に、図２２（ａ）に例示するニューラルネットワークＳ１’と、図２４（ａ）に例示するニューラルネットワークＳ２’と、が組み合わされた上記ニューラルネットワークＳ１−２がモデル化される。なお、ニューラルネットワークＳ１−２に含まれる上記ニューラルネットワーク集積回路Ｃ１’及びニューラルネットワーク集積回路Ｃ２’それぞれの動作は、図２２及び図２４を用いてそれぞれ説明した動作と同様となる。なお図２５（ｂ）に示すニューラルネットワーク集積回路Ｃ１−２では、並列多数判定回路２０に対応する直列多数判定回路１６が、破線で示される一組の多数判定入力回路１２及び直列多数判定回路１３により、それぞれ構成されていることになる。
【０２２７】
以上説明したように、図２５（ａ）に示すニューラルネットワークＳ１−２が、図２５（ｂ）に示す直列入力−並列処理−直列出力型の構成を備えるニューラルネットワーク集積回路Ｃ１−２によりモデル化される。
【０２２８】
（Ｆ）関連形態に係るニューラルネットワーク集積回路の第４例について
次に、関連形態に係るニューラルネットワーク集積回路の第４例について、図２６及び図２７を用いて説明する。なお図２６及び図２７において、図２２及び図２４並びに図２５を用いてそれぞれ説明した関連形態に係るニューラルネットワーク回路と同様の構成部材については、同様の部材番号を付して細部の説明を省略する。
【０２２９】
図２６を用いて説明する関連形態に係るニューラルネットワーク集積回路の第４例は、図２６（ａ）に示すように、図２５を用いて説明した関連形態に係るニューラルネットワーク集積回路Ｃ１−２において、それを構成する上記ニューラルネットワーク集積回路Ｃ１’と上記ニューラルネットワーク集積回路Ｃ２’との間にパイプラインレジスタ２１を介在させた構成を備えたニューラルネットワーク集積回路Ｃ１−３である。このときパイプラインレジスタ２１は、メモリセルアレイＭＣ１のビット幅に相当する数のデータを一時的に記憶すると共に、外部からのイネーブル信号ＥＮにより、その出力動作が制御される。このイネーブル信号ＥＮは、予め設定された基準クロック信号のうちの偶数基準クロックに相当するタイミング信号である。そしてニューラルネットワーク集積回路Ｃ１−３は、図２６（ｂ）に示すように全体として、ニューラルネットワーク集積回路Ｃ１’におけるメモリセルアレイＭＣ１と、ニューラルネットワーク集積回路Ｃ２’におけるメモリセルアレイＭＣ２と、の間に、１ビットの入力データＩが例えばｍ個シリアル形式で入力されると共に上記イネーブル信号ＥＮが入力され、これらに対応した１ビットの出力データＯが例えばｍ個シリアル形式で出力される並列演算器ＰＰを介在させた構成を備える。このとき、メモリセルアレイＭＣ１及びメモリセルアレイＭＣ２はそれぞれ、例えば２５６ビット幅で５１２ワード（Word）分の規模を備えており、アドレス指定用の例えば８ビットのアドレスデータＡＤがそれぞれに入力される。そしてこの場合の並列演算器ＰＰは、２５６ビット分の多数判定入力回路１２及び直列多数判定回路１３と、上記パイプラインレジスタ２１と、２５６ビットに対応する並列多数判定回路２０と、により構成される。
【０２３０】
以上の構成において、ニューラルネットワークＳ１−３に含まれる上記ニューラルネットワーク集積回路Ｃ１’及びニューラルネットワーク集積回路Ｃ２’それぞれの動作は、図２２及び図２４を用いて説明した動作と同様となる。一方パイプラインレジスタ２１は、例えば、ニューラルネットワーク集積回路Ｃ２’のメモリセルアレイＭＣ２から読み出した重み付け係数Ｗ及び接続有無情報Ｃに基づいて並列多数判定回路２０において出力データＯの生成／出力処理を行っているタイミングでニューラルネットワーク集積回路Ｃ１’のメモリセルアレイＭＣ１から読み出した出力データＯを一時的に記憶する。そして、上記重み付け係数Ｗ及び接続有無情報Ｃに基づく並列多数判定回路２０の処理が完了したタイミングで、メモリセルアレイＭＣ１から読み出して記憶していた出力データＯを並列多数判定回路２０に出力してそれに基づいた出力データＯの生成／出力処理を行わせる。この処理により、見かけ上はメモリセルアレイＭＣ１からの出力データＯの読み出しと、メモリセルアレイＭＣ２からの重み付け係数Ｗ及び接続有無情報Ｃの読み出しと、を同時に行わせることができ、結果的に、図２５を用いて説明したニューラルネットワークＳ１−２に対して略二倍の処理速度を実現させることができる。
【０２３１】
次に、図２６に示すニューラルネットワーク回路Ｃ１−３における特に並列演算器ＰＰの細部構成について、図２７を用いて説明する。
【０２３２】
先ず図２７（ａ）に示すように並列演算器ＰＰは、メモリセルアレイＭＣ１のビット幅に相当する数の上記多数判定入力回路１２及び上記直列多数判定回路１３からなる直列多数判定回路１６と、メモリセルアレイＭＣ１のビット幅に相当する上記パイプラインレジスタ２１と、出力フリップフロップ回路２２を介して出力データＯを出力する上記並列多数判定回路２０と、により構成されている。この構成においてパイプラインレジスタ２１は図２７（ａ）に示すように、メモリセルアレイＭＣ１のビット幅に相当する出力レジスタ２１Ｕ及び入力レジスタ２１Ｌにより構成されており、上記イネーブル信号ＥＮが入力レジスタ２１Ｌに入力される。そして入力レジスタ２１Ｌは、イネーブル信号ＥＮが入力されるタイミングでそれに記憶（ラッチ）されているデータを並列多数判定回路２０に出力すると共に、当該タイミングで出力レジスタ２１Ｕに記憶されているデータを引き出して（即ちシフトさせて）記憶（ラッチ）する。またこれにより出力レジスタ２１Ｕは、入力レジスタ２１Ｌによりそのデータが引き出されたタイミングで、次の出力データＯを記憶（ラッチ）する。以上の入力レジスタ２１Ｌ及び出力レジスタ２１Ｕの動作が繰り返されることにより、上述したパイプラインレジスタ２１としての動作が実現される。
【０２３３】
次に、上記多数判定入力回路１２及び直列多数判定回路１３の細部構成について、図２７（ｂ）を用いて説明する。図２７（ｂ）に示すように一の直列多数判定回路１６内の多数判定入力回路１２は、排他的論理和回路１２Ａと、マスクフリップフロップ回路１２Ｂと、により構成されている。この構成において排他的論理和回路１２Ａには、メモリセルアレイＭＣ１からの重み付け係数Ｗと、１ビットの入力データＩと、が入力され、これらの排他的論理和の結果を上記出力データＥとして直列多数判定回路１３に出力する。またマスクフリップフロップ回路１２Ｂは、メモリセルアレイＭＣ１からの接続有無情報Ｃと、上記イネーブル信号ＥＮと、が入力され、イネーブル信号ＥＮが入力されたタイミングで上記接続有無情報Ｃを直列多数判定回路１３に出力する。そして直列多数判定回路１３は、上記出力データＥ及び上記接続有無情報Ｃに基づいた上述した動作により出力データＯを生成して、パイプラインレジスタ２１の出力レジスタ２１Ｕに出力する。このとき、上記既定の多数判定閾値を直列多数判定回路１３内の図示しないレジスタ内に保持してそれを参照することで、上述した直列多数判定回路１３としての動作を実現できる。
【０２３４】
次に、上記並列多数判定回路２０の細部構成について、図２７（ｃ）を用いて説明する。図２７（ｃ）に示すように並列多数判定回路２０は、排他的論理和回路２０Ａと、マスクフリップフロップ回路２０Ｂと、並列多数決回路２０Ｃと、により構成されている。この構成において排他的論理和回路２０Ａには、メモリセルアレイＭＣ２からの１ビットの重み付け係数Ｗと、パイプラインレジスタ２１の入力レジスタ２１Ｌからの１ビットの出力データＯと、が入力され、これらの排他的論理和の結果を並列多数決回路２０Ｃに出力する。またマスクフリップフロップ回路２０Ｂは、メモリセルアレイＭＣ２からの接続有無情報Ｃと、上記イネーブル信号ＥＮと、が入力され、イネーブル信号ＥＮが入力されたタイミングで上記接続有無情報Ｃを並列多数決回路２０Ｃに出力する。そして並列多数決回路２０Ｃは、メモリセルアレイＭＣ２からの一組の重み付け係数Ｗ及び接続有無情報Ｃに対応する排他的論理和回路１２Ａ及びマスクフリップフロップ回路２０Ｂそれぞれからの出力に基づいた上述した動作をメモリセルアレイＭＣ１からの出力データＯの数（図２６及び図２７に例示する場合は２５６）だけ繰り返し、出力フリップフロップ回路２２を介してシリアル形式で出力データＯとして出力する。このとき、上記既定の多数判定閾値を並列多数判定回路２０内の図示しないレジスタ内に保持してそれを参照することで、上述した並列多数判定回路２０としての動作を実現できる。
【０２３５】
このとき、上述したパイプラインレジスタ２１の動作により並列演算器ＰＰでは、例えば図２７（ｄ）に示すように、メモリセルアレイＭＣ１からの２５６ビット分の出力データＯに対する処理（図２７（ｄ）において「メモリセルブロック１５U1」と示す）が終了すると、次にメモリセルアレイＭＣ１からの次の２５６ビット分の出力データＯに対する処理（図２７（ｄ）において「メモリセルブロック１５U2」と示す）と、メモリセルアレイＭＣ２からの２５６ビット分の重み付け係数Ｗ及び接続有無情報Ｃに対する処理（図２７（ｄ）において「メモリセルブロック１５L1」と示す）と、が、見かけ上同時並列的に実行される。そして、メモリセルブロック１５U2に対応する出力データＯ並びにメモリセルブロック１５L1に対応する重み付け係数Ｗ及び接続有無情報Ｃに対する処理が終了すると、次にメモリセルアレイＭＣ１からの更に次の２５６ビット分の出力データＯに対する処理（図２７（ｄ）において「メモリセルブロック１５U3」と示す）と、メモリセルアレイＭＣ２からの次の２５６ビット分の重み付け係数Ｗ及び接続有無情報Ｃに対する処理（図２７（ｄ）において「メモリセルブロック１５L2」と示す）と、が、見かけ上同時並列的に実行される。以降は、メモリセルアレイＭＣ１及びメモリセルアレイＭＣ２それぞれからの２５６ビット分の出力データＯ並びに重み付け係数Ｗ及び接続有無情報Ｃに対して、逐次的且つ同時並列的な処理が実行される。
【０２３６】
なお、図２７（ｂ）に示す多数判定入力回路１２及び直列多数判定回路１３の細部構成、並びに図２７（ｃ）に示す並列多数判定回路２０の細部構成は、図２１以降に示す各メモリセル１１からの上記接続有無情報Ｃの出力タイミングが、図２１以降に示す各メモリセル１０からの上記重み付け係数Ｗの出力タイミングよりも例えば一サイクル早いことを前提とした構成である。この出力タイミングのずれを吸収するのが、図２７（ｂ）及び図２７（ｃ）にそれぞれ示すマスクフリップフロップ回路１２Ｂ及びマスクフリップフロップ回路２０Ｂの機能である。一方、上記重み付け係数Ｗの出力タイミングと上記接続有無情報Ｃの出力タイミングとを同時並行的とすることも可能である。そしてこの場合、図２７（ｂ）及び図２７（ｃ）にそれぞれ示すマスクフリップフロップ回路１２Ｂ及びマスクフリップフロップ回路２０Ｂは、多数判定入力回路１２及び並列多数判定回路２０としては不要となる。
【０２３７】
以上説明したように、図２６及び図２７に示すニューラルネットワーク回路Ｃ１−３によれば、図２５（ａ）に示すニューラルネットワークＳ１−２を、約二倍の処理速度をもってモデル化することができる。なお図２７を用いて説明した直列多数判定回路１６の細部構成は、図２５を用いて説明したニューラルネットワーク集積回路Ｃ１−２に含まれる直列多数判定回路１６の細部構成として適用することもできる。
【産業上の利用可能性】
【０２３８】
以上それぞれ説明したように、本発明はニューラルネットワークをモデル化したニューラルネットワーク回路等の分野に利用することが可能であり、特に、製造コストの低減や効率的なニューラルネットワーク回路等を開発する場合に適用すれば、特に顕著な効果が得られる。
【符号の説明】
【０２３９】
１０、１１：メモリセル
ＮＮ：ニューラル電子回路
ＮＮＳ：ニューラルネットワーク・システム
ＭＣ：メモリセルアレイ部（記憶部）
Ｐｅ：プロセスエレメント部（第１電子回路部）
ＰＣ１・・・ＰＣｎ：プロセスエレメント・コラム
Ａｃｔ：加算活性化部（第２電子回路部）
【図１】
2019139300.tif 000003
【図２】
2019139300.tif 000004
【図３】
2019139300.tif 000005
【図４】
2019139300.tif 000006
【図５】
2019139300.tif 000007
【図６Ａ】
2019139300.tif 000008
【図６Ｂ】
2019139300.tif 000009
【図７】
2019139300.tif 000010
【図８】
2019139300.tif 000011
【図９】
2019139300.tif 000012
【図１０】
2019139300.tif 000013
【図１１】
2019139300.tif 000014
【図１２】
2019139300.tif 000015
【図１３】
2019139300.tif 000016
【図１４】
2019139300.tif 000017
【図１５】
2019139300.tif 000018
【図１６】
2019139300.tif 000019
【図１７】
2019139300.tif 000020
【図１８】
2019139300.tif 000021
【図１９】
2019139300.tif 000022
【図２０】
2019139300.tif 000023
【図２１】
2019139300.tif 000024
【図２２】
2019139300.tif 000025
【図２３】
2019139300.tif 000026
【図２４】
2019139300.tif 000027
【図２５】
2019139300.tif 000028
【図２６】
2019139300.tif 000029
【図２７】
2019139300.tif 000030