(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-19
(45)【発行日】2024-08-27
(54)【発明の名称】ニューラルネットワークモデル変換装置および方法
(51)【国際特許分類】
G06N 3/04 20230101AFI20240820BHJP
【FI】
G06N3/04
(21)【出願番号】P 2023528793
(86)(22)【出願日】2021-06-15
(86)【国際出願番号】 JP2021022649
(87)【国際公開番号】W WO2022264252
(87)【国際公開日】2022-12-22
【審査請求日】2023-10-06
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100103090
【氏名又は名称】岩壁 冬樹
(74)【代理人】
【識別番号】100124501
【氏名又は名称】塩川 誠人
(72)【発明者】
【氏名】柴田 誠也
【審査官】千葉 久博
(56)【参考文献】
【文献】特開2021-77342(JP,A)
【文献】国際公開第2019/082859(WO,A1)
【文献】中国特許出願公開第111291884(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/04
(57)【特許請求の範囲】
【請求項1】
与えられたニューラルネットワークモデルに含まれる少なくとも1つの層の重み値群であって、少なくとも1つ以上の重み値をチャネル方向に並べることによって得られるカーネルをカーネル方向に並べた構成を有する重み値群における分割位置を決定する分割位置決定手段と、
前記分割位置で前記重み値群を分割することによって、複数の重み値群を得る分割手段と、
前記層への入力データと分割後のそれぞれの重み値群との演算によって得られるそれぞれの出力データを結合して1つの出力データにする結合層を追加する結合層追加手段とを備え、
前記分割位置決定手段は、重み値群に含まれる重み値の数に対する、0である重み値の数の割合をスパース度としたときに、分割後の少なくとも1つの重み値群が所定値以上のスパース度を有するように、分割前の重み値群における分割位置を決定する
ことを特徴とするニューラルネットワークモデル変換装置。
【請求項2】
前記分割位置決定手段は、分割前の重み値群をカーネル方向に分割するように、分割位置を決定し、
前記分割手段は、分割前の重み値群を前記分割位置で分割し、
前記結合層追加手段は、前記入力データと分割後のそれぞれの重み値群との演算によって得られるそれぞれの出力データを、チャネル方向に連結することによって1つの出力データにする結合層を追加する
請求項1に記載のニューラルネットワークモデル変換装置。
【請求項3】
所定の基準に従って、分割前の重み値群に含まれるカーネルを並べ替えるカーネル並べ替え手段を備え、
前記分割位置決定手段は、カーネルの並べ替え後の重み値群をカーネル方向に分割するように、分割位置を決定し、
前記分割手段は、分割前の重み値群を前記分割位置で分割し、
前記結合層追加手段は、前記入力データと分割後のそれぞれの重み値群との演算によって得られるそれぞれの出力データを、チャネル方向に連結することによって1つの出力データにする結合層を追加し、
前記カーネル並べ替え手段による並べ替えによるカーネルの順番の変化に基づいて、カーネルの並べ替え前の重み値群におけるカーネルの順番に対応するように、前記1つの出力データのチャネルを並べ替える出力データ並べ替え層を追加する出力データ並べ替え層追加手段を備える
請求項1または請求項2に記載のニューラルネットワークモデル変換装置。
【請求項4】
所定の基準に従って、分割前の重み値群に含まれるカーネルを並べ替えるカーネル並べ替え手段と、
前記カーネル並べ替え手段によって並べ替えられたカーネルの順番に従って、重み値群が分割される層の次の層の重み値群のチャネルを並べ替える次層並べ替え手段とを備え、
前記分割位置決定手段は、カーネルの並べ替え後の重み値群をカーネル方向に分割するように、分割位置を決定し、
前記分割手段は、分割前の重み値群を前記分割位置で分割し、
前記結合層追加手段は、前記入力データと分割後のそれぞれの重み値群との演算によって得られるそれぞれの出力データを、チャネル方向に連結することによって1つの出力データにする結合層を追加する
請求項1または請求項2に記載のニューラルネットワークモデル変換装置。
【請求項5】
前記カーネル並べ替え手段は、0である重み値の数の降順または昇順に、分割前の重み値群に含まれるカーネルを並べ替える
請求項3または請求項4に記載のニューラルネットワークモデル変換装置。
【請求項6】
前記分割位置決定手段は、分割前の重み値群をチャネル方向に分割するように、分割位置を決定し、
前記分割手段は、分割前の重み値群を前記分割位置で分割し、
前記結合層追加手段は、前記入力データと分割後のそれぞれの重み値群との演算によって得られるそれぞれの出力データにおいて、対応する要素同士を加算することによって1つの出力データを導出する結合層を追加する
請求項1に記載のニューラルネットワークモデル変換装置。
【請求項7】
所定の基準に従って、分割前の重み値群に含まれるチャネルを並べ替えるチャネル並べ替え手段と、
前記チャネル並べ替え手段によって並べ替えられたチャネルの順番に従って、前記入力データのチャネルを並べ替える入力データ並べ替え層を追加する入力データ並べ替え層追加手段とを備え、
前記分割位置決定手段は、チャネルの並べ替え後の重み値群をチャネル方向に分割するように、分割位置を決定し、
前記分割手段は、分割前の重み値群を前記分割位置で分割し、
前記結合層追加手段は、前記入力データと分割後のそれぞれの重み値群との演算によって得られるそれぞれの出力データにおいて、対応する要素同士を加算することによって1つの出力データを導出する結合層を追加する
請求項1または請求項6に記載のニューラルネットワークモデル変換装置。
【請求項8】
所定の基準に従って、分割前の重み値群に含まれるチャネルを並べ替えるチャネル並べ替え手段と、
前記チャネル並べ替え手段によって並べ替えられたチャネルの順番に従って、重み値群が分割される層の前の層の重み値群のカーネルを並べ替える前層並べ替え手段とを備え、
前記分割位置決定手段は、チャネルの並べ替え後の重み値群をチャネル方向に分割するように、分割位置を決定し、
前記分割手段は、分割前の重み値群を前記分割位置で分割し、
前記結合層追加手段は、前記入力データと分割後のそれぞれの重み値群との演算によって得られるそれぞれの出力データにおいて、対応する要素同士を加算することによって1つの出力データを導出する結合層を追加する
請求項1または請求項6に記載のニューラルネットワークモデル変換装置。
【請求項9】
コンピュータが、
与えられたニューラルネットワークモデルに含まれる少なくとも1つの層の重み値群であって、少なくとも1つ以上の重み値をチャネル方向に並べることによって得られるカーネルをカーネル方向に並べた構成を有する重み値群における分割位置を決定する分割位置決定処理、
前記分割位置で前記重み値群を分割することによって、複数の重み値群を得る分割処理、および、
前記層への入力データと分割後のそれぞれの重み値群との演算によって得られるそれぞれの出力データを結合して1つの出力データにする結合層を追加する結合層追加処理を実行し、
前記分割位置決定処理で、重み値群に含まれる重み値の数に対する、0である重み値の数の割合をスパース度としたときに、分割後の少なくとも1つの重み値群が所定値以上のスパース度を有するように、分割前の重み値群における分割位置を決定する
ことを特徴とするニューラルネットワークモデル変換方法。
【請求項10】
コンピュータに、
与えられたニューラルネットワークモデルに含まれる少なくとも1つの層の重み値群であって、少なくとも1つ以上の重み値をチャネル方向に並べることによって得られるカーネルをカーネル方向に並べた構成を有する重み値群における分割位置を決定する分割位置決定処理、
前記分割位置で前記重み値群を分割することによって、複数の重み値群を得る分割処理、および、
前記層への入力データと分割後のそれぞれの重み値群との演算によって得られるそれぞれの出力データを結合して1つの出力データにする結合層を追加する結合層追加処理を実行させ、
前記分割位置決定処理で、重み値群に含まれる重み値の数に対する、0である重み値の数の割合をスパース度としたときに、分割後の少なくとも1つの重み値群が所定値以上のスパース度を有するように、分割前の重み値群における分割位置を決定させる
ニューラルネットワークモデル変換プログラ
ム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ニューラルネットワークモデルを変換するニューラルネットワークモデル変換装置、ニューラルネットワークモデル変換方法、および、ニューラルネットワークモデル変換プログラムに関する。
【背景技術】
【0002】
予め定められた事項に関する予測のために、ディープラーニングで学習されたニューラルネットワークモデルが用いられる場合がある。
【0003】
ニューラルネットワークモデルは、複数の層を含んでいる。1つの層に入力データが与えられ、その層の出力データが演算によって算出され、その出力データが次の層の入力データとなる。そして、最後の層で最終的に得られたデータが予測結果を表す。また、重み値群(複数の重み値)が、層に対応付けられている。
【0004】
重み値群に、重み値として0が含まれていることを、重みスパーシティと称する。また、重み値群に、重み値“0”がどの程度多く含まれているかを示す度合いをスパース度と称する。具体的には、スパース度は、重み値群に含まれる重み値の数に対する、0である重み値の数の割合である。例えば、重み値群に重み値“0”が含まれていなければ、スパース度は0%になる。また、重み値群に含まれる重み値が全て“0”であれば、スパース度は100%になる。
【0005】
また、特許文献1には、重み値を並べ替えることが記載されている。
【0006】
また、特許文献2には、ニューロンを除去することが記載されている。
【先行技術文献】
【特許文献】
【0007】
【文献】国際公開第2019/082859号
【文献】特表2017-509951号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
近年、重み値群のスパース度が高い場合に(すなわち、重み値群に含まれる重み値“0”の数が多い場合に)、そのことを利用して、ニューラルネットワークモデルの層の演算を高速化するデバイスが開発されている。以下、そのようなデバイスを、高速デバイスと記す。高速デバイスは、ニューラルネットワークモデルの演算を行う一般的なデバイス(以下、単に一般的なデバイスと記す。)に比べて、重み値群のスパース度が高い場合に、演算を高速化できる。
【0009】
しかし、上記のような高速デバイスには、例えば、スパース度が所定値以上でなければ、演算の高速化を実現できないという制約があった。例えば、スパース度が50%以上でなければ演算を高速化できないという制約を有する高速デバイスで、スパース度が30%である重み値群を有する層の演算を実行しても、演算を高速化できなかった。
【0010】
そこで、本発明は、高速デバイスを効果的に利用しやすくするように、ニューラルネットワークモデルを変換することができるニューラルネットワークモデル変換装置、ニューラルネットワークモデル変換方法、および、ニューラルネットワークモデル変換プログラムを提供することを目的とする。
【課題を解決するための手段】
【0011】
本発明によるニューラルネットワークモデル変換装置は、与えられたニューラルネットワークモデルに含まれる少なくとも1つの層の重み値群であって、少なくとも1つ以上の重み値をチャネル方向に並べることによって得られるカーネルをカーネル方向に並べた構成を有する重み値群における分割位置を決定する分割位置決定手段と、分割位置で重み値群を分割することによって、複数の重み値群を得る分割手段と、その層への入力データと分割後のそれぞれの重み値群との演算によって得られるそれぞれの出力データを結合して1つの出力データにする結合層を追加する結合層追加手段とを備え、分割位置決定手段が、重み値群に含まれる重み値の数に対する、0である重み値の数の割合をスパース度としたときに、分割後の少なくとも1つの重み値群が所定値以上のスパース度を有するように、分割前の重み値群における分割位置を決定することを特徴とする。
【0012】
本発明によるニューラルネットワークモデル変換方法は、コンピュータが、与えられたニューラルネットワークモデルに含まれる少なくとも1つの層の重み値群であって、少なくとも1つ以上の重み値をチャネル方向に並べることによって得られるカーネルをカーネル方向に並べた構成を有する重み値群における分割位置を決定する分割位置決定処理、分割位置で重み値群を分割することによって、複数の重み値群を得る分割処理、および、その層への入力データと分割後のそれぞれの重み値群との演算によって得られるそれぞれの出力データを結合して1つの出力データにする結合層を追加する結合層追加処理を実行し、分割位置決定処理で、重み値群に含まれる重み値の数に対する、0である重み値の数の割合をスパース度としたときに、分割後の少なくとも1つの重み値群が所定値以上のスパース度を有するように、分割前の重み値群における分割位置を決定することを特徴とする。
【0013】
本発明によるニューラルネットワークモデル変換プログラムは、コンピュータに、与えられたニューラルネットワークモデルに含まれる少なくとも1つの層の重み値群であって、少なくとも1つ以上の重み値をチャネル方向に並べることによって得られるカーネルをカーネル方向に並べた構成を有する重み値群における分割位置を決定する分割位置決定処理、分割位置で重み値群を分割することによって、複数の重み値群を得る分割処理、および、その層への入力データと分割後のそれぞれの重み値群との演算によって得られるそれぞれの出力データを結合して1つの出力データにする結合層を追加する結合層追加処理を実行させ、分割位置決定処理で、重み値群に含まれる重み値の数に対する、0である重み値の数の割合をスパース度としたときに、分割後の少なくとも1つの重み値群が所定値以上のスパース度を有するように、分割前の重み値群における分割位置を決定させる。
【発明の効果】
【0014】
本発明によれば、高速デバイスを効果的に利用しやすくするように、ニューラルネットワークモデルを変換することができる。
【図面の簡単な説明】
【0015】
【
図1】1つの層に対応する重み値群の構成例を示す模式図である。
【
図2】入力データ、重み値群、および、出力データの関係を示す説明図である。
【
図3】本発明の第1の実施形態のニューラルネットワークモデル変換装置の構成例を示すブロック図である。
【
図4】重み値群をカーネル方向に分割する場合における分割位置の例を示す模式図である。
【
図5】分割によって得られた2つの重み値群の例を示す模式図である。
【
図6】入力データとそれぞれの重み値群との畳み込み演算によって得られる複数の出力データの例を示す模式図である。
【
図7】結合層で得られる1つの出力データの例を示す模式図である。
【
図8】本発明の第1の実施形態の処理経過の例を示すフローチャートである。
【
図9】第1の実施形態における分割対象層の変換を示す模式図である。
【
図10】本発明の第2の実施形態のニューラルネットワークモデル変換装置の構成例を示すブロック図である。
【
図11】本発明の第2の実施形態の処理経過の例を示すフローチャートである。
【
図12】第2の実施形態における分割対象層の変換を示す模式図である。
【
図13】分割対象層の重み値群に含まれるカーネルの数、分割対象層の出力データのチャネルの数、および、次層の重み値群に含まれるチャネルの数が等しいことを示す説明図である。
【
図14】本発明の第3の実施形態のニューラルネットワークモデル変換装置の構成例を示すブロック図である。
【
図15】本発明の第3の実施形態の処理経過の例を示すフローチャートである。
【
図16】第3の実施形態における分割対象層および次層の変換を示す模式図である。
【
図17】本発明の第4の実施形態のニューラルネットワークモデル変換装置の構成例を示すブロック図である。
【
図18】重み値群をチャネル方向に分割する場合における分割位置の例を示す模式図である。
【
図19】分割によって得られた2つの重み値群の例を示す模式図である。
【
図20】入力データとそれぞれの重み値群との畳み込み演算によって得られる複数の出力データの例を示す模式図である。
【
図21】結合層で得られる1つの出力データの例を示す模式図である。
【
図22】本発明の第4の実施形態の処理経過の例を示すフローチャートである。
【
図23】第4の実施形態における分割対象層の変換を示す模式図である。
【
図24】本発明の第5の実施形態のニューラルネットワークモデル変換装置の構成例を示すブロック図である。
【
図25】本発明の第5の実施形態の処理経過の例を示すフローチャートである。
【
図26】第5の実施形態における分割対象層の変換を示す模式図である。
【
図27】分割対象層の重み値群に含まれるチャネルの数と、分割対象層への入力データのチャネルの数と、前層の重み値群に含まれるカーネルの数とが等しいことを示す説明図である。
【
図28】本発明の第6の実施形態のニューラルネットワークモデル変換装置の構成例を示すブロック図である。
【
図29】本発明の第6の実施形態の処理経過の例を示すフローチャートである。
【
図30】第6の実施形態における分割対象層および前層の変換を示す模式図である。
【
図31】本発明の実施形態のニューラルネットワークモデル変換装置に係るコンピュータの構成例を示す概略ブロック図である。
【
図32】本発明のニューラルネットワークモデル変換装置の概要を示すブロック図である。
【発明を実施するための形態】
【0016】
前述のように、ニューラルネットワークモデルは複数の層を含み、重み値群が層に対応付けられている。本発明のニューラルネットワークモデル変換装置は、ニューラルネットワークモデルの少なくとも1つの層に対して適用される。本発明のニューラルネットワークモデル変換装置が、ニューラルネットワークモデルの複数の層に対して適用されてもよい。
【0017】
まず、ニューラルネットワークモデルに含まれる1つの層に対応する重み値群の構成について説明する。
図1は、1つの層に対応する重み値群の構成例を示す模式図である。
【0018】
重み値群は、少なくとも1つ以上の重み値をチャネル方向に並べることによって得られるカーネルをカーネル方向に並べた構成を有する。少なくとも1つ以上の重み値をチャネル方向に並べることによってカーネルが形成される。
【0019】
図1に示す例では、
図1に示すR方向およびS方向に重み値を配置した行列をチャネル方向に並べることでカーネルを形成し、カーネルをカーネル方向に並べた構成の重み値群を示している。
図1に示す例では、チャネル方向を符号Cで表し、カーネル方向を符号Kで表している。
【0020】
なお、少なくとも1つ以上の重み値(
図1に示す例では、重み値を要素とする3行3列の行列)をチャネル方向に並べることによって得られる重み値の集合をカーネルと呼ぶ。カーネルは、フィルタと称されることもある。1つの重み値群に含まれる各カーネルのチャネルの数は共通である。
【0021】
また、カーネル方向は、カーネルが並ぶ方向である。
【0022】
図1に示す重み値群では、重み値が並ぶ方向として、R方向、S方向、チャネル方向(C方向)、カーネル方向(K方向)を示している。従って、
図1に示す重み値群は、4次元配列で表されていると言うことができる。以下に示す各実施形態の説明では、重み値群が、
図1に示すように、R方向およびS方向に重み値を配置した行列をチャネル方向に並べることでカーネルを形成し、カーネルをカーネル方向に並べた構成である場合を例にして説明する。ただし、重み値群を表す配列の次元は4次元に限定されない。
【0023】
図2は、入力データ、重み値群、および、出力データの関係を示す説明図である。重み値群において、チャネルの数(チャネル方向に並ぶ行列の数)をc個とする。また、カーネルの数(カーネル方向に並ぶカーネルの数)をk個とする。
【0024】
入力データは、行列をチャネル方向にc個並べた構成を有する。すなわち、入力データのチャネルの数と、その入力データが入力される層の重み値群のチャネルの数は、等しい。
図2に示す例では、入力データのチャネルの数、および、重み値群のチャネルの数は、いずれもc個であり、等しい。ただし、重み値群に含まれるR方向およびS方向に重み値を配置した行列と、入力データに含まれる個々の行列の間で、行数は異なっていてよく、また、列数も異なっていてよい(
図2参照)。
【0025】
入力データと重み値群とを用いて畳み込み演算を行うことによって、出力データが得られる。畳み込み演算は、重み値群に含まれる個々のカーネル毎に、入力データを用いて行われる。入力データと、j番目(jは、1以上k以下の整数)のカーネルとの畳み込み演算によって、出力データにおけるj番目のチャネルとなるデータ(行列)が得られる。従って、入力データと、1番目のカーネル100
1との畳み込み演算によって、出力データにおける1番目のチャネルとなるデータ200
1が得られる。また、入力データと、k番目のカーネル100
kとの畳み込み演算によって、出力データにおけるk番目のチャネルとなるデータ200
kが得られる。従って、重み値群に含まれる各カーネルは、出力データにおける各チャネルに対応する。そして、重み値群に含まれるカーネルの数と、出力データのチャネルの数は、等しい。
図2に示すように、重み値群に含まれるカーネルの数がk個であるならば、出力データのチャネルの数もk個である。
【0026】
以下、本発明の実施形態を図面を参照して説明する。
【0027】
本発明の実施形態のニューラルネットワークモデル変換装置は、ニューラルネットワークモデルの層の重み値群を分割する。重み値群が分割される層は、1つであっても、複数であってもよい。以下に示す各実施形態では、説明を簡単にするために、重み値群が分割される層として1つの層に着目して説明する。重み値群が分割される層を、分割対象層と記す。すなわち、分割対象層は複数存在してもよいが、以下に示す各実施形態では1つの分割対象層に着目して説明する。
【0028】
また、重み値群が分割されるということは、その重み値群に対応する層が分割さることを意味する。
【0029】
また、分割対象層は、予め定められているものとする。例えば、分割対象層は、予めニューラルネットワークモデルの管理者によって指定されていてもよい。分割対象層は、少なくとも1つ定められている。
【0030】
また、分割対象層の重み値群のスパース度(分割前の重み値群のスパース度)は、予め定められた所定値未満であるものとする。さらに、その所定値以上のスパース度を有する重み値群と入力データとの畳み込み演算を、一般的なデバイスよりも高速に行える高速デバイスが存在するものとする。
【0031】
分割対象層は、分割されるだけでなく、他の処理を行う層を追加されることによって、変換される。この結果、ニューラルネットワークモデルは変換されることになる。
【0032】
なお、各実施形態において、変換対象となるニューラルネットワークモデルは、予め、各実施形態のニューラルネットワークモデル変換装置に入力されているものとする。
【0033】
実施形態1.
本発明の第1の実施形態では、分割対象層の重み値群に含まれるカーネルの数がk個であるものとして説明する。また、第1の実施形態では、分割対象層の重み値群で、0である重み値がカーネル方向に偏在しているものとする。本例では、1番目に近いカーネルほど、重み値“0”を多く含み、k番目に近いカーネルほど、重み値“0”の数が少なくなるものとする。ただし、このような偏りの態様は一例である。例えば、各カーネルが、重み値“0”の数に基づいて、厳密に降順に並んでいなくてもよい。また、例えば、各カーネルが、重み値“0”の数に基づいて、昇順に並んでいてもよい。
【0034】
また、第1の実施形態では、ニューラルネットワークモデル変換装置は、重み値群をカーネル方向に分割する。
【0035】
図3は、本発明の第1の実施形態のニューラルネットワークモデル変換装置の構成例を示すブロック図である。本実施形態のニューラルネットワークモデル変換装置10は、分割位置決定部11と、分割部12と、結合層追加部13とを備える。
【0036】
分割位置決定部11は、分割対象層の重み値群における分割位置を決定する。本実施形態の分割位置決定部11は、分割前の重み値群をカーネル方向に分割するように、分割位置を決定する。従って、本実施形態では、決定される分割位置は、カーネルとカーネルの境界になる。
【0037】
ここで、分割位置決定部11は、分割後の少なくとも1つの重み値群が、所定値以上のスパース度を有するように分割位置を決定する。この所定値は、高速デバイスが層の演算を高速化できるスパース度の最小値である。すなわち、スパース度が所定値以上であれば、高速デバイスは層の演算を高速化でき、スパース度が所定値未満であれば高速デバイスは層の演算を高速化できない。
【0038】
なお、各実施形態では、分割位置決定部が、重み値群における1つの分割位置を決定し、分割部が重み値群を2つの重み値群に分割する場合を例にして説明する。ただし、高速処理可能なスパース度が異なる複数種類の高速デバイスが存在する場合等には、各実施形態において、分割位置決定部が、重み値群における2つ以上の分割位置を決定し、分割部が重み値群を3つ以上の重み値群に分割してもよい。
【0039】
図4は、重み値群をカーネル方向に分割する場合における分割位置の例を示す模式図である。前述のように、本例では、1番目に近いカーネルほど、重み値“0”を多く含み、k番目に近いカーネルほど、重み値“0”の数が少なくなるものとする。このとき、1番目からi番目までのカーネルを含む重み値群のスパース度が所定値以上になり、i+1番目からk番目までのカーネルを含む重み値群のスパース度が所定値未満になるとする。この場合、分割位置決定部11は、i番目のカーネルと、i+1番目のカーネルとの境界を、分割位置として決定する(
図4参照)。
【0040】
分割部12は、分割位置決定部11によって決定された分割位置で重み値群を分割する。
図5は、分割によって得られた2つの重み値群の例を示す模式図である。分割によって得られた2つの重み値群71,72は、それぞれ1つの層に対応する。分割によって2つの重み値群が得られたということは、分割対象層が2つの層に分割されたことを意味する。
【0041】
分割によって得られた1番目の重み値群71は、分割前の重み値群における1番目からi番目までのカーネルを含む。すなわち、重み値群71は、i個のカーネルを含む。
【0042】
また、分割によって得られた2番目の重み値群72は、分割前の重み値群におけるi+1番目からk番目までのカーネルを含む。すなわち、重み値群72は、k-i個のカーネルを含む。
【0043】
また、重み値群71,72のチャネルの数は、c個で共通である。
【0044】
分割対象層への入力データは、分割後の各層にそれぞれ入力され、それぞれの層で畳み込み演算が行われる。
【0045】
図6は、入力データとそれぞれの重み値群71,72との畳み込み演算によって得られる複数の出力データの例を示す模式図である。前述のように、重み値群に含まれるカーネルの数と、出力データのチャネルの数は、等しい。従って、入力データと重み値群71(
図5参照)との畳み込み演算によって得られる出力データ76のチャネルの数は、i個である。このi個のチャネルは、重み値群71のi個のカーネルに対応する。また、入力データと重み値群72(
図5参照)との畳み込み演算によって得られる出力データ77のチャネルの数は、k-i個である。このk-i個のチャネルは、重み値群72のk-i個のカーネルに対応する。
【0046】
結合層追加部13は、ニューラルネットワークモデルに結合層を追加する。具体的には、結合層追加部13は、分割後の各層の後に結合層を追加する。
【0047】
結合層は、分割対象層への入力データと分割後のそれぞれの重み値群との畳み込み演算によって得られるそれぞれの出力データを結合して1つの出力データにする層である。本例では、結合層追加部13は、分割対象層への入力データとそれぞれの重み値群71,72(
図5参照)との畳み込み演算によって得られるそれぞれの出力データ76,77(
図6参照)を結合して1つの出力データにする結合層を、分割後の各層の後に追加する。
【0048】
重み値群の分割を行わない場合、分割対象層の出力データは1つであり、その出力データのチャネルの数はk個である。
【0049】
一方、重み値群を2つに分割した場合、
図6に示すように2つの出力データ76,77が得られる。
図6に例示する2つの出力データ76,77は、そのままでは、分割対象層の次の層への入力データとして使用することはできない。結合層で、
図6に例示するそれぞれの出力データ76,77を結合することによって1つの出力データにすることで、その1つの出力データは、分割対象層の次の層への入力データとして使用することが可能になる。
【0050】
本実施形態では、結合層追加部13は、カーネルの順番と、カーネルに対応する出力データのチャネルの順番とが対応するように、各出力データ76,77を、チャネル方向に連結することによって、各出力データを1つの出力データにする結合層を追加する。本例では、結合層追加部13は、分割前の重み値群の1番目からi番目までの各カーネルに対応するi個のチャネルを有する出力データ76に続けて、分割前の重み値群のi+1番目からk番目までの各カーネルに対応するk-i個のチャネルを有する出力データ77を、チャネル方向に連結することによって、1つの出力データにする結合層を追加する。
図7は、結合層で得られる1つの出力データの例を示す模式図である。
図7に示すように、連結後に得られる1つの出力データは、k個のチャネルを有する出力データである。
【0051】
分割位置決定部11、分割部12および結合層追加部13は、例えば、ニューラルネットワークモデル変換プログラムに従って動作するコンピュータのCPU(Central Processing Unit )によって実現される。例えば、CPUが、コンピュータのプログラム記憶装置等のプログラム記録媒体からニューラルネットワークモデル変換プログラムを読み込み、そのニューラルネットワークモデル変換プログラムに従って、分割位置決定部11、分割部12および結合層追加部13として動作すればよい。
【0052】
図8は、本発明の第1の実施形態の処理経過の例を示すフローチャートである。既に説明した事項については、適宜、説明を省略する。
【0053】
まず、分割位置決定部11が、分割後の少なくとも1つの重み値群が所定値以上のスパース度を有するように、分割対象層の重み値群における分割位置を決定する(ステップS1)。この分割位置は、重み値群をカーネル方向に分割する場合の分割位置である。
【0054】
次に、分割部12が、ステップS1で決定された分割位置で、分割対象層の重み値群をカーネル方向に分割する(ステップS2)。
【0055】
次に、結合層追加部13が、分割によって得られた各層の後に結合層を追加する(ステップS3)。第1の実施形態では、ステップS3で処理を終了する。
【0056】
図9は、第1の実施形態における分割対象層の変換を示す模式図である。与えられたニューラルネットワークモデルに含まれる分割対象層は、第1の実施形態のニューラルネットワークモデル変換装置10が分割対象層の重み値群をカーネル方向に分割することによって得られる第1の層81および第2の層82、並びに、結合層83に変換される。第1の層81のスパース度は所定値以上であり、第2の層82のスパース度は所定値未満である。従って、入力データと第1の層81の重み値群との畳み込み演算を高速デバイスに実行させ、入力データと第2の層82の重み値群との畳み込み演算を一般的なデバイスに実行させることで、ニューラルネットワークモデルを用いた演算を高速化できる。また、結合層83も追加されるので、第1の層81および第2の層82それぞれの出力データを1つの出力データに結合することができ、その1つの出力データは、分割対象層の出力データと同一である。従って、分割対象層が
図9に示すように変換されたとしても、ニューラルネットワークモデル全体としての演算結果は変化しない。従って、高速デバイスを効果的に利用しやすくするように、ニューラルネットワークモデルを変換することができる。
【0057】
実施形態2.
第1の実施形態は、分割対象層の重み値群で、0である重み値がカーネル方向に偏在している場合に適用される実施形態である。分割対象層の重み値群で、0である重み値がカーネル方向に偏在していない場合もある。第2の実施形態は、分割対象層の重み値群で、0である重み値がカーネル方向に偏在していない場合に適用可能な実施形態である。第2の実施形態では、分割対象層の重み値群で、重み値“0”を多く含むカーネルや、重み値“0”を少ししか含まないカーネルが、重み値“0”の数の多さの順番に並んでいないものとする。
【0058】
第2の実施形態でも、分割対象層の重み値群に含まれるカーネルの数がk個であるものとして説明する。また、第2の実施形態でも、ニューラルネットワークモデル変換装置は、重み値群をカーネル方向に分割する。
【0059】
図10は、本発明の第2の実施形態のニューラルネットワークモデル変換装置の構成例を示すブロック図である。第1の実施形態と同様の要素については、
図3に示す符号と同一の符号を付す。本実施形態のニューラルネットワークモデル変換装置20は、カーネル並べ替え部21と、分割位置決定部11と、分割部12と、結合層追加部13と、出力データ並べ替え層追加部22とを備える。
【0060】
カーネル並べ替え部21は、分割対象層の分割前の重み値群に含まれるカーネルを、所定の基準に従って並べ替える。具体的には、カーネル並べ替え部21は、各カーネルに含まれる重み値“0”の数の多さに基づいて、重み値群に含まれるカーネルを並べ替える。より具体的には、カーネル並べ替え部21は、0である重み値の数の降順または昇順に、分割対象層の分割前の重み値群に含まれるカーネルを並べ替える。以下では、カーネル並べ替え部21が、0である重み値の数の降順に、分割前の重み値群に含まれるカーネルを並べ替える場合を例にして説明する。ただし、カーネル並べ替え部21が、0である重み値の数の昇順にカーネルを並べ替えてもよい。
【0061】
また、カーネル並べ替え部21は、分割前の重み値群に含まれるカーネルを並べ替えた後、各カーネルの並べ替え前の順番および並べ替え後の順番を示す並べ替え情報を、出力データ並べ替え層追加部22に送る。
【0062】
分割位置決定部11、分割部12および結合層追加部13の動作は、第1の実施形態の分割位置決定部11、分割部12および結合層追加部13の動作と同様である。ただし、第2の実施形態では、分割位置決定部11、分割部12および結合層追加部13は、カーネル並べ替え部21によるカーネルの並べ替え後の重み値群に基づいて、処理を行う。
【0063】
分割位置決定部11は、カーネル並べ替え部21によるカーネルの並べ替え後の重み値群をカーネル方向に分割するように、分割位置を決定する。このとき、分割位置決定部11は、分割後の少なくとも1つの重み値群が、所定値以上のスパース度を有するように分割位置を決定する。カーネル並べ替え部21が、0である重み値の数の降順(昇順でもよい。)に、分割前の重み値群に含まれるカーネルを並べ替えている。その結果、例えば、1番目に近いカーネルほど、重み値“0”を多く含み、k番目に近いカーネルほど、重み値“0”の数が少なくなっている。従って、分割位置決定部11は、分割後の少なくとも1つの重み値群が、所定値以上のスパース度を有するように分割位置を決定することができる。
【0064】
カーネルの並べ替え後の重み値群において、1番目からi番目までのカーネルを含む重み値群のスパース度が所定値以上になり、i+1番目からk番目までのカーネルを含む重み値群のスパース度が所定値未満になるとする。この場合、
図4に示す場合と同様に、分割位置決定部11は、i番目のカーネルと、i+1番目のカーネルとの境界を、分割位置として決定する。ただし、ここで述べた1番目、i番目、i+1番目、k番目等の順番は、カーネル並べ替え部21によるカーネルの並べ替え後におけるカーネルの順番である。
【0065】
分割部12は、分割位置決定部11によって決定された分割位置で重み値群を分割する。この結果、
図5に示すように2つの重み値群が得られる。以下、第2の実施形態でも、便宜的に、
図5、
図6、
図7を参照して説明する。
【0066】
前述のように、分割によって2つの重み値群が得られたということは、分割対象層が2つの層に分割されたことを意味する。
【0067】
カーネルの並べ替え後の重み値群を分割することによって得られた1番目の重み値群71(
図5参照)は、分割前の重み値群における1番目からi番目までのカーネルを含む。すなわち、重み値群71は、i個のカーネルを含む。
【0068】
また、カーネルの並べ替え後の重み値群を分割することによって得られた2番目の重み値群72(
図5参照)は、分割前の重み値群におけるi+1番目からk番目までのカーネルを含む。すなわち、重み値群72は、k-i個のカーネルを含む。
【0069】
また、重み値群71,72のチャネルの数は、c個で共通である。
【0070】
分割対象層への入力データは、分割後の各層にそれぞれ入力され、それぞれの層で畳み込み演算が行われる。
【0071】
入力データと重み値群71(
図5参照)との畳み込み演算によって、チャネルの数がi個である出力データ76(
図6参照)が得られる。また、入力データと重み値群72(
図5参照)との畳み込み演算によって、チャネルの数がk-i個である出力データ77(
図6参照)が得られる。
【0072】
結合層追加部13は、カーネル並べ替え部21による並べ替え後のカーネルの順番と、カーネルに対応する出力データのチャネルの順番とが対応するように、各出力データ76,77を、チャネル方向に連結することによって、各出力データを1つの出力データ(
図7参照)にする結合層を追加する。本例では、結合層追加部13は、分割前の重み値群の1番目からi番目までの各カーネルに対応するi個のチャネルを有する出力データ76に続けて、分割前の重み値群のi+1番目からk番目までの各カーネルに対応するk-i個のチャネルを有する出力データ77を、チャネル方向に連結することによって、1つの出力データにする結合層を追加する。前述のように、1番目、i番目、i+1番目、k番目等の順番は、カーネル並べ替え部21によるカーネルの並べ替え後におけるカーネルの順番である。
【0073】
従って、第2の実施形態では、結合層で得られる出力データのチャネルの順番は、カーネル並べ替え部21による並べ替え後のカーネルの順番に対応している。
【0074】
出力データ並べ替え層追加部22は、出力データ並べ替え層を、ニューラルネットワークモデルにおいて、上述の結合層の後に追加する。
【0075】
出力データ並べ替え層は、カーネル並べ替え部21による並べ替えによるカーネルの順番の変化に基づいて、カーネルの並べ替え前の重み値群におけるカーネルの順番に対応するように、結合層で得られる1つの出力データのチャネルを並べ替える層である。
【0076】
例えば、カーネルの並べ替え前の重み値群で1番目であったカーネル(Qとする)が、カーネル並べ替え部21によってp番目のカーネルに並べ替えられたとする。本来、カーネルQに対応する出力データのチャネルは1番目のチャネルであるが、結合層で得られる1つの出力データでは、カーネルQに対応するチャネルはp番目のチャネルになっている。出力データ並べ替え層は、出力データのp番目のチャネルを1番目のチャネルに並べ替える。出力データ並べ替え層は、他の各チャネルも同様に並べ替える。
【0077】
出力データ並べ替え層追加部22は、結合層で得られる1つの出力データのチャネルをどのように並べ替えれば、出力データのチャネルの順番を、カーネルの並べ替え前の重み値群におけるカーネルの順番に対応させることができるかを、前述の並べ替え情報に基づいて判定できる。従って、出力データ並べ替え層追加部22は、並べ替え情報に基づいて、どのように出力データのチャネルを並べ替えるのかを規定した出力データ並べ替え層を作成し、その出力データ並べ替え層を、上述の結合層の後に追加すればよい。
【0078】
出力データ並べ替え層によるチャネルの並べ替え後の1つの出力データでは、チャネルの順番は、カーネル並べ替え部21によるカーネルの並べ替え前のカーネルの順番に対応している。従って、出力データ並べ替え層によって得られる1つの出力データは、分割対象層の次の層への入力データとして使用することができる。
【0079】
カーネル並べ替え部21、分割位置決定部11、分割部12、結合層追加部13および出力データ並べ替え層追加部22は、例えば、ニューラルネットワークモデル変換プログラムに従って動作するコンピュータのCPUによって実現される。例えば、CPUが、コンピュータのプログラム記憶装置等のプログラム記録媒体からニューラルネットワークモデル変換プログラムを読み込み、そのニューラルネットワークモデル変換プログラムに従って、カーネル並べ替え部21、分割位置決定部11、分割部12、結合層追加部13および出力データ並べ替え層追加部22として動作すればよい。
【0080】
図11は、本発明の第2の実施形態の処理経過の例を示すフローチャートである。既に説明した事項については、適宜、説明を省略する。また、
図11に示すステップS1~S3は、カーネルの並べ替え後の重み値群に基づく処理であるという点の他は、第1の実施形態のステップS1~S3(
図8参照)と同様であり、説明を省略する。
【0081】
第2の実施形態では、まず、カーネル並べ替え部21が、各カーネルに含まれる重み値“0”の数の多さに基づいて、分割対象層の重み値群に含まれるカーネルを並べ替える(ステップS11)。例えば、カーネル並べ替え部21は、重み値“0”の数の降順に、分割対象層の重み値群に含まれるカーネルを並べ替える。また、カーネル並べ替え部21は、その重み値群に含まれる各カーネルの並べ替え前の順番および並べ替え後の順番を示す並べ替え情報を、出力データ並べ替え層追加部22に送る。
【0082】
ステップS11の後、ニューラルネットワークモデル変換装置20は、カーネルの並べ替え後の重み値群に基づいて、ステップS1~S3を行う。
【0083】
ステップS3の後、出力データ並べ替え層追加部22は、カーネルの並べ替え前の重み値群におけるカーネルの順番に対応するように、結合層で得られる1つの出力データのチャネルを並べ替える出力データ並べ替え層を、前述の並べ替え情報に基づいて作成する。そして、出力データ並べ替え層追加部22は、その出力データ並べ替え層を結合層の後に追加する(ステップS12)。第2の実施形態では、ステップS12で処理を終了する。
【0084】
図12は、第2の実施形態における分割対象層の変換を示す模式図である。第1の層91および第2の層92は、カーネルの並べ替え後の重み値群を分割部12(
図10参照)が分割することによって得られる2つの層である。第1の層91のスパース度は所定値以上であり、第2の層92のスパース度は所定値未満である。従って、入力データと第1の層91の重み値群との畳み込み演算を高速デバイスに実行させ、入力データと第2の層92の重み値群との畳み込み演算を一般的なデバイスに実行させることで、ニューラルネットワークモデルを用いた演算を高速化できる。結合層83は、
図9に示す結合層83と同様であり、第1の層91および第2の層92それぞれの出力データを1つの出力データに結合する。出力データ並べ替え層94は、その1つの出力データのチャネルの順番が、カーネル並べ替え部21によるカーネル並べ替え前の重み値群におけるカーネルの順番に対応した順番になるように、その1つの出力データのチャネルの順番を並べ替える。このチャネルの並べ替えによって得られる1つの出力データは、分割対象層の出力データと同一である。従って、分割対象層が
図12に示すように変換されたとしても、ニューラルネットワークモデル全体としての演算結果は変化しない。従って、高速デバイスを効果的に利用しやすくするように、ニューラルネットワークモデルを変換することができる。
【0085】
実施形態3.
第3の実施形態も、第2の実施形態と同様に、分割対象層の重み値群で、0である重み値がカーネル方向に偏在していない場合に適用可能な実施形態である。
【0086】
第3の実施形態でも、分割対象層の重み値群に含まれるカーネルの数がk個であるものとして説明する。このとき、その分割対象層で得られる出力データのチャネルの数は、k個である。また、分割対象層の次の層を、次層と記す。なお、ここでは、分割対象層が畳み込み層であり、分割対象層の次の畳み込み層を次層と記すものとし、分割対象層と次層とが連続している場合を例にして説明する。ニューラルネットワークモデルの変換を行わないとすると、次層では、分割対象層の出力データを入力データとして、畳み込み演算を行う。次層の重み値群のチャネルの数は、次層の入力データのチャネルの数と等しいので、k個である。すなわち、分割対象層の重み値群に含まれるカーネルの数、分割対象層の出力データのチャネルの数、および、次層の重み値群に含まれるチャネルの数は、
図13に示すように、いずれもk個である。
【0087】
また、第3の実施形態でも、ニューラルネットワークモデル変換装置は、分割対象層の重み値群をカーネル方向に分割する。さらに、第3の実施形態では、ニューラルネットワークモデル変換装置は、分割対象層の次層のチャネルを並べ替える。すなわち、第3の実施形態では、分割対象層だけでなく、分割対象層の次層も変換する。
【0088】
第2の実施形態では、
図12に示すように、出力データ並べ替え層94を結合層83のの後に追加することによって、出力データ並べ替え層94で得られる出力データが、分割対象層の出力データと同一になるようにした。
【0089】
一方、第3の実施形態では、出力データ並べ替え層94(
図12参照)を追加せず、その代わりに、上述のように、分割対象層の次層のチャネルを並べ替える。このことにより、ニューラルネットワークモデルの変換を行わない場合における分割対象層の次層の出力データと同一の出力データが、チャネルを並べ替えた次層から得られるようにしている。
【0090】
図14は、本発明の第3の実施形態のニューラルネットワークモデル変換装置の構成例を示すブロック図である。第2の実施形態と同様の要素については、
図10に示す符号と同一の符号を付す。本実施形態のニューラルネットワークモデル変換装置30は、カーネル並べ替え部21と、次層並べ替え部31と、分割位置決定部11と、分割部12と、結合層追加部13とを備える。
【0091】
カーネル並べ替え部21、分割位置決定部11、分割部12および結合層追加部13の動作は、第2の実施形態におけるカーネル並べ替え部21、分割位置決定部11、分割部12および結合層追加部13の動作と同様である。よって、カーネル並べ替え部21、分割位置決定部11、分割部12および結合層追加部13の動作についての説明は省略する。また、ニューラルネットワークモデル変換装置30は、第2の実施形態における出力データ並べ替え層追加部22を備えていない。
【0092】
従って、第3の実施形態では、分割対象層は、
図12に示す第1の層91、第2の層92および結合層83に変換される。また、出力データ並べ替え層94(
図12参照)は設けられない。
【0093】
上記のように、カーネル並べ替え部21の動作は、第2の実施形態におけるカーネル並べ替え部21の動作と同様である。ただし、第3の実施形態では、カーネル並べ替え部21は、分割前の重み値群に含まれるカーネルを並べ替えた後、各カーネルの並べ替え前の順番および並べ替え後の順番を示す並べ替え情報を、次層並べ替え部31に送る。
【0094】
次層並べ替え部31は、カーネル並べ替え部21によって並べ替えられたカーネルの順番に従って、分割対象層の次層の重み値群のチャネルを並べ替える。
【0095】
次層では、入力データ(換言すれば、結合層追加部13が追加した結合層によって得られる1つの出力データ)と、次層の重み値群とを用いて、畳み込み演算が行われる。第2の実施形態で説明したように、結合層で得られる出力データのチャネルの順番は、カーネル並べ替え部21による並べ替え後のカーネルの順番に対応している。従って、次層の重み値群のチャネルの順番が元の順番のままであると、次層への入力データのチャネルと、次層の重み値群のチャネルとが対応しない。その結果、次層の出力データは、ニューラルネットワークモデルの変換を行わない場合に次層で得られる出力データと異なることになる。すると、ニューラルネットワークモデル全体としての演算結果も変わってしまう。
【0096】
そのようなことを防ぐために、次層並べ替え部31は、カーネル並べ替え部21によって並べ替えられたカーネルの順番に従って、分割対象層の次層の重み値群のチャネルを並べ替える。
【0097】
例えば、カーネルの並べ替え前の重み値群で1番目であったカーネル(Qとする)が、カーネル並べ替え部21によってp番目のカーネルに並べ替えられたとする。すると、結合層で得られる1つの出力データ(次層への入力データ)では、カーネルQに対応するチャネルはp番目のチャネルになっている。そのため、次層並べ替え部31は、次層の重み値群で、1番目のチャネルをp番目のチャネルに並べ替える。次層並べ替え部31は、次層の重み値群の他のチャネルも同様に並べ替える。その結果、次層への入力データ(すなわち、結合層の出力データ)の各チャネルと、次層の重み値群の各チャネルは対応したチャネル同士となる。そして、結合層で得られる出力データと、分割対象層で得られる出力データとは異なるが、分割対象層の次層で得られる出力データと、チャネルが並べ替えられた次層で得られる出力データは同一となる。よって、分割対象層およびその次層を変換したとしても、ニューラルネットワークモデル全体としての演算結果は変わらない。
【0098】
次層並べ替え部31は、カーネル並べ替え部21によって並べ替えられたカーネルの順番に従って、分割対象層の次層の重み値群のチャネルを並べ替えるときに、上述の並べ替え情報を参照して、チャネルを並べ替えればよい。並べ替え情報は、分割対象層の重み値群に含まれる各カーネルの並べ替え前の順番および並べ替え後の順番を示している。従って、次層並べ替え部31は、並べ替え情報に基づいて、並べ替え後のカーネルの順番に対応するように、分割対象層の次層の重み値群のチャネルを並べ替えることができる。
【0099】
カーネル並べ替え部21、次層並べ替え部31、分割位置決定部11、分割部12および結合層追加部13は、例えば、ニューラルネットワークモデル変換プログラムに従って動作するコンピュータのCPUによって実現される。例えば、CPUが、コンピュータのプログラム記憶装置等のプログラム記録媒体からニューラルネットワークモデル変換プログラムを読み込み、そのニューラルネットワークモデル変換プログラムに従って、カーネル並べ替え部21、次層並べ替え部31、分割位置決定部11、分割部12および結合層追加部13として動作すればよい。
【0100】
図15は、本発明の第3の実施形態の処理経過の例を示すフローチャートである。既に説明した事項については、説明を省略する。
図15に示すステップS11およびステップS1~S3は、第2の実施形態におけるステップS11およびステップS1~S3(
図11参照)と同様であり、詳細な説明を省略する。
【0101】
まず、カーネル並べ替え部21が、各カーネルに含まれる重み値“0”の数の多さに基づいて、分割対象層の重み値群に含まれるカーネルを並べ替える(ステップS11)。そして、カーネル並べ替え部21は、その重み値群に含まれる各カーネルの並べ替え前の順番および並べ替え後の順番を示す並べ替え情報を、次層並べ替え部31に送る。
【0102】
ステップS11の後、ニューラルネットワークモデル変換装置30は、カーネルの並べ替え後の重み値群に基づいて、ステップS1~S3を行う。
【0103】
ステップS3の後、次層並べ替え部31は、ステップS11で並べ替えられたカーネルの順番に従って、分割対象層の次層の重み値群のチャネルを並べ替える(ステップS13)。このとき、次層並べ替え部31は、並べ替え情報に基づいて、どのようにチャネルを並べ替えるのかを判定すればよい。
【0104】
なお、ニューラルネットワークモデル変換装置30は、ステップS11とステップS1との間で、ステップS13を実行してもよい。
【0105】
図16は、第3の実施形態における分割対象層および次層の変換を示す模式図である。
図12に示す層と同様の層には、
図12と同一の符号を付している。第3の実施形態では、分割対象層は、第1の層91、第2の層92および結合層83に変換される。また、分割対象層の次層は、次層並べ替え部31によって、チャネル並べ替え後の次層95に変換される。既に
図12を参照して説明したように、入力データと第1の層91の重み値群との畳み込み演算を高速デバイスに実行させ、入力データと第2の層92の重み値群との畳み込み演算を一般的なデバイスに実行させることで、ニューラルネットワークモデルを用いた演算を高速化できる。また、ニューラルネットワークモデルの変換を行わない場合における次層の出力データと、チャネル並べ替え後の次層95の出力データは、同一になる。従って、分割対象層および次層が
図16に示すように変換されたとしても、ニューラルネットワークモデル全体としての演算結果は変化しない。従って、高速デバイスを効果的に利用しやすくするように、ニューラルネットワークモデルを変換することができる。
【0106】
なお、ニューラルネットワークモデルでは一般的に、畳み込み層と畳み込み層との間に、正規化層や活性化関数層が存在することがある。このような場合においても、本実施形態を問題なく適用することが可能である。具体的には、活性化関数層のように、重みを持たない層については、並べ替えの影響を受けないため、特別な対処は不要である。一方、正規化層(例えば、Batch Normalization 層)等のように、チャネル毎の重みを持つ層については、この層の重み値群を、次層の重み値群と同様に、次層並べ替え部31が並べ替え情報に基づいて並べ替えることで、次層の出力データを、ニューラルネットワークモデルの変換を行わない場合における次層の出力データと同一にすることができる。このような点は、後述の第6の実施形態における分割対象層(畳み込み層)と前層との間に、正規化層や活性化関数層が存在する場合においても同様である。すなわち、後述の第6の実施形態においても、分割対象層と前層との間に、正規化層等のように重み値群を持つ層が存在する場合、その層の重み値群を、前層の重み値群と同様に、並べ替え情報に基づいて並べ替えればよい。
【0107】
実施形態4.
本発明の第4の実施形態では、分割対象層の重み値群に含まれるチャネルの数がc個であり、カーネルの数がk個であるものとして説明する。また、第4の実施形態では、分割対象層の重み値群で、0である重み値がチャネル方向に偏在しているものとする。本例では、1番目に近いチャネルほど、重み値“0”を多く含み、c番目に近いチャネルほど、重み値“0”の数が少なくなるものとする。ただし、このような偏りの態様は一例である。例えば、各チャネルが、重み値“0”の数に基づいて、厳密に降順に並んでいなくてもよい。また、例えば、各チャネルが、重み値“0”の数に基づいて、昇順にならんでいてもよい。
【0108】
また、第4の実施形態では、ニューラルネットワークモデル変換装置は、重み値群をチャネル方向に分割する。
【0109】
図17は、本発明の第4の実施形態のニューラルネットワークモデル変換装置の構成例を示すブロック図である。本実施形態のニューラルネットワークモデル変換装置40は、分割位置決定部41と、分割部42と、結合層追加部43とを備える。
【0110】
分割位置決定部41は、分割対象層の重み値群における分割位置を決定する。本実施形態の分割位置決定部41は、分割前の重み値群をチャネル方向に分割するように、分割位置を決定する。従って、本実施形態では、決定される分割位置は、チャネルとチャネルの境界になる。
【0111】
ここで、分割位置決定部41は、分割後の少なくとも1つの重み値群が、所定値以上のスパース度を有するように分割位置を決定する。この所定値は、高速デバイスが層の演算を高速化できるスパース度の最小値である。
【0112】
図18は、重み値群をチャネル方向に分割する場合における分割位置の例を示す模式図である。前述のように、本例では、1番目に近いチャネルほど、重み値“0”を多く含み、c番目に近いチャネルほど、重み値“0”の数が少なくなるものとする。このとき、1番目からi番目までのチャネルを含む重み値群のスパース度が所定値以上になり、i+1番目からc番目までのチャネルを含む重み値群のスパース度が所定値未満になるとする。この場合、分割位置決定部41は、i番目のチャネルと、i+1番目のチャネルとの境界を、分割位置として決定する(
図18参照)。
【0113】
分割部42は、分割位置決定部41によって決定された分割位置で重み値群を分割する。
図19は、分割によって得られた2つの重み値群の例を示す模式図である。分割によって得られた2つの重み値群171,172は、それぞれ1つの層に対応する。既に説明したように、分割によって2つの重み値群が得られたということは、分割対象層が2つの層に分割されたことを意味する。
【0114】
分割によって得られた1番目の重み値群171は、分割前の重み値群における1番目からi番目までのチャネルを含む。すなわち、重み値群171は、i個のチャネルを含む。
【0115】
また、分割によって得られた2番目の重み値群172は、分割前の重み値群におけるi+1番目からc番目までのチャネルを含む。すなわち、重み値群172は、c-i個のチャネルを含む。
【0116】
また、重み値群171,172のカーネルの数は、k個で共通である。
【0117】
また、分割後の各重み値群171,172は、分割前のどのチャネルに対応するチャネルを含んでいるかを示す情報を有しているものとする。以下、この情報を、チャネル情報と記す。例えば、重み値群171は、1番目からi番目までのチャネルを示すチャネル情報を有している。また、重み値群172は、i+1番目からc番目までのチャネルを示すチャネル情報を有している。チャネル情報は、例えば、分割部42が、分割後の各重み値群に付与すればよい。
【0118】
分割対象層への入力データは、分割後の各層にそれぞれ入力され、それぞれの層で畳み込み演算が行われる。このとき、入力データと重み値群171との畳み込み演算では、重み値群171が有するチャネル情報が示すチャネルに対応するチャネル(1番目からi番目までのチャネル)を入力データから抽出し、抽出されたi個のチャネルからなるデータと重み値群171との畳み込み演算が行われる。同様に、入力データと重み値群172との畳み込み演算では、重み値群172が有するチャネル情報が示すチャネルに対応するチャネル(i+1番目からc番目までのチャネル)を入力データから抽出し、抽出されたc-i個のチャネルからなるデータと重み値群172との畳み込み演算が行われる。
【0119】
図20は、入力データとそれぞれの重み値群171,172との畳み込み演算によって得られる複数の出力データの例を示す模式図である。前述のように、重み値群に含まれるカーネルの数と、出力データのチャネルの数は、等しい。そして、重み値群171に含まれるカーネルの数と、重み値群172に含まれるカーネルの数は、k個で共通である(
図19参照)。従って、入力データと重み値群171との畳み込み演算で得られる出力データ176のチャネルの数はk個である。また、入力データと重み値群172との畳み込み演算で得られる出力データ177のチャネルの数は、k個である。よって、複数の出力データ176,177のチャネルの数はk個で共通であり、複数の出力データ176,177は、共通の構成を有する。従って、出力データ176の各要素と、出力データ177の各要素とは、一対一に対応付けられる。
【0120】
結合層追加部43は、ニューラルネットワークモデルに結合層を追加する。具体的には、結合層追加部43は、分割後の各層の後に結合層を追加する。
【0121】
既に説明したように、結合層は、分割対象層への入力データと分割後のそれぞれの重み値群との畳み込み演算によって得られるそれぞれの出力データを結合して1つの出力データにする層である。ただし、第4の実施形態における結合層は、それぞれの出力データにおける対応する要素同士を加算することによって1つの出力データを導出する結合層である。例えば、
図20に示す出力データ176,177が得られた場合、出力データ176,177の対応する要素同士を加算し、その加算結果を要素とする1つの出力データが結合層によって導出される。この1つの出力データの構成は、出力データ176,177の構成と共通である。
【0122】
図21は、結合層で得られる1つの出力データの例を示す模式図である。
図21に示すように、結合層で得られる1つの出力データは、k個のチャネルを有する。結合層で得られる1つのデータは、分割対象層で得られる1つのデータと同一である。
【0123】
分割位置決定部41、分割部42および結合層追加部43は、例えば、ニューラルネットワークモデル変換プログラムに従って動作するコンピュータのCPUによって実現される。例えば、CPUが、コンピュータのプログラム記憶装置等のプログラム記録媒体からニューラルネットワークモデル変換プログラムを読み込み、そのニューラルネットワークモデル変換プログラムに従って、分割位置決定部41、分割部42および結合層追加部43として動作すればよい。
【0124】
図22は、本発明の第4の実施形態の処理経過の例を示すフローチャートである。既に説明した事項については、適宜、説明を省略する。
【0125】
まず、分割位置決定部41が、分割後の少なくとも1つの重み値群が所定値以上のスパース度を有するように、分割対象層の重み値群における分割位置を決定する(ステップS41)。この分割位置は、重み値群をチャネル方向に分割する場合の分割位置である。
【0126】
次に、分割部42が、ステップS41で決定された分割位置で、分割対象層の重み値群をチャネル方向に分割する(ステップS42)。
【0127】
次に、結合層追加部43が、分割によって得られた各層の後に結合層を追加する(ステップS43)。この結合層は、それぞれの出力データにおける対応する要素同士を加算することによって1つの出力データを導出する結合層である。第4の実施形態では、ステップS43で処理を終了する。
【0128】
図23は、第4の実施形態における分割対象層の変換を示す模式図である。与えられたニューラルネットワークモデルに含まれる分割対象層は、第4の実施形態のニューラルネットワークモデル変換装置40が分割対象層の重み値群をチャネル方向に分割することによって得られる第1の層181および第2の層182,並びに、結合層183に変換される。第1の層181のスパース度は所定値以上であり、第2の層182のスパース度は所定値未満である。従って、入力データと第1の層181の重み値群との畳み込み演算を高速デバイスに実行させ、入力データと第2の層182の重み値群との畳み込み演算を一般的なデバイスに実行させることで、ニューラルネットワークモデルを用いた演算を高速化できる。また、結合層183も追加されるので、第1の層181および第2の層182それぞれの出力データを1つの出力データに結合することができ、その1つの出力データは、分割対象層の出力データと同一である。従って、分割対象層が
図23に示すように変換されたとしても、ニューラルネットワークモデル全体としての演算結果は変化しない。従って、高速デバイスを効果的に利用しやすくするように、ニューラルネットワークモデルを変換することができる。
【0129】
実施形態5.
第4の実施形態は、分割対象層の重み値群で、0である重み値がチャネル方向に偏在している場合に適用される実施形態である。分割対象層の重み値群で、0である重み値がチャネル方向に偏在していない場合もある。第5の実施形態は、分割対象層の重み値群で、0である重み値がチャネル方向に偏在していない場合に適用可能な実施形態である。第5の実施形態では、分割対象層の重み値群で、重み値“0”を多く含むチャネルや、重み値“0”を少ししか含まないチャネルが、重み値“0”の数の多さの順番に並んでいないものとする。
【0130】
第5の実施形態でも、分割対象層の重み値群に含まれるチャネルの数がc個であり、カーネルの数がk個であるものとして説明する。また、第5の実施形態のニューラルネットワークモデル変換装置は、第4の実施形態と同様に、重み値群をチャネル方向に分割する。
【0131】
図24は、本発明の第5の実施形態のニューラルネットワークモデル変換装置の構成例を示すブロック図である。第4の実施形態と同様の要素については、
図17に示す符号と同一の符号を付す。本実施形態のニューラルネットワークモデル変換装置50は、チャネル並べ替え部51と、分割位置決定部41と、分割部42と、結合層追加部43と、入力データ並べ替え層追加部52とを備える。
【0132】
チャネル並べ替え部51は、分割対象層の分割前の重み値群に含まれるチャネルを、所定の基準に従って並べ替える。具体的には、チャネル並べ替え部51は、各チャネルに含まれる重み値“0”の数の多さに基づいて、重み値群に含まれるチャネルを並べ替える。より具体的には、チャネル並べ替え部51は、0である重み値の数の降順または昇順に、分割対象層の分割前の重み値群に含まれるチャネルを並べ替える。以下では、チャネル並べ替え部51が、0である重み値の数の降順に、分割前の重み値群に含まれるチャネルを並べ替える場合を例にして説明する。ただし、チャネル並べ替え部51が、0である重み値の数の昇順にチャネルを並べ替えてもよい。
【0133】
また、チャネル並べ替え部51は、分割前の重み値群に含まれるチャネルを並べ替えた後、各チャネルの並べ替え前の順番および並べ替え後の順番を示す並べ替え情報を、入力データ並べ替え層追加部52に送る。
【0134】
分割位置決定部41、分割部42および結合層追加部43の動作は、第4の実施形態の分割位置決定部41、分割部42および結合層追加部43の動作と同様である。ただし、第5の実施形態では、分割位置決定部41、分割部42および結合層追加部43は、チャネル並べ替え部51によるチャネルの並べ替え後の重み値群に基づいて、処理を行う。
【0135】
分割位置決定部41は、チャネル並べ替え部51によるチャネルの並べ替え後の重み値群をチャネル方向に分割するように、分割位置を決定する。このとき、分割位置決定部41は、分割後の少なくとも1つの重み値群が、所定値以上のスパース度を有するように分割位置を決定する。チャネル並べ替え部51が、0である重み値の数の降順(昇順でもよい。)に、分割前の重み値群に含まれるチャネルを並べ替えている。その結果、例えば、1番目に近いチャネルほど、重み値“0”を多く含み、c番目に近いチャネルほど、重み値“0”の数が少なくなっている。従って、分割位置決定部41は、分割後の少なくとも1つの重み値群が、所定値以上のスパース度を有するように分割位置を決定することができる。
【0136】
チャネルの並べ替え後の重み値群において、1番目からi番目までのチャネルを含む重み値群のスパース度が所定値以上になり、i+1番目からc番目までのチャネルを含む重み値群のスパース度が所定値未満になるとする。この場合、
図18に示す場合と同様に、分割位置決定部41は、i番目のチャネルと、i+1番目のチャネルとの境界を、分割位置として決定する。ただし、ここで述べた1番目、i番目、i+1番目、c番目等の順番は、チャネル並べ替え部51によるチャネルの並べ替え後におけるチャネルの順番である。
【0137】
分割部42は、分割位置決定部41によって決定された分割位置で重み値群を分割する。この結果、
図19に示すように2つの重み値群が得られる。以下、第5の実施形態でも、便宜的に、
図19、
図20、
図21を参照して説明する。
【0138】
チャネルの並べ替え後の重み値群を分割することによって得られた1番目の重み値群171(
図19参照)は、分割前の重み値群における1番目からi番目までのチャネルを含む。すなわち、重み値群171は、i個のチャネルを含む。また、重み値群171は、チャネル情報を有する。チャネル情報については、第4の実施形態で説明しているので、ここでは説明を省略する。本例では、重み値群171は、1番目からi番目までのチャネルを示すチャネル情報を有している。
【0139】
また、チャネルの並べ替え後の重み値群を分割することによって得られた2番目の重み値群172(
図19参照)は、分割前の重み値群におけるi+1番目からc番目までのチャネルを含む。すなわち、重み値群172は、c-i個のチャネルを含む。また、重み値群172は、チャネル情報を有する。本例では、重み値群172は、i+1番目からc番目までのチャネルを示すチャネル情報を有している。
【0140】
チャネル情報は、例えば、分割部42が、分割後の各重み値群に付与すればよい。
【0141】
チャネル情報を有する重み値群と、入力データとの畳み込み演算については、第4の実施形態で説明しているので、ここでは説明を省略する。
【0142】
また、重み値群171,172のカーネルの数は、k個で共通である。
【0143】
本実施形態では、分割対象層への入力データは、後述の入力データ並べ替え層によって、チャネルの順番が並べ替えられる。チャネルの順番が並べ替えられた入力データは、分割後の各層に入力され、それぞれの層で畳み込み演算が行われる。入力データのチャネルの順番を並べ替える入力データ並べ替え層については後述する。
【0144】
チャネルが並べ替えられた入力データと、重み値群171(
図19参照)との畳み込み演算によって、チャネルの数がk個である出力データ176(
図20参照)が得られる。また、チャネルが並べ替えられた入力データと、重み値群172(
図19参照)との畳み込み演算によって、チャネルの数がk個である出力データ177(
図20参照)が得られる。
【0145】
結合層追加部43は、結合層を、分割後の各層の後に追加する。本実施形態における結合層は、第4の実施形態における結合層と同様である。すなわち、本実施形態における結合層は、分割後の各層で得られたそれぞれの出力データにおける対応する要素同士を加算することによって1つの出力データ(
図21参照)を導出する結合層である。
【0146】
入力データ並べ替え層追加部52は、分割対象層の重み値群の分割によって得られる複数の層の前に、入力データ並べ替え層を追加する。入力データ並べ替え層は、チャネル並べ替え部51によって並べ替えられたチャネルの順番に従って、分割対象層への入力データのチャネルを並べ替える層である。例えば、チャネル並べ替え部51が、分割対象層の重み値群の1番目のチャネルをq番目のチャネルに並べ替えたとする。この場合、入力データ並べ替え層は、入力データの1番目のチャネルをq番目のチャネルに並べ替える。入力データ並べ替え層は、入力データの他のチャネルも、チャネル並べ替え部51によって並べ替えられたチャネルの順番に従って、並べ替える。
【0147】
入力データ並べ替え層追加部52は、並べ替え情報を参照して、入力データ並べ替え層を作成する。本実施形態における並べ替え情報は、分割対象層の重み値群に含まれる各チャネルの並べ替え前の順番および並べ替え後の順番を示す情報である。従って、入力データ並べ替え層追加部52は、並べ替え情報を参照して、入力データ並べ替え層を作成することができる。前述のように、入力データ並べ替え層追加部52は、重み値群の分割によって得られる複数の層の前に、入力データ並べ替え層を追加する。
【0148】
入力データ並べ替え層によって、分割対象層への入力データのチャネルの順番は、チャネル並べ替え部51によって並べ替えられた重み値群のチャネルの順番に従って並べ替えられる。このようにチャネルが並べ替えられた入力データが、分割対象層の重み値群の分割によって得られる各層にそれぞれ入力され、各層でそれぞれ畳み込み演算が行われる。
【0149】
第5の実施形態では、チャネル並べ替え部51が分割対象層の重み値群のチャネルの順番を並べ替えるが、入力データ並べ替え層追加部52が、その順番に従って入力データのチャネルを並べ替える入力データ並べ替え層を追加する。従って、本実施形態の結合層で得られる出力データは、分割対象層で得られる出力データと同一になる。よって、結合層で得られる1つの出力データは、分割対象層の次の層への入力データとして使用することができる。
【0150】
チャネル並べ替え部51、分割位置決定部41、分割部42、結合層追加部43および入力データ並べ替え層追加部52は、例えば、ニューラルネットワークモデル変換プログラムに従って動作するコンピュータのCPUによって実現される。例えば、CPUが、コンピュータのプログラム記憶装置等のプログラム記録媒体からニューラルネットワークモデル変換プログラムを読み込み、そのニューラルネットワークモデル変換プログラムに従って、チャネル並べ替え部51、分割位置決定部41、分割部42、結合層追加部43および入力データ並べ替え層追加部52として動作すればよい。
【0151】
図25は、本発明の第5の実施形態の処理経過の例を示すフローチャートである。既に説明した事項については、適宜、説明を省略する。また、
図25に示すステップS41~S43は、チャネルの並べ替え後の重み値群に基づく処理であるという点の他は、第4の実施形態のステップS41~S43(
図22参照)と同様であり、説明を省略する。
【0152】
第5の実施形態では、まず、チャネル並べ替え部51が、各チャネルに含まれる重み値“0”の数の多さに基づいて、分割対象層の重み値群に含まれるチャネルを並べ替える(ステップS51)。例えば、チャネル並べ替え部51は、重み値“0”の数の降順に、分割対象層の重み値群に含まれるチャネルを並べ替える。また、チャネル並べ替え部51は、その重み値群に含まれる各チャネルの並べ替え前の順番および並べ替え後の順番を示す並べ替え情報を、入力データ並べ替え層追加部52に送る。
【0153】
ステップS51の後、ニューラルネットワークモデル変換装置50は、チャネルの並べ替え後の重み値群に基づいて、ステップS41~S43を行う。
【0154】
ステップS43の後、入力データ並べ替え層追加部52は、ステップS51で並べ替えられたチャネルの順番に従って入力データのチャネルを並べ替える入力データ並べ替え層を、並べ替え情報に基づいて作成する。そして、入力データ並べ替え層追加部52は、重み値群の分割によって得られた複数の層の前に、入力データ並べ替え層を追加する(ステップS52)。第5の実施形態では、ステップS52で処理を終了する。
【0155】
図26は、第5の実施形態における分割対象層の変換を示す模式図である。第1の層191および第2の層192は、チャネルの並べ替え後の重み値群を分割部42(
図24参照)が分割することによって得られる2つの層である。第1の層191のスパース度は所定値以上であり、第2の層192のスパース度は所定値未満である。従って、チャネルが並べ替えられた入力データと第1の層191の重み値群との畳み込み演算を高速デバイスに実行させ、チャネルが並べ替えられた入力データと第2の層192の重み値群との畳み込み演算を一般的なデバイスに実行させることで、ニューラルネットワークモデルを用いた演算を高速化できる。結合層183は、
図23に示す結合層183と同様であり、第1の層191および第2の層192それぞれの出力データを1つの出力データに結合する。また、入力データ並べ替え層194は、チャネル並べ替え部51によって並べ替えられた重み値群のチャネルの順番に従って、入力データのチャネルを並べ替える。この結果、結合層183で得られる1つの出力データは、分割対象層の出力データと同一である。従って、分割対象層が
図26に示すように変換されたとしても、ニューラルネットワークモデル全体としての演算結果は変化しない。従って、高速デバイスを効果的に利用しやすくするように、ニューラルネットワークモデルを変換することができる。
【0156】
実施形態6.
第6の実施形態も、第5の実施形態と同様に、分割対象層の重み値群で、0である重み値がチャネル方向に偏在していない場合に適用可能な実施形態である。
【0157】
第6の実施形態でも、分割対象層の重み値群に含まれるチャネルの数がc個であるものとして説明する。
【0158】
第3の実施形態で説明したように、分割対象層の重み値群に含まれるカーネルの数、分割対象層の出力データのチャネルの数、および、次層の重み値群に含まれるチャネルの数は共通である(
図13参照)。第3の実施形態の「次層」が分割対象層であるものとし、その分割対象層の1つ前の層(以下、前層と記す。)を考える。この場合、
図27に示すように、分割対象層の重み値群に含まれるチャネルの数と、分割対象層への入力データ(換言すれば、前層の出力データ)のチャネルの数と、前層の重み値群に含まれるカーネルの数は、いずれもc個で、共通である。なお、ここでは、分割対象層が畳み込み層であり、分割対象層の前の畳み込み層を前層と記すものとし、前層と分割対象層とが連続している場合を例にして説明する。
【0159】
第6の実施形態でも、ニューラルネットワークモデル変換装置は、分割対象層の重み値群をチャネル方向に分割する。さらに、第6の実施形態では、ニューラルネットワークモデル変換装置は、分割対象層の前層のカーネルを並べ替える。すなわち、第6の実施形態では、分割対象層だけでなく、分割対象層の前層も変換する。
【0160】
第5の実施形態では、
図26に示すように、第1の層191および第2の層192の前に入力データ並べ替え層194を追加することによって、結合層183で得られる出力データが、分割対象層の出力データと同一になるようにした。
【0161】
一方、第6の実施形態では、入力データ並べ替え層194(
図26参照)を追加せず、その代わりに、上述のように、分割対象層の前層のカーネルを並べ替える。このことにより、ニューラルネットワークモデルの変換を行わない場合における分割対象層の出力データと同一のデータが、結合層から得られるようにしている。
【0162】
図28は、本発明の第6の実施形態のニューラルネットワークモデル変換装置の構成例を示すブロック図である。第5の実施形態と同様の要素については、
図24に示す符号と同一の符号を付す。本実施形態のニューラルネットワークモデル変換装置60は、チャネル並べ替え部51と、前層並べ替え部61と、分割位置決定部41と、分割部42と、結合層追加部43とを備える。
【0163】
チャネル並べ替え部51、分割位置決定部41、分割部42および結合層追加部43の動作は、第5の実施形態におけるチャネル並べ替え部51、分割位置決定部41、分割部42および結合層追加部43の動作と同様である。よって、チャネル並べ替え部51、分割位置決定部41、分割部42および結合層追加部43の動作についての説明は省略する。また、ニューラルネットワークモデル変換装置60は、第5の実施形態における入力データ並べ替え層追加部52を備えていない。
【0164】
従って、第6の実施形態では、分割対象層は、
図26に示す第1の層191、第2の層192および結合層183に変換される。また、入力データ並べ替え層194(
図26参照)は設けられない。
【0165】
上記のように、チャネル並べ替え部51の動作は、第5の実施形態におけるチャネル並べ替え部51の動作と同様である。ただし、第6の実施形態では、チャネル並べ替え部51は、分割前の重み値群に含まれるチャネルを並べ替えた後、各チャネルの並べ替え前の順番および並べ替え後の順番を示す並べ替え情報を、前層並べ替え部61に送る。
【0166】
前層並べ替え部61は、チャネル並べ替え部51によって並べ替えられたチャネルの順番に従って、分割対象層の前層の重み値群のカーネルを並べ替える。
【0167】
例えば、チャネル並べ替え部51が、分割対象層の重み値群の1番目のチャネルをq番目のチャネルに並べ替えたとする。この場合、前層並べ替え部61は、前層の重み値群の1番目のカーネルをq番目のカーネルに並べ替える。前層並べ替え部61は、前層の重み値群の他のカーネルも、チャネル並べ替え部51によって並べ替えられたチャネルの順番に従って、並べ替える。
【0168】
前層の重み値群の各カーネルは、前層の出力データの各チャネルに対応している。従って、前層の重み値群に含まれるカーネルの順番を、チャネル並べ替え部51によって並べ替えられたチャネルの順番に従って並べ替えることによって、前層の出力データは、第5の実施形態における入力データ並べ替え層で得られる入力データと同一になる。そして、その前層の出力データに基づいて、分割によって得られた各層および結合層の処理が行われるので、本実施形態における結合層の出力データは、第5の実施形態における結合層の出力データと同一になる。よって、本実施形態における結合層の出力データは、分割対象層の次の層への入力データとして使用することができる。
【0169】
前層並べ替え部61は、チャネル並べ替え部51によって並べ替えられたチャネルの順番に従って、分割対象層の前層の重み値群のカーネルを並べ替えるときに、上述の並べ替え情報を参照して、カーネルを並べ替えればよい。並べ替え情報は、分割対象層の重み値群に含まれる各チャネルの並べ替え前の順番および並べ替え後の順番を示している。従って、前層並べ替え部61は、並べ替え情報に基づいて、並べ替え後のチャネルの順番に従って、分割対象等の前層の重み値群に含まれるカーネルを並べ替えることができる。
【0170】
チャネル並べ替え部51、前層並べ替え部61、分割位置決定部41、分割部42および結合層追加部43は、例えば、ニューラルネットワークモデル変換プログラムに従って動作するコンピュータのCPUによって実現される。例えば、CPUが、コンピュータのプログラム記憶装置等のプログラム記録媒体からニューラルネットワークモデル変換プログラムを読み込み、そのニューラルネットワークモデル変換プログラムに従って、チャネル並べ替え部51、前層並べ替え部61、分割位置決定部41、分割部42および結合層追加部43として動作すればよい。
【0171】
図29は、本発明の第6の実施形態の処理経過の例を示すフローチャートである。既に説明した事項については、説明を省略する。
図29に示すステップS51およびステップS41~S43は、第5の実施形態におけるステップS51およびステップS41~S43(
図25参照)と同様であり、詳細な説明を省略する。
【0172】
まず、チャネル並べ替え部51が、各チャネルに含まれる重み値“0”の数の多さに基づいて、分割対象層の重み値群に含まれるチャネルを並べ替える(ステップS51)。そして、チャネル並べ替え部51は、その重み値群に含まれる各チャネルの並べ替え前の順番および並べ替え後の順番を示す並べ替え情報を、前層並べ替え部61に送る。
【0173】
ステップS51の後、ニューラルネットワークモデル変換装置60は、チャネルの並べ替え後の重み値群に基づいて、ステップS41~S43を行う。
【0174】
ステップS43の後、前層並べ替え部61は、ステップS51で並べ替えられたチャネルの順番に従って、分割対象層の前層の重み値群のカーネルを並べ替える(ステップS53)。このとき、前層並べ替え部61は、並べ替え情報に基づいて、どのようにカーネルを並べ替えるのかを判定すればよい。
【0175】
なお、ニューラルネットワークモデル変換装置60は、ステップS51とステップS41との間で、ステップS53を実行してもよい。
【0176】
図30は、第6の実施形態における分割対象層および前層の変換を示す模式図である。
図26に示す層と同様の層には、
図26と同一の符号を付している。第6の実施形態では、分割対象層は、第1の層191、第2の層192および結合層183に変換される。また、分割対象層の前層は、前層並べ替え部61によって、カーネル並べ替え後の前層195に変換される。入力データと第1の層191の重み値群との畳み込み演算を高速デバイスに実行させ、入力データと第2の層192の重み値群との畳み込み演算を一般的なデバイスに実行させることで、ニューラルネットワークモデルを用いた演算を高速化できる。また、カーネル並べ替え後の前層195が設けられていることによって、ニューラルネットワークモデルの変換を行わない場合における分割対象層の出力データと、結合層183で得られる出力データは、同一になる。従って、分割対象層および前層が
図30に示すように変換されたとしても、ニューラルネットワークモデル全体としての演算結果は変化しない。従って、高速デバイスを効果的に利用しやすくするように、ニューラルネットワークモデルを変換することができる。
【0177】
なお、ニューラルネットワークモデルに、分割対象層が複数存在してもよい。そして、異なる分割対象層に対して、本発明の異なる実施形態が適用されてもよい。ただし、第3の実施形態の「次層」と第6の実施形態の「前層」とが重なるように、複数の分割対象層を定めることはできない。
【0178】
図31は、本発明の実施形態のニューラルネットワークモデル変換装置に係るコンピュータの構成例を示す概略ブロック図である。コンピュータ1000は、CPU1001と、主記憶装置1002と、補助記憶装置1003と、インタフェース1004とを備える。
【0179】
本発明の各実施形態のニューラルネットワークモデル変換装置は、例えば、コンピュータ1000によって実現される。ニューラルネットワークモデル変換装置の動作は、ニューラルネットワークモデル変換プログラムの形式で補助記憶装置1003に記憶されている。CPU1001は、そのプログラムを読み出し、そのプログラムを主記憶装置1002に展開し、そのプログラムに従って、上記の各実施形態で説明した処理を実行する。
【0180】
補助記憶装置1003は、一時的でない有形の媒体の例である。一時的でない有形の媒体の他の例として、インタフェース1004を介して接続される磁気ディスク、光磁気ディスク、CD-ROM(Compact Disk Read Only Memory )、DVD-ROM(Digital Versatile Disk Read Only Memory )、半導体メモリ等が挙げられる。また、プログラムが通信回線によってコンピュータ1000に配信される場合、配信を受けたコンピュータ1000がそのプログラムを主記憶装置1002に展開し、そのプログラムに従って上記の各実施形態で説明した処理を実行してもよい。
【0181】
また、各構成要素の一部または全部は、汎用または専用の回路(circuitry )、プロセッサ等やこれらの組合せによって実現されてもよい。これらは、単一のチップによって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。各構成要素の一部または全部は、上述した回路等とプログラムとの組合せによって実現されてもよい。
【0182】
各構成要素の一部または全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントアンドサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。
【0183】
次に、本発明の概要について説明する。
図32は、本発明のニューラルネットワークモデル変換装置の概要を示すブロック図である。本発明のニューラルネットワークモデル変換装置は、分割位置決定手段701と、分割手段702と、結合層追加手段703とを備える。
【0184】
分割位置決定手段701(例えば、分割位置決定部11、分割位置決定部41)は、与えられたニューラルネットワークモデルに含まれる少なくとも1つの層の重み値群であって、少なくとも1つ以上の重み値をチャネル方向に並べることによって得られるカーネルをカーネル方向に並べた構成を有する重み値群における分割位置を決定する。
【0185】
分割手段702(例えば、分割部12、分割部42)は、分割位置で重み値群を分割することによって、複数の重み値群を得る。
【0186】
結合層追加手段703(例えば、結合層追加部13、結合層追加部43)は、その層への入力データと分割後のそれぞれの重み値群との演算によって得られるそれぞれの出力データを結合して1つの出力データにする結合層を追加する。
【0187】
そして、分割位置決定手段701は、重み値群に含まれる重み値の数に対する、0である重み値の数の割合をスパース度としたときに、分割後の少なくとも1つの重み値群が所定値以上のスパース度を有するように、分割前の重み値群における分割位置を決定する。
【0188】
そのような構成によって、高速デバイスを効果的に利用しやすくするように、ニューラルネットワークモデルを変換することができる。
【0189】
上記の本発明の実施形態は、以下の付記のようにも記載され得るが、以下に限定されるわけではない。
【0190】
(付記1)
与えられたニューラルネットワークモデルに含まれる少なくとも1つの層の重み値群であって、少なくとも1つ以上の重み値をチャネル方向に並べることによって得られるカーネルをカーネル方向に並べた構成を有する重み値群における分割位置を決定する分割位置決定手段と、
前記分割位置で前記重み値群を分割することによって、複数の重み値群を得る分割手段と、
前記層への入力データと分割後のそれぞれの重み値群との演算によって得られるそれぞれの出力データを結合して1つの出力データにする結合層を追加する結合層追加手段とを備え、
前記分割位置決定手段は、重み値群に含まれる重み値の数に対する、0である重み値の数の割合をスパース度としたときに、分割後の少なくとも1つの重み値群が所定値以上のスパース度を有するように、分割前の重み値群における分割位置を決定する
ことを特徴とするニューラルネットワークモデル変換装置。
【0191】
(付記2)
前記分割位置決定手段は、分割前の重み値群をカーネル方向に分割するように、分割位置を決定し、
前記分割手段は、分割前の重み値群を前記分割位置で分割し、
前記結合層追加手段は、前記入力データと分割後のそれぞれの重み値群との演算によって得られるそれぞれの出力データを、チャネル方向に連結することによって1つの出力データにする結合層を追加する
付記1に記載のニューラルネットワークモデル変換装置。
【0192】
(付記3)
所定の基準に従って、分割前の重み値群に含まれるカーネルを並べ替えるカーネル並べ替え手段を備え、
前記分割位置決定手段は、カーネルの並べ替え後の重み値群をカーネル方向に分割するように、分割位置を決定し、
前記分割手段は、分割前の重み値群を前記分割位置で分割し、
前記結合層追加手段は、前記入力データと分割後のそれぞれの重み値群との演算によって得られるそれぞれの出力データを、チャネル方向に連結することによって1つの出力データにする結合層を追加し、
前記カーネル並べ替え手段による並べ替えによるカーネルの順番の変化に基づいて、カーネルの並べ替え前の重み値群におけるカーネルの順番に対応するように、前記1つの出力データのチャネルを並べ替える出力データ並べ替え層を追加する出力データ並べ替え層追加手段を備える
付記1または付記2に記載のニューラルネットワークモデル変換装置。
【0193】
(付記4)
所定の基準に従って、分割前の重み値群に含まれるカーネルを並べ替えるカーネル並べ替え手段と、
前記カーネル並べ替え手段によって並べ替えられたカーネルの順番に従って、重み値群が分割される層の次の層の重み値群のチャネルを並べ替える次層並べ替え手段とを備え、
前記分割位置決定手段は、カーネルの並べ替え後の重み値群をカーネル方向に分割するように、分割位置を決定し、
前記分割手段は、分割前の重み値群を前記分割位置で分割し、
前記結合層追加手段は、前記入力データと分割後のそれぞれの重み値群との演算によって得られるそれぞれの出力データを、チャネル方向に連結することによって1つの出力データにする結合層を追加する
付記1または付記2に記載のニューラルネットワークモデル変換装置。
【0194】
(付記5)
前記カーネル並べ替え手段は、0である重み値の数の降順または昇順に、分割前の重み値群に含まれるカーネルを並べ替える
付記3または付記4に記載のニューラルネットワークモデル変換装置。
【0195】
(付記6)
前記分割位置決定手段は、分割前の重み値群をチャネル方向に分割するように、分割位置を決定し、
前記分割手段は、分割前の重み値群を前記分割位置で分割し、
前記結合層追加手段は、前記入力データと分割後のそれぞれの重み値群との演算によって得られるそれぞれの出力データにおいて、対応する要素同士を加算することによって1つの出力データを導出する結合層を追加する
付記1に記載のニューラルネットワークモデル変換装置。
【0196】
(付記7)
所定の基準に従って、分割前の重み値群に含まれるチャネルを並べ替えるチャネル並べ替え手段と、
前記チャネル並べ替え手段によって並べ替えられたチャネルの順番に従って、前記入力データのチャネルを並べ替える入力データ並べ替え層を追加する入力データ並べ替え層追加手段とを備え、
前記分割位置決定手段は、チャネルの並べ替え後の重み値群をチャネル方向に分割するように、分割位置を決定し、
前記分割手段は、分割前の重み値群を前記分割位置で分割し、
前記結合層追加手段は、前記入力データと分割後のそれぞれの重み値群との演算によって得られるそれぞれの出力データにおいて、対応する要素同士を加算することによって1つの出力データを導出する結合層を追加する
付記1または付記6に記載のニューラルネットワークモデル変換装置。
【0197】
(付記8)
所定の基準に従って、分割前の重み値群に含まれるチャネルを並べ替えるチャネル並べ替え手段と、
前記チャネル並べ替え手段によって並べ替えられたチャネルの順番に従って、重み値群が分割される層の前の層の重み値群のカーネルを並べ替える前層並べ替え手段とを備え、
前記分割位置決定手段は、チャネルの並べ替え後の重み値群をチャネル方向に分割するように、分割位置を決定し、
前記分割手段は、分割前の重み値群を前記分割位置で分割し、
前記結合層追加手段は、前記入力データと分割後のそれぞれの重み値群との演算によって得られるそれぞれの出力データにおいて、対応する要素同士を加算することによって1つの出力データを導出する結合層を追加する
付記1または付記6に記載のニューラルネットワークモデル変換装置。
【0198】
(付記9)
前記チャネル並べ替え手段は、0である重み値の数の降順または昇順に、分割前の重み値群に含まれるチャネルを並べ替える
付記7または付記8に記載のニューラルネットワークモデル変換装置。
【0199】
(付記10)
コンピュータが、
与えられたニューラルネットワークモデルに含まれる少なくとも1つの層の重み値群であって、少なくとも1つ以上の重み値をチャネル方向に並べることによって得られるカーネルをカーネル方向に並べた構成を有する重み値群における分割位置を決定する分割位置決定処理、
前記分割位置で前記重み値群を分割することによって、複数の重み値群を得る分割処理、および、
前記層への入力データと分割後のそれぞれの重み値群との演算によって得られるそれぞれの出力データを結合して1つの出力データにする結合層を追加する結合層追加処理を実行し、
前記分割位置決定処理で、重み値群に含まれる重み値の数に対する、0である重み値の数の割合をスパース度としたときに、分割後の少なくとも1つの重み値群が所定値以上のスパース度を有するように、分割前の重み値群における分割位置を決定する
ことを特徴とするニューラルネットワークモデル変換方法。
【0200】
(付記11)
前記コンピュータが、
前記分割位置決定処理で、分割前の重み値群をカーネル方向に分割するように、分割位置を決定し、
前記分割処理で、分割前の重み値群を前記分割位置で分割し、
前記結合層追加処理で、前記入力データと分割後のそれぞれの重み値群との演算によって得られるそれぞれの出力データを、チャネル方向に連結することによって1つの出力データにする結合層を追加する
付記10に記載のニューラルネットワークモデル変換方法。
【0201】
(付記12)
前記コンピュータが、
前記分割位置決定処理で、分割前の重み値群をチャネル方向に分割するように、分割位置を決定し、
前記分割処理で、分割前の重み値群を前記分割位置で分割し、
前記結合層追加処理で、前記入力データと分割後のそれぞれの重み値群との演算によって得られるそれぞれの出力データにおいて、対応する要素同士を加算することによって1つの出力データを導出する結合層を追加する
付記10に記載のニューラルネットワークモデル変換方法。
【0202】
(付記13)
コンピュータに、
与えられたニューラルネットワークモデルに含まれる少なくとも1つの層の重み値群であって、少なくとも1つ以上の重み値をチャネル方向に並べることによって得られるカーネルをカーネル方向に並べた構成を有する重み値群における分割位置を決定する分割位置決定処理、
前記分割位置で前記重み値群を分割することによって、複数の重み値群を得る分割処理、および、
前記層への入力データと分割後のそれぞれの重み値群との演算によって得られるそれぞれの出力データを結合して1つの出力データにする結合層を追加する結合層追加処理を実行させ、
前記分割位置決定処理で、重み値群に含まれる重み値の数に対する、0である重み値の数の割合をスパース度としたときに、分割後の少なくとも1つの重み値群が所定値以上のスパース度を有するように、分割前の重み値群における分割位置を決定させる
ニューラルネットワークモデル変換プログラムを記録したコンピュータ読取可能な記録媒体。
【0203】
(付記14)
前記コンピュータに、
前記分割位置決定処理で、分割前の重み値群をカーネル方向に分割するように、分割位置を決定させ、
前記分割処理で、分割前の重み値群を前記分割位置で分割させ、
前記結合層追加処理で、前記入力データと分割後のそれぞれの重み値群との演算によって得られるそれぞれの出力データを、チャネル方向に連結することによって1つの出力データにする結合層を追加させる
ニューラルネットワークモデル変換プログラムを記録した付記13に記載のコンピュータ読取可能な記録媒体。
【0204】
(付記15)
前記コンピュータに、
前記分割位置決定処理で、分割前の重み値群をチャネル方向に分割するように、分割位置を決定させ、
前記分割処理で、分割前の重み値群を前記分割位置で分割させ、
前記結合層追加処理で、前記入力データと分割後のそれぞれの重み値群との演算によって得られるそれぞれの出力データにおいて、対応する要素同士を加算することによって1つの出力データを導出する結合層を追加させる
ニューラルネットワークモデル変換プログラムを記録した付記13に記載のコンピュータ読取可能な記録媒体。
【0205】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記の実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【産業上の利用の可能性】
【0206】
本発明は、ニューラルネットワークモデルを変換するニューラルネットワークモデル変換装置に好適に適用される。
【符号の説明】
【0207】
10,20,30,40,50,60 ニューラルネットワークモデル変換装置
11 分割位置決定部
12 分割部
13 結合層追加部
21 カーネル並べ替え部
22 出力データ並べ替え層追加部
31 次層並べ替え部
41 分割位置決定部
42 分割部
43 結合層追加部
51 チャネル並べ替え部
52 入力データ並べ替え層追加部
61 前層並べ替え部