(57)【特許請求の範囲】
【請求項１】
ニューラルネットワークに与えられる値を記憶する第１メモリと、
前記ニューラルネットワークに与えられる値と、前記値より多くの情報量を含む二値信号とを互いに関連付けたテーブルを記憶する第２メモリと、
前記テーブルを参照して前記第１メモリに記憶された前記値に対応する二値信号を取得する二値信号取得部と、
前記二値信号取得部によって取得された前記二値信号に基づいて、前記ニューラルネットワークの演算を行うニューラルネットワーク演算部と、
を備え、
前記二値信号は、予め設定された前記ニューラルネットワークの演算精度に合わせた精度を有する
ことを特徴とするニューラルネットワーク処理装置。
【請求項２】
請求項１に記載のニューラルネットワーク処理装置において、
前記第２メモリは複数のテーブルを記憶し、
前記二値信号取得部は、前記複数のテーブルのうちから選択された一のテーブルを参照して、前記第１メモリに記憶された前記値に対応する二値信号を取得する
ことを特徴とするニューラルネットワーク処理装置。
【請求項３】
請求項２に記載のニューラルネットワーク処理装置において、
前記第１メモリに記憶された前記値に応じて前記複数のテーブルのうちから、予め設定された前記精度に関する基準に基づいて前記一のテーブルを選択するテーブル選択部をさらに備え、
前記複数のテーブルのそれぞれに記憶されている二値信号は、互いに異なる前記精度を有する
ことを特徴とするニューラルネットワーク処理装置。
【請求項４】
請求項３に記載のニューラルネットワーク処理装置において、
前記第１メモリに記憶された前記値が特定の情報を示す値であるか否かを判定する判定部と、
前記判定部による判定結果に基づいて前記第１メモリに記憶された前記値のデータ型およびサイズを変換する変換部と、
をさらに備え、
前記複数のテーブルは、少なくとも前記ニューラルネットワークに与えられる値のデータ型およびサイズごとに設けられており、
前記テーブル選択部は、前記変換部によって変換された前記値のデータ型およびサイズに一致するテーブルを前記複数のテーブルのうちから選択し、
前記二値信号取得部は、前記テーブル選択部によって選択されたテーブルを参照して、前記変換部によって変換された前記値に対応する二値信号を取得する
ことを特徴とするニューラルネットワーク処理装置。
【請求項５】
請求項１から３のいずれか１項に記載のニューラルネットワーク処理装置において、
前記第１メモリが記憶する前記値のデータ型およびサイズを、前記第２メモリが記憶する前記テーブルのアドレス値のデータ型およびサイズに変換して出力する変換部をさらに備え、
前記二値信号取得部は、前記変換部が出力した値に対応する二値信号を取得する
ことを特徴とするニューラルネットワーク処理装置。
【請求項６】
請求項１から５のいずれか１項に記載のニューラルネットワーク処理装置において、
前記ニューラルネットワークは、少なくとも１層の中間層を有する畳み込みニューラルネットワークであり、
前記ニューラルネットワーク演算部は、前記二値信号取得部によって取得された前記二値信号に基づいて畳み込み演算を行う
ことを特徴とするニューラルネットワーク処理装置。
【請求項７】
請求項６に記載のニューラルネットワーク処理装置において、
前記ニューラルネットワーク演算部における前記畳み込み演算に用いる二値信号の重みを記憶する第３メモリをさらに備え、
前記第３メモリに記憶される重みは１ビットで表現される
ことを特徴とするニューラルネットワーク処理装置。
【請求項８】
請求項６または７に記載のニューラルネットワーク処理装置において、
前記ニューラルネットワーク演算部における畳み込み演算には、否定排他的論理和処理を含むことを特徴とするニューラルネットワーク処理装置。
【請求項９】
請求項１乃至８のいずれか１項に記載のニューラルネットワーク処理装置において、
前記ニューラルネットワークに与えられる値は予め処理を行なった画像データであって、
前記処理にはモノクロ変換、コントラスト調整、及び輝度調整の少なくとも一つが含まれることを特徴とするニューラルネットワーク処理装置。
【請求項１０】
請求項１乃至８のいずれか１項に記載のニューラルネットワーク処理装置において、
前記ニューラルネットワークに与えられる値は赤、緑、青のそれぞれが、符号なし８ビット整数型のピクセル値で表現される画像データであることを特徴とするニューラルネットワーク処理装置。
【請求項１１】
ニューラルネットワークに与えられる値を第１メモリに記憶する第１ステップと、
前記ニューラルネットワークに与えられる値と、前記値より多くの情報量を含む二値信号とを互いに関連付けたテーブルを第２メモリに記憶する第２ステップと、
前記テーブルを参照して前記第１メモリに記憶された前記値に対応する二値信号を取得する第３ステップと、
前記第３ステップで取得した前記二値信号に基づいて、前記ニューラルネットワークの演算を行う第４ステップと、
を備え、
前記二値信号は、予め設定された前記ニューラルネットワークの演算精度に合わせた精度を有する
ことを特徴とするニューラルネットワーク処理方法。
【請求項１２】
コンピュータに、
ニューラルネットワークに与えられる値を第１メモリに記憶する第１ステップと、
前記ニューラルネットワークに与えられる値と、前記値より多くの情報量を含む二値信号とを互いに関連付けたテーブルを第２メモリに記憶する第２ステップと、
前記テーブルを参照して前記第１メモリに記憶された前記値に対応する二値信号を取得する第３ステップと、
前記第３ステップで取得した前記二値信号に基づいて、前記ニューラルネットワークの演算を行う第４ステップと、
を実行させ、
前記二値信号は、予め設定された前記ニューラルネットワークの演算精度に合わせた精度を有する
ことを特徴とするニューラルネットワーク処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ニューラルネットワーク処理装置、ニューラルネットワーク処理方法、およびニューラルネットワーク処理プログラムに関する。
【背景技術】
【０００２】
近年、画像を複数のカテゴリに分類するためのディープニューラルネットワークとして、畳み込みニューラルネットワーク（Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ：ＣＮＮ）が注目されている。ＣＮＮは、ディープニューラルネットワークにおいて畳み込み層を有することを特徴とする。【０００３】
図１１は、一般的なＣＮＮの信号処理のフローを示す図である。ＣＮＮは、入力層、中間層、および出力層を有する（例えば、非特許文献１参照）。中間層においては、入力信号に重みを掛け合わせる畳み込み演算が行われている。さらに、中間層での畳み込み演算の結果に対して、ＲｅＬＵ（Ｒｅｃｔｉｆｉｅｄ  Ｌｉｎｅａｒ  Ｕｎｉｔｓ）が適用され、各中間層の出力が決定される。また、場合によってはプーリング処理が行われる。【０００４】
畳み込み演算を介して抽出された入力信号の特徴は、全結合層からなる分類器にかけられ、分類結果が出力層から出力される。このように、ＣＮＮなどのニューラルネットワークにおいては、畳み込み演算が繰り返し行われていることがその特徴の１つとして挙げられる。【０００５】
ここで、ＣＮＮに用いられる入力データの入力値や重みは、例えば、３２ビット浮動小数点形式などで表現され、小数点を含む場合があるが、従来のＣＮＮなどのニューラルネットワークの畳み込み演算においては、図１１の「入力信号」、「重み」、および「畳み込み演算」の各値に示すように、演算結果の桁数を確保した形での演算処理が行われている。【０００６】
しかし、従来のＣＮＮなどのニューラルネットワークをＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）やマイコンなどの組み込み用のハードウェアで実装する場合、計算リソースに制限があるため、桁数の多い多数の入力値に対する多数の演算処理による処理速度の低下が課題となっていた。【０００７】
このような課題に対して、従来から、ニューラルネットワークの入力信号を二値化したＣＮＮが提案されている（非特許文献２参照）。二値化されたニューラルネットワークにより、処理の高速化やメモリ使用量の削減が可能となる。
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】麻生英樹  他、「Ｄｅｅｐ  Ｌｅａｒｎｉｎｇ  深層学習」近代科学社、２０１５年１１月
【非特許文献２】Ｍｏｈａｍｍａｄ  Ｒａｓｔｅｇａｒｉ，Ｖｉｃｅｎｔｅ  Ｏｒｄｏｎｅｚ，Ｊｏｓｅｐｈ  Ｒｅｄｍｏｎ，ａｎｄ  Ａｌｉ  Ｆａｒｈａｄｉ．Ｘｎｏｒ−ｎｅｔ：Ｉｍａｇｅｎｅｔ  ｃｌａｓｓｉｆｉｃａｔｉｏｎ  ｕｓｉｎｇ  ｂｉｎａｒｙ  ｃｏｎｖｏｌｕｔｉｏｎａｌ  ｎｅｕｒａｌ  ｎｅｔｗｏｒｋｓ．Ｉｎ  Ｅｕｒｏｐｅａｎ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｃｏｍｐｕｔｅｒ  Ｖｉｓｉｏｎ，ｐａｇｅｓ  ５２５−５４２．Ｓｐｒｉｎｇｅｒ，２０１６．
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかし、従来の二値化した入力信号を用いるニューラルネットワークでは、特に、多層ニューラルネットワークの第一層において入力信号を直接二値化することによってネットワークの精度が劣化することが問題となっていた。【００１０】
本発明は、上述した課題を解決するためになされたものであり、二値化した入力信号を用いた場合であっても、ニューラルネットワークの精度の劣化を抑制することができるニューラルネットワーク処理技術を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決するために、本発明に係るニューラルネットワーク処理装置は、ニューラルネットワークに与えられる値を記憶する第１メモリと、前記ニューラルネットワークに与えられる値と、その値に対応する二値信号とを互いに関連付けたテーブルを記憶する第２メモリと、前記テーブルを参照して前記第１メモリに記憶された前記値に対応する二値信号を取得する二値信号取得部と、前記二値信号取得部によって取得された前記二値信号に基づいて、前記ニューラルネットワークの演算を行うニューラルネットワーク演算部とを備え、前記二値信号は、予め設定された前記ニューラルネットワークの演算精度に合わせた精度を有することを特徴とする。【００１２】
上述した課題を解決するために、本発明に係るニューラルネットワーク処理方法は、ニューラルネットワークに与えられる値を第１メモリに記憶する第１ステップと、前記ニューラルネットワークに与えられる値と、その値に対応する二値信号とを互いに関連付けたテーブルを第２メモリに記憶する第２ステップと、前記テーブルを参照して前記第１メモリに記憶された前記値に対応する二値信号を取得する第３ステップと、前記第３ステップで取得した前記二値信号に基づいて、前記ニューラルネットワークの演算を行う第４ステップと、を備え、前記二値信号は、予め設定された前記ニューラルネットワークの演算精度に合わせた精度を有することを特徴とする。【００１３】
上述した課題を解決するために、本発明に係るニューラルネットワーク処理プログラムは、コンピュータに、ニューラルネットワークに与えられる値を第１メモリに記憶する第１ステップと、前記ニューラルネットワークに与えられる値と、その値に対応する二値信号とを互いに関連付けたテーブルを第２メモリに記憶する第２ステップと、前記テーブルを参照して前記第１メモリに記憶された前記値に対応する二値信号を取得する第３ステップと、前記第３ステップで取得した前記二値信号に基づいて、前記ニューラルネットワークの演算を行う第４ステップと、を実行させ、前記二値信号は、予め設定された前記ニューラルネットワークの演算精度に合わせた精度を有することを特徴とする。
【発明の効果】
【００１４】
本発明によれば、ニューラルネットワークに与えられる値と、その値に対応する二値信号とを関連付けたテーブルを参照し、予め設定されたニューラルネットワークの演算精度に合わせた精度を有する二値信号を取得するので、二値化した入力信号を用いた場合であっても、ニューラルネットワークの精度の劣化を抑制することができる。
【図面の簡単な説明】
【００１５】
【図１】図１は、本発明の第１の実施の形態に係るＣＮＮ処理装置の機能を示すブロック図である。
【図２】図２は、第１の実施の形態に係るＣＮＮ処理装置のハードウェア構成を示すブロック図である。
【図３】図３は、第１の実施の形態に係るＣＮＮ処理方法のフローを説明するための図である。
【図４】図４は、第２の実施の形態に係るＣＮＮ処理装置の機能を示すブロック図である。
【図５】図５は、第２の実施の形態に係るＣＮＮ処理方法のフローを説明するための図である。
【図６】図６は、第３の実施の形態に係るＣＮＮ処理装置の機能を示すブロック図である。
【図７】図７は、第３の実施の形態に係るＣＮＮ処理方法のフローを説明するための図である。
【図８】図８は、第４の実施の形態に係るＣＮＮ処理装置の機能を示すブロック図である。
【図９】図９は、第４の実施の形態に係る判定処理を説明するための図である。
【図１０】図１０は、第４の実施の形態に係るＣＮＮ処理方法のフローを説明するための図である。
【図１１】図１１は、従来のＣＮＮの演算処理を説明するための図である。
【発明を実施するための形態】
【００１６】
以下、本発明の好適な実施の形態について、図１から図１０を参照して詳細に説明する。
［第１の実施の形態］
本発明に係るニューラルネットワーク処理装置は、ニューラルネットワークとしてＣＮＮを用いたＣＮＮ処理装置１である。
【００１７】
本実施の形態に係るＣＮＮ処理装置１は、ＣＮＮに与えられる値に対して二値信号を取得して、その二値信号に基づいて畳み込み演算を行う演算処理装置である。ＣＮＮ処理装置１は、さらに畳み込み演算の結果に対して活性化関数を適用してＣＮＮの中間層を構成する一層分の畳み込み層の出力を決定する。また、活性化関数の出力は必要に応じてプーリング処理される。こうして得られた畳み込み層の出力は、後続の畳み込み層の入力信号として用いられる。
【００１８】
なお、以下においては、ＣＮＮに与えられる「値」は、例えば、後述の画像データなどの「入力信号」であり、このような入力信号に対応する二値信号を取得する場合を例に挙げて説明する。
【００１９】
［ＣＮＮ処理装置の機能ブロック］
上述したＣＮＮ処理装置１は、入力バッファ（第１メモリ）１０、重みバッファ１１、記憶部（第２メモリ）１２、二値信号取得部１３、畳み込み演算部（ニューラルネットワーク演算部）１４、および出力バッファ１５を備える。
【００２０】
入力バッファ１０は、ＣＮＮに与えられる入力信号を記憶するメモリである。より詳細には、入力バッファ１０は、後述する主記憶装置１０３によって実現され、この入力バッファ１０には、例えば、外部から与えられた画像データなどが記憶される。入力バッファ１０に与えられる入力信号は、予め前処理を行った画像データであってもよい。前処理の例としては、モノクロ変換、コントラスト調整、および輝度調整などが挙げられる。また、入力信号は、ＣＮＮ処理装置１において予め設定されているＣＮＮモデルに応じて設定されたビット深度となるように縮小されていてもよい。
【００２１】
入力バッファ１０に与えられる入力信号の値としては、例えば、３２ビットや１６ビット精度の浮動小数点の配列で表現された小数点を含む値や、これらの値を予め設定されたビット数表現に削減した値が用いられる。予め設定されたビット数表現としては、例えば、符号付き、または符号なし１６ビットや８ビット整数型など任意の大きさを持つデータ型を用いることができる。
【００２２】
重みバッファ１１は、ＣＮＮの重みを記憶するメモリである。より詳細には、重みバッファ１１は、後述する主記憶装置１０３によって実現され、重みバッファ１１には、ＣＮＮ処理装置１の外部に設置されたサーバ（図示しない）や記憶部１２などに予め記憶されているＣＮＮの重みパラメータがロードされる。重みの値としては、例えば、予め二値化された１ビット表現の値が用いられる（例えば、非特許文献２参照）。
【００２３】
記憶部１２は、ＣＮＮに与えられる値と、その値に対応する二値信号とを関連付けたテーブル１２０を記憶する。二値信号は、予め設定されたＣＮＮの演算精度に合わせた精度を有する。例えば、この二値信号は、ＣＮＮに与えられる入力信号を、ＣＮＮが所望の精度を得るために必要とされる情報量が含まれるコードに置き換えた二値表現の信号である。したがって、ここでいう二値信号は、元の入力信号よりも多くの情報量を含む信号である。
【００２４】
テーブル１２０は、例えば、Ｌｏｏｋ  Ｕｐ  Ｔａｂｌｅ（ＬＵＴ）などのデータ構造を有し、入力信号の入力値のアドレスに格納されている二値信号を出力する。例えば、入力信号が符号なし８ビット整数型（ｕｉｎｔ８）で表現される場合、入力信号のとり得る範囲［０，２５５］の値のそれぞれに対応する二値信号がテーブル１２０に格納されている。
【００２５】
二値信号取得部１３は、テーブル１２０を参照して、入力バッファ１０に記憶されている入力信号に対応する二値信号を取得する。
【００２６】
畳み込み演算部１４は、二値信号取得部１３によって取得された二値信号に基づいて畳み込み演算を行う。より詳細には、畳み込み演算部１４は、画像データなどの入力信号に対応する二値信号と、重みバッファ１１から読み出した予め二値化された重みとに基づいて畳み込み演算を行う。
【００２７】
畳み込み演算部１４に入力される入力信号および重みはともに二値化された信号である。したがって、畳み込み演算部１４が実行する畳み込み演算は、乗算処理を必要とせず、否定排他的論理和（ＸＮＯＲ）、減算、およびビットシフトの各ビット演算処理によって畳み込み演算の結果を得ることができる。畳み込み演算部１４による演算処理の詳細は後述する。
【００２８】
出力バッファ１５は畳み込み演算部１４による演算結果を一時的に記憶するメモリである。
【００２９】
［ＣＮＮ処理装置のハードウェア構成］
次に、上述した機能を有するＣＮＮ処理装置１のハードウェア構成の例について図２のブロック図を用いて説明する。
【００３０】
図２に示すように、ＣＮＮ処理装置１は、例えば、バス１０１を介して接続されるプロセッサ１０２、主記憶装置１０３、通信インターフェース１０４、補助記憶装置１０５、入出力装置１０６を備えるコンピュータと、これらのハードウェア資源を制御するプログラムによって実現することができる。
【００３１】
主記憶装置１０３には、プロセッサ１０２が各種制御や演算を行うためのプログラムが予め格納されている。プロセッサ１０２と主記憶装置１０３とによって、図１に示した二値信号取得部１３および畳み込み演算部１４を含むＣＮＮ処理装置１の各機能が実現される。
【００３２】
主記憶装置１０３によって、図１で説明した入力バッファ１０、重みバッファ１１、および出力バッファ１５が実現される。
【００３３】
通信インターフェース１０４は、通信ネットワークＮＷを介して各種外部電子機器との通信を行うためのインターフェース回路である。通信インターフェース１０４を介して、ＣＮＮ処理装置１が用いる画像データなどの入力信号や、重みを、外部のサーバなどから受信してもよい。また、通信インターフェース１０４を介して、外部のサーバなどから記憶部１２にテーブル１２０を受信してもよい。
【００３４】
補助記憶装置１０５は、読み書き可能な記憶媒体と、その記憶媒体に対してプログラムやデータなどの各種情報を読み書きするための駆動装置とで構成されている。補助記憶装置１０５には、記憶媒体としてハードディスクやフラッシュメモリなどの半導体メモリを使用することができる。
【００３５】
補助記憶装置１０５は、外部から取得された入力信号や重みを記憶する記憶領域や、ＣＮＮ処理装置１が畳み込み演算などのＣＮＮの演算処理を行うためのプログラムを格納するプログラム格納領域を有する。補助記憶装置１０５によって、図１で説明した記憶部１２が実現される。さらには、例えば、上述したデータやプログラムやなどをバックアップするためのバックアップ領域などを有していてもよい。
【００３６】
入出力装置１０６は、外部機器からの信号を入力したり、外部機器へ信号を出力したりするＩ／Ｏ端子により構成される。入出力装置１０６を介して、図示しない表示装置などを備えて、ＣＮＮ処理装置１によって出力される演算結果などを表示してもよい。
【００３７】
ここで、補助記憶装置１０５のプログラム格納領域に格納されているプログラムは、本明細書で説明するＣＮＮ処理方法の順序に沿って時系列に処理が行われるプログラムであってもよく、並列に、あるいは呼び出しが行われたときなどの必要なタイミングで処理が行われるプログラムであってもよい。また、プログラムは、１つのコンピュータにより処理されるものでもよく、複数のコンピュータによって分散処理されるものであってもよい。
【００３８】
［ＣＮＮ処理方法］
次に、上述した構成を有するＣＮＮ処理装置１の動作について図３を参照して説明する。前提として、記憶部１２には予めテーブル１２０が記憶されているものとする。また、以下の説明において、重みについては対応する二値信号が予め記憶部１２に記憶されているものとする。
【００３９】
まず、入力バッファ１０は、ＣＮＮ処理装置１の外部に設置されたサーバなどから与えられた入力信号Ａを一時的に記憶する（ステップＳ１）。例えば、入力信号Ａは、符号なし８ビット整数型（ｕｉｎｔ８）で表され、値の範囲が［０，２５５］の信号である。
【００４０】
次に、二値信号取得部１３は、入力バッファ１０から入力信号を読み出し、テーブル１２０を参照し、入力信号に対応する二値信号を取得する（ステップＳ２）。
【００４１】
具体的には、図３に示すように、二値信号取得部１３は、例えば、入力信号「１３１」に対して、テーブル１２０を参照して、入力アドレス「１３１」に格納されている１２ビット幅の二値信号「１０１０１０１１１００１」を取得する。また、前述したように、テーブル１２０には、入力信号の値がとり得る範囲［０，２５５］の値に対応する二値信号が格納されている。また、入力信号に対応する二値信号「１０１０１０１１１００１」は、入力信号「１３１」よりも多くの情報量を含む信号である。
【００４２】
その後、記憶部１２に記憶されている重みの二値信号Ｕ’が重みバッファ１１に転送される（ステップＳ３）。より具体的には、重みＵ’は「０」または「１」の１ビットで表現される信号である。
【００４３】
次に、二値信号取得部１３によって取得された入力信号に対応する二値信号、および重みバッファ１１から読み出された重みの二値信号は、畳み込み演算部１４に入力され、畳み込み演算が行われる（ステップＳ４）。例えば、畳み込み演算部１４において、１２ビット幅の入力信号の二値信号Ａ’、および１ビットの重みの二値信号Ｕ’は否定排他的論理和（ＸＮＯＲ）回路に入力され、これらの二値信号Ａ’、Ｕ’の否定排他的論理和が演算される。ＸＮＯＲ回路の出力は、ビットカウント回路に入力される。
【００４４】
その後、ＸＮＯＲ回路の出力はビットカウンタ（ｐｏｐｕｌａｔｉｏｎ  ｃｏｕｎｔ：ｐｏｐｃｎｔ）によって有効ビット値「１」の数がカウントされる。
一方、１２ビット幅の重みの二値信号Ｕ’はインバータ（ＮＯＴ）において反転されて、その後、ビットカウンタ（ｐｏｐｃｎｔ）によって有効ビット値「１」の数がカウントされる。その後ビットカウント回路は、それぞれのビットカウンタからの出力の差分を計算して出力する。
【００４５】
次に、ビットシフト回路は、減算回路から出力された差分を上位ビット側にシフトしたシフト値を計算して出力する。その後、減算回路は、ビットシフト回路から出力されたシフト値を合算し、得られた合算結果を畳み込み演算の結果として出力する。
【００４６】
その後、畳み込み演算の結果に対して、ＲｅＬＵなどの活性化関数が適用され、畳み込み層の出力が決定される（ステップＳ５）。さらに、必要に応じてよく知られたプーリング処理が行われ（非特許文献１参照）、得られた出力信号は一層分の畳み込み層の演算結果として出力バッファ１５に記憶される（ステップＳ７）。なお、出力バッファ１５に記憶された出力信号は、後続の畳み込み層の入力信号として用いられる。
【００４７】
このように、ＣＮＮの畳み込み層において繰り返し畳み込み演算が行われて得られた畳み込み演算の出力は、ＣＮＮの特徴抽出部の出力として、後続の図示しない分類器を構成する全結合層に入力され、入力信号Ａの画像データなどの判別が行われる。
【００４８】
以上説明したように、第１の実施の形態に係るＣＮＮ処理装置１によれば、二値信号取得部１３がテーブル１２０を参照して、入力信号に対応する、予め設定されたＣＮＮの演算精度に一致した精度を有する二値信号を取得する。また、ＣＮＮ処理装置１は、取得された二値信号に基づいて畳み込み演算を行う。そのため、二値化した入力信号を用いた場合であっても、ＣＮＮの精度の劣化を抑制することができる。
【００４９】
［第２の実施の形態］
次に、本発明の第２の実施の形態について説明する。なお、以下の説明では、上述した第１の実施の形態と同じ構成については同一の符号を付し、その説明を省略する。
【００５０】
第１の実施の形態では、二値信号取得部１３は、入力バッファ１０から読み出した入力信号のデータ型、サイズおよび値の範囲がテーブル１２０のアドレス値と一致する場合について説明した。これに対し、第２の実施の形態では、入力バッファ１０に記憶されている入力信号が、例えば、比較的長い整数型や、小数点を含む値である場合に、入力信号を、テーブル１２０のアドレス値と同じデータ型、サイズおよび値の範囲の値に変換してから二値信号を取得する。以下、第１の実施の形態と異なる構成を中心に説明する。
【００５１】
図４に示すように、第２の実施の形態に係るＣＮＮ処理装置１Ａは、変換部１６をさらに備える。ＣＮＮ処理装置１Ａが備える他の構成は、第１の実施の形態と同様である。
【００５２】
変換部１６は、入力バッファ１０に記憶されている入力信号のデータ型およびサイズを、テーブル１２０のアドレス値のデータ型およびサイズに変換して出力する。
【００５３】
例えば、変換部１６は、入力信号が符号なし１６ビット整数型（値の範囲［０，６５５３５］）である場合に、テーブル１２０のアドレス値の符号なし８ビット整数型（値の範囲：［０，２５５］）に変換して出力する。
【００５４】
二値信号取得部１３は、変換部１６によって出力された値に対応する二値信号を取得する。
【００５５】
［ＣＮＮ処理方法］
次に、本実施の形態に係るＣＮＮ処理方法について図５を参照して説明する。
なお、前提として、記憶部１２には予めテーブル１２０が記憶されているものとする。また、以下の説明において、重みについては、対応する二値信号が予め記憶部１２に記憶されているものとする。
【００５６】
まず、入力バッファ１０は、ＣＮＮ処理装置１の外部に設置されたサーバなどから与えられた入力信号Ａを一時的に記憶する（ステップＳ１０）。例えば、入力信号Ａは、符号なし１６ビット整数型（ｕｉｎｔ１６）で表され、値の範囲［０，６５５３５］の信号である。
【００５７】
次に、変換部１６は、入力バッファ１０から入力信号Ａを読み出し、入力信号Ａのデータ型およびサイズを、テーブル１２０のアドレス値のデータ型およびサイズに変換した値を出力する（ステップＳ１１）。例えば、符号なし１６ビット整数型（ｕｉｎｔ１６）の入力信号Ａを符号なし８ビット整数型（ｕｉｎｔ８）の値に変換する。
【００５８】
次に、二値信号取得部１３は、テーブル１２０を参照し、変換部１６から出力された変換後の入力信号ａに対応する二値信号Ａ’をそれぞれ取得する（ステップＳ１２）。
【００５９】
その後、記憶部１２に記憶されている重みの二値信号Ｕ’が重みバッファ１１に転送される（ステップＳ１３）。より具体的には、重みＵ’は「０」または「１」の１ビットで表現される信号である。
【００６０】
次に、二値信号取得部１３によって取得された入力信号に対応する二値信号Ａ’、および重みバッファ１１から読み出された重みの二値信号Ｕ’は、畳み込み演算部１４に入力され、畳み込み演算が行われる（ステップＳ１４）。畳み込み演算部１４は、例えば、入力信号および重みの二値信号Ａ’、Ｕ’の否定排他的論理和（ＸＮＯＲ）を演算し、ビットカウント（ｐｏｐｃｎｔ）を行って畳み込み演算の演算結果を求めることができる。
【００６１】
その後、畳み込み演算の結果に対して、ＲｅＬＵなどの活性化関数が適用され、畳み込み層の出力が決定される（ステップＳ１５）。そして、必要に応じてよく知られたプーリング処理が行われ（非特許文献１参照）（ステップＳ１６）、得られた出力信号は一層分の畳み込み層の演算結果として出力バッファ１５に記憶される（ステップＳ１７）。なお、出力バッファ１５に記憶された出力信号は、後続の畳み込み層の入力信号として用いられる。
【００６２】
このように、ＣＮＮの畳み込み層において、繰り返し畳み込み演算が行われて得られた出力は、ＣＮＮの特徴抽出部の出力として、後続の図示しない分類器を構成する全結合層に入力され、入力信号Ａの画像データなどの判別が行われる。
【００６３】
以上説明したように、第２の実施の形態に係るＣＮＮ処理装置１Ａによれば、入力信号をテーブル１２０のアドレス値のデータ型およびサイズと同じデータ型およびサイズに変換してから対応する二値信号を取得する。そのため、ＣＮＮにおいて、比較的長い整数型や小数を含む入力信号が与えられた場合にも、より多くの情報量を含む二値信号を取得することができるので、ＣＮＮの精度の劣化を抑制することができる。
【００６４】
［第３の実施の形態］
次に、本発明の第３の実施の形態について説明する。なお、以下の説明では、上述した第１および第２の実施の形態と同じ構成については同一の符号を付し、その説明を省略する。
【００６５】
第１および第２の実施の形態では、記憶部１２は、１つのテーブル１２０を記憶する場合について説明した。これに対し、第３の実施の形態では、記憶部１２は、複数のテーブル１２０Ｂを備える。
【００６６】
図６に示すように、本実施の形態に係るＣＮＮ処理装置１Ｂは、記憶部１２が複数のテーブル１２０Ｂを有し、テーブル選択部１７をさらに備える。ＣＮＮ処理装置１Ｂの他の構成は第１の実施の形態と同様である。
【００６７】
複数のテーブル１２０Ｂのそれぞれには、入力信号がとり得る範囲の値のそれぞれに対応する二値信号が格納されている。また、複数のテーブル１２０Ｂに格納されている二値信号に含まれる情報量はテーブル１２０Ｂごとに異なる。例えば、入力信号が符号なし８ビット整数型である場合に、範囲［０，２５５］の各値、例えば値「１３１」に関連付けられている二値信号「１０１０１０１１１０」と別のテーブル１２０Ｂの値「１３１」に関連付けられている二値信号「１１０１１００１１１１０」とは、互いに異なる精度を有する二値信号である。
【００６８】
別の例を挙げると、値の範囲［０，２５５］のうち、あるテーブル１２０Ｂには、範囲［０，１００］における所定の情報量を含む二値信号が格納され、別のテーブル１２０Ｂには、範囲［１０１，２５５］における、範囲［０，１００］の二値信号とは異なる情報量を含んだ二値信号を格納することができる。
【００６９】
テーブル選択部１７は、例えば、入力バッファ１０に記憶された入力信号に応じて、複数のテーブル１２０Ｂのうちから、予め設定されたＣＮＮの演算精度に合わせた二値信号の精度に関する基準に基づいて、一のテーブル１２０Ｂを選択する。例えば、画像データの入力信号として、赤Ｒ、緑Ｇ、青Ｂのそれぞれが、符号なし８ビット整数型（値の範囲［０，２５５］）のピクセル値で表現される場合を考える。このような画像データの明度などを上げるような場合に、設定された入力信号の値の範囲に対して、予め適用するテーブルを定めておくことができる。
【００７０】
テーブル選択部１７によって選択されたテーブルの情報は、二値信号取得部１３に送出される。二値信号取得部１３は、テーブル選択部１７からのテーブル情報に応じたテーブル１２０Ｂを参照し、入力信号に対応する二値信号を取得する。
【００７１】
［ＣＮＮ処理方法］
次に、上述した構成を有するＣＮＮ処理装置１Ｂの動作について図７を参照して説明する。前提として、記憶部１２には予め複数のテーブル１２０Ｂが記憶されているものとする。また、以下の説明において、重みについては、対応する二値信号が予め記憶部１２に記憶されているものとする。
【００７２】
まず、入力バッファ１０は、ＣＮＮ処理装置１Ｂの外部に設置されたサーバなどから与えられた入力信号Ａを一時的に記憶する（ステップＳ２０）。例えば、入力信号Ａは、符号なし８ビット整数型（ｕｉｎｔ８）で表される信号である。
【００７３】
次に、テーブル選択部１７は、入力バッファ１０から入力信号Ａを読み出し、入力信号Ａの値に応じて、複数のテーブル１２０Ｂのうちから一のテーブル１２０Ｂを選択する（ステップＳ２１）。例えば、入力信号Ａの値が「４５」である場合には、テーブル選択部１７はＬＵＴ１を選択する。また、入力信号Ａの値が［１０１，２５５］の範囲の値である場合には、テーブル選択部１７は、ＬＵＴ２を選択する。ＬＵＴ１に格納されている二値信号と、ＬＵＴ２に格納されている二値信号とは、例えば、互いに異なるビット数に拡張された信号である。図７の例では、ＬＵＴ１には１０ビットの二値信号が格納され、ＬＵＴ２には１２ビットの二値信号が格納されている。
【００７４】
次に、二値信号取得部１３は、テーブル選択部１７によって選択されたテーブル１２０Ｂ（ＬＵＴ１またはＬＵＴ２）を参照し、入力信号Ａに対応する二値信号Ａ’を取得する（ステップＳ２２）。その後、記憶部１２に記憶されている重みの二値信号Ｕ’が重みバッファ１１に転送される（ステップＳ２３）。
【００７５】
次に、入力信号Ａの二値信号Ａ’および重みの二値信号Ｕ’は、畳み込み演算部１４に入力され、畳み込み演算が行われる（ステップＳ２４）。畳み込み演算部１４は、例えば、入力信号および重みの二値信号Ａ’、Ｕ’の否定排他的論理和（ＸＮＯＲ）を演算し、ビットカウント（ｐｏｐｃｎｔ）を行って畳み込み演算の演算結果を求めることができる。
【００７６】
次に、畳み込み演算の結果に対して、ＲｅＬＵなどの活性化関数が適用され、畳み込み層の出力が決定される（ステップＳ２５）。その後、必要に応じてよく知られたプーリング処理が行われ（非特許文献１参照）（ステップＳ２６）、得られた出力信号は一層分の畳み込み層の演算結果として出力バッファ１５に記憶される（ステップＳ２７）。なお、出力バッファ１５に記憶された出力信号は、後続の畳み込み層の入力信号として用いられる。
【００７７】
このように、ＣＮＮの畳み込み層で畳み込み演算が繰り返し行われて得られた出力は、ＣＮＮの特徴抽出部の出力として、後続の図示しない分類器を構成する全結合層に入力され、入力信号Ａの画像データなどの判別が行われる。
【００７８】
以上説明したように、第３の実施の形態に係るＣＮＮ処理装置１Ｂによれば、記憶部１２に複数のテーブル１２０Ｂが用意され、入力信号の値に応じてテーブルを選択することで、取得する二値信号に含まれる情報量を調整することができる。
【００７９】
［第４の実施の形態］
次に、本発明の第４の実施の形態について説明する。なお、以下の説明では、上述した第１から第３の実施の形態と同じ構成については同一の符号を付し、その説明を省略する。
【００８０】
第３の実施の形態では、ＣＮＮに与えられる入力信号の値に対して共通した基準に基づいて用意された複数のテーブル１２０Ｂのうちから、一のテーブル１２０Ｂを選択して二値信号を取得する場合について説明した。これに対して、第４の実施の形態では、ＣＮＮ処理装置１Ｃは入力信号が特定の信号であるか否かを判定する判定部１８をさらに備え、判定部１８の判定結果に応じて入力信号に適用するテーブルを選択する。以下、第１から第３の実施の形態と異なる構成を中心に説明する。
【００８１】
図８に示すように、ＣＮＮ処理装置１Ｃは、判定部１８をさらに備え、複数のテーブル１２０Ｃを有する記憶部１２を有する。ＣＮＮ処理装置１Ｃが備える他の機能構成は、第１から第３の実施の形態と同様である。
【００８２】
判定部１８は、入力バッファ１０に記憶された入力信号の値が特定の情報を示す値であるか否かを判定する。入力信号によっては、より重要度が高い入力信号の値が含まれていたり、他の入力信号の値に対してより情報量が多いような場合がある。例えば、入力信号が、赤Ｒ、緑Ｇ、青Ｂのピクセル値を示す信号であり、緑Ｇのピクセル値を他の色の値よりも強調させるような場合に、判定部１８は、入力信号に含まれる、例えば、緑Ｇのピクセル値を特定する。
【００８３】
複数のテーブル１２０Ｃは、少なくともＣＮＮに与えられる入力信号の値のデータ型およびサイズごとに設けられている。例えば、複数のテーブル１２０Ｃは、符号なし８ビット整数型の入力信号に対応する二値信号が格納されたテーブル、および符号なし６ビット整数型の入力信号に対応する二値信号が格納されたテーブルなどによって構成される。また、複数のテーブルに格納されている二値信号は互いに異なる情報量を有するように拡張された信号である。例えば、上記の符号なし８ビット整数型の入力信号に対応する二値信号は、符号なし６ビット整数型の入力信号に対応する二値信号と比較して、より多くの情報量を含むことができる。
【００８４】
変換部１６は、判定部１８による判定結果に基づいて、入力信号のデータ型およびサイズを変換する。例えば、図９に示すように、符号なし８ビット整数型の入力信号Ａ１、Ａ２、Ａ３のうち、入力信号Ａ２が特定の情報（例えば、緑Ｇのピクセル値）を示す信号である場合を考える。この場合、入力信号Ａ２以外の入力信号Ａ１、Ａ３については比較的重要度が低い、または情報量が少ないため、変換部１６は、入力信号Ａ１、Ａ３のデータ型およびサイズ（ｕｉｎｔ８）を符号なし６ビット整数型（ｕｉｎｔ６）に変換する。
【００８５】
テーブル選択部１７は、変換部１６によって変換された入力信号のデータ型およびサイズに一致するテーブルを複数のテーブル１２０Ｃから選択する。
【００８６】
［ＣＮＮ処理方法］
次に、上述した構成を有するＣＮＮ処理装置１Ｃの動作について、図９および図１０を参照して説明する。前提として、記憶部１２には予め複数のテーブル１２０Ｃが記憶されているものとする。また、以下の説明において、重みについては、対応する二値信号が予め記憶部１２に記憶されているものとする。
【００８７】
まず、入力バッファ１０は、ＣＮＮ処理装置１Ｂの外部に設置されたサーバなどから与えられた入力信号Ａを一時的に記憶する（ステップＳ３０）。入力信号Ａは、例えば、図９に示すような、符号なし８ビット整数型（ｕｉｎｔ８）で表される信号Ａ１、Ａ２、Ａ３である。
【００８８】
次に、判定部１８は、入力バッファ１０から入力信号Ａを読み出し、入力信号Ａが特定の情報を示す信号であるか否かを判定する（ステップＳ３１）。例えば、図９に示す例では、判定部１８は、入力信号Ａ１、Ａ２、Ａ３のうち、入力信号Ａ２が特定の情報を示す信号であると判定する。ここで、特定の情報とは、前述したように、入力信号において、より重要性の高い情報であることや、より情報量が多い信号であることを示す情報である。具体的には、ＲＧＢ成分からなる入力信号において緑Ｇの情報量が多い、またはより強調する場合などに、判定部１８の判定により、入力信号Ａ２が緑Ｇを示す情報であることが特定される。
【００８９】
その後、変換部１６は、判定部１８による判定結果に基づいて、入力信号Ａのデータ型およびサイズを変換する（ステップＳ３２）。より具体的には、図９に示すように、変換部１６は、特定の情報を示す入力信号Ａ２以外の入力信号Ａ１、Ａ３については、情報量が少ないまたは、重要度が比較的低いため、データ型およびサイズを符号なし８ビット整数型（ｕｉｎｔ８）から符号なし６ビット整数型（ｕｉｎｔ６）に変換する。なお、この例では、特定の情報を示す入力信号Ａ２については符号なし８ビット整数型のまま維持される。
【００９０】
その後、テーブル選択部１７は、変換部１６によって変換された入力信号Ａ’’のデータ型およびサイズに一致するテーブルを記憶部１２に記憶された複数のテーブル１２０Ｃから選択する（ステップＳ３３）。具体的には、テーブル選択部１７は、符号なし６ビット整数型（ｕｉｎｔ６）に変換された入力信号Ａ１’’、Ａ３’’については、ＬＵＴ３を選択し、符号なし８ビット整数型（ｕｉｎｔ８）のデータ型のままの信号Ａ２についてはＬＵＴ４を選択する。
【００９１】
次に、二値信号取得部１３は、テーブル選択部１７によって選択されたＬＵＴ３、ＬＵＴ４を参照し、各入力信号Ａ１’’、Ａ２、Ａ３’’に対応する二値信号Ａ’を取得する（ステップＳ３４）。図１０に示すように、ＬＵＴ３に格納されている符号なし６ビット整数型（ｕｉｎｔ６）の入力信号に対応する二値信号Ａ’は、１０ビットを有する。一方、ＬＵＴ４に格納されている符号なし８ビット整数型（ｕｉｎｔ８）の入力信号に対応する二値信号Ａ’は１２ビットであり、より多くの情報が含まれる。
【００９２】
その後、記憶部１２に記憶されている重みの二値信号Ｕ’が重みバッファ１１に転送される（ステップＳ３５）。
【００９３】
次に、入力信号Ａの二値信号Ａ’および重みの二値信号Ｕ’は、畳み込み演算部１４に入力され、畳み込み演算が行われる（ステップＳ３６）。畳み込み演算部１４は、例えば、入力信号および重みの二値信号Ａ’、Ｕ’の否定排他的論理和（ＸＮＯＲ）を演算し、ビットカウント（ｐｏｐｃｎｔ）を行って畳み込み演算の演算結果を求めることができる。
【００９４】
次に、畳み込み演算の結果に対して、ＲｅＬＵなどの活性化関数が適用され、畳み込み層の出力が決定される（ステップＳ３７）。その後、必要に応じてよく知られたプーリング処理が行われ（非特許文献１参照）（ステップＳ３８）、得られた出力信号は一層分の畳み込み層の演算結果として出力バッファ１５に記憶される（ステップＳ３９）。なお、出力バッファ１５に記憶された出力信号は、後続の畳み込み層の入力信号として用いられる。
【００９５】
このように、ＣＮＮの畳み込み層で畳み込み演算が繰り返し行われて得られた出力は、ＣＮＮの特徴抽出部の出力として、後続の図示しない分類器を構成する全結合層に入力され、入力信号Ａの画像データなどの判別が行われる。
【００９６】
以上説明したように、第４の実施の形態に係るＣＮＮ処理装置１Ｃによれば、ＣＮＮに与えられる入力信号が特定の情報を示すか否かを判定する。すなわち、入力信号により多くの情報量が含まれるか否か、あるいは、含まれる情報の重要性が比較的高いか否かを判定する。入力信号が特定の情報を示す場合には、そのような入力信号に対して、他の入力信号よりも情報量の多い二値信号を取得する。そのため、二値信号を用いた場合であっても、ＣＮＮの精度を向上しつつ、処理されるデータ量を削減することができる。
【００９７】
以上、本発明のニューラルネットワーク処理装置、ニューラルネットワーク処理方法およびニューラルネットワーク処理プログラムにおける実施の形態について説明したが、本発明は説明した実施の形態に限定されるものではなく、請求項に記載した発明の範囲において当業者が想定し得る各種の変形を行うことが可能である。
【００９８】
例えば、説明した実施の形態では、ニューラルネットワークの一例としてＣＮＮを挙げて説明したが、ニューラルネットワーク処理装置が採用するニューラルネットワークはＣＮＮに限らない。
【００９９】
また、説明した実施の形態では、入力信号に対応する二値信号を取得する場合について説明したが、ＣＮＮ処理装置は、入力信号の二値信号だけでなく、例えば重みなどについても同様に二値信号を取得してもよい。
【０１００】
また、説明した実施の形態では、ＣＮＮの第１層目において入力信号などの二値信号を取得する場合について説明したが、例えば、ＣＮＮの中間層において１層目以外の層に実施の形態に係る二値信号の取得処理を適用してもよい。
【０１０１】
また、説明した実施の形態に係る二値信号の取得処理は、多層ＣＮＮの少なくとも１層に適用することで、ＣＮＮの精度の低下を抑制し、かつ、ＣＮＮにおける計算負荷の低減および処理の高速化が可能となる。そのため、より簡易な構成によって本発明の効果が得られる。
【０１０２】
なお、ここで開示された実施の形態に関連して記述された様々の機能ブロック、モジュール、および回路は、汎用プロセッサ、ＧＰＵ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、ＦＰＧＡあるいはその他のプログラマブル論理デバイス、ディスクリートゲートあるいはトランジスタロジック、ディスクリートハードウェア部品、または上述した機能を実現するために設計された上記いずれかの組み合わせを用いて実行されうる。
【０１０３】
汎用プロセッサとしてマイクロプロセッサを用いることが可能であるが、代わりに、従来技術によるプロセッサ、コントローラ、マイクロコントローラ、あるいは状態機器を用いることも可能である。プロセッサは、例えば、ＤＳＰとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサ、ＤＳＰコアに接続された１つ以上のマイクロプロセッサ、またはこのような任意の構成である計算デバイスの組み合わせとして実現することも可能である。
【符号の説明】
【０１０４】
１…ＣＮＮ処理装置、１０…入力バッファ、１１…重みバッファ、１２…記憶部、１３…二値信号取得部、１４…畳み込み演算部、１５…出力バッファ、１０１…バス、１０２…プロセッサ、１０３…主記憶装置、１０４…通信インターフェース、１０５…補助記憶装置、１０６…入出力装置、１２０…テーブル、ＮＷ…通信ネットワーク、Ｕ’…重み、Ａ…入力信号。
【図１】
0006885645.tif 000002
【図２】
0006885645.tif 000003
【図３】
0006885645.tif 000004
【図４】
0006885645.tif 000005
【図５】
0006885645.tif 000006
【図６】
0006885645.tif 000007
【図７】
0006885645.tif 000008
【図８】
0006885645.tif 000009
【図９】
0006885645.tif 000010
【図１０】
0006885645.tif 000011
【図１１】
0006885645.tif 000012