JP7501617B2 - グループ化畳み込み処理定義変更装置、グループ化畳み込み処理定義変更方法およびグループ化畳み込み処理定義変更プログラム - Google Patents

グループ化畳み込み処理定義変更装置、グループ化畳み込み処理定義変更方法およびグループ化畳み込み処理定義変更プログラム Download PDF

Info

Publication number
JP7501617B2
JP7501617B2 JP2022518508A JP2022518508A JP7501617B2 JP 7501617 B2 JP7501617 B2 JP 7501617B2 JP 2022518508 A JP2022518508 A JP 2022518508A JP 2022518508 A JP2022518508 A JP 2022518508A JP 7501617 B2 JP7501617 B2 JP 7501617B2
Authority
JP
Japan
Prior art keywords
convolution
divided
processing definition
weight matrix
channel
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2022518508A
Other languages
English (en)
Other versions
JPWO2021220422A1 (ja
Inventor
誠也 柴田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Publication of JPWO2021220422A1 publication Critical patent/JPWO2021220422A1/ja
Application granted granted Critical
Publication of JP7501617B2 publication Critical patent/JP7501617B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Image Analysis (AREA)
  • Complex Calculations (AREA)

Description

本発明は、グループ化畳み込み処理定義変更装置、グループ化畳み込み処理定義変更方法およびグループ化畳み込み処理定義変更プログラムに関する。
畳み込みニューラルネットワーク(convolutional neural network; CNN) は、畳み込み層とプーリング層の2種類の層が交互に積み重ねられた構造を持つフィードフォーワード型のニューラルネットワークである。以下、畳み込みニューラルネットワークを単にCNN とも呼ぶ。
図8は、畳み込みニューラルネットワークの例を示す説明図である。図8に示すCNN では、第1畳み込み層、第1プーリング層、第2畳み込み層、第2プーリング層が交互に積み重ねられている。
また、図8に示すC1、C2はそれぞれ、畳み込みの計算を表す。例えば、第1畳み込み層に入力される入力画像に対して、畳み込みの計算C1が実行される。
なお、画像は、入力されるデータの一例である。CNN に入力されるデータは、画像以外のデータであってもよい。
また、図8に示すP1、P2はそれぞれ、プーリングの計算を表す。例えば、第1プーリング層に入力される畳み込みの計算結果に対して、プーリングの計算P1が実行される。
また、図8に示すF は、全結合ネットワークを表す。全結合ネットワークF は、第2プーリング層のノードと出力層のノードを全て結合する全結合層の機能を有する。最終的に、出力層からCNN の出力が得られる。
以下、CNN における畳み込みの計算を具体的に説明する。図9は、CNN における畳み込みの計算の例を示す説明図である。なお、図9に示す畳み込みの計算の例は、図8に示す畳み込みの計算C1に相当する。
図9に示す入力画像は、CNN に入力される画像である。図9に示す入力画像は、第1チャネル~第Cin チャネル(Cin は2以上の整数)が順に並べられて構成されている。すなわち、Cin は、入力チャネル数を意味する。また、図9に示すように、入力画像を構成する画像の縦のサイズはH 、横のサイズはW である。
説明を簡便にするため、畳み込みの計算の対象である入力X として、図9に示す格子模様が記された縦のサイズが1、横のサイズが1、チャネル数がCin の画像を考える。図9の下段には、高さ方向から見た場合の入力X が記載されている。また、図9に示す入力X の左の符号は、チャネルの識別番号である(他の図においても同様)。
すなわち、図9に示す畳み込みの計算の例において、カーネルサイズは「1×1」である。しかし、以下の説明の内容は、カーネルサイズが「1×1」以外のサイズ(例えば、「3×3」や「5×5」)であっても同様である。
図9に示す畳み込みの計算では、縦のサイズがCout、横のサイズがCin の重みW と、入力X とが掛け合わされる。掛け合わされた結果、チャネル数がCoutの画像である出力Y0が得られる。すなわち、Coutは、出力チャネル数を意味する。
なお、図9に示す畳み込みの計算は、行列同士の乗算に相当する。すなわち、図9に示す畳み込みの計算では、重みW 、入力X 、出力Y0はそれぞれ、行列として扱われる。本明細書における「重み」は、正確には「重み行列」であるが、簡便のため単に「重み」とも呼ぶ。
また、図8~図9に示すCNN は、学習済みモデルである。すなわち、図9に示す重みW も、事前に学習が実行されることによって得られた重みである。
上記の畳み込みの計算の方法として、グループ化畳み込みを使用するCNN が増加している。例えば、非特許文献1には、グループ化畳み込みの説明が記載されている。
S. Xie, R. Girshick, P. Dollar, Z. Tu, and K. He, "Aggregatedresidual transformations for deep neural networks," in Computer Vision and Pattern Recognition, 2017.
グループ化畳み込みの計算には、通常の畳み込みの計算に比べて演算量が小さい、精度が高い等の利点がある。しかし、AI(Artificial Intelligence) 処理に特化した半導体集積回路であるAIチップがグループ化畳み込みの計算を実行すると、計算速度が低下する場合がある。
グループ化畳み込みとAIチップのどちらも利用の増加が予測されるため、AIチップがグループ化畳み込みの計算を実行しても、計算速度が低下しない方法が求められている。非特許文献1には、グループ化畳み込みの計算速度が低下しない方法が記載されていない。
そこで、本発明は、グループ化畳み込みの計算速度を高めることができるグループ化畳み込み処理定義変更装置、グループ化畳み込み処理定義変更方法およびグループ化畳み込み処理定義変更プログラムを提供することを目的とする。
本発明によるグループ化畳み込み処理定義変更装置は、第1チャネル~第N チャネル(N は2以上の整数)が順に並べられて構成されている入力されたデータがチャネル方向にG (G は2以上の整数)個に分割され、分割された{(i -1)×N/G +1}チャネル~(i×N/G)チャネル(i=1~G)で構成されているデータに対して第i 重み行列が使用されて畳み込みの計算がi =1からi =G に渡ってそれぞれ実行されるグループ化畳み込みが定義された学習済みの畳み込みニューラルネットワークに関して、入力されたデータが分割される数をG からg (g は、G を除くG の約数)に変更する変更手段と、分割される数が変更された後に分割された{(j -1)×N/g +1}チャネル~(j×N/g)チャネル(j=1~g)で構成されているデータの畳み込みの計算で使用される新たな第j 重み行列を、j =1からj =g に渡ってそれぞれ生成する生成手段とを備え、生成手段は、新たな第j 重み行列を、新たな第j 重み行列の左上から右下にかけて第{(j -1)×G/g +1}重み行列~第(j×G/g)重み行列を対角線上に順に配置し、重み行列が配置された箇所の成分以外の成分の値を全て0に設定することによって生成することを特徴とする。
本発明によるグループ化畳み込み処理定義変更方法は、コンピュータが、第1チャネル~第N チャネル(N は2以上の整数)が順に並べられて構成されている入力されたデータがチャネル方向にG (G は2以上の整数)個に分割され、分割された{(i -1)×N/G +1}チャネル~(i×N/G)チャネル(i=1~G)で構成されているデータに対して第i 重み行列が使用されて畳み込みの計算がi =1からi =G に渡ってそれぞれ実行されるグループ化畳み込みが定義された学習済みの畳み込みニューラルネットワークに関して、入力されたデータが分割される数をG からg (g は、G を除くG の約数)に変更し、分割される数が変更された後に分割された{(j -1)×N/g +1}チャネル~(j×N/g)チャネル(j=1~g)で構成されているデータの畳み込みの計算で使用される新たな第j 重み行列を、j =1からj =g に渡ってそれぞれ生成し、新たな第j 重み行列を、新たな第j 重み行列の左上から右下にかけて第{(j -1)×G/g +1}重み行列~第(j×G/g)重み行列を対角線上に順に配置し、重み行列が配置された箇所の成分以外の成分の値を全て0に設定することによって生成することを特徴とする。
本発明によるグループ化畳み込み処理定義変更プログラムは、コンピュータに、第1チャネル~第N チャネル(N は2以上の整数)が順に並べられて構成されている入力されたデータがチャネル方向にG (G は2以上の整数)個に分割され、分割された{(i -1)×N/G +1}チャネル~(i×N/G)チャネル(i=1~G)で構成されているデータに対して第i 重み行列が使用されて畳み込みの計算がi =1からi =G に渡ってそれぞれ実行されるグループ化畳み込みが定義された学習済みの畳み込みニューラルネットワークに関して、入力されたデータが分割される数をG からg (g は、G を除くG の約数)に変更する変更処理、および分割される数が変更された後に分割された{(j -1)×N/g +1}チャネル~(j×N/g)チャネル(j=1~g)で構成されているデータの畳み込みの計算で使用される新たな第j 重み行列を、j =1からj =g に渡ってそれぞれ生成する生成処理を実行させるためのグループ化畳み込み処理定義変更プログラムであって、生成処理で、新たな第j 重み行列を、新たな第j 重み行列の左上から右下にかけて第{(j -1)×G/g +1}重み行列~第(j×G/g)重み行列を対角線上に順に配置し、重み行列が配置された箇所の成分以外の成分の値を全て0に設定することによって生成させることを特徴とする。
本発明によれば、グループ化畳み込みの計算速度を高めることができる。
CNN におけるグループ化畳み込みの計算の例を示す説明図である。 本発明の実施形態のグループ化畳み込み処理定義変更装置の構成例を示すブロック図である。 グループ化畳み込み処理定義変更装置100により定義が変更されたグループ化畳み込みの計算の例を示す説明図である。 グループ化畳み込み処理定義変更装置100により定義が変更されたグループ化畳み込みの計算の他の例を示す説明図である。 本実施形態のグループ化畳み込み処理定義変更装置100によるグループ化畳み込み処理定義変更処理の動作を示すフローチャートである。 本発明によるグループ化畳み込み処理定義変更装置100のハードウェア構成例を示す説明図である。 本発明によるグループ化畳み込み処理定義変更装置の概要を示すブロック図である。 畳み込みニューラルネットワークの例を示す説明図である。 CNN における畳み込みの計算の例を示す説明図である。
最初に、CNN におけるグループ化畳み込みの計算を具体的に説明する。図1は、CNN におけるグループ化畳み込みの計算の例を示す説明図である。
なお、図1に示すグループ化畳み込みの計算の例は、図9に示す畳み込みの計算にグループ化畳み込みが適用された場合の例である。また、本例ではAIチップがグループ化畳み込みの計算を実行する場合を考える。
図1に示すグループ化畳み込みの計算の例では、グループ数が「4」に定義されている。すなわち、図1に示す例で使用されるCNN は、入力X をチャネル方向に4つのグループに分けて畳み込みの計算を行うことが予め定義された上で事前に学習されたモデルである。
なお、画像である入力X は、入力されるデータの一例である。CNN に入力されるデータは、画像以外のデータであってもよい。
よって、図1に示すように、グループ化畳み込みの計算では、縦のサイズが(Cout/4)、横のサイズが(Cin/4) の重みWa~重みWdが用意される。AIチップは、例えば重みWaと、分割された第1チャネル~第Cin/4 チャネルで構成されている画像(チャネル数が(Cin/4) )とを掛け合わせる。掛け合わせた結果、AIチップは、チャネル数が(Cout/4)の画像を出力として得る。
図1に示すように、AIチップは、上記の計算を重みWb~重みWdに対してもそれぞれ行う。すなわち、AIチップは、入力X をチャネル方向に4個に分割し、分割された第{(i -1)×Cin/4 +1}チャネル~第(i×Cin/4)チャネル(i=1~4) で構成されている画像に対して第i 重み行列を使用して、畳み込みの計算をi =1からi =4に渡ってそれぞれ実行する。なお、第1重み行列~第4重み行列はそれぞれ、重みWa~重みWdに対応する。各計算の結果、AIチップは、チャネル数が(Cout/4)の画像を4つ得る。
最後に、AIチップは、計算に使用された4分割された入力X の位置と同じ位置に、得られた画像を配置する。得られた4つの画像をそれぞれ配置した後、AIチップは、各画像を結合する。
結合することによって、AIチップは、通常の畳み込みの計算結果に相当するチャネル数がCoutの画像である出力Y を得る。なお、図1に示すグループ化畳み込みの計算で得られる出力Y は、図9に示す畳み込みの計算で得られる出力Y0と等価ではない。
畳み込みの計算量は、重みのサイズに比例する。例えば、図9に示す畳み込みの計算量は、重みW のサイズである(Cin×Cout) に比例する。また、図1に示すグループ化畳み込みの計算量は、重みWa~重みWdの各サイズの総和である{(Cin/4)×(Cout/4)×4}に比例する。すなわち、図1に示すグループ化畳み込みの計算量は、図9に示す畳み込みの計算量の1/4 になる。
一般的に、入力X がG (G は2以上の整数)個のグループに分けられてグループ化畳み込みの計算が行われる場合、図1に示すグループ化畳み込みの計算量は、{(Cin/G)×(Cout/G)×G}に比例する。すなわち、図1に示すグループ化畳み込みの計算量は、図9に示す畳み込みの計算量の1/G になる。
上記の理論によれば、計算量が1/G になるため、グループ化畳み込みの計算速度は、通常の畳み込みの計算速度のG 倍になることが予想される。しかし、AIチップには、通常の畳み込みに最適化されているため、グループ化畳み込みに適していないチップも多い。
グループ化畳み込みに適していないAIチップには、例えばグループ化畳み込みの計算処理が複数回の畳み込みの計算処理として実装される可能性がある。よって、複数回の畳み込みの計算処理が実装されたAIチップは、グループ化畳み込みの計算を行う場合、畳み込みの計算の呼び出しに掛かるオーバヘッドの影響をG 回受ける。AIチップがオーバヘッドの影響をG 回受けると、グループ化畳み込みの計算速度が低下する。
また、グループ化畳み込みの計算では、1回の計算対象の画像のチャネル数が小さくなる(図1に示す(Cin/4) 等)。よって、同時に実行可能な畳み込みの計算処理の数である画像のチャネル数が、AIチップが並列で処理可能な処理の最大数に到達しない可能性が高い。
例えば、最大で256個の処理を並列で処理可能なAIチップにチャネル数が8の画像が入力されても、AIチップは、最大で8個の処理しか並列で処理できない。すなわち、処理の並列度が小さくなることも、グループ化畳み込みの計算速度が低下する要因の1つである。
[構成の説明]
以下、上述した課題である、グループ化畳み込みの計算速度を高めることができる本発明の実施形態を図面を参照して説明する。図2は、本発明の実施形態のグループ化畳み込み処理定義変更装置の構成例を示すブロック図である。
図2に示すグループ化畳み込み処理定義変更装置100は、変更前CNN モデル記憶部200と、変更後CNN モデル記憶部300と通信可能に接続されている。
変更前CNN モデル記憶部200には、図1に示す重みWa~重みWdを含め、上述した学習済みのCNN のモデルが記憶されている。変更前CNN モデル記憶部200に記憶されている学習済みのCNN のモデルは、グループ化畳み込みが定義された上で学習されたモデルである。
また、変更後CNN モデル記憶部300には、グループ化畳み込み処理定義変更装置100により定義が変更された、変更前CNN モデル記憶部200に記憶されている学習済みのCNN のモデルが格納される。
また、AIチップ400は、変更後CNN モデル記憶部300と通信可能に接続されている。AIチップ400は、変更後CNN モデル記憶部300に記憶されている学習済みのCNN のモデルを用いて、畳み込みの計算を行うチップである。
また、図2に示すように、グループ化畳み込み処理定義変更装置100は、取得部110と、定義変更部120と、重み変更部130と、格納部140とを備える。
取得部110は、図1に示す重みWa~重みWdを含め、変更前CNN モデル記憶部200から学習済みのCNN のモデルを取得する。
上述した課題を解決するために、本実施形態のグループ化畳み込み処理定義変更装置100は、グループ化畳み込みの計算における各グループを再度まとめることを特徴とする。以下、グループ化畳み込み処理定義変更装置100による課題の解決方法を説明する。
図3は、グループ化畳み込み処理定義変更装置100により定義が変更されたグループ化畳み込みの計算の例を示す説明図である。
なお、図3~図4に示す畳み込みの計算の例において、カーネルサイズは「1×1」である。しかし、本実施形態の内容は、カーネルサイズが「1×1」以外のサイズ(例えば、「3×3」や「5×5」)であっても同様である。
図3に示す畳み込みの計算では、定義変更部120が、変更前CNN モデル記憶部200に記憶されている学習済みのCNN のモデルに定義されているグループ数を「4」から「1」に変更している。グループ数の変更に伴い、重み変更部130が、1つの重みW1のみを用意している。
図3に示すように、重み変更部130は、重みW1の左上から右下にかけて図1に示す重みWa~重みWdを、対角線上に重みWa~重みWdの順で配置する。次いで、重み変更部130は、重みWa~重みWdが配置された箇所の成分以外の成分の値を全て0に設定することによって、重みW1を生成する。
図3に示すように、重みW1は、縦のサイズがCout、横のサイズがCin の重みになる。また、図3に示す「(0)」が記載された箇所は、成分の値が0である箇所である(他の図においても同様)。
グループ化畳み込み処理定義変更装置100の格納部140は、重み変更部130により生成された重みW1も含めて、定義変更部120により定義が変更された学習済みのCNN のモデルを変更後CNN モデル記憶部300に格納する。
よって、図3に示す畳み込みの計算では、AIチップ400が、重みW1と、入力X とを掛け合わせる計算を1回だけ行う。計算を1回だけ行うことによって、AIチップ400は、出力Y を得る。
図3に示す畳み込みの計算では、AIチップ400がオーバヘッドの影響を受ける回数は最少(1回)になる。ただし、値が0である多くの重みの成分に対しても、AIチップ400は、演算を行う。すなわち、図3に示す畳み込みの計算は、オーバヘッドの影響と行列演算の負荷とのバランスがとれた計算ではない可能性が高い。
図4は、グループ化畳み込み処理定義変更装置100により定義が変更されたグループ化畳み込みの計算の他の例を示す説明図である。
図4に示すグループ化畳み込みの計算では、定義変更部120が、変更前CNN モデル記憶部200に記憶されている学習済みのCNN のモデルに定義されているグループ数を「4」から「2」に変更している。グループ数の変更に伴い、重み変更部130が、重みW2~重みW3を用意している。
本実施形態の定義変更部120は、学習済みのCNN のモデルに定義されているグループ数を、グループ数の約数に変更する。図4に示す例であれば、「2」は「4」の約数である。
図4に示すように、重み変更部130は、重みW2の左上から右下にかけて図1に示す重みWa~重みWbを、対角線上に重みWa~重みWbの順で配置する。次いで、重み変更部130は、重みWa~重みWbが配置された箇所の成分以外の成分の値を全て0に設定することによって、重みW2を生成する。
また、重み変更部130は、重みW3の左上から右下にかけて図1に示す重みWc~重みWdを、対角線上に重みWc~重みWdの順で配置する。次いで、重み変更部130は、重みWc~重みWdが配置された箇所の成分以外の成分の値を全て0に設定することによって、重みW3を生成する。
図4に示すように、重みW2~重みW3は、縦のサイズが(Cout/2)、横のサイズが(Cin/2) の重みになる。なお、重み変更部130は、図3に示すサイズが(Cin×Cout) の重みW1を、サイズが(Cin/2) ×(Cout/2)である4個の重みに分割し、分割された4個の重みのうち非零の成分を含む重みを重みW2~重みW3として生成してもよい。
グループ化畳み込み処理定義変更装置100の格納部140は、重み変更部130により生成された重みW2~重みW3も含めて、定義変更部120により定義が変更された学習済みのCNN のモデルを変更後CNN モデル記憶部300に格納する。
よって、図4に示す畳み込みの計算では、AIチップ400が、例えば重みW2と、分割された第1チャネル~第Cin/2 チャネルで構成されている画像(チャネル数が(Cin/2) )とを掛け合わせる。掛け合わせた結果、AIチップ400は、チャネル数が(Cout/2)の画像を出力として得る。
AIチップ400は、上記の計算を重みW3に対しても行う。すなわち、AIチップ400は、入力X をチャネル方向に2個に分割し、分割された第{(j -1)×Cin/2 +1}チャネル~第(j×Cin/2)チャネル(j=1~2) で構成されている画像に対して新たな第j 重み行列を使用して、畳み込みの計算をj =1からj =2に渡ってそれぞれ実行する。なお、新たな第1重み行列~新たな第2重み行列はそれぞれ、重みW2~重みW3に対応する。
各計算の結果、AIチップ400は、チャネル数が(Cout/2)の画像を2つ得る。次いで、AIチップ400は、計算に使用された2分割された入力X の位置と同じ位置に得られた画像を配置する。
得られた2つの画像をそれぞれ配置した後、AIチップ400は、各画像を結合する。結合することによって、AIチップ400は、出力Y を得る。
すなわち、重み変更部130は、新たな第1重み行列に対応する重みW2の左上から右下にかけて重みWa、重みWbを対角線上に順に配置する。次いで、重み変更部130は、重みが配置された箇所の成分以外の成分の値を全て0に設定することによって、重みW2を生成する。
図1に示すグループ化畳み込みでは、重みWaは、第1(={(1 -1)×4/2 +1})重み行列に対応する。また、重みWbは、第2(=(1×4/2))重み行列に対応する。
また、重み変更部130は、新たな第2重み行列に対応する重みW3の左上から右下にかけて重みWc、重みWdを対角線上に順に配置する。次いで、重み変更部130は、重みが配置された箇所の成分以外の成分の値を全て0に設定することによって、重みW3を生成する。
図1に示すグループ化畳み込みでは、重みWcは、第3(={(2 -1)×4/2 +1})重み行列に対応する。また、重みWdは、第4(=(2×4/2))重み行列に対応する。
図4に示すグループ化畳み込みの計算では、AIチップ400がオーバヘッドの影響を受ける回数は、図1に示すグループ化畳み込みの計算での4回から2回に減る。
また、図4に示すグループ化畳み込みの計算では、図3に示す畳み込みの計算に比べて、値が0である重みの成分に対してAIチップ400が演算を行う回数も少なくなる。すなわち、図4に示すグループ化畳み込みの計算は、オーバヘッドの影響と行列演算の負荷とのバランスがとれた計算である可能性が高い。
以上のように、本実施形態のグループ化畳み込み処理定義変更装置100は、第1チャネル~第N チャネル(N は2以上の整数)が順に並べられて構成されている入力されたデータがチャネル方向にG (G は2以上の整数)個に分割されるグループ化畳み込みが定義された学習済みの畳み込みニューラルネットワークを扱う。グループ化畳み込みでは、分割された{(i -1)×N/G +1}チャネル~(i×N/G)チャネル(i=1~G)で構成されているデータに対して第i 重み行列が使用されて畳み込みの計算がi =1からi =G に渡ってそれぞれ実行される。
定義変更部120は、入力されたデータが分割される数をG からg (g は、G を除くG の約数)に変更する。G からg に変更された場合、重み変更部130は、分割される数が変更された後に分割された{(j -1)×N/g +1}チャネル~(j×N/g)チャネル(j=1~g)で構成されているデータの畳み込みの計算で使用される新たな第j 重み行列を、j =1からj =g に渡ってそれぞれ生成する。
具体的には、重み変更部130は、新たな第j 重み行列を、新たな第j 重み行列の左上から右下にかけて第{(j -1)×G/g +1}重み行列~第(j×G/g)重み行列を対角線上に順に配置し、重み行列が配置された箇所の成分以外の成分の値を全て0に設定することによって生成する。
なお、g の最適な値は、AIチップ400に依存する。よって、グループ化畳み込み処理定義変更装置100がG を除くG の約数全てに対して新たな重み行列を生成し、各重み行列が用いられた場合のAIチップ400の性能がそれぞれ計測され、各計測結果を基にg の最適な値が決定されることが好ましい。
また、定義変更部120は、入力されたデータが分割される数をG から1に変更してもよい。また、定義変更部120は、CNN を構成する複数の畳み込み層ごとに、g の最適な値を変更してもよい。
[動作の説明]
以下、本実施形態のグループ化畳み込み処理定義変更装置100の動作を図5を参照して説明する。図5は、本実施形態のグループ化畳み込み処理定義変更装置100によるグループ化畳み込み処理定義変更処理の動作を示すフローチャートである。
最初に、グループ化畳み込み処理定義変更装置100の取得部110が、変更前CNN モデル記憶部200から学習済みのCNN のモデルを取得する(ステップS101)。
次いで、定義変更部120は、取得された学習済みのCNN のモデルに定義されているグループ数G を、新たなグループ数g に変更する(ステップS102)。なお、g は、G を除くG の約数である。
次いで、重み変更部130は、変更されたg を基に、取得された学習済みのCNN のモデルで使用される重みから新たな重みを生成する(ステップS103)。
重み変更部130による重みの生成方法は、上述した通りである。例えば、グループ数G がグループ数g に変更された場合、重み変更部130は、全部でg 個の重みを生成する。また、重み変更部130が生成する重みの縦と横のサイズは、取得された重みの縦と横のサイズのG/g 倍になる。
次いで、格納部140は、変更後CNN モデル記憶部300に、重み変更部130により生成された重みも含めて、定義変更部120により定義が変更された学習済みのCNN のモデルを格納する(ステップS104)。格納した後、グループ化畳み込み処理定義変更装置100は、グループ化畳み込み処理定義変更処理を終了する。
[効果の説明]
本実施形態のグループ化畳み込み処理定義変更装置100は、定義変更部120および重み変更部130がグループ化畳み込みの処理をAIチップ400に適した処理に置き換えることによって、グループ化畳み込みの計算を高速化する。
具体的には、グループ化畳み込みの処理は、計算量が増えるものの、オーバヘッドの影響を受ける回数が少なく、かつAIチップ400が得意な並列度が高い処理に置き換えられる。従って、本実施形態のグループ化畳み込み処理定義変更装置100が使用されると、計算量が増えるにも関わらず、グループ化畳み込みの計算が高速化される。
以下、本実施形態のグループ化畳み込み処理定義変更装置100のハードウェア構成の具体例を説明する。図6は、本発明によるグループ化畳み込み処理定義変更装置100のハードウェア構成例を示す説明図である。
図6に示すグループ化畳み込み処理定義変更装置100は、CPU(Central Processing Unit )11と、主記憶部12と、通信部13と、補助記憶部14とを備える。また、ユーザが操作するための入力部15や、ユーザに処理結果または処理内容の経過を提示するための出力部16を備える。
グループ化畳み込み処理定義変更装置100は、図6に示すCPU11が各構成要素が有する機能を提供するプログラムを実行することによって、ソフトウェアにより実現される。
すなわち、CPU11が補助記憶部14に格納されているプログラムを、主記憶部12にロードして実行し、グループ化畳み込み処理定義変更装置100の動作を制御することによって、各機能がソフトウェアにより実現される。
なお、図6に示すグループ化畳み込み処理定義変更装置100は、CPU11の代わりにDSP(Digital Signal Processor)を備えてもよい。または、図6に示すグループ化畳み込み処理定義変更装置100は、CPU11とDSPとを併せて備えてもよい。
主記憶部12は、データの作業領域やデータの一時退避領域として用いられる。主記憶部12は、例えばRAM(Random Access Memory)である。
通信部13は、有線のネットワークまたは無線のネットワーク(情報通信ネットワーク)を介して、周辺機器との間でデータを入力および出力する機能を有する。
補助記憶部14は、一時的でない有形の記憶媒体である。一時的でない有形の記憶媒体として、例えば磁気ディスク、光磁気ディスク、CD-ROM(Compact Disk Read Only Memory )、DVD-ROM(Digital Versatile Disk Read Only Memory )、半導体メモリが挙げられる。
入力部15は、データや処理命令を入力する機能を有する。入力部15は、例えばキーボードやマウス等の入力デバイスである。
出力部16は、データを出力する機能を有する。出力部16は、例えば液晶ディスプレイ装置等の表示装置、またはプリンタ等の印刷装置である。
また、図6に示すように、グループ化畳み込み処理定義変更装置100において、各構成要素は、システムバス17に接続されている。
補助記憶部14は、本実施形態のグループ化畳み込み処理定義変更装置100において、取得部110、定義変更部120、重み変更部130、および格納部140を実現するためのプログラムを記憶している。
なお、グループ化畳み込み処理定義変更装置100は、例えば内部に図2に示すような機能を実現するLSI(Large Scale Integration )等のハードウェア部品が含まれる回路が実装されてもよい。
また、グループ化畳み込み処理定義変更装置100は、CPU等の素子を用いるコンピュータ機能を含まないハードウェアにより実現されてもよい。例えば、各構成要素の一部または全部は、汎用の回路(circuitry )または専用の回路、プロセッサ等やこれらの組み合わせによって実現されてもよい。これらは、単一のチップ(例えば、上記のLSI)によって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。各構成要素の一部または全部は、上述した回路等とプログラムとの組み合わせによって実現されてもよい。
各構成要素の一部または全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントアンドサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。
次に、本発明の概要を説明する。図7は、本発明によるグループ化畳み込み処理定義変更装置の概要を示すブロック図である。本発明によるグループ化畳み込み処理定義変更装置20は、第1チャネル~第N チャネル(N は2以上の整数)が順に並べられて構成されている入力されたデータがチャネル方向にG (G は2以上の整数)個に分割され、分割された{(i -1)×N/G +1}チャネル~(i×N/G)チャネル(i=1~G)で構成されているデータに対して第i 重み行列が使用されて畳み込みの計算がi =1からi =G に渡ってそれぞれ実行されるグループ化畳み込みが定義された学習済みの畳み込みニューラルネットワークに関して、入力されたデータが分割される数をG からg (g は、G を除くG の約数)に変更する変更手段21(例えば、定義変更部120)と、分割される数が変更された後に分割された{(j -1)×N/g +1}チャネル~(j×N/g)チャネル(j=1~g)で構成されているデータの畳み込みの計算で使用される新たな第j 重み行列を、j =1からj =g に渡ってそれぞれ生成する生成手段22(例えば、重み変更部130)とを備え、生成手段22は、新たな第j 重み行列を、新たな第j 重み行列の左上から右下にかけて第{(j -1)×G/g +1}重み行列~第(j×G/g)重み行列を対角線上に順に配置し、重み行列が配置された箇所の成分以外の成分の値を全て0に設定することによって生成する。
そのような構成により、グループ化畳み込み処理定義変更装置は、グループ化畳み込みの計算速度を高めることができる。
また、変更手段21は、入力されたデータが分割される数をG から1に変更してもよい。
そのような構成により、グループ化畳み込み処理定義変更装置は、オーバヘッドの影響を最小化できる。
また、変更手段21は、学習済みの畳み込みニューラルネットワークを構成する複数の畳み込み層ごとに入力されたデータが分割される数をそれぞれ変更してもよい。
そのような構成により、グループ化畳み込み処理定義変更装置は、畳み込み層ごとにグループ化畳み込みの定義を変更できる。
11 CPU
12 主記憶部
13 通信部
14 補助記憶部
15 入力部
16 出力部
17 システムバス
20、100 グループ化畳み込み処理定義変更装置
21 変更手段
22 生成手段
110 取得部
120 定義変更部
130 重み変更部
140 格納部
200 変更前CNN モデル記憶部
300 変更後CNN モデル記憶部
400 AIチップ

Claims (9)

  1. 第1チャネル~第N チャネル(N は2以上の整数)が順に並べられて構成されている入力されたデータがチャネル方向にG (G は2以上の整数)個に分割され、分割された{(i -1)×N/G +1}チャネル~(i×N/G)チャネル(i=1~G)で構成されているデータに対して第i 重み行列が使用されて畳み込みの計算がi =1からi =G に渡ってそれぞれ実行されるグループ化畳み込みが定義された学習済みの畳み込みニューラルネットワークに関して、前記入力されたデータが分割される数をG からg (g は、G を除くG の約数)に変更する変更手段と、
    前記分割される数が変更された後に分割された{(j -1)×N/g +1}チャネル~(j×N/g)チャネル(j=1~g)で構成されているデータの畳み込みの計算で使用される新たな第j 重み行列を、j =1からj =g に渡ってそれぞれ生成する生成手段とを備え、
    前記生成手段は、
    前記新たな第j 重み行列を、前記新たな第j 重み行列の左上から右下にかけて第{(j -1)×G/g +1}重み行列~第(j×G/g)重み行列を対角線上に順に配置し、重み行列が配置された箇所の成分以外の成分の値を全て0に設定することによって生成する
    ことを特徴とするグループ化畳み込み処理定義変更装置。
  2. 変更手段は、入力されたデータが分割される数をG から1に変更する
    請求項1記載のグループ化畳み込み処理定義変更装置。
  3. 変更手段は、学習済みの畳み込みニューラルネットワークを構成する複数の畳み込み層ごとに入力されたデータが分割される数をそれぞれ変更する
    請求項1記載のグループ化畳み込み処理定義変更装置。
  4. コンピュータが、
    第1チャネル~第N チャネル(N は2以上の整数)が順に並べられて構成されている入力されたデータがチャネル方向にG (G は2以上の整数)個に分割され、分割された{(i -1)×N/G +1}チャネル~(i×N/G)チャネル(i=1~G)で構成されているデータに対して第i 重み行列が使用されて畳み込みの計算がi =1からi =G に渡ってそれぞれ実行されるグループ化畳み込みが定義された学習済みの畳み込みニューラルネットワークに関して、前記入力されたデータが分割される数をG からg (g は、G を除くG の約数)に変更し、
    前記分割される数が変更された後に分割された{(j -1)×N/g +1}チャネル~(j×N/g)チャネル(j=1~g)で構成されているデータの畳み込みの計算で使用される新たな第j 重み行列を、j =1からj =g に渡ってそれぞれ生成し、
    前記新たな第j 重み行列を、前記新たな第j 重み行列の左上から右下にかけて第{(j -1)×G/g +1}重み行列~第(j×G/g)重み行列を対角線上に順に配置し、重み行列が配置された箇所の成分以外の成分の値を全て0に設定することによって生成する
    ことを特徴とするグループ化畳み込み処理定義変更方法。
  5. コンピュータが、
    入力されたデータが分割される数をG から1に変更する
    請求項4記載のグループ化畳み込み処理定義変更方法。
  6. コンピュータが、
    学習済みの畳み込みニューラルネットワークを構成する複数の畳み込み層ごとに入力されたデータが分割される数をそれぞれ変更する
    請求項4記載のグループ化畳み込み処理定義変更方法。
  7. コンピュータに、
    第1チャネル~第N チャネル(N は2以上の整数)が順に並べられて構成されている入力されたデータがチャネル方向にG (G は2以上の整数)個に分割され、分割された{(i -1)×N/G +1}チャネル~(i×N/G)チャネル(i=1~G)で構成されているデータに対して第i 重み行列が使用されて畳み込みの計算がi =1からi =G に渡ってそれぞれ実行されるグループ化畳み込みが定義された学習済みの畳み込みニューラルネットワークに関して、前記入力されたデータが分割される数をG からg (g は、G を除くG の約数)に変更する変更処理、および
    前記分割される数が変更された後に分割された{(j -1)×N/g +1}チャネル~(j×N/g)チャネル(j=1~g)で構成されているデータの畳み込みの計算で使用される新たな第j 重み行列を、j =1からj =g に渡ってそれぞれ生成する生成処理を実行させるためのグループ化畳み込み処理定義変更プログラムであって、
    前記生成処理で、
    前記新たな第j 重み行列を、前記新たな第j 重み行列の左上から右下にかけて第{(j -1)×G/g +1}重み行列~第(j×G/g)重み行列を対角線上に順に配置し、重み行列が配置された箇所の成分以外の成分の値を全て0に設定することによって生成させる
    グループ化畳み込み処理定義変更プログラム。
  8. コンピュータに、
    前記変更処理で、入力されたデータが分割される数をG から1に変更させる
    請求項7記載のグループ化畳み込み処理定義変更プログラム。
  9. コンピュータに、
    前記変更処理で、学習済みの畳み込みニューラルネットワークを構成する複数の畳み込み層ごとに入力されたデータが分割される数をそれぞれ変更させる
    請求項7記載のグループ化畳み込み処理定義変更プログラム。
JP2022518508A 2020-04-28 2020-04-28 グループ化畳み込み処理定義変更装置、グループ化畳み込み処理定義変更方法およびグループ化畳み込み処理定義変更プログラム Active JP7501617B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2020/018168 WO2021220422A1 (ja) 2020-04-28 2020-04-28 グループ化畳み込み処理定義変更装置、グループ化畳み込み処理定義変更方法およびグループ化畳み込み処理定義変更プログラム

Publications (2)

Publication Number Publication Date
JPWO2021220422A1 JPWO2021220422A1 (ja) 2021-11-04
JP7501617B2 true JP7501617B2 (ja) 2024-06-18

Family

ID=78332318

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022518508A Active JP7501617B2 (ja) 2020-04-28 2020-04-28 グループ化畳み込み処理定義変更装置、グループ化畳み込み処理定義変更方法およびグループ化畳み込み処理定義変更プログラム

Country Status (3)

Country Link
US (1) US20230237322A1 (ja)
JP (1) JP7501617B2 (ja)
WO (1) WO2021220422A1 (ja)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020044527A1 (ja) 2018-08-31 2020-03-05 株式会社アラヤ 情報処理装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020044527A1 (ja) 2018-08-31 2020-03-05 株式会社アラヤ 情報処理装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
川田 暁 外3名,SPEX SkinScanによるサンスクリーン剤のUVA Protection Factorの検討,皮膚の科学,2004年,第3巻,第3号,pp.261-265

Also Published As

Publication number Publication date
US20230237322A1 (en) 2023-07-27
JPWO2021220422A1 (ja) 2021-11-04
WO2021220422A1 (ja) 2021-11-04

Similar Documents

Publication Publication Date Title
EP3179415B1 (en) Systems and methods for a multi-core optimized recurrent neural network
Lavin et al. Fast algorithms for convolutional neural networks
JP6823495B2 (ja) 情報処理装置および画像認識装置
US20190095790A1 (en) Method and apparatus for adapting parameters of neural network
KR20190066473A (ko) 뉴럴 네트워크에서 컨볼루션 연산을 처리하는 방법 및 장치
KR20180075368A (ko) 인공 신경망 모델에서 메모리 효율성 및 학습 속도 향상을 위한 드롭아웃 방법과 이를 이용한 학습 방법
US20230297819A1 (en) Processor array for processing sparse binary neural networks
US11803360B2 (en) Compilation method, apparatus, computing device and medium
US11954580B2 (en) Spatial tiling of compute arrays with shared control
CN101980182A (zh) 基于矩阵运算的并行计算方法
JP7401513B2 (ja) ハードウェアにおけるスパース行列乗算
WO2019182059A1 (ja) モデル生成装置、モデル生成方法及びプログラム
JP7501617B2 (ja) グループ化畳み込み処理定義変更装置、グループ化畳み込み処理定義変更方法およびグループ化畳み込み処理定義変更プログラム
CN113536222A (zh) 系统局部字段矩阵更新的方法、系统和存储介质
JP7251354B2 (ja) 情報処理装置、情報処理プログラム、及び情報処理方法
JP2020080048A (ja) 並列処理装置およびプログラム
KR20240017797A (ko) 커널 확장 및 텐서 누적을 이용한 컨볼루션
TW202244794A (zh) 記憶體內計算巨集排列的方法、電腦可讀介質及電子裝置
CN113892092B (zh) 卷积模型硬件加速器的方法和系统
US20210303987A1 (en) Power reduction for machine learning accelerator background
CN114819051A (zh) 用于执行神经网络计算的模拟电路的校准方法及装置
GB2604924A (en) Methods and systems for generating the gradients of a loss function with respectto the weights of a convolution layer
Rothmann et al. STANN–Synthesis Templates for Artificial Neural Network Inference and Training
JP7540597B2 (ja) ニューラルネットワークモデル変換装置および方法
KR102690970B1 (ko) 신경망 액티베이션의 채널별 크기를 감소시키고 채널의 총 개수를 증가시키는 액티베이션 변환방법, 및 이를 위한 하드웨어 가속장치와 컴퓨팅 장치

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220920

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240125

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240507

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240520

R150 Certificate of patent or registration of utility model

Ref document number: 7501617

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150