(57)【要約】【課題】ニューラルネットワークによる演算処理を実現する演算処理装置の全体の回路規模を小さくする。【解決手段】演算処理装置１００は、複数の処理層が階層的に接続されたニューラルネットワークによる演算を実行する演算処理装置であって、前階層から入力される入力データに対して畳み込み演算を実行することにより、１演算サイクルごとに、１回分のプーリング処理に必要な全ての畳み込み演算結果データのうち一部の畳み込み演算結果データを出力する畳み込み演算部１０１と、活性化処理の実行前に、畳み込み演算部により得られる畳み込み演算結果データに対してプーリング処理を実行するプーリング処理部１０２と、を備える。【選択図】図４
2015210709.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理層が階層的に接続されたニューラルネットワークによる演算を実行する演算処理装置（１００，２００）であって、
前階層から入力される入力データに対して畳み込み演算を実行することにより、１演算サイクルごとに、１回分のプーリング処理に必要な全ての畳み込み演算結果データのうち一部の畳み込み演算結果データを出力する畳み込み演算部（１０１，２０１，３０１，４０１）と、
活性化処理の実行前に、前記畳み込み演算部により得られる前記畳み込み演算結果データに対してプーリング処理を実行するプーリング処理部（１０２，２０２）と、
を備える演算処理装置。
【請求項２】
前記プーリング処理部（１０２）は、
前記畳み込み演算部による１演算サイクルにより得られる複数の前記畳み込み演算結果データのうち最も値が大きいデータを最大畳み込み演算結果データとして出力する第１比較器（１０４）と、
前記第１比較器による複数の演算サイクルにより得られる複数の前記最大畳み込み演算結果データのうち最も値が大きいデータをプーリング演算結果データとして出力する第２比較器（１０６）と、
を備える請求項１に記載の演算処理装置。
【請求項３】
前記プーリング処理部（２０２）は、
前記畳み込み演算部による１演算サイクルにより得られる複数の前記畳み込み演算結果データを加算した第１加算データを出力する第１加算器（２０１ａ）と、
前記第１加算器による複数の演算サイクルにより得られる複数の前記第１加算データを累積加算した累積加算データを出力する第２加算器（２０４）と、
前記第２加算器が出力する前記累積加算データを所定値により除算したデータをプーリング演算結果データとして出力する除算器（２０６）と、
を備える請求項１に記載の演算処理装置。
【請求項４】
前記畳み込み演算部は、複数の畳み込み演算ブロック（１０１Ａ，１０１Ｂ，２０１Ａ，２０１Ｂ）を備え、
異なる前記畳み込み演算ブロックが交互に配列されており、
複数の前記畳み込み演算ブロックは、前階層から入力される入力データを共用し、且つ、畳み込み演算に用いる重み係数を共用するように構成されている請求項１から３の何れか１項に記載の演算処理装置。
【請求項５】
前記畳み込み演算部は、
他の演算処理装置が備える前記畳み込み演算ブロックが出力するデータを入力する入力経路（３５０Ａ，３５０Ｂ）と、
自身が備える前記畳み込み演算ブロックが出力するデータと前記入力経路を介して入力されるデータとを加算する加算器（３５１Ａ，３５１Ｂ）と、
前記加算器が加算したデータを他の演算処理装置に出力する出力経路（３５２Ａ，３５２Ｂ）と、を備え、
前記加算器が加算したデータを前記畳み込み演算結果データとして出力する請求項４に記載の演算処理装置。
【請求項６】
前記畳み込み演算部は、畳み込み演算に用いる重み係数を記憶する複数の重み係数記憶部（１４０）を備え、これら重み係数記憶部は、前階層から入力データが入力される入力側から前記畳み込み演算結果データを出力する出力側に向かって複数段に配列されており、
最も入力側の前記重み係数記憶部に外部からデータを読み込ませる読み込み経路（４６０）と、
最も入力側の前記重み係数記憶部に入力されたデータを出力側の前記重み係数記憶部に転送する転送経路（４６１）と、
を備える請求項４または５に記載の演算処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置に関する。
【背景技術】
【０００２】
従来より、複数の処理層が階層的に接続されたニューラルネットワークによる演算を実行する演算処理装置が考えられている。特に画像認識を行う演算処理装置においては、いわゆる畳み込みニューラルネットワーク（ＣＮＮ：Convolutional Neural Network）が中核的な存在となっている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第５１８４８２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、従来の畳み込みニューラルネットワークでは、前段の階層により得られる異なる複数の演算結果データ、つまり特徴量の抽出結果データに対して畳み込み演算処理を実行し、活性化処理を実行し、プーリング処理を実行することで、より高次元の特徴量の抽出を行っている。そのため、１回分のプーリング処理に必要な全ての畳み込み演算結果データを１回の演算サイクルで得るために、必要な畳み込み演算結果データの数に応じた規模の畳み込み演算部が必要となる。また、１回分のプーリング処理に必要な全ての畳み込み演算結果データを１回の演算サイクルで活性化するために、必要な畳み込み演算結果データの数に応じた複数の活性化手段が必要となる。このような事情から、畳み込みニューラルネットワークによる演算処理を実現する演算処理装置は、その全体の回路規模が大きくなる傾向がある。
【０００５】
そこで、本発明は、ニューラルネットワークによる演算処理を実現する演算処理装置の全体の回路規模を小さくすることを目的とする。
【課題を解決するための手段】
【０００６】
本発明に係る演算処理装置よれば、畳み込み演算部は、前階層から入力される入力データに対して畳み込み演算を実行することにより、１演算サイクルごとに、１回分のプーリング処理に必要な全ての畳み込み演算結果データのうち一部の畳み込み演算結果データを出力する。プーリング処理部は、活性化処理の実行前に、畳み込み演算部により得られる畳み込み演算結果データに対してプーリング処理を実行する。
【０００７】
即ち、１演算サイクルごとに、１回分のプーリング処理に必要な全ての畳み込み演算結果データを出力する従来技術よりも畳み込み演算部が出力する畳み込み演算結果データの数を減らす構成とした。さらに、プーリング処理部により、活性化処理の実行前にプーリング処理による処理結果を得るように構成した。この構成によれば、畳み込み演算部の規模を従来よりも小さくすることができる。また、活性化処理の実行前にプーリング処理による処理結果が得られるので、複数のデータにそれぞれ活性化処理を施してからプーリング処理を実行する従来技術に比べ、活性化手段の数を少なくすることができる。これにより、ニューラルネットワークによる演算処理を実現する演算処理装置の全体の回路規模を小さくすることができる。
【０００８】
また、本発明に係る演算処理装置よれば、プーリング処理部は、第１比較器と第２比較器を備える。そして、第１比較器は、畳み込み演算部による１演算サイクルにより得られる複数の畳み込み演算結果データのうち最も値が大きいデータを最大畳み込み演算結果データとして出力する。第２比較器は、第１比較器による複数の演算サイクルにより得られる複数の最大畳み込み演算結果データのうち最も値が大きいデータをプーリング演算結果データとして出力する。
【０００９】
この構成によれば、演算処理装置の全体の回路規模を大きくしなくとも、第１比較器および第２比較器による比較処理により、活性化処理の実行前に最大プーリング処理に相当する処理結果を得ることができる。
【００１０】
また、本発明に係る演算処理装置よれば、プーリング処理部は、第１加算器、第２加算器、除算器を備える。そして、第１加算器は、畳み込み演算部による１演算サイクルにより得られる複数の畳み込み演算結果データを加算した第１加算データを出力する。第２加算器は、第１加算器による複数の演算サイクルにより得られる複数の第１加算データを累積加算した累積加算データを出力する。除算器は、第２加算器が出力する累積加算データを所定値により除算したデータをプーリング演算結果データとして出力する。
【００１１】
この構成によれば、演算処理装置の全体の回路規模を大きくしなくとも、第１加算器および第２加算器による加算処理と除算器による除算処理との組み合わせにより、活性化処理の実行前に平均プーリング処理に相当する処理結果を得ることができる。
【図面の簡単な説明】
【００１２】
【図１】畳み込みニューラルネットワークの構成例を概念的に示す図
【図２】演算処理装置による演算処理の流れを視覚的に示す図
【図３】特徴量抽出処理に用いられる一般的な演算および関数を示す図
【図４】第１実施形態に係る演算処理装置の構成例を概略的に示すブロック図
【図５】畳み込み演算部の構成例を概略的に示すブロック図
【図６】演算器の構成例を概略的に示すブロック図
【図７】演算処理装置によるパイプライン処理を示す図
【図８】演算処理装置による演算処理の流れを視覚的に示す図
【図９】第２実施形態に係る図４相当図
【図１０】図５相当図
【図１１】第３実施形態に係る図５相当図
【図１２】第４実施形態に係る図５相当図
【発明を実施するための形態】
【００１３】
以下、演算処理装置の複数の実施形態について図面を参照しながら説明する。なお、各実施形態において実質的に同一の要素には同一の符号を付し、説明を省略する。
（ニューラルネットワーク）
図１には、詳しくは後述する演算処理装置１００，２００に適用されるニューラルネットワーク、この場合、畳み込みニューラルネットワークの構成を概念的に示している。即ち、畳み込みニューラルネットワークＮは、複数の特徴量抽出処理層Ｎ１，Ｎ２，Ｎ３が階層的に接続された構成であり、入力データである画像データＤ１から所定の形状やパターンを認識する画像認識技術に応用されるものである。第１層目の特徴量抽出処理層Ｎ１では、演算処理装置は、入力される画像データＤ１を例えばラスタスキャンにより所定サイズごとに走査する。そして、走査したデータに対して特徴量抽出処理を施すことにより特徴量を抽出する。なお、第１層目の特徴量抽出処理層Ｎ１では、例えば水平方向に延びる線状の特徴量や斜め方向に延びる線状の特徴量などといった比較的シンプルな単独の特徴量を抽出する。
【００１４】
第２層目の特徴量抽出処理層Ｎ２では、演算処理装置は、前階層の特徴量抽出処理層Ｎ１から入力される入力データを例えばラスタスキャンにより所定サイズごとに走査する。そして、走査したデータに対して特徴量抽出処理を施すことにより特徴量を抽出する。なお、第２層目の特徴量抽出処理層Ｎ２では、第１層目の特徴量抽出処理層Ｎ１で抽出された複数の特徴量の空間的な位置関係などを考慮しながら統合させることで、より高次元の複合的な特徴量を抽出する。
【００１５】
第３層目の特徴量抽出処理層Ｎ３では、演算処理装置は、前階層の特徴量抽出処理層Ｎ２から入力される入力データを例えばラスタスキャンにより所定サイズごとに走査する。そして、走査したデータに対して特徴量抽出処理を施すことにより特徴量を抽出する。なお、第３層目の特徴量抽出処理層Ｎ３では、第２層目の特徴量抽出処理層Ｎ２で抽出された複数の特徴量の空間的な位置関係などを考慮しながら統合させることで、より高次元の複合的な特徴量を抽出する。このように、複数の特徴量抽出処理層による特徴量の抽出処理を繰り返すことで、演算処理装置は、画像データＤ１に含まれる検出対象物体の画像認識を行う。
【００１６】
また、図２には、演算処理装置による演算処理の流れを視覚的に示している。即ち、演算処理装置は、前階層の特徴量抽出処理層から入力される入力データＤｎを所定サイズ、この場合、図にてハッチングで示す５×５画素ごとに走査する。そして、演算処理装置は、走査したデータに対して、それぞれ畳み込み演算を行う。そして、演算処理装置は、畳み込み演算後のデータＣｎに対して、所定サイズ、この場合、２×２画素ごとにプーリング処理を行う。そして、演算処理装置は、プーリング処理後のデータＰｎを次の階層の特徴量抽出処理層に出力する。なお、後述する各実施形態においては、演算処理装置には、畳み込み演算処理を行いながらプーリング処理に相当する処理結果を得るための工夫が施されている。即ち、本発明に係る演算処理装置は、畳み込み演算処理とプーリング処理とを明確に区別しない構成となっている。
【００１７】
図３には、畳み込み演算処理に用いられる畳み込み関数、活性化処理に用いられる関数、プーリング処理に用いられる関数の一般的な例を示ししている。即ち、畳み込み関数ｙｊは、直前の層の出力ｙｉに、学習により得られる重み係数ｗｉｊを乗算した値の和に所定のバイアス値Ｂｊを加算する関数となっている。また、活性化処理には、周知のロジスティックジグモイド関数やＲｅＬＵ関数（Rectified Linear Units）などが用いられる。また、プーリング処理には、入力されるデータの最大値を出力する周知の最大プーリング関数や、入力されるデータの平均値を出力する周知の平均プーリング関数などが用いられる。
【００１８】
（第１実施形態）
図４に例示する演算処理装置１００は、畳み込み演算部１０１、プーリング処理部１０２、活性化処理部１０３などを備える。プーリング処理部１０２は、第１比較器１０４、記憶回路１０５、第２比較器１０６などを備える。畳み込み演算部１０１は、複数のシストリックアレイ１０１Ａ，１０１Ｂを備える。シストリックアレイ１０１Ａ，１０１Ｂは、畳み込み演算ブロックの一例である。畳み込み演算部１０１は、１演算サイクルごとに、１回分のプーリング処理に必要な全ての畳み込み演算結果データのうち一部の畳み込み演算結果データを出力する構成である。この場合、畳み込み演算部１０１は、１演算サイクルごとに、１回分のプーリング処理に必要な４つの畳み込み演算結果データのうち２つの畳み込み演算結果データを出力する構成である。よって、畳み込み演算部１０１は、２つのシストリックアレイ１０１Ａ，１０１Ｂを備えている。なお、畳み込み演算部１０１が１回の演算サイクルで出力する畳み込み演算結果データは、１回分のプーリング処理に必要な全ての畳み込み演算結果データ（画素）のうち垂直方向に並ぶ畳み込み演算結果データであってもよいし、垂直方向に並ぶ畳み込み演算結果データであってもよい。
【００１９】
第１比較器１０４は、畳み込み演算部１０１による１演算サイクルにより得られる複数、この場合、２つの畳み込み演算結果データのうち最も値が大きいデータを最大畳み込み演算結果データとして出力する。即ち、第１比較器１０４は、畳み込み演算部１０１による１演算サイクルにより得られる２つの畳み込み演算結果データの大小関係を比較する。そして、第１比較器１０４は、１回目の演算サイクルにより得られる２つの畳み込み演算結果データのうちより大きい値を有するデータを最大畳み込み演算結果データとして記憶回路１０５に出力する。記憶回路１０５は、第１比較器１０４が出力した最大畳み込み演算結果データを記憶する。また、第１比較器１０４は、続く２回目の演算サイクルにより得られる２つの畳み込み演算結果データのうちより大きい値を有するデータを最大畳み込み演算結果データとして第２比較器１０６に出力する。
【００２０】
第２比較器１０６は、第１比較器１０４による複数、この場合、２回の演算サイクルにより得られる複数、この場合、４つの最大畳み込み演算結果データのうち最も値が大きいデータをプーリング演算結果データとして出力する。即ち、第２比較器１０６は、第１比較器１０４から最大畳み込み演算結果データが入力されると、その最大畳み込み演算結果データと記憶回路１０５に記憶されている最大畳み込み演算結果データの大小関係を比較する。そして、第２比較器１０６は、両者のうちより大きい値の最大畳み込み演算結果データをプーリング演算結果データとして活性化処理部１０３に出力する。これにより、畳み込み演算部１０１による２回の演算サイクルにより得られる４つの畳み込み演算結果データのうち最も値が大きいデータがプーリング演算結果データとして出力される。即ち、活性化処理部１０３による活性化処理の実行前に、２×２画素の最大プーリング処理に相当する処理結果が得られるようになっている。
【００２１】
活性化処理部１０３は、第２比較器１０６から入力されたプーリング演算結果データに対して周知の活性化処理を実行する。なお、この場合、活性化処理部１０３による活性化処理は、ロジスティックジグモイド関数またはＲｅＬＵ関数の何れの関数を採用してもよい。また、活性化処理部１０３による活性化処理は、その他の非線形関数を採用してもよい。
【００２２】
次に、畳み込み演算部１０１の構成についてさらに詳細に説明する。図５に例示するように、シストリックアレイ１０１Ａ，１０１Ｂは、同一構成の複数の演算器１１０を相互に接続した構成である。この場合、演算器１１０は、前階層からデータが入力される入力側から畳み込み演算結果データを出力する出力側に向かって複数段、この場合、３段に配列されている。
【００２３】
シストリックアレイ１０１Ａは、それぞれ３段の演算器１１０からなる４本の演算ラインＬａ１〜Ｌａ４を構成している。また、シストリックアレイ１０１Ｂは、それぞれ３段の演算器１１０からなる４本の演算ラインＬｂ１〜Ｌｂ４を構成している。また、そして、シストリックアレイ１０１Ａ，１０１Ｂは、それぞれの演算ラインＬａ１〜Ｌａ４，Ｌｂ１〜Ｌｂ４において各段の演算器１１０による演算結果を演算サイクルごとに出力側の演算器に順次転送してくことで、畳み込み演算を並列的に行うようにした構成である。そして、シストリックアレイ１０１Ａは、各演算ラインＬａ１〜Ｌａ４により得られる演算結果データを加算器１２０により加算して畳み込み演算結果データとして出力する。また、シストリックアレイ１０１Ｂは、各演算ラインＬｂ１〜Ｌｂ４により得られる演算結果データを加算器１２０により加算して畳み込み演算結果データとして出力する。
【００２４】
また、畳み込み演算部１０１は、それぞれ異なる畳み込み演算結果データを出力するシストリックアレイ１０１Ａの演算ラインＬａ１〜Ｌａ４とシストリックアレイ１０１Ｂの演算ラインＬｂ１〜Ｌｂ４とを交互に配列した構成となっている。また、シストリックアレイ１０１Ａ，１０１Ｂの各段の演算器１１０には、前階層から入力される入力データがフリップフロップ回路１３０によりタイミングを調整されながら共通に入力される構成である。即ち、シストリックアレイ１０１Ａ，１０１Ｂは、前階層から入力される入力データを共用する構成であり、この場合、入力データのうち２〜４ライン目のデータが共通に入力される。また、シストリックアレイ１０１Ａ，１０１Ｂの各段の演算器１１０には、重み係数記憶部１４０から重み係数が共通に入力される構成である。即ち、シストリックアレイ１０１Ａ，１０１Ｂは、畳み込み演算に用いる重み係数を共用する構成である。なお、フリップフロップ回路１３０や重み係数記憶部１４０も、入力側から出力側に向かって各段の演算器１１０に対応して複数段に配列されている。
【００２５】
図６に例示するように、演算器１１０は、入力データと重み係数とを乗算する乗算器１１０ａ、乗算器１１０ａによる演算結果を加算する加算器１１０ｂを備える。そして、演算器１１０は、加算器１１０ｂによる演算結果データをフリップフロップ回路１１０ｃを介して出力する構成である。なお、演算器１１０は、この構成に限られるものではない。
【００２６】
図７に示すように、演算処理装置１００による各段階の演算処理は並列的に行われる。即ち、演算処理装置１００による１回目の演算サイクルにより、シストリックアレイ１０１Ａから畳み込み演算結果データＣ（１，１）が出力され、シストリックアレイ１０１Ｂから畳み込み演算結果データＣ（１，２）が出力される。そして、第１比較器１０４は、畳み込み演算結果データＣ（１，１），Ｃ（１，２）のうち最も値が大きいデータＭＡＸ（Ｃ（１，１），Ｃ（２，２））を最大畳み込み演算結果データＭ１１として出力する。
【００２７】
そして、演算処理装置１００による２回目の演算サイクルにより、その最大畳み込み演算結果データＭ１１が記憶回路１０５に記憶される。また、シストリックアレイ１０１Ａから畳み込み演算結果データＣ（２，１）が出力され、シストリックアレイ１０１Ｂから畳み込み演算結果データＣ（２，２）が出力される。そして、第１比較器１０４は、畳み込み演算結果データＣ（２，１），Ｃ（２，２）のうち最も値が大きいデータＭＡＸ（Ｃ（２，１），Ｃ（２，２））を最大畳み込み演算結果データＭ２１として出力する。そして、第２比較器１０６は、記憶回路１０５に記憶されている最大畳み込み演算結果データＭ１１と最大畳み込み演算結果データＭ２１との大小関係を比較し、そのうち最も値が大きいデータＭＡＸ（Ｍ１１，Ｍ２１）をプーリング演算結果データＰ１１として出力する。
【００２８】
そして、演算処理装置１００による３回目の演算サイクルにより、そのプーリング演算結果データＰ１１が活性化処理部１０３に出力されて活性化される。また、シストリックアレイ１０１Ａから畳み込み演算結果データＣ（３，１）が出力され、シストリックアレイ１０１Ｂから畳み込み演算結果データＣ（３，２）が出力される。そして、第１比較器１０４は、畳み込み演算結果データＣ（３，１），Ｃ（３，２）のうち最も値が大きいデータＭＡＸ（Ｃ（３，１），Ｃ（３，２））を最大畳み込み演算結果データＭ３１として出力する。
【００２９】
そして、演算処理装置１００による４回目の演算サイクルにより、その最大畳み込み演算結果データＭ３１が記憶回路１０５に記憶される。また、シストリックアレイ１０１Ａから畳み込み演算結果データＣ（４，１）が出力され、シストリックアレイ１０１Ｂから畳み込み演算結果データＣ（４，２）が出力される。そして、第１比較器１０４は、畳み込み演算結果データＣ（４，１），Ｃ（４，２）のうち最も値が大きいデータＭＡＸ（Ｃ（４，１），Ｃ（４，２））を最大畳み込み演算結果データＭ４１として出力する。そして、第２比較器１０６は、記憶回路１０５に記憶されている最大畳み込み演算結果データＭ３１と最大畳み込み演算結果データＭ４１との大小関係を比較し、そのうち最も値が大きいデータＭＡＸ（Ｍ３１，Ｍ４１）をプーリング演算結果データＰ３１として出力する。
【００３０】
そして、演算処理装置１００による５回目の演算サイクルにより、そのプーリング演算結果データＰ３１が活性化処理部１０３に出力され、活性化される。このように、演算処理装置１００は、畳み込み演算部１０１、第１比較器１０４、第２比較器１０６、活性化処理部１０３による一連の演算処理を並列的に、いわゆるパイプライン方式により進めていく。
【００３１】
図８に示すように、上述の演算処理によれば、例えば、４つの畳み込み演算結果データＣ（１，１），Ｃ（１，２），Ｃ（２，１），Ｃ（２，２）のうち最大の畳み込み演算結果データがプーリング演算結果データＰ１１として出力される。また、例えば、４つの畳み込み演算結果データＣ（３，１），Ｃ（３，２），Ｃ（４，１），Ｃ（４，２）のうち最大の畳み込み演算結果データがプーリング演算結果データＰ３１として出力される。このように、複数の畳み込み演算結果データ、この場合、２×２画素の畳み込み演算結果データから１つのプーリング演算結果データが得られる。
【００３２】
演算処理装置１００よれば、畳み込み演算部１０１は、前階層から入力される入力データに対して畳み込み演算を実行することにより、１演算サイクルごとに、１回分のプーリング処理に必要な全ての畳み込み演算結果データ、この場合、４つの畳み込み演算結果データのうち、垂直方向に並ぶ２つの畳み込み演算結果データを出力する。第１比較器１０４は、畳み込み演算部による１演算サイクルにより得られる２つの畳み込み演算結果データのうち最も値が大きいデータを最大畳み込み演算結果データとして出力する。第２比較器１０６は、第１比較器１０４による２回の演算サイクルにより得られる２つの最大畳み込み演算結果データのうち最も値が大きいデータをプーリング演算結果データとして出力する。
【００３３】
即ち、１回の演算サイクルにより１回分のプーリング処理に必要な全ての畳み込み演算結果データを出力する従来技術よりも畳み込み演算部１０１が１回の演算サイクルで出力する畳み込み演算結果データの数を減らすように構成した。さらに、第１比較器１０４および第２比較器１０６による比較処理により、活性化処理部１０３による活性化処理の実行前に最大プーリング処理に相当する処理結果を得るように構成した。この構成によれば、畳み込み演算部１０１の規模を従来よりも小さくすることができる。また、活性化処理部１０３は１つ備えれば十分であり、活性化処理部１０３の数を従来よりも少なくすることができる。これにより、畳み込みニューラルネットワークによる演算処理を実現する演算処理装置１００の全体の回路規模を小さくすることができる。
【００３４】
また、それぞれ異なる畳み込み演算結果データを出力するシストリックアレイ１０１Ａ，１０１Ｂを交互に配列し、シストリックアレイ１０１Ａ，１０１Ｂが、前階層から入力される入力データを共用し、また、畳み込み演算に用いる重み係数を共用するように構成した。これにより、シストリックアレイ１０１Ａ，１０１Ｂで重複する部分を共通化することができ、畳み込み演算部１０１の回路規模、さらには演算処理装置１００の全体の回路規模を小さくすることができる。
【００３５】
（第２実施形態）
図９に例示する演算処理装置２００は、畳み込み演算部２０１、プーリング処理部２０２、活性化処理部２０３などを備える。プーリング処理部２０２は、加算器２０４、記憶回路２０５、除算器２０６などを備える。畳み込み演算部２０１は、複数のシストリックアレイ２０１Ａ，２０１Ｂを備える。シストリックアレイ２０１Ａ，２０１Ｂは、畳み込み演算ブロックの一例である。畳み込み演算部２０１は、１演算サイクルごとに、１回分のプーリング処理に必要な全ての畳み込み演算結果データのうち一部の畳み込み演算結果データを出力する構成である。この場合、畳み込み演算部２０１は、１演算サイクルごとに、１回分のプーリング処理に必要な４つの畳み込み演算結果データのうち２つの畳み込み演算結果データを生成し、それら畳み込み演算結果データを加算器２０１ａによって加算して出力する構成である。よって、畳み込み演算部２０１は、２つのシストリックアレイ２０１Ａ，２０１Ｂを備えている。そして、加算器２０１ａは、畳み込み演算部２０１による１演算サイクルにより得られる複数、この場合、２つの畳み込み演算結果データを加算した第１加算データを出力する。加算器２０１ａは、第１加算器の一例であり、畳み込み演算部２０１の内部に設けられている。また、この加算器２０１ａは、プーリング処理部２０２の一部を構成する。
【００３６】
加算器２０４は、加算器２０１ａによる複数の演算サイクルにより得られる複数の第１加算データを累積加算した累積加算データを出力する。即ち、加算器２０４は、加算器２０１ａから第１加算データが入力されると、その第１加算データと記憶回路２０５に記憶されている累積加算データとを加算して、新たな累積加算データを生成する。そして、加算器２０４は、新たに生成した累積加算データを記憶回路２０５に記憶する。加算器２０４は、第２加算器の一例であり、畳み込み演算部２０１の外部に設けられている。記憶回路２０５は、記憶している累積加算データを加算器２０４および除算器２０６に出力する。
【００３７】
除算器２０６は、加算器２０４が出力した累積加算データ、換言すれば、記憶回路２０５から入力される累積加算データを所定の除数Ｄにより除算したデータをプーリング演算結果データとして活性化処理部２０３に出力する。除数Ｄは、適宜変更して設定できるが、この場合、除数Ｄとして「４」が設定されている。これにより、記憶回路２０５から入力される累積加算データを「４」で除算したデータがプーリング演算結果データとして出力される。即ち、活性化処理部１０３による活性化処理の実行前に、４画素、つまり２×２画素の平均プーリング処理に相当する処理結果が得られるようになっている。なお、例えば、９画素、つまり３×３画素の平均プーリング処理に相当する処理結果を得たい場合には、除数Ｄとして「９」を設定する。つまり、ｎ×ｎ画素の平均プーリング処理に相当する処理結果を得たい場合には、除数Ｄとして「ｎ２」を設定する。
【００３８】
活性化処理部２０３は、除算器２０６から入力されたプーリング演算結果データに対して周知の活性化処理を実行する。なお、この場合、活性化処理部２０３による活性化処理は、ＲｅＬＵ関数を採用することが好ましい。
【００３９】
次に、畳み込み演算部２０１の構成についてさらに詳細に説明する。図１０に例示するように、畳み込み演算部２０１は、シストリックアレイ２０１Ａの各演算ラインＬａ１〜Ｌａ４により得られる畳み込み演算結果データとシストリックアレイ１０１Ｂの各演算ラインＬｂ１〜Ｌｂ４により得られる畳み込み演算結果データを加算器２０１ａにより加算して第１加算データを生成する構成である。そして、畳み込み演算部２０１は、その第１加算データを加算器２０４に出力する構成である。なお、演算器２１０、フリップフロップ回路２３０、重み係数記憶部２４０などの構成や配列は、演算器１１０、フリップフロップ回路１３０、重み係数記憶部１４０などの構成や配列と同様である。
【００４０】
演算処理装置２００によれば、畳み込み演算部２０１は、前階層から入力される入力データに対して畳み込み演算を実行することにより、１回分のプーリング処理に必要な全ての畳み込み演算結果データ、この場合、４つの畳み込み演算結果データのうち、垂直方向に並ぶ２つの畳み込み演算結果データを１演算サイクルごとに出力する。加算器２０１ａは、畳み込み演算部２０１による１演算サイクルにより得られる複数の畳み込み演算結果データを加算した第１加算データを出力する。加算器２０４は、加算器２０１ａによる複数の演算サイクルにより得られる複数の第１加算データを累積加算した累積加算データを出力する。除算器２０６は、加算器２０４が出力する累積加算データを所定値である除数Ｄにより除算したデータをプーリング演算結果データとして出力する。
【００４１】
即ち、１回の演算サイクルにより１回分のプーリング処理に必要な全ての畳み込み演算結果データを出力する従来技術よりも畳み込み演算部２０１が１回の演算サイクルで出力する畳み込み演算結果データの数を減らすように構成した。さらに、加算器２０１ａおよび加算器２０４による加算処理と除算器２０６による除算処理との組み合わせにより、活性化処理部２０３による活性化処理の実行前に平均プーリング処理に相当する処理結果を得るように構成した。この構成によれば、畳み込み演算部２０１の規模を従来よりも小さくすることができる。また、活性化処理部２０３は１つ備えれば十分であり、活性化処理部２０３の数を従来よりも少なくすることができる。これにより、畳み込みニューラルネットワークによる演算処理を実現する演算処理装置２００の全体の回路規模を小さくすることができる。
【００４２】
また、それぞれ異なる畳み込み演算結果データを出力するシストリックアレイ２０１Ａ，２０１Ｂを交互に配列し、シストリックアレイ２０１Ａ，２０１Ｂが、前階層から入力される入力データを共用し、また、畳み込み演算に用いる重み係数を共用するように構成した。これにより、シストリックアレイ２０１Ａ，２０１Ｂで重複する部分を共通化することができ、畳み込み演算部２０１の回路規模、さらには演算処理装置２００の全体の回路規模を小さくすることができる。
【００４３】
（第３実施形態）
図１１に例示する畳み込み演算部３０１は、上述した畳み込み演算部３０１に、さらに、入力経路３５０Ａ，３５０Ｂ、加算器３５１Ａ，３５１Ｂ、出力経路３５２Ａ，３５２Ｂを備えた構成である。入力経路３５０Ａは、図示しない他の演算処理装置が備えるシストリックアレイ３０１Ａが出力するデータを加算器３５１Ａに入力する経路である。入力経路３５０Ｂは、図示しない他の演算処理装置が備えるシストリックアレイ３０１Ｂが出力するデータを加算器３５１Ｂに入力する経路である。
【００４４】
加算器３５１Ａは、畳み込み演算部３０１自身が備えるシストリックアレイ３０１Ａが出力するデータと入力経路３５０Ａを介して入力されるデータとを加算する。加算器３５１Ａが加算したデータは、シストリックアレイ３０１Ａによる畳み込み演算結果データとしてプーリング処理部に出力される。加算器３５１Ｂは、畳み込み演算部３０１自身が備えるシストリックアレイ３０１Ｂが出力するデータと入力経路３５０Ｂを介して入力されるデータとを加算する。加算器３５１Ｂが加算したデータは、シストリックアレイ３０１Ｂによる畳み込み演算結果データとしてプーリング処理部に出力される。
【００４５】
出力経路３５２Ａは、加算器３５１Ａが加算したデータを図示しない他の演算処理装置が備える加算器３５１Ａに出力する経路である。出力経路３５２Ｂは、加算器３５１Ｂが加算したデータを図示しない他の演算処理装置が備える加算器３５１Ｂに出力する経路である。そして、畳み込み演算部３０１は、加算器３５１Ａが加算したデータおよび加算器３５１Ｂが加算したデータを畳み込み演算結果データとしてプーリング処理部に出力する。
【００４６】
この構成によれば、他の演算処理装置による畳み込み演算結果、つまり、特徴量の抽出結果も利用して特徴量の抽出処理を行うことができる。これにより、他の演算処理装置と連携しながら、より高次元の特徴量を抽出することができる。
【００４７】
（第４実施形態）
図１２に例示する畳み込み演算部４０１は、上述した畳み込み演算部１０１に、さらに、読み込み経路４６０、転送経路４６１を備えた構成である。読み込み経路４６０は、最も入力側の重み係数記憶部１４０に畳み込み演算部４０１の外部からデータを読み込ませるための経路である。なお、読み込み経路４６０を介して重み係数記憶部１４０に読み込ませるデータの供給源は、畳み込み演算部４０１の外部に存在するものであればよく、例えば、演算処理装置のチップ内あるいはチップ外に存在するメモリなどが考えられる。転送経路４６１は、最も入力側の重み係数記憶部１４０に入力されたデータを出力側の重み係数記憶部１４０に順次転送するための経路である。
【００４８】
重み係数記憶部１４０に記憶されている重み係数を編集する場合には、まず、編集用データを、読み込み経路４６０を介して最も入力側の重み係数記憶部１４０に読み込ませる。これにより、最も入力側の重み係数記憶部１４０に記憶されている重み係数を編集用データに基づいて編集することができる。また、最も入力側の重み係数記憶部１４０に読み込まれた編集用データを、転送経路４６１を介して出力側の重み係数記憶部１４０に順次転送する。これにより、出力側の重み係数記憶部１４０に記憶されている重み係数を編集用データに基づいて編集することができる。なお、編集としては、記憶されている重み係数の初期化や書き換えなどが考えられる。
【００４９】
編集用データを出力側の重み係数記憶部１４０に順次転送するタイミングは、畳み込み演算部４０１の演算サイクルに合わせるようにするとよい。これにより、畳み込み演算部４０１の演算サイクルと同期させながら重み係数を順次編集することができる。
【００５０】
また、入力側から出力側に並ぶ複数の重み係数記憶部１４０のうち特定の重み係数記憶部１４０に記憶されている重み係数のみを編集したい場合には、その重み係数記憶部１４０のアドレスを特定するための特定情報を編集用データに含ませるようにするとよい。そして、演算処理装置は、特定情報が特定する重み係数記憶部１４０に編集用データが転送されたときに、その重み係数記憶部１４０が記憶している重み係数を編集するようにするとよい。
【００５１】
（その他の実施形態）
なお、本発明は、上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で種々の実施形態に適用可能である。上述した複数の実施形態を組み合わせて実施してもよい。例えば、第３実施形態または第４実施形態に例示した構成を第２実施形態に適用してもよい。
【符号の説明】
【００５２】
図面中、１００，２００は演算処理装置、１０１，２０１，３０１，４０１は畳み込み演算部、１０２，２０２はプーリング処理部、１０４は第１比較器、１０６は第２比較器、２０１ａは加算器（第１加算器）、２０４は加算器（第２加算器）、２０６は除算器、１０１Ａ，１０１Ｂ，２０１Ａ，２０１Ｂはシストリックアレイ（畳み込み演算ブロック）、３５０Ａ，３５０Ｂは入力経路、３５１Ａ，３５１Ｂは加算器、３５２Ａ，３５２Ｂは出力経路、１４０は重み係数記憶部、４６０は読み込み経路、４６１は転送経路を示す。
【図１】
2015210709.tif 000003
【図２】
2015210709.tif 000004
【図３】
2015210709.tif 000005
【図４】
2015210709.tif 000006
【図５】
2015210709.tif 000007
【図６】
2015210709.tif 000008
【図７】
2015210709.tif 000009
【図８】
2015210709.tif 000010
【図９】
2015210709.tif 000011
【図１０】
2015210709.tif 000012
【図１１】
2015210709.tif 000013
【図１２】
2015210709.tif 000014