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

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

▶ 日本電気株式会社の特許一覧

特許7501617グループ化畳み込み処理定義変更装置、グループ化畳み込み処理定義変更方法およびグループ化畳み込み処理定義変更プログラム
<>
  • 特許-グループ化畳み込み処理定義変更装置、グループ化畳み込み処理定義変更方法およびグループ化畳み込み処理定義変更プログラム 図1
  • 特許-グループ化畳み込み処理定義変更装置、グループ化畳み込み処理定義変更方法およびグループ化畳み込み処理定義変更プログラム 図2
  • 特許-グループ化畳み込み処理定義変更装置、グループ化畳み込み処理定義変更方法およびグループ化畳み込み処理定義変更プログラム 図3
  • 特許-グループ化畳み込み処理定義変更装置、グループ化畳み込み処理定義変更方法およびグループ化畳み込み処理定義変更プログラム 図4
  • 特許-グループ化畳み込み処理定義変更装置、グループ化畳み込み処理定義変更方法およびグループ化畳み込み処理定義変更プログラム 図5
  • 特許-グループ化畳み込み処理定義変更装置、グループ化畳み込み処理定義変更方法およびグループ化畳み込み処理定義変更プログラム 図6
  • 特許-グループ化畳み込み処理定義変更装置、グループ化畳み込み処理定義変更方法およびグループ化畳み込み処理定義変更プログラム 図7
  • 特許-グループ化畳み込み処理定義変更装置、グループ化畳み込み処理定義変更方法およびグループ化畳み込み処理定義変更プログラム 図8
  • 特許-グループ化畳み込み処理定義変更装置、グループ化畳み込み処理定義変更方法およびグループ化畳み込み処理定義変更プログラム 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-10
(45)【発行日】2024-06-18
(54)【発明の名称】グループ化畳み込み処理定義変更装置、グループ化畳み込み処理定義変更方法およびグループ化畳み込み処理定義変更プログラム
(51)【国際特許分類】
   G06N 3/0464 20230101AFI20240611BHJP
【FI】
G06N3/0464
【請求項の数】 9
(21)【出願番号】P 2022518508
(86)(22)【出願日】2020-04-28
(86)【国際出願番号】 JP2020018168
(87)【国際公開番号】W WO2021220422
(87)【国際公開日】2021-11-04
【審査請求日】2022-09-20
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100103090
【弁理士】
【氏名又は名称】岩壁 冬樹
(74)【代理人】
【識別番号】100124501
【弁理士】
【氏名又は名称】塩川 誠人
(72)【発明者】
【氏名】柴田 誠也
【審査官】渡辺 順哉
(56)【参考文献】
【文献】国際公開第2020/044527(WO,A1)
【文献】川田 暁 外3名,SPEX SkinScanによるサンスクリーン剤のUVA Protection Factorの検討,皮膚の科学,2004年,第3巻,第3号,pp.261-265
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
(57)【特許請求の範囲】
【請求項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記載のグループ化畳み込み処理定義変更プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、グループ化畳み込み処理定義変更装置、グループ化畳み込み処理定義変更方法およびグループ化畳み込み処理定義変更プログラムに関する。
【背景技術】
【0002】
畳み込みニューラルネットワーク(convolutional neural network; CNN) は、畳み込み層とプーリング層の2種類の層が交互に積み重ねられた構造を持つフィードフォーワード型のニューラルネットワークである。以下、畳み込みニューラルネットワークを単にCNN とも呼ぶ。
【0003】
図8は、畳み込みニューラルネットワークの例を示す説明図である。図8に示すCNN では、第1畳み込み層、第1プーリング層、第2畳み込み層、第2プーリング層が交互に積み重ねられている。
【0004】
また、図8に示すC1、C2はそれぞれ、畳み込みの計算を表す。例えば、第1畳み込み層に入力される入力画像に対して、畳み込みの計算C1が実行される。
【0005】
なお、画像は、入力されるデータの一例である。CNN に入力されるデータは、画像以外のデータであってもよい。
【0006】
また、図8に示すP1、P2はそれぞれ、プーリングの計算を表す。例えば、第1プーリング層に入力される畳み込みの計算結果に対して、プーリングの計算P1が実行される。
【0007】
また、図8に示すF は、全結合ネットワークを表す。全結合ネットワークF は、第2プーリング層のノードと出力層のノードを全て結合する全結合層の機能を有する。最終的に、出力層からCNN の出力が得られる。
【0008】
以下、CNN における畳み込みの計算を具体的に説明する。図9は、CNN における畳み込みの計算の例を示す説明図である。なお、図9に示す畳み込みの計算の例は、図8に示す畳み込みの計算C1に相当する。
【0009】
図9に示す入力画像は、CNN に入力される画像である。図9に示す入力画像は、第1チャネル~第Cin チャネル(Cin は2以上の整数)が順に並べられて構成されている。すなわち、Cin は、入力チャネル数を意味する。また、図9に示すように、入力画像を構成する画像の縦のサイズはH 、横のサイズはW である。
【0010】
説明を簡便にするため、畳み込みの計算の対象である入力X として、図9に示す格子模様が記された縦のサイズが1、横のサイズが1、チャネル数がCin の画像を考える。図9の下段には、高さ方向から見た場合の入力X が記載されている。また、図9に示す入力X の左の符号は、チャネルの識別番号である(他の図においても同様)。
【0011】
すなわち、図9に示す畳み込みの計算の例において、カーネルサイズは「1×1」である。しかし、以下の説明の内容は、カーネルサイズが「1×1」以外のサイズ(例えば、「3×3」や「5×5」)であっても同様である。
【0012】
図9に示す畳み込みの計算では、縦のサイズがCout、横のサイズがCin の重みW と、入力X とが掛け合わされる。掛け合わされた結果、チャネル数がCoutの画像である出力Y0が得られる。すなわち、Coutは、出力チャネル数を意味する。
【0013】
なお、図9に示す畳み込みの計算は、行列同士の乗算に相当する。すなわち、図9に示す畳み込みの計算では、重みW 、入力X 、出力Y0はそれぞれ、行列として扱われる。本明細書における「重み」は、正確には「重み行列」であるが、簡便のため単に「重み」とも呼ぶ。
【0014】
また、図8図9に示すCNN は、学習済みモデルである。すなわち、図9に示す重みW も、事前に学習が実行されることによって得られた重みである。
【0015】
上記の畳み込みの計算の方法として、グループ化畳み込みを使用するCNN が増加している。例えば、非特許文献1には、グループ化畳み込みの説明が記載されている。
【先行技術文献】
【非特許文献】
【0016】
【文献】S. Xie, R. Girshick, P. Dollar, Z. Tu, and K. He, "Aggregatedresidual transformations for deep neural networks," in Computer Vision and Pattern Recognition, 2017.
【発明の概要】
【発明が解決しようとする課題】
【0017】
グループ化畳み込みの計算には、通常の畳み込みの計算に比べて演算量が小さい、精度が高い等の利点がある。しかし、AI(Artificial Intelligence) 処理に特化した半導体集積回路であるAIチップがグループ化畳み込みの計算を実行すると、計算速度が低下する場合がある。
【0018】
グループ化畳み込みとAIチップのどちらも利用の増加が予測されるため、AIチップがグループ化畳み込みの計算を実行しても、計算速度が低下しない方法が求められている。非特許文献1には、グループ化畳み込みの計算速度が低下しない方法が記載されていない。
【0019】
そこで、本発明は、グループ化畳み込みの計算速度を高めることができるグループ化畳み込み処理定義変更装置、グループ化畳み込み処理定義変更方法およびグループ化畳み込み処理定義変更プログラムを提供することを目的とする。
【課題を解決するための手段】
【0020】
本発明によるグループ化畳み込み処理定義変更装置は、第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に設定することによって生成することを特徴とする。
【0021】
本発明によるグループ化畳み込み処理定義変更方法は、コンピュータが、第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に設定することによって生成することを特徴とする。
【0022】
本発明によるグループ化畳み込み処理定義変更プログラムは、コンピュータに、第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に設定することによって生成させることを特徴とする。
【発明の効果】
【0023】
本発明によれば、グループ化畳み込みの計算速度を高めることができる。
【図面の簡単な説明】
【0024】
図1】CNN におけるグループ化畳み込みの計算の例を示す説明図である。
図2】本発明の実施形態のグループ化畳み込み処理定義変更装置の構成例を示すブロック図である。
図3】グループ化畳み込み処理定義変更装置100により定義が変更されたグループ化畳み込みの計算の例を示す説明図である。
図4】グループ化畳み込み処理定義変更装置100により定義が変更されたグループ化畳み込みの計算の他の例を示す説明図である。
図5】本実施形態のグループ化畳み込み処理定義変更装置100によるグループ化畳み込み処理定義変更処理の動作を示すフローチャートである。
図6】本発明によるグループ化畳み込み処理定義変更装置100のハードウェア構成例を示す説明図である。
図7】本発明によるグループ化畳み込み処理定義変更装置の概要を示すブロック図である。
図8】畳み込みニューラルネットワークの例を示す説明図である。
図9】CNN における畳み込みの計算の例を示す説明図である。
【発明を実施するための形態】
【0025】
最初に、CNN におけるグループ化畳み込みの計算を具体的に説明する。図1は、CNN におけるグループ化畳み込みの計算の例を示す説明図である。
【0026】
なお、図1に示すグループ化畳み込みの計算の例は、図9に示す畳み込みの計算にグループ化畳み込みが適用された場合の例である。また、本例ではAIチップがグループ化畳み込みの計算を実行する場合を考える。
【0027】
図1に示すグループ化畳み込みの計算の例では、グループ数が「4」に定義されている。すなわち、図1に示す例で使用されるCNN は、入力X をチャネル方向に4つのグループに分けて畳み込みの計算を行うことが予め定義された上で事前に学習されたモデルである。
【0028】
なお、画像である入力X は、入力されるデータの一例である。CNN に入力されるデータは、画像以外のデータであってもよい。
【0029】
よって、図1に示すように、グループ化畳み込みの計算では、縦のサイズが(Cout/4)、横のサイズが(Cin/4) の重みWa~重みWdが用意される。AIチップは、例えば重みWaと、分割された第1チャネル~第Cin/4 チャネルで構成されている画像(チャネル数が(Cin/4) )とを掛け合わせる。掛け合わせた結果、AIチップは、チャネル数が(Cout/4)の画像を出力として得る。
【0030】
図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つ得る。
【0031】
最後に、AIチップは、計算に使用された4分割された入力X の位置と同じ位置に、得られた画像を配置する。得られた4つの画像をそれぞれ配置した後、AIチップは、各画像を結合する。
【0032】
結合することによって、AIチップは、通常の畳み込みの計算結果に相当するチャネル数がCoutの画像である出力Y を得る。なお、図1に示すグループ化畳み込みの計算で得られる出力Y は、図9に示す畳み込みの計算で得られる出力Y0と等価ではない。
【0033】
畳み込みの計算量は、重みのサイズに比例する。例えば、図9に示す畳み込みの計算量は、重みW のサイズである(Cin×Cout) に比例する。また、図1に示すグループ化畳み込みの計算量は、重みWa~重みWdの各サイズの総和である{(Cin/4)×(Cout/4)×4}に比例する。すなわち、図1に示すグループ化畳み込みの計算量は、図9に示す畳み込みの計算量の1/4 になる。
【0034】
一般的に、入力X がG (G は2以上の整数)個のグループに分けられてグループ化畳み込みの計算が行われる場合、図1に示すグループ化畳み込みの計算量は、{(Cin/G)×(Cout/G)×G}に比例する。すなわち、図1に示すグループ化畳み込みの計算量は、図9に示す畳み込みの計算量の1/G になる。
【0035】
上記の理論によれば、計算量が1/G になるため、グループ化畳み込みの計算速度は、通常の畳み込みの計算速度のG 倍になることが予想される。しかし、AIチップには、通常の畳み込みに最適化されているため、グループ化畳み込みに適していないチップも多い。
【0036】
グループ化畳み込みに適していないAIチップには、例えばグループ化畳み込みの計算処理が複数回の畳み込みの計算処理として実装される可能性がある。よって、複数回の畳み込みの計算処理が実装されたAIチップは、グループ化畳み込みの計算を行う場合、畳み込みの計算の呼び出しに掛かるオーバヘッドの影響をG 回受ける。AIチップがオーバヘッドの影響をG 回受けると、グループ化畳み込みの計算速度が低下する。
【0037】
また、グループ化畳み込みの計算では、1回の計算対象の画像のチャネル数が小さくなる(図1に示す(Cin/4) 等)。よって、同時に実行可能な畳み込みの計算処理の数である画像のチャネル数が、AIチップが並列で処理可能な処理の最大数に到達しない可能性が高い。
【0038】
例えば、最大で256個の処理を並列で処理可能なAIチップにチャネル数が8の画像が入力されても、AIチップは、最大で8個の処理しか並列で処理できない。すなわち、処理の並列度が小さくなることも、グループ化畳み込みの計算速度が低下する要因の1つである。
【0039】
[構成の説明]
以下、上述した課題である、グループ化畳み込みの計算速度を高めることができる本発明の実施形態を図面を参照して説明する。図2は、本発明の実施形態のグループ化畳み込み処理定義変更装置の構成例を示すブロック図である。
【0040】
図2に示すグループ化畳み込み処理定義変更装置100は、変更前CNN モデル記憶部200と、変更後CNN モデル記憶部300と通信可能に接続されている。
【0041】
変更前CNN モデル記憶部200には、図1に示す重みWa~重みWdを含め、上述した学習済みのCNN のモデルが記憶されている。変更前CNN モデル記憶部200に記憶されている学習済みのCNN のモデルは、グループ化畳み込みが定義された上で学習されたモデルである。
【0042】
また、変更後CNN モデル記憶部300には、グループ化畳み込み処理定義変更装置100により定義が変更された、変更前CNN モデル記憶部200に記憶されている学習済みのCNN のモデルが格納される。
【0043】
また、AIチップ400は、変更後CNN モデル記憶部300と通信可能に接続されている。AIチップ400は、変更後CNN モデル記憶部300に記憶されている学習済みのCNN のモデルを用いて、畳み込みの計算を行うチップである。
【0044】
また、図2に示すように、グループ化畳み込み処理定義変更装置100は、取得部110と、定義変更部120と、重み変更部130と、格納部140とを備える。
【0045】
取得部110は、図1に示す重みWa~重みWdを含め、変更前CNN モデル記憶部200から学習済みのCNN のモデルを取得する。
【0046】
上述した課題を解決するために、本実施形態のグループ化畳み込み処理定義変更装置100は、グループ化畳み込みの計算における各グループを再度まとめることを特徴とする。以下、グループ化畳み込み処理定義変更装置100による課題の解決方法を説明する。
【0047】
図3は、グループ化畳み込み処理定義変更装置100により定義が変更されたグループ化畳み込みの計算の例を示す説明図である。
【0048】
なお、図3図4に示す畳み込みの計算の例において、カーネルサイズは「1×1」である。しかし、本実施形態の内容は、カーネルサイズが「1×1」以外のサイズ(例えば、「3×3」や「5×5」)であっても同様である。
【0049】
図3に示す畳み込みの計算では、定義変更部120が、変更前CNN モデル記憶部200に記憶されている学習済みのCNN のモデルに定義されているグループ数を「4」から「1」に変更している。グループ数の変更に伴い、重み変更部130が、1つの重みW1のみを用意している。
【0050】
図3に示すように、重み変更部130は、重みW1の左上から右下にかけて図1に示す重みWa~重みWdを、対角線上に重みWa~重みWdの順で配置する。次いで、重み変更部130は、重みWa~重みWdが配置された箇所の成分以外の成分の値を全て0に設定することによって、重みW1を生成する。
【0051】
図3に示すように、重みW1は、縦のサイズがCout、横のサイズがCin の重みになる。また、図3に示す「(0)」が記載された箇所は、成分の値が0である箇所である(他の図においても同様)。
【0052】
グループ化畳み込み処理定義変更装置100の格納部140は、重み変更部130により生成された重みW1も含めて、定義変更部120により定義が変更された学習済みのCNN のモデルを変更後CNN モデル記憶部300に格納する。
【0053】
よって、図3に示す畳み込みの計算では、AIチップ400が、重みW1と、入力X とを掛け合わせる計算を1回だけ行う。計算を1回だけ行うことによって、AIチップ400は、出力Y を得る。
【0054】
図3に示す畳み込みの計算では、AIチップ400がオーバヘッドの影響を受ける回数は最少(1回)になる。ただし、値が0である多くの重みの成分に対しても、AIチップ400は、演算を行う。すなわち、図3に示す畳み込みの計算は、オーバヘッドの影響と行列演算の負荷とのバランスがとれた計算ではない可能性が高い。
【0055】
図4は、グループ化畳み込み処理定義変更装置100により定義が変更されたグループ化畳み込みの計算の他の例を示す説明図である。
【0056】
図4に示すグループ化畳み込みの計算では、定義変更部120が、変更前CNN モデル記憶部200に記憶されている学習済みのCNN のモデルに定義されているグループ数を「4」から「2」に変更している。グループ数の変更に伴い、重み変更部130が、重みW2~重みW3を用意している。
【0057】
本実施形態の定義変更部120は、学習済みのCNN のモデルに定義されているグループ数を、グループ数の約数に変更する。図4に示す例であれば、「2」は「4」の約数である。
【0058】
図4に示すように、重み変更部130は、重みW2の左上から右下にかけて図1に示す重みWa~重みWbを、対角線上に重みWa~重みWbの順で配置する。次いで、重み変更部130は、重みWa~重みWbが配置された箇所の成分以外の成分の値を全て0に設定することによって、重みW2を生成する。
【0059】
また、重み変更部130は、重みW3の左上から右下にかけて図1に示す重みWc~重みWdを、対角線上に重みWc~重みWdの順で配置する。次いで、重み変更部130は、重みWc~重みWdが配置された箇所の成分以外の成分の値を全て0に設定することによって、重みW3を生成する。
【0060】
図4に示すように、重みW2~重みW3は、縦のサイズが(Cout/2)、横のサイズが(Cin/2) の重みになる。なお、重み変更部130は、図3に示すサイズが(Cin×Cout) の重みW1を、サイズが(Cin/2) ×(Cout/2)である4個の重みに分割し、分割された4個の重みのうち非零の成分を含む重みを重みW2~重みW3として生成してもよい。
【0061】
グループ化畳み込み処理定義変更装置100の格納部140は、重み変更部130により生成された重みW2~重みW3も含めて、定義変更部120により定義が変更された学習済みのCNN のモデルを変更後CNN モデル記憶部300に格納する。
【0062】
よって、図4に示す畳み込みの計算では、AIチップ400が、例えば重みW2と、分割された第1チャネル~第Cin/2 チャネルで構成されている画像(チャネル数が(Cin/2) )とを掛け合わせる。掛け合わせた結果、AIチップ400は、チャネル数が(Cout/2)の画像を出力として得る。
【0063】
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に対応する。
【0064】
各計算の結果、AIチップ400は、チャネル数が(Cout/2)の画像を2つ得る。次いで、AIチップ400は、計算に使用された2分割された入力X の位置と同じ位置に得られた画像を配置する。
【0065】
得られた2つの画像をそれぞれ配置した後、AIチップ400は、各画像を結合する。結合することによって、AIチップ400は、出力Y を得る。
【0066】
すなわち、重み変更部130は、新たな第1重み行列に対応する重みW2の左上から右下にかけて重みWa、重みWbを対角線上に順に配置する。次いで、重み変更部130は、重みが配置された箇所の成分以外の成分の値を全て0に設定することによって、重みW2を生成する。
【0067】
図1に示すグループ化畳み込みでは、重みWaは、第1(={(1 -1)×4/2 +1})重み行列に対応する。また、重みWbは、第2(=(1×4/2))重み行列に対応する。
【0068】
また、重み変更部130は、新たな第2重み行列に対応する重みW3の左上から右下にかけて重みWc、重みWdを対角線上に順に配置する。次いで、重み変更部130は、重みが配置された箇所の成分以外の成分の値を全て0に設定することによって、重みW3を生成する。
【0069】
図1に示すグループ化畳み込みでは、重みWcは、第3(={(2 -1)×4/2 +1})重み行列に対応する。また、重みWdは、第4(=(2×4/2))重み行列に対応する。
【0070】
図4に示すグループ化畳み込みの計算では、AIチップ400がオーバヘッドの影響を受ける回数は、図1に示すグループ化畳み込みの計算での4回から2回に減る。
【0071】
また、図4に示すグループ化畳み込みの計算では、図3に示す畳み込みの計算に比べて、値が0である重みの成分に対してAIチップ400が演算を行う回数も少なくなる。すなわち、図4に示すグループ化畳み込みの計算は、オーバヘッドの影響と行列演算の負荷とのバランスがとれた計算である可能性が高い。
【0072】
以上のように、本実施形態のグループ化畳み込み処理定義変更装置100は、第1チャネル~第N チャネル(N は2以上の整数)が順に並べられて構成されている入力されたデータがチャネル方向にG (G は2以上の整数)個に分割されるグループ化畳み込みが定義された学習済みの畳み込みニューラルネットワークを扱う。グループ化畳み込みでは、分割された{(i -1)×N/G +1}チャネル~(i×N/G)チャネル(i=1~G)で構成されているデータに対して第i 重み行列が使用されて畳み込みの計算がi =1からi =G に渡ってそれぞれ実行される。
【0073】
定義変更部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 に渡ってそれぞれ生成する。
【0074】
具体的には、重み変更部130は、新たな第j 重み行列を、新たな第j 重み行列の左上から右下にかけて第{(j -1)×G/g +1}重み行列~第(j×G/g)重み行列を対角線上に順に配置し、重み行列が配置された箇所の成分以外の成分の値を全て0に設定することによって生成する。
【0075】
なお、g の最適な値は、AIチップ400に依存する。よって、グループ化畳み込み処理定義変更装置100がG を除くG の約数全てに対して新たな重み行列を生成し、各重み行列が用いられた場合のAIチップ400の性能がそれぞれ計測され、各計測結果を基にg の最適な値が決定されることが好ましい。
【0076】
また、定義変更部120は、入力されたデータが分割される数をG から1に変更してもよい。また、定義変更部120は、CNN を構成する複数の畳み込み層ごとに、g の最適な値を変更してもよい。
【0077】
[動作の説明]
以下、本実施形態のグループ化畳み込み処理定義変更装置100の動作を図5を参照して説明する。図5は、本実施形態のグループ化畳み込み処理定義変更装置100によるグループ化畳み込み処理定義変更処理の動作を示すフローチャートである。
【0078】
最初に、グループ化畳み込み処理定義変更装置100の取得部110が、変更前CNN モデル記憶部200から学習済みのCNN のモデルを取得する(ステップS101)。
【0079】
次いで、定義変更部120は、取得された学習済みのCNN のモデルに定義されているグループ数G を、新たなグループ数g に変更する(ステップS102)。なお、g は、G を除くG の約数である。
【0080】
次いで、重み変更部130は、変更されたg を基に、取得された学習済みのCNN のモデルで使用される重みから新たな重みを生成する(ステップS103)。
【0081】
重み変更部130による重みの生成方法は、上述した通りである。例えば、グループ数G がグループ数g に変更された場合、重み変更部130は、全部でg 個の重みを生成する。また、重み変更部130が生成する重みの縦と横のサイズは、取得された重みの縦と横のサイズのG/g 倍になる。
【0082】
次いで、格納部140は、変更後CNN モデル記憶部300に、重み変更部130により生成された重みも含めて、定義変更部120により定義が変更された学習済みのCNN のモデルを格納する(ステップS104)。格納した後、グループ化畳み込み処理定義変更装置100は、グループ化畳み込み処理定義変更処理を終了する。
【0083】
[効果の説明]
本実施形態のグループ化畳み込み処理定義変更装置100は、定義変更部120および重み変更部130がグループ化畳み込みの処理をAIチップ400に適した処理に置き換えることによって、グループ化畳み込みの計算を高速化する。
【0084】
具体的には、グループ化畳み込みの処理は、計算量が増えるものの、オーバヘッドの影響を受ける回数が少なく、かつAIチップ400が得意な並列度が高い処理に置き換えられる。従って、本実施形態のグループ化畳み込み処理定義変更装置100が使用されると、計算量が増えるにも関わらず、グループ化畳み込みの計算が高速化される。
【0085】
以下、本実施形態のグループ化畳み込み処理定義変更装置100のハードウェア構成の具体例を説明する。図6は、本発明によるグループ化畳み込み処理定義変更装置100のハードウェア構成例を示す説明図である。
【0086】
図6に示すグループ化畳み込み処理定義変更装置100は、CPU(Central Processing Unit )11と、主記憶部12と、通信部13と、補助記憶部14とを備える。また、ユーザが操作するための入力部15や、ユーザに処理結果または処理内容の経過を提示するための出力部16を備える。
【0087】
グループ化畳み込み処理定義変更装置100は、図6に示すCPU11が各構成要素が有する機能を提供するプログラムを実行することによって、ソフトウェアにより実現される。
【0088】
すなわち、CPU11が補助記憶部14に格納されているプログラムを、主記憶部12にロードして実行し、グループ化畳み込み処理定義変更装置100の動作を制御することによって、各機能がソフトウェアにより実現される。
【0089】
なお、図6に示すグループ化畳み込み処理定義変更装置100は、CPU11の代わりにDSP(Digital Signal Processor)を備えてもよい。または、図6に示すグループ化畳み込み処理定義変更装置100は、CPU11とDSPとを併せて備えてもよい。
【0090】
主記憶部12は、データの作業領域やデータの一時退避領域として用いられる。主記憶部12は、例えばRAM(Random Access Memory)である。
【0091】
通信部13は、有線のネットワークまたは無線のネットワーク(情報通信ネットワーク)を介して、周辺機器との間でデータを入力および出力する機能を有する。
【0092】
補助記憶部14は、一時的でない有形の記憶媒体である。一時的でない有形の記憶媒体として、例えば磁気ディスク、光磁気ディスク、CD-ROM(Compact Disk Read Only Memory )、DVD-ROM(Digital Versatile Disk Read Only Memory )、半導体メモリが挙げられる。
【0093】
入力部15は、データや処理命令を入力する機能を有する。入力部15は、例えばキーボードやマウス等の入力デバイスである。
【0094】
出力部16は、データを出力する機能を有する。出力部16は、例えば液晶ディスプレイ装置等の表示装置、またはプリンタ等の印刷装置である。
【0095】
また、図6に示すように、グループ化畳み込み処理定義変更装置100において、各構成要素は、システムバス17に接続されている。
【0096】
補助記憶部14は、本実施形態のグループ化畳み込み処理定義変更装置100において、取得部110、定義変更部120、重み変更部130、および格納部140を実現するためのプログラムを記憶している。
【0097】
なお、グループ化畳み込み処理定義変更装置100は、例えば内部に図2に示すような機能を実現するLSI(Large Scale Integration )等のハードウェア部品が含まれる回路が実装されてもよい。
【0098】
また、グループ化畳み込み処理定義変更装置100は、CPU等の素子を用いるコンピュータ機能を含まないハードウェアにより実現されてもよい。例えば、各構成要素の一部または全部は、汎用の回路(circuitry )または専用の回路、プロセッサ等やこれらの組み合わせによって実現されてもよい。これらは、単一のチップ(例えば、上記のLSI)によって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。各構成要素の一部または全部は、上述した回路等とプログラムとの組み合わせによって実現されてもよい。
【0099】
各構成要素の一部または全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントアンドサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。
【0100】
次に、本発明の概要を説明する。図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に設定することによって生成する。
【0101】
そのような構成により、グループ化畳み込み処理定義変更装置は、グループ化畳み込みの計算速度を高めることができる。
【0102】
また、変更手段21は、入力されたデータが分割される数をG から1に変更してもよい。
【0103】
そのような構成により、グループ化畳み込み処理定義変更装置は、オーバヘッドの影響を最小化できる。
【0104】
また、変更手段21は、学習済みの畳み込みニューラルネットワークを構成する複数の畳み込み層ごとに入力されたデータが分割される数をそれぞれ変更してもよい。
【0105】
そのような構成により、グループ化畳み込み処理定義変更装置は、畳み込み層ごとにグループ化畳み込みの定義を変更できる。
【符号の説明】
【0106】
11 CPU
12 主記憶部
13 通信部
14 補助記憶部
15 入力部
16 出力部
17 システムバス
20、100 グループ化畳み込み処理定義変更装置
21 変更手段
22 生成手段
110 取得部
120 定義変更部
130 重み変更部
140 格納部
200 変更前CNN モデル記憶部
300 変更後CNN モデル記憶部
400 AIチップ
図1
図2
図3
図4
図5
図6
図7
図8
図9