(57)【要約】【課題】畳み込み層での畳み込み演算のために多数の入力バーが必要となる場合であっても、その畳み込み演算にクロスバー回路を適用することが可能な畳み込みニューラルネットワークを提供する。【解決手段】クロスバー回路が、第１クロスバー回路６１と第２クロスバー回路６２とに分割される。第１クロスバー回路６１には、入力データに含まれる特徴マップの内、一部の特徴マップに対して複数のフィルタの畳み込み演算を行う。第２クロスバー回路６２には、第１クロスバー回路６１にて畳み込み演算の対象とされる一部の特徴マップとは異なる別の一部の特徴マップに対して複数のフィルタの畳み込み演算を行う。第１クロスバー回路６１によるフィルタの畳み込み演算結果である特徴マップと、第２クロスバー回路６２によるフィルタの畳み込み演算結果である特徴マップが、マージ層６３においてマージされる。【選択図】図８
2018200627.tif 000002
【特許請求の範囲】
【請求項１】
複数の畳み込み層（２１〜２７）を含む畳み込みニューラルネットワーク（２０）であって、
複数の畳み込み層の少なくとも１つは、複数の入力バー（５０）と、それら複数の入力バーと交差する複数の出力バー（５１、５２）と、複数の入力バーと複数の出力バーとの各交点に設けられ、複数の入力バーに入力される各入力信号に対して、畳み込まれる複数のフィルタに対応する重みを付与する複数の重み付与素子（５３）とを有するクロスバー回路（４４）を有し、それぞれの入力バーに入力された入力信号が前記重み付与素子によって重みを付与された状態で、各出力バー上で加算されることにより、それぞれの入力信号を含む入力データに対する前記複数のフィルタの畳み込み演算をアナログ領域で行うものであり、
前記入力データは、複数の特徴マップを含み、
前記畳み込み層のクロスバー回路（４４）は、前記複数の特徴マップの内の一部の特徴マップに対して複数のフィルタの畳み込み演算を行う第１クロスバー回路（６１）と、前記第１クロスバー回路とは別個に設けられ、前記第１クロスバー回路にて畳み込み演算の対象とされる前記一部の特徴マップとは異なる別の一部の特徴マップに対して複数のフィルタの畳み込み演算を行う第２クロスバー回路（６２）とを有し、
前記第１クロスバー回路による演算結果と、前記第２クロスバー回路による演算結果とをマージするマージ層（６３）を有する畳み込みニューラルネットワーク。
【請求項２】
前記マージ層は、前記第１クロスバー回路による演算結果と、前記第２クロスバー回路による演算結果との対応する要素同士をマージする請求項１に記載の畳み込みニューラルネットワーク。
【請求項３】
前記マージ層は、複数の入力バーと、複数の入力バーと交差する複数の出力バーと、複数の入力バーと複数の出力バーとの各交点に設けられ、複数の入力バーに入力されるそれぞれの畳み込み演算結果の各要素に対して、重みを付与する複数の重み付与素子とを有するクロスバー回路（６４）を有し、
前記マージ層のクロスバー回路において、前記第１クロスバー回路の畳み込み演算結果と前記第２クロスバー回路の畳み込み演算結果との対応する要素同士が重み付与素子による重みを付与された状態で、各出力バー上で加算される請求項２に記載の畳み込みニューラルネットワーク。
【請求項４】
前記マージ層は、階層的に設けられた第１マージ層（６５、６６）と第２マージ層（６７）とを有し、
前記第１マージ層は、前記第１クロスバー回路による畳み込み演算結果と、前記第２クロスバー回路による畳み込み演算結果との対応する要素同士をマージしたマージ結果として、複数のマージ結果を出力し、
前記第２マージ層は、前記第１マージ層が出力した複数のマージ結果の対応する要素同士をさらにマージする請求項２又は３に記載の畳み込みニューラルネットワーク。
【請求項５】
前記第１クロスバー回路は、複数のフィルタの内の一部のフィルタの畳み込み演算を行い、畳み込み演算を行ったフィルタの数に対応する特徴マップを作成するものであり、
前記第２クロスバー回路は、前記第１クロスバー回路にて畳み込み演算を行ったフィルタとは異なる別の一部のフィルタの畳み込み演算を行い、畳み込み演算を行ったフィルタの数に対応する特徴マップを作成するものである請求項１乃至４のいずれかに記載の畳み込みニューラルネットワーク。
【請求項６】
前記第１クロスバー回路の畳み込み演算結果の各要素の数、前記第２クロスバー回路の畳み込み演算結果の各要素の数、及び前記マージ層によるマージ結果の各要素の数は、同一である請求項１乃至５のいずれかに記載の畳み込みニューラルネットワーク。
【請求項７】
前記畳み込み層のクロスバー回路における重み付与素子、及び前記マージ層のクロスバー回路における重み付与素子は、外部にて行われる学習結果に基づく重みがそれぞれ設定される請求項３に記載の畳み込みニューラルネットワーク。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の畳み込み層を含む畳み込みニューラルネットワークに関する。
【背景技術】
【０００２】
近年、ディープニューラルネットワーク及びディープラーニングアルゴリズムを使用することにより、例えば画像認識の分野において、従来の機械学習による認識性能を遥かに凌駕する認識性能を得られることが実証されている。この際、ディープニューラルネットワークとして、概して畳み込みニューラルネットワークが用いられる。畳み込みニューラルネットワークは、局所領域（フィルタ）の畳み込み（Convolution)とプーリング(Pooling)とを繰り返して抽出した特徴を、全結合層を介して出力層に伝え、出力層から、ソフトマックス（Softmax）関数などにより、分類すべき各クラスに属する確からしさを示す出力値を出力するように構成される。
【０００３】
このような畳み込みニューラルネットワークでは、畳み込みやプーリングのために、多くの加算、乗算、及び除算などの演算が繰り返される。従って、畳み込みニューラルネットワークにおける演算をＣＰＵやＧＰＵを用いて行う場合、演算負荷が膨大となり、消費電力も増加するという問題がある。
【０００４】
そのため、このような演算を効率良く行うための専用のハードウエア回路の開発が進められている。そのハードウエア回路の一例として、例えば特許文献１や特許文献２に示されるような、印加電圧や通電電流によって異なる抵抗状態に設定することが可能な抵抗変化型メモリ（メモリスタ）を利用したクロスバー回路がある。
【０００５】
このクロスバー回路は、多数の入力バーと多数の出力バーとが交差するように配列され、各交点において入力バーと出力バーとがメモリスタを介して接続されることによって構成される。クロスバー回路の入力バーに入力信号を入力すると、各入力信号はメモリスタによるコンダクタンスを重みとして乗じられた後、出力バー上において積算される。このため、例えば、上述した畳み込みニューラルネットワークのある畳み込み層における、フィルタの各要素の重みに対応したコンダクタンスを各メモリスタに設定することにより、畳み込み演算をクロスバー回路にて実行させることが可能となる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】国際公開第２０１６／０６８９５３号
【特許文献２】国際公開第２０１７／０１００４９号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ここで、出力層から見て上位の階層の畳み込み層において、フィルタの畳み込み演算を上述したクロスバー回路にて行おうとした場合、下位の階層の畳み込み層で作成された各特徴マップに対するフィルタの畳み込み演算結果を積算するために、入力バーの数として、（下位の階層の畳み込み層で作成された特徴マップの数×フィルタサイズ＋１）が必要となる。なお、フィルタサイズとしては、例えば３×３、５×５のサイズが用いられる。また、入力バーの数に「１」を加えているのは、バイアスを入力するための入力バーも必要なためである。
【０００８】
大規模な畳み込みニューラルネットワークでは、１つの畳み込み層において用いられるフィルタの数も多数に上ることがある。この場合、畳み込み層で作成される特徴マップの数も多数に上ることになる。そのような場合、その上位階層の畳み込み層のクロスバー回路では、例えば、千を超える入力バーが必要となることもあり得る。
【０００９】
しかしながら、クロスバー回路の物理的なサイズ、すなわち入力バーや出力バーの本数は、配線でのＩＲドロップや、配線の最大許容電流などの要因により、制限を受ける。このため、畳み込みニューラルネットワークが大規模となった場合には、上位階層の畳み込み層において、畳み込み演算にクロスバー回路を利用できない可能性が生じる。
【００１０】
本発明は、上述した点に鑑みてなされたものであり、畳み込み層での畳み込み演算のために多数の入力バーが必要となる場合であっても、その畳み込み演算にクロスバー回路を適用することが可能な畳み込みニューラルネットワークを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するために、本発明による畳み込みニューラルネットワークは、
複数の畳み込み層（２１〜２７）を含み、その複数の畳み込み層の少なくとも１つは、複数の入力バー（５０）と、それら複数の入力バーと交差する複数の出力バー（５１、５２）と、複数の入力バーと複数の出力バーとの各交点に設けられ、複数の入力バーに入力される各入力信号に対して、畳み込まれる複数のフィルタに対応する重みを付与する複数の重み付与素子（５３）とを有するクロスバー回路（４４）を有し、それぞれの入力バーに入力された入力信号が重み付与素子によって重みを付与された状態で、各出力バー上で加算されることにより、それぞれの入力信号を含む入力データに対する複数のフィルタの畳み込み演算をアナログ領域で行うものであり、
入力データは、複数の特徴マップを含み、
畳み込み層のクロスバー回路（４４）は、複数の特徴マップの内の一部の特徴マップに対して複数のフィルタの畳み込み演算を行う第１クロスバー回路（６１）と、第１クロスバー回路とは別個に設けられ、第１クロスバー回路にて畳み込み演算の対象とされる一部の特徴マップとは異なる別の一部の特徴マップに対して複数のフィルタの畳み込み演算を行う第２クロスバー回路（６２）とを有し、
第１クロスバー回路による畳み込み演算結果と、第２クロスバー回路による畳み込み演算結果とをマージするマージ層（６３）を有する。
【００１２】
上記のように、本発明による畳み込みニューラルネットワークは、複数の畳み込み層の少なくとも１つにおいて、クロスバー回路は、互いに別個に設けられた第１クロスバー回路と第２クロスバー回路とを有するように構成される。このため、ある畳み込み層において、クロスバー回路の物理的なサイズ上限を超える入力バーの本数が必要となる場合であっても、その必要となる入力バーの本数を、第１クロスバー回路と第２クロスバー回路を含む複数のクロスバー回路に振り分けることが可能になる。これにより、畳み込み演算をクロスバー回路において実行することが可能になる。
【００１３】
ただし、第１クロスバー回路は、複数の特徴マップの内の一部の特徴マップに対して複数のフィルタの畳み込み演算を行って演算結果（特徴マップ）を出力するものである。また、第２クロスバー回路は、第１クロスバー回路にて畳み込み演算が行われる一部の特徴マップとは異なる別の一部の特徴マップに対して複数のフィルタの畳み込み演算を行って演算結果（特徴マップ）を出力するものである。このように、第１クロスバー回路及び第２クロスバー回路の演算結果は、個別に見ると、入力された全ての特徴マップに基づくものではない。このため、それらの畳み込み演算結果をそのまま用いて畳み込みニューラルネットワークにおける処理を続行すると、認識性能の低下を招く虞がある。
【００１４】
そのため、本発明による畳み込みニューラルネットワークは、さらに、第１クロスバー回路による畳み込み演算結果と、第２クロスバー回路による畳み込み演算結果とをマージするマージ層を備えている。このように、それぞれの演算結果をマージすることにより、そのマージ結果は、入力された全ての特徴マップに基づくものとなる。そのため、マージ層によるマージ結果を用いて、その後の畳み込みニューラルネットワークにおける処理を続行することで、認識性能の低下を抑制することが可能となる。
【００１５】
上述した構成において、マージ層は、第１クロスバー回路による演算結果と、第２クロスバー回路による演算結果との対応する要素同士をマージするものであることが好ましい。このように、対応する要素同士をマージするようにした場合、マージ層におけるマージ処理に、畳み込み層のクロスバー回路と同様に構成されたクロスバー回路を用いることができる。
【００１６】
上述した構成において、マージ層は、複数の入力バーと、複数の入力バーと交差する複数の出力バーと、複数の入力バーと複数の出力バーとの各交点に設けられ、複数の入力バーに入力されるそれぞれの畳み込み演算結果の各要素に対して、重みを付与する複数の重み付与素子とを有するクロスバー回路を有し、マージ層のクロスバー回路において、第１クロスバー回路の畳み込み演算結果と第２クロスバー回路の畳み込み演算結果との対応する要素同士が重み付与素子による重みを付与された状態で、各出力バー上で加算されることによりマージされることが好ましい。このように、マージ層もクロスバー回路を用いて構成することにより、マージ処理の演算も効率的に行うことができる。
【００１７】
上記括弧内の参照番号は、本発明の理解を容易にすべく、後述する実施形態における具体的な構成との対応関係の一例を示すものにすぎず、なんら本発明の範囲を制限することを意図したものではない。
【００１８】
また、上述した特徴以外の、特許請求の範囲の各請求項に記載した技術的特徴に関しては、後述する実施形態の説明及び添付図面から明らかになる。
【図面の簡単な説明】
【００１９】
【図１】実施形態による畳み込みニューラルネットワークの構造の一例を概念的に示す図である。
【図２】図１の畳み込みニューラルネットワークを、クロスバー回路を用いて具現化した場合の構成を示す構成図である。
【図３】クロスバー回路について説明するための説明図である。
【図４】クロスバー回路について説明するための別の説明図である。
【図５】クロスバー回路について説明するためのさらに別の説明図である。
【図６】図１に示す構造の畳み込みニューラルネットワークにおいて、第１〜第５コンボリューション層では３×３のサイズのフィルタを用いた畳み込み演算を行い、第６、第７コンボリューション層では１×１のサイズのフィルタを用いた畳み込み演算を行い、かつ、第１、第２コンボリューション層でのフィルタ数を９６、第３〜第６コンボリューション層でのフィルタ数を１９２、及び第７コンボリューション層でのフィルタ数を１０とした場合に、各コンボリューション層にて必要となる入力バー及び出力バーの本数を示す図である。
【図７】図６に示したケースにおいて、クロスバー回路の入力バーと出力バーの本数が、５１２×５１２の制限を受ける場合と、１０２４×１０２４の制限を受ける場合とで、それぞれ必要となるクロスバー回路の分割数の例を示す図である。
【図８】クロスバー回路が、２つ以上のクロスバー回路に分割された場合の、それら２つ以上のクロスバー回路の演算結果をマージするマージ層を含む構成を示す図である。
【図９】クロスバー回路の入力バーと出力バーの本数が、５１２×５１２の制限を受ける場合と、１０２４×１０２４の制限を受ける場合とで、いずれのコンボリューション層においてマージ層が必要になるか、及びマージ層が必要となる場合に、そのマージ層を構成するクロスバー回路の入力バーと出力バーとの本数を示す図である。
【図１０】変形例として、マージ層が、階層的に設けられた第１層クロスバー回路と、第２層クロスバー回路とから形成される構成を示した図である。
【図１１】実施形態及び変形例による、入力データの各カテゴリへの分類に関する平均エラー率の改善度合を示す図である。
【発明を実施するための形態】
【００２０】
本発明に係る畳み込みニューラルネットワーク（Convolution Neural Network）の実施形態を、図面を参照しつつ説明する。以下に説明する実施形態では、入力データとしての画像を、複数のカテゴリに分類する用途に適用した例について説明する。ただし、畳み込みニューラルネットワークは、その他の用途に適用することも可能である。例えば、畳み込みニューラルネットワークは、物体や人の検出、人の顔の認識、あるいは、道路標識の認識などにも適用することが可能である。
【００２１】
図１は、本実施形態による畳み込みニューラルネットワーク２０の構造の一例を概念的に示している。畳み込みニューラルネットワーク２０は、基本的に、コンボリューション層とプーリング層とを交互に接続した構造を有する。例えば、図１に示す例では、畳み込みニューラルネットワーク２０は、第１コンボリューション層２１、第２コンボリューション層２２、第３コンボリューション層２３、第４コンボリューション層２４、第５コンボリューション層２５、第６コンボリューション層２６、及び、第７コンボリューション層２７からなる７層のコンボリューション層を有している。そして、第２コンボリューション層２２と第３コンボリューション層２３との間に、第１プーリング層２８が設けられ、第４コンボリューション層２４と第５コンボリューション層２５との間に、第２プーリング層２９が設けられている。
【００２２】
このように、畳み込みニューラルネットワーク２０においては、コンボリューション層の次に必ずプーリング層が接続されるとは限らず、複数のコンボリューション層を接続した後に、プーリング層が接続されることもある。また、コンボリューション層２１〜２７及びプーリング層２８〜２９の層数は、図１に示す例に限られない。一般的には、コンボリューション層２１〜２７及びプーリング層２８〜２９の層数を増やすほど、認識性能をより向上させることができる。
【００２３】
第１〜第７コンボリューション層２１〜２７は、それぞれ入力される入力データ（画像）に対して、所定のサイズ（例えば３×３、５×５）を有するフィルタを畳み込む演算を行う。これは、一般的な画像処理でのフィルタの畳み込み、すなわち、小サイズの画像（フィルタ）を入力画像に２次元的に畳み込んで、画像をぼかしたり、エッジを強調したりするものと基本的に同じである。具体的には、第１〜第７コンボリューション層２１〜２７では、フィルタとしての小サイズの画像の各ピクセル値（重み）と、入力データとしての入力画像におけるフィルタと同サイズの領域の各ピクセル値とをそれぞれ掛け合わせた各乗算結果を積算することで、畳み込み演算が行われる。この際、入力データが複数枚の入力画像を含む場合には、それら複数枚の入力画像の同じ領域において同じフィルタによる畳み込み演算が行われ、それらの畳み込み演算による演算結果がさらに積算される。このようにして計算された積算結果は、ＲｅＬＵやｔａｎｈなどの活性化関数を経て、各コンボリューション層２１〜２７のフィルタ位置に対応する出力となる。
【００２４】
なお、フィルタの重みは学習によって決定される。学習は、本実施形態では、畳み込みニューラルネットワーク２０を、一旦コンピュータ上に構築し、教師あり学習により行われる。学習の対象は、上述したフィルタの重みの他、後述するマージ層のフィルタの重みやバイアス入力の大きさが含まれる。学習が終了すると、その学習値が、後述するクロスバー回路に設定される。
【００２５】
フィルタは、所定のストライドで入力画像上をシフトされていき、各シフト位置において、上述した畳み込み演算が行われる。これにより、各コンボリューション層２１〜２７において、入力画像全体に渡ってそれぞれのフィルタ位置に応じた出力が作成され、それらの集合が、各コンボリューション層２１〜２７の出力となる。それらの出力を、フィルタのシフト位置に対応するように２次元的にまとめた結果が、各コンボリューション層２１〜２７による出力データとなり、その出力データが次の階層のコンボリューション層の入力データとなる。このように、各コンボリューション層２１〜２７の出力データは、それぞれ２次元的に配列される画像の形を取り、一般的には特徴マップと呼ばれる。この特徴マップは、各コンボリューション層２１〜２７において使用されるフィルタの数と同じ数だけ生成される。このため、第２コンボリューション層２２以降の各コンボリューション層２２〜２７には、複数枚の入力画像（特徴マップ）を含む入力データが入力される。
【００２６】
また、第１コンボリューション層２１においても、入力画像がカラー画像である場合には、ＲＧＢに対応する３枚の画像が入力される。本実施形態では、入力データとしてカラー画像を用いている。一方、入力画像がグレースケール画像である場合には、第１コンボリューション層２１には、１枚の画像が入力されるだけである。
【００２７】
本実施形態では、第６、第７コンボリューション層２６、２７において使用されるフィルタのサイズは１×１に設定されている。つまり、第６、第７コンボリューション層２６、２７では、各入力画像における同じ位置のピクセル値が、フィルタによる重みを掛け合わされた上で加算される、１×１の畳み込み演算が行われる。これら第６、第７コンボリューション層２６、２７として、いわゆる全結合層を用いることも可能であるが、本実施形態では、第６、第７コンボリューション層２６、２７を含む各コンボリューション層２１〜２７における畳み込み演算を、クロスバー回路を用いてアナログ領域において実行するために、上述したように１×１の畳み込み演算を行うコンボリューション層を採用している。全結合層を採用すると、入力バーの数が過大となり、１つのクロスバー回路で対応することが困難になるためである。クロスバー回路に関しては、後に詳細に説明する。
【００２８】
第１、第２プーリング層２８、２９は、入力画像のどの位置でフィルタとの適合性が高かったかを示す情報の一部を捨てることにより、入力画像内に現れる特徴の位置変化に対する不変性を高めるとともに、画像のサイズを縮小して後の計算量を削減できるようにするためのものである。
【００２９】
具体的には、第１、第２プーリング層２８、２９においては、入力画像に対して所定のサイズ（例えば２×２、３×３）のウインドウを定め、そのウインドウ内のピクセル値を平均化（平均プーリング）したり、ウインドウ内のピクセル値の最大値を採用（最大プーリング）したりすることにより、入力画像の複数のピクセル値をまとめる。なお、本実施形態では、第１、第２プーリング層における処理もクロスバー回路を用いてアナログ領域で行うべく、第１、第２プーリング層２８、２９は平均プーリングを実行するように構成される。
【００３０】
プーリングにおけるウインドウは、そのウインドウの適用位置が重ならないように、あるいは一部のみで重なるように入力画像上でシフトされる。このため、例えば、ウインドウのサイズが２×２であり、ウインドウが重ならないように２ピクセルのストライドでシフトした場合には、プーリングにより入力画像のピクセル数は１／４に縮小される。なお、このようなプーリングは、各入力画像（特徴マップ）毎に行われるので、プーリング前後の入力画像の枚数は不変である。
【００３１】
出力層３０は、例えば、ソフトマックス関数による正規化により、分類すべき複数のカテゴリ毎に、入力データ１０としての画像が属する確率を出力するように構成される。従って、出力層３０が出力する確率の中で最も高い確率に対応するカテゴリを選択することにより、入力データ１０としての画像を、複数のカテゴリに分類することができる。
【００３２】
次に、上述した構造を有する畳み込みニューラルネットワーク２０を、クロスバー回路を用いて具現化するための構成について図２を参照して説明する。図２に示すように、畳み込みニューラルネットワーク２０を具現化するための構成要素として、本実施形態では、主に、マイクロコンピュータ４０、Ｄ／Ａ変換回路４３、クロスバー回路４４、及びＡ／Ｄ変換回路４５を備えている。
【００３３】
最初に、クロスバー回路４４について、図３〜図５に基づいて説明する。図３に示すように、クロスバー回路４４は、複数の入力バー５０と、複数の出力バー５１、５２と、複数の重み付与素子５３と、複数の差動演算増幅器５４とを有する。
【００３４】
複数の入力バー５０には、マイクロコンピュータ４０によって、入力画像における、上述したフィルタと同サイズの領域の各ピクセル値に対応する入力信号（電圧信号）が入力される。複数の出力バー５１、５２は、複数の入力バー５０とそれぞれ交差するように設けられる。
【００３５】
これらの入力バー５０及び出力バー５１、５２は、例えば図４に示すように、ＣＭＯＳ素子が形成されたＣＭＯＳ基板上に形成され得る。この場合、入力バー５０には、ＣＭＯＳ素子からなる入力ニューロン５５を介して、上述したピクセル値に対応する電圧信号が入力されるように構成される。入力バー５０と出力バー５１との交点には、重み付与素子５３としてのメモリスタが設けられ、入力バー５０と出力バー５１とは、メモリスタを介して接続されている。
【００３６】
メモリスタは、印加電圧や通電電流によって、最小値と最大値との間で、異なる抵抗状態に設定することが可能な抵抗変化型メモリである。例えば、メモリスタのコンダクタンスは、図示しない電圧印加回路を用いて、負の書込電圧を印加することにより増加させることができ、正の書込電圧を印加することにより減少させることができる。そして、メモリスタは、正負の書込電圧以上の電圧が印加されない限り、設定された抵抗状態（コンダクタンス）を維持する。このようなメモリスタとして使用可能な素子としては、Pt/TiO2/Pt金属酸化物素子、相変化メモリ、磁気トンネル接合メモリ、などがある。
【００３７】
図４に示す構成を、電気回路的に示すと図５のようになる。図５に示すように、出力バー５１に接続される出力ニューロン５６を構成するＣＭＯＳ素子によって演算増幅器が形成されている。さらに、この演算増幅器の入出力間に抵抗Ｒが接続されることにより、加算器が構成されている。このため、図５に示すように、入力ニューロン５５から入力バー５０にそれぞれ入力された電圧信号Ｖ１、Ｖ２は、重み付与素子５３としてのメモリスタによるコンダクタンスＧ１、Ｇ２がそれぞれ掛け合わされた上で、加算される。この加算結果は、加算器においてＲ倍される。このようにして、出力ニューロン５６からは、以下の数式１に示すように、各入力バー５０の電圧信号Ｖ１、Ｖ２、…と、メモリスタのコンダクタンスＧ１、Ｇ２との乗算結果が積算され、さらにＲ倍された結果が出力される。
（数１）
出力ニューロンの出力電圧＝ＲΣＶｉＧｉ
【００３８】
図３に示すように、出力バー５１は、差動演算増幅器５４の非反転入力端子に接続され、出力バー５２は、差動演算増幅器５４の反転入力端子に接続されている。差動演算増幅器５４は、ＣＭＯＳ基板内のＣＭＯＳ素子を用いて構成され得る。なお、図３においては、図５に示した加算器は省略されている。さらに、図３では、上述した活性化関数としての処理を行う回路も省略されている。実際には、差動演算増幅器５４の出力側に、活性化関数処理回路が設けられる。
【００３９】
本実施形態では、差動演算増幅器５４の非反転入力端子及び反転入力端子に、それぞれ出力バー５１、５２を接続しているので、フィルタとして、正の重みだけでなく、負の重みも利用して畳み込み演算を行うことが可能になる。すなわち、ある入力信号に対して正の重みを掛け合わせる場合には、非反転入力端子に接続された出力バー５１と入力バー５０との間に設けられた重み付与素子５３のコンダクタンスを、反転入力端子に接続された出力バー５２と入力バー５０との間に設けられた重み付与素子５３のコンダクタンスよりも、設定しようとしている正の重み分だけ大きく設定すれば良い。逆に、ある入力信号に対して負の重みを掛け合わせる場合には、反転入力端子に接続された出力バー５２と入力バー５０との間に設けられた重み付与素子５３のコンダクタンスを、非反転入力端子に接続された出力バー５１と入力バー５０との間に設けられた重み付与素子５３のコンダクタンスよりも、設定しようとしている負の重み分だけ大きく設定すれば良い。
【００４０】
従って、本実施形態では、図３に示すように、２本の出力バー５１、５２を１組として、その１組の出力バー５１、５２と入力バー５０との間の重み付与素子５３に対して、それぞれのフィルタ１、２、３、…に対応する重みが設定される。
【００４１】
マイクロコンピュータ４０は、ＣＰＵ４１、ＲＡＭ４２、ＲＯＭなどを備え、例えば、ＲＯＭに記憶されたプログラムに従い、種々の処理を実施する。なお、以下においては、第１コンボリューション層２１を対象とした処理について説明するが、マイクロコンピュータ４０は、他のコンボリューション層２２〜２７に対しても同様の処理を行なう。
【００４２】
まず、マイクロコンピュータ４０は、入力データ１０としての画像において、フィルタの畳み込み演算を行う領域を定め、その領域に含まれる各ピクセルのピクセル値に応じたデジタル信号をＤ／Ａ変換回路４３に出力する。これにより、Ｄ／Ａ変換回路４３は、畳み込み演算が行われる領域の各ピクセル値に応じたアナログ信号（電圧信号）をクロスバー回路４４へ出力する。
【００４３】
さらに、マイクロコンピュータ４０は、クロスバー回路４４における演算処理が終了して、出力が出されるタイミングで、Ａ／Ｄ変換回路４５からの出力を取り込む処理を実行する。この際、Ａ／Ｄ変換回路４５は、第１コンボリューション層２１において使用されるフィルタ数と同数の、あるフィルタ位置での畳み込み演算、活性化関数による処理を経た出力をデジタル信号に変換して出力している。マイクロコンピュータ４０は、Ａ／Ｄ変換回路４５から出力されたデジタル信号を、複数のフィルタ毎に区別して、ＲＡＭ４２にそれぞれ格納する。
【００４４】
そして、マイクロコンピュータ４０は、入力画像において、フィルタの畳み込み演算を行う領域を所定のストライドだけシフトさせ、そのシフト後の領域に含まれるピクセル値に対応するデジタル信号を出力するとともに、上述したのと同様の処理を行う。これを、入力画像のすべての領域でフィルタのシフトが完了するまで繰り返す。これにより、第１コンボリューション層２１により作成された、フィルタ数と同数の特徴マップを示すデジタルデータがＲＡＭ４２に保存される。
【００４５】
上述した構成を有する畳み込みニューラルネットワーク２０において、大規模なネットワークを構築しようとした場合、１つのコンボリューション層において用いられるフィルタの数も多数に上ることがある。この場合、そのコンボリューション層で作成される特徴マップの数も多数に上ることになる。そのような場合、その次の階層（上位階層）のコンボリューション層のクロスバー回路４４では、例えば、千を超える入力バー５０が必要となることもあり得る。
【００４６】
例えば、図１に示す構造の畳み込みニューラルネットワーク２０において、第１〜第５コンボリューション層２１〜２５では、３×３のサイズのフィルタを用いた畳み込み演算を行い、かつ、第１、第２コンボリューション層２１、２２でのフィルタ数を９６、第３〜第６コンボリューション層２３〜２６でのフィルタ数を１９２、及び第７コンボリューション層２７でのフィルタ数を１０とした場合に、各コンボリューション層２１〜２７にて必要となる入力バー５０及び出力バー５１、５２の数を図６に示す。
【００４７】
第１コンボリューション層２１では、ＲＧＢの３枚の画像に対して、３×３のフィルタによる畳み込み演算を行うために必要な入力バー５０の数は、画像枚数（３枚）×フィルタサイズ（３×３）＋バイアス入力（１）＝２８となる。また、出力バー５１、５２の数は、１組の出力バー（２本）×フィルタ数（９６）＝１９２となる。
【００４８】
同様に、第２〜第７コンボリューション層２２〜２７にて必要となるクロスバーの数を計算すると、図６に示すように、第２コンボリューション層２２では、入力バー５０の数は８６５、出力バー５１、５２の数は１９２となる。第３コンボリューション層２３では、入力バー５０の数は８６５、出力バー５１、５２の数は３８４となる。第４、第５コンボリューション層２４、２５では、入力バー５０の数は１７２９、出力バー５１、５２の数は３８４となる。第６コンボリューション層２６では、入力バー５０の数は１９３、出力バー５１、５２の数は３８４となる。そして、第７コンボリューション層２７では、入力バー５０の数は１９３、出力バー５１、５２の数は２０となる。
【００４９】
このように、あるコンボリューション層において、多数のフィルタを用いた場合、生成される特徴マップの数も増えるため、次の（上位の）階層のコンボリューション層のクロスバー回路４４において、必要な入力バーの本流が飛躍的に増加することになる。
【００５０】
しかしながら、クロスバー回路４４の物理的なサイズ、すなわち入力バーや出力バーの本数は、各配線でのＩＲドロップや、各配線の最大許容電流などの要因により、制限を受ける。例えば、入力バー５０と出力バー５１、５２の数は、実用上、５１２×５１２に制限されたり、１０２４×１０２４に制限されたりする。
【００５１】
このため、畳み込みニューラルネットワーク２０が大規模となった場合には、上位階層のコンボリューション層において、１つのクロスバー回路４４だけでは、すべての特徴マップからの入力を受けることができないことが起こり得る。この場合、クロスバー回路４４を２つ以上のクロスバー回路に分割し、多数の特徴マップからの入力を、２つ以上のクロスバー回路に振り分けることが考えられる。この場合、クロスバー回路４４は、少なくとも、複数の特徴マップの内の一部の特徴マップに対して複数のフィルタの畳み込み演算等を行う第１クロスバー回路と、第１クロスバー回路とは別個に設けられ、第１クロスバー回路にて畳み込み演算等が行われる一部の特徴マップとは異なる別の一部の特徴マップに対して複数のフィルタの畳み込み演算を行う第２クロスバー回路とを有することになる。
【００５２】
例えば、図６に示したケースにおいて、クロスバー回路４４の入力バー５０と出力バー５１、５２の本数が、５１２×５１２の制限を受ける場合と、１０２４×１０２４の制限を受ける場合とで、それぞれ必要となるクロスバー回路４４の分割数を図７に示す。
【００５３】
入力バー５０と出力バー５１、５２の本数が５１２×５１２の制限を受ける場合、図７に「分割数の例１」として示すように、第２、第３コンボリューション層２２、２３において、入力バー５０の数が８６５であるため、２つのクロスバー回路が必要となる。従って、第２、第３コンボリューション層２２、２３のクロスバー回路の分割数は２となる。さらに、第４、第５コンボリューション層２４、２５では、入力バー５０の数が１７２９であるため、４つのクロスバー回路が必要となる。従って、第４、第５コンボリューション層２４、２５のクロスバー回路の分割数は４となる。
【００５４】
クロスバー回路の入力バー５０と出力バー５１、５２の最大本数が１０２４×１０２４である場合には、クロスバー回路の分割は多少抑えられる。それでも、図７に「分割数の例２」として示すように、第４、第５コンボリューション層２４、２５において、２つのクロスバー回路が必要となるので、クロスバー回路の分割数は２となる。
【００５５】
クロスバー回路を分割すると、分割された２つ以上のクロスバー回路では、それぞれ異なる一部の特徴マップを入力とした畳み込み演算等を行うことになる。換言すれば、分割された各クロスバー回路の出力を個別に見ると、入力された全ての特徴マップに基づくものではない。このため、それらの出力をそのまま用いて畳み込みニューラルネットワーク２０における処理を続行すると、認識性能の低下を招く虞がある。
【００５６】
そのため、本実施形態では、図８に示すように、クロスバー回路４４が、２つ以上の第１、第２クロスバー回路６１，６２に分割された場合、それら２つ以上の第１、第２クロスバー回路６１、６２の演算結果の対応する要素としてのピクセル値同士をマージするマージ層６３を設けた。
【００５７】
マージ層６３は、各コンボリューション層２１〜２７と同様のクロスバー回路６４を有し、当該クロスバー回路６４において、上述した第６、第７コンボリューション層２６、２７と同様に、１×１の畳み込み演算を行うように構成される。すなわち、第１クロスバー回路６１の演算結果と、第２クロスバー回路６２の演算結果とは、それぞれ画像の形を取る。マージ層６３のクロスバー回路６４では、分割された第１、第２クロスバー回路６１、６２の演算結果としての画像における同じ位置のピクセル値に対し、それぞれ１×１のサイズのフィルタ毎の重みを掛け合わせた上で加算する演算を行う。マージ層６３におけるフィルタの数は、対応するコンボリューション層において使用されるフィルタの数と同じに設定される。なお、マージ層６３におけるフィルタの重みも、上述したように、クロスバー回路４４、６１、６２におけるフィルタの重みの学習と同時に学習される。
【００５８】
また、マージ層６３によって、第１、第２クロスバー回路６１、６２にて作成された特徴マップ（画像）をマージするために、第１クロスバー回路６１の畳み込み演算結果の各要素（ピクセル）の数、第２クロスバー回路６２の畳み込み演算結果の各要素（ピクセル）の数、及びマージ層６３によるマージ結果の各要素（ピクセル）の数は、同一である。
【００５９】
図８を参照して、クロスバー回路４４の分割やマージ層６３に関して、より具体的に説明する。図８では、クロスバー回路４４の最大本数が５１２×５１２に制限される分割例１において、第２コンボリューション層２２のクロスバー回路４４が、２つの第１、第２クロスバー回路６１，６２に分割された場合に、第１、第２クロスバー回路６１、６２に入力される特徴マップの数、及び第１、第２クロスバー回路６１、６２から出力される特徴マップの数、さらにマージ層６３のクロスバー回路６４から出力される特徴マップの数の一例を示している。
【００６０】
上述したように、第１コンボリューション層２１において使用されるフィルタ数は９６であり、第２コンボリューション層２２には、そのフィルタ数と同数の９６枚の特徴マップが、入力データとして与えられる。第２コンボリューション層２２において、この入力データを１つのクロスバー回路４４で処理しようとすると、図６に示すように、入力バーの数として８６５本が必要となる。しかし、クロスバー回路４４の入力バーの本数は最大で５１２本に制限されている。このため、第２コンボリューション層２２では、クロスバー回路４４を第１、第２クロスバー回路６１、６２の２つに分割する。
【００６１】
第１クロスバー回路６１には、入力データに含まれる９６枚の特徴マップの内、４８枚の特徴マップが入力される。この場合、必要となる入力バーの本数は、特徴マップの枚数４８×フィルタサイズ（３×３）＋バイアス入力（１）＝４３３となり、最大本数内に収めることができる。また、第２コンボリューション層２２において使用されるフィルタ数は９６であるが、第１クロスバー回路６１では、その内の半分の４８のフィルタによる畳み込み演算を行うように構成される。従って、第１クロスバー回路の出力バーの本数は、１組の出力バー（２本）×フィルタ数（４８）＝９６となる。そして、フィルタ数が４８であるため、第１クロスバー回路６１にて作成される第１特徴マップの枚数は４８枚となる。
【００６２】
第２クロスバー回路６２は、第１クロスバー回路６１にて畳み込み演算の対象とされる一部の特徴マップとは異なる別の一部の特徴マップに対して複数のフィルタの畳み込み演算を行う。従って、第２クロスバー回路６２にも、入力データに含まれる９６枚の特徴マップの内、第１クロスバー回路６１に入力される以外の残りの４８枚の特徴マップが入力される。さらに、第２クロスバー回路６２では、第１クロスバー回路６１にて畳み込み演算が行われるフィルタ以外の、残りの４８のフィルタの畳み込み演算が行われる。従って、第２クロスバー回路６２においては、第１クロスバー回路６１と同様に、入力バー５０の本数が４３３となり、出力バー５１、５２の本数は９６となる。また、第２クロスバー回路６２にて作成される第２特徴マップの数は４８枚となる。
【００６３】
そして、第１クロスバー回路６１にて作成された第１特徴マップと、第２クロスバー回路６２にて作成された第２特徴マップとが、マージ層６３の入力データとなる。このため、図９に第１マージ層として示すように、マージ層６３のクロスバー回路６４の入力バー５０の本数は、（第１特徴マップの枚数（４８）＋第２特徴マップの枚数（４８））×フィルタサイズ（１×１）＋バイアス入力＝９７となる。また、クロスバー回路６４の出力バー５１、５２の本数は、１組の出力バー（２本）×フィルタ数（９６）＝１９２となる。このように、マージ層６３では、１×１の畳み込み演算を行うだけであるため、入力バー５０の本数及び出力バー５１、５２の本数とも、最大本数内に収めることができる。
【００６４】
以上は、クロスバー回路４４の最大本数が５１２×５１２に制限される場合に、第２コンボリューション層２２に設けられる第１マージ層に関する説明である。同様にして、第３コンボリューション層２３に設けられる第２マージ層、第４コンボリューション層２４に設けられる第３マージ層、及び第５コンボリューション層２５に設けられる第４マージ層のクロスバー回路の入力バー及び出力バーの本数を計算すると、図９に示すようになる。すなわち、第２〜第４マージ層は、いずれも入力バーの本数は１９３、出力バーの本数は３８４となる。
【００６５】
また、クロスバー回路４４の最大本数が１０２４×１０２４に制限される場合には、図９に示すように、第１マージ層及び第２マージ層は不要であり、第３マージ層及び第４マージ層だけが設けられる。その場合の第３，第４マージ層のクロスバー回路は、上述した例と同じく、入力バーの本数は１９３、出力バーの本数は３８４となる。
【００６６】
このように、コンボリューション層のクロスバー回路が２つ以上に分割される場合に、分割されたクロスバー回路のそれぞれの演算結果の対応する要素同士をマージするマージ層を設けることにより、マージ層から出力される各々の特徴マップは、入力された全ての特徴マップに基づくものとなる。そのため、マージ層から出力された特徴マップを用いて、その後の畳み込みニューラルネットワークにおける処理を続行することで、認識性能の低下を抑制することが可能となる。
【００６７】
以上、本発明の好ましい実施形態について説明したが、本発明は上述した実施形態になんら制限されることなく、本発明の主旨を逸脱しない範囲において、種々変形して実施することが可能である。
【００６８】
例えば、図８に示した、第１、第２クロスバー回路６１、６２へ入力される特徴マップの数、第１、第２クロスバー回路６１、６２から出力される特徴マップの数は、一例に過ぎない。第１、第２クロスバー回路６１、６２には、入力バーが最大本数内に収まる範囲で、異なる数の特徴マップを入力しても良い。また、第１クロスバー回路６１と、第２クロスバー回路６２とで、異なる数の特徴マップが作成されるようにしても良い。
【００６９】
また、図８に示す例とは異なり、第１クロスバー回路６１において、入力データの内の一部（例えば４８枚）の特徴マップに対して、すべてのフィルタによる畳み込み演算を行って全枚数（例えば９６枚）の第１特徴マップを作成するとともに、第２クロスバー回路６２においても、入力データの内の別の一部（例えば４８枚）の特徴マップに対して、すべてのフィルタによる畳み込み演算を行って全枚数（例えば９６枚）の第２特徴マップを作成しても良い。ただし、この場合、マージ層６３のクロスバー回路６４の入力バーの本数は、第１特徴マップの枚数＋第２特徴マップの枚数＋バイアス入力となるため、上述した実施形態に比べて増加することになる。
【００７０】
さらに、マージ層６３の内部を階層的に構成しても良い。つまり、図１０に示すように、マージ層６３を、階層的に設けられた第１層クロスバー回路６５、６６と、第２層クロスバー回路６７とから構成しても良い。なお、図１０には、例えば、第４コンボリューション層２４において、階層的なマージ層６３を設けた場合の、各クロスバー回路６５〜６７に入力される特徴マップの数、各クロスバー回路６５〜６７から出力される特徴マップの数の一例を示している。以下、図１０を参照して、マージ層６３の階層的な構成について説明する。
【００７１】
上述したように、第３コンボリューション層２３にて作成される特徴マップの枚数は１９２枚であり、第４コンボリューション層２４の第１クロスバー回路６１には、その中の９６枚の特徴マップが入力される。そして、第１クロスバー回路６１は、全部で１９２個のフィルタの内の９６個のフィルタによる畳み込み演算を行って、９６枚の特徴マップを作成する。同様に、第４コンボリューション層２４の第２クロスバー回路６２にも、第１クロスバー回路６１に入力された以外の残りの９６枚の特徴マップが入力される。そして、第２クロスバー回路６２は、第１クロスバー回路６１にて畳み込み演算が行われるフィルタ以外の、残りの４８のフィルタの畳み込み演算を行い、９６枚の特徴マップを作成する。
【００７２】
マージ層６３には、２個の第１層クロスバー回路６５、６６が設けられる。ただし、第１層クロスバー回路６５、６６は３個以上であっても良い。２つの第１層クロスバー回路６５、６６は、ともに、第１クロスバー回路６１にて作成された特徴マップと、第２クロスバー回路６２にて作成された特徴マップとを入力として、１×１のサイズのフィルタによる畳み込み演算を行う。第１層クロスバー回路６５、６６にて使用されるフィルタ数も同じ１９２であり、それぞれ１９２枚の特徴マップを作成する。ただし、２個の第１層クロスバー回路６５、６６にて使用されるフィルタは、それぞれ個別に用意され、学習もそれぞれ行われる。このため、２個の第１層クロスバー回路６５、６６では、それぞれ重みの異なるフィルタが用いられることになる。
【００７３】
第２層クロスバー回路６７は、２個の第１層クロスバー回路６５、６６にて作成された特徴マップを入力として、１×１のサイズのフィルタによる畳み込み演算を行い、第４コンボリューション層２４の出力として、１９２枚の特徴マップを作成する。
【００７４】
図１１に基づき、マージ層６３を階層的に構成した場合の効果を説明する。コンピュータ上に、各コンボリューション層２１〜２７のクロスバー回路４４を分割せずに畳み込みニューラルネットワーク２０を構築した場合、入力データの各カテゴリへの分類に関する平均エラー率は９．１７±０．１３％であった。
【００７５】
それに対し、各コンボリューション層２１〜２７のクロスバー回路４４を分割し、上述したマージ層６３を設けなかった場合、平均エラー率は、分割例１において１３．１±０．４３％、分割例２において１１．２２±０．１４％まで悪化した。しかし、上述した実施形態にて説明したような、１階層のクロスバー回路６４からなるマージ層６３を設けた場合、平均エラー率は、分割例１において１１．１７±０．２４％、分割例２において１０．０２±０．２６％まで改善した。さらに、図１０に示すように、２階層のクロスバー回路６５、６６からなるマージ層６３を設けた場合には、平均エラー率は、分割例１において１１．１５±０．０４％、分割例２において９．６４±０．２５％となり、より一層の改善を図ることができることを確認した。
【００７６】
また、上述した実施形態では、すべてのコンボリューション層２１〜２７における畳み込み演算をクロスバー回路４４を用いて行う例について説明したが、クロスバー回路４４の分割が必要となる少なくとも１つのコンボリューション層において、分割したクロスバー回路６１、６２及びマージ層を用いて畳み込み演算を行い、他のコンボリューション層の畳み込み演算はマイクロコンピュータ４０にて行うものであっても良い。
【００７７】
さらに、上述した実施形態のマージ層６３におけるマージ処理をクロスバー回路６４ではなく、マイクロコンピュータ４０にて行う場合には、マージ層６３は、全結合層として、全ての特徴マップの全要素（全ピクセル）を重み付けして加算するものであっても良い。
【符号の説明】
【００７８】
１０：入力データ、２０：畳み込みニューラルネットワーク、２１〜２７：第１〜第７コンボリューション層、２８：第１プーリング層、２９：第２プーリング層、３０：出力層、４０：マイクロコンピュータ、４３：Ｄ／Ａ変換回路、４４：クロスバー回路、４５：Ａ／Ｄ変換回路、５０：入力バー、５１、５２：出力バー、５３：重み付与素子、５４：差動演算増幅器、５５：入力ニューロン、５６：出力ニューロン、６１：第１クロスバー回路、６２：第２クロスバー回路、６３：マージ層、６４：クロスバー回路
【図１】
2018200627.tif 000003
【図２】
2018200627.tif 000004
【図３】
2018200627.tif 000005
【図４】
2018200627.tif 000006
【図５】
2018200627.tif 000007
【図６】
2018200627.tif 000008
【図７】
2018200627.tif 000009
【図８】
2018200627.tif 000010
【図９】
2018200627.tif 000011
【図１０】
2018200627.tif 000012
【図１１】
2018200627.tif 000013