IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ LeapMind株式会社の特許一覧

特許7001897畳み込み演算回路、畳み込み演算方法、プログラム、および畳み込みニューラルネットワーク装置
<>
  • 特許-畳み込み演算回路、畳み込み演算方法、プログラム、および畳み込みニューラルネットワーク装置 図1
  • 特許-畳み込み演算回路、畳み込み演算方法、プログラム、および畳み込みニューラルネットワーク装置 図2
  • 特許-畳み込み演算回路、畳み込み演算方法、プログラム、および畳み込みニューラルネットワーク装置 図3
  • 特許-畳み込み演算回路、畳み込み演算方法、プログラム、および畳み込みニューラルネットワーク装置 図4
  • 特許-畳み込み演算回路、畳み込み演算方法、プログラム、および畳み込みニューラルネットワーク装置 図5
  • 特許-畳み込み演算回路、畳み込み演算方法、プログラム、および畳み込みニューラルネットワーク装置 図6
  • 特許-畳み込み演算回路、畳み込み演算方法、プログラム、および畳み込みニューラルネットワーク装置 図7
  • 特許-畳み込み演算回路、畳み込み演算方法、プログラム、および畳み込みニューラルネットワーク装置 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-01-04
(45)【発行日】2022-01-20
(54)【発明の名称】畳み込み演算回路、畳み込み演算方法、プログラム、および畳み込みニューラルネットワーク装置
(51)【国際特許分類】
   G06F 17/10 20060101AFI20220113BHJP
【FI】
G06F17/10 A
【請求項の数】 15
(21)【出願番号】P 2018192024
(22)【出願日】2018-10-10
(65)【公開番号】P2020060968
(43)【公開日】2020-04-16
【審査請求日】2020-08-31
(73)【特許権者】
【識別番号】517048278
【氏名又は名称】LeapMind株式会社
(74)【代理人】
【識別番号】100098394
【弁理士】
【氏名又は名称】山川 茂樹
(74)【代理人】
【識別番号】100153006
【弁理士】
【氏名又は名称】小池 勇三
(74)【代理人】
【識別番号】100064621
【弁理士】
【氏名又は名称】山川 政樹
(72)【発明者】
【氏名】山田 貴登
(72)【発明者】
【氏名】アントニオ トーマス ネバド ビルチェス
【審査官】三坂 敏夫
(56)【参考文献】
【文献】特開2018-092377(JP,A)
【文献】特開平02-092027(JP,A)
【文献】米国特許出願公開第2017/0286380(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/00-17/18
(57)【特許請求の範囲】
【請求項1】
M(Mは2以上の整数)ビット幅を有するN(Nは2以上の整数)個の入力データXn(n=1,2,…,N)と、各ビット値が前記入力データXnに関する重みを示すNビットの重み係数Wnとを畳み込み演算し、得られた畳み込み演算結果Yを出力する畳み込み演算回路であって、
前記重み係数Wnを用いた排他的論理和回路と、前記排他的論理和回路の演算結果Qmおよび前記重み係数Wnにおける有効ビット値を計数するビット計数回路と、前記ビット計数回路の計数結果に基づいてシフト演算を行うビットシフト回路と、
を備える
ことを特徴とする畳み込み演算回路。
【請求項2】
請求項1に記載の畳み込み演算回路において、
前記N個の入力データXnのビット桁m(m=1,2,…,M)ごとに、前記N個の入力データXnのそれぞれから当該m桁目のビット値を抽出して、Nビット幅を有するM個のビット列Bmを生成するビット変換回路をさらに備え、前記排他的論理和回路は前記M個のビット列Bmのそれぞれについて、当該ビット列Bmと前記重み係数Wnとの排他的論理和の演算結果Qmを演算する
ことを特徴とする畳み込み演算回路。
【請求項3】
請求項1または2に記載の畳み込み演算回路において、
前記有効ビット値は予め設定された「0」または「1」からなる数であり、前記ビット計数回路は、前記演算結果Qmに含まれる前記有効ビット値の数である第1のビット数PQmと、前記重み係数Wnに含まれる前記有効ビット値の数である第2のビット数PWとを計数し、前記第1のビット数PQmと前記第2のビット数PWとの差分Smを計算する
ことを特徴とする畳み込み演算回路。
【請求項4】
請求項3に記載の畳み込み演算回路において、
前記ビットシフト回路は、前記排他的論理和回路の演算結果Qmに対して計算された前記差分Smについて、当該差分Smを上位ビット側にシフトしたシフト値Dmを計算する
ことを特徴とする畳み込み演算回路。
【請求項5】
請求項4に記載の畳み込み演算回路において、
前記差分Smに対して計算された複数の前記シフト値Dmを合算し、得られた合算結果を前記畳み込み演算結果Yとして出力する合算回路をさらに備える
ことを特徴とする畳み込み演算回路。
【請求項6】
請求項3ないし5のいずれか1項に記載の畳み込み演算回路において、
前記ビット計数回路は、前記演算結果Qmに含まれる、有効ビット値「0」の数を示す前記第1のビット数PQmを計数する第1のビットカウンタと、前記重み係数Wnに含まれる、有効ビット値「0」の数を示す前記第2のビット数PWを計数する第2のビットカウンタとを含む
ことを特徴とする畳み込み演算回路。
【請求項7】
請求項6に記載の畳み込み演算回路において、
前記ビット計数回路は、前記第1のビット数PQmから前記第2のビット数PWを減算することにより前記差分Smを計算する減算回路をさらに含む
ことを特徴とする畳み込み演算回路。
【請求項8】
請求項3ないしのいずれか1項に記載の畳み込み演算回路において、
前記排他的論理和回路は、前記重み係数Wnを用いた否定排他的論理和QImを演算し、前記ビット計数回路は、前記否定排他的論理和QImに含まれる、有効ビット値「1」の数を示す第3のビット数PQImを計数する第3のビットカウンタと、前記重み係数Wnをビット反転した反転重み係数WIを出力するインバータと、前記反転重み係数WIに含まれる、有効ビット値「1」の数を示す第4のビット数PWIを計数する第4のビットカウンタとを含む
ことを特徴とする畳み込み演算回路。
【請求項9】
請求項8に記載の畳み込み演算回路において、
前記ビット計数回路は、前記第3のビット数PQImから前記第4のビット数PWIを減算することにより前記差分Smを計算する減算回路をさらに含む
ことを特徴とする畳み込み演算回路。
【請求項10】
請求項1ないし9のいずれか1項に記載の畳み込み演算回路において、
前記重み係数Wnを記憶する記憶回路をさらに備え、
前記排他的論理和回路は、前記記憶回路から読み出した前記重み係数Wnに基づいてとの排他的論理和Qmを演算し、
前記ビット計数回路は、当該排他的論理和Qmに含まれる、予め設定された有効ビット値に関する第1のビット数PQmと、前記記憶回路から読み出した前記重み係数Wnに含まれる前記有効ビット値に関する第2のビット数PWとの差分Smを計数する
ことを特徴とする畳み込み演算回路。
【請求項11】
M(Mは2以上の整数)ビット幅を有するN(Nは2以上の整数)個の入力データXn(n=1,2,…,N)と、各ビット値が前記入力データXnに関する重みを示すNビットの重み係数Wnとを畳み込み演算し、得られた畳み込み演算結果Yを出力する演算処理装置で用いられる畳み込み演算方法であって、前記重み係数Wnを用いた排他的論理和演算ステップと、前記排他的論理和演算ステップの演算結果Qmおよび前記重み係数Wnにおける有効ビット値を計数するビット計数ステップと、前記ビット計数ステップの計数結果に基づいてシフト演算を行うビットシフトステップと、を備える
ことを特徴とする畳み込み演算方法。
【請求項12】
請求項11に記載の畳み込み演算方法を実行するためのプログラム。
【請求項13】
入力データと重み係数とを畳み込み演算することにより、前記入力データの特徴量を抽出する演算処理部を備える畳み込みニューラルネットワーク装置であって、
前記演算処理部は、請求項1ないし10のいずれか1項に記載の畳み込み演算回路を含む
ことを特徴とする畳み込みニューラルネットワーク装置。
【請求項14】
前記演算処理部は、FPGAまたはPLDが用いられる
ことを特徴とする請求項13に記載の畳み込みニューラルネットワーク装置。
【請求項15】
前記演算処理部は、マイクロプロセッサが用いられる
ことを特徴とする請求項13に記載の畳み込みニューラルネットワーク装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、入力データと重み係数とを畳み込み演算するための畳み込み演算技術に関する。
【背景技術】
【0002】
近年、画像を複数のカテゴリに分類するためのディープニューラルネットワークの手法として、畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)が注目を浴びている。CNNは、ディープニューラルネットワークの処理において、畳み込み演算を加えたものである(例えば、非特許文献1など参照)。
【0003】
図7は、従来の畳み込みニューラルネットワーク装置の構成例である。一般に、CNN50は、入力層51、中間層52、および出力層53を有している。このうち、中間層52では、入力層51で取得した入力データから特徴量を抽出するため、入力データに対して予め学習などで得られた重みを適用する、いわゆる畳み込み演算処理が行われる。
【0004】
図8は、畳み込み演算処理を示す説明図である。畳み込み演算処理は、N(Nは2以上の整数)個の入力データXn(n=1,2,…,N)と、当該入力データXnと対応するの重み係数Wnとを積和演算することにより、畳み込み演算結果Yを得る処理である。この例において、重み係数Wnは「1」または「-1」の2値で表現されている。
【先行技術文献】
【非特許文献】
【0005】
【文献】神嶌敏弘ほか、「深層学習」、人工知能学会監修、近代科学社、2015年10月31日
【発明の概要】
【発明が解決しようとする課題】
【0006】
このような畳み込みニューラルネットワーク装置では、実際の演算処理装置において、中間層が多段接続された構成が用いられる。これは、画像データなどのデータ量の大きい入力データについて、その特徴量を効率よく抽出する必要があるからである。このため、これら中間層における畳み込み演算処理の処理量が増大する傾向がある。近年、このような畳み込み演算処理の処理量増大に伴う処理速度の低下を改善するため、畳み込み演算処理の回路化、すなわち畳み込み演算回路の研究開発が進みつつある。
【0007】
しかしながら、前述の図8に示した従来技術によれば、畳み込み演算処理に積和演算、すなわち乗算を含むため、これを回路で実現しようとすると乗算器が必要となり、ハードウェア量が増大するという問題点があった。このため、元々、リソースが限られている、FPGA(Field-Programmable Gate Array)などのPLD(Programmable Logic Device)で、畳み込み演算回路を実現しようとすると、処理時間の増大に伴って処理速度が低下するという問題点があった。
【0008】
本発明はこのような課題を解決するためのものであり、少ないリソースで畳み込み演算を高速処理することができる畳み込み演算処理技術を提供することを目的としている。
【課題を解決するための手段】
【0009】
上述した課題を解決するために、本発明に係る畳み込み演算回路は、M(Mは2以上の整数)ビット幅を有するN(Nは2以上の整数)個の入力データXn(n=1,2,…,N)と、各ビット値が前記入力データXnに関する重みを示すNビット幅の重み係数Wとを畳み込み演算し、得られた畳み込み演算結果Yを出力する畳み込み演算回路であって、前記重み係数Wを用いた排他的論理和回路と、前記排他的論理和回路の演算結果Qmおよび前記重み係数Wにおける有効ビット値を計数するビット計数回路と、前記ビット計数回路の計数結果に基づいてシフト演算を行うビットシフト回路と、を備える。
【0010】
また、前記N個の入力データXnのビット桁m(m=1,2,…,M)ごとに、前記N個の入力データXnのそれぞれから当該m桁目のビット値を抽出して、Nビット幅を有するM個のビット列Bmを生成するビット変換回路をさらに備え、前記排他的論理和回路は前記M個のビット列Bmのそれぞれについて、当該ビット列Bmと前記重み係数Wとの排他的論理和の演算結果Qmを演算してもよい。また、前記有効ビット値は予め設定された「0」または「1」からなる数であり、前記ビット計数回路は、前記演算結果Qmに含まれる前記有効ビット値の数である第1のビット数PQmと、前記重み係数Wに含まれる前記有効ビット値の数である第2のビット数PWとを計数し、前記第1のビット数PQmと前記第2のビット数PWとの差分Smを計算してもよい。また、前記ビットシフト回路は、前記排他的論理和回路の演算結果Qmに対して計算された前記差分Smについて、当該差分Smを上位ビット側にシフトしたシフト値Dmを計算してもよい。また、前記差分Smに対して計算された複数の前記シフト値Dmを合算し、得られた合算結果を前記畳み込み演算結果Yとして出力する合算回路をさらに備えてもよい。
【0011】
また、前記ビット計数回路は、前記演算結果Qmに含まれる、有効ビット値「0」の数を示す前記第1のビット数PQmを計数する第1のビットカウンタと、前記重み係数Wに含まれる、有効ビット値「0」の数を示す前記第2のビット数PWを計数する第2のビットカウンタとを含んでもよい。また、前記ビット計数回路は、前記第1のビット数PQmから前記第2のビット数PWを減算することにより前記差分Smを計算する減算回路をさらに含んでもよい。また、前記排他的論理和回路は、前記重み係数Wを用いた否定排他的論理和QImを演算し、前記ビット計数回路は、前記否定排他的論理和QImに含まれる、有効ビット値「1」の数を示す第3のビット数PQImを計数する第3のビットカウンタと、前記重み係数Wをビット反転した反転重み係数WIを出力するインバータと、前記反転重み係数WIに含まれる、有効ビット値「1」の数を示す第4のビット数PWIを計数する第4のビットカウンタとを含んでもよい。また、前記ビット計数回路は、前記第3のビット数PQImから前記第4のビット数PWIを減算することにより前記差分Smを計算する減算回路をさらに含んでもよい。また、前記重み係数Wを記憶する記憶回路をさらに備え、前記排他的論理和回路は、前記記憶回路から読み出した前記重み係数Wに基づいてとの排他的論理和Qmを演算し、前記ビット計数回路は、当該排他的論理和Qmに含まれる、予め設定された有効ビット値に関する第1のビット数PQmと、前記記憶回路から読み出した前記重み係数Wに含まれる前記有効ビット値に関する第2のビット数PWとの差分Smを計数してもよい。
【0012】
上述した課題を解決するために、本発明に係る畳み込み演算方法は、M(Mは2以上の整数)ビット幅を有するN(Nは2以上の整数)個の入力データXn(n=1,2,…,N)と、各ビット値が前記入力データXnに関する重みを示すNビット幅の重み係数Wとを畳み込み演算し、得られた畳み込み演算結果Yを出力する演算処理装置で用いられる畳み込み演算方法であって、前記重み係数Wを用いた排他的論理和演算ステップと、前記排他的論理和演算ステップの演算結果Qmおよび前記重み係数Wにおける有効ビット値を計数するビット計数ステップと、前記ビット計数ステップの計数結果に基づいてシフト演算を行うビットシフトステップと、を備える。
【0013】
上述した課題を解決するために、本発明に係るプログラムは、上記の畳み込み演算方法を実行するためのプログラムである。
【0014】
上述した課題を解決するために、本発明に係る畳み込みニューラルネットワーク装置は、入力データと重み係数とを畳み込み演算することにより、前記入力データの特徴量を抽出する演算処理部を備える畳み込みニューラルネットワーク装置であって、前記演算処理部は、請求項1ないし10のいずれか1項に記載の畳み込み演算回路を含む。また、前記演算処理部は、FPGAまたはPLDが用いられてもよい。また、前記演算処理部は、マイクロプロセッサが用いられてもよい。
【発明の効果】
【0015】
本発明によれば、乗算処理を必要とすることなく、XOR(eXclusive OR)、減算、およびビットシフトの各ビット演算処理で畳み込み演算結果を得ることができる。したがって、回路構成の簡略化さらには処理の高速化を実現することが可能となる。このため、少ないリソースで畳み込み演算を高速処理することができ、リソースが限られているFPGAなどのPLDを用いても容易に畳み込み演算回路を実現することができる。また、画像データなどのデータ量の大きい入力データであっても、その特徴量を効率よく抽出することができる。したがって、膨大なハードウェア量や消費電力を必要とすることなく演算処理できる畳み込みニューラルネットワーク装置を実現することが可能となる。
【図面の簡単な説明】
【0016】
図1】第1の実施の形態にかかる畳み込み演算回路の構成を示すブロック図である。
図2】第1の実施の形態にかかる畳み込み演算処理を示すフローチャートである。
図3】第1の実施の形態にかかる畳み込み演算動作例を示す説明図である。
図4】第2の実施の形態にかかる畳み込み演算回路を示すブロック図である。
図5】第2の実施の形態にかかる畳み込み演算処理を示すフローチャートである。
図6】第2の実施の形態にかかる畳み込み演算動作例を示す説明図である。
図7】従来の畳み込みニューラルネットワーク装置の構成例である。
図8】畳み込み演算処理を示す説明図である。
【発明を実施するための形態】
【0017】
次に、本発明の実施の形態について図面を参照して説明する。
[第1の実施の形態]
まず、図1を参照して、本発明の第1の実施の形態にかかる畳み込み演算回路10について説明する。図1は、第1の実施の形態にかかる畳み込み演算回路の構成を示すブロック図である。
【0018】
この畳み込み演算回路10は、畳み込みニューラルネットワーク装置などの演算処理装置で用いられて、M(Mは1以上の整数)ビット幅を有するN(Nは2以上の整数)個の入力データXn(n=1,2,…,N)と、各ビット値が前記入力データXnに関する重みを示すNビット幅の重み係数Wとを畳み込み演算し、得られた畳み込み演算結果Yを出力する。なお、本実施の形態において、重み係数Wは、従来の「1」または「-1」に代えて、「1」または「0」の2値で表現されているものとする。
【0019】
図1に示すように、本実施の形態にかかる畳み込み演算回路10は、主な回路部として、ビット変換回路11、記憶回路12、排他的論理和回路13、ビット計数回路14、ビットシフト回路15、および合算回路16を備えている。
【0020】
ビット変換回路11は、N個の入力データXnのビット桁m(m=1,2,…,M)ごとに、N個の入力データXnのそれぞれから当該m桁目のビット値を抽出して、Nビット幅を有するM個のビット列Bmを生成する回路である。
記憶回路12は、半導体メモリからなり、予め入力された重み係数Wを記憶する。
排他的論理和回路13は、一般的なNビット幅のXORゲート回路からなり、ビット変換回路11から出力されたM個のビット列Bmのそれぞれについて、当該ビット列Bmと重み係数Wとの排他的論理和Qmを演算して出力する回路である。
【0021】
ビット計数回路14は、排他的論理和回路13から出力されたM個の排他的論理和Qmのそれぞれについて、当該排他的論理和Qmに含まれる、予め設定された「0」または「1」からなる有効ビット値の数であるビット数(第1のビット数)PQmと、重み係数Wに含まれる有効ビット値の数であるビット数(第2のビット数)PWとを計数し、ビット数PQmとビット数PWとの差分Smを計算する回路である。
【0022】
本実施の形態にかかる有効ビット値は、予め設定された「0」または「1」を示すビット値であり、ビット数PQmは、排他的論理和Qmを構成する各ビットに含まれる「0」または「1」の数である。例えば、後述の図3に示す例のように、Q0=「0111」である場合、有効ビット値「0」数は1つであるため、PQm=「1」となる。なお、有効ビット値に対して「0」または「1」のいずれの値を設定するかについては、排他的論理和回路13における演算処理方法に依存する。具体的には、排他的論理和回路13でXOR処理を行う場合、有効ビット値として「0」を設定し、XNOR処理を行う場合、有効ビット値として「1」を設定する。
【0023】
本実施の形態において、ビット計数回路14は、主な回路部として、ビットカウンタ14Q,14Wと、減算回路14Sとを含んでいる。
ビットカウンタ14Qは、一般的なビットカウンタからなり、排他的論理和回路13から出力された排他的論理和Qmに含まれる、有効ビット値「0」の数であるビット数PQmを計数する回路である。ビットカウンタ14Qは、本発明の一構成例における第1のビットカウンタとして作用する。
【0024】
ビットカウンタ14Wは、一般的なビットカウンタからなり、記憶回路12から取得した重み係数Wに含まれる、有効ビット値「0」の数であるビット数PWを計数する回路である。ビットカウンタ14Wは、本発明の一構成例における第2のビットカウンタとして作用する。
減算回路14Sは、一般的な減算器からなり、ビットカウンタ14Qから出力されたビット数PQmから、ビットカウンタ14Wから出力されたビット数PWを減算することにより差分Smを計算して出力する回路である。
【0025】
ビットシフト回路15は、一般的なシフトレジスタからなり、減算回路14Sから出力されたM個の差分Smのそれぞれについて、当該差分Smをm-1桁分だけ上位ビット側にシフトしたシフト値Dmを計算し、得られた合算結果を畳み込み演算結果Yとして出力する回路である。
合算回路16は、一般的な合算器からなり、ビットシフト回路15から出力されたM個のシフト値Dmを合算して得られた畳み込み演算結果Yを出力する回路である。
【0026】
[第1の実施の形態の動作]
次に、図2を参照して、本実施の形態にかかる畳み込み演算回路10の動作について説明する。図2は、第1の実施の形態にかかる畳み込み演算処理を示すフローチャートである。畳み込み演算処理の実行に際し、記憶回路12には、重み係数Wが登録されているものとする。また、有効ビット値として「0」が予め設定されているものとする。
【0027】
まず、ビット変換回路11は、Mビット幅を有するN個の入力データXn(n=1,2,…,N)を取得し(ステップ100)、Xnを構成する各ビットのビット桁m(m=1,2,…,M)ごとに、これらN個のXnのそれぞれから当該m桁目のビット値を抽出して、Nビット幅を有するM個のビット列Bmに変換して出力する(ステップ101)。
【0028】
また、ビット計数回路14は、記憶回路12からNビット幅の重み係数Wを取得し(ステップ102)、ビットカウンタ14Wにより、重み係数Wに含まれる有効ビット値「0」の数であるビット数PWを計数する(ステップ103)。
この後、畳み込み演算回路10は、以下のステップ111~ステップ114に示すループ処理の実行を開始することにより、M個のビット列Bm(m=1,2,…,M)のそれぞれに関するシフト値Dmを計算する(ステップ110)。
【0029】
まず、排他的論理和回路13は、ビット変換回路11から出力されたビット列Bmと重み係数Wとの排他的論理和Qmを演算して出力する(ステップ111)。
次に、ビット計数回路14は、ビットカウンタ14Qにより、排他的論理和回路13から出力された排他的論理和Qmに含まれる、有効ビット値「0」の数であるビット数PQmを計数する(ステップ112)。
【0030】
この後、ビット計数回路14は、減算回路14Sにより、ビットカウンタ14Qから出力されたビット数PQmから、ビットカウンタ14Wから出力されたビット数PWを減算することにより差分Smを計算して出力する(ステップ113)。
次に、ビットシフト回路15は、減算回路14Sから出力された差分Smを、上位ビット側にm-1桁分だけシフトしたシフト値Dmを計算して出力する(ステップ114)。これにより、m桁目の差分Smに対してm桁目の重み2m-1が与えられたシフト値Dmが得られる。
【0031】
このようにして、畳み込み演算回路10は、各ビット列Bmと対応するM個のシフト値Dmが得られた時点でループ処理を終了する(ステップ115)。
この後、合算回路16は、ビットシフト回路15から出力されたM個のシフト値Dmを合算し、得られた合算結果を畳み込み演算結果Yとして出力し(ステップ104)、一連の畳み込み演算処理を終了する。
【0032】
[第1の実施の形態にかかる動作例]
次に、図3を参照して、本実施の形態にかかる畳み込み演算回路10の動作例について説明する。図3は、第1の実施の形態にかかる畳み込み演算動作例を示す説明図である。
ここでは、理解を容易とするため、2ビット幅(M=2)を有する4つ(N=4)の入力データXn「3,1,0,2」が入力されるものとし、これらXnに対する4ビット分の重み係数Wが「1,0,1,1」である場合を例として説明する。なお、有効ビット値として「0」が予め設定されているものとする。
【0033】
まず、4つの入力データXnは、ビット変換回路11に入力されて、4ビット幅を有する2個のビット列に変換され、これらXnに関する最下位ビット(LSB)から1桁目(m=1)のビット列B1=「1100」と、最下位ビットから2桁目(m=2)のビット列B2=「1001」とが生成される。
これらB1,B2は、排他的論理和回路13に入力されて、それぞれ重み係数W「1011」とのXORが演算され、排他的論理和Q1=「0111」と排他的論理和Q2=「0010」とが出力される。
【0034】
次に、これらQ1,Q2は、ビット計数回路14のビットカウンタ14Wに入力されて、それぞれ有効ビット数「0」がカウントされ、Q1から得られたビット数PQ1=「1」とQ2から得られたビット数PQ2=「3」とが出力される。
また、W=「1011」は、ビット計数回路14のビットカウンタ14Qに入力されて、有効ビット数「0」がカウントされ、ビット数PW=「1」が出力される。
【0035】
続いて、これらPQ1,PQ2は、ビット計数回路14の減算回路14Sに入力されて、それぞれPWとの差分S1=PQ1-PW=「0(=1-1)」と、差分S2=PQ2-PW=「2(=3-1)」とが計算されて出力される。
【0036】
次に、これらS1,S2は、ビットシフト回路15に入力されて、それぞれm-1桁分だけ上位ビット側にシフトされて、シフト値D1=S1×20=「0(=0×1)」とシフト値D2=S2×21「4(=2×2)」とが計算されて出力される。
この後、これらD1,D2は、合算回路16に入力されて合算され、畳み込み演算結果Y=D1+D2=「4(=0+4)」が出力される。
【0037】
一方、従来の畳み込み演算処理では、入力データXn=「3,1,0,2」と重み係数W=「1,-1,1,1」とが、それぞれ乗算されて乗算値MU1=「3(=3×1)」、MU2=「-1(=1×-1)」、MU3=「0(=0×1)」、MU4=「2(=2×1)」が計算される。なお、重み係数Wは{1,-1}で表現されているものとする。この後、これら乗算値MUnの合計MU1+MU2+MU3+MU4=「4」が畳み込み演算結果YCとして出力される。
【0038】
これにより、本実施の形態にかかる畳み込み演算処理で、従来の畳み込み演算処理と等しい畳み込み演算結果Yが得られていることがわかる。また、従来の畳み込み演算処理では、入力データXnの個数N個分の乗算処理が必要であるが、本実施の形態にかかる畳み込み演算処理によれば、XOR、減算、およびビットシフトの各ビット演算処理で実現でき、回路構成の簡略化さらには処理の高速化が実現されることがわかる。
【0039】
[第1の実施の形態の効果]
このように、本実施の形態は、ビット変換回路11が、N個の入力データXnから各ビット桁mのビット列Bmをそれぞれ生成し、排他的論理和回路13が、得られたM個のビット列Bmについて、当該ビット列Bmと重み係数Wとの排他的論理和Qmをそれぞれ演算し、ビット計数回路14が、得られたM個の排他的論理和Qmについて、当該排他的論理和Qmに含まれる、予め設定された有効ビット値の数であるビット数PQmと、重み係数Wに含まれる有効ビット値の数であるビット数PWとを計数して、両者の差分Smを計算し、ビットシフト回路15が、得られたM個の差分Smについて、当該差分Smを上位ビット側にm-1桁分だけシフトしたシフト値Dmを計算し、合算回路16が、得られたM個のシフト値Dmを合算し、畳み込み演算結果Yとして出力するようにしたものである。
【0040】
これにより、乗算処理を必要とすることなく、XOR、減算、およびビットシフトの各ビット演算処理で畳み込み演算結果を得ることができる。したがって、回路構成の簡略化さらには処理の高速化を実現することが可能となる。このため、少ないリソースで畳み込み演算を高速処理することができ、リソースが限られているFPGAなどのPLDを用いても容易に畳み込み演算回路を実現することができる。また、画像データなどのデータ量の大きい入力データであっても、その特徴量を効率よく抽出することができる。したがって、膨大なハードウェア量や消費電力を必要とすることなく演算処理できる畳み込みニューラルネットワーク装置を実現することが可能となる。
【0041】
また、本実施の形態において、ビット計数回路14を、排他的論理和Qmに含まれる、有効ビット値「0」の数であるビット数PQmを計数するビットカウンタ14Qと、重み係数Wに含まれる、有効ビット値「0」の数であるビット数PWを計数するビットカウンタ14Wと、ビット数PQmからビット数PWを減算することにより差分Smを出力する減算回路14Sとから構成してもよい。
これにより、少ないリソースで各入力データXnに関する差分Smを計算することができる。
【0042】
また、本実施の形態において、重み係数Wを記憶する記憶回路12をさらに備え、排他的論理和回路13は、ビット列Bmごとに、当該ビット列Bmと記憶回路から読み出した重み係数Wとの排他的論理和Qmを演算し、ビット計数回路14は、当該排他的論理和Qmに含まれる、予め設定された有効ビット値の数であるビット数PQmと、記憶回路から読み出した重み係数Wに含まれる有効ビット値の数であるビット数PWとの差分Smを計数するようにしてもよい。
【0043】
これにより、畳み込みニューラルネットワーク装置などの演算処理装置から指定された重み係数Wを排他的論理和回路13とビット計数回路14とで利用することができる。したがって、入力データXnに応じて任意の重み係数Wを切り替えることができ、1つの畳み込み演算回路10を演算処理システム内で必要となる各種の畳み込み演算処理で兼用することが可能となる。このため、演算処理システム全体のハードウェア量を効率よく削減できる。
【0044】
[第2の実施の形態]
次に、図4を参照して、本発明の第2の実施の形態にかかる畳み込み演算回路10について説明する。図4は、第2の実施の形態にかかる畳み込み演算回路を示すブロック図である。
前述した第1の実施の形態では、排他的論理和回路13でBmとWとの排他的論理和Qmを演算し、ビット計数回路14で有効ビット「0」を計数する場合を例として説明したが、これらの回路を汎用のロジック回路で実現した場合、ある程度のリソースを必要とする。一般には、XOR回路よりXNOR(eXclusive NOR)回路を用いたほうが少ないリソースで実現できる。また、ビットカウンタとして汎用のPOPカウンタ(Population Counter)で有効ビット「1」を計数したほうが少ないリソースで実現できる。
【0045】
本実施の形態は、このような汎用のリソースに着目し、排他的論理和回路13として否定排他的論理和QImを演算するXNOR回路で実現でき、ビット計数回路14のビットカウンタ14Q,14Wとして、POPカウンタで実現できるようにしたものである。
すなわち、本実施の形態において、排他的論理和回路13は、一般的なNビット幅のXNORゲート回路からなり、M個のビット列Bmのそれぞれについて、当該ビット列Bmと重み係数Wとの否定排他的論理和QImを演算する。
【0046】
また、ビット計数回路14は、M個の否定排他的論理和QImのそれぞれについて、当該否定排他的論理和QImに含まれる、有効ビット値「1」の数であるビット数(第3のビット数)PQImを計数するビットカウンタ(第3のビットカウンタ)14Qと、重み係数Wをビット反転した反転重み係数WIを出力するインバータ14Iと、反転重み係数WIに含まれる、有効ビット値「1」の数であるビット数(第4のビット数)PWIを計数するビットカウンタ(第4のビットカウンタ)14Wと、ビット数PQImからビット数PWIを減算することにより差分Smを出力する減算回路14Sとを備えている。
なお、本実施の形態にかかる上記以外の構成については、前述した第1の実施の形態と同様であり、ここでの詳細な説明は省略する。
【0047】
[第2の実施の形態の動作]
次に、図5を参照して、本実施の形態にかかる畳み込み演算回路10の動作について説明する。図5は、第2の実施の形態にかかる畳み込み演算処理を示すフローチャートである。畳み込み演算処理の実行に際し、記憶回路12には、重み係数Wが登録されているものとする。また、有効ビット値として「1」が予め設定されているものとする。
【0048】
まず、ビット変換回路11は、Mビット幅を有するN個の入力データXn(n=1,2,…,N)を取得し(ステップ200)、Xnを構成する各ビットのビット桁m(m=1,2,…,M)ごとに、これらN個のXnのそれぞれから当該m桁目のビット値を抽出して、Nビット幅を有するM個のビット列Bmに変換して出力する(ステップ201)。
【0049】
また、ビット計数回路14は、記憶回路12からNビット幅の重み係数Wを取得し(ステップ202)、インバータ14Iにより重み係数Wを反転した反転重み係数WIを計算し(ステップ203)、ビットカウンタ14Wにより、反転重み係数WIに含まれる有効ビット値「1」の数であるビット数PWIを計数する(ステップ204)。このPWIの値は、前述したPIの値と等しい。
この後、畳み込み演算回路10は、以下のステップ211~ステップ214に示すループ処理の実行を開始実行することにより、M個のビット列Bm(m=1,2,…,M)のそれぞれに関するシフト値Dmを計算する(ステップ210)。
【0050】
まず、排他的論理和回路13は、ビット変換回路11から出力されたビット列Bmと重み係数Wとの排他的論理和Qmを演算して出力する(ステップ211)。
次に、ビット計数回路14は、ビットカウンタ14Qより、排他的論理和回路13から出力された排他的論理和Qmに含まれる、有効ビット値「1」の数であるビット数PQImを計数する(ステップ212)。このPQImの値は、前述したPQmの値と等しい。
【0051】
この後、ビット計数回路14は、減算回路14Sにより、ビットカウンタ14Qから出力されたビット数PQImから、ビットカウンタ14Wから出力されたビット数PWIを減算することにより差分Smを計算して出力する(ステップ213)。
次に、ビットシフト回路15は、減算回路14Sから出力された差分Smを、上位ビット側にm-1桁分だけシフトしたシフト値Dmを計算して出力する(ステップ214)。これにより、m桁目の差分Smに対してm桁目の重み2m-1が与えられたシフト値Dmが得られる。
【0052】
このようにして、畳み込み演算回路10は、各ビット列Bmと対応するM個のシフト値Dmが得られた時点でループ処理を終了する(ステップ215)。
この後、合算回路16は、ビットシフト回路15から出力されたM個のシフト値Dmを合算し、得られた合算結果を畳み込み演算結果Yとして出力し(ステップ205)、一連の畳み込み演算処理を終了する。
【0053】
[第2の実施の形態にかかる動作例]
次に、図6を参照して、本実施の形態にかかる畳み込み演算回路10の動作例について説明する。図6は、第2の実施の形態にかかる畳み込み演算動作例を示す説明図である。
ここでは、2ビット幅(M=2)を有する4つ(N=4)の入力データXnが「3,1,0,2」が入力されるものとし、これらXnに対する1ビット幅の重み係数Wが「1,0,1,1」である場合を例として説明する。なお、有効ビット値として「1」が予め設定されているものとする。
【0054】
まず、4つの入力データXnは、ビット変換回路11に入力されて、4ビット幅を有する2個のビット列に変換され、これらXnに関する最下位ビット(LSB)から1桁目(m=1)のビット列B1=「1100」と、最下位ビットから2桁目(m=2)のビット列B2=「1001」とが生成される。
これらB1,B2は、排他的論理和回路13に入力されて、それぞれ重み係数W「1011」とのXNORが演算され、否定排他的論理和QI1=「1000」と否定排他的論理和QI2=「1101」とが出力される。
【0055】
次に、これらQI1,QI2は、ビット計数回路14のビットカウンタ14Wに入力されて、それぞれ有効ビット数「1」がカウントされ、QI1から得られたビット数PQI1=「1」と、QI2から得られたビット数PQI2=「3」とが出力される。
また、W=「1011」は、インバータ14IでWI=「0100」に反転された後、ビット計数回路14のビットカウンタ14Qに入力されて、有効ビット数「1」がカウントされ、ビット数PWI=「1」が出力される。
【0056】
続いて、これらPQI1,PQI2は、ビット計数回路14の減算回路14Sに入力されて、それぞれPWIとの差分S1=PQI1-PWI=「0(=1-1)」と、差分S2=PQI2-PWI=「2(=3-1)」とが計算されて出力される。
【0057】
次に、これらS1,S2は、ビットシフト回路15に入力されて、それぞれm-1桁分だけ上位ビット側にシフトされて、シフト値D1=S1×20=「0(=0×1)」とシフト値D2=S2×21「4(=2×2)」とが計算されて出力される。
この後、これらD1,D2は、合算回路16に入力されて合算され、畳み込み演算結果Y=D1+D2=「4(=0+4)」が出力される。
【0058】
これにより、本実施の形態にかかる畳み込み演算処理で、第1の実施の形態にかかる畳み込み演算処理と等しい畳み込み演算結果Yが得られていることがわかる。また、第1の実施の形態にかかる畳み込み演算処理では、XORや有効ビット「0」を計数するビットカウンタが必要であるが、本実施の形態にかかる畳み込み演算処理によれば、より汎用的でリソースの小さいXNORやPOPカウンタで実現でき、回路構成の簡略化さらには処理の高速化が実現されることがわかる。
【0059】
[第2の実施の形態の効果]
このように、本実施の形態は、排他的論理和回路13が、M個のビット列Bmについて、当該ビット列Bmと重み係数Wとの否定排他的論理和QImをそれぞれ演算し、ビット計数回路14を、否定排他的論理和QImに含まれる、有効ビット値「1」の数であるビット数PQImを計数するビットカウンタ14Wと、重み係数Wをビット反転した反転重み係数WIを出力するインバータ14Iと、反転重み係数WIに含まれる、有効ビット値「1」の数であるビット数PWIを計数するビットカウンタ14Wと、ビット数PQImからビット数PWIを減算することにより差分Smを出力する減算回路14Sとから構成したものである。
【0060】
これにより、第1の実施の形態にかかるXORやビットカウンタに代えて、より汎用的で回路規模の小さいリソースであるXNORやPOPカウンタで実現でき、回路構成の簡略化さらには処理の高速化を実現することが可能となる。このため、より少ないリソースで畳み込み演算を高速処理することができ、リソースが限られているFPGAなどのPLDを用いても容易に畳み込み演算回路を実現することができる。また、画像データなどのデータ量の大きい入力データであっても、その特徴量を効率よく抽出することができる。したがって、膨大なハードウェア量や消費電力を必要とすることなく演算処理できる畳み込みニューラルネットワーク装置を実現することが可能となる。
【0061】
[実施の形態の拡張]
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解しうる様々な変更をすることができる。また、各実施形態については、矛盾しない範囲で任意に組み合わせて実施することができる。
【0062】
また、各実施の形態では、畳み込み演算処理を複数の回路部で実現する場合を例として説明したが、これに限定されるものではない。例えば、ビット変換回路11、排他的論理和回路13、ビット計数回路14、ビットシフト回路15、および合算回路16を、CPU(Central Processing Unit),FPU(Floating point number Processing Unit),GPU(Graphics Processing Unit),DSP(Digital Signal Processor)などのマイクロプロセッサとプログラムとが協働してなる演算処理部により、ビット変換部、排他的論理和部、ビット計数部、ビットシフト部、および合算部からなる各処理部で実現してもよい。
【0063】
この場合も、乗算処理を必要とすることなく、XOR、減算、およびビットシフトの各ビット演算処理で畳み込み演算結果を得ることができ、処理構成の簡略化さらには処理の高速化を実現することが可能となる。このため、少ないリソースで畳み込み演算を高速処理することができ、リソースが限られているマイクロプロセッサを用いても容易に実現することができる。また、画像データなどのデータ量の大きい入力データであっても、その特徴量を効率よく抽出することができる。したがって、膨大なハードウェア量や消費電力を必要とすることなく演算処理できる畳み込みニューラルネットワーク装置を実現することができる。
【符号の説明】
【0064】
10…畳み込み演算回路、11…ビット変換回路、12…記憶回路、13…排他的論理和回路、14…ビット計数回路、14Q,14W…ビットカウンタ、14S…減算回路、14I…インバータ、15…ビットシフト回路、16…合算回路。
図1
図2
図3
図4
図5
図6
図7
図8