(57)【特許請求の範囲】
【請求項１】
テンソルデータの入力を受け付ける受付部と、
前記テンソルデータに窓を設定する設定部と、
前記窓内における前記テンソルデータの座標毎に、当該座標における画素値と１以上の閾値とを比較し、比較結果に応じた重み値を選択する選択部と、
前記座標毎に選択された前記重み値を累積加算して、累積加算値を得る加算部と、
前記累積加算値に基づく値を出力する出力部と、
を備える演算装置。
【請求項２】
前記窓内の座標毎に、２以上の重み値を対応付けて記憶する記憶部を更に備え、
前記選択部は、前記窓内における前記テンソルデータの座標毎に、当該テンソルデータの座標と相対する前記窓内の座標に対応付けられた２以上の重み値の中から、比較結果に応じた重み値を選択する請求項１に記載の演算装置。
【請求項３】
前記２以上の重み値は、０を含む請求項２に記載の演算装置。
【請求項４】
前記加算部は、前記座標毎に選択された前記重み値のうち値が０以外の重み値を累積加算する請求項３に記載の演算装置。
【請求項５】
前記選択部は、前記テンソルデータの座標における画素値と１以上の閾値との大小関係を比較する請求項１に記載の演算装置。
【請求項６】
前記累積加算値を写像する写像部を更に備え、
前記出力部は、前記累積加算値の写像値を出力する請求項１に記載の演算装置。
【請求項７】
前記テンソルデータの画素値は、離散値であり、
前記選択部は、前記テンソルデータの座標における画素値と１以上の閾値とが一致するか否かを比較する請求項１に記載の演算装置。
【請求項８】
前記離散値は、２値である請求項７に記載の演算装置。
【請求項９】
前記累積加算値を離散値に写像する写像部を更に備え、
前記出力部は、前記累積加算値の写像値を出力する請求項７に記載の演算装置。
【請求項１０】
前記重み値及び前記累積加算値は、ベクトルである請求項１に記載の演算装置。
【請求項１１】
前記設定部は、前記テンソルデータの全範囲に前記窓を設定する請求項１に記載の演算装置。
【請求項１２】
コンピュータが、テンソルデータの入力を受け付ける受付ステップと、
前記コンピュータが、前記テンソルデータに窓を設定する設定ステップと、
前記コンピュータが、前記窓内における前記テンソルデータの座標毎に、当該座標における画素値と１以上の閾値とを比較し、比較結果に応じた重み値を選択する選択ステップと、
前記コンピュータが、前記座標毎に選択された前記重み値を累積加算して、累積加算値を得る加算ステップと、
前記コンピュータが、前記累積加算値に基づく値を出力する出力ステップと、
を含む演算方法。 
【請求項１３】
テンソルデータの入力を受け付ける受付ステップと、
前記テンソルデータに窓を設定する設定ステップと、
前記窓内における前記テンソルデータの座標毎に、当該座標における画素値と１以上の閾値とを比較し、比較結果に応じた重み値を選択する選択ステップと、
前記座標毎に選択された前記重み値を累積加算して、累積加算値を得る加算ステップと、
前記累積加算値に基づく値を出力する出力ステップと、
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、演算装置、方法及びプログラムに関する。
【背景技術】
【０００２】
近年、ニューラルネットワークと呼ばれる数学モデルが画像認識や音声認識などのパターン認識に応用されている。ニューラルネットワークは、複数の演算層で構成されており、認識対象のパターンが入力されると、当該複数の演算層による繰り返し演算を行い、検出、識別、又はラベリングなどのパターン認識結果を出力する。
【０００３】
ニューラルネットワークを構成する演算層には、主に、コンボリューション層や全結合層と呼ばれる演算層が用いられる。コンボリューション層で行われる演算は、例えば、数式（１）で表される。
【０００４】
【数１】
0006567381.tif 000002
【０００５】
ここで、ｘは、コンボリューション層に入力されたテンソルデータを示し、（Ｏｘ，Ｏｙ）は、当該テンソルデータに設定されたフィルタ窓の原点が位置する当該テンソルデータの座標を示し、Ｏｗは、当該フィルタ窓の幅を示し、Ｏｈは、当該フィルタ窓の高さを示し、ｘ（Ｏｘ＋ｉ，Ｏｙ＋ｊ）は、当該フィルタ窓内における当該テンソルデータの位置（Ｏｘ＋ｉ，Ｏｙ＋ｊ）の値を示す。ｗ（ｉ，ｊ）は、フィルタ窓内の位置（ｉ，ｊ）における重み値を示し、ｂは、バイアスを示す。ｆ（）は非線形関数を表し、一般的にｓｉｇｍｏｉｄ関数やｔａｎｈ関数などが用いられる。ｙ（Ｏｘ，Ｏｙ）は、コンボリューション層から出力されるテンソルデータの出力値を示す。ここで、テンソルデータとは多次元の配列として表現されるものである。
【０００６】
なお、数式（１）において、テンソルデータの範囲と、設定されるフィルタ窓の範囲とが一致する場合、つまりテンソルデータのすべての要素がちょうどフィルタ窓に内包される場合、全結合層で行われる演算を表す。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特許第５３７６９２０号公報
【非特許文献】
【０００８】
【非特許文献１】岡谷貴之，齋藤真樹，“ディープラーニング，”研究報告コンピュータビジョンとイメージメディア（ＣＶＩＭ），２０１３−ＣＶＩＭ−１８５（１８），１−１７（２０１３−０１−１６）
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、上述したような従来技術では、コンボリューション層や全結合層で行われる演算に、重み値とテンソルデータの位置における値との乗算が発生するため、演算量が増大してしまう。
【００１０】
本発明が解決しようとする課題は、コンボリューション層や全結合層で行われる演算の演算量を抑えることができる演算装置、方法及びプログラムを提供することである。
【課題を解決するための手段】
【００１１】
実施形態の演算装置は、受付部と、設定部と、選択部と、加算部と、出力部と、を備える。受付部は、テンソルデータの入力を受け付ける。設定部は、前記テンソルデータに窓を設定する。選択部は、前記窓内における前記テンソルデータの座標毎に、当該座標における画素値と１以上の閾値とを比較し、比較結果に応じた重み値を選択する。加算部は、前記座標毎に選択された前記重み値を累積加算して、累積加算値を得る。出力部は、前記累積加算値に基づく値を出力する。
【図面の簡単な説明】
【００１２】
【図１】本実施形態の演算装置の例を示す構成図。
【図２】本実施形態のフィルタ窓が設定されたテンソルデータの例を示す図。
【図３】本実施形態の処理例を示すフローチャート。
【図４】応用例の車両の例を示す模式図。
【図５】応用例の車両の構成例を示す図。
【図６】応用例の認識部の詳細構成の例を示す図。
【図７】応用例の入力画像の例を示す図。
【図８】応用例の出力画像の例を示す図。
【発明を実施するための形態】
【００１３】
以下、添付図面を参照しながら、実施形態を詳細に説明する。
【００１４】
図１は、本実施形態の演算装置１０の一例を示す構成図である。図１に示すように、演算装置１０は、受付部１１と、設定部１３と、記憶部１５と、選択部１７と、加算部１９と、写像部２１と、出力部２３と、を備える。
【００１５】
受付部１１、設定部１３、選択部１７、加算部１９、写像部２１、及び出力部２３は、例えば、ＩＣ（Integrated  Circuit）などのハードウェアにより実現してもよいし、ＣＰＵ（Central  Processing  Unit）などの処理装置にプログラムを実行させること、即ち、ソフトウェアにより実現してもよいし、ソフトウェア及びハードウェアを併用して実現してもよい。
【００１６】
記憶部１５は、例えば、メモリ、ＨＤＤ（Hard  Disk  Drive）、ＳＳＤ（Solid  State  Drive）、光ディスク、ＲＯＭ（Read  Only  Memory）、及びＲＡＭ（Random  Access  Memory）などの磁気的、光学的、又は電気的に記憶可能な記憶装置により実現できる。
【００１７】
本実施形態の演算装置１０は、ニューラルネットワークを構成するコンボリューション層や全結合層で行われる演算を行うものであり、数式（２）に示す演算により、数式（１）に示す演算結果の近似値を求める。
【００１８】
【数２】
0006567381.tif 000003
【００１９】
ここで、ｘは、演算装置１０に入力されたテンソルデータを示し、（Ｏｘ，Ｏｙ）は、当該テンソルデータに設定されたフィルタ窓の原点が位置する当該テンソルデータの座標を示し、Ｏｗは、当該フィルタ窓の幅を示し、Ｏｈは、当該フィルタ窓の高さを示し、ｘ（Ｏｘ＋ｉ，Ｏｙ＋ｊ）は、当該フィルタ窓内における当該テンソルデータの位置（Ｏｘ＋ｉ，Ｏｙ＋ｊ）の画素値を示す。なお、テンソルデータとは、上述の通り、多次元の配列として表現されるものである。
【００２０】
ｓｅｌｅｃｔ（ｉ，ｊ，ｘ（Ｏｘ＋ｉ，Ｏｙ＋ｊ））は、フィルタ窓内の位置（ｉ，ｊ）における重み値を選択する関数であり、例えば、数式（３）に示す２つの重み値の中から重み値を選択する関数や数式（４）に示す３つの重み値の中から重み値を選択する関数などを利用できるが、これらに限定されるものではない。例えば、ｓｅｌｅｃｔ（）を４つ以上の重み値の中から重み値を選択する関数としてもよい。
【００２１】
【数３】
0006567381.tif 000004
【００２２】
【数４】
0006567381.tif 000005
【００２３】
数式（３）に示す関数は、変数ａの値（数式（２）のｘ（Ｏｘ＋ｉ，Ｏｙ＋ｊ）の値に相当）が閾値Ｔより大きければ、重み値ｗ（ｉ，ｊ）を選択し、変数ａの値が閾値Ｔ以下であれば、重み値０を選択する関数である。
【００２４】
また数式（４）に示す関数は、変数ａの値が閾値Ｔより大きければ、重み値ｗ（ｉ，ｊ，＋１）を選択し、変数ａの値が閾値−Ｔ以上かつ閾値Ｔ以下であれば、重み値０を選択し、変数ａの値が閾値−Ｔ未満であれば、重み値ｗ（ｉ，ｊ，−１）を選択する関数である。
【００２５】
数式（２）の説明に戻り、ｂは、バイアスを示す。ｆ（）は非線形関数を表し、一般的にｓｉｇｍｏｉｄ関数やｔａｎｈ関数などが用いられる。ｙ（Ｏｘ，Ｏｙ）は、演算装置１０から出力されるテンソルデータの出力値を示す。
【００２６】
なお、数式（２）において、テンソルデータの範囲と、設定されるフィルタ窓の範囲とが一致する場合、全結合層で行われる演算を表す。
【００２７】
また、数式（２）〜（４）では、表記を簡略化するため、入出力されるテンソルデータ及び選択される重み値が２次元配列である場合を示しており、以降の説明においても、言及がなければ、２次元配列を前提として説明するが、２次元配列である場合に限定されるものではない。入出力されるテンソルデータ及び選択される重み値が１次元配列や３次元以上の次元の配列である場合への拡張は容易であり一般性は失わないため、このような場合も当然本実施形態の範囲に含まれる。
【００２８】
以下、数式（２）〜（４）を参照しながら、受付部１１、設定部１３、記憶部１５、選択部１７、加算部１９、写像部２１、及び出力部２３について説明する。
【００２９】
受付部１１は、テンソルデータの入力を受け付ける。なお、受付部１１により受け付けられたテンソルデータは、数式（２）のｘに相当する。
【００３０】
例えば、演算装置１０が行うコンボリューション層や全結合層の演算が、ニューラルネットワークを構成する演算層の第１層目の演算に該当する場合、受付部１１は、テンソルデータとして、画像データの入力を受け付ける。例えば、画像データがＲＧＢのカラー画像であれば、テンソルデータは、３×画像の幅×画像の高さの大きさの３次元配列のデータとなる。
【００３１】
また例えば、演算装置１０が行うコンボリューション層や全結合層の演算が、ニューラルネットワークを構成する演算層の第ｎ（ｎは２以上の自然数）層目の演算に該当する場合、受付部１１は、テンソルデータとして、第ｎ−１層目の演算層から出力された特徴量マップの入力を受け付ける。例えば、第ｎ−１層目の演算層がコンボリューション層の特徴量マップであれば、テンソルデータは、特徴量マップの数×特徴量マップの幅×特徴量マップの高さの大きさの３次元配列のデータとなる。また例えば、第ｎ−１層目の演算層が全結合層の特徴量マップであれば、テンソルデータは、長さが特徴量マップの数の１次元配列のデータとなる。
【００３２】
設定部１３は、受付部１１により受け付けられたテンソルデータに窓（フィルタ窓）を設定する。図２は、本実施形態のフィルタ窓３２が設定されたテンソルデータ３１の一例を示す図である。図２に示すように、（Ｏｘ，Ｏｙ）は、テンソルデータ３１に設定されたフィルタ窓３２の原点が位置する当該テンソルデータの座標を示し、Ｏｗは、当該フィルタ窓３２の幅を示し、Ｏｈは、当該フィルタ窓３２の高さを示し、（Ｏｘ＋ｉ，Ｏｙ＋ｊ）は、当該フィルタ窓３２内における当該テンソルデータ３１の位置を示す。なお、図２に示す例では、フィルタ窓３２の原点は、左上となっているが、これに限定されるものではない。なお、全結合層の場合、設定部１３は、受付部１１により受け付けられたテンソルデータの全範囲に窓を設定する。
【００３３】
記憶部１５は、設定部１３により設定される窓内の座標毎に、２以上の重み値を対応付けて記憶する。例えば、数式（３）に示す関数が用いられる場合であれば、記憶部１５は、フィルタ窓内の座標（ｉ，ｊ）毎に、重み値ｗ（ｉ，ｊ）及び重み値０を対応付けて記憶する。また例えば、数式（４）に示す関数が用いられる場合であれば、記憶部１５は、フィルタ窓内の座標（ｉ，ｊ）毎に、重み値ｗ（ｉ，ｊ，＋１）、重み値０、及び重み値ｗ（ｉ，ｊ，−１）を対応付けて記憶する。
【００３４】
なお、記憶部１５は、フィルタ窓内の重み値の集合であるフィルタ重みを、（フィルタ窓の次元数＋１）の次元数の配列で記憶する。例えば、フィルタ窓の次元数が２で、数式（４）に示す関数が用いられる場合であれば、選択可能な重みの数は３つで１つは常に０なので、記憶部１５は、フィルタ重みをフィルタの幅×フィルタの高さ×２の大きさの３次元配列で記憶する。同様に、数式（３）に示す関数が用いられる場合であれば、選択可能な重みの数は２つで片方は常に０なので、記憶部１５は、フィルタ重みをフィルタの幅×フィルタの高さ×１の大きさの３次元配列（この場合、実質的には２次元配列）で記憶する。
【００３５】
なお、記憶部１５が記憶するフィルタ重みは、例えば、機械学習などの手段を用いて予め計算（学習）しておいたものを用いることができる。例えば、記憶部１５が記憶するフィルタ重みとして、数式（１）のコンボリューション層を含むニューラルネットワークを確率的勾配法（ＳＧＤ：Ｓｔｏｃｈａｓｔｉｃ  Ｇｒａｄｉｅｎｔ  Ｄｅｓｃｅｎｔ）などのニューラルネットワーク向けの一般的な手法で学習することにより得られるコンボリューションフィルタの重み値を用いることができる。また例えば、記憶部１５が記憶するフィルタ重みとして、数式（２）のコンボリューション層を含むニューラルネットワークを直接最適化することにより得られるコンボリューションフィルタの重み値を用いてもよい。但し、フィルタ重みの計算方法は、これらに限定されるものではない。
【００３６】
なお、フィルタ窓内の座標に対応付けられた２以上の重み値は、０を含むことが好ましい。つまり、フィルタ窓内の座標に対応付けられた２以上の重み値のいずれかは、０であることが好ましい。重み値が０である場合、後述の加算部１９での加算処理を省略できるためである。例えば、重み値の選択に数式（３）に示す関数を用いる場合、数式（２）のバイアスｂを用いて、重み値ｗ（ｉ，ｊ）を調整しておけば、演算装置１０の出力値であるｙ（Ｏｘ，Ｏｙ）の値を変えずに、重み値のいずれかを０に設定できる。
【００３７】
選択部１７は、設定部１３により設定された窓内におけるテンソルデータの座標毎に、当該座標における画素値と１以上の閾値とを比較し、比較結果に応じた重み値を選択する。具体的には、選択部１７は、設定部１３により設定された窓内におけるテンソルデータの座標毎に、記憶部１５において、当該テンソルデータの座標と相対する当該窓内の座標に対応付けられた２以上の重み値の中から、比較結果に応じた重み値を選択する。なお、選択部１７による重み値の選択は、例えば、数式（３）や（４）に示す関数により行われる。つまり、選択部１７は、テンソルデータの座標における画素値と１以上の閾値との大小関係を比較し、比較結果に応じた重み値を選択する。
【００３８】
例えば、テンソルデータの座標（Ｏｘ，Ｏｙ）における重み値を、数式（３）を用いて選択するのであれば、選択部１７は、画素値ｘ（Ｏｘ，Ｏｙ）と閾値Ｔとを比較し、閾値Ｔより大きければ、重み値ｗ（０，０）を選択し、閾値Ｔ以下であれば、重み値０を選択する。なお、テンソルデータの座標と相対する窓内の座標は、テンソルデータのｘ座標からＯｘ、ｙ座標からＯｙを減じることで求められる。このため、テンソルデータの座標（Ｏｘ，Ｏｙ）と相対する窓内の座標は、（０，０）となる。
【００３９】
加算部１９は、設定部１３により設定された窓内におけるテンソルデータの座標毎に選択部１７により選択された重み値を累積加算して、累積加算値を得る。なお、加算部１９の処理は、数式（２）のｆ（）内の右辺の処理（総和記号Σの処理）に相当する。
【００４０】
なお、前述の通り、重み値に０が含まれ、重み値０が選択部１７により選択された場合、ｓｅｌｅｃｔ（ｉ，ｊ，ｘ（Ｏｘ＋ｉ，Ｏｙ＋ｊ））の値も０であるため、加算処理を省略してもよい。つまり、加算部１９は、設定部１３により設定された窓内におけるテンソルデータの座標毎に選択部１７により選択された重み値のうち値が０以外の重み値を累積加算するようにしてもよい。
【００４１】
なお、加算部１９は、数式（２）のｆ（）内の左辺（バイアスｂ）については、累積加算する変数の初期値として設定しておくか、別途累積加算結果に加算する。
【００４２】
写像部２１は、加算部１９により加算された累積加算値を写像する。なお、写像部２１の処理は、数式（２）のｆ（）の処理に相当する。
【００４３】
出力部２３は、加算部１９により加算された累積加算値に基づく値を出力する。具体的には、出力部２３は、写像部２１により写像された累積加算値の写像値を出力する。
【００４４】
図３は、本実施形態の処理の手順の流れの一例を示すフローチャートである。なお、図３に示す例では、重み値を選択する関数として、数式（３）に示す関数が用いられる場合を例に取り説明するが、これに限定されるものではない。
【００４５】
まず、受付部１１は、テンソルデータｘの入力を受け付ける（ステップＳ１０１）。
【００４６】
続いて、設定部１３は、受付部１１により受け付けられたテンソルデータｘに、幅Ｏｗ、高さＯｈのフィルタ窓を設定する（ステップＳ１０３）。
【００４７】
続いて、加算部１９は、累積加算値ＡＣＣの初期値にバイアスｂの値を設定する（ステップＳ１０５）。
【００４８】
続いて、加算部１９は、変数ｉ及び変数ｊの値を０に初期化する（ステップＳ１０７）。
【００４９】
続いて、選択部１７は、テンソルデータｘの座標（Ｏｘ＋ｉ，Ｏｙ＋ｊ）における画素値ｘ（Ｏｘ＋ｉ，Ｏｙ＋ｊ）が閾値Ｔより大きいか否かを判定する（ステップＳ１０９）。
【００５０】
画素値ｘ（Ｏｘ＋ｉ，Ｏｙ＋ｊ）が閾値Ｔより大きい場合（ステップＳ１０９でＹｅｓ）、選択部１７は、重み値ｗ（ｉ，ｊ）を選択し、加算部１９は、累積加算値ＡＣＣに選択された重み値ｗ（ｉ，ｊ）を加算する（ステップＳ１１１）。
【００５１】
一方、画素値ｘ（Ｏｘ＋ｉ，Ｏｙ＋ｊ）が閾値Ｔ以下の場合（ステップＳ１０９でＮｏ）、選択部１７は、重み値０を選択するため、ステップＳ１１１の処理は行われない。
【００５２】
続いて、加算部１９は、変数ｉの値をインクリメントし（ステップＳ１１３）、変数ｉの値が幅Ｏｗ以下であれば（ステップＳ１１５でＮｏ）、ステップＳ１０９へ戻り、変数ｉの値が幅Ｏｗより大きければ（ステップＳ１１５でＹｅｓ）、ステップＳ１１７へ進む。
【００５３】
続いて、加算部１９は、変数ｊの値をインクリメントし（ステップＳ１１７）、変数ｊの値が高さＯｈ以下であれば（ステップＳ１１９でＮｏ）、ステップＳ１０９へ戻り、変数ｊの値が高さＯｈより大きければ（ステップＳ１１９でＹｅｓ）、ステップＳ１２１へ進む。
【００５４】
続いて、写像部２１は、加算部１９により加算された累積加算値ＡＣＣを非線形関数ｆ（）で写像し、出力値ｙ（Ｏｘ，Ｏｙ）を得る（ステップＳ１２１）。
【００５５】
続いて、出力部２３は、写像部２１により得られた出力値ｙ（Ｏｘ，Ｏｙ）を出力する（ステップＳ１２３）。
【００５６】
以上のように本実施形態によれば、ニューラルネットワークを構成するコンボリューション層や全結合層で行われる演算を、選択及び加算で近似でき、乗算が不要となるため、コンボリューション層や全結合層で行われる演算の演算量を抑えることができる。これは、乗算に対し、選択や加算は、演算規模が小さいためである。これにより、コンボリューション層や全結合層で行われる演算を実行する演算装置のコストも抑えることができる。
【００５７】
また本実施形態によれば、フィルタ窓内の座標に対応付けられた２以上の重み値のいずれかは０であるため、重み値が０の場合、ｓｅｌｅｃｔ（ｉ，ｊ，ｘ（Ｏｘ＋ｉ，Ｏｙ＋ｊ））の値も０であるため、加算処理を省略することができる。これにより、コンボリューション層や全結合層で行われる演算の演算量を更に抑えることができ、コンボリューション層や全結合層で行われる演算を実行する演算装置のコストも更に抑えることができる。
【００５８】
（変形例１）
上記実施形態では、テンソルデータの画素値が連続値である場合を想定して説明したが、変形例１では、テンソルデータの画素値が離散値である場合を想定して説明する。以下では、上記実施形態との相違点の説明を主に行い、上記実施形態と同様の機能を有する構成要素については、上記実施形態と同様の名称・符号を付し、その説明を省略する。
【００５９】
変形例１の演算装置１０が行うコンボリューション層や全結合層の演算は、ニューラルネットワークを構成する演算層の第ｎ（ｎは２以上の自然数）層目の演算に該当する。このため、受付部１１は、テンソルデータとして、第ｎ−１層目の演算層から出力された特徴量マップの入力を受け付ける。
【００６０】
変形例１では、テンソルデータ（特徴量マップ）の画素値が、２値｛＋１、−１｝の場合と、３値｛＋１、０、−１｝の場合と、について説明するが、これらに限定されるものではない。なお、２値や３値における値の取り方は、これらに限定されるものではなく、例えば、｛０、１｝などの２値でもよい。また、テンソルデータの画素値が、４値以上の場合への拡張は容易であり一般性は失わないため、このような場合も当然本実施形態の範囲に含まれる。
【００６１】
変形例１では、選択部１７は、テンソルデータの座標における画素値と１以上の閾値とが一致するか否かを比較し、比較結果に応じた重み値を選択する。選択部１７は、例えば、ｓｅｌｅｃｔ（）として、数式（５）に示す２つの重み値の中から重み値を選択する関数や数式（６）に示す３つの重み値の中から重み値を選択する関数などを利用できるが、これらに限定されるものではない。例えば、ｓｅｌｅｃｔ（）を４つ以上の重み値の中から重み値を選択する関数としてもよい。
【００６２】
【数５】
0006567381.tif 000006
【００６３】
【数６】
0006567381.tif 000007
【００６４】
数式（５）に示す関数は、変数ａの値が＋１であれば、重み値ｗ（ｉ，ｊ）を選択し、変数ａの値が−１であれば、重み値０を選択する関数である。
【００６５】
また数式（６）に示す関数は、変数ａの値が＋１であれば、重み値ｗ（ｉ，ｊ，＋１）を選択し、変数ａの値が０であれば、重み値０を選択し、変数ａの値が−１であれば、重み値ｗ（ｉ，ｊ，−１）を選択する関数である。
【００６６】
なお選択部１７は、値の一致を判断する代わりに、記憶部１５の重み値が記憶されている記憶領域の先頭アドレスに画素値を相対アドレスとして加算して得られたアドレスが指す値を参照するルックアップテーブル方式で重み値を選択してもよい。
【００６７】
変形例１では、写像部２１は、加算部１９により加算された累積加算値を離散値に写像する。具体的には、写像部２１は、加算部１９により加算された累積加算値を、非線形関数を用いて離散値に変換（写像）する。この場合、写像部２１は、数式（２）のｆ（）の代わりに、数式（７）に示す２値の中から出力値を選択する関数や数式（８）に示す３値の中から出力値を選択する関数などを利用できるが、これらに限定されるものではない。例えば、ｆ（）の代わりに、４値の中から出力値を選択する関数を用いてもよい。
【００６８】
【数７】
0006567381.tif 000008
【００６９】
【数８】
0006567381.tif 000009
【００７０】
数式（７）に示す関数は、変数ａ（累積加算値に相当）の値が０より大きければ、出力値を１に変換し、変数ａの値が０以下であれば、出力値を−１に変換する関数である。
【００７１】
また数式（８）に示す関数は、変数ａの値が閾値Ｔより大きければ、出力値を１に変換し、変数ａの値が閾値−Ｔ以上かつ閾値Ｔ以下であれば、出力値を０に変換し、変数ａの値が閾値−Ｔ未満であれば、出力値を−１に変換する関数である。
【００７２】
以上のように本実施形態によれば、入力されるテンソルデータ（特徴量マップ）の画素値が離散値であるため、テンソルデータを一時的に記憶するメモリ容量を抑えることができ、コンボリューション層や全結合層で行われる演算を実行する演算装置のコストを抑えることができる。例えば、テンソルデータの画素値が２値で表現される場合は、画素値を１ビットで記憶できるため、メモリ容量を抑えることができる。
【００７３】
（変形例２）
変形例２では、演算装置が出力するテンソルデータ（特徴量マップ）が複数のマップを持つ３次元配列である場合に、複数のマップの値を並列して演算する例について説明する。以下では、上記実施形態との相違点の説明を主に行い、上記実施形態と同様の機能を有する構成要素については、上記実施形態と同様の名称・符号を付し、その説明を省略する。
【００７４】
変形例２では、並列して演算するマップの数をＬとすると、数式（２）のバイアスｂ及び出力値ｙ（Ｏｘ，Ｏｙ）は、長さＬのベクトルとなる。変形例２では、記憶部１５は、Ｌ個のフィルタ重みに対応した重み値を記憶しており、Ｌ個のマップ出力に対応している。選択部１７は、Ｌ個のフィルタ重みに対応した重み値を選択する。変形例２では、数式（３）、（４）、（５）、（６）において、ｗは長さＬのベクトルである。変形例２では、累積加算値は長さＬのベクトルとなる。
【００７５】
変形例２によれば、１つの入力の画素値に対して、複数の出力の画素値を並列して演算できるため、比較の演算回数を削減することができる。これにより、コンボリューション層や全結合層で行われる演算の演算量を更に抑えることができ、コンボリューション層や全結合層で行われる演算を実行する演算装置のコストも更に抑えることができる。
【００７６】
（応用例）
応用例では、上記実施形態、変形例１、及び変形例２で説明した演算装置１０の応用例について説明する。上述したように、上記実施形態、変形例１、及び変形例２で説明した演算装置１０では、ニューラルネットワークを構成するコンボリューション層や全結合層で行われる演算の演算量を抑えることができる。
【００７７】
このため、上記演算装置１０をハードウェア（回路）として実現する場合、上述のように、乗算器を不要とすることができたり、メモリ容量を抑えることができたりするため、回路規模を削減することができる。特に上記演算装置１０では、処理を並列化する場合においても、乗算器を並列化する必要がないため、処理の高速化と回路規模の削減とを両立させることができる。
【００７８】
従って、上記演算装置１０を用いてニューラルネットワーク用の演算を行うＬＳＩ（Large-Scale  Integration）を実装すれば、従来よりも回路規模を削減したニューラルネットワーク用の演算を行うＬＳＩを実現でき、車載や家電などの組み込み機器向けに好適である。回路規模の削減は、組み込み機器におけるバッテリーの容量、販売価格、及び発熱量等の各種制約に対し、強みとなるためである。
【００７９】
以下では、応用例として、上記演算装置１０を適用したＬＳＩを車両に搭載し、当該ＬＳＩを用いて、パターン認識として歩行者検出を行う例について説明するが、応用例はこれに限定されるものではない。
【００８０】
図４は、応用例の車両１００の一例を示す模式図であり、図５は、応用例の車両１００の構成の一例を示す図である。図５に示すように、車両１００は、撮像部１１０と、認識部１２０と、表示部１３０と、を備える。
【００８１】
撮像部１１０は、例えば、カメラなどの画像センサにより実現できる。認識部１２０は、上記ＬＳＩにより実現できる。表示部１３０は、例えば、ディスプレイなどにより実現できる。
【００８２】
認識部１２０は、ニューラルネットワーク用の演算を行うＬＳＩである。図６は、応用例の認識部１２０の詳細構成の一例を示す図である。図６に示すように、認識部１２０は、第１演算層１２０−１〜第ｎ演算層１２０−ｎで構成されている。なお、第１演算層１２０−１〜第ｎ演算層１２０−ｎのうちコンボリューション層や全結合層に該当する演算層については、上記演算装置１０で説明した構成が採用される。
【００８３】
認識部１２０には、撮像部１１０により撮像された画像が入力される。例えば、図７に示すように、歩行者２０１、２０２が映っている画像が入力される。
【００８４】
認識部１２０は、撮像部１１０から画像（テンソルデータ）が入力されると、まず、第１演算層１２０−１は、入力された画像を用いて歩行者検出用の演算を行って特徴量マップを第２演算層１２０−２に出力し、次に、第２演算層１２０−２は、第１演算層１２０−１から出力された特徴量マップを用いて歩行者検出用の演算を行って特徴量マップを第３演算層１２０−３に出力し、最終的に、第ｎ演算層１２０−ｎが歩行者の検出結果を示す画像を出力し、表示部１３０に表示させる。例えば、図８に示すように、歩行者２０１、２０２、それぞれに、枠２１１、２１２が付された画像が出力される。
【００８５】
以上のように、本応用例によれば、ニューラルネットワーク用の演算を行う組み込み機器向けに好適なＬＳＩを実現できる。
【００８６】
なお、上記演算装置１０をハードウェア（回路）ではなくソフトウェアとしてニューラルネットワーク用の演算機能を実現してもよい。この場合、上記演算装置１０をソフトウェアとして適用したニューラルネットワーク用の演算機能は、例えば、インターネットサービス等で同時に大量のデータを処理するサーバなどに好適であり、ＣＰＵの使用時間や使用メモリの量を減らすことで、コストを抑えたシステムを実現できる。
【００８７】
（プログラム構成）
上記実施形態及び各変形例の演算装置１０及び応用例で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、ＣＤ−Ｒ、メモリカード、ＤＶＤ（Digital  Versatile  Disk）、フレキシブルディスク（ＦＤ）等のコンピュータで読み取り可能な記憶媒体に記憶されて提供される。
【００８８】
また、上記実施形態及び各変形例の演算装置１０及び応用例で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するようにしてもよい。また、上記実施形態及び各変形例の演算装置１０及び応用例で実行されるプログラムを、インターネット等のネットワーク経由で提供または配布するようにしてもよい。また、上記実施形態及び各変形例の演算装置１０及び応用例で実行されるプログラムを、ＲＯＭ等に予め組み込んで提供するようにしてもよい。
【００８９】
上記実施形態及び各変形例の演算装置１０及び応用例で実行されるプログラムは、上述した各部をコンピュータ上で実現させるためのモジュール構成となっている。実際のハードウェアとしては、ＣＰＵがＲＯＭやＨＤＤなどからプログラムをＲＡＭ上に読み出して実行することにより、上記各部がコンピュータ上で実現されるようになっている。
【００９０】
本発明は、上記実施形態及び変形例そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施形態及び変形例に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、上記実施形態及び変形例に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施形態及び変形例にわたる構成要素を適宜組み合わせても良い。
【００９１】
例えば、実施形態のフローチャートにおける各ステップを、その性質に反しない限り、実行順序を変更し、複数同時に実施し、あるいは実施毎に異なった順序で実施してもよい。
【００９２】
以上のように、上記実施形態、各変形例、及び応用例によれば、コンボリューション層や全結合層で行われる演算の演算量を抑えることができる。
【符号の説明】
【００９３】
１０  演算装置
１１  受付部
１３  設定部
１５  記憶部
１７  選択部
１９  加算部
２１  写像部
２３  出力部
１００  車両
１１０  撮像部
１２０  認識部
１３０  表示部
１２０−１〜１２０−ｎ  第１演算層〜第ｎ演算層
【図１】
0006567381.tif 000010
【図２】
0006567381.tif 000011
【図３】
0006567381.tif 000012
【図４】
0006567381.tif 000013
【図５】
0006567381.tif 000014
【図６】
0006567381.tif 000015
【図７】
0006567381.tif 000016
【図８】
0006567381.tif 000017