(57)【要約】【課題】ニューラルネットワークの全結合層を、畳み込み層に置き換えることによって、乗算回数及び重みパラメータ数を大幅に削減することができるプログラムを提供する。【解決手段】M次元の１階テンソルからN次元の１階テンソルへ変換する全結合層を、畳み込み層に置き換えるようにコンピュータを機能させるプログラムであって、M次元の１階テンソルを、２階テンソルに並び替える入力並び替え手段と、並び替えられた２階テンソルに対して、畳み込みによって、第１の２階テンソルに変換する第１方向畳み込み手段と、第１の２階テンソルを転置する転置手段と、転置された第１の２階テンソルに対して、畳み込みによって、第２の２階テンソルに変換する第２方向畳み込み手段と、第２の２階テンソルを、N次元の１階テンソルに並び替える出力並び替え手段として機能させる。【選択図】図４
2020024524.tif 000002
【特許請求の範囲】
【請求項１】
M次元の１階テンソルからN次元の１階テンソルへ変換する全結合層を、畳み込み層に置き換えるようにコンピュータを機能させるプログラムであって、
M次元の１階テンソルを、２階テンソルに並び替える入力並び替え手段と、
並び替えられた２階テンソルに対して、畳み込みによって、第１の２階テンソルに変換する第１方向畳み込み手段と、
第１の２階テンソルを転置する転置手段と、
転置された第１の２階テンソルに対して、畳み込みによって、第２の２階テンソルに変換する第２方向畳み込み手段と、
第２の２階テンソルを、N次元の１階テンソルに並び替える出力並び替え手段と
してコンピュータを機能させることを特徴とするプログラム。
【請求項２】
M及びNの公約数となる次元数d（<M,<N）を設定し、
前記入力並び替え手段は、M次元の１階テンソルを、(d,M/d)次元の２階テンソルに並び替え、
第１方向畳み込み手段は、(d,M/d)次元の２階テンソルに対して、フィルタカーネルのサイズを1とする１次元畳み込みによって、(d,N/d)次元の第１の２階テンソルに変換し、
前記転置手段は、(d,N/d)次元の第１の２階テンソルを、(N/d,d)次元の２階テンソルに転置し、
第２方向畳み込み手段は、転置された(N/d,d)次元の２階テンソルに対して、フィルタカーネルのサイズを1とする１次元畳み込みによって、(N/d,d)次元の第２の２階テンソルに変換し、
前記出力並び替え手段は、(N/d,d)次元の第２の２階テンソルを、N次元の１階テンソルに並び替える
ようにコンピュータを機能させることを特徴とする請求項１に記載のプログラム。
【請求項３】
M及びNの公約数となる次元数d（<M,<N）を設定し、
前記入力並び替え手段は、M次元の１階テンソルを、(M/d,d)次元の２階テンソルに並び替え、
第１方向畳み込み手段は、(M/d,d)次元の２階テンソルに対して、フィルタカーネルのサイズを1とする１次元畳み込みによって、(M/d,d)次元の第１の２階テンソルに変換し、
前記転置手段は、(M/d,d)次元の第１の２階テンソルを、(d,M/d)次元の２階テンソルに転置し、
第２方向畳み込み手段は、転置された(d,M/d)次元の２階テンソルに対して、フィルタカーネルのサイズを1とする１次元畳み込みによって、(d,N/d)次元の第２の２階テンソルに変換し、
前記出力並び替え手段は、(d,N/d)次元の第２の２階テンソルを、N次元の１階テンソルに並び替える
ようにコンピュータを機能させることを特徴とする請求項１に記載のプログラム。
【請求項４】
N／M＝r1×r2のr1,r2が自然数として成立し、且つ、d×r1及びr2×M／dの両方が自然数として成立する場合、
第１方向畳み込み手段は、（M/d,d×r1）次元の第１の２階テンソルに変換し、
前記転置手段は、(d×r1,M/d)次元の２階テンソルに転置し、
第２方向畳み込み手段は、(d×r1,r2×M/d)次元の第２の２階テンソルに変換し、
前記出力並び替え手段は、(d×r1,r2×M/d)次元の第２の２階テンソルを、N次元の１階テンソルに並び替える
ようにコンピュータを機能させることを特徴とする請求項３に記載のプログラム。
【請求項５】
M次元の１階テンソルからN次元の１階テンソルへ変換する全結合層を、畳み込み層に置き換えるようにコンピュータを機能させるプログラムであって、
M次元の１階テンソルを、３階テンソルに並び替える入力並び替え手段と、
並び替えられた３階テンソルに対して、畳み込みによって、第１の３階テンソルに変換する第１方向畳み込み手段と、
第１の３階テンソルを転置する第１の転置手段と、
転置された第１の３階テンソルに対して、畳み込みによって、第２の３階テンソルに変換する第２方向畳み込み手段と、
第２の３階テンソルを転置する第２の転置手段と、
転置された第２の３階テンソルに対して、畳み込みによって、第３の３階テンソルに変換する第３方向畳み込み手段と、
第３の３階テンソルを、N次元の１階テンソルに並び替える出力並び替え手段と
してコンピュータを機能させることを特徴とするプログラム。
【請求項６】
M及びNの公約数となる次元数d1及びd2（<M,<N）を設定し、
前記入力並び替え手段は、M次元の１階テンソルを、(d1,d2,M/(d1×d2))次元の３階テンソルに並び替え、
第１方向畳み込み手段は、(d1,d2,M/(d1×d2))次元の３階テンソルに対して、フィルタカーネルのサイズを(1,1)とする２次元畳み込みによって、(d1,d2,N/(d1×d2))次元の３階テンソルに変換し、
第１の転置手段は、(d1,d2,N/(d1×d2))次元の３階テンソルについて、(d2,N/(d1×d2),d1)次元の３階テンソルに転置し、
第２方向畳み込み手段は、(d2,N/(d1×d2),d1)次元の３階テンソルに対して、フィルタカーネルのサイズを(1,1)とする２次元畳み込みによって、(d2,N/(d1×d2),d1)次元の３階テンソルに変換し、
第２の転置手段は、(d2,N/(d1×d2),d1)次元の３階テンソルについて、(N/(d1×d2),d1,d2)次元の３階テンソルに転置し、
第３方向畳み込み手段は、(N/(d1×d2),d1,d2)次元の３階テンソルに対して、フィルタカーネルのサイズを(1,1)とする２次元畳み込みによって、(N/(d1×d2),d1,d2)次元の３階テンソルに変換し、
前記出力並び替え手段は、(N/(d1×d2),d1,d2)次元の３階テンソルを、N次元の１階テンソルに並び替える
ようにコンピュータを機能させることを特徴とする請求項５に記載のプログラム。
【請求項７】
畳み込み層に置き換えるべき全結合層は、ＧＡＮ(Generative Adversarial Networks)のGeneratorに基づくものである
ようにコンピュータを機能させることを特徴とする請求項１から６のいずれか１項に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ニューラルネットワーク(Neural Network)の技術に関する。特に、モバイルや組み込み機器等の小型デバイスに適する。
【背景技術】
【０００２】
ニューラルネットワークとは、生体の脳における特性を計算機上のシミュレーションによって表現することを目指した数学モデルをいう。このモデルは、シナプスの結合によってネットワークを形成した人工ニューロン（ユニット）が、学習によってシナプスの結合強度を変化させ、問題解決能力を持つようになる。
画像におけるニューラルネットワークによれば、機械学習の工程の中で、全結合層(Fully Connected Layer)と、畳み込み層(Convolutional Layer)とを組み合わせる。全結合層は、全ての入力ノードを、出力ノード毎に線形結合させる。畳み込み層は、画素毎に隣接画素と合わせて、画素間で共通のフィルタを適用して特徴量を出力する。
【０００３】
近年、ニューラルネットワークの中では、ＧＡＮ（Generative Adversarial Network、敵対的生成ネットワーク）が注目されている。ＧＡＮは、教師なし機械学習として、ゼロサムゲームフレームワークで互いに競合する２つのニューラルネットワークによって実装される。
【０００４】
図１は、ＧＡＮの基本構成図である。
【０００５】
ＧＡＮは、以下の２つのネットワークによって構成される。
「生成器Ｇ(Generator)」：
識別器Ｄが本物と識別する（欺く）ように敵対的に学習する。
「識別器Ｄ(Discriminator)」：
生成器Ｇから出力された生成画像(Fake)と、本物画像（学習サンプル）とを見分けるように学習する。
生成器Ｇ及び識別器Ｄの学習を交互に繰り返すことによって、結果的に、生成器Ｇは、本物画像(Real)と見分けがつかない画像(Fake)を生成できるようになる。
【０００６】
ＧＡＮの代表例として、ＤＣＧＡＮ(Deep Convolutional GAN)がある。ＤＣＧＡＮは、生成器Ｇ及び識別器Ｄを、全結合層(Dense)と２次元畳み込み層(Conv2D)との組み合わせによって構成する。
識別器Ｄは、ニューラルネットワークによる一般的な画像分類器と同様に、段階的に解像度を下げながら、２次元畳み込み層(Conv2D)を適用することによって、画素単位のエッジなどの特徴を抽出した特徴量マップを生成する。その特徴マップを、全結合層(Dense)へ入力し、最終的な画像分類の結果を出力する。
ＧＡＮの識別器Ｄは、本物に近い画像ほど１に近い値を出力し、偽物に近い画像ほど０に近い値を出力する。
【０００７】
識別器Ｄの学習時は、本物画像（学習サンプル）の分類結果を１とし、生成器Ｇから出力された生成画像の分類結果を０とするように学習する。
また、生成器Ｇの学習時には、生成器Ｇから出力された生成画像を識別器Ｄで分類し、その結果が１となるように、識別器Ｄの重みパラメータを固定して生成器Ｇのみ学習する。
【０００８】
図２は、生成器Ｇの構成図である。
【０００９】
生成器Ｇは、例えば以下のステップを実行する。即ち、識別器Ｄとは逆向きとなる。
生成器Ｇの全結合層(Dense)は、例えば128次元の１階テンソル（ベクトル、潜在変数）を入力する。
最初の全結合層(Dense)で例えば2048次元に変換し、次の全結合層(Dense)で例えば256×7×7次元に変換する。
次に、画像の特徴量マップの形である次元数(7,7,256)の３階テンソルに整列する。
段階的に解像度を上げながら、２次元畳み込み層(Conv2D)によって画像を精細化する。そして、例えば次元数(56,56,3)の３階テンソルで表された画像を生成する。
【００１０】
図３は、従来技術における乗算回数及び重みパラメータ数を表す説明図である。
【００１１】
図３によれば、全結合層(Dense)によって、2048(=M）次元の１階テンソルから、256×7×7(=N)次元に変換されている。
この場合、乗算回数は、M×N＝2,048×256×7×7＝25,690,112回となる。
同様に、重みパラメータ数も、M×N＝2,048×256×7×7＝25,690,112回となる。
データ量としては、単精度浮動小数(32ビット)の場合、約103MBとなる。
【００１２】
ここで、ＤＣＧＡＮを例えば小型デバイスで実行させる場合、生成器Ｇにおける乗算回数や重みパラメータ数が多くなるほど、メモリ消費量や、重みパラメータのダウンロードの通信量の観点から、好ましくない。
また、小型デバイスの場合、ニューラルネットワークを動作させるためのフレームワークが多様化している。例えばCore ML(iOS), TensorFlow Lite(Android), TensorFlow.js (JavaScript（登録商標）)等がある。そのために、フレームワークに依存するレイヤ実装は、極力避けることが好ましい。
【００１３】
従来、全結合層(Dense)と同等の機能を提供するために、全結合層(Dense)の重みパラメータ行列を近似することによって、重みパラメータ数を削減する技術がある。例えば特異値分解(Singular Value Decomposition; SVD)（例えば非特許文献１）や、クロネッカー積(Kronecker Product)（例えばは非特許文献２）がある。
また、コードブックを用いて、全結合層(Dense)の重みパラメータ行列を近似して精度を高める技術もある（例えば特許文献１参照）。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開２０１８−０５５２６０号公報
【非特許文献】
【００１５】
【非特許文献１】E. Denton et al, "Exploiting linear structure within convolutional networks for efficient evaluation," Proceedings of the 27th International Conference on Neural Information Processing Systems (NIPS ’14), Vol. 1, Dec. 2014.
【非特許文献２】S. Zhou et al, "Compression of fully-connected layer in neural network by Kronecker product," Eighth International Conference on Advanced Computational Intelligence (ICACI 2016), Feb. 2016.
【非特許文献３】A. Radford et al, "Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks," Fourth International Conference on Learning Representations (ICLR 2016), May 2016.
【非特許文献４】V. Lebedev, et.al., "Speeding-up Convolutional Neural Networks Using Fine-tuned CP-Decomposition," Third International Conference on Learning Representations (ICLR 2015), May 2015.
【発明の概要】
【発明が解決しようとする課題】
【００１６】
前述した特許文献１によれば、全結合層(Dense)を精度高く近似しつつ、保存すべき重みパラメータのバイト数を大幅に削減できる。しかしながら、実際の処理時には、コードブックに応じた再構成処理が必要となり、そのための独自拡張レイヤの実装が必要となる。
また、前述した非特許文献１及び２によれば、モデル内での重みパラメータ数を削減することができる。しかしながら、特異値分解やクロネッカー積のような、一般的なニューラルネットワークのフレームワークには通常含まれない特別な行列演算を必要とする。このため、一部のフレームワークを除き、独自拡張レイヤとしてこれらの演算を実装する必要がある。また、重みパラメータのモバイル向けフォーマット変換も困難となる。
【００１７】
そこで、本発明によれば、再構成や特別な行列演算のためのカスタムレイヤの実装を必要とすることなく、ニューラルネットワークの全結合層を畳み込み層に置き換えることによって、乗算回数及び重みパラメータ数を大幅に削減することができるプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１８】
本発明によれば、M次元の１階テンソルからN次元の１階テンソルへ変換する全結合層を、畳み込み層に置き換えるようにコンピュータを機能させるプログラムであって、
M次元の１階テンソルを、２階テンソルに並び替える入力並び替え手段と、
並び替えられた２階テンソルに対して、畳み込みによって、第１の２階テンソルに変換する第１方向畳み込み手段と、
第１の２階テンソルを転置する転置手段と、
転置された第１の２階テンソルに対して、畳み込みによって、第２の２階テンソルに変換する第２方向畳み込み手段と、
第２の２階テンソルを、N次元の１階テンソルに並び替える出力並び替え手段と
してコンピュータを機能させることを特徴とする。
【００１９】
本発明にプログラムにおける他の実施形態によれば、
M及びNの公約数となる次元数d（<M,<N）を設定し、
入力並び替え手段は、M次元の１階テンソルを、(d,M/d)次元の２階テンソルに並び替え、
第１方向畳み込み手段は、(d,M/d)次元の２階テンソルに対して、フィルタカーネルのサイズを1とする１次元畳み込みによって、(d,N/d)次元の第１の２階テンソルに変換し、
転置手段は、(d,N/d)次元の第１の２階テンソルを、(N/d,d)次元の２階テンソルに転置し、
第２方向畳み込み手段は、転置された(N/d,d)次元の２階テンソルに対して、フィルタカーネルのサイズを1とする１次元畳み込みによって、(N/d,d)次元の第２の２階テンソルに変換し、
出力並び替え手段は、(N/d,d)次元の第２の２階テンソルを、N次元の１階テンソルに並び替える
ようにコンピュータを機能させることも好ましい。
【００２０】
本発明にプログラムにおける他の実施形態によれば、
M及びNの公約数となる次元数d（<M,<N）を設定し、
入力並び替え手段は、M次元の１階テンソルを、(M/d,d)次元の２階テンソルに並び替え、
第１方向畳み込み手段は、(M/d,d)次元の２階テンソルに対して、フィルタカーネルのサイズを1とする１次元畳み込みによって、(M/d,d)次元の第１の２階テンソルに変換し、
転置手段は、(M/d,d)次元の第１の２階テンソルを、(d,M/d)次元の２階テンソルに転置し、
第２方向畳み込み手段は、転置された(d,M/d)次元の２階テンソルに対して、フィルタカーネルのサイズを1とする１次元畳み込みによって、(d,N/d)次元の第２の２階テンソルに変換し、
出力並び替え手段は、(d,N/d)次元の第２の２階テンソルを、N次元の１階テンソルに並び替える
ようにコンピュータを機能させることも好ましい。
【００２１】
本発明にプログラムにおける他の実施形態によれば、
N／M＝r1×r2のr1,r2が自然数として成立し、且つ、d×r1及びr2×M／dの両方が自然数として成立する場合、
第１方向畳み込み手段は、（M/d,d×r1）次元の第１の２階テンソルに変換し、
転置手段は、(d×r1,M/d)次元の２階テンソルに転置し、
第２方向畳み込み手段は、(d×r1,r2×M/d)次元の第２の２階テンソルに変換し、
出力並び替え手段は、(d×r1,r2×M/d)次元の第２の２階テンソルを、N次元の１階テンソルに並び替える
ようにコンピュータを機能させることも好ましい。
【００２２】
本発明によれば、M次元の１階テンソルからN次元の１階テンソルへ変換する全結合層を、畳み込み層に置き換えるようにコンピュータを機能させるプログラムであって、
M次元の１階テンソルを、３階テンソルに並び替える入力並び替え手段と、
並び替えられた３階テンソルに対して、畳み込みによって、第１の３階テンソルに変換する第１方向畳み込み手段と、
第１の３階テンソルを転置する第１の転置手段と、
転置された第１の３階テンソルに対して、畳み込みによって、第２の３階テンソルに変換する第２方向畳み込み手段と、
第２の３階テンソルを転置する第２の転置手段と、
転置された第２の３階テンソルに対して、畳み込みによって、第３の３階テンソルに変換する第３方向畳み込み手段と、
第３の３階テンソルを、N次元の１階テンソルに並び替える出力並び替え手段と
してコンピュータを機能させることを特徴とする。
【００２３】
本発明のプログラムにおける他の実施形態によれば、
M及びNの公約数となる次元数d1及びd2（<M,<N）を設定し、
入力並び替え手段は、M次元の１階テンソルを、(d1,d2,M/(d1×d2))次元の３階テンソルに並び替え、
第１方向畳み込み手段は、(d1,d2,M/(d1×d2))次元の３階テンソルに対して、フィルタカーネルのサイズを(1,1)とする２次元畳み込みによって、(d1,d2,N/(d1×d2))次元の３階テンソルに変換し、
第１の転置手段は、(d1,d2,N/(d1×d2))次元の３階テンソルについて、(d2,N/(d1×d2),d1)次元の３階テンソルに転置し、
第２方向畳み込み手段は、(d2,N/(d1×d2),d1)次元の３階テンソルに対して、フィルタカーネルのサイズを(1,1)とする２次元畳み込みによって、(d2,N/(d1×d2),d1)次元の３階テンソルに変換し、
第２の転置手段は、(d2,N/(d1×d2),d1)次元の３階テンソルについて、(N/(d1×d2),d1,d2)次元の３階テンソルに転置し、
第３方向畳み込み手段は、(N/(d1×d2),d1,d2)次元の３階テンソルに対して、フィルタカーネルのサイズを(1,1)とする２次元畳み込みによって、(N/(d1×d2),d1,d2)次元の３階テンソルに変換し、
出力並び替え手段は、(N/(d1×d2),d1,d2)次元の３階テンソルを、N次元の１階テンソルに並び替える
ようにコンピュータを機能させることも好ましい。
【００２４】
本発明のプログラムにおける他の実施形態によれば、
畳み込み層に置き換えるべき全結合層は、ＧＡＮ(Generative Adversarial Networks)のGeneratorに基づくものである
ようにコンピュータを機能させることも好ましい。
【発明の効果】
【００２５】
本発明のプログラムによれば、再構成や特別な行列演算のためのカスタムレイヤの実装を必要とすることなく、ニューラルネットワークの全結合層を畳み込み層に置き換えることによって、乗算回数及び重みパラメータ数を大幅に削減することができる。
【図面の簡単な説明】
【００２６】
【図１】ＧＡＮの基本構成図である。
【図２】生成器Ｇの構成図である。
【図３】従来技術における乗算回数及び重みパラメータ数を表す説明図である。
【図４】本発明における２段階の１次元畳み込みに分解した機能構成図である。
【図５】本発明におけるテンソルの並びを表す第１の説明図である。
【図６】本発明におけるテンソルの並びを表す第２の説明図である。
【図７】本発明における乗算回数及び重みパラメータ数を表す説明図である。
【図８】本発明における３段階の２次元畳み込みに分解した機能構成図である。
【発明を実施するための形態】
【００２７】
以下、本発明の実施の形態について、図面を用いて詳細に説明する。
【００２８】
前提として、本発明は、重みパラメータを削減したモデルに対して直接的に学習するものであって、学習済みモデルの重みパラメータを削減するものではない。
【００２９】
畳み込み層の場合、フィルタのカーネルを分解することによって、重みパラメータを削減する技術がある。例えばCanonical Polyadic (CP)分解の技術がある（例えば非特許文献４参照）。この技術は、４階テンソルとして表されるカーネルを、４段階の２階テンソルに分解して、それぞれによる畳み込み層を重ね合わせるものである。
畳み込み層のカーネル分解は、サイズを縮小した複数のカーネルへ分解するために、複数の畳み込み層への変換となり、独自レイヤの追加などはほとんど発生しない。
【００３０】
これに対し、全結合層の場合、同様の分解はできない。そのために、全結合層を、何らかの畳み込み層に置き換えることによって分解して、重みパラメータを削減する必要がある。
【００３１】
まず、全結合層は、１次元畳み込み層(Conv1D)で、同等の変換として置き換えることができる。具体的には、全結合層は、次元数Mの１階テンソルを入力し、次元数(1,M)の２階テンソルへの並び替えと、１次元畳み込みConv1D(N,1)と、次元数Nの１階テンソルへの並び替えとに置き換えられる。尚、Conv1D(D,K)について、Dは変換後の次元数、Kはフィルタのカーネルサイズとする。
【００３２】
ニューラルネットワークによれば、次元数(A,B)の２階テンソルは、「各々がB個の特徴量を持ったA個の１次元の要素」として扱い、１次元畳み込みを適用する。１次元畳み込み層(Conv1D)では、隣接する要素間でフィルタを適用したり、特徴量の次元数をBからCに変換したりするなどの演算を、一度の行列乗算によって実行する。
この置き換えでは、前述した図３と同様に、乗算回数も重みパラメータ数も同じである。即ち、乗算回数及び重みパラメータ数はいずれも、M×Nとなり、2,048次元から256×7×7次元への変換であれば、前述のとおり25,690,112となる。
【００３３】
本発明によれば、多数の重みパラメータを持つ全結合層の機能を、複数チャネルの１次元畳み込み層と行列の転置と並び替えとに置き換えることによって、既存のニューラルネットワークで特殊な拡張レイヤを加えることなく、少ない重みパラメータ数で実現することができる。
【００３４】
本発明によれば、以下の２つの実施形態がある。
＜第１の実施形態＞  全結合層を２段階の１次元畳み込みに分解したもの
＜第２の実施形態＞  全結合層を３段階の２次元畳み込みに分解したもの
【００３５】
＜第１の実施形態＞
図４は、本発明における２段階の１次元畳み込みに分解した機能構成図である。
【００３６】
第１の実施形態によれば、全結合層を、２段階の１次元畳み込みに分解したものである。図４のプログラムの構成によれば、M次元の１階テンソルからN次元の１階テンソルへ変換する全結合層を、畳み込み層に置き換えるようにコンピュータを機能させる。
図４によれば、全結合層は、入力並び替え部１１と、第１方向畳み込み部１２と、転置部１３と、第２方向畳み込み部１４と、出力並び替え部１５とに置き換えられる。これら機能構成部は、装置に搭載されたコンピュータを機能させるプログラムを実行することによって実現される。
【００３７】
入力並び替え部１１は、M次元の１階テンソルを、２階テンソルに並び替える。
第１方向畳み込み部１２は、並び替えられた２階テンソルに対して、畳み込みによって、第１の２階テンソルに変換する。
転置部１３は、第１の２階テンソルを転置する。
第２方向畳み込み部１４は、転置された第１の２階テンソルに対して、畳み込みによって、第２の２階テンソルに変換する。
出力並び替え部１５は、第２の２階テンソルを、N次元の１階テンソルに並び替える。
【００３８】
第１の実施形態として、以下の２つのパターンがある。
＜第１−１の実施形態：第１方向畳み込み部１２が次元数の増減を実行＞
＜第１−２の実施形態：第２方向畳み込み部１４が次元数の増減を実行＞
【００３９】
＜第１−１の実施形態：第１方向畳み込み部１２が次元数の増減を実行＞
M次元の１階テンソルからN次元の１階テンソルへ変換する全結合層は、以下のように表される。
入力されるM次元の１階テンソル［ｍ0,ｍ1,・・・,ｍM］
出力されるN次元の１階テンソル［ｎ0,ｎ1,・・・,ｎN］
全結合層の１次元畳み込み層(Conv1D)の重みパラメータｗ(i,j,1)Conv1D
（フィルタのカーネルサイズ＝１）
ｎj＝Σiｗ(i,j,1)Conv1Dｍi
【００４０】
図５は、本発明におけるテンソルの並びを表す第１の説明図である。
【００４１】
［入力並び替え部１１］
入力並び替え部１１は、M次元の１階テンソルを、(d,M/d)次元の２階テンソルに並び替える（図５（ａ）参照））。ここで、次元数d（<M,<N）は、M及びNの公約数となるように設定する。
並び替え後の次元数(d,M/d)の２階テンソルの各要素は、以下のように表される。
ｍ'p,q  （p＝0,1,・・・,d-1、q＝0,1,・・・.M/d-1）
ｍ'p,q＝ｍpM/d+q
【００４２】
［第１方向畳み込み部１２］
第１方向畳み込み部１２は、(d,M/d)次元の２階テンソルに対して、フィルタカーネルのサイズを1とする１次元畳み込みConv1D_1(d,1)によって、(d,N/d)次元の第１の２階テンソルに変換する（図５（ｂ）参照））。
第１の２階テンソルの各要素は、以下のように表される。
ｌp,q  （p＝0,1,・・・,d-1、q＝0,1,・・・,N/d-1)
１次元畳み込み(Conv1D_1)の重みパラメータを、ｗ(i,j,k)Verとすると、以下のように表される。
ｌp,q＝Σy=0M/d-1ｗ(y,q,1)Verｍ'p,y
１次元畳み込み(Conv1D_1)における乗算回数及び重みパラメータ数は、以下のようになる。
乗算回数        ：M/d×N/d×d＝MN/d
重みパラメータ数：M/d×N/d＝MN/d2
第１方向畳み込み部１２におけるd×1次元の１次元畳み込みは、フィルタのカーネルサイズを１とし、隣接要素を交えたフィルタ演算は適用しない。
【００４３】
［転置部１３］
転置部１３は、(d,N/d)次元の第１の２階テンソルを、(N/d,d)次元の２階テンソルに転置する（図５（ｃ）参照））。
ｌp,qＴ＝ｌq,p
１回目の１次元畳み込み(Conv1D_1)によってqの階の次元に対して変換したために、次に、２回目の１次元畳み込みによってpの階の次元に対して変換することができるように転置する。
【００４４】
図６は、本発明におけるテンソルの並びを表す第２の説明図である。
【００４５】
［第２方向畳み込み部１４］
第２方向畳み込み部１４は、転置された(N/d,d)次元の２階テンソルに対して、フィルタカーネルのサイズを1とする１次元畳み込み(Conv1D_2)によって、(N/d,d)次元の第２の２階テンソルに変換する（図６（ａ）参照））。
出力される２階テンソルの各要素は、以下のように表される。
ｎ'p,q  （p＝0,1,・・・,N/d-1、q＝0,1,・・・,d-1)
ｎ'p,q＝Σx=0d-1ｗ(x,q,1)Horｌp,xＴ
＝Σx=0d-1ｗ(x,q,1)Horｌx,p
＝Σx=0d-1Σy=0M/d-1ｗ(x,q,1)Horｗ(y,p,1)Verｍ'x,y
これにより、各ｎ'p,qは、d×M/d＝M個の変数ｍx,yによる線形結合によって表される。
【００４６】
１次元畳み込み(Conv1D_2)における乗算回数及び重みパラメータ数は、以下のようになる。
乗算回数        ：d×d×N/d＝dN
重みパラメータ数：d2
第２方向畳み込み部１４における1×d次元の１次元畳み込みは、フィルタのカーネルサイズを１とし、隣接要素を交えたフィルタ演算は適用しない。
【００４７】
第２方向畳み込み部１４の畳み込み方向と、第１方向畳み込み部１２の畳み込み方向とは互い直交し、入力されたM次元の１階テンソルの全要素と、出力されるN次元の１階テンソルの全要素とが結合する。
第１方向畳み込み部１２(Conv1D_1)ではqの階の次元に対して変換し、第２方向畳み込み部１４(Conv1D_2)ではpの階の次元で変換する。結果として、ｎjを全てのｍiの線形結合の形となるようにし、元の全結合層を近似できるようにする。
【００４８】
［出力並び替え部１５］
出力並び替え部１５は、(N/d,d)次元の第２の２階テンソルを、N次元の１階テンソルに並び替える（図６（ｂ）参照））。
最終的に、ｎ'p,qを並べ替えて、以下のN次元の１階テンソルを出力する。
ｎ'0,0,ｎ'0,1,・・・,ｎ'0,d-1,・・・ｎ'N/d-1,d-1
【００４９】
図７は、本発明における全結合層機能の乗算回数及び重みパラメータ数を表す説明図である。
【００５０】
第１方向畳み込み部１２については、以下のようになる。
乗算回数        ：M/d×N/d×d＝MN/d
重みパラメータ数：M/d×N/d＝MN/d2
第２方向畳み込み部１４については、以下のようになる。
乗算回数        ：d×d×N/d＝dN
重みパラメータ数：d2
両方の畳み込み部について、加算する。
乗算回数        ：MN/d＋dN
重みパラメータ数：MN/d2＋d2
【００５１】
図７によれば、従来技術としての図３と同様に、全結合層(Dense)によって、2,048(=M）次元の１階テンソルから、256×7×7(=N)次元に変換されている。次元数d＝32とした場合、以下のように算出される。
乗算回数        ：MN/d＋dN＝2,048×(256×7×7)／32＋32×(256×7×7)
＝1,204,224（従来技術に対する4.69％）
重みパラメータ数：MN/d2＋d2＝2,048×(256×7×7)／(32×32)＋32×32
＝26,112（従来技術に対する0.10％）
このように、本発明の図７によれば、従来技術の図３と比較して、乗算回数及び重みパラメータ数が大幅に削減されることが理解できる。
【００５２】
尚、次元数dは、MとNの公約数であればよく、M<Nの場合に限らず、M=N, M>Nの場合でも、本発明を適用することができる。
【００５３】
本発明によれば、畳み込み層に置き換えるべき全結合層は、ＧＡＮ(Generative Adversarial Networks)の生成器(Generator)に基づくものに適する。即ち、小型デバイスにおける生成器の軽量化に適したものであり、本発明の全結合層の構成を必ずしも、識別器(Discriminator)にも適用する必要はない。識別器の全結合層に適用する場合、他の識別器の各層と同様に、例えばバッチ正規化は適用しない、等の注意事項が必要となる。また、識別器に適用した場合、生成器や識別器のオプティマイザに対して学習率等のパラメータを調整する必要がある。
勿論、本発明は、全結合層自体の乗算回数及び重みパラメータを削減するものであり、ＧＡＮ以外のニューラルネットワークによる機械学習全般に適用可能である。
【００５４】
＜第１−２の実施形態：第１方向畳み込み部１４が次元数の増減を実行＞
この場合も、M及びNの公約数となる次元数d（<M,<N）を設定する。
入力並び替え部１１は、M次元の１階テンソルを、(M/d,d)次元の２階テンソルに並び替える。
第１方向畳み込み部１２は、(M/d,d)次元の２階テンソルに対して、フィルタカーネルのサイズを1とする１次元畳み込みによって、(M/d,d)次元の第１の２階テンソルに変換する。
転置部１３は、(M/d,d)次元の第１の２階テンソルを、(d,M/d)次元の２階テンソルに転置する。
第２方向畳み込み部１４は、転置された(d,M/d)次元の２階テンソルに対して、フィルタカーネルのサイズを1とする１次元畳み込みによって、(d,N/d)次元の第２の２階テンソルに変換する。
出力並び替え部１５は、(d,N/d)次元の第２の２階テンソルを、N次元の１階テンソルに並び替える。
【００５５】
また、第１方向畳み込み部１２と第２方向畳み込み部１４とで、次元数の増減を分けるために、以下のようにすることもできる。
N／M＝r1×r2のr1,r2が自然数として成立し、且つ、d×r1及びr2×M／dの両方が自然数として成立するように、r1,r2を決定する。
入力並び替え部１１は、M次元の１階テンソルを、(M/d,d)次元の２階テンソルに並び替える。
第１方向畳み込み部１２は、（M/d,d×r1）次元の第１の２階テンソルに変換する。
転置部１３は、(d×r1,M/d)次元の２階テンソルに転置する。
第２方向畳み込み部１４は、(d×r1,r2×M/d)次元の第２の２階テンソルに変換する。
出力並び替え部１５は、(d×r1,r2×M/d)次元の第２の２階テンソルを、N次元の１階テンソルに並び替える。
【００５６】
＜第２の実施形態＞
図８は、本発明における３段階の２次元畳み込みに分解した機能構成図である。
【００５７】
第２の実施形態によれば、全結合層を、３段階の２次元畳み込みに分解したものである。そのために、第１の実施形態と比較して、２階テンソルの代わりに３階テンソルに並べ替え、１次元畳み込みConv1Dの代わりに２次元畳み込みConv2Dを用いる。また、フィルタのカーネルサイズは全て、２次元畳み込みConv2Dで(1,1)とする。
【００５８】
図８によれば、本発明のプログラムにおける全結合層は、入力並び替え部１１と、第１方向畳み込み部１２と、第１の転置部１３１と、第２方向畳み込み部１４と、第２の転置部１３２と、第３方向畳み込み部１６と、出力並び替え部１５とに置き換えられる。これら機能構成部は、装置に搭載されたコンピュータを機能させるプログラムを実行することによって実現される。
【００５９】
M及びNの公約数となる次元数d1及びd2（<M,<N）を設定する。
入力並び替え部１１は、M次元の１階テンソルを、３階テンソルに並び替える。具体的には、M次元の１階テンソルを、(d1,d2,M/(d1×d2))次元の３階テンソルに並び替える。
第１方向畳み込み部１２は、並び替えられた３階テンソルに対して、畳み込みによって、第１の３階テンソルに変換する。具体的には、(d1,d2,M/(d1×d2))次元の３階テンソルに対して、フィルタカーネルのサイズを(1,1)とする２次元畳み込みによって、(d1,d2,N/(d1×d2))次元の３階テンソルに変換する。
第１の転置部１３１は、第１の３階テンソルを転置する。具体的には、 (d1,d2,N/(d1×d2))次元の３階テンソルについて、(d2,N/(d1×d2),d1)次元の３階テンソルに転置する。
第２方向畳み込み部１４は、転置された第１の３階テンソルに対して、畳み込みによって、第２の３階テンソルに変換する。具体的には、(d2,N/(d1×d2),d1)次元の３階テンソルに対して、フィルタカーネルのサイズを(1,1)とする２次元畳み込みによって、(d2,N/(d1×d2),d1)次元の３階テンソルに変換する。
第２の転置部１３２は、第２の３階テンソルを転置する。具体的には、 (d2,N/(d1×d2),d1)次元の３階テンソルについて、(N/(d1×d2),d1,d2)次元の３階テンソルに転置する。
第３方向畳み込み部１６は、転置された第２の３階テンソルに対して、畳み込みによって、第３の３階テンソルに変換する。具体的には、(N/(d1×d2),d1,d2)次元の３階テンソルに対して、フィルタカーネルのサイズを(1,1)とする２次元畳み込みによって、(N/(d1×d2),d1,d2)次元の３階テンソルに変換する。
出力並び替え部１５は、第３の３階テンソルを、N次元の１階テンソルに並び替える。具体的には、(N/(d1×d2),d1,d2)次元の３階テンソルを、N次元の１階テンソルに並び替える。
本実施形態では、第１方向畳み込み部１２について次元数の増減を実行したが、第１方向畳み込み部１２の代わりに、第２方向畳み込み部１４又は第３方向畳み込み部１６について、次元数の増減を実行してもよい。また、第１の実施形態と同様に、第１方向畳み込み部１２、第２方向畳み込み部１４、第３方向畳み込み部１６それぞれに、次元数の増減の実行を分散してもよい。
【００６０】
尚、第２の実施形態と同様の方法で、４階テンソルに並べ替えて、４段階の３次元畳み込み層(Conv3D)に分解することも可能である。カーネルサイズも同様に(1,1,1)とする。
通常のニューラルネットワークのフレームワークでは、畳み込み層は３次元まで用意されていることが多いため、本発明における全結合層の分解も４層までとなる。但し、４次元以上の畳み込み層があれば、同様の方法で更なる分解が可能である。
【００６１】
以上、詳細に説明したように、本発明のプログラムによれば、再構成や特別な行列演算のためのカスタムレイヤの実装を必要とすることなく、ニューラルネットワークの全結合層を畳み込み層に置き換えることによって、乗算回数及び重みパラメータ数を大幅に削減することができる。そのために、モバイルや組み込み機器等の小型デバイスに適すると共に、ニューラルネットワークのフレームワークで汎用的に用いられるレイヤしか利用しない。
【００６２】
前述した本発明の種々の実施形態について、本発明の技術思想及び見地の範囲の種々の変更、修正及び省略は、当業者によれば容易に行うことができる。前述の説明はあくまで例であって、何ら制約しようとするものではない。本発明は、特許請求の範囲及びその均等物として限定するものにのみ制約される。
【符号の説明】
【００６３】
１  装置
１１  入力並び替え部
１２  第１方向畳み込み部
１３  転置部
１３１  第１の転置部
１３２  第２の転置部
１４  第２方向畳み込み部
１５  出力並び替え部
１６  第３方向畳み込み部
【図１】
2020024524.tif 000003
【図２】
2020024524.tif 000004
【図３】
2020024524.tif 000005
【図４】
2020024524.tif 000006
【図５】
2020024524.tif 000007
【図６】
2020024524.tif 000008
【図７】
2020024524.tif 000009
【図８】
2020024524.tif 000010