(57)【要約】【課題】  ニューラルネットワークのコンボルーション演算を処理する方法及び装置を提供する。【解決手段】  プロセッシングユニットが共通して共有する共有オペランドを、入力フィーチャーマップのピクセル値およびカーネルのウェイト値のうちのいずれか１つとして決定し、決定された共有オペランドに基づいて並列化された演算を行う方法及びそのためのニューラルネットワーク装置である。【選択図】      図３
2020126651.tif 000002
【特許請求の範囲】
【請求項１】
ニューラルネットワーク装置において、
少なくとも１つのプログラムが保存されたメモリと、
前記少なくとも１つのプログラムを行うことで、入力フィーチャーマップ(input  feature  map)とカーネル(kernal)との間のコンボルーション演算を処理するプロセッサと、を含み、
前記プロセッサは、
前記入力フィーチャーマップの特徴及び前記カーネルの特徴のうち少なくとも１つに基づいて、並列化された演算それぞれに共通して共有される共有オペランド(shared  operand)を、前記入力フィーチャーマップのピクセル値および前記カーネルのウェイト値のうちのいずれか１つとして決定するコントローラと、
前記決定された共有オペランドに基づいて前記並列化された演算を行うプロセッシングユニットと、を含む、ニューラルネットワーク装置。
【請求項２】
（１）前記コントローラは、
前記共有オペランドを前記入力フィーチャーマップのピクセル値として決定し、且つ
前記プロセッシングユニットは、
前記入力フィーチャーマップのピクセル値と前記カーネルのウェイト値とのそれぞれの演算を並列的に行う、或いは
（２）前記コントローラは、
前記共有オペランドを前記カーネルのウェイト値として決定し、且つ
前記プロセッシングユニットは、
前記カーネルのウェイト値と前記入力フィーチャーマップのピクセル値とのそれぞれの演算を並列的に行う、請求項１に記載のニューラルネットワーク装置。
【請求項３】
（１）前記コントローラは、
前記共有オペランドを前記入力フィーチャーマップの第１ピクセル値及び第２ピクセル値として決定し、且つ
前記プロセッシングユニットは、
前記入力フィーチャーマップの第１ピクセル値と前記カーネルのウェイト値とのそれぞれの演算を並列的に行う第１プロセッシングユニットと、
前記入力フィーチャーマップの第２ピクセル値と前記カーネルのウェイト値とのそれぞれの演算を並列的に行う第２プロセッシングユニットと、を含む、或いは
（２）前記コントローラは、
前記共有オペランドを前記カーネルの第１ウェイト値及び第２ウェイト値として決定し、且つ
前記プロセッシングユニットは、
前記カーネルの第１ウェイト値と前記入力フィーチャーマップのピクセル値とのそれぞれの演算を並列的に行う第１プロセッシングユニットと、
前記カーネルの第２ウェイト値と前記入力フィーチャーマップのピクセル値とのそれぞれの演算を並列的に行う第２プロセッシングユニットを含む、請求項１に記載のニューラルネットワーク装置。
【請求項４】
前記コントローラは、
第１レイヤの入力フィーチャーマップの特徴及び前記第１レイヤのカーネルの特徴のうち少なくとも１つに基づいて、前記第１レイヤの共有オペランドを、前記第１レイヤの入力フィーチャーマップのピクセル値および前記第１レイヤのカーネルのウェイト値のうちのいずれか１つとして決定し、
第２レイヤの入力フィーチャーマップの特徴及び前記第２レイヤのカーネルの特徴のうち少なくとも１つに基づいて、前記第２レイヤの共有オペランドを、前記第２レイヤの入力フィーチャーマップのピクセル値および前記第２レイヤのカーネルのウェイト値のうちのいずれか１つとして決定する、請求項１に記載のニューラルネットワーク装置。
【請求項５】
前記入力フィーチャーマップの特徴は、
前記入力フィーチャーマップ内でゼロ値を有するピクセルの比率及び前記入力フィーチャーマップの形状のうち少なくとも１つを含み、
前記カーネルの特徴は、
前記カーネル内でゼロ値を有するウェイトの比率を含む、請求項１に記載のニューラルネットワーク装置。
【請求項６】
前記コントローラは、
前記カーネル内でゼロ値を有するウェイトの比率が既設定の閾値よりも大きい場合に、前記共有オペランドを前記カーネルのウェイト値として決定する、請求項１に記載のニューラルネットワーク装置。
【請求項７】
前記共有オペランドを共通して共有するプロセッシングユニット数は、
前記入力フィーチャーマップの入力チャネルのピクセル数と同一であるか、前記カーネルの出力チャネル数と同一である、請求項１に記載のニューラルネットワーク装置。
【請求項８】
前記プロセッサは、
３次元のサイズを有する入力フィーチャーマップと４次元のサイズを有するカーネルとの間の３次元コンボルーション演算を行う、請求項１に記載のニューラルネットワーク装置。
【請求項９】
前記プロセッシングユニットは、
前記共有オペランドがゼロである場合に、前記並列化された演算を省略(skip)する、請求項１に記載のニューラルネットワーク装置。
【請求項１０】
（１）前記コントローラは、
前記共有オペランドを前記入力フィーチャーマップのピクセル値として決定し、且つ
前記プロセッシングユニットは、
前記入力フィーチャーマップの第１ピクセル値がゼロである場合に、前記第１ピクセル値と前記カーネルの第１ウェイト値との並列化された演算を省略し、及び
前記入力フィーチャーマップの第２ピクセル値と前記カーネルの第２ウェイト値との演算を行う、或いは
（２）前記コントローラは、
前記共有オペランドを前記カーネルのウェイト値として決定し、且つ
前記プロセッシングユニットは、
前記カーネルの第１ウェイト値がゼロである場合に、前記第１ウェイト値と前記入力フィーチャーマップの第１ピクセル値との並列化された演算を省略し、及び
前記カーネルの第２ウェイト値と前記入力フィーチャーマップの第２ピクセル値との並列化された演算を行う、請求項１に記載のニューラルネットワーク装置。
【請求項１１】
ニューラルネットワークのコンボルーション演算を処理する方法において、
入力フィーチャーマップの特徴及びカーネルの特徴のうち少なくとも１つに基づいて、並列化された演算それぞれに共通して共有される共有オペランドを、前記入力フィーチャーマップのピクセル値および前記カーネルのウェイト値のうちのいずれか１つとして決定する段階と、
前記決定された共有オペランドに基づいて前記並列化された演算を行う段階と、を含む方法。
【請求項１２】
（１）前記決定する段階は、
前記共有オペランドを前記入力フィーチャーマップのピクセル値として決定し、且つ
前記演算を行う段階は、
前記入力フィーチャーマップのピクセル値と前記カーネルのウェイト値とのそれぞれの演算を並列的に行う、或いは
（２）前記決定する段階は、
前記共有オペランドを前記カーネルのウェイト値として決定し、且つ
前記演算を行う段階は、
前記カーネルのウェイト値と前記入力フィーチャーマップのピクセル値とのそれぞれの演算を並列的に行う、請求項１１に記載の方法。
【請求項１３】
前記演算を行う段階は、
前記共有オペランドがゼロである場合に、前記並列化された演算を省略する段階を含む、請求項１１に記載の方法。
【請求項１４】
（１）前記決定する段階は、
前記共有オペランドを前記入力フィーチャーマップのピクセル値として決定し、且つ
前記演算を行う段階は、
前記入力フィーチャーマップの第１ピクセル値がゼロである場合に、前記第１ピクセル値と前記カーネルの第１ウェイト値との並列化された演算を省略し、及び
前記入力フィーチャーマップの第２ピクセル値と前記カーネルの第２ウェイト値との演算を行う、或いは
（２）前記決定する段階は、
前記共有オペランドを前記カーネルのウェイト値として決定し、且つ
前記演算を行う段階は、
前記カーネルの第１ウェイト値がゼロである場合に、前記第１ウェイト値と前記入力フィーチャーマップの第１ピクセル値との並列化された演算を省略し、及び
前記カーネルの第２ウェイト値と前記入力フィーチャーマップの第２ピクセル値との並列化された演算を行う、請求項１１に記載の方法。
【請求項１５】
請求項１１ないし１４のうちいずれか１項に記載の方法をコンピュータで実行させるためのプログラムを記録したコンピュータで読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ニューラルネットワークのコンボルーション（convolution）演算を処理する方法及び装置に関する。
【背景技術】
【０００２】
ニューラルネットワーク(neural  network)は、生物学的脳をモデリングしたコンピュータ科学的アーキテクチャ(computational  architecture)を参照する。最近、ニューラルネットワーク技術の発展につれて、多様な種類の電子システムにおいてニューラルネットワーク装置を使用して入力データを分析し、有効な情報を抽出している。
【０００３】
ニューラルネットワーク装置は、入力データに対する多量の演算を行う。かようなニューラルネットワーク演算を効率よく処理することができる技術が研究されている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明が解決しようとする課題は、ニューラルネットワークのコンボルーション演算を処理する方法及び装置を提供するところにある。
【０００５】
本実施例が解決しようとする技術的課題は、前記のような技術的課題に限定されず、下記実施例からさらに他の技術的課題が類推される。
【課題を解決するための手段】
【０００６】
一側面によって、ニューラルネットワーク装置は、少なくとも１つのプログラムが保存されたメモリと、少なくとも１つのプログラムを行うことで、入力フィーチャーマップ(input  featuremap)とカーネル(kernal)との間のコンボルーション演算を処理するプロセッサを含み、プロセッサは、入力フィーチャーマップの特徴及びカーネルの特徴のうち少なくとも１つに基づいて、並列化された演算それぞれに共通して共有される共有オペランド(shared  operand)を、入力フィーチャーマップのピクセル値およびカーネルのウェイト値のうちのいずれか１つとして決定するコントローラと、決定された共有オペランドに基づいて並列化された演算を行うプロセッシングユニットと、を含んでもよい。
【０００７】
他の側面によって、ニューラルネットワークのコンボルーション演算を処理する方法は、入力フィーチャーマップの特徴及びカーネルの特徴のうち少なくとも１つに基づいて、並列化された演算それぞれに共通して共有される共有オペランドを、入力フィーチャーマップのピクセル値およびカーネルのウェイト値のうちのいずれか１つとして決定する段階と、決定された共有オペランドに基づいて並列化された演算を行う段階と、を含んでもよい。
【０００８】
さらに他の側面によって、ニューラルネットワークのコンボルーション演算を処理する方法を具現化するためのプログラムが記録されたコンピュータで読み取り可能な記録媒体が提供される。
【発明の効果】
【０００９】
本実施例によれば、コンボルーション演算のための並列化された演算に共有される共有オペランドを、入力フィーチャーマップのピクセル値およびカーネルのウェイト値のうちのいずれか１つとして決定可能であるところ、コンボルーション演算の並列性(parallelism)をさらに効果的に具現化することができる。
【００１０】
また、本実施例によれば、３次元のサイズを有する入力フィーチャーマップと４次元のサイズを有するカーネルとの間の３次元コンボルーション演算を行うにあたり、入力フィーチャーマップとカーネルとの次元が互いに異なるにしても、入力フィーチャーマップのピクセル値およびカーネルのウェイト値のうちのいずれか１つを共有オペランドに決定して並列化された演算を実行可能なハードウェア構造を具現化することができる。
【００１１】
また、本実施例によれば、プロセッシングユニットの共有オペランドに係わるゼロ如何、またはプロセッシングユニットの残りの全てのオペランドに対するゼロ如何を通じてゼロスキッピングを具現化するところ、ゼロスキッピングのための単純化されたハードウェア構造を具現化することができる。
【図面の簡単な説明】
【００１２】
【図１】一実施例によるニューラルネットワークのアーキテクチャを説明するための図面である。
【図２Ａ】ニューラルネットワークのコンボルーション演算の例示を説明するための図面である。
【図２Ｂ】ニューラルネットワークのコンボルーション演算の例示を説明するための図面である。
【図３】一実施例によるニューラルネットワーク装置のハードウェア構成を示すブロック図である。
【図４】コントローラ及びプロセッシングユニットの具体的な実施例を示す図面である。
【図５Ａ】プロセッシングユニットが共有オペランドに基づいて並列化された演算を行う実施例を示す図面である。
【図５Ｂ】プロセッシングユニットが共有オペランドに基づいて並列化された演算を行う実施例を示す図面である。
【図６】コントローラが入力フィーチャーマップの形状に基づいて共有オペランドを決定する実施例を示す図面である。
【図７】プロセッシングユニットが共有オペランドである入力フィーチャーマップのピクセル値に基づいて並列化された演算を行う実施例を示す図面である。
【図８】プロセッシングユニットが共有オペランドである入力フィーチャーマップのピクセル値に基づいて並列化された演算を行う実施例を示す図面である。
【図９】プロセッシングユニットが共有オペランドであるカーネルのウェイト値に基づいて並列化された演算を行う実施例を示す図面である。
【図１０】プロセッシングユニットが共有オペランドであるカーネルのウェイト値に基づいて並列化された演算を行う実施例を示す図面である。
【図１１】プロセッシングユニットがゼロである共有オペランドに基づいてゼロスキッピングを行う一実施例を示す図面である。
【図１２】プロセッシングユニットがゼロである共有オペランドに基づいてゼロスキッピングを行う他の実施例を示す図面である。
【図１３】一実施例によって、ニューラルネットワーク装置の動作方法を説明するための図面である。
【発明を実施するための形態】
【００１３】
実施例で使用される用語は、主に現在広く使用されている一般の用語を選択しているが、これは、当業者の意図または判例、新たな技術の出現などによって異なる。また、特定の場合は、出願人が任意に選定した用語もあり、その場合に、該当する説明部分において詳細にその意味を記載する。したがって、明細書で使用される用語は、単なる用語の名称ではない、その用語が有する意味と明細書全般にわたる内容に基づいて定義されねばならない。
【００１４】
明細書全体においてある部分がある構成要素を「含む」とするとき、これは、特に反対となる記載がない限り、他の構成要素を除外するものではなく、他の構成要素をさらに含むことができるということを意味する。また、明細書に記載の「…部」、「…モジュール」などの用語は、少なくとも１つの機能や動作を処理する単位を意味し、これは、ハードウェアまたはソフトウェアとして具現化されるか、ハードウェアとソフトウェアとの組み合わせで具現化される。
【００１５】
本実施例は、ニューラルネットワークのコンボルーション演算を処理する方法及び装置に係わるものであって、以下の実施例が属する技術分野において、通常の知識を有する者に広く知られている事項については、詳細な説明を省略する。
【００１６】
図１は、一実施例によるニューラルネットワークのアーキテクチャを説明するための図面である。図１を参考にすれば、ニューラルネットワーク１は、ディープニューラルネットワーク(Deep  Neural  Network,  DNN)またはｎ階層ニューラルネットワーク(n-layers  neural  networks)のアーキテクチャであってもよい。ＤＮＮまたはｎ階層ニューラルネットワークは、コンボルーションニューラルネットワーク(Convolutional  Neural  Networks,CNN)、リカレントニューラルネットワーク(Recurrent  Neural  Networks,RNN)、  Deep  Belief  Networks,  Restricted  Boltzman  Machinesなどに該当する。例えば、ニューラルネットワーク１は、コンボルーションニューラルネットワーク（ＣＮＮ）として具現化されるが、その限りではない。図１では、ニューラルネットワーク１の例示に該当するコンボルーションニューラルネットワークにおいて一部のコンボルーションレイヤが示されるが、コンボルーションニューラルネットワークは、示されたコンボルーションレイヤ以外にも、プーリングレイヤ(pooling  layer)、フリコネクティッド(fully  connected)レイヤなどをさらに含むことができる。
【００１７】
ニューラルネットワーク１は、入力イメージ、フィーチャーマップ(feature  maps)及び出力を含む複数のレイヤを有するアーキテクチャとして具現化される。ニューラルネットワーク１において入力イメージは、カーネル(kernel)と呼ばれるフィルターとのコンボルーション演算が行われ、その結果、フィーチャーマップが出力される。この際に、生成された出力フィーチャーマップは、入力フィーチャーマップとして再びカーネルとのコンボルーション演算が行われ、新たなフィーチャーマップが出力される。かようなコンボルーション演算が繰り返して行われた結果、最終的には、ニューラルネットワーク１を通じて入力イメージの特徴に係わる認識結果が出力される。
【００１８】
例えば、図１のニューラルネットワーク１に２４×２４ピクセルサイズのイメージが入力された場合に、入力イメージは、カーネルとのコンボルーション演算を通じて２０×２０ピクセルサイズを有する４チャネルのフィーチャーマップとして出力される。以後でも、２０×２０フィーチャーマップは、カーネルとの繰り返し的なコンボルーション演算を通じてサイズが縮小しつつ、最終的には、１×１ピクセルサイズの特徴が出力される。ニューラルネットワーク１は、多くのレイヤでコンボルーション演算及びサブサンプリング（またはプーリング）演算を繰り返して行うことで、入力イメージからイメージ全体を代表することができる強靭な特徴をフィルタリングして出力し、出力された最終特徴を通じて入力イメージの認識結果を導出することができる。
【００１９】
図２Ａ及び図２Ｂは、ニューラルネットワークのコンボルーション演算の例示を説明するための図面である。
【００２０】
図２Ａの例示において、入力フィーチャーマップ２１０は、６×６ピクセルサイズであり、カーネル２２０は、３×３ピクセルサイズである、出力フィーチャーマップ２３０は、４×４ピクセルサイズであると仮定するが、これに制限されず、ニューラルネットワークは、多様なサイズのフィーチャーマップ及びカーネルとして具現化される。また、入力フィーチャーマップ２１０、カーネル２２０及び出力フィーチャーマップ２３０に定義された値は、いずれも例示的な値に過ぎず、本実施例は、その限りではない。
【００２１】
カーネル２２０は、入力フィーチャーマップ２１０で３×３ピクセルサイズの領域（またはタイル）単位にスライディングしつつコンボルーション演算を行う。コンボルーション演算は、入力フィーチャーマップ２１０のある領域の各ピクセル値とカーネル２２０の対応位置の各エレメントのウェイト(weight)との間の乗算を行い、得た値をいずれも合算して、出力フィーチャーマップ２３０の各ピクセル値を求める演算を意味する。具体的に、カーネル２２０は、入力フィーチャーマップ２１０の第１領域２１１とコンボルーション演算を行う。すなわち、第１領域２１１の各ピクセル値１、２、３、４、５、６、７、８、９は、それぞれカーネル２２０の各エレメントのウェイト−１、−３、＋４、＋７、−２、−１、−５、＋３、＋１とそれぞれ乗算し、その結果として、−１、−６、１２、２８、−１０、−６、−３５、２４、９を得る。次いで、得た値−１、−６、１２、２８、−１０、−６、−３５、２４、９をいずれも加算した結果である１５が計算され、出力フィーチャーマップ２３０の１行１列のピクセル値２３１は、１５と決定される。ここで、出力フィーチャーマップ２３０の１行１列のピクセル値２３１は、第１領域２１１に対応する。同様の方式で、入力フィーチャーマップ２１０の第２領域２１２とカーネル２２０とのコンボルーション演算が行われることで、出力フィーチャーマップ２３０の１行２列のピクセル値２３２である４が決定される。最終的に、入力フィーチャーマップ２１０の最後のウィンドウである第１６領域２１３とカーネル２２０とのコンボルーション演算が行われることで、出力フィーチャーマップ２３０の４行４列のピクセル値２３３である１１が決定される。
【００２２】
一方、図２Ａでは、２次元コンボルーション演算について説明したが、コンボルーション演算は、複数のチャネルの入力フィーチャーマップ、カーネル、出力フィーチャーマップが存在する３次元コンボルーション演算にも該当する。これについては、図２Ｂを参考にして説明する。
【００２３】
図２Ｂを参考にすれば、入力フィーチャーマップ２０１は、３次元のサイズを有し、Ｘ個の入力チャネルが存在し、各入力チャネルの２次元入力フィーチャーマップは、Ｈ行Ｗ列のサイズを有する（Ｘ、Ｗ、Ｈは、自然数）。カーネル２０２は、４次元のサイズを有し、Ｒ行Ｓ列のサイズを有する２次元のカーネルがＸ個の入力チャネル及びＹ個の出力チャネルほど存在する（Ｒ、Ｓ、Ｙは、自然数）。言い換えれば、カーネル２０２は、入力フィーチャーマップ２０１の入力チャネル数Ｘ及び出力フィーチャーマップ２０３の出力チャネル数Ｙに対応する個数のチャネルを有し、各チャネルの２次元カーネルは、Ｒ行Ｓ列のサイズを有してもよい。出力フィーチャーマップ２０３は、３次元入力フィーチャーマップ２０１と４次元カーネル２０２との３次元コンボルーション演算を通じて生成され、３次元コンボルーション演算結果によって、Ｙ個のチャネルが存在する。
【００２４】
１つの２次元入力フィーチャーマップと１つの２次元カーネルとのコンボルーション演算を通じて、出力フィーチャーマップが生成される過程は、前記図２Ａの説明と同一であり、図２Ａで説明した２次元コンボルーション演算が、Ｘ個の入力チャネルの入力フィーチャーマップ２０１と、Ｘ個の入力チャネル及びＹ個の出力チャネルのカーネル２０２との間で繰り返して行われることにより、Ｙ個の出力チャネルの出力フィーチャーマップ２０３が生成される。
【００２５】
図３は、一実施例によるニューラルネットワーク装置のハードウェア構成を示すブロック図である。
【００２６】
ニューラルネットワーク装置１００は、ＰＣ(personal  computer)、サーバ装置、モバイル装置、埋め込み型装置などの多種の装置として具現化され、具体例として、ニューラルネットワークを用いた音声認識、映像認識、映像分類などを行うスマートフォン、タブレット装置、ＡＲ(Augmented  Reality)装置、ＩｏＴ(Internet  of  Things)装置、自律走行自動車、ロボティックス、医療機器などに該当するが、その限りではない。さらに、ニューラルネットワーク装置１００は、上のような装置に搭載される専用ハードウェア加速器(HW  accelerator)に該当し、ニューラルネットワーク装置１００は、ニューラルネットワーク駆動のための専用モジュールであるＮＰＵ(neural  processing  unit)、ＴＰＵ(Tensor  Processing  Unit)、Neural  Engineのようなハードウェア加速器でもあるが、その限りではない。
【００２７】
図３を参考にすれば、ニューラルネットワーク装置１００は、プロセッサ１１０及びメモリ１２０を含む。図３に示されたニューラルネットワーク装置１００には、本実施例に係わる構成要素のみが示されている。したがって、ニューラルネットワーク装置１００には、図３に示された構成要素以外に他の汎用的な構成要素がさらに含まれるということは、当業者に自明である。
【００２８】
プロセッサ１１０は、ニューラルネットワーク装置１００でニューラルネットワークを駆動するための全般的な機能を制御する役割を担う。例えば、プロセッサ１１０は、ニューラルネットワーク装置１００内のメモリ１２０に保存されたプログラムを行うことで、ニューラルネットワーク装置１００を全般的に制御する。プロセッサ１１０は、ニューラルネットワーク装置１００内に備えられたCPU(central  processing  unit)、  GPU(graphics  processing  unit)、AP(application  processor)などとして具現化されるが、その限りではない。
【００２９】
メモリ１２０は、ニューラルネットワーク装置１００内で処理される各種データを保存するハードウェアであって、ニューラルネットワーク装置１００で処理されたデータ及び処理されるデータを保存することができる。また、メモリ１２０は、ニューラルネットワーク装置１００によって駆動されるアプリケーション、ドライバなどを保存することができる。メモリ１２０は、DRAM(dynamic  random  access  memory),  SRAM(static  random  access  memory)のような  RAM(random  access  memory),  ROM(read-only  memory),  EEPROM(electrically  erasable  programmable  read-only  memory),  CD-ROM、ブルーレイ、または他の光学ディスクストレージ、HDD(hard  disk  drive)、  SSD(solid  state  drive)、またはフラッシュメモリを含んでもよい。
【００３０】
プロセッサ１１０は、メモリ１２０からニューラルネットワークデータ、例えば、イメージデータ、フィーチャーマップデータ、カーネルデータなどを読み出し／書き込み(read/write)し、読み出し／書き込みされたデータを用いてニューラルネットワークを実行する。ニューラルネットワークが実行されるとき、プロセッサ１１０は内部に備えられたコンボルーション演算のためのプロセッシングユニットを駆動させ、出力フィーチャーマップに係わるデータを生成するための入力フィーチャーマップとカーネルとのコンボルーション演算を繰り返して行う。この際に、入力フィーチャーマップのチャネル数、カーネルのチャネル数、入力フィーチャーマップのサイズ、カーネルのサイズ、値の精度(precision)などの多様なファクターに依存してコンボルーション演算の演算量が決定される。
【００３１】
プロセッサ１１０は、メモリ１２０から入力フィーチャーマップ及びカーネルを得て、入力フィーチャーマップとカーネルとの間のコンボルーション演算を処理することができる。プロセッサ１１０は、コンボルーション演算を処理するためにプロセッシングユニット１１２を含んでもよい。プロセッシングユニット１１２それぞれは並列的にコンボルーション演算を処理することができ、プロセッシングユニット１１２それぞれは、コンボルーション演算のためのロジック回路を含んでもよい。具体的に、プロセッシングユニット１１２それぞれは、乗算器(multiplier)、加算器(adder)及び累算器(accumulator)の組み合わせで具現化された演算器を含んでもよい。また、乗算器は、多数のサブ乗算器の組み合わせで具現化され、また加算器も多数のサブ加算器の組み合わせで具現化される。
【００３２】
プロセッサ１１０は、コンボルーション演算を処理するためにキャッシュ(cache)機能を担当するオンチップ(on-chip)メモリ、及び入力フィーチャーマップのピクセル値、またはカーネルのウェイト値のような多様なオペランドをディスパッチするためのディスパッチャー(dispatcher)をさらに含んでもよい。具体的に、ディスパッチャーは、メモリ１２０に保存されている入力フィーチャーマップのピクセル値、カーネルのウェイト値などのデータからプロセッシングユニットが行う演算に必要なピクセル値及びウェイト値などのオペランドをオンチップメモリにディスパッチする。次いで、ディスパッチャーは、オンチップメモリにディスパッチされたオペランドをコンボルーション演算のためにプロセッシングユニットに再びディスパッチする。
【００３３】
プロセッサ１１０は、プロセッシングユニット１１２が処理するオペランドを決定するコントローラ１１４を含んでもよい。コントローラ１１４は、入力フィーチャーマップとカーネルとのコンボルーション演算時に、プロセッシングユニット１１２が行う並列化された演算それぞれに共通して共有される共有オペランド(shared  operand)を、入力フィーチャーマップのピクセル値およびカーネルのウェイト値のうちのいずれか１つとして決定する。コントローラ１１４は、一例によって、第１入力フィーチャーマップと第１カーネルとのコンボルーション演算時に、共有オペランドを第１入力フィーチャーマップのピクセル値として決定し、他の例によって、第２入力フィーチャーマップと第２カーネルとのコンボルーション演算時に、共有オペランドを第２カーネルのウェイト値として決定する。
【００３４】
コントローラ１１４は、入力フィーチャーマップの特徴及びカーネルの特徴のうち少なくとも１つに基づいて、共有オペランドを、入力フィーチャーマップのピクセル値およびカーネルのウェイト値のうちのいずれか１つとして決定する。具体的に、コントローラ１１４は、入力フィーチャーマップ内でゼロ値を有するピクセルの比率、カーネル内でゼロ値を有するウェイトの比率、及び入力フィーチャーマップの形状のうち少なくとも１つに基づいて、共有オペランドを、入力フィーチャーマップのピクセル値およびカーネルのウェイト値のうちのいずれか１つとして決定する。一例によって、コントローラ１１４は、入力フィーチャーマップ内でゼロ値を有するピクセルの比率が既設定の閾値以上である場合に、共有オペランドを入力フィーチャーマップのピクセル値として決定する。コントローラ１１４は、以前レイヤの入力フィーチャーマップ内でゼロ値を有するピクセルの比率を考慮し、現在レイヤの入力フィーチャーマップ内でゼロ値を有するピクセルの比率を決定する。他の例によって、コントローラ１１４は、カーネル内でゼロ値を有するウェイトの比率が既設定の閾値以上である場合に、共有オペランドをカーネルのウェイト値として決定する。さらに他の例によって、コントローラ１１４は、入力フィーチャーマップの入力チャネル数が多いか、及び各入力チャネルの２次元入力フィーチャーマップのサイズが小さい場合に、共有オペランドを入力フィーチャーマップのピクセル値として決定することができる。
【００３５】
コントローラ１１４は、ニューラルネットワークのレイヤごとに共有オペランドを、入力フィーチャーマップのピクセル値およびカーネルのウェイト値のうちのいずれか１つとして決定する。例えば、第１レイヤの入力フィーチャーマップと第１レイヤのカーネルとのコンボルーション演算時に、コントローラ１１４は、第１レイヤの共有オペランドを第１レイヤの入力フィーチャーマップのピクセル値として決定する。また、第２レイヤの入力フィーチャーマップと第２レイヤのカーネルとのコンボルーション演算時に、コントローラ１１４は、第２レイヤの共有オペランドを第２レイヤのカーネルのウェイト値として決定する。言い換えれば、コントローラ１１４は、レイヤが変更される度に、共有オペランドを入力フィーチャーマップのピクセル値からカーネルのウェイトに変更するか、共有オペランドをカーネルのウェイトから入力フィーチャーマップのピクセル値に変更する。
【００３６】
プロセッシングユニット１１２は、コントローラ１１４によって決定された共有オペランドに基づいて並列化された演算を行う。一例として、第１入力フィーチャーマップのピクセル値が共有オペランドとして決定される場合に、プロセッシングユニット１１２は、オペランド対(operand  pair)のうち１つとして、共通して第１入力フィーチャーマップのピクセル値をオペランドとして入力され、オペランド対のうちの残りの１つとして、第１カーネルの互いに異なるウェイト値を入力される。他の例として、第１カーネルのウェイト値が共有オペランドとして決定される場合に、プロセッシングユニット１１２は、オペランド対のうち１つとして、共通して第１カーネルのウェイト値をオペランドとして入力され、オペランド対のうちの他の１つとして、第１入力フィーチャーマップの互いに異なるピクセル値を入力される。したがって、プロセッシングユニット１１２は、共有オペランドを共通して入力されて並列化された演算を行うので、スカラーベクトル(scalar-vector)乗算を具現化する。プロセッシングユニット１１２は、並列化された演算を行って出力値を出力し、出力値は、出力フィーチャーマップに累算される。
【００３７】
ニューラルネットワーク装置１００は、共有オペランドをプロセッシングユニット１１２それぞれで共有するように制御することができるので、プロセッシングユニット１１２それぞれに対する同じ制御が可能なので、ハードウェア構造を単純化し、ハードウェアコストを節減することができる。また、ニューラルネットワーク装置１００は、プロセッシングユニット１１２の共有オペランドを、入力フィーチャーマップのピクセル値およびカーネルのウェイト値のうちのいずれか１つとして決定可能であるところ、コンボルーション演算の並列性(parallelism)をさらに効果的に用いるための側面で共有オペランドを選択する。一例によって、ニューラルネットワーク装置１００は、ゼロスキッピング(zero  skipping)をより効果的に具現化するための側面で、共有オペランドを、入力フィーチャーマップのピクセル値およびカーネルのウェイト値のうちのいずれか１つとして決定する。具体的な実施例は、図１１及び図１２に基づいて後述する。他の例によって、ニューラルネットワーク装置１００は、一レイヤの入力フィーチャーマップの形状によって、プロセッシングユニット１１２の並列化された演算をさらに効果的に具現化するための共有オペランドを選択する。具体的な実施例は、図６に基づいて後述する。
【００３８】
また、ニューラルネットワーク装置１００は、３次元のサイズを有する入力フィーチャーマップと４次元のサイズを有するカーネルとの間の３次元コンボルーション演算を行うにあたり、入力フィーチャーマップとカーネルとの次元が互いに違っても、入力フィーチャーマップのピクセル値およびカーネルのウェイト値のうちのいずれか１つを共有オペランドに決定して並列化された演算を行うハードウェア構造を具現化することができる。
【００３９】
図４は、コントローラ及びプロセッシングユニットの具体的な実施例を示す。
【００４０】
コントローラ１１４は、メモリ１２０から入力フィーチャーマップ及びカーネルを得る。コントローラ１１４は、入力フィーチャーマップの特徴及びカーネルの特徴のうち少なくとも１つに基づいて、プロセッシングユニット１１２が共通して共有する共有オペランドを、入力フィーチャーマップのピクセル値およびカーネルのウェイト値のうちのいずれか１つとして決定する。
【００４１】
コントローラ１１４は、入力フィーチャーマップのピクセル値及びカーネルのウェイト値がプロセッシングユニット１１２に入力されるように制御することができ、特に、既定の共有オペランドがプロセッシングユニット１１２それぞれに共通して入力されるように制御する。一例によって、入力フィーチャーマップのピクセル値が共有オペランドとして決定される場合に、コントローラ１１４は、入力フィーチャーマップのピクセル値がプロセッシングユニット１１２それぞれに入力されるように制御し、カーネルの互いに異なるウェイト値それぞれが互いに異なるプロセッシングユニットに入力されるように制御する。言い換えれば、コントローラ１１４は、カーネルの互いに異なるウェイト値それぞれがオペランド１ないしオペランドｎとして互いに異なるプロセッシングユニットに入力されるように制御する。他の例によって、カーネルのウェイト値が共有オペランドとして決定される場合に、コントローラ１１４は、カーネルのウェイト値がプロセッシングユニット１１２それぞれに入力されるように制御し、入力フィーチャーマップの互いに異なるピクセル値それぞれが互いに異なるプロセッシングユニットに入力されるように制御する。言い換えれば、コントローラ１１４は、入力フィーチャーマップの互いに異なるピクセル値それぞれがオペランド１ないしオペランドｎとして互いに異なるプロセッシングユニットに入力されるように制御する。コントローラ１１４の制御によって、プロセッサ１１０のディスパッチャーは、共有オペランドを含むオペランド対をプロセッシングユニット１１２それぞれにディスパッチする。
【００４２】
プロセッシングユニット１１２それぞれは、乗算器、加算器及び累算器の組み合わせで具現化されるところ、入力されるオペランド対に対する乗算及び加算演算を通じて出力値（出力１ないし出力ｎ）を出力し、出力値（出力１ないし出力ｎ）は、出力フィーチャーマップに累算される。また、プロセッシングユニット１１２それぞれは共有オペランドと互いに異なるオペランドとの演算を行うところ、プロセッシングユニット１１２は、スカラー（共有オペランド）とベクトル（オペランド１、オペランド２，．．．，オペランドｎ）との乗算演算を具現化する１Xｎハードウェア構造を具現化することができる。
【００４３】
図５Ａ及び図５Ｂは、プロセッシングユニットが共有オペランドに基づいて並列化された演算を行う実施例を示す。
【００４４】
図５Ａにおいて、コントローラ１１４は、カーネルの第１ウェイト値ｗ＿１をプロセッシングユニット１１２の共有オペランドとして決定する。次いで、コントローラ１１４は、第１ウェイト値ｗ＿１が１６個のプロセッシングユニット１１２それぞれに入力されるように制御し、入力フィーチャーマップの１６個のピクセル値ＩＦＭ１〜ＩＦＭ１６それぞれが１６個のプロセッシングユニット１１２それぞれに入力されるように制御する。例えば、図５Ａで示された１６個のピクセル値ＩＦＭ１〜ＩＦＭ１６は、入力フィーチャーマップＩＦＭの第１入力チャネルに該当するピクセル値であってもよい。１６個のプロセッシングユニット１１２それぞれは、入力されるオペランド対に対する演算を行い、１６個の出力値を出力し、１６個の出力値は、出力フィーチャーマップＯＦＭに累算される。
【００４５】
図５Ｂにおいて、コントローラ１１４は、入力フィーチャーマップの第１ピクセル値ＩＦＭ１をプロセッシングユニット１１２の共有オペランドとして決定する。次いで、コントローラ１１４は、第１ピクセル値ＩＦＭ１がプロセッシングユニット１１２それぞれに入力されるように制御し、カーネルの１６個のウェイト値ｗ＿１〜ｗ＿１６それぞれが１６個のプロセッシングユニット１１２それぞれに入力されるように制御する。例えば、カーネルの１６個のウェイト値ｗ＿１〜ｗ＿１６は、カーネルの１６個の出力各チャネルのウェイト値であってもよい。１６個のプロセッシングユニット１１２それぞれは、入力されるオペランド対に対する演算を行い、１６個の出力値を出力し、１６個の出力値は、出力フィーチャーマップＯＦＭに累算される。
【００４６】
図５Ａ及び図５Ｂでは、入力フィーチャーマップの１つの入力チャネルのピクセル数、カーネルの出力チャネル数、及びプロセッシングユニット１１２の個数がいずれも１６個と同一であると示されているが、これは一例示に過ぎず、それにより限定的に解釈されない。
【００４７】
図６は、コントローラが入力フィーチャーマップの形状に基づいて共有オペランドを決定する実施例を示す。
【００４８】
コントローラ１１４は、入力フィーチャーマップの形状に基づいてプロセッシングユニット１１２の共有オペランドを決定する。例えば、コントローラ１１４は、入力フィーチャーマップの入力チャネル数、または各入力チャネルの２次元入力フィーチャーマップのサイズを考慮して、プロセッシングユニット１１２の共有オペランドを決定する。
【００４９】
一例によって、コントローラ１１４は、入力フィーチャーマップ６１０のチャネル数が少ないと判断され、入力フィーチャーマップ６１０の１チャネルの２次元入力フィーチャーマップが大きいと判断される場合に、プロセッシングユニット１１２の共有オペランドをカーネルのウェイト値として決定する傾向性を有してもよい。言い換えれば、入力フィーチャーマップ６１０の幅値（Ｗ×Ｈ）が大きく、深さ値（ｃ）が小さいと判断される場合に、プロセッシングユニット１１２の共有オペランドをカーネルのウェイト値として決定する傾向性を有してもよい。入力フィーチャーマップ６１０の幅値（Ｗ×Ｈ）が大きく、深さ値（ｃ）が小さいほど、カーネルのウェイト値を再使用(reuse)してコンボルーション演算を行うことがプロセッシングユニット１１２の並列化された演算をさらに効果的に具現化するので、コントローラ１１４は、カーネルのウェイト値を共有オペランドとして決定する。例えば、コントローラ１１４は、入力フィーチャーマップ６１０の幅値（Ｗ×Ｈ）が既設定の閾値よりも大きいか、深さ値（ｃ）が既設定の閾値よりも小さいと判断される場合に、プロセッシングユニット１１２の共有オペランドをカーネルのウェイト値として決定する。
【００５０】
コントローラ１１４は、入力フィーチャーマップ６１０の入力チャネル数が多いと判断され、入力フィーチャーマップ６１０の１チャネルの２次元入力フィーチャーマップのサイズが小さいと判断される場合に、プロセッシングユニット１１２の共有オペランドを入力フィーチャーマップのピクセル値として決定する傾向性を有してもよい。言い換えれば、コントローラ１１４は、入力フィーチャーマップ６２０の幅値（Ｗ×Ｈ）が小さく、深さ値（ｃ）が大きいと判断される場合に、プロセッシングユニット１１２の共有オペランドを入力フィーチャーマップのピクセル値として決定する傾向性を有してもよい。入力フィーチャーマップ６１０の幅値（Ｗ×Ｈ）が小さく、深さ値（ｃ）が大きいほど、入力フィーチャーマップのピクセル値を再使用してコンボルーション演算を行うことがプロセッシングユニット１１２の並列化された演算をさらに効果的に具現できるので、コントローラ１１４は、入力フィーチャーマップのピクセル値を共有オペランドとして決定することができる。例えば、コントローラ１１４は、入力フィーチャーマップ６２０の幅値（Ｗ×Ｈ）が既設定の閾値よりも小さいか、深さ値（ｃ）が既設定の閾値よりも大きいと判断される場合に、プロセッシングユニット１１２の共有オペランドを入力フィーチャーマップのピクセル値として決定する。
【００５１】
ニューラルネットワークのレイヤに対するコンボルーション演算が順次に進められることにより、ニューラルネットワークの前半レイヤの入力フィーチャーマップは、図６の入力フィーチャーマップ６１０と類似した形状を有し、ニューラルネットワークの後半レイヤの入力フィーチャーマップは、図６の入力フィーチャーマップ６２０と類似した形状を有してもよい。したがって、コントローラ１１４は、ニューラルネットワークの前半レイヤにおいて、プロセッシングユニット１１２の共有オペランドをカーネルのウェイト値として決定し、ニューラルネットワークの後半レイヤにおいて、プロセッシングユニット１１２の共有オペランドを入力フィーチャーマップのピクセル値として決定する。
【００５２】
図７は、プロセッシングユニットが共有オペランドである入力フィーチャーマップのピクセル値に基づいて並列化された演算を行う実施例を示す。
【００５３】
コントローラ１１４は、共有オペランドを入力フィーチャーマップＩＦＭのピクセル値として決定する。したがって、コントローラ１１４は、入力フィーチャーマップＩＦＭのピクセル値がプロセッシングユニット１１２それぞれに共通して入力されるように制御することができる。
【００５４】
具体的に、コントローラ１１４は、入力フィーチャーマップＩＦＭの第１ピクセル値ＩＦＭ１を共有オペランドとしてプロセッシングユニット１１２それぞれに入力されるように制御し、カーネルのウェイト値ｗ＿１、ｗ＿２，．．．，ｗ＿ｍそれぞれがプロセッシングユニット１１２それぞれに入力されるように制御する。第１ピクセル値ＩＦＭ１は、入力フィーチャーマップＩＦＭの第０入力チャネルの（０，０）位置に該当するピクセル値であり、カーネルのウェイト値ｗ＿１、ｗ＿２，．．．，ｗ＿ｍそれぞれは、カーネルのｍ個の出力チャネルそれぞれで第０入力チャネルの（０，０）位置に該当するウェイト値であってもよい。
【００５５】
プロセッシングユニット１１２のうち、第１プロセッシングユニットは、第１ピクセル値ＩＦＭ１とウェイト値ｗ＿１との乗算及び加算演算を行い、出力値Ｏ０（０，０）を出力し、プロセッシングユニット１１２のうち第ｍプロセッシングユニットは、第１ピクセル値ＩＦＭ１とウェイト値ｗ＿ｍとの間の乗算及び加算演算を行い、出力値Ｏｍ−１（０，０）を出力する。言い換えれば、プロセッシングユニット１１２は、スカラーとベクトルとの乗算演算であって、第１ピクセル値ＩＦＭ１とウェイト値ｗ＿１、ｗ＿２，．．．，ｗ＿ｍとの乗算演算を行い、出力値Ｏ０（０，０）、Ｏ１（０，０），．．．，Ｏｍ−１（０，０）を出力する。また、出力値Ｏ０（０，０）、Ｏ１（０，０），．．．，Ｏｍ−１（０，０）それぞれは、出力フィーチャーマップＯＦＭの第０出力チャネルないし第ｍ−１出力チャネルそれぞれに累算される。
【００５６】
同様に、コントローラ１１４は、入力フィーチャーマップＩＦＭの他のピクセル値を共有オペランドとして、プロセッシングユニット１１２それぞれに入力されるように制御し、カーネルの他のウェイト値それぞれがプロセッシングユニット１１２それぞれに入力されるように制御する。次いで、プロセッシングユニット１１２は、入力フィーチャーマップＩＦＭの他のピクセル値とカーネルの他のウェイト値との乗算演算を行い、出力値を出力し、出力値は、出力フィーチャーマップＯＦＭに累算される。
【００５７】
図８は、プロセッシングユニットが共有オペランドである入力フィーチャーマップのピクセル値に基づいて並列化された演算を行う実施例を示す。
【００５８】
コントローラ１１４は、共有オペランドを入力フィーチャーマップＩＦＭの第１ピクセル値ＩＦＭ１、第２ピクセル値ＩＦＭ２、第３ピクセル値ＩＦＭ３、及び第４ピクセル値ＩＦＭ４であると決定する。第１ピクセル値ＩＦＭ１、第２ピクセル値ＩＦＭ２、第３ピクセル値ＩＦＭ３、及び第４ピクセル値ＩＦＭ４は、入力フィーチャーマップＩＦＭの第０入力チャネルの（０，０）、（０，１）、（１，０）、及び（１，１）位置に該当するピクセル値であってもよい。コントローラ１１４は、第１ピクセル値ＩＦＭ１を共有オペランドとしてプロセッシングユニット１１２のうち第１プロセッシングユニット１７１それぞれに入力されるように制御し、カーネルのウェイト値ｗ＿１、ｗ＿２，．．．，ｗ＿ｍそれぞれが第１プロセッシングユニット１７１それぞれに入力されるように制御する。同様に、コントローラ１１４は、第２ピクセル値ＩＦＭ２を共有オペランドとしてプロセッシングユニット１１２のうち第２プロセッシングユニット１７２それぞれに入力されるように制御し、カーネルのウェイト値ｗ＿１、ｗ＿２，．．．，ｗ＿ｍそれぞれが第２プロセッシングユニット１７２それぞれに入力されるように制御する。同様に、コントローラ１１４は、第３ピクセル値ＩＦＭ３を共有オペランドとしてプロセッシングユニット１１２のうち第３プロセッシングユニット１７３それぞれに入力されるように制御し、カーネルのウェイト値ｗ＿１、ｗ＿２，．．．，ｗ＿ｍそれぞれが第３プロセッシングユニット１７３それぞれに入力されるように制御する。同様に、コントローラ１１４は、第４ピクセル値ＩＦＭ４を共有オペランドとしてプロセッシングユニット１１２のうち第４プロセッシングユニット１７４それぞれに入力されるように制御し、カーネルのウェイト値ｗ＿１、ｗ＿２，．．．，ｗ＿ｍそれぞれが第４プロセッシングユニット１７４それぞれに入力されるように制御する。例えば、コントローラ１１４は、バッファ（ＩＦＭ  Ｂｕｆｆｅｒ（０，０）ないしＩＦＭ  Ｂｕｆｆｅｒ（１，１））から第１ピクセル値ＩＦＭ１ないし第４ピクセル値ＩＦＭ１それぞれが第１プロセッシングユニット１７１ないし第４プロセッシングユニット１７４それぞれに入力されるように制御し、バッファ(Weight  Buffer)からウェイト値ｗ＿１、ｗ＿２，．．．，ｗ＿ｍが第１プロセッシングユニット１７１ないし第４プロセッシングユニット１７４それぞれに入力されるように制御することができる。
【００５９】
第１プロセッシングユニット１７１は、第１ピクセル値ＩＦＭ１とウェイト値ｗ＿１、ｗ＿２，．．．，ｗ＿ｍとの乗算演算を行い、出力値Ｏ０（０，０）、Ｏ１（０，０），．．．，Ｏｍ−１（０，０）を出力する。また、第２プロセッシングユニット１７２は、第２ピクセル値ＩＦＭ２とウェイト値ｗ＿１、ｗ＿２，．．．，ｗ＿ｍとの乗算演算を行い、出力値Ｏ０（０，１）、Ｏ１（０，１），．．．，Ｏｍ−１（０，１）を出力する。また、第３プロセッシングユニット１７３は、第３ピクセル値ＩＦＭ３とウェイト値ｗ＿１、ｗ＿２，．．．，ｗ＿ｍとの乗算演算を行い、出力値Ｏ０（１，０）、Ｏ１（１，０），．．．，Ｏｍ−１（１，０）を出力する。また、第４プロセッシングユニット１７４は、第４ピクセル値ＩＦＭ４とウェイト値ｗ＿１、ｗ＿２，．．．，ｗ＿ｍとの乗算演算を行い、出力値Ｏ０（１，１）、Ｏ１（１，１），．．．，Ｏｍ−１（１，１）を出力する。したがって、第１プロセッシングユニット１７１ないし第４プロセッシングユニット１７４によって出力された出力値Ｏ０〜ｍ−１（０，０）、Ｏ０〜ｍ−１（０，１）、Ｏ０〜ｍ−１（１，０）、Ｏ０〜ｍ−１（１，１）は、出力フィーチャーマップＯＦＭに累算される。
【００６０】
図７及び図８で示されたＨ×Ｗのサイズを有し、ｎ個の入力チャネルで構成された入力フィーチャーマップＩＦＭ、Ｔｉ×Ｔｒのサイズを有し、ｎ個の入力チャネル及びｍ個の出力チャネルで構成されたカーネル、及びＴｒ×Ｔｃのサイズを有し、ｍ個の出力チャネルで構成された出力フィーチャーマップＯＦＭの各数値は、一例示に過ぎず、これに限定して解釈されない。また、図７及び図８において示された入力フィーチャーマップＩＦＭの第１ピクセル値ないし第４ピクセル値の位置、及びカーネルのウェイト値ｗ＿１、ｗ＿２，．．．，ｗ＿ｍの位置は、一例示に過ぎず、これに限定して解釈されない。
【００６１】
図９は、プロセッシングユニットが共有オペランドであるカーネルのウェイト値に基づいて並列化された演算を行う実施例を示す。
【００６２】
コントローラ１１４は、共有オペランドをカーネルのウェイト値として決定する。したがって、コントローラ１１４は、カーネル（Ｋｅｒｎａｌ）のウェイト値がプロセッシングユニット１１２それぞれに共通して入力されるように制御することができる。
具体的に、コントローラ１１４は、カーネルの第１ウェイト値ｗ＿１を共有オペランドとしてプロセッシングユニット１１２それぞれに入力されるように制御し、入力フィーチャーマップＩＦＭのピクセル値ＩＦＭ１、ＩＦＭ２、ＩＦＭ３、ＩＦＭ４それぞれがプロセッシングユニット１１２それぞれに入力されるように制御する。カーネルの第１ウェイト値ｗ＿１は、カーネルの第０出力チャネル及び第０入力チャネルの（０，０）位置に該当するウェイト値であってもよい。第１ピクセル値ＩＦＭ１、第２ピクセル値ＩＦＭ２、第３ピクセル値ＩＦＭ３、及び第４ピクセル値ＩＦＭ４は、入力フィーチャーマップＩＦＭの第０入力チャネルの（０，０）、（０，１）、（１，０）、及び（１，１）位置に該当するピクセル値であってもよい。
【００６３】
プロセッシングユニット１１２のうち第１プロセッシングユニットは、第１ウェイト値ｗ＿１と第１ピクセル値ＩＦＭ１との乗算及び加算演算を行い、出力値Ｏ０（０，０）を出力する。同様に、プロセッシングユニット１１２のうち第２プロセッシングユニットないし第４プロセッシングユニットは、第１ウェイト値ｗ＿１と第２ピクセル値ＩＦＭ２との乗算及び加算演算、第１ウェイト値ｗ＿１と第３ピクセル値ＩＦＭ３との乗算及び加算演算、及び第１ウェイト値ｗ＿１と第４ピクセル値ＩＦＭ４との乗算及び加算演算を行い、出力値Ｏ０（０，１）、出力値Ｏ０（１，０）、及び出力値Ｏ０（１，１）を出力する。言い換えれば、プロセッシングユニット１１２は、スカラーとベクトルとの乗算演算であって、第１ウェイト値ｗ＿１とピクセル値ＩＦＭ１、ＩＦＭ２、ＩＦＭ３、ＩＦＭ４との乗算演算を行い、出力値Ｏ０（０，０）、Ｏ０（０，１）、Ｏ０（１，０）、Ｏ０（１，１）を出力する。また、出力値Ｏ０（０，０）、Ｏ０（０，１）、Ｏ０（１，０）、Ｏ０（１，１）それぞれは、出力フィーチャーマップＯＦＭに累算される。
【００６４】
同様に、コントローラ１１４は、カーネルの他のウェイト値を共有オペランドとしてプロセッシングユニット１１２それぞれに入力されるように制御し、入力フィーチャーマップＩＦＭの他のピクセル値それぞれがプロセッシングユニット１１２それぞれに入力されるように制御することができる。次いで、プロセッシングユニット１１２は、カーネルの他のウェイト値と入力フィーチャーマップの他のピクセル値との乗算演算を行い、出力値を出力し、出力値は、出力フィーチャーマップＯＦＭに累算される。
【００６５】
図１０は、プロセッシングユニットが共有オペランドであるカーネルのウェイト値に基づいて並列化された演算を行う実施例を示す。
【００６６】
コントローラ１１４は、共有オペランドをカーネルの第１ウェイト値ｗ＿１、第２ウェイト値ｗ＿２、第３ウェイト値ｗ＿３、及び第４ウェイト値ｗ＿４であると決定する。第１ウェイト値ｗ＿１、第２ウェイト値ｗ＿２、第３ウェイト値ｗ＿３、及び第４ウェイト値ｗ＿４は、第０出力チャネルないし第３出力チャネルそれぞれに対応する第０入力チャネルの（０，０）位置に該当するウェイト値であってもよい。コントローラ１１４は、第１ウェイト値ｗ＿１を共有オペランドとしてプロセッシングユニット１１２のうち第１プロセッシングユニット１９１それぞれに入力されるように制御し、入力フィーチャーマップＩＦＭのピクセル値ＩＦＭ１、ＩＦＭ２、ＩＦＭ３、ＩＦＭ４それぞれが第１プロセッシングユニット１９１それぞれに入力されるように制御することができる。同様に、コントローラ１１４は、第２ウェイト値ｗ＿２を共有オペランドとしてプロセッシングユニット１１２のうち第２プロセッシングユニット１９２それぞれに入力されるように制御し、入力フィーチャーマップＩＦＭのピクセル値ＩＦＭ１、ＩＦＭ２、ＩＦＭ３、ＩＦＭ４それぞれが第２プロセッシングユニット１９２それぞれに入力されるように制御することができる。同様に、コントローラ１１４は、第３ウェイト値ｗ＿３を共有オペランドとしてプロセッシングユニット１１２のうち第３プロセッシングユニット１９３それぞれに入力されるように制御し、入力フィーチャーマップＩＦＭのピクセル値ＩＦＭ１、ＩＦＭ２、ＩＦＭ３、ＩＦＭ４それぞれが第３プロセッシングユニット１９３それぞれに入力されるように制御することができる。同様に、コントローラ１１４は、第４ウェイト値ｗ＿４を共有オペランドとしてプロセッシングユニット１１２のうち第４プロセッシングユニット１９４それぞれに入力されるように制御し、入力フィーチャーマップＩＦＭのピクセル値ＩＦＭ１、ＩＦＭ２、ＩＦＭ３、ＩＦＭ４それぞれが第４プロセッシングユニット１９４それぞれに入力されるように制御することができる。
【００６７】
第１プロセッシングユニット１９１は、第１ウェイト値ｗ＿１とピクセル値ＩＦＭ１、ＩＦＭ２、ＩＦＭ３、ＩＦＭ４との乗算演算を行い、出力値Ｏ０（０，０）、Ｏ０（０，１）、Ｏ０（１，０）、Ｏ０（１，１）を出力する。また、第２プロセッシングユニット１９２は、第２ウェイト値ｗ＿２とピクセル値ＩＦＭ１、ＩＦＭ２、ＩＦＭ３、ＩＦＭ４との乗算演算を行い、出力値Ｏ１（０，０）、Ｏ１（０，１）、Ｏ１（１，０）、Ｏ１（１，１）を出力する。また、第３プロセッシングユニット１９３は、第３ウェイト値ｗ＿３とピクセル値ＩＦＭ１、ＩＦＭ２、ＩＦＭ３、ＩＦＭ４との乗算演算を行い、出力値Ｏ２（０，０）、Ｏ２（０，１）、Ｏ２（１，０）、Ｏ２（１，１）を出力する。また、第４プロセッシングユニット１９４は、第４ウェイト値ｗ＿４とピクセル値ＩＦＭ１、ＩＦＭ２、ＩＦＭ３、ＩＦＭ４との乗算演算を行い、出力値Ｏ３（０，０）、Ｏ３（０，１）、Ｏ３（１，０）、Ｏ３（１，１）を出力する。したがって、第１プロセッシングユニット１９１ないし第４プロセッシングユニット１９４によって出力された出力値Ｏ０（０〜１、０〜１）、Ｏ１（０〜１、０〜１）、Ｏ２（０〜１、０〜１）、Ｏ３（０〜１、０〜１）は、出力フィーチャーマップＯＦＭに累算される。
【００６８】
図８及び図９で示されたＨ×Ｗのサイズを有し、ｎ個の入力チャネルで構成された入力フィーチャーマップＩＦＭ、Ｔｉ×Ｔｒのサイズを有し、ｎ個の入力チャネル及びｍ個の出力チャネルで構成されたカーネル（Ｋｅｒｎａｌ）、及びＴｒ×Ｔｃのサイズを有し、ｍ個の出力チャネルで構成された出力フィーチャーマップＯＦＭの各数値は、一例示に過ぎず、これに限定して解釈されない。また、図８及び図９で示された第１ウェイト値ｗ＿１ないし第４ウェイト値ｗ＿４の位置及びピクセル値ＩＦＭ１、ＩＦＭ２、ＩＦＭ３、またはＩＦＭ４の位置は、一例示に過ぎず、これに限定して解釈されない。
【００６９】
再び図３を参照すれば、プロセッシングユニット１１２は、コントローラ１１４によって決定された共有オペランドに基づいて並列化された演算を行う。この際に、共有オペランドがゼロである場合に、プロセッシングユニット１１２は、並列化された演算を省略(skip)しうる。言い換えれば、プロセッシングユニット１１２は、共有オペランドに基づいたゼロスキッピング(zero  skipping)を具現化することができる。
【００７０】
コントローラ１１４は、入力フィーチャーマップのピクセル値を共有オペランドと決定する。一例によって、第１ピクセル値がゼロである場合に、プロセッシングユニット１１２は、第１ピクセル値とカーネルの第１ウェイト値との並列化された演算を省略する。したがって、プロセッシングユニット１１２は、ゼロである第１ピクセル値の代わりに、非ゼロ(non-zero)である第２ピクセル値とカーネルの第２ウェイト値との並列化された演算を行う。他の例によって、カーネルの第１ウェイト値がいずれもゼロである場合に、プロセッシングユニット１１２は、第１ピクセル値とカーネルの第１ウェイト値との並列化された演算を省略し、第２ピクセル値とカーネルの第２ウェイト値との並列化された演算を行うことができる。
コントローラ１１４は、カーネルのウェイト値を共有オペランドと決定する。一例によって、第１ウェイト値がゼロである場合に、プロセッシングユニット１１２は、第１ウェイト値と入力フィーチャーマップの第１ピクセル値との並列化された演算を省略する。したがって、プロセッシングユニット１１２は、ゼロである第１ウェイト値の代わりに、非ゼロである第２ウェイト値と第２ピクセル値との並列化された演算を行う。他の例によって、入力フィーチャーマップの第１ピクセル値がいずれもゼロである場合に、プロセッシングユニット１１２は、第１ウェイト値と第１ピクセル値との並列化された演算を省略し、第２ウェイト値と第２ピクセル値との並列化された演算を行うことができる。
【００７１】
ニューラルネットワーク装置１００は、プロセッシングユニット１１２の共有オペランドに対するゼロ如何、またはプロセッシングユニット１１２の残りの全てのオペランドに対するゼロ如何を通じてゼロスキッピングを具現化するところ、ゼロスキッピングのための単純化されたハードウェア構造を具現化することができる。
【００７２】
図１１は、プロセッシングユニットがゼロである共有オペランドに基づいてゼロスキッピングを行う一実施例を示す。
【００７３】
プロセッシングユニット１１２は、（Ｎ−１）番目のサイクル(cycle)において、共有オペランドである入力フィーチャーマップＩＦＭの第１ピクセル値ＩＦＭ１に基づいて並列化された演算を行い、出力値を出力する。具体的に、プロセッシングユニット１１２は、入力フィーチャーマップＩＦＭの第０入力チャネルの（０，０）に位置した第１ピクセル値ＩＦＭ１と、カーネル(Kernal)の第０出力チャネルないし第ｍ−１出力チャネルそれぞれに対応する第０入力チャネルの（０，０）に位置したウェイト値との並列化された演算を行い、出力値を出力する。かような出力値それぞれは、出力フィーチャーマップＯＦＭの第０出力チャネルないし第ｍ−１出力各チャネルの（０，０）位置であるＯ０〜ｍ−１（０，０）に累算される。
【００７４】
次いで、プロセッシングユニット１１２は、Ｎ番目のサイクルで、入力フィーチャーマップＩＦＭの第２ピクセル値ＩＦＭ２に基づいて並列化された演算を行う。但し、第２ピクセル値ＩＦＭ２がゼロである場合に、プロセッシングユニット１１２は、第２ピクセル値ＩＦＭ２とウェイト値との並列化された演算を省略することができる。具体的に、プロセッシングユニット１１２は、入力フィーチャーマップＩＦＭの第１入力チャネルの（０，０）に位置した第２ピクセル値ＩＦＭ２と、カーネルの第０出力チャネルないし第ｍ−１出力チャネルそれぞれに対応する第１入力チャネルの（０，０）に位置したウェイト値との並列化された演算を省略することができる。
【００７５】
次いで、プロセッシングユニット１１２は、Ｎ番目のサイクルで、入力フィーチャーマップＩＦＭの第３ピクセル値ＩＦＭ３に基づいて並列化された演算を行い、出力値を出力する。具体的に、プロセッシングユニット１１２は、入力フィーチャーマップＩＦＭの第２入力チャネルの（０，０）に位置した第３ピクセル値ＩＦＭ３と、カーネルの第０出力チャネルないし第ｍ−１出力チャネルそれぞれに対応する第２入力チャネルの（０，０）に位置したウェイト値との並列化された演算を行い、出力値を出力する。かような出力値それぞれは、出力フィーチャーマップＯＦＭの第０出力チャネルないし第ｍ−１出力チャネルそれぞれの（０，０）位置であるＯ０〜ｍ−１（０，０）に累算される。
【００７６】
結果として、第２ピクセル値ＩＦＭ２がゼロである場合に、プロセッシングユニット１１２は、第１ピクセル値ＩＦＭ１に次いで、第３ピクセル値ＩＦＭ３に基づいて並列化された演算を行い、第１ピクセル値ＩＦＭ１に基づいた出力値を累算する位置及び第３ピクセル値ＩＦＭ３に基づいた出力値を累算する位置がいずれも出力フィーチャーマップＯＦＭの同じ位置にもなる。したがって、ニューラルネットワーク装置１００は、ゼロスキッピングを通じてコンボルーション演算の演算量及び演算時間を短縮しつつも、出力値が累算される位置を同一に保持するので、ニューラルネットワークのコンボルーション演算を効率よく処理することができる。
【００７７】
図１２は、プロセッシングユニットがゼロである共有オペランドに基づいてゼロスキッピングを行う他の実施例を示す。
【００７８】
プロセッシングユニット１１２は、（Ｎ−１）番目サイクル(cycle)で、共有オペランドであるカーネル(Kernal)の第１ウェイト値ｗ＿１に基づいて並列化された演算を行い、出力値を出力する。具体的に、プロセッシングユニット１１２は、カーネルの第０出力チャネル及び第０入力チャネルの（０，０）に位置した第１ウェイト値ｗ＿１と、入力フィーチャーマップＩＦＭの第０入力チャネルの（０〜１、０〜１）に位置したピクセル値との並列化された演算を行い、出力値を出力する。かような出力値それぞれは、出力フィーチャーマップＯＦＭの第０出力チャネルの（０〜１、０〜１）であるＯ０（０〜１、０〜１）に累算される。
【００７９】
次いで、プロセッシングユニット１１２は、Ｎ番目サイクルで、カーネルの第２ウェイト値ｗ＿２に基づいて並列化された演算を行う。但し、第２ウェイト値ｗ＿２がゼロである場合に、プロセッシングユニット１１２は、第２ウェイト値ｗ＿２とピクセル値との並列化された演算を省略する。具体的に、プロセッシングユニット１１２は、カーネルの第０出力チャネル及び第１入力チャネルの（０，０）に位置した第２ウェイト値ｗ＿２と、入力フィーチャーマップＩＦＭの第１入力チャネルの（０〜１、０〜１）に位置したピクセル値との並列化された演算を省略する。
【００８０】
次いで、プロセッシングユニット１１２は、Ｎ番目サイクルで、カーネルの第３ウェイト値ｗ＿３に基づいて並列化された演算を行い、出力値を出力する。具体的に、プロセッシングユニット１１２は、カーネルの第０出力チャネル及び第２入力チャネルの（０，０）に位置した第３ウェイト値ｗ＿３と、入力フィーチャーマップＩＦＭの第２入力チャネルの（０〜１、０〜１）に位置したピクセル値との並列化された演算を行い、出力値を出力する。かような出力値それぞれは、出力フィーチャーマップＯＦＭの第０出力チャネルの（０〜１、０〜１）であるＯ０（０〜１、０〜１）に累算される。
【００８１】
結果として、第２ウェイト値ｗ＿２がゼロである場合に、プロセッシングユニット１１２は、第１ウェイト値ｗ＿１に次いで、第３ウェイト値ｗ＿３に基づいて並列化された演算を行い、第１ウェイト値ｗ＿１に基づいた出力値を累算する位置及び第３ウェイト値ｗ＿３に基づいた出力値を累算する位置がいずれも出力フィーチャーマップＯＦＭの同じ位置にもなる。したがって、ニューラルネットワーク装置１００は、ゼロスキッピングを通じてコンボルーション演算の演算量及び演算時間を短縮しつつも、出力値が累算される位置を同一に保持するので、ニューラルネットワークのコンボルーション演算を効率よく処理することができる。
【００８２】
図１３は、一実施例によって、ニューラルネットワーク装置の動作方法を説明するための図面である。図１３に示された方法は、図３ないし図１２のニューラルネットワーク装置１００の各構成要素によって行われ、重複する説明については省略する。
【００８３】
段階１３１０において、ニューラルネットワーク装置１００は、入力フィーチャーマップの特徴及びカーネルの特徴のうち少なくとも１つに基づいて、並列化された演算それぞれに共通して共有される共有オペランド(shared  operand)を、入力フィーチャーマップのピクセル値およびカーネルのウェイト値のうちのいずれか１つとして決定する。ニューラルネットワーク装置１００は、一例によって、第１入力フィーチャーマップと第１カーネルとのコンボルーション演算時に、共有オペランドを第１入力フィーチャーマップのピクセル値として決定し、他の例によって、第２入力フィーチャーマップと第２カーネルとのコンボルーション演算時に、共有オペランドを第２カーネルのウェイト値として決定する。
【００８４】
ニューラルネットワーク装置１００は、入力フィーチャーマップの特徴及びカーネルの特徴のうち少なくとも１つに基づいて、共有オペランドを、入力フィーチャーマップのピクセル値およびカーネルのウェイト値のうちのいずれか１つとして決定する。具体的に、ニューラルネットワーク装置１００は、入力フィーチャーマップ内でゼロ値を有するピクセルの比率、カーネル内でゼロ値を有するウェイトの比率、及び入力フィーチャーマップの形状のうち少なくとも１つに基づいて、共有オペランドを、入力フィーチャーマップのピクセル値およびカーネルのウェイト値のうちのいずれか１つとして決定する。
【００８５】
ニューラルネットワーク装置１００は、ニューラルネットワークのレイヤごとに共有オペランドを、入力フィーチャーマップのピクセル値およびカーネルのウェイト値のうちのいずれか１つとして決定する。例えば、第１レイヤの入力フィーチャーマップと第１レイヤのカーネルとのコンボルーション演算時に、ニューラルネットワーク装置１００は、第１レイヤの共有オペランドを第１レイヤの入力フィーチャーマップのピクセル値として決定する。また、第２レイヤの入力フィーチャーマップと第２レイヤのカーネルとのコンボルーション演算時に、ニューラルネットワーク装置１００は、第２レイヤの共有オペランドを第２レイヤのカーネルのウェイト値として決定する。
【００８６】
段階１３２０において、ニューラルネットワーク装置１００は、共有オペランドに基づいて並列化された演算を行う。一例として、第１入力フィーチャーマップのピクセル値が共有オペランドとして決定される場合に、ニューラルネットワーク装置１００は、第１入力フィーチャーマップのピクセル値と第１カーネルのウェイト値との並列化された演算を行う。他の例で、第１カーネルのウェイト値が共有オペランドとして決定される場合に、ニューラルネットワーク装置１００は、第１カーネルのウェイト値と第１入力フィーチャーマップのピクセル値との並列化された演算を行う。ニューラルネットワーク装置１００は、並列化された演算を通じて出力された出力値を出力フィーチャーマップに累算する。
【００８７】
ニューラルネットワーク装置１００は、既定の共有オペランドがゼロである場合に、並列化された演算を省略(skip)することができる。一例によって、第１ピクセル値がゼロである場合に、ニューラルネットワーク装置１００は、第１ピクセル値とカーネルの第１ウェイト値との並列化された演算を省略する。したがって、ニューラルネットワーク装置１００は、ゼロである第１ピクセル値の代わりに、非ゼロ(non-zero)である第２ピクセル値とカーネルの第２ウェイト値との並列化された演算を行う。他の例によって、第１ウェイト値がゼロである場合に、ニューラルネットワーク装置１００は、第１ウェイト値と入力フィーチャーマップの第１ピクセル値との並列化された演算を省略する。したがって、ニューラルネットワーク装置１００は、ゼロである第１ウェイト値の代わりに、非ゼロである第２ウェイト値と第２ピクセル値との並列化された演算を行う。
【００８８】
一方、前述した方法は、コンピュータで実行されるプログラムで作成可能であり、コンピュータで読み取り可能な記録媒体を用いて前記プログラムを動作させる汎用デジタルコンピュータで具現化される。また、前述した方法で使用されたデータの構造は、コンピュータで読み取り可能な記録媒体に多くの手段を通じて記録される。前記コンピュータで読み取り可能な記録媒体は、マグネチック記録媒体（例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ、ＵＳＢ、フロッピーディスク、ハードディスクなど）、光学的記録媒体（例えば、ＣＤ−ＲＯＭ、ＤＶＤなど）のような記録媒体を含む。
【００８９】
本実施例に係わる技術分野で通常の知識を有する者は、前記記載の本質的な特性から脱しない範囲で変形された形態として具現化される可能性があるということを理解できるであろう。したがって、開示された方法は、限定的な観点ではなく、説明的な観点で考慮されねばならず、権利範囲は、前述した説明ではなく、特許請求の範囲に示しており、それと同等な範囲内にある全ての相違点を含むものと解釈されねばならない。
【符号の説明】
【００９０】
１００      ニューラルネットワーク装置
１１０      プロセッサ
１１４      コントローラ
１１２      プロセッシングユニット
１２０      メモリ
１７１      第１プロセッシングユニット
１７２      第２プロセッシングユニット
１７３      第３プロセッシングユニット
１７４      第４プロセッシングユニット
１９１      第１プロセッシングユニット
１９２      第２プロセッシングユニット
１９３      第３プロセッシングユニット
１９４      第４プロセッシングユニット
２０１      入力フィーチャーマップ
２０２      カーネル
２０３、２３０      出力フィーチャーマップ
２１０      入力フィーチャーマップ
２２０      カーネル
２１１      第１領域
２１２      第２領域
２１３      第１６領域
２３０      出力フィーチャーマップ
２３１      ピクセル値
２３２      ピクセル値
【図１】
2020126651.tif 000003
【図２Ａ】
2020126651.tif 000004
【図２Ｂ】
2020126651.tif 000005
【図３】
2020126651.tif 000006
【図４】
2020126651.tif 000007
【図５Ａ】
2020126651.tif 000008
【図５Ｂ】
2020126651.tif 000009
【図６】
2020126651.tif 000010
【図７】
2020126651.tif 000011
【図８】
2020126651.tif 000012
【図９】
2020126651.tif 000013
【図１０】
2020126651.tif 000014
【図１１】
2020126651.tif 000015
【図１２】
2020126651.tif 000016
【図１３】
2020126651.tif 000017