(57)【要約】【課題】認識精度を落とすことなく畳込み計算の時間短縮とメモリの削減が可能なニューラルネットワーク回路装置、ニューラルネットワーク処理方法およびニューラルネットワークの実行プログラムを提供する。【解決手段】ニューラルネットワーク回路装置５０は、中間層が、雑音畳込み演算を実行する雑音畳込み演算回路１００を備え、雑音畳込み演算回路１００は、雑音ｎｃを生成する雑音生成回路１１０と、１×１畳込みを実行するための入力値Ｘを受け取り、入力値Ｘに雑音生成回路１１０で生成された雑音ｎｃを加算する加算回路１２０と、重みＷを受け取り、雑音を乗せた加算回路１２０の雑音畳込み演算値と重みＷを乗算する乗算回路１３０と、を備える。【選択図】図２
2020119462.tif 000002
【特許請求の範囲】
【請求項１】
入力層、１以上の中間層、および、出力層を少なくとも含むニューラルネットワーク回路装置であって、
前記中間層は、雑音畳込み演算を実行する雑音畳込み演算回路を備え、
前記雑音畳込み演算回路は、
畳込みを行う入力値Ｘと、雑音を受け取り、前記入力値Ｘに前記雑音を乗せる演算回路と、
重みＷを受け取り、前記演算回路の雑音畳込み演算値と前記重みＷを乗算する乗算回路と、を備える
ことを特徴とするニューラルネットワーク回路装置。
【請求項２】
入力層、１以上の中間層、および、出力層を少なくとも含むニューラルネットワーク回路装置であって、
前記中間層は、ｎ（ｎは任意の自然数）層を有し、
ｋ（ｋは、ｎ−ｋを満たす自然数）層において、畳込み演算を実行する畳込み演算回路と、
（ｎ−ｋ）層において、雑音畳込み演算を実行する雑音畳込み演算回路と、を備え、
前記雑音畳込み演算回路は、
畳込みを行う入力値Ｘと、雑音を受け取り、前記入力値Ｘに前記雑音を乗せる演算回路と、
重みＷを受け取り、前記演算回路の雑音畳込み演算値と前記重みＷを乗算する乗算回路と、を備える
ことを特徴とするニューラルネットワーク回路装置。
【請求項３】
前記雑音は、
期待値：Ｅ（ｎｃ）＝Ｅ（ΣＮｃεｉＷｉ’）＝０、かつ、
分散：Ｅ（ｎｃ２）＝Ｅ（ΣＮｃεｉＷｉ’）２＝２σ２δ’
となる雑音ｎｃを用いる場合、
前記畳込み演算回路による畳込み演算の出力ｙ’と、
前記雑音畳込み演算回路による雑音畳込み演算による出力ｙ’とは、下記式で示され、統計的に等価である
【数４】
2020119462.tif 000010
ことを特徴とする記載の請求項２に記載のニューラルネットワーク回路装置。
【請求項４】
前記雑音畳込み演算回路は、
前記畳込み演算による計算結果の平均と分散と、前記雑音畳込み演算による計算結果の平均と分散とをそれぞれ一致させる前記雑音を用いる
ことを特徴とする記載の請求項２または請求項３に記載のニューラルネットワーク回路装置。
【請求項５】
前記雑音畳込み演算回路で用いる前記重みは、前記雑音をもとに、下記式に従って導出される
【数１】
2020119462.tif 000011
【数２】
2020119462.tif 000012
ことを特徴とする記載の請求項１または請求項２に記載のニューラルネットワーク回路装置。
【請求項６】
前記演算回路は、
前記入力値Ｘに前記雑音を加算する加算回路である
ことを特徴とする記載の請求項１または請求項２に記載のニューラルネットワーク回路装置。
【請求項７】
前記雑音畳込み演算回路は、
前記雑音を生成する雑音生成回路を備える
ことを特徴とする記載の請求項１ないし請求項５のいずれか一項に記載のニューラルネットワーク回路装置。
【請求項８】
前記雑音は、ＸＯＲ−Ｓｈｉｆｔ、ＬＦＳＲ（linear feedback shift register）、線形合同法を含む乱数生成器で生成される疑似乱数である
ことを特徴とする記載の請求項７に記載のニューラルネットワーク回路装置。
【請求項９】
前記雑音畳込み演算回路は、
１×１カーネルを用いた１×１畳込み演算を実行する
ことを特徴とする記載の請求項１または請求項２に記載のニューラルネットワーク回路装置。
【請求項１０】
前記雑音畳込み演算回路は、
畳込み演算された各演算値とバイアスＷ０との総和を取る総和回路と、総和を取った信号Ｙを活性化関数ｆ(u)で変換する活性化関数回路と、を備える
ことを特徴とする記載の請求項１または請求項２に記載のニューラルネットワーク回路装置。
【請求項１１】
入力層、１以上の中間層、および、出力層を少なくとも含むニューラルネットワーク処理方法であって、
前記中間層は、雑音畳込み演算を実行する雑音畳込み演算ステップを有し、
前記雑音畳込み演算ステップでは、
畳込みを行う入力値Ｘと、雑音を受け取り、前記入力値Ｘに前記雑音を乗せる演算ステップと、
重みＷを受け取り、前記演算ステップの雑音畳込み演算値と前記重みＷを乗算する乗算ステップと、を有する
ことを特徴とするニューラルネットワーク処理方法。
【請求項１２】
入力層、１以上の中間層、および、出力層を少なくとも含むニューラルネットワーク処理方法であって、
前記中間層は、ｎ（ｎは任意の自然数）層を有し、
ｋ（ｋは、ｎ−ｋを満たす自然数）層において、畳込み演算を実行する畳込み演算ステップと、
（ｎ−ｋ）層において、雑音畳込み演算を実行する雑音畳込み演算ステップと、を有し、
前記雑音畳込み演算ステップでは、
畳込みを行う入力値Ｘと、雑音を受け取り、前記入力値Ｘに前記雑音を乗せる演算ステップと、
重みＷを受け取り、前記演算ステップの雑音畳込み演算値と前記重みＷを乗算する乗算ステップと、を有する
ことを特徴とするニューラルネットワーク処理方法。
【請求項１３】
入力層、１以上の中間層、および、出力層を少なくとも含むニューラルネットワーク回路装置としてのコンピュータを、
前記中間層は、雑音畳込み演算を実行する雑音畳込み演算回路手段、
前記雑音畳込み演算回路手段は、
畳込みを行う入力値Ｘと、雑音を受け取り、前記入力値Ｘに前記雑音を乗せる演算回路手段、
重みＷを受け取り、前記演算回路手段の雑音畳込み演算値と前記重みＷを乗算する乗算回路手段、
として機能させるニューラルネットワークの実行プログラム。
【請求項１４】
入力層、１以上の中間層、および、出力層を少なくとも含むニューラルネットワーク回路装置としてのコンピュータを、
前記中間層は、ｎ（ｎは任意の自然数）層を有し、
ｋ（ｋは、ｎ−ｋを満たす自然数）層において、畳込み演算を実行する畳込み演算回路手段、
（ｎ−ｋ）層において、雑音畳込み演算を実行する雑音畳込み演算回路手段、
前記雑音畳込み演算回路手段は、
畳込みを行う入力値Ｘと、雑音を受け取り、前記入力値Ｘに前記雑音を乗せる演算回路手段、
重みＷを受け取り、前記演算回路手段の雑音畳込み演算値と前記重みＷを乗算する乗算回路手段、
として機能させるニューラルネットワークの実行プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ニューラルネットワーク回路装置、ニューラルネットワーク処理方法およびニューラルネットワークの実行プログラムに関する。
【背景技術】
【０００２】
近年、ロボティクス、ＡＤＡＳ（advanced driver assistance system）、ドローン等の画像認識や自動翻訳などで注目を集める新方式として畳込みニューラルネットワーク（ＣＮＮ：Convolutional Neural Network）（層間が全結合でないＮＮ）や再帰型ニューラルネットワーク（双方向伝搬）が登場している。
ニューラルネットワーク（Neural Network）は、「入力層」、「隠れ層」、「出力層」を有し、各層は複数の「ノード」が「エッジ」で結ばれる。「隠れ層」は、複数の層を持つことができ、特に深い隠れ層を持つものをディープニューラルネットワーク（ＤＮＮ：Deep Neural Network）と呼ぶ。畳込みニューラルネットワーク（ＣＮＮ：Convolutional Neural Network）は、「隠れ層」が全結合層だけでなく畳込み層（Convolution Layer）とプーリング層（Pooling Layer）とを交互に２０層から３０層程度繰り返す多層の積層構造を有する。ＣＮＮは、畳込み、プーリングおよび全結合などの演算と、特徴マップとから構成される。
【０００３】
通常、ニューラルネットワークは、コンピュータ上で仮想的に構築され、ソフトウェアによって、各層の演算処理が実行される。しかし、ＣＮＮは、このように複雑な処理を実行する層が多数（２０層〜３０層程度）重畳しているので、その演算量は膨大なものとなる。そのため、一般的な汎用のＣＰＵ等を用いる通常のコンピュータではなく、ＧＰＵ（Graphics Processing Unit）を用いた演算装置を用いてニューラルネットワークの演算処理を実行させる場合も多い。
【０００４】
特許文献１には、複数の処理ノードの各々に対し演算処理装置が有するメモリの部分領域を割り当てるメモリ制御手段と、複数の処理ノードから、演算処理を実行すべき処理ノードを順次に指定する指定手段と、複数の処理ノードによる演算処理を、指定された順番で実行させる実行制御手段とを備える演算処理装置が記載されている。特許文献１に記載の演算処理装置は、メモリ制御手段が、演算結果のデータ量に対応したサイズのメモリ領域を単位としてデータの書き込み先を前記部分領域内で循環させながら、実行制御手段によって得られた各処理ノードの演算結果を割り当てられた部分領域に書き込むことにより、部分領域をリングバッファとして利用する。
【０００５】
特許文献２には、受け付けられた画像に対して、畳込処理を行う複数の畳込処理手段と、前記畳込処理手段による処理結果に対して、整流処理を行う複数の整流処理手段と、前記整流処理手段による処理結果に対して、正規化処理を行う複数の正規化処理手段と、前記正規化処理手段による処理結果に対して、サブサンプリング処理を行うことによって、前記画像の特徴量を抽出する複数の特徴抽出手段と、前記特徴抽出手段によって抽出された特徴量に基づいて、前記画像を識別する識別手段を備える画像処理装置が記載されている。特許文献２に記載の画像処理装置は、前記正規化処理手段が、２つの前記整流処理手段による処理結果間の差を、該処理結果に基づいた値を除数として除算することによって正規化する。
【０００６】
既存のＣＮＮは、短精度（多ビット）による積和演算回路で構成されており、多数の乗算回路が必要である。このため、面積・消費電力が多大になる欠点があった。そこで、２値化した精度、すなわち＋１と−１（または０と１）のみ用いてＣＮＮを構成する回路が提案されている（例えば、非特許文献１〜４参照）。
【０００７】
非特許文献１〜４の技術では、精度を２値に落とすことでＣＮＮの認識精度も落としてしまう。これを避けて２値化ＣＮＮの精度を維持するためには、バッチ正規化回路が必要である。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特許第５１８４８２４号公報
【特許文献２】特許第５７７２４４２号公報
【非特許文献】
【０００９】
【非特許文献１】M. Courbariaux, I. Hubara, D. Soudry, R.E.Yaniv, Y. Bengio, “Binarized neural networks: Training deep neural networks with weights and activations constrained to +1 or -1," Computer Research Repository (CoRR)、「２値化ＮＮのアルゴリズム」、[online]、２０１６年３月、［平成３０年１０月５日検索］、<URL:http:// arxiv.org/pdf/1602.02830v3.pdf >
【非特許文献２】Mohammad Rastegari, Vicente Ordonez, Joseph Redmon, Ali Farhadi, “XNOR-Net: ImageNet Classification Using Binary Convolutional Neural Networks,”Computer Vision and Pattern recognition、「２値化ＮＮのアルゴリズム」、[online]、２０１６年３月、［平成３０年１０月５日検索］、<URL: https://arxiv.org/pdf/1603.05279v4 >
【非特許文献３】Hiroki Nakahara, Haruyoshi Yonekawa, Tsutomu Sasao, Hisashi Iwamoto and Masato Motomura, ” A Memory-Based Realization of a Binarized Deep Convolutional Neural Network,” Proc. of the 2016 International Conference on Field-Programmable Technology (FPT), Xi'an, China, Dec 2016 (To Appear).
【非特許文献４】Eriko Nurvitadhi, David Sheffield, Jaewoong Sim, Asit Mishra, Ganesh Venkatesh, Debbie Marr,”Accelerating Binarized Neural Networks: Comparison of FPGA, CPU, GPU, and ASIC,” Proc. of the 2016 International Conference on Field-Programmable Technology (FPT), Xi'an, China, Dec 2016 (To Appear).
【発明の概要】
【発明が解決しようとする課題】
【００１０】
ＣＮＮでは、物体と位置を認識するために、観測画像と重みマトリクスの畳込み演算を多層に渡り膨大な回数実行する必要がある。このため、コンピュータパワーと計算時間、重みマトリクス（パラメータ）を格納するメモリ容量が膨大となるという課題があった。また、大量の積和演算とそのパラメータを保持するため、組込み機器で実現することが難しい。
【００１１】
本発明は、このような事情に鑑みてなされたものであり、認識精度を落とすことなく畳込み計算の時間短縮とメモリの削減が可能なニューラルネットワーク回路装置、ニューラルネットワーク処理方法およびニューラルネットワークの実行プログラムを提供することを課題とする。
【課題を解決するための手段】
【００１２】
前記した課題を解決するため、本発明に係るニューラルネットワーク回路装置は、入力層、１以上の中間層、および、出力層を少なくとも含むニューラルネットワーク回路装置であって、前記中間層は、雑音畳込み演算を実行する雑音畳込み演算回路を備え、前記雑音畳込み演算回路は、畳込みを行う入力値Ｘと、雑音を受け取り、前記入力値Ｘに前記雑音を乗せる演算回路と、重みＷを受け取り、前記演算回路の雑音畳込み演算値と前記重みＷを乗算する乗算回路と、を備えることを特徴とする。
【００１３】
また、本発明に係るニューラルネットワーク回路装置は、入力層、１以上の中間層、および、出力層を少なくとも含むニューラルネットワーク回路装置であって、前記中間層は、ｎ層を有し、ｋ層において、畳込み演算を実行する畳込み演算回路と、（ｎ−ｋ）層において、雑音畳込み演算を実行する雑音畳込み演算回路と、を備え、前記雑音畳込み演算回路は、畳込みを行う入力値Ｘと、雑音を受け取り、前記入力値Ｘに前記雑音を乗せる演算回路と、重みＷを受け取り、前記演算回路の雑音畳込み演算値と前記重みＷを乗算する乗算回路と、を備えることを特徴とする。
その他の手段については、発明を実施するための形態のなかで説明する。
【発明の効果】
【００１４】
本発明によれば、認識精度を落とすことなく畳込み計算の時間短縮とメモリの削減が可能なニューラルネットワーク回路装置、ニューラルネットワーク処理方法およびニューラルネットワークの実行プログラムを提供することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施形態に係るニューラルネットワーク回路が備える雑音畳込み演算回路の構成を示す図である。
【図２】本発明の実施形態に係るニューラルネットワーク回路が備える雑音畳込み演算回路のブロック図である。
【図３】本発明の基本原理を説明するＣＮＮの概略構成図であり、（ａ）はそのＣＮＮのモジュール構成図、（ｂ）はその学習後のパラメータ（重み）を統計的に示すヒストグラム、（ｃ）はその学習後のパラメータ（重み）を統計的に示すヒストグラム、（ｄ）はその学習後のパラメータ（重み）を統計的に示すヒストグラムである。
【図４】本発明の基本原理を説明する雑音のヒストグラムを示す図であり、（ａ）は雑音を統計的に示す図、（ｂ）は（ａ）の雑音を統計的に解析したヒストグラムである。
【図５】本発明の実施形態に係るニューラルネットワーク回路が備える雑音畳込み演算回路の構成を示す図である。
【図６】本発明の実施形態に係るニューラルネットワーク回路が備える雑音畳込み演算回路の構成を示す図である。
【図７】本発明の実施形態に係るニューラルネットワーク回路が備える雑音畳込み演算回路の構成を示す図である。
【図８】本発明の実施形態に係るニューラルネットワーク回路が備える雑音畳込み演算回路の構成を示す図である。
【図９】本発明の実施形態に係るニューラルネットワーク回路が備える雑音畳込み演算回路の構成を示す図である。
【図１０】本発明の実施形態に係るニューラルネットワーク回路が備える雑音畳込み演算回路の構成を示す図である。
【図１１】本発明の実施形態に係るニューラルネットワーク回路が備える雑音畳込み演算回路の構成を示す図である。
【図１２】本発明の実施形態に係るニューラルネットワーク回路が備える雑音畳込み演算回路の構成を示す図である。
【図１３】本発明の実施形態に係るニューラルネットワーク回路が備える雑音畳込み演算回路の構成を示す図である。
【図１４】本発明の実施形態に係るニューラルネットワーク回路が備える雑音畳込み演算回路と比較例の畳込み演算回路とを比較して示す図であり、（ａ）は比較例の畳込み演算回路の概略構成図、（ｂ）は雑音畳込み演算回路の概略構成図である。
【図１５】本発明の実施形態に係るニューラルネットワーク回路が備える雑音畳込み演算回路と比較例の畳込み演算回路との作用効果を比較して示す図であり、（ａ）は比較例の畳込み演算回路の雑音を加えなかった場合の入力画像と畳込みを説明する図、（ｂ）は雑音畳込み演算回路の雑音を加える場合の入力画像と１×１畳込みを説明する図である。
【図１６】本発明の実施形態に係るニューラルネットワーク回路が備える雑音畳込み演算回路の特徴を説明する図であり、（ａ）は入力画像の各画素の値とその度数分布を示すヒストグラム、（ｂ）はＣＮＮの１層目の畳込み層の出力の各画素の値とその度数分布を示すヒストグラムである。
【図１７】本発明の実施形態に係るニューラルネットワーク回路の入力画像に適用した場合の雑音畳込みＣＮＮと既存畳込みＣＮＮのVGG16モデルを用いて画像認識タスクCIFAR-10およびCIFAR-100を学習させた結果の認識精度を説明する図である。
【図１８】本発明の実施形態に係るニューラルネットワーク回路が備える雑音畳込みＣＮＮの構成を示すブロック図である。
【図１９】本発明の実施形態に係るニューラルネットワーク回路が備える雑音畳込みＣＮＮの畳込みＣＮＮ層数ｋと、認識精度(%)、ratioおよび全層の重み(MB)との実験結果を表にして示す図である。
【図２０】本発明の実施形態に係るニューラルネットワーク回路が備える雑音畳込みＣＮＮの学習時間と推論時間を表にして示す図である。
【図２１】本発明の実施形態に係るニューラルネットワーク回路が備える雑音畳込み演算回路をFPGA上に実装し、畳込み演算を既存畳込みＣＮＮと比較した結果を表にして示す図である。
【図２２】本発明の実施形態に係るニューラルネットワーク回路が備える雑音畳込みＣＮＮの実装例を説明する図である。
【図２３】ＣＮＮのモジュール構成図である。
【図２４】ディープニューラルネットワーク（ＤＮＮ）の構造の一例を説明する図である。
【図２５】比較例のニューラルネットワーク回路の構成の一例を示す図である。
【図２６】比較例の畳込み演算回路の構成を示す図である。
【図２７】比較例の畳込み演算回路の構成を示す図である。
【図２８】比較例の畳込み演算回路の構成を示す図である。
【図２９】比較例の畳込み演算回路の構成を示す図である。
【図３０】比較例の畳込み演算回路の構成を示す図である。
【発明を実施するための形態】
【００１６】
以下、図面を参照して本発明を実施するための形態（以下、「本実施形態」という）におけるディープニューラルネットワークについて説明する。
（背景説明）
［ＣＮＮ］
図２３は、ＣＮＮのモジュール構成図である。画像認識のための深層ＣＮＮのアーキテクチャを例に採る。
図２３に示すＣＮＮは、入力層ＩＮＰＵＴと、入力ボリュームを出力ボリュームに変換する畳込み層Ｃ１〜Ｃ５と、全結合層Ａ１〜Ａ２と、出力層ＯＵＴＰＵＴとの積層体から構成される。
入力層ＩＮＰＵＴは、例えばラスタスキャンされた画像データであり、ＣＮＮ演算への入力データとなる検出対象画像データ（ここではＣＡＲの正面画像）を入力する。
ＣＮＮの各層Ｃ１〜Ｃ５，Ａ１〜Ａ２は、幅、高さおよび奥行きの３次元的に配列されたニューロンを有する。
【００１７】
畳込み層Ｃ１〜Ｃ５および全結合層Ａ１の内部のニューロンは、１つ前の層の受容野と呼ばれる小領域のノードのみに接続されている。
図２３に示すＣＮＮは、重みを持つ７つの層、すなわち畳込み層Ｃ１〜Ｃ５と、完全に接続された全結合層Ａ１〜Ａ２とを含む。全結合層Ａ１〜Ａ２には、ドロップアウトが含まれる。
畳込み層Ｃ１〜Ｃ５と全結合層Ａ１のニューロンは、前の層の受容野に接続され、全結合層Ａ２のニューロンは、前の層の全てのニューロンに接続されている。
【００１８】
畳込み層Ｃ１〜Ｃ５の後にはバッチ正規化層が配置される。各バッチ正規化層の後には、それぞれプーリング（例えば、最大プーリング）を実行するプーリング層が配置される。
【００１９】
<畳込み層の処理内容>
図２３に示すＣＮＮでは、隠れ層は、畳込み層Ｃ１〜Ｃ５とプーリング層とから構成される。畳込み層Ｃ１〜Ｃ５は、前の層で近くにあるノードにフィルタ処理して特徴マップを生成する。
畳込み層Ｃ１〜Ｃ５の入力は、縦長のサイズがＳ×Ｓ画素のＮ枚（Ｎチャンネル）の形式となっている。ＣＮＮにおいて、最初の入力層（畳込み層Ｃ１）のチャンネル数は、入力画像がグレースケールの場合はＮ＝１となり、カラーの場合はＮ＝３（ＲＧＢの３チャンネル）となる。
畳込み層Ｃ１〜Ｃ５では、入力にフィルタ（以下、「カーネル」という）を畳み込む計算が実行される。具体的には、各チャンネルｋ（ｋ＝１〜Ｎ）の入力のサイズＳ×Ｓの画素に、Ｌ×Ｌのサイズの２次元フィルタを畳込み、その結果を全チャンネルｋ＝１〜Ｎにわたって加算する。この計算結果は、１チャンネルの画像ｕｉｊの形式となる。
【００２０】
<プーリング層の処理内容>
プーリング層は、畳込み層Ｃ１〜Ｃ５と対で存在する。畳込み層Ｃ１〜Ｃ５の出力はプーリング層への入力となる。
図２３に示すＣＮＮでは、プーリング層は、畳込み層Ｃ１〜Ｃ５から出力された特徴マップを、さらに縮小して新たな特徴マップを生成する。
プーリング層の目的は、画像のどの位置でフィルタの応答が強かったかという情報を一部捨てて、特徴の微少な変化に対する応答の不変性を実現する。ＣＮＮにおいて、平均プーリングまたは最大プーリングのいずれを採用してもよい。最大プーリングでは、画像中の一定の領域内の最大値を取る手法で、画像の多少のずれを吸収し、画像の位置移動に対する移動不変性を獲得する。
プーリング層の局所受容野のサイズは、畳込み層Ｃ１〜Ｃ５のそれ（フィルタサイズ）と無関係に設定される。
なお、プーリング層では、畳込み層Ｃ１〜Ｃ５と異なり、学習によって変化する重みは存在せず、活性化関数も適用されない。
【００２１】
<正規化線形ユニット（Rectified Linear Unit）>
図２３に示すＣＮＮでは、畳込み層Ｃ１〜Ｃ５と全結合層Ａ１〜Ａ２のための非線形マッピング関数として、正規化線形ユニット（Rectified Linear Unit）と呼ばれる区分線形な活性化関数を使用する。
【００２２】
図２３に示すＣＮＮについて詳細に説明する。
図２３は、第１畳込み層Ｃ１〜第４畳込み層Ｃ４の特徴数が３、第５畳込み層Ｃ５の特徴数が１のＣＮＮの例を示している。画像データ１００１は、ＣＮＮ演算への入力データであり、例えばラスタスキャンされた画像データである。参照画像領域１００２は、コンボリューションフィルタ（特徴抽出フィルタ）（後記）のコンボリューション演算に必要な参照画像領域である。
第１畳込み層Ｃ１〜第５畳込み層Ｃ５は、特徴マップを生成する。特徴マップは、所定の特徴抽出フィルタ（コンボリューション演算の累積和および非線形処理）で前階層のデータを走査しながら演算して得られた処理結果を示す画像データ面である。特徴マップは、ラスタスキャンされた画像データに対する検出結果であるため、検出結果も面で表される。
【００２３】
第１畳込み層Ｃ１は、サイズが５×５×３の６４個のカーネル（kernel）により、２画素のストライドで５６×５６×３の入力画像（ＡＧＥ画像）をフィルタリングする。ストライド（歩幅）は、カーネルマップ内で隣接するニューロンの受容野の中心間の距離である。ストライドは、すべての畳込み層において１ピクセルに設定されている。
第１畳込み層Ｃ１では、入力される画像データを例えばラスタスキャンにより所定サイズごとに走査する。走査したデータに対して、重みマトリクスの畳込み演算とプーリング処理を施すことにより入力画像に含まれる複数の特徴量を抽出する。第１畳込み層Ｃ１では、例えば水平方向に延びる線状の特徴量や斜め方向に延びる線状の特徴量などといった比較的シンプルな単独の特徴量を抽出する。また、入力画像に含まれる複数の特徴にそれぞれ対応する複数の特徴マップを生成する。
【００２４】
第２畳込み層Ｃ２の入力は、バッチ正規化および最大プールされた第１畳込み層Ｃ１の出力である。第２畳込み層Ｃ２は、サイズが３×３×６４である１２８のカーネルで入力をフィルタリングする。
第１畳込み層Ｃ２では、第１畳込み層Ｃ１から入力される入力データを例えばラスタスキャンにより所定サイズごとに走査する。走査したデータに対して、重みマトリクスの畳込み演算とプーリング処理を施すことにより入力画像に含まれる複数の特徴量を抽出する。第２畳込み層Ｃ１では、第１畳込み層Ｃ１で抽出された複数の特徴量の空間的な位置関係などを考慮しながら統合させることで、より高次元の複合的な特徴量を抽出する。また、入力画像に含まれる複数の特徴にそれぞれ対応する複数の特徴マップを生成する。
【００２５】
第３畳込み層Ｃ３は、サイズが３×３×６４である１２８のカーネルを有し、第２層畳込み層Ｃ２（バッチ正規化とＭＡＸプーリング）の出力に接続されている。第３畳込み層Ｃ３では、第２層畳込み層Ｃ２で抽出された複数の特徴量の空間的な位置関係などを考慮しながら統合させることで、より高次元の複合的な特徴量を抽出する。また、入力画像に含まれる複数の特徴にそれぞれ対応する複数の特徴マップを生成する。
【００２６】
第４畳込み層Ｃ４は、サイズが３×３×１２８である１２８のカーネルを備えている。
第５畳込み層Ｃ５は、サイズが３×３×１２８である１２８のカーネルを備えている。
このように、図２３に示すＣＮＮでは、畳込み層Ｃ１〜Ｃ５による処理を繰り返すことで入力画像データＤ１に含まれる種々の特徴量を高次元で抽出していく。そして、畳込み層Ｃ１〜Ｃ５の処理により得られた結果を中間演算結果データとして全結合層Ａ１に出力する。
【００２７】
このように、ＣＮＮ演算では、複数のフィルタカーネルを画素単位で走査しながら積和演算を繰り返し、最終的な積和結果を非線形変換することで特徴マップが生成される。特徴マップは、コンボリューションフィルタの出力を累積加算し、最後に非線形変換処理することによって得る。
【００２８】
図２３に示すＣＮＮでは、畳込み層Ｃ１〜Ｃ５は、画像の局所的な特徴を抽出し、プーリング層は、局所的な特徴をまとめあげる。入力画像の特徴を維持しながら画像を縮小処理することで、画像の持つ情報量を大幅に圧縮できる。
【００２９】
第５畳込み層Ｃ５のプーリング層の後に全結合層Ａ１が配置される。
隣接層間のノードをすべて結合した全結合層Ａ１〜Ａ２は、それぞれ１０２４のニューロンを備えている。
全結合層Ａ１〜Ａ２は、第５畳込み層Ｃ５から得られる複数の中間演算結果データを結合して最終的な演算結果データを出力する。詳細には、全結合層Ａ１〜Ａ２は、第５畳込み層Ｃ５から得られる複数の中間演算結果データを結合し、さらに、その結合結果に対して重み係数を異ならせながら積和演算を行うことにより、最終的な演算結果データ、すなわち、入力データである画像データに含まれる検出対象物を認識した画像データを出力する。このとき、積和演算による演算結果の値が大きい部分が検出対象物の一部または全部として認識される。
【００３０】
出力層ＯＵＴＰＵＴは、全結合層Ａ２と完全に接続された最終層である。出力層ＯＵＴＰＵＴには、予め設定された分類クラス数と同数の最終ノードが含まれる。入力画像のクラス分類を目的とする場合は、分類クラス数と同数のノードが出力層ＯＵＴＰＵＴに配置され、出力層ＯＵＴＰＵＴの活性化関数には「ソフトマックス関数」が用いられる。
図２３に示すように、検出対象画像データ（ＣＡＲの正面画像）が入力された場合、最終的な処理結果として、この画像データに含まれる検出対象物体「ＣＡＲ」「ＴＲＵＣＫ」「ＶＡＮ」…「ＢＩＣＹＣＬＥ」の画像認識結果を出力する。
【００３１】
［ＤＮＮ］
図２４は、ディープニューラルネットワーク（ＤＮＮ）の構造の一例を説明する図である。
図２４に示すように、ディープニューラルネットワーク（ＤＮＮ）１は、入力層（input layer）１１、任意の数の中間層である隠れ層（hidden layer）１２、出力層（output layer）１３を有して構成される。
入力層（input layer）１１は、複数個（ここでは８）の入力ノード（ニューロン）を有する。隠れ層１２は、複数（ここでは３層（hidden layer1，hidden layer2，hidden layer3））である。実際には、隠れ層１２の層数ｎは、例えば２０〜１００に達する。出力層１３は、識別対象の数（ここでは４）の出力ノード（ニューロン）を有する。なお、層数およびノード数（ニューロン数）は、一例である。
ディープニューラルネットワーク１は、入力層１１と隠れ層１２のノード間が全て結合し、隠れ層１２と出力層１３のノード間が全て結合している。
【００３２】
入力層１１、隠れ層１２および出力層１３には、任意の数のノード（図２４の○印参照）が存在する。このノードは、入力を受け取り、値を出力する関数である。入力層１１には、入力ノードとは別に独立した値を入れるバイアス（bias）ノードがある。構成は、複数のノードを持つ層を重ねることで構築される。伝播は、受け取った入力に対して重み（weight）をかけ、受け取った入力を次層に活性化関数（activation function）で変換して出力する。活性化関数は、sigmoid関数やtanh関数（双曲正接関数）などの非線形関数、ReLU（Rectified Linear Unit function：正規化線形関数）がある。ノード数を増やすことで、扱う変数を増やし、多数の要素を加味して値／境界を決定できる。層数を増やすことで、直線境界の組み合わせ、複雑な境界を表現できる。学習は、誤差を計算し、それを基に各層の重みを調整する。学習は、誤差を最小化する最適化問題を解くことであり、最適化問題の解法は誤差逆伝播法（Backpropagation）を使うのが一般的である。誤差は、二乗和誤差を使うのが一般的である。汎化能力を高めるために、誤差に正則化項を加算する。誤差逆伝播法は、誤差を出力層１３から伝播させていき、各層の重みを調整する。
【００３３】
図２４のディープニューラルネットワーク１の構成を２次元に展開することで画像処理に適したＣＮＮを構築できる。また、ディープニューラルネットワーク１にフィードバックを入れることで、双方向に信号が伝播するＲＮＮ（Recurrent Neural Network：再帰型ニューラルネットワーク）を構成することができる。
【００３４】
図２４の太破線三角部に示すように、ディープニューラルネットワーク１は、多層のニューラルネットワークを実現する回路（以下、ニューラルネットワーク回路という）２から構成されている。
本技術は、ニューラルネットワーク回路２を対象とする。ニューラルネットワーク回路２の適用箇所および適用数は限定されない。例えば、隠れ層１２の層数ｎ：２０〜３０の場合、これらの層のどの位置に適用してもよく、またどのノードを入出力ノードとするものでもよい。さらに、ディープニューラルネットワーク１に限らず、どのようなニューラルネットワークでもよい。ただし、入力層１１または出力層１３のノード出力には、２値化出力ではなく多ビット出力が求められるので、ニューラルネットワーク回路２は、対象外である。ただし、出力層１３のノードを構成する回路に、乗算回路が残ったとしても面積的には問題にはならない。
なお、入力データに対し学習済のものを評価していくことを前提としている。したがって、学習結果として重みｗｉは既に得られている。
【００３５】
<ニューラルネットワーク回路>
図２５は、比較例のニューラルネットワーク回路の構成の一例を示す図である。図２５は、１つのニューロンの構成を示す。
比較例のニューラルネットワーク回路２０は、図２４のディープニューラルネットワーク１を構成するニューラルネットワーク回路２に適用できる。なお、以下の各図の表記において、値が多ビットである場合は太実線矢印とバンドルで、また値が２値である場合は細太実線矢印で示す。
【００３６】
図２５に示すように、ニューラルネットワーク回路２０は、入力値（判別データ）Ｘ１〜Ｘｎ（多ビット）を入力する入力ノードおよび重みＷ１〜Ｗｎ（多ビット）を入力する入力部２１と、バイアスＷ０（多ビット）を入力するバイアスＷ０入力部２２と、入力値Ｘ１〜Ｘｎおよび重みＷ１〜Ｗｎを受け取り、入力値Ｘ１〜Ｘｎに重みＷ１〜Ｗｎをそれぞれ乗算する複数の乗算回路２３と、各乗算値とバイアスＷ０との総和を取る総和回路２４と、総和を取った信号Ｙを活性化関数ｆact(Y)で変換する活性化関数回路２５と、を備えて構成される。
【００３７】
入力値（判別データ）Ｘ１〜Ｘｎ（多ビット）は、ニューロンの入力値であり、第２階層以降では、前階層ニューロンの出力値である。
乗算回路２３は、学習によって得られた重みＷ１〜Ｗｎ（多ビット）を各前階層ニューロンの出力値に乗じた結果を出力する。重みＷ１〜Ｗｎは、一般的に知られているバックプロパゲーション等の学習アルゴリズムを使用して、検出する対象物毎に決定されている。
総和回路２４は、乗算回路２３からの乗算結果を累積加算する。
活性化関数回路２５は、総和回路２４からの累積加算結果Ｙを、sigmoid関数やtanh関数等により非線形変換し、その変換結果を検出結果Ｚとして出力する。
以上の構成において、ニューラルネットワーク回路２０は、入力値Ｘ１〜Ｘｎ（多ビット）を受け取り、重みＷ１〜Ｗｎを乗算した後に、バイアスＷ０を含めて総和を取った信号Ｙを活性化関数回路２５を通すことで人間のニューロンに模した処理を実現している。
【００３８】
［比較例の畳込み演算回路］
次に、比較例の畳込み演算回路について説明する。
図２６〜図３０は、比較例の畳込み演算回路３０の構成を示す図である。比較例の畳込み演算回路３０は、例えば図２３の畳込み層Ｃ１〜Ｃ５の畳込み演算部を構成する。比較例の畳込み演算回路３０は、図２５に示すニューラルネットワーク回路２０に備えられる。図２５と同一構成部分には同一符号を付している。
比較例の畳込み演算回路３０は、物体検出（Dilated Convolution）する際に、入力画像（画像データ）と重み関数の畳込み演算を行う。
【００３９】
図２６〜図３０に示すように、比較例の畳込み演算回路３０は、入力値Ｘ００〜Ｘ４４を展開するバッファメモリ３１と、重みＷ１〜Ｗｎ（多ビット）を記憶する重みメモリ３２と、３×３カーネル（kernel）３３の値Ｘに、重みメモリ３２から読み出した重みＷ１〜Ｗｎをそれぞれ乗算する複数の乗算回路２３と、畳込み乗算値の総和を取る総和回路２４ａと、総和結果にバイアスＷ０を加算する加算回路２４ｂと、加算回路２４ｂからの累積加算結果Ｙを活性化関数ｆact(Y)で変換する活性化関数回路２５と、を備えて構成される。
総和回路２４ａと加算回路２４ｂは、図２５の総和回路２４を構成する。活性化関数回路２５は、sigmoid関数やtanh関数などの非線形関数、ReLUである。
【００４０】
図２６〜図３０に示すように、比較例の畳込み演算回路３０は、バッファメモリ３１に展開したInput Feature Mapに画像（行列の各要素はそれぞれ画像の１ピクセルに対応）を入力する。この入力画像に対して、カーネル（この例ではＫ＝３の３×３カーネル３３）の値と行列の値を要素毎に掛け合わせ、それらの値を合計する。この操作をカーネルをスライドさせながら各要素に対して行うことで全体の畳込み演算を行う。以下、具体的に説明する。
【００４１】
まず、図２６に示すように、比較例の畳込み演算回路３０は、３×３カーネル３３（図Ｄ網掛け参照）を、左上のＸ００，Ｘ０１，Ｘ０２，Ｘ１０，Ｘ１１，Ｘ１２，Ｘ２０，Ｘ２１，Ｘ２２に移動させる。乗算回路２３は、３×３カーネル３３の値（Ｘ００，Ｘ０１，Ｘ０２，Ｘ１０，Ｘ１１，Ｘ１２，Ｘ２０，Ｘ２１，Ｘ２２）と重みメモリ３２から読み出した重みＷ１〜Ｗｎを要素毎に掛け合わせる畳込み演算を行う。総和回路２４ａは、それらの値を合計し（畳込み乗算値の総和を取り）、加算回路２４ｂは、総和結果にバイアスＷ０を加算する。そして、活性化関数回路２５は、加算回路２４ｂからの累積加算結果Ｙを活性化関数ｆact(Y)で変換する。
【００４２】
次いで、図２７に示すように、比較例の畳込み演算回路３０は、３×３カーネル３３を、左から右に１つずらす。乗算回路２３は、３×３カーネル３３の値（Ｘ０１，Ｘ０２，Ｘ０３，Ｘ１１，Ｘ１２，Ｘ１３，Ｘ２１，Ｘ２２，Ｘ２３）と重みメモリ３２から読み出した重みＷ１〜Ｗｎを要素毎に掛け合わせる。総和回路２４ａは、それらの値を合計する。加算回路２４ｂは、総和結果にバイアスＷ０を加算し、活性化関数回路２５は、加算回路２４ｂからの累積加算結果Ｙを活性化関数ｆact(Y)で変換する。
【００４３】
次いで、図２８に示すように、比較例の畳込み演算回路３０は、３×３カーネル３３を、左から右に１つずらす。この場合、３×３カーネル３３は、右上終端までスライドさせる。この入力画像に対して同様の演算を行う。すなわち、３×３カーネル３３の値（Ｘ０２，Ｘ０３，Ｘ０４，Ｘ１２，Ｘ１３，Ｘ１４，Ｘ２２，Ｘ２３，Ｘ２４）と行列の値を要素毎に掛け合わせ、それらの値を合計する。加算回路２４ｂは、総和結果にバイアスＷ０を加算し、活性化関数回路２５は、加算回路２４ｂからの累積加算結果Ｙを活性化関数ｆact(Y)で変換する。
【００４４】
次いで、図２９に示すように、比較例の畳込み演算回路３０は、３×３カーネル３３を、左端の１つ下に移動させる。この入力画像に対して、３×３カーネル３３の値（Ｘ１１，Ｘ１１，Ｘ１２，Ｘ２０，Ｘ２１，Ｘ２２，Ｘ３０，Ｘ３１，Ｘ３２）と行列の値を要素毎に掛け合わせ、それらの値を合計する。
【００４５】
以下同様に、３×３カーネル３３を、右下までずらし、比較例の畳込み演算回路３０は、入力画像に対して同様の演算を行う。図３０に示すように、左下かつ右下が３×３カーネル３３をスライドさせる終端となる。比較例の畳込み演算回路３０は、３×３カーネル３３の値（Ｘ２２，Ｘ２３，Ｘ２４，Ｘ３２，Ｘ３３，Ｘ３４，Ｘ４２，Ｘ４３，Ｘ４４）と行列の値を要素毎に掛け合わせ、それらの値を合計する。加算回路２４ｂは、総和結果にバイアスＷ０を加算し、活性化関数回路２５は、加算回路２４ｂからの累積加算結果Ｙを活性化関数ｆact(Y)で変換する。
右下に移動後、Ｘ００にカーネルを戻し（図２６参照）、再度計算を行う。
【００４６】
このように、比較例の畳込み演算回路３０は、バッファメモリ３１の入力画像に対して、３×３カーネル３３の値と行列の値を要素毎に掛け合わせ、それらの値を合計する。この操作を、３×３カーネル３３を左上から右下までスライドさせながら各要素に対して行うことで全体の畳込み演算を行う。
なお、ゼロパディングは、行う場合と行わない場合とがある。
【００４７】
ＣＮＮでは、上述したような、観測画像と重みマトリクスの畳込み演算が約１千万回ないし１０億回実行される。このため、コンピュータパワーと計算時間、重みマトリクスを格納するメモリ容量が膨大となる。また、大量の積和演算とそのパラメータを保持するため、組込み機器で実現することが難しい。
【００４８】
（実施形態）
図１は、本発明の実施形態に係るニューラルネットワーク回路が備える雑音畳込み演算回路１００の構成を示す図である。「雑音畳込み」は、発見に基づき本発明者が命名したものである。雑音畳込み演算回路１００は、図２６〜図３０に示す比較例の畳込み演算回路３０に置き換えられる。
図１に示すように、雑音畳込み演算回路１００は、雑音（ノイズ）ｎｃを生成する雑音生成回路１１０と、１×１畳込みを実行するための入力値Ｘを受け取り、入力値Ｘに雑音生成回路１１０で生成された雑音ｎｃを加算する加算回路１２０（演算回路，演算手段）と、重みＷを受け取り、雑音を乗せた加算回路１２０の雑音畳込み演算値と重みＷを乗算する乗算回路１３０（乗算手段）と、を備える。
【００４９】
雑音生成回路１１０は、乱数を生成する乱数生成器により構成される。
雑音ｎｃは、乱数生成器で出力される値である。
乱数生成器は、乱数の可制御性（再現性）があればどのような手法（例えば、ＸＯＲ−Ｓｈｉｆｔ，ＬＦＳＲ（linear feedback shift register：線形帰還シフトレジスタ），線形合同法（Linear congruential generators）など）で乱数を生成するものでもよい。
【００５０】
本実施形態では、乱数に疑似乱数を用いる。疑似乱数は、学習ツールを用いることで容易に作成することができる。ただし、乱数に真性乱数を用いることも可能である。真正乱数を用いる場合、１×１畳込みの学習が困難になると予想される。すなわち、学習後の重みパラメータの観測から、十分に精度がでる重みの分布は、乱数生成による分布とほぼ一致する。このとき、一致しない重みは、１×１畳込みで補正する。乱数に真性乱数を用いると、１×１畳込みの学習が困難になる。
【００５１】
雑音ｎｃを乗せる演算は、加算回路１２０による加算である。雑音を加算により乗せる理由について述べる。雑音を乗算により乗せることも考えられるが、乗算すると学習ができなくなる。深層学習の学習方法は、一般に誤差逆伝搬法を使用する。誤差逆伝搬法では、誤算の微分値を更新に用いるが、雑音を乗算する態様では、微分値が残ってしまい雑音の更新が行われてしまう。結果として、雑音の分布の仮定が崩れるのでいつまで経っても学習が進まないことになる。そこで、雑音畳込み演算回路１００は、雑音を加算により乗せている。なお、雑音を乗せる演算を、加算により行うことについては、本発明者が初めて見出したものである。
【００５２】
図２は、本発明の実施形態に係るニューラルネットワーク回路５０が備える雑音畳込み演算回路１００のブロック図である。
図２に示すように、ニューラルネットワーク回路５０は、雑音畳込み演算を実行する雑音畳込み演算回路１００と、装置全体を制御するＣＰＵ６０と、認識用データを格納するオフチップメモリ７０と、各部を繋ぐシステムバス８０と、を備える。
【００５３】
雑音畳込み演算回路１００は、入力値Ｘ００〜Ｘ４４を展開するバッファメモリ１０１と、雑音（ノイズ）ｎｃを生成する雑音生成回路１１０と、１×１カーネル１１１の値Ｘに、雑音生成回路１１０からの雑音ｎｃを加算する加算回路１２０と、重みＷを記憶する重みメモリ１３１と、雑音ｎｃを加えた１×１カーネル１１１の値Ｘに、重みメモリ１３１から読み出した重みＷを乗算する乗算回路１３０と、雑音畳込み乗算値にバイアスＷ０を加算する加算回路１４０と、加算回路１４０からの累積加算結果Ｙを活性化関数ｆact(Y)で変換する活性化関数回路１５０と、を備える。
活性化関数回路１５０は、sigmoid関数やtanh関数などの非線形関数、ReLUである。
【００５４】
雑音畳込み演算回路１００は、外部にＣＰＵ６０、オフチップメモリ７０、およびシステムバス８０を付加し、既存のＦＰＧＡ（field-programmable gate array）などで実現される。
【００５５】
ニューラルネットワーク回路５０は、オフチップメモリ７０に認識用データを格納する。ＣＰＵ６０は、ＤＭＡ（Direct Memory Access）コントローラ（図示省略）にＤＭＡ転送命令を指示し、ＤＭＡ転送によりオフチップメモリ７０からバッファメモリ１０１に認識用データを送る。ＣＰＵ６０は、雑音畳込み演算回路１００を起動させ、雑音畳込み演算回路１００は、雑音畳込みを行う。畳込み処理が終わると、バッファメモリ１０１からオフチップメモリ７０に認識データを転送して、ＣＰＵ６０で後処理（例えば、一般物体認識では物体検出処理、意味的領域分割では領域の推定処理、姿勢推定では骨格推定）を行う。
【００５６】
以下、上述のように構成された雑音畳込み演算回路１００の作用効果について説明する。
（本発明の原理説明）
まず、本発明の基本原理について説明する。
本発明の着眼点は、ニューラルネットワークの学習後のパラメータ(重み)が、雑音と同じ統計的性質を持つことができることを発見したことである。
【００５７】
図３は、本発明の基本原理を説明するＣＮＮの概略構成図であり、図３（ａ）はそのＣＮＮのモジュール構成図、図３（ｂ）−（ｄ）はその学習後のパラメータ（重み）を統計的に示すヒストグラムである。図３（ａ）中のブロックは、畳込み層（プーリング層を含む）を示し、畳込み層に付された数値は、畳込み層のサイズを示している。また、ｋはカーネルのサイズ、ｓはカーネルをスライドさせるスライドサイズである。
図３（ａ）の符号ａに示すように、第１畳込み層Ｃ１における学習後のパラメータ（重み）を統計的に解析すると、図３（ｂ）に示すヒストグラムとなる。
図３（ａ）の符号ｂに示すように、第２畳込み層Ｃ２における学習後のパラメータ（重み）を統計的に解析すると、図３（ｃ）に示すヒストグラムとなる。
図３（ａ）の符号ｃに示すように、第５畳込み層Ｃ５における学習後のパラメータ（重み）を統計的に解析すると、図３（ｄ）に示すヒストグラムとなる。
【００５８】
図４は、本発明の基本原理を説明する雑音のヒストグラムを示す図であり、図４（ａ）は雑音を統計的に示す図、図４（ｂ）は図４（ａ）の雑音を統計的に解析したヒストグラムである。図４（ａ）の縦軸は発生した雑音の振れ幅（大きさ）、図４（ａ）の横軸は時間軸（雑音発生の時間経過）である。
図４（ａ）に示すように、雑音は、雑音なし（雑音０）を中心にランダムな振れ幅（０．５〜−０．５）で発生する。
図４（ａ）に示す雑音を雑音発生の時間経過に従って発生頻度順に累積すると、図４（ｂ）に示すヒストグラムが得られる。
【００５９】
本発明者は、図４（ｂ）に示す雑音のヒストグラムは、ニューラルネットワークの、学習後の重みパラメータのヒストグラム（図３（ｂ）−（ｄ）参照）とほぼ一致していることを発見した。すなわち、ニューラルネットワークの学習後のパラメータ(重み)は、雑音と同じ統計的性質を持つ（ただし、学習後のパラメータ(重み)のうち、ニューラルネットワークの最初のレイヤを除く）ことを発見した。
上記発見をもとに、ニューラルネットワークの学習後のパラメータ(重み)が、雑音と同じ統計的性質を持つ条件について下記の知見を得た。
【００６０】
［雑音畳込み層の重みｖの導出］
まず、雑音畳込み層の重みｖの導出について述べる。
雑音畳込み層の重みｖとは、雑音を除いた既存の畳込みの重みそのもののことである。図１で示すと、図１のＷ（重み）のことである。下記式（１）は雑音の系列がわかってしまえば、それから重みを導出できることを示している。ただし、実用的には乱数を意図的に生成することは困難であるので、本実施形態に記載のようにハードウェアで生成可能な疑似乱数（雑音）に適した重みを学習させて求める。
雑音畳込み層の演算は、次式（１）で表すことができる。
【００６１】
【数１】
2020119462.tif 000003
【００６２】
ノイズフィルタの数Ｎと入力のチャネル数ｐが等しいときの重みｖは、次式（２）で表すことができ、ノイズフィルタの数Ｎが入力のチャネル数ｐより小さいときの重みｖは、次式（３）で表すことができる。
【００６３】
【数２】
2020119462.tif 000004
【００６４】
つまり、入力ｘ、ノイズフィルタＮ、出力ｙが与えられると重みｖを導出可能であるということがわかる。
【００６５】
［雑音畳込み層と既存畳込み層との等価性］
次に、雑音畳込み層と既存畳込み層との等価性について述べる。
<前提>
・統計的に解析することが可能である。
・入力データが、
Ｅ（ｘｉ）＝０、Ｅ（ｘｉ２）＝σ２
ただし、
ｘｉ：畳込みが行われる入力テンソル内の各画素
Ｅ（ｘｉ）：期待値
σ２：分散
を満たすとき
【００６６】
<畳込み演算出力>
畳込み演算による出力ｙは、式（４）で示される。
【００６７】
【数３】
2020119462.tif 000005
【００６８】
<雑音（ノイズ）ｎｃ>
期待値：Ｅ（ｎｃ）＝Ｅ（ΣＮｃεｉＷｉ’）＝０、かつ、
分散：Ｅ（ｎｃ２）＝Ｅ（ΣＮｃεｉＷｉ’）２＝２σ２δ’
となる雑音ｎｃを用いる。
【００６９】
上記雑音（ノイズ）ｎｃを用いると、式（５）に示すように雑音畳込み演算による出力ｙ’と既存畳込み演算による出力ｙ’とは、統計的に等価となる（詳細説明は後記）。
比較例の畳込み演算回路３０による畳込み演算の出力ｙ’と、雑音畳込み演算回路１００による雑音畳込み演算による出力ｙ’とが、統計的に等価であることを、式（５）中の枠囲みで示している。
【００７０】
【数４】
2020119462.tif 000006
【００７１】
<雑音畳込み層と既存畳込み層の統計的に等価の式の導出の詳細>
次に、雑音畳込み層と既存畳込み層とが統計的に等価であることを示す途中式の導出について説明する。
確率分布の観点から雑音畳込み層と既存畳込み層の関係について考察する。畳込み層において、畳込みを行う入力の中心ピクセルｘｃ、近傍ピクセルｘｉ、相関関数、中心ピクセルρと近傍ピクセルの差ε＝ｘｉ−ｘｃ、近傍ピクセルの集合Ｎｃを用いる。ここで、前提条件としてＥ（ｘｉ）＝０，Ｅ（ｘｉ２）＝σ２を仮定する。
まず、今後計算に使用するため、Ｅ（εｉ），Ｅ（εｉ２），Ｅ（εｉεｊ）を次式（６）（７）（８）に従って求める。
【００７２】
【数５】
2020119462.tif 000007
【００７３】
ここで、前記式（４）に示す畳込み演算は、式（９）のように式変形できる。
【００７４】
【数６】
2020119462.tif 000008
【００７５】
ここで、Σｉ∈Ｎｃεｉｗｉ’に関して、Ｅ（Σｉ∈Ｎｃεｉｗｉ’），Ｅ（Σｉ∈Ｎｃεｉｗｉ’）２を次式（１０）（１１）に従って求める。
【００７６】
【数７】
2020119462.tif 000009
【００７７】
以上より、下記式（１２）となる雑音（ノイズ）ｎｃを用いると、雑音畳込み層は畳込み層（既存畳込み層）と等価であると考察される。
【００７８】
Ｅ（ｎｃ）＝Ｅ（Σｉ∈Ｎｃεｉｗｉ’）＝０
Ｅ（ｎｃ２）＝Ｅ（Σｉ∈Ｎｃεｉｗｉ’）２＝２σ２δ’      …（１２）
【００７９】
式（６）および式（７）と、式（１２）とを対比してわかるように、既存畳込みとノイズを加えた畳込みの「計算結果の平均と分散が一致する」ことを利用して、大量のメモリアクセスと積和演算を、軽量な回路で実現できるノイズ生成回路で生成した信号を乗せることに置き換えたこと、が本発明の特徴である。なお、計算結果の平均と分散が一致することであって、全く同じ計算結果になるということではない。
【００８０】
［雑音畳込み演算回路１００の動作］
次に、図１および図２に示す雑音畳込み演算回路１００の動作について説明する。
図５〜図１３は、雑音畳込み演算回路１００の構成を示す図である。図１および図２と同一構成部分には同一符号を付している。また、図５〜図１３を参照して、雑音畳込み演算回路１００の動作を説明する。
なお、図５〜図１３に示す雑音畳込み演算回路１００の動作は、前記図２６〜図３０に示す比較例の畳込み演算回路３０の動作に対応する。
【００８１】
まず、図５に示すように、雑音畳込み演算回路１００は、１×１カーネル１１１（図５網掛け参照）を、左上のＸ００に移動させる。図５の符号ｄに示すように、加算回路１２０は、１×１カーネル１１１の値Ｘ００に、雑音生成回路１１０からの雑音ｎｃを加える。乗算回路１３０は、雑音ｎｃを加えた１×１カーネル１１１の値Ｘ００に、重みメモリ１３１から読み出した重みＷを乗算する畳込み演算を行う。加算回路１４０は、雑音畳込み乗算値にバイアスＷ０を加算する。そして、活性化関数回路１５０は、加算回路１４０からの累積加算結果Ｙを活性化関数ｆact(Y)で変換する。
【００８２】
次いで、図６に示すように、雑音畳込み演算回路１００は、１×１カーネル１１１を、左から右に１つずらし、Ｘ０１に移動させる。以下同様の雑音畳込み演算を行う。
【００８３】
以下同様して、図７〜図９に示すように、１×１カーネル１１１を、右端までずらし、Ｘ０４に移動させ、同様の雑音畳込み演算を行う。
さらに、図１０に示すように、左下かつ右端に１×１カーネル１１１をスライドさせ、Ｘ１０に移動させる。同様の雑音畳込み演算を行う。さらに、図１１に示すように、１×１カーネル１１１を右にスライドさせ、Ｘ１１に移動させる。同様の雑音畳込み演算を行う。
【００８４】
図１２に示すように、１×１カーネル１１１をスライドさせ、右下のＸ４４で同様の雑音畳込み演算を行う。
１×１カーネル１１１を右下に移動後、図１３に示すように、１×１カーネル１１１をＸ００に戻し、再度計算を行う。図１３は、再度計算後の１×１カーネル１１１の位置であり、前記図５の１×１カーネル１１１の位置に戻る。
【００８５】
このように、雑音畳込み演算回路１００は、３×３重みの代わりに雑音を乗せて１×１畳込み演算を実行する。雑音畳込み演算回路１００は、雑音により大部分の畳込みを代用できるので１×１畳込みで十分である。この場合も左上から右下に向かって畳込み演算を行う。
【００８６】
［雑音畳込み演算回路１００と比較例の畳込み演算回路３０との比較］
図１４は、雑音畳込み演算回路１００と比較例の畳込み演算回路３０とを比較して示す図であり、図１４（ａ）は比較例の畳込み演算回路３０の概略構成図、図１４（ｂ）は雑音畳込み演算回路１００の概略構成図である。
図１４（ａ）に示すように、比較例の畳込み演算回路３０は、３×３カーネル３３の値Ｘ（入力Ｘ）に、重みメモリ３２から読み出したパラメータ（重み）Ｗをそれぞれ乗算する積和演算回路（Matrix MAC）３５と、を備える。
比較例の畳込み演算回路３０は、全パラメータ（重み）を畳込み（通常は３×３畳込み）演算を行う。
図１４（ａ）の符号ｅに示すように、ＣＮＮでは、上記畳込み演算が約1千万回〜１０億回行われる。計算量・メモリ量が爆発的に増加するため、軽量化したい切実な要望がある。
【００８７】
図１４（ｂ）に示すように、雑音畳込み演算回路１００は、雑音（ノイズ）ｎｃを生成する雑音生成回路１１０と、１×１カーネル１１１の値Ｘに、雑音生成回路１１０からの雑音（ノイズ）ｎｃを加算する加算回路１２０と、雑音（ノイズ）ｎｃを加えた１×１カーネル１１１の値Ｘに、パラメータ（重み）Ｗを乗算する乗算回路１３０と、を備える。
雑音畳込み演算回路１００は、１×１畳込み演算を実行する。つまり、比較例の畳込み演算回路３０は、全パラメータ（重み）を３×３畳込みを行うのに対し、雑音畳込み演算回路１００は、１×１畳込みのみを実行する。
【００８８】
図１４（ｂ）の符号ｆに示すように、雑音を乗せると１×１畳込みで等価になる（式（５）参照）。
【００８９】
このように、雑音畳込み演算回路１００は、３×３重みの代わりに雑音を乗せて１×１畳込みを行う。これにより、重みを最大で３×３分の１に削減し、計算量も３×３分の１に削減する。これにより、計算量（約９０％の計算量）とメモリ量の削減ができる（詳細後記）。また、計算量とメモリ量を削減したにもかかわらず、認識精度の低下はないことが確認できた（詳細後記）。
【００９０】
［雑音畳込み演算回路１００と比較例の畳込み演算回路３０との作用効果比較］
図１５は、雑音畳込み演算回路１００と比較例の畳込み演算回路３０との作用効果を比較して示す図である。図１５（ａ）は比較例の畳込み演算回路３０の雑音を加えなかった場合の入力画像と畳込みを説明する図であり、図１５（ｂ）は雑音畳込み演算回路１００の雑音を加える場合の入力画像と１×１畳込みを説明する図である。
図１５（ａ）の符号ｇに示すように、比較例の畳込み演算回路３０では、３×３などの大きなカーネルを用いて雑音に近い重みを畳込む。
【００９１】
図１５（ｂ）に示すように、雑音畳込み演算回路１００は、加算回路１２０により１×１カーネルの値Ｘに、雑音生成回路１１０（図示省略）からの雑音を直接乗せる。図１５（ｂ）の符号ｈに示すように、入力画像に雑音が加えられている。雑音畳込み演算回路１００は、雑音を入力画像に直接乗せて、１×１畳込みで補正する。
【００９２】
雑音を加えなくてもよい条件は、雑音の代わりになる３×３などの大きなカーネルを用いた既存畳込みと組み合わせる場合になる。
【００９３】
［雑音畳込み演算回路１００の特徴］
雑音畳込み演算回路１００の特徴について述べる。
雑音畳込み層と比較例の畳込み層（既存畳込み層）とが等価（統計的に等価）になる前提条件は、前述したように、入力データが、
Ｅ（ｘｉ）＝０、Ｅ（ｘｉ２）＝σ２
ただし、
ｘｉ：畳込みが行われる入力テンソル内の各画素
Ｅ（ｘｉ）：期待値
σ２：分散
を満たすときである。
【００９４】
入力データが、
Ｅ（ｘｉ）＝０、Ｅ（ｘｉ２）＝σ２
を満たすには、ＣＮＮにおいて少なくとも１回は畳込みが実行された後の畳込み層であることを確認した。
【００９５】
図１６は、雑音畳込み演算回路１００の特徴を説明する図であり、図１６（ａ）は入力画像の各画素の値とその度数分布を示すヒストグラム、図１６（ｂ）はＣＮＮの１層目の畳込み層の出力の各画素の値とその度数分布を示すヒストグラムである。
図１６（ａ）に示すように、入力画像では、画像の各画素の値の分布が偏る。このため、上記畳込み層が等価となる前提条件：Ｅ（ｘｉ）＝０、Ｅ（ｘｉ２）＝σ２を満たさず、入力画像については雑音畳込みは適用できない。
【００９６】
図１６（ｂ）に示すように、ＣＮＮの１層目の畳込み層の出力は、「雑音のヒストグラム」となる。このため、上記前提条件：Ｅ（ｘｉ）＝０、Ｅ（ｘｉ２）＝σ２を満たすので、雑音畳込みを適用できる。
つまり、ＣＮＮの１層以上は、比較例の畳込み層（既存畳込み層）が必要である。
【００９７】
［入力画像に適用した場合の雑音畳込みＣＮＮと既存畳込みＣＮＮの比較］
雑音畳込み演算回路１００を入力画像に適用した場合のＣＮＮ（以下、入力画像に適用した場合の雑音畳込みＣＮＮという）と比較例の畳込み演算回路３０を用いたＣＮＮ（以下、既存畳込みＣＮＮという）の比較について述べる。
【００９８】
図１７は、入力画像に適用した場合の雑音畳込みＣＮＮと既存畳込みＣＮＮのVGG16モデルを用いて画像認識タスクCIFAR-10およびCIFAR-100を学習させた結果の認識精度を説明する図である。
入力画像に適用した場合の雑音畳込みＣＮＮと既存畳込みＣＮＮの効果を確認するため、VGG16（隠れ層が１６層） ベンチマークＮＮを実装し、学習が成功するか確認した。VGG16は、良く使われているベンチマークで再現性があるものである。
【００９９】
図１７に示すように、入力画像に適用した場合の雑音畳込みＣＮＮは、既存畳込みＣＮＮに大きく劣った認識精度を示している。すなわち、雑音畳込みＣＮＮは、上記前提条件：Ｅ（ｘｉ）＝０、Ｅ（ｘｉ２）＝σ２を満たさない、入力画像に適用した場合には、既存畳込みＣＮＮに比べ大きく劣った認識精度となることが検証できた。
【０１００】
［雑音畳込みＣＮＮの構成］
上記検証結果をもとに、雑音畳込みＣＮＮを構成する場合、ＣＮＮの１層以上は、比較例の畳込み層（既存畳込み層）を備える必要がある。
【０１０１】
図１８は、雑音畳込みＣＮＮの構成を示すブロック図である。畳込み層が１３層の場合を例にとる。なお、畳込み層に組み合わされる全結合層は、３層であるとする。図１８中のｋは畳込み層の数である（図１８中のｋは、カーネルではない）。
雑音畳込みＣＮＮは、既存畳込み層と雑音畳込み層とから構成される。既存畳込み層は、例えば３×３畳込み層である。雑音畳込み層は、雑音を乗せた１×１畳込み層である。
図１８に示すように、雑音畳込みＣＮＮは、ｋ層である３×３畳込み層と、１３−ｋ層である雑音畳込み層と、３層の全結合層と、から構成される。
ｋの値は、認識精度と重みの数のトレードオフを考えて選択される。以下、ｋの値を変えた場合の実験結果について説明する。
【０１０２】
［雑音畳込みＣＮＮ層数と認識率］
図１９は、畳込みＣＮＮ層数ｋと、認識精度(%)、ratioおよび全層の重み(MB)との実験結果を表にして示す図である。全層の重み(MB)は、メモリ量に対応し、パラメータ（全層の重み）が大きい程、使用するメモリ量は多くなる。
図１９は、雑音畳込みＣＮＮのみ（図１９実線囲み参照）、「ＣＮＮ１層＋雑音畳込みＣＮＮ１２層（図１９一点鎖線囲み参照）」、「ＣＮＮｋ層＋雑音畳込みＣＮＮ（１３−ｋ）層（図１９二点鎖線囲み参照）」、「既存畳込みＣＮＮのみ（図１９破線囲み参照）」、それぞれの認識精度(%)、ratioおよび全層の重み(MB)を表している。
【０１０３】
図１９に示すように、認識精度(%)は、「ＣＮＮｋ層＋雑音畳込みＣＮＮ（１３−ｋ）層」の６３．８〜７１．５％と、「既存畳込みＣＮＮのみ」の７０．１％とが高いことが分かる。一方、全層の重み(MB)は、「雑音畳込みＣＮＮのみ」の８．８、「ＣＮＮ１層＋雑音畳込みＣＮＮ１２層」の８．８、「ＣＮＮｋ層＋雑音畳込みＣＮＮ（１３−ｋ）層」の畳込みＣＮＮ層数ｋ＝２〜７の１５．０以下の場合に小さいことが分かる。認識精度(%)と全層の重み(MB)を双方考慮すると、「ＣＮＮｋ層＋雑音畳込みＣＮＮ（１３−ｋ）層」の畳込みＣＮＮ層数ｋ＝４〜６の場合に、認識精度(%)が向上し、全層の重み(MB)が小さい。
【０１０４】
特に、「ＣＮＮｋ層＋雑音畳込みＣＮＮ（１３−ｋ）層」の畳込みＣＮＮ層数ｋ＝６の場合、認識精度(%)は７０．５％と高く、かつ、全層の重み(MB)は１２．９と小さい。「ＣＮＮｋ層＋雑音畳込みＣＮＮ（１３−ｋ）層」の畳込みＣＮＮ層数ｋ＝６の場合と、「既存畳込みＣＮＮのみ」とを比較すると、認識精度(%)はほぼ同じ（７０．５％と７０．１％）でありながら、全層の重み(MB)は、格段に削減（１２．９と６１．１）される。すなわち、ｋ＝６のとき、認識精度が向上し、パラメータ（全層の重み）を約８０％削減することが確認できた。
【０１０５】
［雑音畳込みＣＮＮの学習時間と推論時間］
図２０は、雑音畳込みＣＮＮの学習時間と推論時間を表にして示す図である。比較のため、「ＣＮＮｋ層＋雑音畳込みＣＮＮ（１３−ｋ）層」と「雑音畳込みＣＮＮ」のみと「既存畳込みＣＮＮ」のみとの、１ｅｐｏｃｈ毎の学習時間(s)と推論時間(s)を示している。ＧＰＵを使用し、ｂａｔｃｈｓｉｚｅ：１０、学習のデータ数：５００００、推論のデータ数：１００００とした。
【０１０６】
図２０に示すように、雑音畳込みＣＮＮの構成において、「ＣＮＮｋ層＋雑音畳込みＣＮＮ（１３−ｋ）層」(図１９参照)の構成を採ると、「雑音畳込みＣＮＮ」のみ場合と「既存畳込みＣＮＮ」のみ場合と比較して、１ｅｐｏｃｈ毎の学習時間(s)と推論時間(s)がいずれも短縮された。特に、「ＣＮＮｋ層＋雑音畳込みＣＮＮ（１３−ｋ）層」と「既存畳込みＣＮＮ」のみとを比較すると、学習時間(s)が７０．５から３５．５に、推論時間(s)が４．５０から２．８１にいずれも約半分に短縮された。このように、雑音畳込みＣＮＮの構成を「ＣＮＮｋ層＋雑音畳込みＣＮＮ（１３−ｋ）層」とすることで、学習時間および推論時間が削減されることが検証できた。
【０１０７】
［雑音畳込みＣＮＮの実装結果］
図２１は、本実施形態の雑音畳込み演算回路１００をFPGA(ZCU102ボード)上に実装し、畳込み演算（１層，５６×５６サイズ６４チャネル）を既存畳込みＣＮＮと比較した結果を表にして示す図である。
ＦＰＧＡ実装の比較は、本実施形態（「ＣＮＮｋ層＋雑音畳込みＣＮＮ（１３−ｋ）層」）、比較例の既存畳込みＣＮＮである。ＦＰＧＡ実装のハードウェアの量は、ＦＦ(flip-flop)数、ＬＵＴ数、18Kb BRAM 数、およびＤＳＰ（digital signal processor） 48E 数で示される。
【０１０８】
図２１の表の用語は下記の通りである。
ＬＵＴ数は、FPGAのLUT（Look-Up Table）消費量であり、面積を意味する。
ＦＦ数は、論理ゲート数であり、面積を意味する。
BRAM 18Kb数は、FPGAの内部メモリブロックの消費量であり、面積を意味する。
DSP Block数は、FPGAの内部積和演算ブロックの消費量であり、面積を意味する。
レイテンシ[Cycles]は、データ転送待ち時間／外部にメモリを付けた場合の転送速度である。
動作周波数[MHz]は、演算部の動作処理時間(処理速度)である。
この表において、特に注目すべき事項は下記の通りである。
【０１０９】
<メモリ量>
本実施形態の雑音畳込みＣＮＮは、表の既存畳込みＣＮＮと比較して、メモリ量（BRAM18K）を、１７３７から１９３に約１／９に低減することができた。
【０１１０】
<演算部の面積>
演算部の面積は、表のLUT数、FF数、DSP48E数で表される。LUT数は、２６０７５から７７８４に、FF数は、９４４６から６４６７に、DSP48E数は、５３から４３にそれぞれ削減される。LUT数、FF数、DSP48E数の削減は、いずれも演算部の面積の削減に寄与し、高速化を達成することができる。すなわち、演算部の面積削減は、チップ面積削減に直結して、外付けメモリが不要となることから、レイテンシ[Cycles]が既存畳込みＣＮＮの１８８９７９２７から雑音畳込みＣＮＮの２８５３１２７に約１／６．６に低減することができるとともに、動作周波数[MHz]を７７．６から１１８．７に約１．５倍に高速化して動作させことができ、高速化を達成することができる。また、雑音畳込みＣＮＮは、上記したメモリ量の削減に加えて、外付けメモリが不要となることから、メモリコントローラが単純になることなどの効果がある。チップ面積は価格に比例するので、価格も２桁程度安くなることが期待できる。
【０１１１】
<性能等価>
本実施形態の雑音畳込みＣＮＮは、前記図１９の雑音畳込みＣＮＮ層数と認識率の表に示すように、「ＣＮＮｋ層＋雑音畳込みＣＮＮ（１３−ｋ）層」構成を採ることで、既存畳込みＣＮＮと同等の認識率を達成することができる。
【０１１２】
本実施形態によれば、既存畳込みＣＮＮと比較して、重みを最大で３×３分の１に削減し、計算量も３×３分の１に削減しつつ、図１９に示したように認識精度はほぼ等価なＣＮＮを構成できることが判明した。ディープラーニングを用いたＡＤＡＳ（Advanced Driver Assistance System：先進運転支援システム）カメラ画像認識用のエッジ組み込み装置ハードウェア方式として実用化が期待される。特にＡＤＡＳでは、車載する上で高信頼性と低発熱が要求される。本実施形態に係る雑音畳込み演算回路１００は、外付けメモリが不要であるので、メモリを冷却する冷却ファンや冷却フィンも不要である。ＡＤＡＳカメラに搭載して好適である。
【０１１３】
［実装例］
図２２は、本発明の実施形態に係る雑音畳込みＣＮＮの実装例を説明する図である。
<STEP1>
まず、与えられたデータセット（今回はImageNet、画像認識タスク用にデータ）を既存のディープニューラルネットワーク用のフレームワークソフトウェアであるChainer （登録商標）を用いてＧＰＵ（Graphics Processing Unit）を有するコンピュータ２０１上で学習を行った。学習は、ＧＰＵ上で実行する。このコンピュータ２０１は、ＡＲＭプロセッサなどのＣＰＵ（Central Processing Unit）と、メモリと、ハードディスクなどの記憶手段（記憶部）と、ネットワークインタフェースを含むＩ／Ｏポートとを有する。このコンピュータは、ＣＰＵ２０１が、メモリ上に読み込んだプログラム（雑音畳込み演算の実行プログラム）を実行することにより、後記する各処理部により構成される制御部（制御手段）を動作させる。
【０１１４】
<STEP2>
次に、自動生成ツールを用いて、本実施形態の雑音畳込み演算回路１００と等価なＣ++コードを自動生成し、Ｃ++コード２０２を得た。
【０１１５】
<STEP3>
次に、FPGA ベンダの高位合成ツール(Xilinx 社SDSoC) （登録商標）を用いて、ＦＰＧＡ（field-programmable gate array）合成用にＨＤＬ（hardware description language）２０３を生成した。例えば、高位合成ツール(Xilinx 社SDSoC)では、実現したい論理回路をハードウェア記述言語（Verilog HDL/VHDL）を用いて記述し、提供されたＣＡＤツールでビットストリームに合成する。そして、FPGAにこのビットストリームを送信するとFPGAに回路が実現する。
【０１１６】
<STEP4>
次に、従来のＦＰＧＡ合成ツールVivado （登録商標）を用いて、ＦＰＧＡ上に実現（ＦＰＧＡ合成２０４）して画像認識タスクの検証を行った。
【０１１７】
<STEP5>
検証後、基板２０５を完成させた。基板２０５には、雑音畳込み演算回路１００がハードウェア化されて実装されている。
【０１１８】
以上説明したように、本実施形態に係るニューラルネットワーク回路装置５０は、中間層が、雑音畳込み演算を実行する雑音畳込み演算回路１００を備え、雑音畳込み演算回路１００は、雑音（ノイズ）ｎｃを生成する雑音生成回路１１０と、１×１畳込みを実行するための入力値Ｘを受け取り、入力値Ｘに雑音生成回路１１０で生成された雑音ｎｃを加算する加算回路１２０と、重みＷを受け取り、雑音を乗せた加算回路１２０の雑音畳込み演算値と重みＷを乗算する乗算回路１３０と、を備える。
【０１１９】
雑音（ノイズ）ｎｃは、
期待値：Ｅ（ｎｃ）＝Ｅ（ΣＮｃεｉＷｉ’）＝０、かつ、
分散：Ｅ（ｎｃ２）＝Ｅ（ΣＮｃεｉＷｉ’）２＝２σ２δ’
となる雑音ｎｃを用いる場合、
比較例の畳込み演算回路３０による畳込み演算の出力ｙ’と、雑音畳込み演算回路１００による雑音畳込み演算による出力ｙ’とは、前記式（５）で示され、統計的に等価である。
【０１２０】
また、本実施形態に係るニューラルネットワーク処理方法では、中間層は、雑音畳込み演算を実行する雑音畳込み演算ステップを有し、雑音畳込み演算ステップでは、畳込みを行う入力値Ｘと、雑音を受け取り、入力値Ｘに雑音を乗せる演算ステップと、重みＷを受け取り、演算回路の雑音畳込み演算値と重みＷを乗算する乗算ステップと、を実行する。
【０１２１】
これにより、ＣＮＮにおいて必要となる膨大な数の畳込み計算の一部を、乱数に重みを乗せて加算（統計的なふるまいは雑音）することで代用する。その結果、畳込み計算の時間短縮、重みマトリクスを乱数発生器で代用することによるメモリの削減が可能となる。
【０１２２】
このように、雑音畳込み演算回路１００は、３×３重みの代わりに雑音を乗せて１×１畳込みを行う（図１４および図１５参照）。これにより、重みを最大で３×３分の１に削減し、計算量も３×３分の１に削減することができる。その結果、計算量とメモリ量を削減することができる。また、計算量とメモリ量を削減したにもかかわらず、認識精度の低下はない（図１９の表参照）。計算量とメモリ量を削減できるので、組込み機器へ適用することができる。
【０１２３】
本実施形態では、畳込み演算回数とパラメータ量（重みマトリクスを格納するメモリ量）を共に削減することができた。予備実験では、畳込み演算と同等の認識精度を達成できている。また、雑音畳込み演算回路１００は、比較例の畳込み演算回路３０と比較して、演算時間を約４０％削減することに成功している。雑音という回路にとって邪魔な成分を畳込み演算に応用した点に特徴がある。
【０１２４】
本実施形態では、統計的な解析により、雑音畳込み演算回路１００の構成および作用効果を明らかにした。上述したように、本発明は、理論的な解析から、雑音畳込み層の入力統計的に偏りがない仮定を満たすときのみ成立する（図１６参照）。したがって、本実施形態に係るニューラルネットワーク回路装置５０は、中間層において、少なくとも第１層が通常の畳込み層（既存の畳込み層）で構成される。すなわち、本実施形態に係るニューラルネットワーク回路装置５０は、通常の畳込み層と雑音畳込み層との組み合わせが必須となる。
【０１２５】
かかる観点から、本実施形態のニューラルネットワーク回路装置５０は、中間層が、ｎ層を有し、ｋ層において、畳込み演算を実行する比較例の畳込み演算回路３０と、（ｎ−ｋ）層において、雑音畳込み演算を実行する雑音畳込み演算回路１００と、を備える。
【０１２６】
また、本実施形態に係るニューラルネットワーク処理方法では、中間層は、ｎ（ｎは任意の自然数）層を有し、ｋ（ｋは、ｎ−ｋを満たす自然数）層において、畳込み演算を実行する畳込み演算ステップと、（ｎ−ｋ）層において、雑音畳込み演算を実行する雑音畳込み演算ステップと、を有し、雑音畳込み演算ステップでは、畳込みを行う入力値Ｘと、雑音を受け取り、入力値Ｘに雑音を乗せる演算ステップと、重みＷを受け取り、演算回路の雑音畳込み演算値と重みＷを乗算する乗算ステップと、を実行する。
【０１２７】
これにより、図１９の表に示すように、１３層のＣＮＮ（図１８参照）において、ｋ層を既存ＣＮＮ（（図２６〜図２０に示す比較例の畳込み演算回路３０）、残りを雑音畳込み演算回路１００（図２，図５〜図１３参照）で実行した場合に、ｋ＝６以上で全て既存ＣＮＮの場合と比べて認識精度を落とさずに重みのメモリ（回路規模）を削減することができている。特に、ｋ＝６の場合には、図１９の表に示すように、計算時間が約１／２になっている。
以上のように、認識精度をほとんど落とすことなく回路と計算時間の削減が可能となることが確認できた。
【０１２８】
本発明は上記の実施形態例に限定されるものではなく、特許請求の範囲に記載した本発明の要旨を逸脱しない限りにおいて、他の変形例、応用例を含む。
例えば、乗算回路としての論理ゲートに代えて、ＬＵＴ（Look-Up Table）を用いてもよい。ＬＵＴは、ＦＰＧＡの基本構成要素であり、ＦＰＧＡ合成の際の親和性が高く、ＦＰＧＡによる実装が容易である。
【０１２９】
また、図１８および図１９に示す畳込みＣＮＮ層数ｋや、既存ＣＮＮと雑音畳込みＣＮＮの組み合わせ方法、組み合わせ順序、組み合わせに伴う各パラメータはどのようなものでもよい。
【０１３０】
また、上記した実施形態例は本発明をわかりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態例の構成の一部を他の実施形態例の構成に置き換えることが可能であり、また、ある実施形態例の構成に他の実施形態例の構成を加えることも可能である。また、実施形態例は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形例は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【０１３１】
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上述文書中や図面中に示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【０１３２】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部または全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行するためのソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Solid State Drive）等の記録装置、または、ＩＣ（Integrated Circuit）カード、ＳＤ（Secure Digital）カード、光ディスク等の記録媒体に保持することができる。
また、上記実施の形態では、装置は、ニューラルネットワーク回路装置という名称を用いたが、これは説明の便宜上であり、名称はディープニューラルネットワーク回路、ニューラルネットワーク装置、パーセプトロン等であってもよい。また、方法およびプログラムは、ニューラルネットワーク処理方法という名称を用いたが、ニューラルネットワーク演算方法、ニューラルネットプログラム等であってもよい。
【符号の説明】
【０１３３】
１  ディープニューラルネットワーク
２  ニューラルネットワーク回路
１１  入力層
１２  隠れ層（中間層）
１３  出力層
３０  比較例の畳込み演算回路（畳込み演算回路手段）
５０  ニューラルネットワーク回路
６０  ＣＰＵ
７０  オフチップメモリ
８０  システムバス
１００  雑音畳込み演算回路（雑音畳込み演算回路手段）
１１０  雑音生成回路
１２０  加算回路（演算回路，演算手段）
１３０  乗算回路（乗算手段）
１３１  重みメモリ
１４０  加算回路
１５０  活性化関数回路
ｎｃ  雑音（ノイズ）
Ｘ  入力値
Ｗ  重み
【図１】
2020119462.tif 000013
【図２】
2020119462.tif 000014
【図３】
2020119462.tif 000015
【図４】
2020119462.tif 000016
【図５】
2020119462.tif 000017
【図６】
2020119462.tif 000018
【図７】
2020119462.tif 000019
【図８】
2020119462.tif 000020
【図９】
2020119462.tif 000021
【図１０】
2020119462.tif 000022
【図１１】
2020119462.tif 000023
【図１２】
2020119462.tif 000024
【図１３】
2020119462.tif 000025
【図１４】
2020119462.tif 000026
【図１５】
2020119462.tif 000027
【図１６】
2020119462.tif 000028
【図１７】
2020119462.tif 000029
【図１８】
2020119462.tif 000030
【図１９】
2020119462.tif 000031
【図２０】
2020119462.tif 000032
【図２１】
2020119462.tif 000033
【図２２】
2020119462.tif 000034
【図２３】
2020119462.tif 000035
【図２４】
2020119462.tif 000036
【図２５】
2020119462.tif 000037
【図２６】
2020119462.tif 000038
【図２７】
2020119462.tif 000039
【図２８】
2020119462.tif 000040
【図２９】
2020119462.tif 000041
【図３０】
2020119462.tif 000042