(57)【特許請求の範囲】
【請求項１】
入力データを認識する認識ニューラルネットワークに設定される係数を計算するための基準となる入力データに対する、前記認識ニューラルネットワークによる認識結果と前記基準となる入力データに対する基準となる認識結果とに基づいて前記係数を計算する学習ニューラルネットワークを配置した第１の層と、
前記学習ニューラルネットワークで計算された係数により入力データを認識する前記認識ニューラルネットワークを配置した第２の層と、
前記第１の層と第２の層との間に配置され、前記学習ニューラルネットワークと前記認識ニューラルネットワークの双方に接続されるメモリを配置した第３の層と、を備える演算処理回路。
【請求項２】
前記入力データは配列データを含むデータであり、
前記認識ニューラルネットワークは、
前記配列データの部分ごとに前記部分に含まれる前記配列データの要素と前記要素に対応する前記係数との積和演算および所定の関数により第１部分配列を生成する演算回路と前記配列データの部分ごとに前記生成された第１部分配列から要素を間引いて第２部分配列を生成する間引き回路との組を含み、前記配列データから縮小された配列データを生成する生成回路と、
前記縮小された配列データの要素と前記要素に対応する係数との積和演算および所定の関数により出力値を出力する出力回路と、を備え、
前記学習ニューラルネットワークは、前記基準となる入力データに対する基準となる認識結果と前記出力回路からの出力値とを比較する比較回路と、
前記出力回路および前記生成回路の各段に対応して設けられ、前記比較回路の比較結果による差分値に基づいて、前記出力回路および前記各段に引き渡す係数と前記各段の第１部分配列における差分値とを生成する逆方向の演算回路、および、前記第１部分配列から第２部分配列を生成するための間引きの対応関係を示す対応関係情報と前記生成された差分値とを基に前記第１部分配列を復元する復元回路の組を含む係数生成回路と、を備える請求項１に記載の演算処理回路。
【請求項３】
前記認識ニューラルネットワークの各段は、前記対応関係情報と前記各段の演算回路で
生成された第１部分配列と前記各段の演算回路で使用された係数とを前記学習ニューラルネットワークの各段の前記逆方向の演算回路に所定の動作タイミングで引き渡し、
前記学習ニューラルネットワークの各段は、前記逆方向の演算回路で生成した係数を前記認識ニューラルネットワークの各段の演算回路に所定の動作タイミングで引き渡し、
前記メモリは、
前記認識ニューラルネットワークの各段から前記学習ニューラルネットワークの各段へ第１の動作タイミングで前記対応関係情報と前記第１部分配列と前記係数とを引き渡すための第１の先入れ先出し回路と、
前記学習ニューラルネットワークの各段から前記認識ニューラルネットワークの各段へ第２の動作タイミングで前記係数を引き渡すための第２の先入れ先出し回路と、を備える請求項２に記載の演算処理回路。
【請求項４】
前記学習ニューラルネットワークの各段は、前記認識ニューラルネットワークの各段で生成された第１部分配列と前記第１部分配列における差分値とから前記係数の変化量を生成する逆方向の生成回路と、
前記生成した変化量を順次積算して前記認識ニューラルネットワークの各段に引き渡す係数を生成する更新回路と、を備える請求項３に記載の演算処理回路。
【請求項５】
プロセッサと、
第１のメモリと、
演算処理回路と、を有し、前記演算処理回路は、
前記プロセッサの制御にしたがい、前記第１のメモリからの入力データを認識する認識ニューラルネットワークに設定される係数を計算するための基準となる入力データに対する、前記認識ニューラルネットワークによる認識結果と前記基準となる入力データに対する基準となる認識結果とに基づいて前記係数を計算する学習ニューラルネットワークを配置した第１の層と、
前記学習ニューラルネットワークで学習された係数により入力データを認識する前記認識ニューラルネットワークを配置した第２の層と、
前記第１の層と第２の層との間に配置され、前記学習ニューラルネットワークと前記認識ニューラルネットワークの双方に接続される第２のメモリを配置した第３の層と、を備える情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理回路、および情報処理装置に関する。
【背景技術】
【０００２】
Ｉｎｔｅｒｎｅｔ  ｏｆ  Ｔｈｉｎｇｓ（ＩｏＴ）が現実のものとなり、様々なものからデータが取得される結果、ビッグデータ解析のための機械学習への関心が高まっている。その機械学習の中でも、近年、人間の脳の視覚を扱う部分を模擬したニューラルネットワーク（ＮＮ）における学習技術が進展している。例えば、ニューラルネットワークは、画像を学習することで、新たにニューラルネットワークに入力される画像から特徴を認識し、特定の画像を識別する。
【０００３】
ニューラルネットワークは、精度面では、既存の画像認識手法を凌駕する。しかし、ニューラルネットワークでは、計算量が多いという課題がある。例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）による処理では、学習のフェーズで長時間の計算が実行される。そこで、計算時間の短縮のため、アクセラレータが用いられる。
【０００４】
従来のニューラルネットワークのアクセラレータは、例えば、Ｓｙｓｔｅｍ-ｏｎ-ａ-
Ｃｈｉｐ（ＳｏＣ）を採用し、一つのチップに全てのニューラルネットワークを搭載する。ＳｏＣは、メモリとデータの距離を近づけ、高速化を実現する。また、Ｓｉｌｉｃｏｎ
ｉｎ  Ｐａｃｋａｇｅ（ＳｉＰ）技術では、Ｔｈｒｏｕｇｈ  Ｓｉｌｉｃｏｎ  Ｖｉａ（ＴＳＶ）を介して、論理回路チップとメモリチップを接続することで、処理対象のデータを格納したメモリとニューラルネットワークの演算回路との距離が近づけられ、高速化が実現される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特表平８-５０５２４８号公報
【特許文献２】国際公開第２００２／０３５６１６号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、ニューラルネットワークは、メモリ容量を上げるために、Ｅｍｂｅｄｄｅｄ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ  （ｅＤＲＡＭ）を採用する場合がある。ｅＤＲＡＭのようなメモリと論理回路の混載は、プロセスコスト増に繋がる。また、ｅＤＲＡＭから論理回路へのパスは配線の束となるため、チップ面積の利用効率が低下する。
【０００７】
一方、ＳｉＰ技術は、ニューラルネットワークの構成要素となるチップ（メモリ、論理回路等）を分離するので、ＳｉＰ技術の導入により、ＳｏＣのプロセスは通常のプロセスを利用でき安価で済む。しかしながら、ＳｉＰ技術によるニューラルネットワークでも、認識回路と学習回路が共存している。このため、認識フェーズでは、学習回路は利用されないため、チップ面積の利用効率が低下する。
【０００８】
１つの側面では、本実施の形態に開示の技術は、ニューラルネットワークにおいて、低コストで、高速化とチップ面積の利用効率向上とを実現することを課題とする。
【課題を解決するための手段】
【０００９】
開示の技術の一側面は、演算処理回路によって例示される。本演算処理回路は、入力データを認識する認識ニューラルネットワークに設定される係数を計算するための基準となる入力データに対する、前記認識ニューラルネットワークによる認識結果と前記基準となる入力データに対する基準となる認識結果とに基づいて前記係数を計算する学習ニューラルネットワークを配置した第１の層を備える。また、本演算処理回路は、前記学習ニューラルネットワークで計算された係数により入力データを認識する前記認識ニューラルネットワークを配置した第２の層を備える。さらに、本演算処理回路は、前記第１の層と第２の層との間に配置され、前記学習ニューラルネットワークと前記認識ニューラルネットワークの双方に接続されるメモリを配置した第３の層を備える。
【発明の効果】
【００１０】
本演算処理回路によれば、ニューラルネットワークにおいて、低コストで、高速化とチップ面積の利用効率向上を実現することができる。
【図面の簡単な説明】
【００１１】
【図１】比較例に係るニューラルネットワークの処理を例示する図である。
【図２】フォーワッド方向の認識処理および識別処理とともに、バックワード方向の学習処理を例示する図である。
【図３】比較例に係るニューラルネットワークを適用した画像認識装置の構成を例示する図である。
【図４】実施の形態に係るニューラルネットワークを例示する図である。
【図５】実施の形態に係るニューラルネットワークを例示する図である。
【図６】畳み込み層の構成の詳細を例示する図である。
【図７】逆方向の畳み込み層の回路の構成を例示する図である。
【図８】逆方向のプーリング層の回路の構成を例示する図である。
【図９】次の重みを生成する更新器の構成を例示する図である。
【図１０】畳み込み層、プーリング層1層、全結合層1層のニューラルネットワークのタイミングダイアグラムを例示する図である。
【図１１】畳み込み層２層、プーリング層２層、全結合層1層のニューラルネットワークのパッケージレベルでの実装例を示す図である。
【図１２】ニューラルネットワークの処理のフローチャートの例である。
【図１３】ニューラルネットワークの処理シーケンスを例示する図である。
【図１４】ニューラルネットワークのチップの平面図の一例である。
【発明を実施するための形態】
【００１２】
以下、図面を参照して、一実施の形態に係る情報処理装置について説明する。以下の実施の形態の構成は例示であり、本情報処理装置は実施の形態の構成には限定されない。以下、比較例と対比して実施の形態のニューラルネットワークを説明する。
［比較例］
図１に、比較例に係るニューラルネットワークの処理を例示する。ニューラルネットワークは、画像を認識し、識別するためのフォーワッド方向の処理と、フォーワッド方向の処理で使用するパラメータを決定するバックワード方向の処理を実行する。なお、バックワード方向の処理は、バックプロパゲーション（Ｂａｃｋ  Ｐｒｏｐａｇａｔｉｏｎ、ＢＰ）と呼ばれる。
【００１３】
図１のニューラルネットワークは、入力画像に対して、畳み込み層（Ｃｏｎｖｏｌｕｔｉｏｎ  Ｌａｙｅｒ）の処理と、プーリング層（Ｐｏｏｌｉｎｇ  Ｌａｙｅｒ）の処理とを実行し、画像の特徴を抽出し、画像を識別する。すなわち、図１では、フォーワッド方向の処理が例示されている。図１では、Ｉｎｐｕｔ  Ｌａｙｅｒとされている入力画像に対して、畳み込み層の処理とプーリング層の処理が実行され、４フィーチャマップ、６フ
ィーチャマップ等が順次生成される。ここでフィーチャマップは、例えば、画像の異なるチャンネルで授受されるデータ、あるいは、画像のうちのＲ，Ｇ，Ｂデータ等に相当するデータである。そして、図１のニューラルネットワークは、最終層であるＦｕｌｌｙ  Ｃｏｎｎｅｃｔｅｄ  ｍｕｌｔｉｌａｙｅｒ  ｐｅｒｃｅｐｔｒｏｎ（ＭＬＰ）において、識別結果を出力する。なお、プーリング層は、サブサンプリング層（Ｓｕｂ-ｓａｍｐｌ
ｉｎｇ  Ｌａｙｅｒ）とも呼ばれる。最終層は、全結合層（Ｆｕｌｌｙ  Ｃｏｎｎｅｃｔｅｄ  Ｌａｙｅｒ）とも呼ばれる。
【００１４】
フォーワッド方向の処理のうち、最終層に至るまでの畳み込み層の処理と、プーリング層の処理を繰り返し実行する演算回路部分を特徴抽出部と呼ぶ。すなわち、特徴抽出部は、入力画像に対して、畳み込み層の処理と、プーリング層の処理を繰り返し実行することで、間引かれた画像を抽出する。畳み込み層の処理は、畳み込み演算とも呼ばれる。プーリング層の処理は、プーリング演算、あるいはサブサンプリング演算とも呼ばれる。
【００１５】
より具体的には、特徴抽出部は、フォーワッド方向のある層（第ｌ−１層）において、Ｎ個×Ｎ個の画素を有する画像の情報に対して、例えば、ａ×ｂ個の重みｗab（ａ，ｂ＝０，．．．，ｍ−１）のフィルタによる畳み込み演算を実行する。特徴抽出部は、この畳み込み演算を実行することで、現在処理中の層（第ｌ−１層）の画像から、次の層（第ｌ層）の画像の情報を作る。さらに、畳み込み演算による処理結果は、非線形活性化関数ｙ＝ｓｉｇｍａ（ｘ）によって変換され、発火と呼ばれるモデル化がなされる。非線形活性化関数は、例えば、ｓｉｇｍａ（ｘ）＝ｍａｘ（０，ｘ）である。すなわち、非線形活性化関数ｙ＝ｓｉｇｍａ（ｘ）は、ｘが負の値の場合、ｓｉｇｍ（ｘ）＝０であり、ｘが正の値の場合、ｓｉｇｍａ（ｘ）＝ｘの値をとる関数である。なお、重みｗは畳み込み演算に用いられることから、係数ｗということもできる。
【００１６】
＜畳み込み層の計算＞
今、第ｌ−１層における画素（i,j）からの出力をｙl-1i,jとし、第ｌ層の画素（i,j）における畳み込み演算の処理結果をｘli,jとし、第ｌ層における画素（i,j）の非線形活性
化関数ｙ＝ｓｉｇｍ（ｘ）の演算結果をｙli,jとする。ｘli,jとｙli,jは以下の（式１）、（式２）で表すことができる。ただし、（式２）において、関数ｓｉｇｍａは、ギリシャ文字で表している。
【００１７】
【数１】
0006658033.tif 000002
【００１８】
【数２】
0006658033.tif 000003
式１の対象となる第ｌ−１層の画像の情報のうち、ｍ×ｍ個の画素の領域を以下、単位矩形領域と呼ぶ。なお、単位矩形領域は１つのフィーチャに限定される訳ではなく、図１に例示した４フィーチャマップ、６フィーチャマップが畳み込み演算の対象となる場合に、複数のフィーチャマップを用いて、畳み込み演算が実行されてもよい。また、以下、画素をセルともよぶ。単位矩形領域は配列データの部分の一例である。画素、あるいはセルは、配列データの要素の一例である。
【００１９】
プーリング演算は、Ｎ個×Ｎ個の画素を有する画像をＮ／ｋ個×Ｎ／ｋ個の画素を有す
る画像に間引く処理である。間引き方としては、例えば、Ｎ個×Ｎ個の画素をｋ個×ｋ個ずつの部分画像に区切り、各部分画像に含まれるｋ個×ｋ個の画素中の最大の画素値を有する１つの画素を選択する処理（以下、ｍａｘ  ｐｏｏｌｉｎｇと呼ぶ）、ｋ個×ｋ個の画素の平均値によって１つの画素を生成する処理等が例示できる。
【００２０】
識別部は、作成された間引かれた画像中の全画素に対して、それぞれの画素に重みを適用し、畳み込み演算を実行することで、出力値を得る。今、特徴抽出部の最後の層を第ｌ−１層として、第ｌ−１層の各画素値をｙl-1jとし、全結合による畳み込み演算結果をｘliとし、重みをｗl-1jiとすると、ｘliは以下の（式３）で表すことができる。
【００２１】
【数３】
0006658033.tif 000004
また、識別部における非線形活性化関数ｙ＝ｓｉｇｍａ（ｘ）の演算結果をｙliとすると、識別部の演算結果ｙliは以下の（式４）で表すことができる。ただし、（式４）において、関数ｓｉｇｍａは、ギリシャ文字で表している。
【００２２】
【数４】
0006658033.tif 000005
ここで、Ｉliはバイアス成分である。
【００２３】
図２に、フォーワッド方向の認識処理および識別処理とともに、バックワード方向の学習処理（ＢＰ）を例示する。図２のニューラルネットワークにおいても、フォーワッド方向の認識処理は、入力画像に畳み込み演算を実行する畳み込み層、間引き処理を実行するプーリング層によって実行される。また、識別結果を出力する識別処理は、全結合層（図２では、Ｆｕｌｌｙ  ｃｏｎｎｅｃｔｅｄと記載）によって実行される。
【００２４】
全結合層による識別処理の結果は、正解データを比較され、比較結果である差分値がエラーとして出力される。エラーは、学習処理によって処理される。学習処理は、エラーから、フォーワッド方向の畳み込み層および全結合層における各層でのエラーおよび各層での次の重みを計算する処理である。図２では、現在の重みとして、畳み込み層（１層）における１つの重みｗiと、全結合層（１層）における１つの重みｗjが例示されている。また、次の重みとして、畳み込み層（１層）における１つの重みｗi+1と、全結合層（１層
）における１つの重みｗj+1が例示されている。
【００２５】
今、例えば、エラーの評価関数として、識別結果である出力値ｙｉと正解データＴｉとの差分値の平方和Ｅを例示すると、（式５）のように定義できる。学習処理は、（式５）で例示されるエラーの評価関数を最小にするための重みｗを決定する処理と考えることができる。
【００２６】
【数５】
0006658033.tif 000006
次に、（式５）をｙiで偏微分すると（式６）となり、右辺は出力値ｙｉと正解データ
Ｔｉとの差である誤差値となる。エラーの評価関数を（式５）から一般化した場合も、エ
ラーの評価関数を出力値ｙiで偏微分すると、出力値ｙｉと正解データＴｉとの差である
誤差値となると考えることができる。
【００２７】
【数６】
0006658033.tif 000007
さらに、（式５）をｘiで偏微分し、（式７）の推移律を適用し、さらに、ｙiに（式４）を代入すると、（式８）が得られる。なお、画素値ｘと、非線形活性化関数の出力ｙとの関係を（式２）で表す場合には、（式９）が得られる。
【００２８】
【数７】
0006658033.tif 000008
【００２９】
【数８】
0006658033.tif 000009
【００３０】
【数９】
0006658033.tif 000010
一方、（式５）をｙliで偏微分し、全結合層の画素値ｘliが１つ入力側の層（第ｌ−１層）からの出力値ｙl-1jによって（式３）のように表されることを考慮すると、（式１０）が得られる。なお、第ｌ層の画素値ｘli,jが１つ入力側の層（第ｌ−１層）からの出力値ｙl-1jによって（式１）で表される場合には、（式１０）は、（式１１）のようになる。
【００３１】
【数１０】
0006658033.tif 000011
【００３２】
【数１１】
0006658033.tif 000012
（式１０）の左辺は、第ｌ層の誤差を示す。また、式１０の右辺は、第ｌ＋１層の誤差に、第ｌ層の画素ｉと第ｌ＋１層の画素ｊとの間の重みｗi,jを乗算した結果の集計である
。この集計は、第ｌ層の画素ｉに関係する第ｌ＋１層の画素ｊについて集計したものである。
【００３３】
また、（式５）を重みｗlijで偏微分し、推移律を適用し、さらに、（式３）を代入す
ると、（式１２）が得られる。ただし、（式３）は、第１−１層からの出力ｙと、第ｌ層の画素値ｘの関係となっているが、（式１２）は、第１層からの出力ｙと、第ｌ＋１層の画素値ｘの関係となっている。（式１２）は、エラーの評価関数Ｅの勾配を示す。最勾降下法によるニューラルネットワークの学習処理においては、エラーの評価関数Ｅの勾配と、学習係数イータの積が重みＷの変化量（現在の重みＷｔと次の重みＷｔ＋１の差分値）となる。したがって、以下の記述において、エラーの評価関数Ｅの勾配を重みＷの更新量ｄｅｌｔａＷと定義する。なお、画素値ｘとｙの関係が（式１）で表される場合には、（式１２）は、（式１３）のようになる。以上から、エラーの評価関数Ｅに最勾降下法を適用すると、（式１４）が得られる。なお、（式１４）では、演算がＭ回繰り返される式となっているが、Ｍ＝１でもよい。
【００３４】
【数１２】
0006658033.tif 000013
【００３５】
【数１３】
0006658033.tif 000014
【００３６】
【数１４】
0006658033.tif 000015
（Ａ）各層の重み
（式１４）は、現在の重みｗｔと次回認識処理での重みｗｔ＋１との関係を示している。したがって、（式１４）の右辺の第２項が次回の重みへの増分値となる。また、（式１４）でギリシャ文字イータは、エラーの評価関数Ｅの勾配から重みｗｔの増分値を得るための係数であり、例えば、経験的実験的に設定できる。すなわち、学習処理においては、学習回路の各層において、（式１２）（あるいは式１３）による勾配を求め、エラーの評
価関数Ｅが小さくなる方向に、（式１４）の第２項の増分値を算出し、次回の重みｗｔ＋１を求める処理を実行する。
（Ｂ）各層のエラーの評価関数の勾配（更新量ｄｅｌｔａＷの計算）
ここで、（式１４）の第２項は、（式１２）により、各層（第ｌ層）の画素値（ｙli）と、各層（第ｌ層）に対して１つ出力側の層（第ｌ＋１層）のエラー（エラーの評価関数の画素値ｘl+1jによる偏微分値）との積から得られる。ただし、現在の層（（式１３）では第ｌ−１層）と、１層全結合層側の層（（式１３）では第ｌ層）との関係が（式１）のように積和演算で表される場合、更新量ｄｅｌｔａＷは、（式１３）で表される。すなわち、更新量ｄｅｌｔａＷは、現在の層（第ｌ−１層）の画素の出力値ｙl-1i,jと関係する第ｌ層の画素値ｘli,jからのエラーへの寄与を集計したものとなっている。
（Ｃ）各層のエラー
一方、（式１０）の左辺は、各層（第ｌ層）のエラー（エラーの評価関数の画素値ｙliによる偏微分値）を示す。また、（式１０）の右辺は、現在の層（第ｌ層）に対して１つ出力側の層（第ｌ＋１層）のエラー（エラーの評価関数の画素値ｘl+1jによる偏微分値）と、第ｌ層の画素ｉと第ｌ＋１層の画素ｊとの間の重みｗi,jとの積の集計である。この
集計は、第ｌ層の画素ｉに関係する第ｌ＋１層の画素ｊについて集計したものである。
【００３７】
つまり、比較例のニューラルネットワークは、図２で例示される識別値と正解データとの差分であるエラーを基に各層の重みの増分値を求めることができる。すなわち、比較例のニューラルネットワークは、（式１０）にしたがって、１つ入力側のエラーを計算し、（式１２）あるいは（式１３）にしたがって、エラーの評価関数の勾配（更新量ｄｅｌｔａＷ）を求めることで、（式１４）にしたがって、各層において、現在の重みＷｔから次の重みのＷｔ＋１を求めることができる。つまり、図１、図２のニューラルネットワークは、（式１４）、（式１２）、（式１０）等を実行する積和演算回路を有する。
【００３８】
＜プーリング層の計算＞
プーリング層が最大値の所定範囲（ｋ個×ｋ個の範囲）から画素の最大値を選択する場合（Ｍａｘ−Ｐｏｏｌｉｎｇと呼ばれる場合）には、ｋ個×ｋ個の範囲から１つの画素が選択される。したがって、バックワード方向（ＢＰ）には、ニューラルネットワークは、選択された画素について、出力側の画素値を入力側に戻す。一方、ニューラルネットワークは、選択された画素以外の画素については、画素値＝０を入力側に戻せばよい。したがって、ニューラルネットワークは、出力側の画素値および画素値＝０を入力側に戻すための積和演算回路、あるいはセレクタ回路を有する。
【００３９】
以上の処理によって、図２のニューラルネットワークは、全結合層による識別処理の結果と正解データとの比較によって得られるエラーの評価関数Ｅを最小にするための学習処理を実行する。
【００４０】
図３に、比較例に係るニューラルネットワークを適用した画像認識装置の構成を例示する。図３において、画像メモリ０から３は、ニューラルネットワークが認識し、識別する画像データを保持する。しかしながら、すでに述べたように、図３において、ｅＤＲＡＭ構成を採用した場合には、メモリと論理回路の混載は、プロセスコスト増に繋がる。また、ｅＤＲＡＭから論理回路へのパスは配線の束となるため、チップ面積の利用効率が低下する。さらに、図２、３のように、ニューラルネットワークにおいて認識処理および識別処理を実行するフォーワッド側の回路と、学習処理を実行するバックワード側の回路が混在した場合には、認識処理実行時には、バックワード側の学習回路が未使用となるため、チップの面積利用率が低下する。
［実施の形態］
以下、本実施の形態のニューラルネットワークを説明する。本実施の形態のニューラルネットワークは、演算処理回路の一例である。図４および図５に、一実施の形態に係るニューラルネットワークを例示する。本ニューラルネットワークは、学習チップ１と、認識チップ２と、メモリチップ３とを有する。本ニューラルネットワークは、３次元実装（ＳｉＰ）技術を採用し、メモリチップ３を挟んで学習チップ１と、認識チップ２とが接合される。そして、メモリチップ３は、ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）の素子を有し、学習チップ１と、認識チップ２との間に介在する。メモリチップ３のＦＩＦＯは、タイミングを整合させるためのバッファとして作用する。
【００４１】
なお、本実施の形態のニューラルネットワークにおいても、学習フェーズおよび認識フェーズで実行される処理は、数１から数１４にしたがう。したがって、学習チップ１は、（式１４）にしたがって、次の重みＷｔを計算し、認識チップ２は、（式１）から（式４）にしたがって、入力画像の認識処理を実行する。入力画像は入力データ、および配列データの一例である。
【００４２】
学習チップ１は、入力データを認識する認識ニューラルネットワークに設定される係数を計算するための基準となる入力データに対する、前記認識ニューラルネットワークによる認識結果と前記基準となる入力データに対する基準となる認識結果とに基づいて前記係数を計算する学習ニューラルネットワークを配置した第１の層の一例である。認識チップ２は、前記学習ニューラルネットワークで計算された係数により入力データを認識する前記認識ニューラルネットワークを配置した第２の層の一例である。また、メモリチップ３は、第１の層と第２の層との間に配置され、前記学習ニューラルネットワークと前記認識ニューラルネットワークの双方に接続されるメモリを配置した第３の層の一例である。
【００４３】
学習チップ１と、認識チップ２とは、それぞれパイプライン処理を実行する。学習チップ１は、正解データと、認識チップ２が入力画像を認識した認識結果とを比較する比較回路１２を有する。比較回路１２は、基準となる入力データに対する基準となる認識結果と前記出力回路からの出力値とを比較する比較回路の一例である。そして、学習チップ１は、比較回路１２の比較結果にしたがって、各層でのエラーおよび認識チップ２に引き渡す重みを生成する。重みは、ＦＩＦＯを介して認識チップ２に引き渡される。認識チップ２は、入力側の層から全結合層に至る各層において学習チップ１から引き渡された重みを用いて認識処理を実行する。図５のように、認識チップ２は、畳み込み層とプーリング層とを複数対有する。畳み込み層での畳み込み演算の結果（ｙ）は、上位のプーリング層に出力されるとともに、現在の重み（ｗ）とともに、ＦＩＦＯを介して、学習チップ１の対応する層（Ｂａｃｋ  ｐｒｏｐｅｒｇａｔｉｏｎの畳み込み層（ＢＰ  Ｃｏｎｖ層））に引き渡される。また、プーリング層での間引き処理の結果は、ＬＵＴ（Ｌｏｏｋ  ＵｐＴａｂｌｅ）の形式で、ＦＩＦＯを介して、学習チップ１の対応する層（ＢＰ  ｐｏｏｌ層）に引き渡される。認識チップ２の最終層である全結合層と判定回路は、識別結果を出力する。全結合層と判定回路は、出力回路２６と呼ばれる。出力回路２６は、縮小された配列データの要素と前記要素に対応する係数との積和演算および所定の関数により出力値を出力する出力回路の一例である。
【００４４】
一方、認識チップ２の入力側の畳み込み層（Ｃｏｎｖ）とプーリング層（ｍａｘ  ｐｏｏｌ）を組み合わせた全結合層（Ｆｕｌｌｙ  ｃｏｎ．）に至る直前までの演算回路は、生成回路２５と呼ばれる。生成回路２５は、配列データの部分ごとに前記部分に含まれる前記配列データの要素と前記要素に対応する前記係数との積和演算および所定の関数により第１部分配列を生成する演算回路と前記配列データの部分ごとに前記生成された第１部分配列から要素を間引いて第２部分配列を生成する間引き回路との組を１組または２組以上複数段に接続して、前記配列データから縮小された配列データを生成する生成回路の一例である。
【００４５】
また、学習チップ１の逆方向の全結合層を除く、逆方向の畳み込み層（ＢＰ  Ｃｏｎｖ）とプーリング層（ＢＰ  ｐｏｏｌ）を組み合わせた演算回路は、係数生成回路１３と呼ばれる。エラーは差分値の一例である。係数生成回路１３は、逆方向の演算回路、および、前記第１部分配列から第２部分配列を生成するための間引きの対応関係を示す対応関係情報と前記生成された差分値とを基に前記第１部分配列を復元する復元回路の組み合わせを１組または２組以上複数段に接続した係数生成回路の一例である。係数生成回路１３は、認識ニューラルネットワークの各段で生成された第１部分配列と前記第１部分配列における差分値とから前記係数の変化量を生成する逆方向の生成回路の一例でもある。
【００４６】
図４、図５に例示のように、認識チップ２においては、入力画像が入力される層１から、層の番号が大きくなるにしたがって、ＦＩＦＯの段数が減少する。例えば、図４、５に例示のように、層１：畳み込み層（Ｃｏｎｖ層）、層２：プーリング層（ｍａｘ  ｐｏｏｌ層）、層３：畳み込み層（Ｃｏｎｖ層）、層４：プーリング層（ｍａｘ  ｐｏｏｌ層）
、層５：全結合層（Ｆｕｌｌｙ  ｃｏｎ．）の場合に、認識チップ２の層１において、学習チップ１に引き渡される畳み込み演算の結果と現在の重み（ｙ、ｗ）のＦＩＦＯの段数は、５段である。また、認識チップ２の層２において、学習チップ１に引き渡されるＬＵＴのＦＩＦＯの段数は、４段である。そして、ＦＩＦＯの段数は、層番号の増加とともに減少し、層５において、学習チップ１に引き渡される畳み込み演算の結果と現在の重み（ｙ、ｗ）のＦＩＦＯの段数は、１段である。したがって、入力画像が層５：全結合層（Ｆｕｌｌｙ  ｃｏｎ．）において畳み込み演算が実行され、畳み込み演算の結果と現在の重み（ｙ、ｗ）がＦＩＦＯに設定されると、層１から層５の各ＦＩＦＯの値がそろって学習チップ１に引き渡されることが可能となり、学習チップ１がパイプラインで学習処理を実行する。上記のように、「入力画像が層５：全結合層（Ｆｕｌｌｙ  ｃｏｎ．）において畳み込み演算が実行され、畳み込み演算の結果と現在の重み（ｙ、ｗ）がＦＩＦＯに設定されると、層１から層５の各ＦＩＦＯの値がそろって学習チップ１に引き渡されること」は、認識ニューラルネットワークの各段は、前記対応関係情報と前記各段の演算回路で生成された第１部分配列（ｙｌ）と前記各段の演算回路で使用された係数とを前記学習ニューラルネットワークの各段の演算回路に所定の動作タイミングで引き渡すことの一例である。
【００４７】
同様に、学習チップ１においては、認識チップ２の全結合層に対応して、Ｂａｃｋ  ｐｒｏｐｅｒｇａｔｉｏｎの層５で生成された重みＷを認識チップ２の層５に引き渡すＦＩＦＯの段数は、５段である。また、Ｂａｃｋ  ｐｒｏｐｅｒｇａｔｉｏｎの層３で生成された重みＷを認識チップ２の層３に引き渡すＦＩＦＯの段数は、３段である。Ｂａｃｋ  ｐｒｏｐｅｒｇａｔｉｏｎの層１で生成された重みＷを認識チップ２の層１に引き渡すＦＩＦＯの段数は、１段である。したがって、１枚の画像の判定結果に基づくエラーが学習チップの層１で処理されたときに、各層の新たな重みＷlt+1がＦＩＦＯの各段にそろって認識チップ２に引き渡されることが可能となる。そして、各層の新たな重みＷlt+1がＦＩＦＯの各段にそろうタイミング以降、認識チップ２がパイプラインで新たな入力画像に対して認識処理を実行することが可能となる。上記のような「１枚の画像の判定結果に基づくエラーが学習チップの層１で処理されたときに、各層の新たな重みＷlt+1がＦＩＦＯの各段にそろって認識チップ２に引き渡されること」は、学習ニューラルネットワークの各段は、前記演算回路で生成した係数を前記認識ニューラルネットワークの各段の演算回路に所定の動作タイミングで引き渡すことの一例である。
【００４８】
このように、認識チップ２の層が１つ上がるごとに、畳み込み演算の結果と現在の重み（ｙ、ｗ）のＦＩＦＯの段数が１段ずつ下がる。このようなＦＩＦＯの構成よって、１つの入力画像の識別結果が出力されたタイミングで、この入力画像の処理結果と正解データとの比較に基づく学習処理が実行可能となる。図４、図５に例示した「認識チップ２の層が１つ上がるごとに、畳み込み演算の結果と現在の重み（ｙ、ｗ）のＦＩＦＯの段数が１段ずつ下がる」構成は、認識ニューラルネットワークの各段から前記学習ニューラルネットワークの各段へ第１の動作タイミングで前記対応関係情報（ＬＵＴ）と前記第１部分配列（ｙｌ）と前記係数とを引き渡すための第１の先入れ先出し回路の一例ある。
【００４９】
また、学習チップ１の層が１つ下がるごとに、生成された重みＷを認識チップ２の層１に引き渡すＦＩＦＯの段数が１段ずつ下がる。このようなＦＩＦＯの構成よって、この識別結果に基づくエラーにより新たな重みが各層で生成されたときに、全層でタイミングを合わせて、認識チップ２の重みが更新される。図４、図５に例示した「学習チップ１の層が１つ下がるごとに、生成された重みＷを認識チップ２の層１に引き渡すＦＩＦＯの段数が１段ずつ下がる」構成は、学習ニューラルネットワークの各段から前記認識ニューラルネットワークの各段へ第２の動作タイミングで前記係数を引き渡すための第２の先入れ先出し回路の一例である。
【００５０】
図６は、図５の畳み込み層（Ｃｏｎｖ層）の構成の詳細を例示する図である。図６において、画像ＦＩＦＯには、例えば、下位の層から出力されるａ個×ｂ個の画素の配列（画素配列等）のデータ（Ｙl-1）が設定される。この場合に、画像ＦＩＦＯには、順次、入
力画像うちのａ個×ｂ個の画素の配列（単位矩形領域）に相当する部分画像が順次入力され、各部分画像ごとに畳み込み演算が実行される。ただし、画像ＦＩＦＯに、入力画像の全画素（全画素）が設定され、畳み込み層（Ｃｏｎｖ層）が、入力画像に含まれる畳み込み演算対象の複数の部分画像に対して、並列に畳み込み演算を実行する構成であってもよい。
【００５１】
また、重みＦＩＦＯには、ａ個×ｂ個の画素の配列の各画素に乗算されるａ個×ｂ個の重み（Ｗａｂ）が設定される。重みＷａｂは、学習チップ１において計算されたものである。そして、乗算回路がａ個×ｂ個の画素とａ個×ｂ個の重み（Ｗａｂ）とを乗算し、加算回路が乗算結果を加算することで、例えば、（式１）に示した畳み込み処理が実行され、画素の配列（Ｘl）が算出される。さらに、例えば、（式２）に示した活性化関数を算
出する回路が画素の配列（Ｘl）から画素の配列（Ｙl）を生成し、次の層に出力する。一方、畳み込み層（Ｃｏｎｖ層）で用いられた重み（Ｗａｂ）と画素の配列（Ｙl）は、Ｆ
ＩＦＯを介して学習チップ１に送られる。
【００５２】
図７は、逆方向（ＢＰ）の畳み込み層（ＢＰ  Ｃｏｎｖ層）の回路の構成を例示する図である。逆方向（ＢＰ）の畳み込み層（ＢＰ  Ｃｏｎｖ層）は、２つの積和演算回路１１１、１１２を有する。第１の積和演算回路１１１は、第ｌ層での認識（ｆｏｒｗａｒｄ）時の重みｗと、１層分出力層に近い層（ｌ＋１層）からのエラー信号ＥＲＲＯＲl+1とを
乗算し、次の層（ｌ層）へのエラー信号ＥＲＲＯＲlを生成する。第１の積和演算回路１
１１の処理は、（式１０）に対応する処理である。なお、図７では、省略されているが、数１１に示したように、第ｌ層のａ個×ｂ個の画素ｉと、第ｌ＋１層の要素ｊとがａ個×ｂ個の重みｗa,bによって、（式１）の畳み込み演算によって関係付けされる場合には、
回路は複雑となる。すなわち、第１の積和演算回路１１１には、第ｌ層のａ個×ｂ個の画素ｉのエラー信号ＥＲＲＯＲla,bとａ個×ｂ個の重みｗa,bが入力され、積和演算が実行
される。第１の積和演算回路１１１と第２の積和演算回路１１２の組は、比較回路の比較結果による差分値に基づいて、前記出力回路および前記各段に引き渡す係数と前記各段の第１部分配列における差分値とを生成する逆方向の演算回路の一例である。
【００５３】
第２の積和演算回路１１２は、１層分出力層に近い層（ｌ＋１層）からのエラー信号ＥＲＲＯＲl+1と、第ｌ層での認識時の入力ｙlを乗算し、重みの更新量ｄｅｌｔａＷを算出する。重みの更新量ｄｅｌｔａＷは、更新器（ｕｐｄａｔｅ）に引き渡される。なお、図７では、省略されているが、数１３に示したように、第ｌ層のａ個×ｂ個の画素ｉと、第ｌ＋１層の要素ｊとがａ個×ｂ個の重みｗa,bによって、（式１）の畳み込み演算によっ
て関係付けされる場合には、回路は複雑となる。すなわち、第２の積和演算回路１１２には、上位層からのａ個×ｂ個の画素ｉのエラー信号ＥＲＲＯＲa,bと、現在計算対象の層
のａ個×ｂ個の入力ｙa,bが入力され、積和演算が実行される。第２の積和演算回路１１
２は、認識ニューラルネットワークの各段で生成された第１部分配列と前記第１部分配列における差分値とから前記係数の変化量（ｄｅｌｔａＷ）を生成する生成回路の一例である。
【００５４】
図８は、逆方向（ＢＰ）のプーリング層（ＢＰ  ｐｏｏｌ層）の回路の構成を例示する図である。逆方向（ＢＰ）のプーリング層（ＢＰ  ｐｏｏｌ層）の回路の一例は、１層分出力層に近い層（ｌ＋１層）からのエラー信号ＥＲＲＯＲl+1とルックアップテーブルＬ
ＵＴとの積和演算を実行する積和演算回路である。図８では、ＥＲＲＯＲl+1の画素のう
ち、左上の画素のエラー値０．２と、左上の画素対するプーリング層からのルックアップテーブルＬＵＴの部分ＬＵＴ１とが積和演算され、次の層へのエラー信号の部分が復元さ
れる。復元結果は、ＥＲＲＯＲlの画素のうち、左上の４つの画素の部分に、積和演算結
果である０．２、０、０、０が設定される結果となる。同様の積和演算がＥＲＲＯＲlの
他の画素の部分にも実行される。ルックアップテーブルＬＵＴは、第１部分配列から第２部分配列を生成するための間引きの対応関係を示す対応関係情報の一例である。
【００５５】
なお、逆方向（ＢＰ）のプーリング層（ＢＰ  ｐｏｏｌ層）の回路として、積和演算回路に代えて、セレクタを用いてもよい。すなわち、ルックアップテーブルで１が設定されている画素に対応するエラー信号ＥＲＲＯＲlの画素には、エラー信号ＥＲＲＯＲl+1の対応する画素のエラー信号を出力し、ルックアップテーブルで０が設定されている画素に対応する画素エラー信号ＥＲＲＯＲlの画素には、０を出力する回路とすればよい。図８の
逆方向（ＢＰ）のプーリング層（ＢＰ  ｐｏｏｌ層）の回路は、第１部分配列から第２部分配列を生成するための間引きの対応関係を示す対応関係情報（ＬＵＴ）と前記生成された差分値とを基に前記第１部分配列を復元する復元回路の一例である。
【００５６】
図９は、次の重みＷｔ＋１を生成する更新器の構成を例示する図である。更新器は、図７で説明した重みの更新量ｄｅｌｔａＷと、学習係数イータとを積算し、累積する回路として実現できる。累積する回路は、加算回路と記憶素子を含む。図９の構成は、（式１４）に対応する処理を実行する。図９の更新器は、生成した変化量を順次積算して前記認識ニューラルネットワークの各段に引き渡す係数を生成する更新回路の一例である。
【００５７】
以下、図４、図５のニューラルネットワークによる処理を説明する。まず、学習フェーズの処理を説明する。学習フェーズでは、入力画像が認識チップ２に入力されるともに、正解データが学習チップ１に入力される。認識チップ２では、畳み込み層（Ｃｏｎｖ層）が入力画像とメモリチップ３のＦＩＦＯからの重みｗとの積和演算と活性化関数の演算を行い、その結果をプーリング層（max pooling層）に渡す。この時、畳み込み層（Ｃｏｎ
ｖ層）の演算回路は、その出力yと,重みwをメモリチップ３のＦＩＦＯに蓄えておく。
【００５８】
次のプーリング層（max pooling層）は、畳み込み層（Ｃｏｎｖ層）の出力から、各単
位矩形領域（例えば、ａ個×ｂ個の画素）での最大値を取得（pick up）し、次層の畳み
込み層（Ｃｏｎｖ層）に取得結果を渡す。その時、どの座標（即ち、画素）から最大値を取得したかをルックアップテーブルＬＵＴに保持しておく。次の畳み込み層（Ｃｏｎｖ層）、プーリング層（max pooling層）も同様の処理を行う。そして、全結合（Fully connected）層も、畳み込み層（Ｃｏｎｖ層）と同様の動作を行い、出力を判定器で判定し、識別結果を学習チップ１に送る。
【００５９】
学習チップ１では、認識チップ２から送られてきた識別結果と正解データとの差分を計算し、エラーを算出する。そして、Back Propagation(BP)のfully connected層では、そ
のエラーを、認識チップ２の出力yおよび重みwを一緒に用いて、次層へのエラーを計算するとともに、次の重みｗｔ＋１への更新量ｄｅｌｔａＷを更新器に送る。この重みｗｔ＋１は、メモリチップ３のＦＩＦＯに送られ、畳み込み層（Ｃｏｎｖ層）の係数を変えるタイミングで取り出されるように保持される。
【００６０】
逆方向の全結合層（ＢＰ  ｆｕｌｌｙ  ｃｏｎｎｅｃｔｅｄ層）から伝搬してきたエラーは、逆方向のプーリング層（ＢＰ  Ｐｏｏｌ層）にて、認識チップ２のプーリング層（Ｐｏｏｌｉｎｇ層）からメモリのバッファを介して送られてきたｌｏｏｋ  ｕｐ  ｔａｂｌｅ（ＬＵＴ）を基に、サブサンプリング前の大きさの画像に復元される。すなわち、逆方向のプーリング層（ＢＰ  Ｐｏｏｌ層）は、最大値を取った座標の画素へはエラーをそのまま伝搬させ、それ以外の画素には、０を返す事で、サブサンプリング前の大きさの画像に復元する。同様に、逆方向の畳み込み層（ＢＰ  Ｃｏｎｖ層）、逆方向のプーリング層（ＢＰ  Ｐｏｏｌ層）、逆方向の畳み込み層（ＢＰ  Ｃｏｎｖ層）と処理が行われる。このとき、逆方向の各畳み込み層（ＢＰ  Ｃｏｎｖ層）では次の係数が算出され、更新器とメモリチップ３のＦＩＦＯを介して、認識チップ２での新しい画像の認識に使用される。
【００６１】
認識フェーズでは、メモリチップの係数が固定されるので、その係数を用いて、認識チップ２において、学習フェーズと同じ処理が行われる事で、識別したい画像の識別結果を作り出し、結果を出力する。
【００６２】
図１０に、畳み込み層、プーリング層1層、全結合層1層のニューラルネットワークのタイミングダイアグラムを例示する。ここでは、学習フェーズでの学習チップ１と認識チップ２の動作を例示する。一方、認識フェーズでは、学習チップ１は動作しないで、認識チップ２による動作が行われる。図１０において、Ａ、Ｂ、・・・、Ｍを囲む矩形はそれぞれ入力画像を表す。
【００６３】
認識チップ２では、畳み込み層が入力データとメモリチップ３のＦＩＦＯからの重みw
との積和演算と活性化関数の演算を行い、その結果をプーリング層に引き渡す。
この時、畳み込み層の出力yと,重みｗはメモリのＦＩＦＯに蓄えておく（処理Ｐ１）。ＦＩＦＯに蓄えた出力yと,重みｗは、後の処理Ｐ６のフェーズで使用される。
【００６４】
次のプーリング層は、畳み込み層の出力から、各単位矩形領域（ａ個×ｂ個の画素領域）での最大値を取得（pick up）し、次層の畳み込み層に取得結果を引き渡す。プーリン
グ層による処理時、どの座標（画素）から最大値を取得したかをルックアップテーブルＬＵＴに保持しておく（処理Ｐ２）。ルックアップテーブルＬＵＴは、後の処理Ｐ５のフェーズで使用される。全結合層は畳み込み層と同じ動作を行い、出力を判定器で判定し、識別結果を学習チップ１に送る（処理Ｐ３）。
【００６５】
学習チップ１では、認識チップ２から送られてきた識別結果と正解データとの差分を計算し、エラーを算出する。そして、逆方向（ＢＰ）の全結合層では、そのエラーを、認識チップ２の出力ｙと重みＷｔとを一緒に用いて、次層へのエラーを計算するとともに、次の重みＷｔ＋１への更新量ｄｅｌｔａＷを更新器に送る（処理Ｐ４）。この更新後の重みＷｔ＋１は、メモリチップ３のＦＩＦＯに送られ、畳み込み層の重みを更新して、次の画像に対する計算に用いられる際に取り出されるように保持される（処理Ｐ９）。
【００６６】
逆方向の全結合層（ＢＰ  ｆｕｌｌｙ  ｃｏｎｎｅｃｔｅｄ層）から伝搬してきたエラーは、逆方向のプーリング層（ＢＰ  Ｐｏｏｌ層）にて、次の層の画素の配列に復元される。すなわち、逆方向のプーリング層は、認識チップ２のプーリング層（Ｐｏｏｌｉｎｇ層）からメモリチップ３のＦＩＦＯを介して送られてきたルックアップテーブルＬＵＴを基に、最大値を取った座標へはエラーを引き渡し、それ以外の画素には、０を引き渡すことで、サブサンプリング前の大きさの画素配列（画像）を復元する（処理Ｐ５）。最後の逆方向の畳み込み層では次の重みが算出され、更新器とメモリチップ３のＦＩＦＯを介して、認識チップ２での新しい画像の認識に使用される（処理Ｐ６から処理Ｐ７）。
【００６７】
以上のように重みが更新されながら、認識チップ２及び学習チップ１での処理が進むことで、学習の動作が実施される。
【００６８】
図１１に、畳み込み層２層、プーリング層２層、全結合層1層のニューラルネットワー
クのパッケージレベルでの実装例を示す。図１１において、外部からの信号は、例えば、データクロックと同期して、パッケージのバンプを通して、認識チップ２内のＩ／Ｏ回路Ｒｘ  ２３−１で受信される。図１１では、外部の信号送受信先として、外部プロセッサ４および外部メモリ５が例示されている。
【００６９】
外部プロセッサ４は、Ｉ／Ｏ回路Ｒｘ  ２３−１を通して、認識チップ２内の全体制御回路２２、あるいは認識ニューラルネットワーク２１へ信号を送信し、さらに、学習チップ１に正解データを送信する。そして、識別された結果や、全体制御回路２２からの完了信号は、Ｉ／Ｏ回路Ｔｘ  ２３−２を通して、データクロックと同期して、外部プロセッサ４へ送信され出力される。
【００７０】
全体制御回路２２からは、認識ニューラルネットワーク２１、メモリ部３１、学習ネットワーク１１へのリセットや各パラメータの設定が行われる。そして、全体制御回路２２は、各ブロックからの完了通知を受け取り、Ｉ／Ｏ回路Ｔｘ  ２３−２を通して、チップ外へ完了を通知する。
【００７１】
認識ニューラルネットワーク２１、メモリ部３１、学習ニューラルネットワーク１１は、ＴＳＶ（Ｔｈｒｏｕｇｈ  ｓｉｌｉｃｏｎ  ｖｉａ）を介して接続されており、各ブロックからの信号を送受信することが可能である。メモリ部３１は、メモリおよび第２のメモリの一例である。
【００７２】
ここで、外部プロセッサ４は、単一のＣＰＵに限定される訳ではなく、マルチプロセッサ構成であってもよい。また、単一のソケットで接続される単一のＣＰＵがマルチコア構成を有していても良い。本実施の形態において、ニューラルネットワークと連携する少なくとも一部の処理は、ＣＰＵ以外のプロセッサ、例えば、Digital Signal Processor(DSP)、Graphics Processing Unit（GPU）、数値演算プロセッサ、ベクトルプロセッサ、画像処理プロセッサ等の専用プロセッサで行われても良い。また、少なくとも一部の処理は、集積回路（ＩＣ）、その他のディジタル回路によるものであっても良い。また、上記各部の少なくとも一部にアナログ回路が含まれても良い。集積回路は、ＬＳＩ，Application Specific Integrated Circuit（ASIC），プログラマブルロジックデバイス（ＰＬＤ）と
呼ばれるものを含む。ＰＬＤは、例えば、Field-Programmable Gate Array(FPGA)を含む
。また、外部プロセッサ４は、ＣＰＵと集積回路との組み合わせであっても良い。組み合わせは、例えば、マイクロコントローラ（ＭＣＵ），ＳｏＣ（System-on-a-chip），システムＬＳＩ，チップセットなどと呼ばれる。外部プロセッサ４は、プロセッサの一例である。
【００７３】
また、外部メモリ５は、例えば、画像、音声、その他のデータを格納する装置であり、ＤＲＡＭ、ＳＲＡＭ等と呼ばれるものが含まれる。外部メモリ５は、ＵＳＢメモリ、ＳＳＤ等であってもよい。図１１のニューラルネットワーク、外部プロセッサ４および外部メモリ５が情報処理装置の一例である。本情報処理装置は、本実施の形態で説明したニューラルネットワークを用いて、様々なデータ認識処理を高速に実行する。外部メモリ５は、第１のメモリの一例である。
【００７４】
図１２に、本実施の形態のニューラルネットワークの処理のフローチャートを例示する。本ニューラルネットワークでは、まず、電源投入により、学習チップ１、認識チップ２、メモリチップ３に電源が供給される。そして、認識チップ２の全体制御回路２２が全回路をリセットする（Ｓ１）。
【００７５】
次に、全体制御回路２２が、メモリチップ３の重みに対して乱数を設定する。また、全体制御回路２２は学習枚数を設定する（Ｓ２）。学習枚数は、学習フェーズで使用される画像の枚数である。そして、外部のコンピュータ（ＣＰＵ，プロセッサ等）が、認識チップ２に学習データと正解データを入力し、学習を開始する（Ｓ３）。そして、全体制御回路２２は、設定された学習枚数分の入力画像の学習がすべて終わったか否かを判定する（Ｓ４）。学習枚数分の入力画像の学習が終わっていない場合、全体制御回路２２は、重み
をアップデートして学習を継続する（Ｓ５）。一方、学習枚数分の入力画像の学習がすべて終わった場合、全体制御回路２２は、学習チップをオフさせ、メモリチップの重みを固定化させる（Ｓ６）。そして、全体制御回路２２は、認識動作を開始する（Ｓ７）。
【００７６】
図１３に、本ニューラルネットワークの処理シーケンスを例示する。全体制御回路２２は、Ｉ／Ｏ２３部を介して外部のコンピュータ（ＣＰＵ、プロセッサ等）からＳＴＡＲＴ信号を受信すると、認識ニューラルネットワーク２１、メモリ部３１、学習ニューラルネットワーク１１にＲＥＳＥＴ信号を送信し、初期化を実行する（Ｔ２）。なお、Ｉ／Ｏ部２３は、図１１のＩ／Ｏ回路Ｒｘ  ２３−１、Ｉ／Ｏ回路Ｔｘ  ２３−２に相当する。
その後、全体制御回路２２が認識ニューラルネットワーク２１、学習ニューラルネットワーク１１に学習枚数を設定し、メモリ部３１に対してニューラルネットワークの重みの初期値を乱数で与える（Ｔ３）。本実施の形態では、学習枚数および重みの初期値を変数と呼ぶ。
【００７７】
次に、全体制御回路２２は、Ｉ／Ｏ部２３を介して、外部のコンピュータ（ＣＰＵ、プロセッサ等）に対し、初期完了信号を送信する（Ｔ４）。
【００７８】
初期完了信号を受けて、外部のコンピュータ（ＣＰＵ、プロセッサ等）からＩ／Ｏ部２３を介して学習信号が全体制御回路２２に入力されと、ニューラルネットワークの学習が実行される。すなわち、学習ニューラルネットワーク１１、認識ニューラルネットワーク２１、メモリ部３１は、ニューロン情報、重み、認識結果、ＴＳＶを介して通信する。そして、学習ニューラルネットワーク１１は、新たに計算した新しい重みをメモリ部３１のＦＩＦＯを介して認識ニューラルネットワーク２１に供給する（Ｔ４）。設定された学習枚数の画像の学習が完了した後、学習ニューラルネットワーク１１、および認識ニューラルネットワーク２１は全体制御回路２２に学習完了信号を通知する（Ｔ５）。
【００７９】
すると、全体制御回路２２は、メモリ部３１の重みを固定させ、学習チップ１をpower downさせ、外部のコンピュータ（ＣＰＵ、プロセッサ等）に学習が完了したことを通知する（Ｔ６）。その後、本ニューラルネットワークは、認識フェーズとなる（Ｔ７）。外部のコンピュータ（ＣＰＵ、プロセッサ等）は、認識させたい画像を認識チップ２に入力し、認識処理を実行させ、認識結果をＩ／Ｏ２３を通して出力させる。
【００８０】
＜実施の形態の効果＞
図１４は、実施の形態のニューラルネットワークのチップの平面図の一例である。本実施の形態のニューラルネットワークは、学習ニューラルネットワーク１１と認識ニューラルネットワーク２１とがメモリ部３１を挟む３次元構造を有する。ただし、図１４では、理解の容易のため、学習ニューラルネットワーク１１と認識ニューラルネットワーク２１とずらされて示されており、メモリ部３１は省略されている。図１４に例示のように、チップの上面から見た場合、学習ニューラルネットワーク１１と認識ニューラルネットワーク２１とがほぼ重なって形成されることがわかる。例えば、認識ニューラルネットワーク２１中のＩ／Ｏ部２３が１０％、その他認識フェーズで利用しない回路が２０％であると仮定しても、面積上７０％の回路が、認識フェーズで使用可能となり、図３のような比較例の構成よりも高い面積利用率を実現できる。
【００８１】
また、本実施の形態によれば、本ニューラルネットワークは、メモリチップ３と、演算回路を含む学習チップ１および認識チップ２とを分離して半導体プロセスのコストを抑制できる。さらに、本ニューラルネットワークは、学習ニューラルネットワーク１１を配置した第１の層である学習チップ１と、認識ニューラルネットワーク２１を配置した第２の層である認識チップ２との間にメモリチップ３を配置する。このような構成により、本ニューラルネットワークは、処理の高速化を図ることができる。また、本ニューラルネットワークは、メモリチップ３と、メモリチップ３と、演算回路を含む学習チップ１および認識チップ２との間のパスが、配線の束となる構造を抑制し、チップ面積の利用効率の低下を抑制することができる。 
【００８２】
また、学習ネットワーク１１は、認識ニューラルネットワーク２１からの出力値である識別結果と、外部のプロセッサ４から与えられる正解データとを比較する比較回路１２により、識別結果に対するエラーを取得できる。そして、学習ニューラルネットワーク１１は、識別結果に対するエラーに対して、逆方向の全結合層により、認識ニューラルネットワーク２１における全結合層に入力される画素配列でのエラーを取得できる。そして、学習ニューラルネットワーク１１は、メモリチップ３のＦＩＦＯからの認識ニューラルネットワーク２１の全結合層に入力される画素配列と畳み込み演算の重み（すなわち係数）とから、さらに、次に設定する畳み込み演算の重み（すなわち係数）と、下位の層における画素配列のエラーを計算できる。この場合に、学習ニューラルネットワーク１１は、図７に例示した２つの積和演算回路により、次に設定する畳み込み演算の重み（すなわち係数）と、下位の層における画素配列のエラーを計算できる。
【００８３】
また、逆方向のプーリング層は、認識ニューラルネットワーク２１のプーリング層から、間引き処理を示すルックアップテーブルを取得できるので、全結合層に入力される画素配列のエラーから、間引き前の下位の層の画素配列を復元できる。この場合、学習ニューラルネットワーク１１は、図８に例示した積和演算回路、あるいは、セレクタにより、間引き前の下位の層の画素配列を復元できる。
【００８４】
そして、逆方向の畳み込み層と、プーリング層とは、以上の処理を下位の層まで繰り返してパイプラインで実行し、各層での画素配列のエラーと、次に設定する畳み込み演算の重み（すなわち係数）とを計算できる。そして、計算された次に設定する畳み込み演算の重みは、メモリチップ３のＦＩＦＯを介して、所定のタイミングで認識チップ２に引き渡すことができる。一方、認識チップ２の各層は、メモリチップ３のＦＩＦＯを介して、所定のタイミングで各層での認識結果および認識に使用した重みを学習チップの各層に引き渡すことができる。
【００８５】
また、学習ニューラルネットワーク１１の逆方向の各畳み込み層は、所定のタイミング（第１の動作タイミング）で、認識ニューラルネットワーク２１でなされたプーリング層での対応関係情報であるＬＵＴと、認識結果（畳み込み演算結果）である配列の部分を取得できる。したがて、学習ニューラルネットワーク１１は、上記生成された各段のエラーを用いて、次に、認識ニューラルネットワークの各段に引き渡す重みＷｔ＋１を生成できる。この場合、学習ニューラルネットワーク１１は、図９に例示した更新器により、重みＷｔ＋１を生成できる。
【００８６】
＜変形例＞
以上の実施の形態では、入力画像の認識を実行するニューラルネットワークを例示したが、本ニューラルネットワークの処理対象が画像の情報に限定される訳ではない。本ニューラルネットワークは、（式１）（式３）のような畳み込み演算が利用可能な入力データ、例えば、１次元配列、２次元配列、あるいは３次元以上の配列等のデータを処理可能である。
【００８７】
また、上記実施の形態の説明では、プーリング層として、ｍａｘ  ｐｏｏｌｉｎｇを実行するものを例示したが、プーリング層は平均値によるプーリングを実行してもよい。プーリング層は平均値によるプーリングを実行する場合、ルックアップテーブルＬＵＴを用いなくてもよい。例えば、プーリング層が、ｎ個の区分における平均値を算出してプーリングを実行する場合には、逆方向プーリング層は、上位側のエラーＥを区分数（間引かれ
る前の単位矩形領域の画素数）ｎで割算してＥ／ｎを算出し、算出した値Ｅ／ｎを現在の層のエラーとして、畳み込み層に各区分（各画素）の値として引き渡せばよい。
【符号の説明】
【００８８】
１    学習チップ
２    認識チップ
３    メモリチップ
１１    学習ニューラルネットワーク
１２    比較回路
１３    係数生成回路
２１    認識ニューラルネットワーク
２２    全体制御回路
２３    ＩＯ部
２３−１  Ｉ／Ｏ回路Ｒｘ
２３−２  Ｉ／Ｏ回路Ｔｘ
２５    生成回路
２６    出力回路
【図１】
0006658033.tif 000016
【図２】
0006658033.tif 000017
【図３】
0006658033.tif 000018
【図４】
0006658033.tif 000019
【図５】
0006658033.tif 000020
【図６】
0006658033.tif 000021
【図７】
0006658033.tif 000022
【図８】
0006658033.tif 000023
【図９】
0006658033.tif 000024
【図１０】
0006658033.tif 000025
【図１１】
0006658033.tif 000026
【図１２】
0006658033.tif 000027
【図１３】
0006658033.tif 000028
【図１４】
0006658033.tif 000029