(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024116876
(43)【公開日】2024-08-28
(54)【発明の名称】ニューラルネットワーク処理装置、ニューラルネットワーク処理方法、及びニューラルネットワーク処理プログラム
(51)【国際特許分類】
G06N 3/0464 20230101AFI20240821BHJP
【FI】
G06N3/0464
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2023022710
(22)【出願日】2023-02-16
(71)【出願人】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(71)【出願人】
【識別番号】591230295
【氏名又は名称】NTTイノベーティブデバイス株式会社
(74)【代理人】
【識別番号】110001519
【氏名又は名称】弁理士法人太陽国際特許事務所
(72)【発明者】
【氏名】大森 優也
(72)【発明者】
【氏名】中村 健
(72)【発明者】
【氏名】小林 大祐
(72)【発明者】
【氏名】堀下 祐輔
(72)【発明者】
【氏名】鵜澤 寛之
(72)【発明者】
【氏名】吉田 周平
(72)【発明者】
【氏名】八田 彩希
(72)【発明者】
【氏名】飯沼 宥光
(72)【発明者】
【氏名】吉沢 猛司
(72)【発明者】
【氏名】増田 圭彦
(57)【要約】
【課題】畳み込みニューラルネットワークにwinograd変換処理を適用する場合に、適用範囲を拡大しつつ、演算量の削減を実現する。
【解決手段】ニューラルネットワーク処理装置は、拡張率が2以上となる拡張畳み込み層である二次元畳み込み層に対して、拡張率の値に応じて、入力特徴マップから複数のサブ入力特徴マップを作成し、拡張率の値に応じて、入力カーネルから0となる部分を除いた縮小カーネルを作成し、複数のサブ入力特徴マップの各々と縮小カーネルに対して、winograd変換処理を行い、複数のサブ入力特徴マップの各々に対応する複数のサブ畳み込み結果を得て、複数のサブ畳み込み結果を合成して、二次元畳み込み層に対する畳み込み結果を得る。
【選択図】
図2
【特許請求の範囲】
【請求項1】
畳み込みニューラルネットワークのwinograd変換処理で指定される拡張率が2以上となる拡張畳み込み層である二次元畳み込み層に対して、前記拡張率の値に応じて、入力特徴マップから複数のサブ入力特徴マップを作成するサブ入力特徴マップ作成部と、
前記拡張率の値に応じて、入力カーネルから0となる部分を除いた縮小カーネルを作成する縮小カーネル作成部と、
前記複数のサブ入力特徴マップの各々と前記縮小カーネルに対して、winograd変換処理を行い、前記複数のサブ入力特徴マップの各々に対応する複数のサブ畳み込み結果を得るwinograd変換処理部と、
前記複数のサブ畳み込み結果を合成して、前記二次元畳み込み層に対する畳み込み結果を得るサブ畳み込み結果合成部と、
を備えたニューラルネットワーク処理装置。
【請求項2】
前記winograd変換処理部は、前記拡張率が1となる拡張畳み込み層ではない二次元畳み込み層に対して、winograd変換処理を行い、入力特徴マップに対応する畳み込み結果を得る、
請求項1に記載のニューラルネットワーク処理装置。
【請求項3】
前記サブ入力特徴マップ作成部は、前記拡張率の値に応じて、前記入力特徴マップの各画素を分離する単位である複数の分離単位を決定し、前記複数の分離単位の各々について同じ位置の画素を選択し、選択した画素をまとめて前記サブ入力特徴マップを作成し、
前記縮小カーネル作成部は、前記拡張率の値に応じた位置に挿入されている0を除き、前記入力カーネルよりも小さいサイズの前記縮小カーネルを作成する、
請求項1に記載のニューラルネットワーク処理装置。
【請求項4】
前記winograd変換処理部は、
前記縮小カーネルに対する行列変換を行う第1行列変換部と、
前記複数のサブ入力特徴マップの各々に対する行列変換を行う第2行列変換部と、
前記第1行列変換部により行列変換された前記縮小カーネルと、前記第2行列変換部により行列変換された前記複数のサブ入力特徴マップの各々とのアダマール積を導出する乗算処理部と、
前記アダマール積に対する行列変換を行い、前記複数のサブ畳み込み結果を得る第3行列変換部と、
を含む、
請求項3に記載のニューラルネットワーク処理装置。
【請求項5】
ニューラルネットワーク処理装置が、
畳み込みニューラルネットワークのwinograd変換処理で指定される拡張率が2以上となる拡張畳み込み層である二次元畳み込み層に対して、前記拡張率の値に応じて、入力特徴マップから複数のサブ入力特徴マップを作成し、
前記拡張率の値に応じて、入力カーネルから0となる部分を除いた縮小カーネルを作成し、
前記複数のサブ入力特徴マップの各々と前記縮小カーネルに対して、winograd変換処理を行い、前記複数のサブ入力特徴マップの各々に対応する複数のサブ畳み込み結果を得て、
前記複数のサブ畳み込み結果を合成して、前記二次元畳み込み層に対する畳み込み結果を得る、
ニューラルネットワーク処理方法。
【請求項6】
畳み込みニューラルネットワークのwinograd変換処理で指定される拡張率が2以上となる拡張畳み込み層である二次元畳み込み層に対して、前記拡張率の値に応じて、入力特徴マップから複数のサブ入力特徴マップを作成し、
前記拡張率の値に応じて、入力カーネルから0となる部分を除いた縮小カーネルを作成し、
前記複数のサブ入力特徴マップの各々と前記縮小カーネルに対して、winograd変換処理を行い、前記複数のサブ入力特徴マップの各々に対応する複数のサブ畳み込み結果を得て、
前記複数のサブ畳み込み結果を合成して、前記二次元畳み込み層に対する畳み込み結果を得る処理を、
コンピュータに実行させるためのニューラルネットワーク処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
開示の技術は、ニューラルネットワーク処理装置、ニューラルネットワーク処理方法、及びニューラルネットワーク処理プログラムに関する。
【背景技術】
【0002】
畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)においては、ネットワークモデルが複数の層で構成され、畳み込み層(Convolutional layer)では畳み込み処理を行う。畳み込み処理では、
図10に示すように、前層等の入力特徴マップ(入力fmapともいう。)、及び重み係数であるカーネルを入力とする。入力特徴マップと入力カーネルとで畳み込み演算(積和演算)して得られた畳み込み演算結果にbias値を加算し、活性化関数処理を行う。これにより出力特徴マップを得る。
【0003】
CNNの推論処理をLSI(Large Scale Integration)、FPGA(Field Programmable Gate Array)等の専用ハードウェアで実装する場合、推論処理の中でも畳み込み演算が演算量の大部分を占める。畳み込み演算は積和演算の繰り返しであるため、演算回路としては乗算器と加算器で構成され、特に、乗算器の必要回路面積は加算器よりも大きいため、畳み込み演算部の乗算器がCNN推論ハードウェアの演算器の大部分を占める。このため、畳み込み演算の乗算器がハードウェアの面積又は電力を左右し、乗算器を有効に活用できるかどうかが面積又は電力当たりのスループット(推論処理性能)を左右する。
【0004】
畳み込み演算の乗算回数の削減手法として、winograd変換が知られている(例えば、非特許文献1参照)。winograd変換は、
図11に示すように、入力特徴マップ及び入力カーネルの各々に対して事前に行列変換を行い、変換後入力特徴マップと変換後入力カーネルとでアダマール積の乗算をとり、その後さらに事後の行列変換を行う。これにより畳み込み演算と同様の結果を得ることができる。その際に、アダマール積で必要な乗算回数は、本来の畳み込み演算で必要な乗算回数よりも減るため、全体として演算量を削減することができる。推論ハードウェアの場合は実装すべき乗算回路が少なくてすみ、回路面積又は電力当たりのスループットが向上する。
【0005】
図11に示すwinograd変換の変換式は、下記の式(1)により表される。但し、Iは入力特徴マップ、I′は変換後入力特徴マップ、Kは入力カーネル、K′は変換後入力カーネル、O′はアダマール積結果、Oは畳み込み結果、A、B、Cは変換行列を示す。また、Tは転置行列を示す。
【0006】
【0007】
例えば、入力特徴マップのサイズを4×4、入力カーネルのサイズを3×3、畳み込み結果のサイズを2×2とした場合について、
図12に示す。
【0008】
図12に示すサイズ構成の場合、winograd変換に用いる変換行列A、B、Cは、以下の式(2)のように決定される。
【0009】
【0010】
変換後入力特徴マップのサイズは4×4、変換後入力カーネルのサイズは3×3となる。これらのアダマール積は16回の乗算が必要となる。アダマール積の乗算の後の変換行列Aによって4×4のアダマール積結果O′が2×2の畳み込み結果Oとなる。
【0011】
通常の畳み込み演算の場合、(3×3)×(2×2)=36回の乗算が必要であるのに対して、winograd変換を利用することで16回の乗算ですみ、4/9倍の乗算数となる。同様に、5×5の入力カーネルの場合、畳み込み結果のサイズを2×2とすると、9/25倍の乗算数ですむ。
【先行技術文献】
【非特許文献】
【0012】
【非特許文献1】“Fast Algorithms for Convolutional Neural Networks", Andrew Lavin, Scott Gray.
【発明の概要】
【発明が解決しようとする課題】
【0013】
一方、変換行列A、B、Cは、カーネルサイズ毎に異なるものとなる。CNN推論処理をハードウェア実装する場合、あらゆるカーネルサイズ毎の変換行列A、B、Cを用意するのは現実的ではなく、さらに、あらゆる変換行列A、B、Cによる行列処理を行えるようなwinograd変換用回路を実装するのも現実的ではない。
【0014】
このため、特定のカーネルサイズ(例えば、3×3)の場合だけに対応したwinograd変換用回路を用意し、3×3の場合はwinograd変換用回路を利用して処理速度を向上させ、3×3以外の場合はwinograd変換用回路を利用せずに通常の畳み込み演算処理を行い処理速度は向上させない、という方式をとる場合が多い。この場合、winograd変換用回路を利用できる範囲が少なく、汎用性に乏しい。
【0015】
さらに、通常の畳み込み層以外でのwinograd変換は適用が難しく、適用しても十分な効果が出ない可能性がある。
【0016】
近年のCNN推論モデルでは、拡張畳み込み層(dilated convolution)という特殊な畳み込み層を含むことが多い。拡張畳み込み層は、カーネル内の飛び飛びの位置のみを有効にする。飛び飛びの間隔を拡張率(dilation rate:dr)と呼び、3×3カーネルの場合の拡張率(dr)=1、2、4は、
図13に示すようになる。拡張率(dr)=1は通常畳み込みと同様となる。
【0017】
拡張畳み込み層により、畳み込み演算の積和回数を変えずに、広範囲の入力特徴マップから畳み込みを行うことができる。例えば、サイズが3×3で拡張率が2の入力カーネルは、5×5の入力カーネルで25点中16点の値が0であるものと等しいが、演算回数は3×3の通常畳み込みと同様であり、5×5の9/25倍である。
【0018】
しかしながら、winograd変換では、飛び飛びのカーネルには対応できないため、飛び飛び以外の無効カーネルを0で埋めて通常の畳み込み層として扱うことでのみ対応が可能となる。例えば、3×3で拡張率が2のカーネルは、5×5としてみなすことでのみ、winograd変換の対応が可能となる。
【0019】
5×5のカーネルとみなして、winograd変換を行うことで、乗算数を通常の5×5の畳み込み層と比べて削減できるが、そもそも通常の5×5の畳み込み層が通常の3×3の畳み込み層よりも乗算数が大きいため、合わせると乗算数の削減効果がなくなってしまう。つまり、winograd変換での乗算数が9/25倍に減っても、5×5とみなすことで25/9倍となり、実質的に1倍となってしまう。
【0020】
このように、winograd変換用回路を適用可能な範囲が少なく、さらに、拡張畳み込み層のような特殊な畳み込み層では乗算数の削減効果がなくなり、winograd変換用回路による十分な処理速度の高速化が得られない。
【0021】
開示の技術は、上記の点に鑑みてなされたものであり、畳み込みニューラルネットワークにwinograd変換処理を適用する場合に、適用範囲を拡大しつつ、演算量の削減を実現することができるニューラルネットワーク処理装置、ニューラルネットワーク処理方法、及びニューラルネットワーク処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0022】
本開示の一態様に係るニューラルネットワーク処理装置は、畳み込みニューラルネットワークのwinograd変換処理で指定される拡張率が2以上となる拡張畳み込み層である二次元畳み込み層に対して、前記拡張率の値に応じて、入力特徴マップから複数のサブ入力特徴マップを作成するサブ入力特徴マップ作成部と、前記拡張率の値に応じて、入力カーネルから0となる部分を除いた縮小カーネルを作成する縮小カーネル作成部と、前記複数のサブ入力特徴マップの各々と前記縮小カーネルに対して、winograd変換処理を行い、前記複数のサブ入力特徴マップの各々に対応する複数のサブ畳み込み結果を得るwinograd変換処理部と、前記複数のサブ畳み込み結果を合成して、前記二次元畳み込み層に対する畳み込み結果を得るサブ畳み込み結果合成部と、を備える。
【0023】
本開示の一態様に係るニューラルネットワーク処理方法は、畳み込みニューラルネットワークのwinograd変換処理で指定される拡張率が2以上となる拡張畳み込み層である二次元畳み込み層に対して、前記拡張率の値に応じて、入力特徴マップから複数のサブ入力特徴マップを作成し、前記拡張率の値に応じて、入力カーネルから0となる部分を除いた縮小カーネルを作成し、前記複数のサブ入力特徴マップの各々と前記縮小カーネルに対して、winograd変換処理を行い、前記複数のサブ入力特徴マップの各々に対応する複数のサブ畳み込み結果を得て、前記複数のサブ畳み込み結果を合成して、前記二次元畳み込み層に対する畳み込み結果を得る。
【0024】
本開示の一態様に係るニューラルネットワーク処理プログラムは、畳み込みニューラルネットワークのwinograd変換処理で指定される拡張率が2以上となる拡張畳み込み層である二次元畳み込み層に対して、前記拡張率の値に応じて、入力特徴マップから複数のサブ入力特徴マップを作成し、前記拡張率の値に応じて、入力カーネルから0となる部分を除いた縮小カーネルを作成し、前記複数のサブ入力特徴マップの各々と前記縮小カーネルに対して、winograd変換処理を行い、前記複数のサブ入力特徴マップの各々に対応する複数のサブ畳み込み結果を得て、前記複数のサブ畳み込み結果を合成して、前記二次元畳み込み層に対する畳み込み結果を得る処理を、コンピュータに実行させる。
【発明の効果】
【0025】
開示の技術によれば、畳み込みニューラルネットワークにwinograd変換処理を適用する場合に、適用範囲を拡大しつつ、演算量の削減を実現することができる、という効果を有する。
【図面の簡単な説明】
【0026】
【
図1】実施形態に係るニューラルネットワーク処理装置のハードウェア構成の一例を示すブロック図である。
【
図2】実施形態に係るニューラルネットワーク処理装置の構成の一例を示すブロック図である。
【
図3】実施形態に係る畳み込み処理の説明に供する図である。
【
図4】入力特徴マップからサブ入力特徴マップを作成する処理の説明に供する図である。
【
図5】サブ入力特徴マップ及び縮小カーネルからサブ畳み込み結果を得る処理の説明に供する図である。
【
図6】実施形態に係るwinograd変換処理の説明に供する図である。
【
図7】サブ畳み込み結果から二次元畳み込み層に対する畳み込み結果を得る処理の説明に供する図である。
【
図8】実施形態に係るニューラルネットワーク処理装置による処理の流れの一例を示すフローチャートである。
【
図9】実施形態に係る別のニューラルネットワーク処理装置の構成の一例を示すブロック図である。
【発明を実施するための形態】
【0027】
以下、開示の技術の実施形態の一例を、図面を参照しつつ説明する。なお、各図面において、同一又は等価な構成要素及び部分には同一の参照符号を付与している。また、図面の寸法比率は、説明の都合上誇張されており、実際の比率とは異なる場合がある。
【0028】
本実施形態に係るニューラルネットワーク処理装置は、同一のカーネルサイズの拡張畳み込み層であってもwinograd変換を可能とし、winograd変換の適用範囲を拡大しつつ、演算量の削減を実現する。
【0029】
図1は、本実施形態に係るニューラルネットワーク処理装置10のハードウェア構成の一例を示すブロック図である。
【0030】
図1に示すように、ニューラルネットワーク処理装置10は、CNN用演算回路100と、メモリ200と、を備えている。メモリ200は、カーネル等を格納する。CNN用演算回路100は、メモリ200から転送されたカーネル等を利用して畳み込み処理や活性化関数処理等のCNN処理を行う。本実施形態に係るCNN用演算回路100は、CNN専用に設計されたハードウェアとして構成される。CNN用演算回路100は、例えば、FPGA(Field-Programmable Gate Array)等の製造後に回路構成を変更可能なPLD(Programmable Logic Device)、又は、ASIC(Application Specific Integrated Circuit)等の特定の処理を実行させるために専用に設計された回路構成を有するプロセッサである専用電気回路として構成される。
【0031】
次に、
図2を参照して、ニューラルネットワーク処理装置10の具体的な構成について説明する。
【0032】
図2は、本実施形態に係るニューラルネットワーク処理装置10の構成の一例を示すブロック図である。
【0033】
図2に示すように、ニューラルネットワーク処理装置10は、構成として、CNN用演算回路100を備えている。CNN用演算回路100は、winograd変換用の畳み込み演算を行うための回路を含んで構成される。具体的に、CNN用演算回路100は、縮小カーネル作成部101A、サブ入力特徴マップ作成部101B、winograd変換処理部102、及びサブ畳み込み結果合成部106を備えている。winograd変換処理部102は、第1行列変換部103A、第2行列変換部103B、乗算処理部104、及び第3行列変換部105を備えている。これらの各構成は、例えば、CNN専用に設計されたFPGA又はASICにより実現される。
【0034】
縮小カーネル作成部101Aは、拡張率(dilation rate)の値に応じて、入力カーネルから0となる部分を除いた縮小カーネルを作成する。具体的に、縮小カーネル作成部101Aは、例えば、拡張率の値に応じた位置に挿入されている0を除き、入力カーネルよりも小さいサイズの縮小カーネルを作成する。一例として、拡張率が2である場合、入力カーネルのサイズが5×5から3×3に縮小される。ここで、拡張率とは、畳み込みニューラルネットワークのwinograd変換処理で指定される値であり、上述したように、入力カーネル内の飛び飛びの間隔、つまり、入力カーネル内の有効カーネルの間隔を表している。一例として、上述の
図13に示すように、拡張率が2の場合、縦横1つ飛びに有効カーネルが配置され、拡張率が4の場合、縦横2つ飛びに有効カーネルが配置される。拡張率は、現層に対して予め指定された値が用いられ、例えば、メモリ200から取得される。また、入力カーネルは、前層等から取得される重み係数であるカーネルを表しており、例えば、メモリ200から取得される。
【0035】
サブ入力特徴マップ作成部101Bは、拡張率が2以上となる拡張畳み込み層である二次元畳み込み層に対して、拡張率の値に応じて、入力特徴マップから複数のサブ入力特徴マップを作成する。具体的に、サブ入力特徴マップ作成部101Bは、例えば、拡張率の値に応じて、入力特徴マップの各画素を分離する単位である複数の分離単位を決定し、複数の分離単位の各々について同じ位置の画素を選択し、選択した画素をまとめてサブ入力特徴マップを作成する。例えば、拡張率の値が2の場合、入力カーネルは縦横に2画素毎に1画素が有効化されるが、入力特徴マップの場合、縦横2画素で合計4画素の単位で分離し、4画素中の同一位置の画素をまとめてサブ入力特徴マップを作成する。サブ入力特徴マップは、拡張率の値の2乗分作成されるため、ここでは4つ作成される。
【0036】
winograd変換処理部102は、複数のサブ入力特徴マップの各々と縮小カーネルに対して、winograd変換処理を行い、複数のサブ入力特徴マップの各々に対応する複数のサブ畳み込み結果を得る。また、winograd変換処理部102は、拡張率が1となる拡張畳み込み層ではない二次元畳み込み層に対して、winograd変換処理を行い、入力特徴マップに対応する畳み込み結果を得る。つまり、拡張率が1の場合、入力特徴マップから複数のサブ入力特徴マップへの分離を行わず、通常の畳み込み処理を行う。
【0037】
具体的に、winograd変換処理部102は、第1行列変換部103A、第2行列変換部103B、乗算処理部104、及び第3行列変換部105を含む。
【0038】
第1行列変換部103Aは、一例として、上述の式(2)に示す変換行列Bを用いて、縮小カーネルに対する行列変換を行う。第2行列変換部103Bは、一例として、上述の式(2)に示す変換行列Cを用いて、複数のサブ入力特徴マップの各々に対する行列変換を行う。乗算処理部104は、第1行列変換部103Aにより行列変換された縮小カーネルと、第2行列変換部103Bにより行列変換された複数のサブ入力特徴マップの各々とのアダマール積を導出する。第3行列変換部105は、一例として、上述の式(2)に示す変換行列Aを用いて、アダマール積に対する行列変換を行い、複数のサブ畳み込み結果を得る。なお、変換行列A、B、Cは、カーネルサイズが一定であれば、拡張率が異なっていても同じ行列でよい。
【0039】
サブ畳み込み結果合成部106は、winograd変換処理部102によりwinograd変換処理して得られた複数のサブ畳み込み結果を合成して、二次元畳み込み層に対する畳み込み結果を得る。
【0040】
以下、入力特徴マップのサイズが8×8、拡張率が2、入力カーネルのサイズが5×5(縮小カーネルのサイズが3×3)、畳み込み結果が4×4の場合を例示して具体的に説明する。
【0041】
図3は、本実施形態に係る畳み込み処理の説明に供する図である。
【0042】
図3に示すように、入力特徴マップM1と入力カーネルK1との拡張畳み込みで、畳み込み結果C1を得る。畳み込み結果C1の各画素A~Dを得るために必要な入力特徴マップM1の画素1~16は、次の通りである。画素Aは画素1,2,3,5,6,7,9,10,11が必要とされ、画素Bは画素2,3,4,6,7,8,10,11,12が必要とされる。画素Cは画素5,6,7,9,10,11,13,14,15が必要とされ、画素Dは画素6,7,8,10,11,12,14,15,16が必要とされる。
【0043】
図4は、入力特徴マップM1からサブ入力特徴マップSM1~SM4を作成する処理の説明に供する図である。この処理は、サブ入力特徴マップ作成部101Bにより実行される。
【0044】
図4に示すように、入力特徴マップM1の2×2画素を1つの分離単位とする。入力特徴マップM1の各画素を複数の分離単位(ここでは16個)に分離し、複数の分離単位の各々の画素に対して番号(ここでは1~16)を割り当てる。そして、複数の分離単位の各々について同じ位置の画素を選択し、選択した画素をまとめてサブ入力特徴マップSM1~SM4を作成する。サブ入力特徴マップSM1~SM4の各々は、4×4のサイズとなる。つまり、入力特徴マップM1の分離単位(2×2画素)のうち、左上、右上、左下、右下の各位置について同じ位置の画素を選択し、選択した画素をまとめてサブ入力特徴マップSM1~SM4を作成する。
【0045】
このようにサブ入力特徴マップSM1~SM4を作成した場合、サブ入力特徴マップSM1~SM4の各々と、入力カーネルK1とは同様の飛び飛びの位置となっているため、サブ入力特徴マップSM1~SM4の各々と入力カーネルK1の畳み込み演算は、実質的には拡張(dilated)無しの通常の畳み込み処理と同様となる。この通常畳み込み処理により、サブ畳み込み結果を得ることができる。
【0046】
図5は、サブ入力特徴マップSM1~SM4及び縮小カーネルSK1からサブ畳み込み結果SC1~SC4を得る処理の説明に供する図である。この処理は、winograd変換処理部102により実行される。
【0047】
上述したように、5×5の入力カーネルK1の各カーネルについて9点が有効カーネル、16点が無効カーネル(=0)とした場合、
図5に示すように、無効カーネルを飛ばして9点の有効カーネルのみをまとめて3×3の通常カーネル(=縮小カーネルSK1)とすればよい。つまり、4×4のサブ入力特徴マップSM1~SM4の各々に対して、3×3の通常の縮小カーネルSK1を適用し、通常の畳み込み処理を実行すれば、元々の拡張畳み込み(dilated convolution)処理と同様の結果が得られる。サブ畳み込み結果SC1~SC4の各画素A~Dを得るために必要な入力特徴マップM1の画素1~16は、次の通りである。画素Aは画素1,2,3,5,6,7,9,10,11が必要とされ、画素Bは画素2,3,4,6,7,8,10,11,12が必要とされる。画素Cは画素5,6,7,9,10,11,13,14,15が必要とされ、画素Dは画素6,7,8,10,11,12,14,15,16が必要とされる。
【0048】
図6は、本実施形態に係るwinograd変換処理の説明に供する図である。
【0049】
図6に示すように、サブ入力特徴マップSM1~SM4に畳み込みされる縮小カーネルSK1は、5×5のカーネルではなく、3×3の通常カーネルであるため、winograd変換処理をそのまま適用することができる。つまり、上述したように、5×5のwinograd変換処理ではなく、3×3のwinograd変換処理を行うことで、演算量を削減することができる。本実施形態に係るwinograd変換処理は、3×3の通常畳み込みの処理と同様の手順をとる。
図6に示すwinograd変換処理は、上述の式(1)及び式(2)を用いて実行され、サブ入力特徴マップSM1~SM4及び縮小カーネルSK1からサブ畳み込み結果SC1~SC4を得る。
【0050】
図7は、サブ畳み込み結果SC1~SC4から二次元畳み込み層に対する畳み込み結果C1を得る処理の説明に供する図である。この処理は、サブ畳み込み結果合成部106により実行される。
【0051】
図7に示すように、最終的に作成された複数のサブ畳み込み結果SC1~SC4に対して、サブ入力特徴マップSM1~SM4を作成したときと逆の処理を行って畳み込み結果C1を得る。拡張率(dilation rate)の値に応じてサブ畳み込み結果SC1~SC4の各画素を交互に入れ子にして、複数のサブ畳み込み結果SC1~SC4から1つの畳み込み結果C1を作成する。これらの処理から得られる畳み込み結果C1は、分離せずに本来の拡張畳み込み層(dilated convolution)として処理して作成された場合の畳み込み結果と同様となる。
【0052】
次に、
図8を参照して、本実施形態に係るニューラルネットワーク処理装置10の作用について説明する。
【0053】
図8は、本実施形態に係るニューラルネットワーク処理装置10による処理の流れの一例を示すフローチャートである。ニューラルネットワーク処理装置10による処理は、ニューラルネットワーク処理装置10のCNN用演算回路100により、実現される。
【0054】
図8のステップS101では、CNN用演算回路100が、一例として、上述の
図3に示す入力特徴マップM1及び入力カーネルK1を取得する。
【0055】
ステップS102では、CNN用演算回路100が、現層について指定された拡張率の値が2以上であるか否かを判定する。拡張率の値が2以上であると判定した場合(肯定判定の場合)、ステップS103に移行し、拡張率の値が2未満、つまり、1であると判定した場合(否定判定の場合)、ステップS107に移行する。
【0056】
ステップS103では、CNN用演算回路100が、一例として、上述の
図4に示すように、入力特徴マップM1から複数のサブ入力特徴マップSM1~SM4を作成する。具体的には、拡張率の値に応じて、入力特徴マップM1の各画素を分離する単位である複数の分離単位を決定し、複数の分離単位の各々について同じ位置の画素を選択し、選択した画素をまとめてサブ入力特徴マップSM1~SM4を作成する。
【0057】
ステップS104では、CNN用演算回路100が、一例として、上述の
図5に示すように、拡張率の値に応じて、入力カーネルK1から縮小カーネルSK1を作成する。なお、ステップS103とステップS104とは処理の順序を入れ替えてもよい。
【0058】
ステップS105では、CNN用演算回路100が、一例として、上述の
図6に示すように、ステップS103で作成したサブ入力特徴マップSM1~SM4の各々とステップS104で作成した縮小カーネルSK1に対して、winograd変換処理を行い、複数のサブ畳み込み結果SC1~SC4を得る。
【0059】
ステップS106では、CNN用演算回路100が、一例として、上述の
図7に示すように、ステップS105で得られた複数のサブ畳み込み結果SC1~SC4を合成して、1つの畳み込み結果C1を得る。これにより、本ニューラルネットワーク処理装置10による一連の処理を終了する。
【0060】
一方、ステップS107では、CNN用演算回路100が、入力特徴マップM1と入力カーネルK1に対して、winograd変換処理を行い、1つの畳み込み結果を得る。つまり、拡張率が1の場合、入力カーネルK1は3×3の通常のカーネルとなるため、入力特徴マップM1から複数のサブ入力特徴マップへの分離を行わず、通常の畳み込み処理を行う。これにより、本ニューラルネットワーク処理装置10による一連の処理を終了する。
【0061】
なお、拡張率が2以外、つまり、3以上の場合であっても、拡張率の値に合わせて入力特徴マップの各画素を飛び飛びに選択してサブ入力特徴マップを作成すれば、それぞれのサブ入力特徴マップに対してwinograd変換処理を利用することができる。また、例えば、3×3の通常畳み込み層用のwinograd変換用回路を装置内に用意しておけば、あらゆる拡張率の3×3のカーネルに対して、上記手法によりwinograd変換処理を利用することができ、winograd変換の適用範囲を拡大しつつ、winograd変換適用による演算量の削減を実現することができる。
【0062】
図9は、本実施形態に係る別のニューラルネットワーク処理装置10Aの構成の一例を示すブロック図である。
【0063】
図9に示すニューラルネットワーク処理装置10Aでは、複数種類のカーネルサイズのwinograd変換処理に対応した回路とされる。この場合、サブ入力特徴マップ作成部101Bは、カーネルサイズによらず拡張率の値に応じて入力特徴マップを複数のサブ入力特徴マップに分離する。サブ畳み込み結果合成部106は、複数のサブ入力特徴マップ及び縮小カーネルから得られる複数のサブ畳み込み結果を合成して1つの畳み込み結果を得る。変換行列A、B、Cはカーネルサイズに応じたものを複数セット用意しておき、入力される現層のカーネルサイズに対応する変換行列を選択して、第1行列変換部103A、第2行列変換部103B、及び第3行列変換部105の各々に与える。
【0064】
このように本実施形態によれば、拡張畳み込み層により見かけのカーネルサイズが大きくなってしまう部分を、サブ入力特徴マップの作成により実際のカーネルサイズとして扱うことができる。このため、winograd変換による演算量の削減の効果を、拡張畳み込み層ではない通常の畳み込み層と同様に得ることができる。
【0065】
例えば、3×3で拡張率が2の場合でも、5×5としてwinograd変換を行うのではなく、3×3としてwinograd変換を行うことが可能であり、演算量を4/9倍に削減することができる。
【0066】
さらに、本来のwinograd変換用回路は、固定カーネルサイズの通常畳み込み処理でしか利用できない。例えば、3×3用winograd変換用回路をAI推論ハードウェア内に用意した場合、3×3の通常の畳み込み層の時にしか回路が利用できず、それ以外の層ではwinograd変換による高速化が行われない。
【0067】
これに対して、本実施形態によれば、カーネルサイズが一致さえしていれば、拡張率の値がどのような値の拡張畳み込み層であってもwinograd変換用回路を利用して高速化が可能となり、汎用性が向上する。
【0068】
上記の通り、通常畳み込み層用のwinograd変換用回路を用いて同一のカーネルサイズの拡張畳み込み層であってもwinograd変換可能とすることで、winograd変換の適用範囲を拡大しつつ、winograd変換適用による演算量の削減を実現することができる。
【0069】
上記実施形態でCNN用演算回路100が実行したニューラルネットワーク処理を、CPU(Central Processing Unit)等のプロセッサがニューラルネット処理プログラムを実行することで実現してもよい。例えば、ニューラルネットワーク処理プログラムがROM(Read Only Memory)又はストレージに予め記憶(「インストール」ともいう)されている態様としてもよい。ニューラルネットワーク処理プログラムは、CD-ROM(Compact Disk Read Only Memory)、DVD-ROM(Digital Versatile Disk Read Only Memory)、及びUSB(Universal Serial Bus)メモリ等の非一時的(non-transitory)記憶媒体に記憶された形態で提供されてもよい。また、ニューラルネットワーク処理プログラムは、ネットワークを介して外部装置からダウンロードされる形態としてもよい。
【0070】
また、ニューラルネットワーク処理を、これらの各種のプロセッサのうちの1つで実行してもよいし、同種又は異種の2つ以上のプロセッサの組み合わせ(例えば、複数のFPGA、及びCPUとFPGAとの組み合わせ等)で実行してもよい。また、これらの各種のプロセッサのハードウェア的な構造は、より具体的には、半導体素子等の回路素子を組み合わせた電気回路である。
【0071】
本明細書に記載された全ての文献、特許出願、及び技術規格は、個々の文献、特許出願、及び技術規格が参照により取り込まれることが具体的かつ個々に記された場合と同程度に、本明細書中に参照により取り込まれる。
【0072】
以上の実施形態に関し、更に以下の付記を開示する。
【0073】
(付記項1)
メモリと、
前記メモリに接続された少なくとも1つのプロセッサと、
を含み、
前記プロセッサは、
畳み込みニューラルネットワークのwinograd変換処理で指定される拡張率が2以上となる拡張畳み込み層である二次元畳み込み層に対して、前記拡張率の値に応じて、入力特徴マップから複数のサブ入力特徴マップを作成し、
前記拡張率の値に応じて、入力カーネルから0となる部分を除いた縮小カーネルを作成し、
前記複数のサブ入力特徴マップの各々と前記縮小カーネルに対して、winograd変換処理を行い、前記複数のサブ入力特徴マップの各々に対応する複数のサブ畳み込み結果を得て、
前記複数のサブ畳み込み結果を合成して、前記二次元畳み込み層に対する畳み込み結果を得るように構成されているニューラルネットワーク処理装置。
【0074】
(付記項2)
ニューラルネットワーク処理を実行するようにコンピュータによって実行可能なプログラムを記憶した非一時的記憶媒体であって、
前記ニューラルネットワーク処理は、
畳み込みニューラルネットワークのwinograd変換処理で指定される拡張率が2以上となる拡張畳み込み層である二次元畳み込み層に対して、前記拡張率の値に応じて、入力特徴マップから複数のサブ入力特徴マップを作成し、
前記拡張率の値に応じて、入力カーネルから0となる部分を除いた縮小カーネルを作成し、
前記複数のサブ入力特徴マップの各々と前記縮小カーネルに対して、winograd変換処理を行い、前記複数のサブ入力特徴マップの各々に対応する複数のサブ畳み込み結果を得て、
前記複数のサブ畳み込み結果を合成して、前記二次元畳み込み層に対する畳み込み結果を得る
非一時的記憶媒体。
【符号の説明】
【0075】
10、10A ニューラルネットワーク処理装置
100 CNN用演算回路
101A 縮小カーネル作成部
101B サブ入力特徴マップ作成部
102 winograd変換処理部
103A 第1行列変換部
103B 第2行列変換部
104 乗算処理部
105 第3行列変換部
106 サブ畳み込み結果合成部
200 メモリ