(57)【要約】  電子回路規模を縮小しつつ、複数ビットのデータも扱えるニューラルネットワークを実現できるニューラル電子回路を提供する。入力される入力データに応じた重み付け係数を対数化した値を複数のビットで表した対数化重み付け係数を記憶し、対数化重み付け係数を１ビットずつ出力する記憶部（ＭＣ）と、入力データと重み付け係数との乗算結果を出力する第１電子回路部（Ｐｅ）と、乗算結果を加算し、加算結果に対して活性化関数を適用して出力データを出力する加算・適用機能を実現する第２電子回路部（Ａｃｔ）と、を備え、入力データを対数化した値を複数のビットで表した対数化入力データを１ビットずつ受け入れ、当該対数化入力データと記憶部から出力された対数化重み付け係数とを加算した対数加算を算出し、当該対数加算結果を線形化した乗算結果を算出し、対数化した出力データを出力する。
2019155910.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（接続なし））を意味する１ビット所定値であり、所定値として「１」または「０」等が割り当てられる。
【００３９】
対数化重み付け係数ＤＷが並んで、メモリセルの列が形成される。同時に各プロセスエレメント部Ｐｅに出力される対数化重み付け係数ＤＷをまとめてメモリセルブロックＣＢが形成される。メモリセルブロックＣＢの対数化重み付け係数ＤＷは、並列で入力される各入力データに対応している。
【００４０】
メモリセルアレイ部ＭＣは、入力メモリアレイ部ＭＡｉから並列で入力される入力データＩ１、・・・、Ｉｍの入力並列数ｍ個以上のメモリセルブロックＣＢを有することが好ましい。メモリセルブロックＣＢにおいて、メモリセル１０の数は、入力メモリアレイ部ＭＡｉから１ビット順次入力されるシリアルの入力データのサイクル数以上が好ましい。
【００４１】
メモリセルアレイ部ＭＣは、メモリセルブロックＣＢ毎に、Ｘビットの対数化重み付け係数を、順次入力されるシリアルのＸビットの対数化入力データに対応して、プロセスエレメント部Ｐｅに、出力する。各プロセスエレメント部Ｐｅに、メモリセルブロックＣＢからの対数化重み付け係数と、入力メモリアレイ部ＭＡｉからの対数化入力データとが、それぞれ、符号化ビットが対応するように１ビットずつ入力される。
【００４２】
メモリセルブロックＣＢは、Ｘビットの対数化重み付け係数と１ビットの接続有無情報とを、交互に、プロセスエレメント部Ｐｅに順次、出力してもよい。メモリセル１０との接続有無情報用のメメモリセルとは、プロセスエレメント部Ｐｅに対して独立した結線を有し、別々に順次、プロセスエレメント部Ｐｅに出力してもよい。
【００４３】
メモリセルアレイ部ＭＣは、図２および図３に示すように、出力メモリアレイ部ＭＡｏに並列に出力される出力データの出力並列数ｎ個、並列に出力される出力データＯ１、・・・、Ｏｎに対応して、ニューラル電子回路ＮＮに配置される。
【００４４】
このように、メモリセルアレイ部ＭＣは、脳機能を実現するための電子回路において、入力される入力データに応じた重み付け係数を対数化した値を複数のビットで表した対数化重み付け係数を記憶し、当該対数化重み付け係数を１ビットずつ出力する記憶部一例として機能する。メモリセルアレイ部ＭＣは、並列で入力される並列の各前記対数化入力データに応じて、前記対数化重み付け係数を記憶する記憶部一例として機能する。
【００４５】
なお、メモリセル１０、および、メモリセルブロックＣＢの構成および機能の詳細は、図１５以降、特に、図１５および図１６のメモリセル１に関する記述部分、図２１から図２７のメモリセル１０、および、メモリセルブロックＣＢに対応するメモリセルブロック１５に関する記述部分等で後述する。また、メモリセルアレイ部ＭＣは、後述するメモリセルアレイＭＣ１、メモリセルアレイＭＣ２に対応する。
【００４６】
図３に示すように、並列で入力される並列の各入力データに配置された入力並列数ｍ個のプロセスエレメント部Ｐｅは、ニューラル電子回路ＮＮにおいて、プロセスエレメント・コラム（例えば、プロセスエレメント・コラムＰＣ１）を形成する。出力並列数ｎ個のプロセスエレメント・コラムＰＣ１からＰＣｎは、並列に出力される出力データに対応して、ニューラル電子回路ＮＮにおいて、ｎ列に配置される。プロセスエレメント部Ｐｅは、図３に示すように、ニューラル電子回路ＮＮにおいて、ｍ行×ｎ列に２次元の演算器アレイとして設定される。
【００４７】
行列（１，１）、（１，２）、・・・、（１，ｎ）のプロセスエレメント部Ｐｅには、入力データＩ１を対数化した対数化入力データが共通で入力される結線になっている。行列（２，１）、（２，２）、・・・、（２，ｎ）のプロセスエレメント部Ｐｅには、入力データＩ２が共通で入力される結線になっている。行列（ｍ，１）、（ｍ，２）、・・・、（ｍ，ｎ）のプロセスエレメント部Ｐｅには、入力データＩｍを対数化した対数化入力データが共通で入力される結線になっている。
【００４８】
プロセスエレメント部Ｐｅは、入力メモリアレイ部ＭＡｉから、入力データを対数化した値を複数のビットで表した対数化入力データを１ビットずつ受け入れる。プロセスエレメント部Ｐｅは、メモリセルアレイ部ＭＣから出力された対数化重み付け係数を、１ビットずつ受け入れる。なお、対数化入力データと、対数化重み付け係数とは、Ｘビットにおいて各ビットが、符号ビット同士や各桁同士が対応するように、プロセスエレメント部Ｐｅに入力される。
【００４９】
プロセスエレメント部Ｐｅは、対数化入力データと対数化重み付け係数とを加算した対数加算を算出し、対数加算結果を、逆対数変換により線形化した乗算結果を算出する。
【００５０】
なお、接続有無情報用のメモリセルからの接続無情報（例えば、「ＮＣ」を意味する所定値）が出力された場合、加算活性化部Ａｃｔにおいて、乗算結果が加算されないようにしてもよい。例えば、乗算結果と接続有無情報とが交互にペアで出力されてもよい。また、接続有無情報に関して、プロセスエレメント部Ｐｅから加算活性化部Ａｃｔへ、乗算結果とは独立の結線を有し、乗算結果と接続有無情報とは別々に出力されてもよい。
【００５１】
なお、プロセスエレメント部Ｐｅで、乗算結果の部分和を計算するとき、接続有無情報用のメモリセルからの接続無情報（例えば、「ＮＣ」を意味する所定値）が出力された場合、乗算結果の部分和に加算されないようにしてもよい。
【００５２】
このように、プロセスエレメント部Ｐｅは、前記入力データと前記重み付け係数との乗算結果を出力する第１電子回路の一例として機能する。プロセスエレメント部Ｐｅは、前記入力データを対数化した値を複数のビットで表した対数化入力データを１ビットずつ受け入れ、当該対数化入力データと前記記憶部から出力された対数化重み付け係数とを加算した対数加算を算出し、当該対数加算結果を線形化した前記乗算結果を算出する第１電子回路部の一例として機能する。
【００５３】
プロセスエレメント・コラムＰＣ１、・・・、ＰＣｎは、各プロセスエレメント部Ｐｅからの乗算結果または一部の乗算結果を加算した部分和結果等を加算活性化部Ａｃｔに出力する。
【００５４】
図２および図３に示すように、加算活性化部Ａｃｔは、並列で出力される各出力データＯ１、・・・、Ｏｎに応じて配置されている。
【００５５】
加算活性化部Ａｃｔは、プロセスエレメント・コラムから逐次出力される乗算結果を、加算して、加算結果に活性化関数を適用して複数ビットの対数化出力データを出力メモリアレイ部ＭＡｏに出力する。プロセスエレメント部Ｐｅが乗算結果の部分和を出力する場合、加算活性化部Ａｃｔは、プロセスエレメント・コラムから逐次出力される乗算結果を加算して、加算結果に活性化関数を適用して１ビットずつ対数化された出力データを出力メモリアレイ部ＭＡｏに出力する。
【００５６】
加算活性化部Ａｃｔは、プロセスエレメント・コラムにおいて、Ｘビットの対数化入力データのＸサイクル単位で、乗算結果を加算した加算結果に、ニューロンの閾値を示すバイアスｂｉａｓを加えた値に活性化関数を適用した対数化出力データとして出力する。
【００５７】
このように、加算活性化部Ａｃｔは、前記第１電子回路部からの乗算結果を加算し、当該加算結果に対して、活性化関数を適用して対数化した出力データを出力する加算・適用機能を実現する第２電子回路の一例として機能する。加算活性化部Ａｃｔは、前記加算結果を対数化した対数化加算結果に活性化関数を適用して前記対数化した出力データを出力する第２電子回路の一例として機能する。
【００５８】
図３に示すように、Ｘビットシリアル入力の並列化が行われ、プロセスエレメント部Ｐｅの行が対数化入力データに対して共有し、プロセスエレメント部Ｐｅの列である各プロセスエレメント・コラムが独立して対数化出力データを出力する。
【００５９】
（１．３  プロセスエレメント・コラムの構成および機能）
次に、プロセスエレメント・コラムの構成および機能について、図４および図５を用いて説明する。
【００６０】
図４は、図３のプロセスエレメント・コラムの一例を示すブロック図である。図５は、図４のプロセスエレメントの動作のタイミングの一例を示す模式図である。
【００６１】
図４に示すように、プロセスエレメント・コラムＰＣ１のようなプロセスエレメント・コラムは、フェーズ１として計算を行う複数のプロセスエレメント部Ｐｅと、フェーズ１での計算結果の転送を行うフェーズ２の複数のフリップフロップＦｐ（一時記憶部の一例）およびセレクタＳｅと、を有する。
【００６２】
フリップフロップＦｐは、各プロセスエレメント部Ｐｅの出力側に接続され、プロセスエレメント部Ｐｅの乗算結果または部分和結果を一時的に記憶する。フリップフロップＦｐは、１行目のプロセスエレメント部Ｐｅからｎ行目のプロセスエレメント部Ｐｅに対応して、セレクタＳｅを介して直列に接続されている。ｎ行目のフリップフロップＦｐは、加算活性化部Ａｃｔに接続されている。なお、これらの接続が、図２において、プロセスエレメント部Ｐｅ間を太線で示した部分の機能の一例である。
【００６３】
セレクタＳｅは、プロセスエレメント部Ｐｅ間に配置され、上流のフリップフロップＦｐからのデータと、プロセスエレメント部Ｐｅからのデータとを切り替える。
【００６４】
図５に示すように、フェーズ１において、各フリップフロップＦｐで乗算等の計算が行われ、セレクタＳｅは、入力側のフリップフロップＦｐのデータを選択して、フリップフロップＦｐに計算結果が出力される。次に、フェーズ２において、セレクタＳｅは、上流のフリップフロップＦｐのデータを選択する。これにより、入力並列数ｍ個のサイクル単位のタイミングで、計算結果が加算活性化部Ａｃｔに逐次転送され、計算結果の転送が行われる。
【００６５】
このように、フリップフロップＦｐは、前記第１電子回路部毎に、各前記第１電子回路部からの前記乗算結果を一時記憶する一時記憶部の一例として機能する。フリップフロップＦｐは、直列に設定され、前記乗算結果を前記第２電子回路部へ順次転送する一時記憶部の一例として機能する。
【００６６】
なお、各プロセスエレメント部Ｐｅからの乗算結果が直接、加算活性化部Ａｃｔに供給されてもよい。
【００６７】
（２．４  プロセスエレメントおよび加算活性化部の回路構成）
次に、プロセスエレメントおよび加算活性化部の回路構成について、図６Ａおよび図６Ｂを用いて説明する。
【００６８】
図６Ａに示すように、プロセスエレメント部Ｐｅは、対数化入力データと対数化重み付け係数とを加算した対数加算を算出するログ加算部ＰｅＬｇと、対数加算を線形化して乗算結果の部分和を算出する線形部ＰｅＬｉｎとを有する。
【００６９】
ログ加算部ＰｅＬｇは、半加算器（ＨＡ）ｐｅ１と、半加算器ｐｅ２と、ＯＲ素子ｐｅ３と、フリップフロップｐｅ４と、セレクタｐｅ５と、フリップフロップが直列に連結したシフトレジスタｐｅ６と、セレクタｐｅ７と、フリップフロップｐｅ８と、を有する。
【００７０】
半加算器ｐｅ１と、半加算器ｐｅ２と、ＯＲ素子ｐｅ３とが、全加算器を形成する。シフトレジスタｐｅ６が加算した値を一時記憶する。セレクタｐｅ７とフリップフロップｐｅ８とが、対数化入力データおよび対数化重み付け係数の符号を半加算器ｐｅ１で加算した結果の符号の情報を、線形部ＰｅＬｉｎに出力する。なお、シフトレジスタｐｅ６の直列数は、入力のビット数＋１以上が好ましい。
【００７１】
ログ加算部ＰｅＬｇには、対数化入力データの各ビットｌｇ１、ｌｇ２、ｌｇ３の値、および、対数化重み付け係数の各ビットｌｇｗ１、ｌｇｗ２、ｌｇｗ３の値が、順次入力される。一番目のビット（ｌｇ１、ｌｇｗ１）に符号ビットが割り当てられ、各桁に対応するビットが一緒にログ加算部ＰｅＬｇの半加算器ｐｅ１に、先ず入力される。セレクタｐｅ５は、符号ビットが入力されるタイミングで、「０」を選択する。セレクタｐｅ７は、符号ビットが入力されていないタイミングで、「０」を選択し、符号ビットのみセレクタｐｅ８に取り込まれ、符号を決定する。なお、最後のビットに符号ビットが割り当てられてもよい。なお、符号ビット以外は、絶対値を表す。
【００７２】
半加算器ｐｅ１と、半加算器ｐｅ２と、ＯＲ素子ｐｅ３と、フリップフロップｐｅ４とにより、符号ビット以外のビットデータが、１ビットずつ加算されて、ビットの対数加算結果が、シフトレジスタｐｅ６に順次シフトして記憶されていく。
【００７３】
線形部ＰｅＬｉｎは、Ｏｎｅ−Ｈｏｔ素子ｐｅ９と、符号化素子（Signed）ｐｅ１０と、加算器（Adder）ｐｅ１１と、フリップフロップｐｅ１２と、ＸＯＲ素子ｐｅ２０と、を有する。
【００７４】
Ｏｎｅ−Ｈｏｔ素子ｐｅ９は、入力されたビット列において、最初に１であった入力値番目のビット位置のみを１にして、他を０にして出力する回路、すなわち、最上位ビットのみを１にして、他を０にする回路である。Ｏｎｅ−Ｈｏｔ素子ｐｅ９は、シフトレジスタｐｅ６に記憶された対数加算結果の各ビットを取り出し、対数逆変換して、線形化する機能を有する。
【００７５】
符号化素子ｐｅ１０は、加算器ｐｅ１１で加減算ができるように、セレクタｐｅ７とフリップフロップｐｅ８とからの対数化入力データの符号に基づき、Ｏｎｅ−Ｈｏｔ素子ｐｅ９により線形化された値に対して、２の補数をとる回路である。
【００７６】
加算器ｐｅ１１は、フリップフロップｐｅ１２に一時記憶された前の値と、符号化素子ｐｅ１０の出力値とを加算する。加算器ｐｅ１１の加算結果は、フリップフロップｐｅ１２に記憶される。例えば、加算器ｐｅ１１およびフリップフロップｐｅ１２は、入力データの並列数回ループして、乗算結果の部分和が出力する。
【００７７】
フリップフロップｐｅ１２は、加算器ｐｅ１１の出力のビット数分（例えば、２０ビット）を一時記憶する。
【００７８】
なお、ＸＯＲ素子ｐｅ２０は、プロセスエレメント部Ｐｅへの入力のビット幅が１（Ｘ＝１）の時に使用される。この場合、プロセスエレメント部Ｐｅへ入力データは、符号ビットのみに対応している。すなわち、「０」か「１」で、（０、１）＝（＋１、１）に対応する。回路的には、フリップフロップｐｅ８の符号ビットのみが使用される。そのため、フリップフロップｐｅ１２で、加算器ｐｅ１１の符号とフリップフロップｐｅ８の符号を判断して、ＸＯＲ素子ｐｅ２０が、カウンタの役目をする加算器ｐｅ１１において、カウントを＋１するか、−１にするかを決定する。なお、図中、破線は１ビットを示している。フリップフロップｐｅ１２の２０ビットから最上位ビット、すなわち、符号ビットが取り出される。
【００７９】
次に、加算活性化部Ａｃｔの回路構成について、図６Ｂを用いて説明する。
【００８０】
図６Ｂに示すように、加算活性化部Ａｃｔは、各プロセスエレメント部Ｐｅからの線形化された乗算結果の部分和を加算する線形部ＡｃＬｉｎと、加算結果に対して、活性化関数を適用して、対数化した出力データを出力するログ部ＡｃＬｇとを有する。
【００８１】
線形部ＡｃＬｉｎは、セレクタａｃ１と、加算器ａｃ２と、フリップフロップａｃ３と、を有する。
【００８２】
セレクタａｃ１は、加算器ａｃ２への入力を制御する。セレクタａｃ１は、プロセスエレメント・コラムＰＣ１、・・・、ＰＣｎからのデータ（例えば、２０ビット）を入力とし、最後にフリップフロップａｃ９からのバイアスｂｉａｓの値を加算器ａｃ２で加算するように制御する。
【００８３】
加算器ａｃ２およびフリップフロップａｃ３により加算を行い、加算結果のデータ（例えば、３２ビット）をログ部ＡｃＬｇに出力する。
【００８４】
ログ部ＡｃＬｇは、対数変換器ａｃ４と、加算器ａｃ５と、活性化関数器ａｃ６と、最大プーリング器ａｃ７と、を有する。
【００８５】
対数変換器ａｃ４は、最上位ビットから探索して最初に「１」である位置の数字を出力するPriority Encoderである。対数変換器ａｃ４は、加算結果のデータ（例えば、３２ビット）において、１である最大のビット位置を、例えば４ビットの２進数、すなわち、ログ表現で出力する。
【００８６】
加算器ａｃ５は、フリップフロップａｃ９からのバイアスｂｉａｓの信号から分岐した４ビットを対数化した値と、対数変換器ａｃ４からの出力とを加算する。なお、加算器ａｃ５は、ログ表現での加算であるので、数値表現的には乗算の機能を有している。また、加算器ａｃ５は、繰り上がりは無いものとして、４ビットで出力してもよい。バイアスｂｉａｓの信号から分岐した信号は、予めログ表現されていて、出力結果をスケーリングする乗算の役目を果たす。
【００８７】
活性化関数器ａｃ６では、ステップ関数、シグモイド関数、ランプ関数等を実現する。活性化関数器ａｃ６は、加算結果から活性化関数へ対応表を記憶した変換テーブルを有し、活性化関数を実現する。変換テーブルの値は、例えば、メモリアクセス制御部ＭＣｎｔが、加算活性化部Ａｃｔに対して、予め設定する。
【００８８】
最大プーリング器ａｃ７は、複数の出力結果を受けて、１つのデータのみを選択する機能を有する。最大プーリング器ａｃ７は、レジスタ（例えば、４ビット）を有しており、前回の値と今回の入力値を比較して大きい方を出力する。最大プーリング器ａｃ７は、最も反応が強いニューロンの情報を伝達することで、少ない演算量でロバストな推論を可能にする。なお、この機能を使用しない時は、最大プーリングの機能をスルーするように加算活性化部Ａｃｔが構築されてもよい。
【００８９】
なお、セレクタａｃ８およびフリップフロップａｃ９は、バイアス用メモリアレイ部ＭＡｂから出力されたバイアスｂｉａｓの値を、次の加算活性化部Ａｃｔに転送するか保持するかを制御する。バイアスｂｉａｓの値を設定したあと、保持されるが、バイアスｂｉａｓの値を始めに設定する場合、変更したい場合、または、変動させたい場合、バイアスｂｉａｓの値を転送する。
【００９０】
なお、バイアスｂｉａｓからの信号の線形部ＡｃＬｉｎの加算器ａｃ２での加算は、バイアスの役割を果たし、ログ部ＡｃＬｇの加算器ａｃ５でのログ加算は、スケール乗算する役割を果たす。
【００９１】
（２．５  プロセスエレメントおよび加算活性化部の回路構成の変形例）
次に、プロセスエレメントおよび加算活性化部の回路構成の変形例について図６Ｃから図６Ｅを用いて説明する。なお、上記の実施形態と同一または対応する部分には、同一の符号を用いて異なる構成および作用のみを説明する。その他の実施形態および変形例も同様とする。
【００９２】
図６Ｃに示すように、プロセスエレメント部Ｐｅ１は、対数化入力データと対数化重み付け係数とを加算した対数加算を算出するログ加算部ＰｅＬｇと、関数近似式（例えば、マクローリン展開式やテイラー展開式）で乗算結果の部分和を算出する近似部ＰｅＡｐとを有する。
【００９３】
近似部ＰｅＡｐは、Ｍａｘ素子ｐｅ１５と、ａｂｓ素子ｐｅ１６と、１ビットシフト素子ｐｅ１７と、加算減算器ｐｅ１８と、フリップフロップｐｅ１２と、ＸＯＲ素子ｐｅ２０と、を有する。近似部ＰｅＡｐは、対数表現のまま近似的に計算する。
【００９４】
Ｍａｘ素子ｐｅ１５は、図６Ｄに示すように、シフトレジスタｐｅ６およびフリップフロップｐｅ１２からの２つの入力に対して、まず引き算を行い、その結果（最上位の符号ビット）を用いて、２つの入力のうちのどちらを出力するかを、セレクタにより決定し、加算減算器ｐｅ１８に出力する。また、ａｂｓ素子ｐｅ１６でも２つの入力の差の値が必要となるため、引き算の結果はａｂｓ素子ｐｅ１６にも出力される。つまり、Ｍａｘ素子ｐｅ１５における引き算の結果は、ａｂｓ素子ｐｅ１６へと出力され、それを用いて決定される大きい方の値が加算減算器ｐｅ１８へと出力される。マクローリン展開の式では、２つの入力の大きい値とその差の絶対値の２の累乗が符号に応じて加減算される。
【００９５】
次に、加算活性化部Ａｃｔ１の回路構成について、図６Ｅを用いて説明する。
【００９６】
図６Ｅに示すように、加算活性化部Ａｃｔ１は、各プロセスエレメント部Ｐｅ１からの関数近似式での乗算結果の部分和を加算する近似部ＡｃＡｄ等を有する。
【００９７】
近似部ＡｃＡｄは、近似部ＰｅＡｐと似たような素子で構成され、プロセスエレメント部Ｐｅ１からの入力かバイアス入力かを切り替えるセレクタａｃ１に、近似部ＰｅＡｐが加わった構成である。すなわち、近似部ＡｃＡｄは、関数近似式の機能と、入力データが１ビットの値の場合の回路（ＸＯＲ素子ｐｅ２０に対応するＸＯＲ素子ａｃ１５）とを有する。
【００９８】
近似部ＡｃＡｄは、関数近似式の機能として、Ｍａｘ素子ｐｅ１５に対応するＭａｘ素子ａｃ１０と、ａｂｓ素子ｐｅ１６に対応するａｂｓ素子ａｃ１１と、１ビットシフト素子ｐｅ１７に対応する１ビットシフト素子ａｃ１２と、加算減算器ｐｅ１８に対応する加算減算器ａｃ１３と、フリップフロップｐｅ１２に対応するフリップフロップａｃ１４とを有する。
【００９９】
近似部ＡｃＡｄは、関数近似式で、プロセスエレメント部Ｐｅ１からの部分和を加算し、最後にフリップフロップａｃ９からのバイアスｂｉａｓの値を加算する。
【０１００】
加算活性化部Ａｃｔ１の活性化関数器ａｃ６は、近似部ＡｃＡｄの出力に活性化関数を適用する。
【０１０１】
加算器ａｃ１６は、活性化関数器ａｃ６の出力と、フリップフロップａｃ９からのバイアスｂｉａｓの信号から分岐した４ビットを対数化した値とを加算して、バイアスと包括してフリップフロップａｃ９に保持されたスケール定数をログ乗算（adder)する。加算器ａｃ１６は、対数化した出力データを出力する。なお、加算器ａｃ１６は、加算活性化部Ａｃｔの加算器ａｃ５のように、加算活性化部Ａｃｔ１の活性化関数器ａｃ６の前に設置されてもよい。
【０１０２】
加算活性化部Ａｃｔの最大プーリング器ａｃ７のように、加算活性化部Ａｃｔ１の最大プーリング器ａｃ７の機能を使用しない時は、最大プーリングの機能をスルーするように加算活性化部Ａｃｔ１が構築されてもよい。
【０１０３】
［３．ニューラル電子回路の適用例］
次に、ニューラル電子回路ＮＮにより、様々なタイプのニューラルネットワークを実現する実施例について説明する。
【０１０４】
（３．１  コンボリューション演算を実現するニューラル電子回路）
次に、コンボリューション演算を実現するニューラル電子回路について、図７および図８を用いて説明する。
【０１０５】
図７は、コンボリューション演算におけるデータの関係の一例を示す模式図である。図８は、図７のコンボリューション演算を実現するニューラル電子回路の一例を示すブロック図である。
【０１０６】
図７に示すように、チャンネル数ＣＩの入力画像Ｉｉｍの入力データと、フィルタ画像Ｐａ、Ｐｂ、・・・、ＰＣＯの種類数ＣＯのフィルタデータとに対して、コンボリューション演算が行われる。ここで、ＲＧＢのようなカラーが画像の場合、チャンネル数は、３である。白黒画像の場合、チャンネル数は１である。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」と示す）と、が、見かけ上同時並列的に実行される。以降は、メモリセルアレイＭＣ１及びメモリセルアレイＭＣ２それぞれからの２５６ビット分の出力データＯ並びに重み付け係数Ｗ及び接続有無情報Ｃに対して、逐次的且つ同時並列的な処理が実行される。
【０２６２】
なお、図２７（ｂ）に示す多数判定入力回路１２及び直列多数判定回路１３の細部構成、並びに図２７（ｃ）に示す並列多数判定回路２０の細部構成は、図２１以降に示す各メモリセル１１からの上記接続有無情報Ｃの出力タイミングが、図２１以降に示す各メモリセル１０からの上記重み付け係数Ｗの出力タイミングよりも例えば一サイクル早いことを前提とした構成である。この出力タイミングのずれを吸収するのが、図２７（ｂ）及び図２７（ｃ）にそれぞれ示すマスクフリップフロップ回路１２Ｂ及びマスクフリップフロップ回路２０Ｂの機能である。一方、上記重み付け係数Ｗの出力タイミングと上記接続有無情報Ｃの出力タイミングとを同時並行的とすることも可能である。そしてこの場合、図２７（ｂ）及び図２７（ｃ）にそれぞれ示すマスクフリップフロップ回路１２Ｂ及びマスクフリップフロップ回路２０Ｂは、多数判定入力回路１２及び並列多数判定回路２０としては不要となる。
【０２６３】
以上説明したように、図２６及び図２７に示すニューラルネットワーク回路Ｃ１−３によれば、図２５（ａ）に示すニューラルネットワークＳ１−２を、約二倍の処理速度をもってモデル化することができる。なお図２７を用いて説明した直列多数判定回路１６の細部構成は、図２５を用いて説明したニューラルネットワーク集積回路Ｃ１−２に含まれる直列多数判定回路１６の細部構成として適用することもできる。
【産業上の利用可能性】
【０２６４】
以上それぞれ説明したように、本発明はニューラルネットワークをモデル化したニューラルネットワーク回路等の分野に利用することが可能であり、特に、製造コストの低減や効率的なニューラルネットワーク回路等を開発する場合に適用すれば、特に顕著な効果が得られる。
【符号の説明】
【０２６５】
ＮＮ：ニューラル電子回路
ＮＮＳ：ニューラルネットワーク・システム
ＭＣ：メモリセルアレイ部（記憶部）
Ｐｅ：プロセスエレメント部（第１電子回路部）
ＰＣ１・・・ＰＣｎ：プロセスエレメント・コラム
Ａｃｔ：加算活性化部（第２電子回路部）
【図１】
2019155910.tif 000003
【図２】
2019155910.tif 000004
【図３】
2019155910.tif 000005
【図４】
2019155910.tif 000006
【図５】
2019155910.tif 000007
【図６Ａ】
2019155910.tif 000008
【図６Ｂ】
2019155910.tif 000009
【図６Ｃ】
2019155910.tif 000010
【図６Ｄ】
2019155910.tif 000011
【図６Ｅ】
2019155910.tif 000012
【図７】
2019155910.tif 000013
【図８】
2019155910.tif 000014
【図９】
2019155910.tif 000015
【図１０】
2019155910.tif 000016
【図１１】
2019155910.tif 000017
【図１２】
2019155910.tif 000018
【図１３】
2019155910.tif 000019
【図１４】
2019155910.tif 000020
【図１５】
2019155910.tif 000021
【図１６】
2019155910.tif 000022
【図１７】
2019155910.tif 000023
【図１８】
2019155910.tif 000024
【図１９】
2019155910.tif 000025
【図２０】
2019155910.tif 000026
【図２１】
2019155910.tif 000027
【図２２】
2019155910.tif 000028
【図２３】
2019155910.tif 000029
【図２４】
2019155910.tif 000030
【図２５】
2019155910.tif 000031
【図２６】
2019155910.tif 000032
【図２７】
2019155910.tif 000033
【国際調査報告】
2019155910.tif 000034
2019155910.tif 000035