(57)【要約】【課題】少ないリソースで畳み込み演算を高速処理する。【解決手段】ビット変換回路１１が、Ｎ個の入力データＸnから各ビット桁ｍのビット列Ｂmをそれぞれ生成し、排他的論理和回路１３が、得られたＭ個のビット列Ｂmについて、当該ビット列Ｂmと重み係数Ｗとの排他的論理和Ｑmをそれぞれ演算し、ビット計数回路１４が、得られたＭ個の排他的論理和Ｑmについて、当該排他的論理和Ｑmに含まれる、予め設定された有効ビット値の数であるビット数ＰＱmと、重み係数Ｗに含まれる有効ビット値の数であるビット数ＰＷとを計数して、両者の差分Ｓmを計算し、ビットシフト回路１５が、得られたＭ個の差分Ｓmについて、当該差分Ｓmを上位ビット側にｍ−１桁分だけシフトしたシフト値Ｄmを計算し、合算回路１６が、得られたＭ個のシフト値Ｄmを合算し、畳み込み演算結果Ｙとして出力する。【選択図】  図１
2020060968.tif 000002
【特許請求の範囲】
【請求項１】
Ｍ（Ｍは１以上の整数）ビット幅を有するＮ（Ｎは２以上の整数）個の入力データＸn（ｎ＝１，２，…，Ｎ）と、各ビット値が前記入力データＸnに関する重みを示すＮビット幅の重み係数Ｗとを畳み込み演算し、得られた畳み込み演算結果Ｙを出力する畳み込み演算回路であって、
前記Ｎ個の入力データＸnのビット桁ｍ（ｍ＝１，２，…，Ｍ）ごとに、前記Ｎ個の入力データＸnのそれぞれから当該ｍ桁目のビット値を抽出して、Ｎビット幅を有するＭ個のビット列Ｂmを生成するビット変換回路と、
前記Ｍ個のビット列Ｂmのそれぞれについて、当該ビット列Ｂmと前記重み係数Ｗとの排他的論理和Ｑmを演算する排他的論理和回路と、
前記Ｍ個のビット列Ｂmに対して演算されたＭ個の前記排他的論理和Ｑmのそれぞれについて、当該排他的論理和Ｑmに含まれる、予め設定された「０」または「１」からなる有効ビット値の数である第１のビット数ＰＱmと、前記重み係数Ｗに含まれる前記有効ビット値の数である第２のビット数ＰＷとを計数し、前記第１のビット数ＰＱmと前記第２のビット数ＰＷとの差分Ｓmを計算するビット計数回路と、
前記Ｍ個の排他的論理和Ｑmに対して計算されたＭ個の前記差分Ｓmのそれぞれについて、当該差分Ｓmをｍ−１桁分だけ上位ビット側にシフトしたシフト値Ｄmを計算するビットシフト回路と、
前記Ｍ個の差分Ｓmに対して計算されたＭ個の前記シフト値Ｄmを合算し、得られた合算結果を前記畳み込み演算結果Ｙとして出力する合算回路と
を備えることを特徴とする畳み込み演算回路。
【請求項２】
請求項１に記載の畳み込み演算回路において、
前記ビット計数回路は、
前記排他的論理和Ｑmに含まれる、有効ビット値「０」の数を示す前記第１のビット数ＰＱmを計数する第１のビットカウンタと、
前記重み係数Ｗに含まれる、有効ビット値「０」の数を示す前記第２のビット数ＰＷを計数する第２のビットカウンタと、
前記第１のビット数ＰＱmから前記第２のビット数ＰＷを減算することにより前記差分Ｓmを計算する減算回路と
を含むことを特徴とする畳み込み演算回路。
【請求項３】
請求項１に記載の畳み込み演算回路において、
前記排他的論理和回路は、前記Ｍ個のビット列Ｂmごとに、当該ビット列Ｂmと前記重み係数Ｗとの否定排他的論理和ＱＩmを演算し、
前記ビット計数回路は、
前記否定排他的論理和ＱＩmに含まれる、有効ビット値「１」の数を示す第３のビット数ＰＱＩmを計数する第３のビットカウンタと、
前記重み係数Ｗをビット反転した反転重み係数ＷＩを出力するインバータと、
前記反転重み係数ＷＩに含まれる、有効ビット値「１」の数を示す第４のビット数ＰＷＩを計数する第４のビットカウンタと、
前記第３のビット数ＰＱＩmから前記第４のビット数ＰＷＩを減算することにより前記差分Ｓmを計算する減算回路と
を含むことを特徴とする畳み込み演算回路。
【請求項４】
請求項１〜請求項３のいずれかに記載の畳み込み演算回路において、
前記重み係数Ｗを記憶する記憶回路をさらに備え、
前記排他的論理和回路は、前記ビット列Ｂmごとに、当該ビット列Ｂmと前記記憶回路から読み出した前記重み係数Ｗとの排他的論理和Ｑmを演算し、
前記ビット計数回路は、当該排他的論理和Ｑmに含まれる、予め設定された有効ビット値に関する第１のビット数ＰＱmと、前記記憶回路から読み出した前記重み係数Ｗに含まれる前記有効ビット値に関する第２のビット数ＰＷとの差分Ｓmを計数する
ことを特徴とする畳み込み演算回路。
【請求項５】
Ｍ（Ｍは１以上の整数）ビット幅を有するＮ（Ｎは２以上の整数）個の入力データＸn（ｎ＝１，２，…，Ｎ）と、各ビット値が前記入力データＸnに関する重みを示すＮビット幅の重み係数Ｗとを畳み込み演算し、得られた畳み込み演算結果Ｙを出力する演算処理装置で用いられる畳み込み演算方法であって、
ビット変換部が、前記Ｎ個の入力データＸnのビット桁ｍ（ｍ＝１，２，…，Ｍ）ごとに、前記Ｎ個の入力データＸnのそれぞれから当該ｍ桁目のビット値を抽出して、Ｎビット幅を有するＭ個のビット列Ｂmを生成するビット変換ステップと、
排他的論理和演算部が、前記ビット列Ｂmごとに、当該ビット列Ｂmと前記重み係数Ｗとの排他的論理和Ｑmを計算する排他的論理和演算ステップと、
ビット計数部が、前記Ｍ個のビット列Ｂmに対して演算されたＭ個の前記排他的論理和Ｑmのそれぞれについて、当該排他的論理和Ｑmに含まれる、予め設定された「０」または「１」からなる有効ビット値の数である第１のビット数ＰＱmと、前記重み係数Ｗに含まれる前記有効ビット値の数である第２のビット数ＰＷとを計数し、前記第１のビット数ＰＱmと前記第２のビット数ＰＷとの差分Ｓmを計算するビット計数ステップと、
ビットシフト部が、前記Ｍ個の排他的論理和Ｑmに対して計算されたＭ個の前記差分Ｓmのそれぞれについて、当該差分Ｓmをｍ−１桁分だけ上位ビット側にシフトしたシフト値Ｄmを計算するビットシフトステップと、
合算部が、前記Ｍ個の差分Ｓmに対して計算されたＭ個の前記シフト値Ｄmを合算し、得られた合算結果を前記畳み込み演算結果Ｙとして出力する合算ステップと
を備えることを特徴とする畳み込み演算方法。
【請求項６】
入力データと重み係数とを畳み込み演算することにより、前記入力データの特徴量を抽出する演算処理部を備える畳み込みニューラルネットワーク装置であって、
前記演算処理部は、請求項１〜請求項４のいずれかに記載の畳み込み演算回路を含むことを特徴とする畳み込みニューラルネットワーク装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力データと重み係数とを畳み込み演算するための畳み込み演算技術に関する。
【背景技術】
【０００２】
近年、画像を複数のカテゴリに分類するためのディープニューラルネットワークの手法として、畳み込みニューラルネットワーク（ＣＮＮ：Convolutional Neural Network）が注目を浴びている。ＣＮＮは、ディープニューラルネットワークの処理において、畳み込み演算を加えたものである（例えば、非特許文献１など参照）。
【０００３】
図７は、従来の畳み込みニューラルネットワーク装置の構成例である。一般に、ＣＮＮ５０は、入力層５１、中間層５２、および出力層５３を有している。このうち、中間層５２では、入力層５１で取得した入力データから特徴量を抽出するため、入力データに対して予め学習などで得られた重みを適用する、いわゆる畳み込み演算処理が行われる。
【０００４】
図８は、畳み込み演算処理を示す説明図である。畳み込み演算処理は、Ｎ（Ｎは２以上の整数）個の入力データＸn（ｎ＝１，２，…，Ｎ）と、当該入力データＸnと対応するの重み係数Ｗnとを積和演算することにより、畳み込み演算結果Ｙを得る処理である。この例において、重み係数Ｗnは「１」または「−１」の２値で表現されている。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】神嶌敏弘ほか、「深層学習」、人工知能学会監修、近代科学社、2015年10月31日
【発明の概要】
【発明が解決しようとする課題】
【０００６】
このような畳み込みニューラルネットワーク装置では、実際の演算処理装置において、中間層が多段接続された構成が用いられる。これは、画像データなどのデータ量の大きい入力データについて、その特徴量を効率よく抽出する必要があるからである。このため、これら中間層における畳み込み演算処理の処理量が増大する傾向がある。近年、このような畳み込み演算処理の処理量増大に伴う処理速度の低下を改善するため、畳み込み演算処理の回路化、すなわち畳み込み演算回路の研究開発が進みつつある。
【０００７】
しかしながら、前述の図８に示した従来技術によれば、畳み込み演算処理に積和演算、すなわち乗算を含むため、これを回路で実現しようとすると乗算器が必要となり、ハードウェア量が増大するという問題点があった。このため、元々、リソースが限られている、ＦＰＧＡ（Field-Programmable Gate Array）などのＰＬＤ（Programmable Logic Device）で、畳み込み演算回路を実現しようとすると、処理時間の増大に伴って処理速度が低下するという問題点があった。
【０００８】
本発明はこのような課題を解決するためのものであり、少ないリソースで畳み込み演算を高速処理することができる畳み込み演算処理技術を提供することを目的としている。
【課題を解決するための手段】
【０００９】
このような目的を達成するために、本発明にかかる畳み込み演算回路は、Ｍ（Ｍは１以上の整数）ビット幅を有するＮ（Ｎは２以上の整数）個の入力データＸn（ｎ＝１，２，…，Ｎ）と、各ビット値が前記入力データＸnに関する重みを示すＮビット幅の重み係数Ｗとに関する畳み込み演算結果Ｙを計算して出力する畳み込み演算回路であって、Ｎ個の前記入力データＸnに関するｍ（ｍ＝１，２，…，Ｍ）桁目のビット列Ｂmを生成するビット変換回路と、前記ビット列Ｂmごとに、当該ビット列Ｂmと前記重み係数Ｗとの排他的論理和Ｑmを演算する排他的論理和回路と、前記排他的論理和Ｑmごとに、当該排他的論理和Ｑmに含まれる、予め設定された有効ビット値に関する第１のビット数ＰＱmと、前記重み係数Ｗに含まれる前記有効ビット値に関する第２のビット数ＰＷとの差分Ｓmを計数するビット計数回路と、前記差分Ｓmごとに、当該差分Ｓmをｍ−１桁分だけシフトしたシフト値Ｄmを計算するビットシフト回路と、前記シフト値Ｄmを合算して得られた前記畳み込み演算結果を出力する合算回路とを備えている。
【００１０】
また、本発明にかかる上記畳み込み演算回路の一構成例は、前記ビット計数回路が、前記排他的論理和Ｑmに含まれる、有効ビット値「０」に関する前記第１のビット数ＰＱmを計数する第１のビットカウンタと、前記重み係数Ｗに含まれる、有効ビット値「０」に関する前記第２のビット数ＰＷを計数する第２のビットカウンタと、前記第１のビット数ＰＱmから前記第２のビット数ＰＷを減算することにより前記差分Ｓmを出力する減算回路とを含むものである。
【００１１】
また、本発明にかかる上記畳み込み演算回路の一構成例は、前記排他的論理和回路が、前記ビット列Ｂmごとに、当該ビット列Ｂmと前記重み係数Ｗとの否定排他的論理和ＱＩmを演算し、前記ビット計数回路は、前記否定排他的論理和ＱＩmに含まれる、有効ビット値「１」に関する第３のビット数ＰＱＩmを計数する第３のビットカウンタと、前記重み係数Ｗをビット反転した反転重み係数ＷＩを出力するインバータと、前記反転重み係数ＷＩに含まれる、有効ビット値「１」に関する第４のビット数ＰＷＩを計数する第４のビットカウンタと、前記第３のビット数ＰＱＩmから前記第４のビット数ＰＷＩを減算することにより前記差分Ｓmを出力する減算回路とを含むものである。
【００１２】
また、本発明にかかる上記畳み込み演算回路の一構成例は、前記重み係数Ｗを記憶する記憶回路をさらに備え、前記排他的論理和回路は、前記ビット列Ｂmごとに、当該ビット列Ｂmと前記記憶回路から読み出した前記重み係数Ｗとの排他的論理和Ｑmを演算し、前記ビット計数回路は、当該排他的論理和Ｑmに含まれる、予め設定された有効ビット値に関する第１のビット数ＰＱmと、前記記憶回路から読み出した前記重み係数Ｗに含まれる前記有効ビット値に関する第２のビット数ＰＷとの差分Ｓmを計数するようにしたものである。
【００１３】
また、本発明にかかる畳み込み演算方法は、Ｍ（Ｍは１以上の整数）ビット幅を有するＮ（Ｎは２以上の整数）個の入力データＸn（ｎ＝１，２，…，Ｎ）と、各ビット値が前記入力データＸnに関する重みを示すＮビット幅の重み係数Ｗとに関する畳み込み演算結果Ｙを計算して出力する演算処理装置で用いられる畳み込み演算方法であって、ビット変換部が、Ｎ個の前記入力データＸnに関するｍ（ｍ＝１，２，…，Ｍ）桁目のビット列Ｂmを生成するビット変換ステップと、排他的論理和演算部が、前記ビット列Ｂmごとに、当該ビット列Ｂmと前記重み係数Ｗとの排他的論理和Ｑmを計算する排他的論理和演算ステップと、ビット計数部が、前記排他的論理和Ｑmごとに、当該排他的論理和Ｑmに含まれる、予め設定された有効ビット値に関する第１のビット数ＰＱmと、前記重み係数Ｗに含まれる前記有効ビット値に関する第２のビット数ＰＷとの差分Ｓmを計数するビット計数ステップと、ビットシフト回路が、前記差分Ｓmごとに、当該差分Ｓmをｍ−１桁分だけシフトしたシフト値Ｄmを計算するビットシフトステップと、合算部が、前記シフト値Ｄmを合算して得られた前記畳み込み演算結果を出力する合算ステップとを備えている。
【００１４】
また、本発明にかかる畳み込みニューラルネットワーク装置は、入力データと重み係数とを畳み込み演算することにより、前記入力データの特徴量を抽出する演算処理部を備える畳み込みニューラルネットワーク装置であって、前記演算処理部は、請求項１〜請求項４のいずれかに記載の畳み込み演算回路を含むものである。
【発明の効果】
【００１５】
本発明によれば、乗算処理を必要とすることなく、ＸＯＲ（eXclusive OR）、減算、およびビットシフトの各ビット演算処理で畳み込み演算結果を得ることができる。したがって、回路構成の簡略化さらには処理の高速化を実現することが可能となる。このため、少ないリソースで畳み込み演算を高速処理することができ、リソースが限られているＦＰＧＡなどのＰＬＤを用いても容易に畳み込み演算回路を実現することができる。また、画像データなどのデータ量の大きい入力データであっても、その特徴量を効率よく抽出することができる。したがって、膨大なハードウェア量や消費電力を必要とすることなく演算処理できる畳み込みニューラルネットワーク装置を実現することが可能となる。
【図面の簡単な説明】
【００１６】
【図１】第１の実施の形態にかかる畳み込み演算回路の構成を示すブロック図である。
【図２】第１の実施の形態にかかる畳み込み演算処理を示すフローチャートである。
【図３】第１の実施の形態にかかる畳み込み演算動作例を示す説明図である。
【図４】第２の実施の形態にかかる畳み込み演算回路を示すブロック図である。
【図５】第２の実施の形態にかかる畳み込み演算処理を示すフローチャートである。
【図６】第２の実施の形態にかかる畳み込み演算動作例を示す説明図である。
【図７】従来の畳み込みニューラルネットワーク装置の構成例である。
【図８】畳み込み演算処理を示す説明図である。
【発明を実施するための形態】
【００１７】
次に、本発明の実施の形態について図面を参照して説明する。
［第１の実施の形態］
まず、図１を参照して、本発明の第１の実施の形態にかかる畳み込み演算回路１０について説明する。図１は、第１の実施の形態にかかる畳み込み演算回路の構成を示すブロック図である。
【００１８】
この畳み込み演算回路１０は、畳み込みニューラルネットワーク装置などの演算処理装置で用いられて、Ｍ（Ｍは１以上の整数）ビット幅を有するＮ（Ｎは２以上の整数）個の入力データＸn（ｎ＝１，２，…，Ｎ）と、各ビット値が前記入力データＸnに関する重みを示すＮビット幅の重み係数Ｗとを畳み込み演算し、得られた畳み込み演算結果Ｙを出力する。なお、本実施の形態において、重み係数Ｗは、従来の「１」または「−１」に代えて、「１」または「０」の２値で表現されているものとする。
【００１９】
図１に示すように、本実施の形態にかかる畳み込み演算回路１０は、主な回路部として、ビット変換回路１１、記憶回路１２、排他的論理和回路１３、ビット計数回路１４、ビットシフト回路１５、および合算回路１６を備えている。
【００２０】
ビット変換回路１１は、Ｎ個の入力データＸnのビット桁ｍ（ｍ＝１，２，…，Ｍ）ごとに、Ｎ個の入力データＸnのそれぞれから当該ｍ桁目のビット値を抽出して、Ｎビット幅を有するＭ個のビット列Ｂmを生成する回路である。
記憶回路１２は、半導体メモリからなり、予め入力された重み係数Ｗを記憶する。
排他的論理和回路１３は、一般的なＮビット幅のＸＯＲゲート回路からなり、ビット変換回路１１から出力されたＭ個のビット列Ｂmのそれぞれについて、当該ビット列Ｂmと重み係数Ｗとの排他的論理和Ｑmを演算して出力する回路である。
【００２１】
ビット計数回路１４は、排他的論理和回路１３から出力されたＭ個の排他的論理和Ｑmのそれぞれについて、当該排他的論理和Ｑmに含まれる、予め設定された「０」または「１」からなる有効ビット値の数であるビット数（第１のビット数）ＰＱmと、重み係数Ｗに含まれる有効ビット値の数であるビット数（第２のビット数）ＰＷとを計数し、ビット数ＰＱmとビット数ＰＷとの差分Ｓmを計算する回路である。
【００２２】
本実施の形態にかかる有効ビット値は、予め設定された「０」または「１」を示すビット値であり、ビット数ＰＱmは、排他的論理和Ｑmを構成する各ビットに含まれる「０」または「１」の数である。例えば、後述の図３に示す例のように、Ｑ0＝「０１１１」である場合、有効ビット値「０」数は１つであるため、ＰＱm＝「１」となる。なお、有効ビット値に対して「０」または「１」のいずれの値を設定するかについては、排他的論理和回路１３における演算処理方法に依存する。具体的には、排他的論理和回路１３でＸＯＲ処理を行う場合、有効ビット値として「０」を設定し、ＸＮＯＲ処理を行う場合、有効ビット値として「１」を設定する。
【００２３】
本実施の形態において、ビット計数回路１４は、主な回路部として、ビットカウンタ１４Ｑ，１４Ｗと、減算回路１４Ｓとを含んでいる。
ビットカウンタ１４Ｑは、一般的なビットカウンタからなり、排他的論理和回路１３から出力された排他的論理和Ｑmに含まれる、有効ビット値「０」の数であるビット数ＰＱmを計数する回路である。ビットカウンタ１４Ｑは、本発明の一構成例における第１のビットカウンタとして作用する。
【００２４】
ビットカウンタ１４Ｗは、一般的なビットカウンタからなり、記憶回路１２から取得した重み係数Ｗに含まれる、有効ビット値「０」の数であるビット数ＰＷを計数する回路である。ビットカウンタ１４Ｗは、本発明の一構成例における第２のビットカウンタとして作用する。
減算回路１４Ｓは、一般的な減算器からなり、ビットカウンタ１４Ｑから出力されたビット数ＰＱmから、ビットカウンタ１４Ｗから出力されたビット数ＰＷを減算することにより差分Ｓmを計算して出力する回路である。
【００２５】
ビットシフト回路１５は、一般的なシフトレジスタからなり、減算回路１４Ｓから出力されたＭ個の差分Ｓmのそれぞれについて、当該差分Ｓmをｍ−１桁分だけ上位ビット側にシフトしたシフト値Ｄmを計算し、得られた合算結果を畳み込み演算結果Ｙとして出力する回路である。
合算回路１６は、一般的な合算器からなり、ビットシフト回路１５から出力されたＭ個のシフト値Ｄmを合算して得られた畳み込み演算結果Ｙを出力する回路である。
【００２６】
［第１の実施の形態の動作］
次に、図２を参照して、本実施の形態にかかる畳み込み演算回路１０の動作について説明する。図２は、第１の実施の形態にかかる畳み込み演算処理を示すフローチャートである。畳み込み演算処理の実行に際し、記憶回路１２には、重み係数Ｗが登録されているものとする。また、有効ビット値として「０」が予め設定されているものとする。
【００２７】
まず、ビット変換回路１１は、Ｍビット幅を有するＮ個の入力データＸn（ｎ＝１，２，…，Ｎ）を取得し（ステップ１００）、Ｘnを構成する各ビットのビット桁ｍ（ｍ＝１，２，…，Ｍ）ごとに、これらＮ個のＸnのそれぞれから当該ｍ桁目のビット値を抽出して、Ｎビット幅を有するＭ個のビット列Ｂmに変換して出力する（ステップ１０１）。
【００２８】
また、ビット計数回路１４は、記憶回路１２からＮビット幅の重み係数Ｗを取得し（ステップ１０２）、ビットカウンタ１４Ｗにより、重み係数Ｗに含まれる有効ビット値「０」の数であるビット数ＰＷを計数する（ステップ１０３）。
この後、畳み込み演算回路１０は、以下のステップ１１１〜ステップ１１４に示すループ処理の実行を開始することにより、Ｍ個のビット列Ｂm（ｍ＝１，２，…，Ｍ）のそれぞれに関するシフト値Ｄmを計算する（ステップ１１０）。
【００２９】
まず、排他的論理和回路１３は、ビット変換回路１１から出力されたビット列Ｂmと重み係数Ｗとの排他的論理和Ｑmを演算して出力する（ステップ１１１）。
次に、ビット計数回路１４は、ビットカウンタ１４Ｑにより、排他的論理和回路１３から出力された排他的論理和Ｑmに含まれる、有効ビット値「０」の数であるビット数ＰＱmを計数する（ステップ１１２）。
【００３０】
この後、ビット計数回路１４は、減算回路１４Ｓにより、ビットカウンタ１４Ｑから出力されたビット数ＰＱmから、ビットカウンタ１４Ｗから出力されたビット数ＰＷを減算することにより差分Ｓmを計算して出力する（ステップ１１３）。
次に、ビットシフト回路１５は、減算回路１４Ｓから出力された差分Ｓmを、上位ビット側にｍ−１桁分だけシフトしたシフト値Ｄmを計算して出力する（ステップ１１４）。これにより、ｍ桁目の差分Ｓmに対してｍ桁目の重み２m-1が与えられたシフト値Ｄmが得られる。
【００３１】
このようにして、畳み込み演算回路１０は、各ビット列Ｂmと対応するＭ個のシフト値Ｄmが得られた時点でループ処理を終了する（ステップ１１５）。
この後、合算回路１６は、ビットシフト回路１５から出力されたＭ個のシフト値Ｄmを合算し、得られた合算結果を畳み込み演算結果Ｙとして出力し（ステップ１０４）、一連の畳み込み演算処理を終了する。
【００３２】
［第１の実施の形態にかかる動作例］
次に、図３を参照して、本実施の形態にかかる畳み込み演算回路１０の動作例について説明する。図３は、第１の実施の形態にかかる畳み込み演算動作例を示す説明図である。
ここでは、理解を容易とするため、２ビット幅（Ｍ＝２）を有する４つ（Ｎ＝４）の入力データＸn「３，１，０，２」が入力されるものとし、これらＸnに対する４ビット分の重み係数Ｗが「１，０，１，１」である場合を例として説明する。なお、有効ビット値として「０」が予め設定されているものとする。
【００３３】
まず、４つの入力データＸnは、ビット変換回路１１に入力されて、４ビット幅を有する２個のビット列に変換され、これらＸnに関する最下位ビット（ＬＳＢ）から１桁目（ｍ＝１）のビット列Ｂ1＝「１１００」と、最下位ビットから２桁目（ｍ＝２）のビット列Ｂ2＝「１００１」とが生成される。
これらＢ1，Ｂ2は、排他的論理和回路１３に入力されて、それぞれ重み係数Ｗ「１０１１」とのＸＯＲが演算され、排他的論理和Ｑ1＝「０１１１」と排他的論理和Ｑ2＝「００１０」とが出力される。
【００３４】
次に、これらＱ1，Ｑ2は、ビット計数回路１４のビットカウンタ１４Ｗに入力されて、それぞれ有効ビット数「０」がカウントされ、Ｑ1から得られたビット数ＰＱ1＝「１」とＱ2から得られたビット数ＰＱ2＝「３」とが出力される。
また、Ｗ＝「１０１１」は、ビット計数回路１４のビットカウンタ１４Ｑに入力されて、有効ビット数「０」がカウントされ、ビット数ＰＷ＝「１」が出力される。
【００３５】
続いて、これらＰＱ1，ＰＱ2は、ビット計数回路１４の減算回路１４Ｓに入力されて、それぞれＰＷとの差分Ｓ1＝ＰＱ1−ＰＷ＝「０（＝１−１）」と、差分Ｓ2＝ＰＱ2−ＰＷ＝「２（＝３−１）」とが計算されて出力される。
【００３６】
次に、これらＳ1，Ｓ2は、ビットシフト回路１５に入力されて、それぞれｍ−１桁分だけ上位ビット側にシフトされて、シフト値Ｄ1＝Ｓ1×２0＝「０（＝０×１）」とシフト値Ｄ2＝Ｓ2×２1「４（＝２×２）」とが計算されて出力される。
この後、これらＤ1，Ｄ2は、合算回路１６に入力されて合算され、畳み込み演算結果Ｙ＝Ｄ1＋Ｄ2＝「４（＝０＋４）」が出力される。
【００３７】
一方、従来の畳み込み演算処理では、入力データＸn＝「３，１，０，２」と重み係数Ｗ＝「１，−１，１，１」とが、それぞれ乗算されて乗算値ＭＵ１＝「３（＝３×１）」、ＭＵ2＝「−１（＝１×−１）」、ＭＵ3＝「０（＝０×１）」、ＭＵ4＝「２（＝２×１）」が計算される。なお、重み係数Ｗは｛１，−１｝で表現されているものとする。この後、これら乗算値ＭＵnの合計ＭＵ1＋ＭＵ2＋ＭＵ3＋ＭＵ4＝「４」が畳み込み演算結果ＹＣとして出力される。
【００３８】
これにより、本実施の形態にかかる畳み込み演算処理で、従来の畳み込み演算処理と等しい畳み込み演算結果Ｙが得られていることがわかる。また、従来の畳み込み演算処理では、入力データＸnの個数Ｎ個分の乗算処理が必要であるが、本実施の形態にかかる畳み込み演算処理によれば、ＸＯＲ、減算、およびビットシフトの各ビット演算処理で実現でき、回路構成の簡略化さらには処理の高速化が実現されることがわかる。
【００３９】
［第１の実施の形態の効果］
このように、本実施の形態は、ビット変換回路１１が、Ｎ個の入力データＸnから各ビット桁ｍのビット列Ｂmをそれぞれ生成し、排他的論理和回路１３が、得られたＭ個のビット列Ｂmについて、当該ビット列Ｂmと重み係数Ｗとの排他的論理和Ｑmをそれぞれ演算し、ビット計数回路１４が、得られたＭ個の排他的論理和Ｑmについて、当該排他的論理和Ｑmに含まれる、予め設定された有効ビット値の数であるビット数ＰＱmと、重み係数Ｗに含まれる有効ビット値の数であるビット数ＰＷとを計数して、両者の差分Ｓmを計算し、ビットシフト回路１５が、得られたＭ個の差分Ｓmについて、当該差分Ｓmを上位ビット側にｍ−１桁分だけシフトしたシフト値Ｄmを計算し、合算回路１６が、得られたＭ個のシフト値Ｄmを合算し、畳み込み演算結果Ｙとして出力するようにしたものである。
【００４０】
これにより、乗算処理を必要とすることなく、ＸＯＲ、減算、およびビットシフトの各ビット演算処理で畳み込み演算結果を得ることができる。したがって、回路構成の簡略化さらには処理の高速化を実現することが可能となる。このため、少ないリソースで畳み込み演算を高速処理することができ、リソースが限られているＦＰＧＡなどのＰＬＤを用いても容易に畳み込み演算回路を実現することができる。また、画像データなどのデータ量の大きい入力データであっても、その特徴量を効率よく抽出することができる。したがって、膨大なハードウェア量や消費電力を必要とすることなく演算処理できる畳み込みニューラルネットワーク装置を実現することが可能となる。
【００４１】
また、本実施の形態において、ビット計数回路１４を、排他的論理和Ｑmに含まれる、有効ビット値「０」の数であるビット数ＰＱmを計数するビットカウンタ１４Ｑと、重み係数Ｗに含まれる、有効ビット値「０」の数であるビット数ＰＷを計数するビットカウンタ１４Ｗと、ビット数ＰＱmからビット数ＰＷを減算することにより差分Ｓmを出力する減算回路１４Ｓとから構成してもよい。
これにより、少ないリソースで各入力データＸnに関する差分Ｓmを計算することができる。
【００４２】
また、本実施の形態において、重み係数Ｗを記憶する記憶回路１２をさらに備え、排他的論理和回路１３は、ビット列Ｂmごとに、当該ビット列Ｂmと記憶回路から読み出した重み係数Ｗとの排他的論理和Ｑmを演算し、ビット計数回路１４は、当該排他的論理和Ｑmに含まれる、予め設定された有効ビット値の数であるビット数ＰＱmと、記憶回路から読み出した重み係数Ｗに含まれる有効ビット値の数であるビット数ＰＷとの差分Ｓmを計数するようにしてもよい。
【００４３】
これにより、畳み込みニューラルネットワーク装置などの演算処理装置から指定された重み係数Ｗを排他的論理和回路１３とビット計数回路１４とで利用することができる。したがって、入力データＸnに応じて任意の重み係数Ｗを切り替えることができ、１つの畳み込み演算回路１０を演算処理システム内で必要となる各種の畳み込み演算処理で兼用することが可能となる。このため、演算処理システム全体のハードウェア量を効率よく削減できる。
【００４４】
［第２の実施の形態］
次に、図４を参照して、本発明の第２の実施の形態にかかる畳み込み演算回路１０について説明する。図４は、第２の実施の形態にかかる畳み込み演算回路を示すブロック図である。
前述した第１の実施の形態では、排他的論理和回路１３でＢmとＷとの排他的論理和Ｑmを演算し、ビット計数回路１４で有効ビット「０」を計数する場合を例として説明したが、これらの回路を汎用のロジック回路で実現した場合、ある程度のリソースを必要とする。一般には、ＸＯＲ回路よりＸＮＯＲ（eXclusive NOR）回路を用いたほうが少ないリソースで実現できる。また、ビットカウンタとして汎用のＰＯＰカウンタ（Population Counter）で有効ビット「１」を計数したほうが少ないリソースで実現できる。
【００４５】
本実施の形態は、このような汎用のリソースに着目し、排他的論理和回路１３として否定排他的論理和ＱＩmを演算するＸＮＯＲ回路で実現でき、ビット計数回路１４のビットカウンタ１４Ｑ，１４Ｗとして、ＰＯＰカウンタで実現できるようにしたものである。
すなわち、本実施の形態において、排他的論理和回路１３は、一般的なＮビット幅のＸＮＯＲゲート回路からなり、Ｍ個のビット列Ｂmのそれぞれについて、当該ビット列Ｂmと重み係数Ｗとの否定排他的論理和ＱＩmを演算する。
【００４６】
また、ビット計数回路１４は、Ｍ個の否定排他的論理和ＱＩmのそれぞれについて、当該否定排他的論理和ＱＩmに含まれる、有効ビット値「１」の数であるビット数（第３のビット数）ＰＱＩmを計数するビットカウンタ（第３のビットカウンタ）１４Ｑと、重み係数Ｗをビット反転した反転重み係数ＷＩを出力するインバータ１４Ｉと、反転重み係数ＷＩに含まれる、有効ビット値「１」の数であるビット数（第４のビット数）ＰＷＩを計数するビットカウンタ（第４のビットカウンタ）１４Ｗと、ビット数ＰＱＩmからビット数ＰＷＩを減算することにより差分Ｓmを出力する減算回路１４Ｓとを備えている。
なお、本実施の形態にかかる上記以外の構成については、前述した第１の実施の形態と同様であり、ここでの詳細な説明は省略する。
【００４７】
［第２の実施の形態の動作］
次に、図５を参照して、本実施の形態にかかる畳み込み演算回路１０の動作について説明する。図５は、第２の実施の形態にかかる畳み込み演算処理を示すフローチャートである。畳み込み演算処理の実行に際し、記憶回路１２には、重み係数Ｗが登録されているものとする。また、有効ビット値として「１」が予め設定されているものとする。
【００４８】
まず、ビット変換回路１１は、Ｍビット幅を有するＮ個の入力データＸn（ｎ＝１，２，…，Ｎ）を取得し（ステップ２００）、Ｘnを構成する各ビットのビット桁ｍ（ｍ＝１，２，…，Ｍ）ごとに、これらＮ個のＸnのそれぞれから当該ｍ桁目のビット値を抽出して、Ｎビット幅を有するＭ個のビット列Ｂmに変換して出力する（ステップ２０１）。
【００４９】
また、ビット計数回路１４は、記憶回路１２からＮビット幅の重み係数Ｗを取得し（ステップ２０２）、インバータ１４Ｉにより重み係数Ｗを反転した反転重み係数ＷＩを計算し（ステップ２０３）、ビットカウンタ１４Ｗにより、反転重み係数ＷＩに含まれる有効ビット値「１」の数であるビット数ＰＷＩを計数する（ステップ２０４）。このＰＷＩの値は、前述したＰＩの値と等しい。
この後、畳み込み演算回路１０は、以下のステップ２１１〜ステップ２１４に示すループ処理の実行を開始実行することにより、Ｍ個のビット列Ｂm（ｍ＝１，２，…，Ｍ）のそれぞれに関するシフト値Ｄmを計算する（ステップ２１０）。
【００５０】
まず、排他的論理和回路１３は、ビット変換回路１１から出力されたビット列Ｂmと重み係数Ｗとの排他的論理和Ｑmを演算して出力する（ステップ２１１）。
次に、ビット計数回路１４は、ビットカウンタ１４Ｑより、排他的論理和回路１３から出力された排他的論理和Ｑmに含まれる、有効ビット値「１」の数であるビット数ＰＱＩmを計数する（ステップ２１２）。このＰＱＩmの値は、前述したＰＱmの値と等しい。
【００５１】
この後、ビット計数回路１４は、減算回路１４Ｓにより、ビットカウンタ１４Ｑから出力されたビット数ＰＱＩmから、ビットカウンタ１４Ｗから出力されたビット数ＰＷＩを減算することにより差分Ｓmを計算して出力する（ステップ２１３）。
次に、ビットシフト回路１５は、減算回路１４Ｓから出力された差分Ｓmを、上位ビット側にｍ−１桁分だけシフトしたシフト値Ｄmを計算して出力する（ステップ２１４）。これにより、ｍ桁目の差分Ｓmに対してｍ桁目の重み２m-1が与えられたシフト値Ｄmが得られる。
【００５２】
このようにして、畳み込み演算回路１０は、各ビット列Ｂmと対応するＭ個のシフト値Ｄmが得られた時点でループ処理を終了する（ステップ２１５）。
この後、合算回路１６は、ビットシフト回路１５から出力されたＭ個のシフト値Ｄmを合算し、得られた合算結果を畳み込み演算結果Ｙとして出力し（ステップ２０５）、一連の畳み込み演算処理を終了する。
【００５３】
［第２の実施の形態にかかる動作例］
次に、図６を参照して、本実施の形態にかかる畳み込み演算回路１０の動作例について説明する。図６は、第２の実施の形態にかかる畳み込み演算動作例を示す説明図である。
ここでは、２ビット幅（Ｍ＝２）を有する４つ（Ｎ＝４）の入力データＸnが「３，１，０，２」が入力されるものとし、これらＸnに対する１ビット幅の重み係数Ｗが「１，０，１，１」である場合を例として説明する。なお、有効ビット値として「１」が予め設定されているものとする。
【００５４】
まず、４つの入力データＸnは、ビット変換回路１１に入力されて、４ビット幅を有する２個のビット列に変換され、これらＸnに関する最下位ビット（ＬＳＢ）から１桁目（ｍ＝１）のビット列Ｂ1＝「１１００」と、最下位ビットから２桁目（ｍ＝２）のビット列Ｂ2＝「１００１」とが生成される。
これらＢ1，Ｂ2は、排他的論理和回路１３に入力されて、それぞれ重み係数Ｗ「１０１１」とのＸＮＯＲが演算され、否定排他的論理和ＱＩ1＝「１０００」と否定排他的論理和ＱＩ2＝「１１０１」とが出力される。
【００５５】
次に、これらＱＩ1，ＱＩ2は、ビット計数回路１４のビットカウンタ１４Ｗに入力されて、それぞれ有効ビット数「１」がカウントされ、ＱＩ1から得られたビット数ＰＱＩ1＝「１」と、ＱＩ2から得られたビット数ＰＱＩ2＝「３」とが出力される。
また、Ｗ＝「１０１１」は、インバータ１４ＩでＷＩ＝「０１００」に反転された後、ビット計数回路１４のビットカウンタ１４Ｑに入力されて、有効ビット数「１」がカウントされ、ビット数ＰＷＩ＝「１」が出力される。
【００５６】
続いて、これらＰＱＩ1，ＰＱＩ2は、ビット計数回路１４の減算回路１４Ｓに入力されて、それぞれＰＷＩとの差分Ｓ1＝ＰＱＩ1−ＰＷＩ＝「０（＝１−１）」と、差分Ｓ2＝ＰＱＩ2−ＰＷＩ＝「２（＝３−１）」とが計算されて出力される。
【００５７】
次に、これらＳ1，Ｓ2は、ビットシフト回路１５に入力されて、それぞれｍ−１桁分だけ上位ビット側にシフトされて、シフト値Ｄ1＝Ｓ1×２0＝「０（＝０×１）」とシフト値Ｄ2＝Ｓ2×２1「４（＝２×２）」とが計算されて出力される。
この後、これらＤ1，Ｄ2は、合算回路１６に入力されて合算され、畳み込み演算結果Ｙ＝Ｄ1＋Ｄ2＝「４（＝０＋４）」が出力される。
【００５８】
これにより、本実施の形態にかかる畳み込み演算処理で、第１の実施の形態にかかる畳み込み演算処理と等しい畳み込み演算結果Ｙが得られていることがわかる。また、第１の実施の形態にかかる畳み込み演算処理では、ＸＯＲや有効ビット「０」を計数するビットカウンタが必要であるが、本実施の形態にかかる畳み込み演算処理によれば、より汎用的でリソースの小さいＸＮＯＲやＰＯＰカウンタで実現でき、回路構成の簡略化さらには処理の高速化が実現されることがわかる。
【００５９】
［第２の実施の形態の効果］
このように、本実施の形態は、排他的論理和回路１３が、Ｍ個のビット列Ｂmについて、当該ビット列Ｂmと重み係数Ｗとの否定排他的論理和ＱＩmをそれぞれ演算し、ビット計数回路１４を、否定排他的論理和ＱＩmに含まれる、有効ビット値「１」の数であるビット数ＰＱＩmを計数するビットカウンタ１４Ｗと、重み係数Ｗをビット反転した反転重み係数ＷＩを出力するインバータ１４Ｉと、反転重み係数ＷＩに含まれる、有効ビット値「１」の数であるビット数ＰＷＩを計数するビットカウンタ１４Ｗと、ビット数ＰＱＩmからビット数ＰＷＩを減算することにより差分Ｓmを出力する減算回路１４Ｓとから構成したものである。
【００６０】
これにより、第１の実施の形態にかかるＸＯＲやビットカウンタに代えて、より汎用的で回路規模の小さいリソースであるＸＮＯＲやＰＯＰカウンタで実現でき、回路構成の簡略化さらには処理の高速化を実現することが可能となる。このため、より少ないリソースで畳み込み演算を高速処理することができ、リソースが限られているＦＰＧＡなどのＰＬＤを用いても容易に畳み込み演算回路を実現することができる。また、画像データなどのデータ量の大きい入力データであっても、その特徴量を効率よく抽出することができる。したがって、膨大なハードウェア量や消費電力を必要とすることなく演算処理できる畳み込みニューラルネットワーク装置を実現することが可能となる。
【００６１】
［実施の形態の拡張］
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解しうる様々な変更をすることができる。また、各実施形態については、矛盾しない範囲で任意に組み合わせて実施することができる。
【００６２】
また、各実施の形態では、畳み込み演算処理を複数の回路部で実現する場合を例として説明したが、これに限定されるものではない。例えば、ビット変換回路１１、排他的論理和回路１３、ビット計数回路１４、ビットシフト回路１５、および合算回路１６を、ＣＰＵ（Central Processing Unit），ＦＰＵ（Floating point number Processing Unit），ＧＰＵ（Graphics Processing Unit），ＤＳＰ（Digital Signal Processor）などのマイクロプロセッサとプログラムとが協働してなる演算処理部により、ビット変換部、排他的論理和部、ビット計数部、ビットシフト部、および合算部からなる各処理部で実現してもよい。
【００６３】
この場合も、乗算処理を必要とすることなく、ＸＯＲ、減算、およびビットシフトの各ビット演算処理で畳み込み演算結果を得ることができ、処理構成の簡略化さらには処理の高速化を実現することが可能となる。このため、少ないリソースで畳み込み演算を高速処理することができ、リソースが限られているマイクロプロセッサを用いても容易に実現することができる。また、画像データなどのデータ量の大きい入力データであっても、その特徴量を効率よく抽出することができる。したがって、膨大なハードウェア量や消費電力を必要とすることなく演算処理できる畳み込みニューラルネットワーク装置を実現することができる。
【符号の説明】
【００６４】
１０…畳み込み演算回路、１１…ビット変換回路、１２…記憶回路、１３…排他的論理和回路、１４…ビット計数回路、１４Ｑ，１４Ｗ…ビットカウンタ、１４Ｓ…減算回路、１４Ｉ…インバータ、１５…ビットシフト回路、１６…合算回路。
【図１】
2020060968.tif 000003
【図２】
2020060968.tif 000004
【図３】
2020060968.tif 000005
【図４】
2020060968.tif 000006
【図５】
2020060968.tif 000007
【図６】
2020060968.tif 000008
【図７】
2020060968.tif 000009
【図８】
2020060968.tif 000010