TOP > 国内特許検索 > ニューラルネットワークの圧縮方法、ニューラルネットワーク圧縮装置、コンピュータプログラム、及び圧縮されたニューラルネットワークデータの製造方法 > 明細書

明細書 :ニューラルネットワークの圧縮方法、ニューラルネットワーク圧縮装置、コンピュータプログラム、及び圧縮されたニューラルネットワークデータの製造方法

発行国 日本国特許庁(JP)
公報種別 公開特許公報(A)
公開番号 特開2021-022050 (P2021-022050A)
公開日 令和3年2月18日(2021.2.18)
発明の名称または考案の名称 ニューラルネットワークの圧縮方法、ニューラルネットワーク圧縮装置、コンピュータプログラム、及び圧縮されたニューラルネットワークデータの製造方法
国際特許分類 G06N   3/08        (2006.01)
FI G06N 3/08 120
請求項の数または発明の数 10
出願形態 OL
全頁数 14
出願番号 特願2019-137019 (P2019-137019)
出願日 令和元年7月25日(2019.7.25)
発明者または考案者 【氏名】和田 俊和
【氏名】菅間 幸司
出願人 【識別番号】504145283
【氏名又は名称】国立大学法人 和歌山大学
個別代理人の代理人 【識別番号】100111567、【弁理士】、【氏名又は名称】坂本 寛
審査請求 未請求
要約 【課題】再構成誤差が最小になるようにプルーニングが行われるようにする。
【解決手段】開示のニューラルネットワークの圧縮方法は、選択されたプルーニング対象に対するプルーニングと、プルーニングされたニューラルネットワークの再構成と、が行われる工程を備える。前記プルーニング対象は、プルーニング及び再構成によって生じる再構成誤差が最小になるように選択される。
【選択図】図4
特許請求の範囲 【請求項1】
選択されたプルーニング対象に対するプルーニングと、プルーニングされたニューラルネットワークの再構成と、が行われる工程を備え、
前記プルーニング対象は、プルーニング及び再構成によって生じる再構成誤差が最小になるように選択される
ニューラルネットワークの圧縮方法。
【請求項2】
前記プルーニングは、全結合層におけるニューロンのプルーニングである
請求項1に記載のニューラルネットワークの圧縮方法。
【請求項3】
前記プルーニングは、畳み込み層におけるチャネルのプルーニングである
請求項1に記載のニューラルネットワークの圧縮方法。
【請求項4】
前記再構成誤差は、プルーニング対象の挙動ベクトルを、前記プルーニング対象以外の他のプルーニング単位の挙動ベクトルが張る部分空間に射影したときの射影残差に基づいて計算される
請求項1から3のいずれか1項に記載のニューラルネットワークの圧縮方法。
【請求項5】
前記射影残差は、プルーニング対象の挙動ベクトルの双直交基底に基づいて計算される
請求項4に記載のニューラルネットワークの圧縮方法。
【請求項6】
前記射影残差は、グラン・シュミットの直交化計算の反復適用により計算される
請求項4に記載のニューラルネットワークの圧縮方法。
【請求項7】
前記再構成誤差は、並列計算される
請求項1から6のいずれか1項に記載のニューラルネットワークの圧縮方法。
【請求項8】
選択されたプルーニング対象に対するプルーニングと、プルーニングされたニューラルネットワークの再構成と、を行うニューラルネットワーク圧縮装置であって、
前記プルーニング対象は、プルーニング及び再構成によって生じる再構成誤差が最小になるように選択されるよう構成されている
ニューラルネットワーク圧縮装置。
【請求項9】
コンピュータを、ニューラルネットワーク圧縮装置として機能させるためのコンピュータプログラムであって、
前記ニューラルネットワーク圧縮装置は、選択されたプルーニング対象に対するプルーニングと、プルーニングされたニューラルネットワークの再構成と、を行うよう構成され、
前記ニューラルネットワーク圧縮装置において、前記プルーニング対象は、プルーニング及び再構成によって生じる再構成誤差が最小になるように選択される
コンピュータプログラム。
【請求項10】
選択されたプルーニング対象に対するプルーニングと、プルーニングされたニューラルネットワークの再構成と、が行われる圧縮工程と、
前記圧縮工程により圧縮されたニューラルネットワークのデータを出力する工程と、
を有し、
前記圧縮工程において、前記プルーニング対象は、プルーニング及び再構成によって生じる再構成誤差が最小になるように選択される
圧縮されたニューラルネットワークデータの製造方法。
発明の詳細な説明 【技術分野】
【0001】
本開示は、ニューラルネットワークの圧縮に関する。
【背景技術】
【0002】
ディープニューラルネットワーク(DNN)のようなニューラルネットワークの圧縮手法として、プルーニング(Pruning;枝刈り)と、再構成(Reconstruction)と、を行う手法がある。
【0003】
プルーニングは、全結合型ニューラルネットワーク(FCN)においては、ニューロン(とそのニューロンに接続された重み)の削除として行われ、畳み込み型ニューラルネットワーク(CNN)においては、チャネルの削除として行われる(非特許文献1参照)。チャネルの削除は、削除されるチャネルに属する重み全体の削除として行われる。
【0004】
再構成はプルーニング後に行われる。再構成では、プルーニング前の出力に近づくように、ニューラルネットワークの重みパラメータの調整が行われる。例えば、FCNにおいては、再構成として、ニューロン間の結合の重みパラメータの調整が行われ、CNNにおいては、再構成として、フィルタ(カーネル)における重みパラメータの調整が行われる。
【先行技術文献】
【0005】

【非特許文献1】Yihui He, Xiangyu Zhang, Jian Sun, “Channel Pruning for Accelerating Very Deep Neural Networks,” Proc. of ICCV2017, 2017
【発明の概要】
【0006】
プルーニングと再構成とを行う従来の圧縮手法においては、再構成後における誤差(再構成誤差)が最小になるようにプルーニングが行われるわけではない、という課題が存在することを、本発明者らは見出した。以下では、この課題について説明する。なお、以下の説明では、簡単化のため、FCNを前提として説明する。
【0007】
プルーニングをする際には、削除されるニューロン(プルーニング対象)を選択する必要がある。削除されるニューロンは、削除されるニューロンが存在する層の次層に与える誤差に着目して、選択される。具体的には、ニューロンの削除によって次層に与える誤差が最小となるニューロンが、削除されるニューロンとして選択される。例えば、ニューロンAを削除した場合に、次層に与える誤差がEであり、ニューロンAを削除した場合に、次層に与える誤差がEである場合、誤差Eが誤差Eよりも小さければ、ニューロンAが、ニューロンAよりも優先して、削除されるニューロンとして選択されることになる。
【0008】
プルーニング後の再構成では、削除されずに残ったニューロンから次層のニューロンへ向かう結合における重みパラメータが、調整される。重みの調整は、ニューロンの削除により次層に与える誤差が最小になるように実行される。例えば、プルーニングにおいてニューロンAを削除することで次層に与える誤差がEである場合、再構成では、誤差Eができるだけ小さくなるように、重みの調整が行われる。重みの調整により最小化された誤差Eは、再構成誤差E1rと呼ばれる。
【0009】
以上のような従来の圧縮手法では、再構成誤差E1rが最小になるようにプルーニングが行われるわけではない。例えば、前述のように、ニューロンAを削除した場合に次層に与える誤差がEであり、再構成誤差がE1rであるとする。また、ニューロンAを削除した場合に次層に与えられる誤差がEであり、再構成誤差がE2rであるとする。この場合において、誤差Eが誤差Eよりも小さいとしても、再構成誤差E1rが再構成誤差E2rよりも大きいことがある。すなわち、削除により生じる誤差が最小であっても、再構成誤差が最小になるとの保証はない。
【0010】
したがって、上記の課題の解決が望まれる。本開示において、上記の課題は、再構成誤差が最小になるようにプルーニングすることにより解決される。更なる詳細は、後述の実施形態として説明される。
【図面の簡単な説明】
【0011】
【図1】図1は、ニューラルネットワーク圧縮装置及びニューラルネットワーク利用装置の構成図である。
【図2】図2は、ニューラルネットワークの構成及び伝播量Yの定式化の説明図である。
【図3】図3は、比較例に係る圧縮処理のフローチャートである。
【図4】図4は、実施形態に係る圧縮処理のフローチャートである。
【図5】図5は、実施形態に係る圧縮処理のためのGreedy Algorithmである。
【図6】図6は、部分空間Uへのxjの射影を示す図である。
【図7】図7は、残差rjの計算方法を示す。
【図8】図8は、残差rjの計算方法を示す。
【図9】図9は、別のニューロンを削除する際の再構成誤差の計算方法を示す。
【図10】図10は、別のニューロンを削除する際の再構成誤差の計算方法を示す。
【図11】図11は、REAPの畳み込み層への適用を示す。
【図12】図12は、グラン・シュミットの直交化計算の適用による射影残差rjの計算方法を示す。
【図13】図13は、実験結果を示す図である。
【発明を実施するための形態】
【0012】
<1.ニューラルネットワークの圧縮方法、ニューラルネットワーク圧縮装置、コンピュータプログラム、及び圧縮されたニューラルネットワークデータの製造方法の概要>

【0013】
(1)実施形態に係るニューラルネットワークの圧縮方法は、選択されたプルーニング対象に対するプルーニングと、プルーニングされたニューラルネットワークの再構成と、が行われる工程を備える。前記プルーニング対象は、プルーニング及び再構成によって生じる再構成誤差が最小になるように選択される。これにより、再構成誤差が最小になるようにプルーニングされる。

【0014】
(2)前記プルーニングは全結合層におけるニューロンのプルーニングであってもよい。

【0015】
(3)前記プルーニングは畳み込み層におけるチャネルのプルーニングであってもよい。

【0016】
(4)前記再構成誤差は、プルーニング対象の挙動ベクトルを、前記プルーニング対象以外の他のプルーニング単位の挙動ベクトルが張る部分空間に射影したときの射影残差に基づいて計算されるのが好ましい。

【0017】
(5)前記射影残差は、プルーニング対象の挙動ベクトルの双直交基底に基づいて計算されるのが好ましい。

【0018】
(6)前記射影残差は、グラン・シュミットの直交化計算の反復適用により計算されてもよい。

【0019】
(7)前記再構成誤差は、並列計算等で高速化されるのが好ましい。

【0020】
(8)実施形態に係るニューラルネットワーク圧縮装置は、選択されたプルーニング対象に対するプルーニングと、プルーニングされたニューラルネットワークの再構成と、を行うよう構成されている。ニューラルネットワーク圧縮装置は、前記プルーニング対象は、プルーニング及び再構成によって生じる再構成誤差が最小になるように選択されるよう構成されている。

【0021】
(9)実施形態に係るコンピュータプログラムは、コンピュータを、ニューラルネットワーク圧縮装置として機能させるためのコンピュータプログラムである。前記ニューラルネットワーク圧縮装置は、選択されたプルーニング対象に対するプルーニングと、プルーニングされたニューラルネットワークの再構成と、を行うよう構成され、前記ニューラルネットワーク圧縮装置において、前記プルーニング対象は、プルーニング及び再構成によって生じる再構成誤差が最小になるように選択される。

【0022】
(10)実施形態に係る圧縮されたニューラルネットワークデータの製造方法は、選択されたプルーニング対象に対するプルーニングと、プルーニングされたニューラルネットワークの再構成と、が行われる圧縮工程と、前記圧縮工程により圧縮されたニューラルネットワークのデータを出力する工程と、を有し、前記圧縮工程において、前記プルーニング対象は、プルーニング及び再構成によって生じる再構成誤差が最小になるように選択される。

【0023】
<2.ニューラルネットワークの圧縮方法、ニューラルネットワーク圧縮装置、コンピュータプログラム、及び圧縮されたニューラルネットワークデータの製造方法の例>

【0024】
図1は、実施形態に係るニューラルネットワーク圧縮装置(以下、「圧縮装置」という)10とニューラルネットワーク利用装置(以下、「利用装置」という)100とを示している。実施形態に係る圧縮装置10は、ニューラルネットワークN1を圧縮して小規模化するための圧縮処理21を実行する。圧縮処理21を実行することにより実施される方法は、圧縮されたニューラルネットワークの製造方法又は圧縮されたニューラルネットワークデータの製造方法でもある。

【0025】
ニューラルネットワークは、複数の人工ニューロン(「ノード」ともいう)が結合した人工的な計算機構である。ニューラルネットワークは、例えば、ディープニューラルネットワーク(DNN)である。DNNは、例えば、全結合型ニューラルネットワーク(FCN)であってもよいし、畳み込み型ニューラルネットワーク(CNN)であってもよい。以下では、圧縮処理の対象となるニューラルネットワークN1を、「原ニューラルネットワーク」といい、圧縮されたニューラルネットワークN2を「圧縮ニューラルネットワーク」という。なお、実施形態に係る圧縮装置10は、原ニューラルネットワークN1の機械学習(深層学習)のための処理も実行可能である。圧縮装置10は、学習済の原ニューラルネットワークN1を圧縮する。

【0026】
圧縮装置10は、1又は複数のプロセッサ20及び記憶装置30を有するコンピュータによって構成されている。1又は複数のプロセッサ20は、例えば、グラフィックプロセッシングユニット(GPU)を含む。1又は複数のプロセッサ20は、さらにCPUを含んでもよい。GPUのような大規模並列計算機構は、大規模なニューラルネットワークに関する処理を実行するための大量の計算に適している。

【0027】
記憶装置30は、プロセッサ20によって実行されるコンピュータプログラム31を記憶している。プロセッサ20は、コンピュータプログラム31を実行することで、圧縮処理21を行う。圧縮処理21は、プルーニング(Pruning;枝刈り)と再構成(Reconstruction)とを含む。

【0028】
記憶装置30は、圧縮処理21によって製造された圧縮ニューラルネットワークN2を表すデータ(圧縮ニューラルネットワークデータ)N20を記憶することができる。圧縮ニューラルネットワークデータN20は、圧縮ニューラルネットワークN2を表現する各種のパラメータ(重み、結合関係など)からなるデータである。圧縮装置10は、圧縮ニューラルネットワークデータN20を、ニューラルネットワークエンジン等へ、出力することができる。圧縮ニューラルネットワークデータN20は、ニューラルネットワークエンジンに読み込まれることで、そのニューラルネットワークエンジンを圧縮ニューラルネットワークN2として機能させる。

【0029】
利用装置100は、圧縮ニューラルネットワークデータN20を読み込んで、圧縮ニューラルネットワークN2として機能するニューラルネットワークエンジンを有する。ニューラルネットワークエンジンは、例えば、プロセッサ200と記憶装置300とを備える。プロセッサ200は、例えば、組み込み系システムにおける低消費電力のCPUでよい。圧縮ニューラルネットワークデータN20は、原ニューラルネットワークN1のデータに比べて、サイズが小さいため、低消費電力のCPUによる処理が可能である。

【0030】
組み込み系システムは、汎用的なコンピュータシステムではなく、特定の用途に向けられたコンピュータシステムであり、例えば、スマートフォン・家電などの家庭用機器、産業用ロボットなどの産業用機器、各種の医療用機器、自動車・ドローンなどのビークル、及びその他の機器におけるコンピュータシステムである。組み込み系システムでは、プロセッサとして、低消費電力のCPUが使われることが多いが、圧縮ニューラルネットワークデータN20は、データサイズが小さいため、実行が容易である。

【0031】
圧縮ニューラルネットワークN2は、例えば、画像・音声の変換、セグメンテーション、識別などの用途に用いられる。より具体的には、例えば、店舗等の客数計測、男女・年齢層分析、車両計数、車種分析など、対象物の画像から必要な情報を抽出するために用いることができる。原ニューラルネットワークN1は大規模であり、計算コストが大きいため、組み込み系システムでの実行が困難であるが、圧縮ニューラルネットワークN2は、小規模化されているため、組み込み系システムでの実行が容易である。

【0032】
以下、圧縮処理21について説明する。以下では、理解の容易のため、まず、全結合型ニューラルネットワーク(FCN)を前提に、圧縮処理21を説明し、その後、同様の圧縮処理21を、畳み込み型ニューラルネットワーク(CNN)に適用できることを説明する。

【0033】
図2は、原ニューラルネットワークN1である全結合型ニューラルネットワーク(FCN)における層lと、層lの次の層である層l+1と、を示している。図2では、2つの層(l層,l+1層)が代表的に示されている。FCNにおける各層は、層状に並べられた人工ニューロン(以下、単に「ニューロン」という)が層間で結合されている全結合層である。各層中における丸印がニューロンである。層lに含まれるニューロン数はcであり、層l+1に含まれるニューロン数はCである。

【0034】
図2中の式(1)は、ニューラルネットワークにデータが与えられた時における、層lから次の層l+1への伝播量Yを定式化している。ここでは、Yは、層l+1のC個のニューロンの内部活性度を表すN×C行列とする。換言すると、Yは、層lから与えられる、層l+1への入力でもある。

【0035】
N個のデータ(例えば、N個の画像データ)を、層lのc個のニューロンに与えた場合、層lの各ニューロンからはN個の出力が生じる。層lにおけるi番目のニューロンの出力がxiで表される。xiは、N次元のベクトルである。xiは、i番目のニューロンにN個のデータが与えられた時のi番目のニューロンの出力(挙動)を示す。すなわち、xiはi番目のニューロンの挙動ベクトル(ニューロン挙動ベクトル)でもある。なお、ニューラルネットワークに与えられるデータは、画像以外の他のデータ、例えば、音声データ等であってもよい。画像データ等のデータは、各ニューロンの挙動を把握するために、ニューラルネットワークに与えられる。

【0036】
図2中のwiは、l層のi番目のニューロンから、l+1層のC個のニューロンへ向かう結合の重み(重み係数)からなるC次元の重みベクトルである。

【0037】
この場合、次層l+1への伝播量Yは、層lにおけるニューロンの出力xiと、層lから次層l+1への重みベクトルwiと、によって、図2中の式(1)に示すように定式化される。

【0038】
実施形態に係る圧縮処理21の目的は、上記のYをできるだけ変化させることなく、ニューロンの数を、所望の数ほど減少させることである。ニューロンを減少させても、Yの変化が少なければ、原ニューラルネットワークN1の性能を維持することができる。つまり、ニューラルネットワークを圧縮しても、精度低下を防止できる。なお、上記のように、FCNでは、ニューロンがプルーニング単位であるが、CNNでは、チャネルがプルーニング単位である。なお、プルーニング単位は、削除の単位である。

【0039】
実施形態に係る圧縮処理21の説明に先立ち、比較例に係る圧縮処理121を説明する。図3は、比較例に係る圧縮処理121を示している。図3に示す圧縮処理121は、プルーニング工程122と、再構成工程123と、を有している。比較例においては、プルーニング工程122と再構成工程123とは完全に分離している。

【0040】
プルーニング工程122では、ある層lに含まれる複数のニューロン(複数のプルーニング単位)から削除されるニューロン(プルーニング対象)が選択され、選択されたニューロンの削除が行われる。削除されるニューロンが層lの中から選択される場合、次層l+1への伝播量Yに与える影響が最も小さくなるニューロンが、削除されるニューロン(プルーニング対象)として選択される。この選択の際には、Lasso回帰を用いて、図3の式(2)に従ってニューロンが選択される(非特許文献1参照。非特許文献1ではチャネルが選択される)。比較例においては、ニューロンの選択の際には、重みが調整されることはない。

【0041】
比較例では、次層l+1での内部活性度の誤差に関するペナルティ項に重要度ベクトルβのLノルムを加えている。重要度ベクトルβのLノルムを最小化する重要度ベクトルβを求めると、次層l+1の活性度の誤差を低く抑えつつゼロ要素の多いβが得られ、削除すべきニューロンを決定できる。すなわち、式(2)の最適化の結果、最適化されたニューロンの重要度ベクトルβ*が得られるが、そのベクトルのi番目の要素β*iが0ならば、i番目のニューロンは不要であり、削除されるニューロンとして選択される。

【0042】
比較例において、削除されるニューロンの数は、ハイパーパラメータλの微調整によってコントロールされる。λを増加させれば、削除されるニューロンの数が増え、λを減少させれば、削除されるニューロンの数が減る。比較例においては、削除されるニューロンの数は、λによってコントロールされるため、削除されるニューロンの数の制御は難しい。

【0043】
再構成工程123では、層lにおいて、プルーニング後に残ったニューロンが、次層l+1に与えるYが、プルーニング前におけるY(本来のY)に近づくように、重みが調整(最適化)される。重みの調整は、図3中の式(3)に従って行われる。式(3)は、再構成誤差を最小化する重みベクトルを求める。ここでの再構成誤差は、プルーニング前のYと、プルーニング後に重みを調整したときのYと、の差に基づく。

【0044】
比較例においては、プルーニング対象は、再構成を行う前の誤差を最小化するように選択されており、再構成後に最も誤差が小さくなるように選択されているわけではない。つまり、比較例では、プルーニング対象の選択は、再構成前の誤差に基づいて行われており、再構成は、再構成後の誤差に基づいて行われており、プルーニングと再構成とが、異なる基準で行われている。また、比較例においては、Lassoを用いており、削除されるニューロンの数をコントロールするには、λの人手による微調整が必要となる。つまり、比較例では、削除されるニューロンの数のコントロールは困難である。

【0045】
図4は、実施形態に係る圧縮処理21を示している。以下では、実施形態に係る圧縮処理21を、REAP(Reconstruction Error Aware Pruning)という。

【0046】
比較例では、プルーニングと再構成とが異なる基準で行われていたのに対して、REAPでは、プルーニングと再構成とを同じ基準で行う。すなわち、REAPでは、再構成誤差が最小になるようにプルーニングされるとともに再構成される。REAPでは、図4中の式(4)に従って、削除されるニューロンが決定される。なお、式(4)のZは、層lにおいて、削除して残ったニューロンを示す。式(4)においては、重みベクトルwiは、Z’をZに固定する前に最適化される。したがって、式(4)によれば、次層l+1への伝播量Yの再構成誤差を最小化するニューロンの集合が求まる。

【0047】
REAPでは、再構成誤差が最小になるようにプルーニング対象であるニューロンが選択されるため、REAPは、再構成誤差が最小になるとは限らない比較例に比べて、有利である。

【0048】
式(4)は、組み合わせ最適化問題であり、グリーディ法(Greedy Algorithm)によって解かれる。図5は、式(4)を解くためのアルゴリズムを示している。まず、ステップS1において、層lにおけるj番目のニューロンを消してみる。ステップS2において、層lにおいて残ったニューロンのみでYを再構成して誤差(再構成誤差)を計算する。再構成誤差は、図5中において式(5)として示されるコスト関数P(Z’)を計算することで求まる。再構成誤差が求まると、一旦、削除したj番目のニューロンを元に戻す。ステップS3で示される繰り返しループにおいては、ステップS1及びステップS2がすべてのj(j∈Z)について繰り返され、最もP(Z’)の値が小さくなるニューロンが、プルーニング対象として選択され、最終的に削除される。

【0049】
ステップS3の繰り返しループによって、一つのニューロンが削除される。ステップS4で示される繰り返しループにおいては、残ったニューロンのみで、再度、ステップS3の繰り返しループが実行される。再度、ステップ3の繰り返しループが実行されると、別のニューロンが削除される。

【0050】
層lからいくつのニューロンを削除するかは、ステップS4の繰り返しループを何回実行するかによって決まる。したがって、所望数Dのニューロンを削除したい場合、ステップS4の繰り返しループをD回実行すればよい。したがって、REAPでは、削除されるニューロンの数のコントロールは容易である。

【0051】
REAPでは、比較例に比べて、計算量が増加する。すなわち、REAPでは、再構成誤差を求める際に最小二乗法を適用するため、連立方程式を解く必要がある。そして、解く必要のある連立方程式は層内のニューロン数分存在する。例えば、層lのニューロン数がcであり、次層l+1のニューロン数がCである場合,重みパラメータ数はc×Cになる。1個のニューロンを削除する場合、係数行列のサイズが(c-1)C×(c-1)Cとなる。したがって、一つの連立方程式を解くための時間計算量は、O(c)である。この連立方程式をc回解く必要があることから、O(c)の時間計算量となる。

【0052】
ここで、本来解こうとしている最小二乗問題は、あるニューロンの挙動を表す挙動ベクトルxjがなくなったときに、残りのニューロン集合Z’の挙動ベクトルxi(i∈Z’)の線形和で、次層l+1への本来の伝播量Yを近似する、という問題である。この近似による誤差は、図6に示すように、xjをxi(i∈Z’)の線形和で表現した際の誤差rjに起因している。したがって、この誤差rjを最小化すれば、誤差rjを示すベクトルに、次層l+1への重みベクトルwiTを掛けるだけで、次層l+1での活性度(伝播量Y)の誤差が計算できる。

【0053】
すなわち、j番目のニューロンの削除により生じる再構成誤差を計算するためには、図6中の式(6-1)に示すコスト関数を計算する必要がある。後述するように、式(6-1)のコスト関数は、式(6-2)のように表される。したがって、xjをxi(i∈Z’)が張る部分空間に射影した際の射影残差rjを、巨大な係数行列を用いることなく、計算することができれば、再構成誤差を効率よく計算することができる。一例として、残差rjは、式(6-3)のように計算される。

【0054】
残差rjの求め方の一例は、図7及び図8に詳しく説明されている。図7及び図8に示す計算方法は、残差rjが、xjの双直交基底と線形従属であることを利用したものである。すなわち、残差rjは、xjの双直交基底に対する、xjの射影である。残差rjは、xjの双直交基底に基づいて計算される。図7及び図8に示す計算方法によれば、連立方程式の係数行列を使用せずに、残差rjを効率的に計算できる。また、図9及び図10は、あるニューロンを削除した後に、別のニューロンを削除するための再構成誤差を効率的に計算する方法を説明している。

【0055】
高速化のため、再構成誤差の計算は、並列処理で行うのが好ましい。再構成誤差を並列計算することで、高速に再構成誤差を求めることができる。ただし、最小二乗法を解く際に必要となる係数行列を格納するメモリ量は、並列化によって増大する。

【0056】
したがって、再構成誤差の計算を効率的に行うには、消費メモリ量に相当する空間計算量を削減することが好ましい。ここで、空間計算量(消費メモリ)は一つの連立方程式当たり、O(c)であり、c個並列計算で同時に計算するとO(c)になる。空間計算量を削減するには、連立方程式の係数行列を使用せずに最小二乗法の計算を行うのが好ましい。

【0057】
図12は、並列計算で残差rjを求める例を示している。図12では、グラン・シュミット(Gram-Schmit)の直交化計算を反復適用することで、残差rjを効率的に計算できる。図11に示す計算方法では、連立方程式の係数行列を使用せずに、残差rjを効率的に並列計算できる。ニューロン数が非常に多い(実行環境によるが、目安として、4096個以上)の場合は、グラン・シュミットを用いる解法の方が高速である。

【0058】
図11は、REAPが畳み込み層におけるプルーニング及び再構成に適用できることを説明している。図11中の式(19)に示すように、畳み込み層におけるスライディングウィンドウ操作は、行列乗算の和によって表される。式(19)は、全結合層のための式(1)と同様の形式であることから、畳み込み層においても、全結合層と同様に、REAPを適用できることがわかる。

【0059】
図13は、ニューラルネットワークの圧縮をREAP及び比較例によって行った実験結果を示している。実験では、ImageNetデータセットによってトレーニングしたVGG16を、原ニューラルネットワークN1として用いた。原ニューラルネットワークN1に対する圧縮処理21としてREAPを適用した場合及び比較例を適用した場合それぞれについて、画像の認識精度(正解率)を求めた。

【0060】
図13の横軸は、FLOPs(浮動小数点演算数)を示し、縦軸は、正解率を示す。FLOPsが小さいほど、圧縮ニューラルネットワークN2の演算数が少なく、圧縮率が大きいことを示す。図13に示すように、比較例では、圧縮率を増加(削除されるニューロン数を増加)させると、正解率が0.7(70%)程度まで下がるのに対して、REAPでは、圧縮率を増加させても、正解率は0.8(80%)程度までしか下がらなかった。したがって、REAPの方が、圧縮による精度低下を抑制できていることがわかる。

【0061】
<3.付記>
本発明は、上記実施形態に限定されるものではなく、様々な変形が可能である。
【符号の説明】
【0062】
10 :ニューラルネットワーク圧縮装置
20 :プロセッサ
21 :圧縮処理
30 :記憶装置
31 :コンピュータプログラム
100 :ニューラルネットワーク利用装置
121 :圧縮処理
122 :プルーニング工程
123 :再構成工程
200 :プロセッサ
300 :記憶装置
N1 :原ニューラルネットワーク
N2 :圧縮ニューラルネットワーク
N20 :圧縮ニューラルネットワークデータ
図面
【図1】
0
【図2】
1
【図3】
2
【図4】
3
【図5】
4
【図6】
5
【図7】
6
【図8】
7
【図9】
8
【図10】
9
【図11】
10
【図12】
11
【図13】
12