(57)【要約】【課題】複数の縮約方法を組み合わせつつ、モデル縮約に係る設計期間の増大を抑えること。【解決手段】ニューラルネットワークのモデル縮約装置１は、第１縮約パラメータを用いて、重み行列の要素を変更する第１縮約処理を行い、重み行列を更新する重み算出処理部（第１縮約処理部）３０と、第２縮約パラメータを用いて、更新された重み行列のサイズを縮小する第２縮約処理を行い、縮小した重み行列に対応させてネットワーク形状を変形するネットワーク変形・再合成処理部（第２縮約処理部）５０と、を備えている。【選択図】図３
2020155010.tif 000002
【特許請求の範囲】
【請求項１】
ニューラルネットワークのモデル縮約装置であって、
前記ニューラルネットワークのモデルは、ネットワーク形状と前記ネットワーク形状に対応する重み行列とを含み、
第１縮約パラメータを用いて、前記重み行列の要素を変更する第１縮約処理を行い、前記重み行列を更新する第１縮約処理部と、
第２縮約パラメータを用いて、更新された前記重み行列のサイズを縮小する第２縮約処理を行い、縮小した前記重み行列に対応させて前記ネットワーク形状を変形する第２縮約処理部と、
を備えている、
ニューラルネットワークのモデル縮約装置。
【請求項２】
請求項１に記載のモデル縮約装置において、
前記第１縮約パラメータ及び前記第２縮約パラメータを設定する制御部を備えている、
モデル縮約装置。
【請求項３】
請求項２に記載のモデル縮約装置において、
学習データを基に、サイズが縮小された前記重み行列を用いた解析処理を実行させ、解析結果と学習データとを比較し、サイズが縮小された前記重み行列の各要素を最適化する学習処理を行う学習処理部を備えている、
モデル縮約装置。
【請求項４】
請求項３に記載のモデル縮約装置において、
前記制御部は、前記解析結果に基づき、モデル縮約を継続するか否かを判断する、
モデル縮約装置。
【請求項５】
請求項３に記載のモデル縮約装置において、
サイズが縮小された前記重み行列に対し、推論精度評価用データを用いて推論精度評価を行う推論精度評価部を備えている、
モデル縮約装置。
【請求項６】
請求項５に記載のモデル縮約装置において、
前記制御部は、前記解析結果及び前記推論精度評価部による推論精度評価結果に基づき、モデル縮約を継続するか否かを判断する、
モデル縮約装置。
【請求項７】
請求項１に記載のモデル縮約装置において、
前記第１縮約処理、前記第２縮約処理は、低ランク近似、ニューロン刈り、シナプス刈りのいずれかである、
モデル縮約装置。
【請求項８】
請求項１に記載のモデル縮約装置において、
前記第１縮約処理部は、前記第１縮約パラメータ及び前記第２縮約パラメータを用いて前記第１縮約処理を行う、
モデル縮約装置。
【請求項９】
請求項１に記載のモデル縮約装置において、
直前に実行された前記第１縮約処理による縮約量と、前記第２縮約処理による縮約量との縮約比重を縮約パラメータとして算出する制御部と、
前記縮約比重を用いて前記第１縮約パラメータ及び前記第２縮約パラメータを算出する縮約パラメータ算出処理部と、
を備えている、
モデル縮約装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ニューラルネットワークのモデル縮約装置に関する。
【背景技術】
【０００２】
近年、人工知能を搭載した機器の利用が進んでいる。ニューラルネットワークを用いた人工知能では、認識精度を高めることができるようモデル設計がなされており、高精度なニューラルネットワークほどモデルの規模が大きい。ただし、大規模なニューラルネットワークのモデルは、冗長な部分を多く含んでいる。組み込みデバイス上でニューラルネットワークによる推論計算を行う場合、取り扱うことができるデータ容量や消費電力に限界がある。このため、認識精度を保持しつつ、冗長な部分を削減する技術が開発されている。
【０００３】
例えば、特許文献１には、ニューラルネットワークの性能が所定要求を満たすことを確保すると共に、行列の次元を削減することで行列乗算の計算量を低減でき、ニューラルネットワークの処理速度を向上できる、ニューラルネットワークの装置が開示されている。
【０００４】
一方、ニューラルネットワークの推論結果への感度が低い重みに関する演算を省略することにより、演算量を削減する手法も開発されている。この手法には、例えば、ニューラルネットワークの構造のスパース性、行列濃度（cardinality）、あるいは行列特性（特異値、主成分、固有値等の行列特性）等、ニューラルネットワークのモデルの性質を表現する上で互いに独立した指標を縮約基準に用いる手法が含まれる。これらの手法は、例えば、ニューロン刈り、シナプス刈り、低ランク近似等と呼ばれる手法である。これらの手法は、前述した演算量を削減する手法と本質的には同じアプローチにより行われる手法である。
【０００５】
また、一種類の縮約基準に基づく方法ではモデルの縮約規模に限界があるため、異なる手法を逐次的に組み合わせて適用することで、演算量を大きく削減する技術が非特許文献１に開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１８−１０９９４７号公報
【非特許文献】
【０００７】
【非特許文献１】“Learning both Weights and Connections for Efficient Neural Networks”, Song Han(1), Jeff Pool(2), John Tran(2), William J. Dally(2), ((1)Stanford Univ., (2)NVIDIA), arXiv:1506.02626 (2015)
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、単純に異なる縮約方法を逐次的に組み合わせても、必然的に縮約方法の数だけループ箇所が増加するため、モデル縮約に係る設計手続きが複雑化し、設計期間が増大してしまう。
【０００９】
そこで、本発明は、複数の縮約方法を組み合わせつつ、モデル縮約に係る設計期間の増大を抑えることが可能なニューラルネットワークのモデル縮約装置等を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、以下のとおりである。
【００１１】
本発明の代表的な実施の形態によるニューラルネットワークのモデル縮約装置は、第１縮約パラメータを用いて、重み行列の要素を変更する第１縮約処理を行い、重み行列を更新する第１縮約処理部と、第２縮約パラメータを用いて、更新された重み行列のサイズを縮小する第２縮約処理を行い、縮小した重み行列に対応させてネットワーク形状を変形する第２縮約処理部と、を備えている。
【発明の効果】
【００１２】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【００１３】
すなわち、本発明の代表的な実施の形態によれば、複数の縮約方法を組み合わせつつ、モデル縮約に係る設計期間の増大を抑えることが可能となる。
【図面の簡単な説明】
【００１４】
【図１】一般的なニューラルネットワークの全体像を説明する図である。
【図２】ニューラルネットワークの重み行列を説明する図である。
【図３】本発明の実施の形態１に係るニューラルネットワークのモデル縮約装置の構成の一例を示すブロック図である。
【図４】本発明の実施の形態１に係るモデル縮約方法の概要を示すフロー図である。
【図５】モデル縮約方法の一例を示すフロー図である。
【図６】ニューロン刈り、シナプス刈りによるモデル縮約の説明図である。
【図７】量子化プルーニングの実行手順を例示する図である。
【図８】量子化プルーニングの実行手順のその他の例を示す説明図である。
【図９】モデル縮約方法の一例を示すフロー図である。
【図１０】本発明の実施の形態２に係るニューラルネットワークのモデル縮約装置の構成の一例を示すブロック図である。
【図１１】本発明の実施の形態２に係るモデル縮約方法の概要を示すフロー図である。
【図１２】実施の形態２におけるモデル縮約方法の一例を示すフロー図である。
【図１３】本発明の実施の形態３に係るニューラルネットワークのモデル縮約装置の構成の一例を示すブロック図である。
【図１４】本発明の実施の形態３に係るモデル縮約方法の概要を示すフロー図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施の形態を、図面を参照しつつ説明する。以下で説明する各実施の形態は、本発明を実現するための一例であり、本発明の技術範囲を限定するものではない。なお、実施例において、同一の機能を有する部材には同一の符号を付し、その繰り返しの説明は、特に必要な場合を除き省略する。
【００１６】
（実施の形態１）
＜ニューラルネットワークの全体像＞
まず、ニューラルネットワークの全体像について説明する。図１は、一般的なニューラルネットワークの全体像を説明する図である。ここでは、ニューラルネットワークの具体例として、静止画に対する畳み込みニューラルネットワークを挙げる。また、図１では、入力データの静止画を、畳み込みニューラルネットワークにより、ユーザが定義した各クラスに分類することを目的とするものとする。
【００１７】
図１のニューラルネットワークは、入力層Ｌ１０、隠れ層Ｌ２０〜Ｌ９０、及び出力層Ｌ１００を有する。これらの層は、例えば、ソフトウェアを実行することによりプロセッサ等の演算装置上に実現される。
【００１８】
入力層Ｌ１０から最深層の隠れ層Ｌ９０に到達するまでの間には、畳み込み演算層、全結合演算層、プーリング演算層等の各層がある。ニューラルネットワークには、ここで例示した各層が複数含まれてもよい。なお、各層の符号は便宜的に付したものであり、ニューラルネットワークの層数を示唆するものではない。
【００１９】
入力層Ｌ１０における演算処理の前段階では、演算装置は、入力画像をニューラルネットワークの演算に適した画像データに変形する。そして、演算装置は、変形した画像データを記憶部へ格納しておく。
【００２０】
入力層Ｌ１０等の各層は、それぞれに対応する重み行列をそれぞれ所持している。入力層Ｌ１０は、変形した画像データに対し、重み行列を用いた畳み込み演算を実行する。詳細に述べる、入力層Ｌ１０は、畳み込み演算以外にも、バッチ処理やバイアス項に関する処理等を実行する。これにより、画像データは、特徴マップの状態に遷移する。続いて、最浅層の隠れ層Ｌ２０は、特徴マップに対する演算処理を実行する。そして、各層における処理が実行された後、出力層Ｌ１００は、例えば出力関数を用いて、入力画像に対して分類されるべき各クラスの確率分布を演算する。そして、出力層Ｌ１００は、入力画像に対するクラス分類結果を出力する。そして、演算装置は、入力画像が、何の画像であるかの判定を行う。
【００２１】
ここで、１次元ニューラルネットワークを例にして、重み行列について説明する。図２は、ニューラルネットワークの重み行列を説明する図である。図２（ａ）は、重み行列を用いた演算を説明する図であり、図２（ｂ）は、重み行列を例示する図である。図２（ａ）では、矢印の方向に演算が進むものとする。図２（ａ）のＮ１、Ｎ３に含まれる各ニューロンは、入力に対する所定の値を返す演算ユニットである。Ｓ２に含まれる各シナプスには、重みが割り当てられている。前層のＮ１の各ニューロンからの戻り値と、対応する各シナプスの重みとの積が、次層のＮ３の各ニューロンに入力され和算される。このような演算処理は、行列演算で表すことができ、各シナプスの重みを行列形式でまとめたものが、図２（ｂ）の重み行列Ｗとして表される。なお、重み行列は、各層によって行列のサイズや重みを示す要素が異なる。
【００２２】
なお、以下では、重み行列に対し記号「Ｗ」を用いているが、特に、解析的更新が行われた重み行列に対しては、「Ｗ」にチルダ「〜」のアクセントをつけた記号を用いることとする。
【００２３】
ここでは、静止画の畳み込みニューラルネットワークを一例として挙げたが、入力データは、静止画に限定されるものではない。ニューラルネットワークは、前述した画像認識、音声認識、自然言語処理、温度、湿度、及び流体の流量を認識することによる周辺環境の認識等を行うことができる。
【００２４】
また、ニューラルネットワークの種類も、畳み込みニューラルネットワークに限定されるものではなく、行列形式で定義できる演算であれば適用可能である。また、出力層Ｌ１００における出力値も、単にクラス分類に限定されるものではなく、物体検出結果や音声認識結果など、ユーザの目的に合わせて変更可能である。
【００２５】
ニューラルネットワークのモデル（以下、単に「モデル」と呼ぶ場合がある）は、ネットワーク形状、及びニューラルネットワークの各層における重み行列を含む。詳しくは後述するが、重み行列は、ユーザが設定する所定の認識精度を満たすように、学習によって最適化される。
【００２６】
＜モデル縮約装置の構成＞
次に、モデル縮約装置の構成について説明する。モデル縮約装置１は、ニューラルネットワークのモデル縮約を行う機能ブロックである。以下に説明するモデル縮約処理は、図１の入力層Ｌ１０〜最深の隠れ層Ｌ９０に対して行われる。
【００２７】
図３は、本発明の実施の形態１に係るニューラルネットワークのモデル縮約装置の構成の一例を示すブロック図である。図３に示すように、モデル縮約装置１は、学習・評価制御部（制御部）１０、第１縮約パラメータ受付部２０、重み算出処理部（第１縮約処理部）３０、第２縮約パラメータ受付部４０、ネットワーク変形・再合成処理部（第２縮約処理部）５０、重み行列記憶部６０、学習処理部７０、推論精度評価部８０等を備えている。
【００２８】
重み行列記憶部６０以外のモデル縮約装置１を構成する各機能ブロックは、例えばプロセッサがソフトウェアを実行することで実現される。また、各機能ブロックは、ハードウェアで実現されてもよいし、ハードウェアとソフトウェアとの連携により実現されてもよい。
【００２９】
図３に示すように、モデル縮約装置１には、モデル記憶部１００、学習用データ記憶部７１、推論用データ記憶部８１、入力処理部９０等が接続されている。なお、モデル記憶部１００、学習用データ記憶部７１、及び推論用データ記憶部８１は、それぞれ独立して設けられてもよいし、これらと一体で構成されてもよい。また、モデル縮約装置１内の重み行列記憶部６０も、これらの記憶部と独立していてもよいし、これらと一体で構成されてもよい。重み行列記憶部６０は、モデル縮約装置１の外に設けられてもよい。
【００３０】
入力処理部９０は、モデル縮約装置１において実行される縮約手法を指定する機能ブロックである。入力処理部９０は、例えば、入力インタフェースと接続され、入力インタフェースを介してユーザが選択した複数（例えば２種類）の縮約手法を学習・評価制御部１０へ通知する。また、入力処理部９０は、ユーザが選択した縮約手法に対応する縮約パラメータが入力された場合には、入力された縮約パラメータを学習・評価制御部１０へ出力する。縮約パラメータは、モデルの縮約率を決定するパラメータである。縮約パラメータは、例えば、縮約率の閾値、縮約率の刻み幅、演算量削減率等であり、ユーザが選択した縮約手法に合ったものが適宜設定される。
【００３１】
モデル記憶部１００は、ニューラルネットワークのモデルを格納する記憶媒体である。図３に示すように、モデル記憶部１００は、重み行列を格納する重み行列記憶部１０１、ネットワーク形状を格納するネットワーク形状記憶部１０２を備えている。モデル縮約処理により、重み行列及びネットワーク形状は適宜更新されるが、モデル記憶部１００は、更新された重み行列及びネットワーク形状のみを格納してもよいし、更新前後の重み行列及びネットワーク形状をそれぞれ格納してもよい。
【００３２】
学習・評価制御部１０は、重み行列の学習・評価に関する処理や、モデル縮約に関する処理の制御等を行う機能ブロックである。モデル縮約に関する処理として、学習・評価制御部１０は、入力処理部９０から通知された２種類の縮約手法の割り当てを行う。例えば、学習・評価制御部１０は、重み算出処理部３０で実行される縮約を第１縮約に割り当て、ネットワーク変形・再合成処理部５０で実行される縮約を第２縮約に割り当てる。そして、学習・評価制御部１０は、第１縮約、第２縮約に対応する縮約パラメータ（第１縮約パラメータ、第２縮約パラメータ）をそれぞれ設定する。学習・評価制御部１０は、第１縮約として設定された縮約手法を通知する第１縮約通知、及び第１縮約に対応する第１縮約パラメータを第１縮約パラメータ受付部２０へ出力する。一方、学習・評価制御部１０は、第２縮約として設定された縮約手法を通知する第２縮約通知、及び第２縮約に対応する第２縮約パラメータを第２縮約パラメータ受付部４０へ出力する。
【００３３】
また、学習・評価制御部１０は、重み行列の学習・評価に関する処理として、学習処理部７０や推論精度評価部８０によるモデル縮約後の重み行列の評価結果に基づき、モデル縮約処理を継続するか否かの判定を行う。モデル縮約処理を継続する場合、学習・評価制御部１０は、縮約パラメータを再設定し、モデル縮約処理を継続させる。
【００３４】
第１縮約パラメータ受付部２０は、学習・評価制御部１０から入力された第１縮約通知、及び第１縮約パラメータを重み算出処理部３０へ出力する。
【００３５】
重み算出処理部３０は、第１縮約パラメータ受付部２０から入力された第１縮約通知、第１縮約パラメータに基づき、重み行列記憶部１０１に格納された重み行列に対する第１縮約処理を行う機能ブロックである。第１縮約処理において、重み算出処理部３０は、重み行列のサイズを変更することなく各要素を更新することにより、重み行列を更新する。重み算出処理部３０における重み行列の更新は、学習等の最適化により行われるのではなく、解析的に行われる。また、行列のサイズが変わらないので、第１縮約においては、ネットワークの形状も変わらない。重み算出処理部３０は、更新した重み行列を重み行列記憶部６０に格納する。
【００３６】
第２縮約パラメータ受付部４０は、学習・評価制御部１０から入力された第２縮約通知、及び第２縮約パラメータをネットワーク変形・再合成処理部５０へ出力する。
【００３７】
ネットワーク変形・再合成処理部５０は、第２縮約パラメータ受付部４０から入力された第２縮約通知、第２縮約パラメータに基づき、ネットワークの変形や再合成に関する処理を制御する機能ブロックである。ネットワーク変形・再合成処理部５０は、重み算出処理部３０で更新された重み行列に対する対する第２縮約を行い、重み行列のサイズを縮小し、重み行列を変形する。そして、ネットワーク変形・再合成処理部５０は、変形した重み行列に基づきネットワークの再合成を行い、ネットワーク形状を更新する。ネットワーク変形・再合成処理部５０は、更新したネットワーク形状をネットワーク形状記憶部１０２に格納する。
【００３８】
学習用データ記憶部７１は、重み行列に対する学習処理を行うための学習データ等を格納する。学習処理部７０は、学習用データ記憶部７１の学習データを用いて、重み行列記憶部１０１に格納された重み行列に対する学習処理を行う機能ブロックである。学習処理部７０は、学習データを基に、重み行列を用いた解析処理を実行させる。そして、学習処理部７０は、解析結果と、学習データとを比較して、重み行列における各要素の重みを最適化し、重み行列の更新を行う。
【００３９】
重み行列記憶部１０１に格納された重み行列には、後述するように、推論精度評価部８０による推論精度評価が行われる。推論精度評価結果は、学習・評価制御部１０に入力され、学習処理の際、学習処理部７０は、推論精度評価結果に基づく制御を学習・評価制御部１０から受ける。
【００４０】
推論用データ記憶部８１は、重み行列に対する推論精度評価に用いられる推論精度評価用データを格納する。推論精度評価部８０は、推論精度評価用データをテストデータとして、重み行列記憶部１０１に格納された重み行列に対する推論精度評価を行う。推論精度評価部８０は、推論精度評価結果を学習・評価制御部１０へ出力する。
【００４１】
＜モデル縮約方法＞
次に、本実施の形態におけるモデル縮約方法について説明する。図４は、本発明の実施の形態１に係るモデル縮約方法の概要を示すフロー図である。図４のフローには、ステップＳ１０〜Ｓ６０が含まれる。
【００４２】
モデル縮約処理が開始されると（ＳＴＡＲＴ）、第１縮約処理に用いられる第１縮約パラメータの設定が行われる（ステップＳ１０）。学習・評価制御部１０は、例えば、第１縮約に対する縮約パラメータの初期値を不揮発性メモリ（図示は省略）から読み出し、読み出した初期値を第１縮約パラメータに設定する。そして、学習・評価制御部１０は、設定した第１縮約パラメータを第１縮約パラメータ受付部２０へ出力する。また、学習・評価制御部１０は、これ以外にも、ユーザにより設定された値を第１縮約パラメータに設定してもよい。
【００４３】
そして、重み算出処理部３０は、ステップＳ１０において設定された第１縮約パラメータを用いた第１縮約処理を行い、重み行列の各要素の変更を行う（ステップＳ２０）。重み算出処理部３０は、変更した各要素からなる重み行列を生成し、重み行列を更新する。重み算出処理部３０は、更新した重み行列を重み行列記憶部６０へ格納する。
【００４４】
次に、第２縮約処理に用いられる第２縮約パラメータの設定が行われる（ステップＳ３０）。学習・評価制御部１０は、例えば、第２縮約に対する縮約パラメータの初期値を不揮発性メモリ（図示は省略）から読み出し、読み出した初期値を第２縮約パラメータに設定する。そして、学習・評価制御部１０は、設定した第２縮約パラメータを第２縮約パラメータ受付部４０へ出力する。また、学習・評価制御部１０は、これ以外にも、ユーザにより設定された値を第２縮約パラメータに設定してもよい。
【００４５】
そして、ネットワーク変型・再合成処理部５０は、ステップＳ３０において設定された第２縮約パラメータを用いた第２縮約処理を行い、重み行列記憶部６０へ格納された、更新された重み行列のサイズを縮小する（ステップＳ４０）。さらに、ネットワーク変型・再合成処理部５０は、ネットワーク形状記憶部１０２に格納されたネットワーク形状を読み出し、読み出したネットワーク形状を重み行列に対応させて変形し、再結合する。ネットワーク変型・再合成処理部５０は、縮小した重み行列をモデル記憶部１００の重み行列記憶部１０１に格納し、変形したネットワーク形状をネットワーク形状記憶部１０２に格納する。
【００４６】
学習処理部７０は、学習用データ記憶部７１から学習用データを読み出し、縮小された重み行列に対する学習処理を行う（ステップＳ５０）。具体的に述べると、学習処理部７０は、学習用データを入力データとし、重み行列記憶部１０１に格納された縮小された重み行列を用いた演算処理を実行させる。学習処理部７０は、出力層Ｌ１００のデータ又は出力層Ｌ１００から出力されるデータを演算結果とし、入力データと、演算結果とを比較して重み行列の最適化を行う。また、学習処理部７０は、重み行列に対する学習結果を学習・評価制御部１０へ出力する。
【００４７】
また、並行して、推論精度評価部８０は、推論用データ記憶部８１から推論精度評価用データを読み出し、縮小された重み行列に対する推論精度評価処理を行う。具体的に述べると、推論精度評価部８０は、推論精度評価用データを入力データとし、重み行列記憶部１０１に格納された縮小された重み行列を用いた演算処理を実行させる。推論精度評価部８０は、出力層Ｌ１００のデータ又は出力層Ｌ１００から出力されるデータを演算結果とし、推論精度評価用データと、演算結果とを比較して推論精度評価を行い、推論精度評価結果を学習・評価制御部１０へ出力する。推論精度評価部８０による推論精度評価は、所定の間隔で複数回行われる。
【００４８】
学習・評価制御部１０は、入力された学習結果や推論精度評価結果を用いて、モデル縮約処理を継続するか終了するかの判定を行う（ステップＳ６０）。例えば、学習・評価制御部１０は、学習結果を参照し、重み行列における各要素の重みを変更すべきと判断した場合（１）、ステップＳ１０に戻り、第１縮約パラメータ及び第２縮約パラメータの再設定を行い、再設定された縮約パラメータを用いてモデル縮約処理を継続する。
【００４９】
また、例えば、学習・評価制御部１０は、重み行列における各要素の重みを変更する必要はないが、推論精度評価結果を参照し、推論精度が所定の閾値より低い又は推論精度が急激に低下したと判断した場合には（２）、ステップＳ３０に戻り第２縮約パラメータの再設定のみを行い、再設定された縮約パラメータを用いてモデル縮約処理を継続する。これらに対し、学習・評価制御部１０は、各層における重み行列における各要素の重みを変更する必要はなく、推論精度が所定の閾値より高い場合（３）、各縮約パラメータの再設定は必要ないと判断しモデル縮約処理を終了する（ＥＮＤ）。
【００５０】
また、これ以外にも、学習・評価制御部１０は、例えば、推論精度の低下が複数回（例えば３回以上）連続して発生しているか、縮約率が目標の値に達しているかを判定項目としてモデル縮約処理を継続するか終了するかの判定を行ってもよい。具体的に述べると、推論精度の低下が３回以上連続して発生している、かつ、モデル縮約率が目標に達していないと判断した場合（１）、学習・評価制御部１０は、ステップＳ１０に戻り、第１縮約パラメータ及び第２縮約パラメータの再設定を行い、再設定された縮約パラメータを用いてモデル縮約処理を継続する。
【００５１】
また、学習・評価制御部１０は、推論精度の低下が３回以上連続して発生している、又は、モデル縮約率が目標に達していないと判断した場合（２）、学習・評価制御部１０は、ステップＳ３０に戻り第２縮約パラメータの再設定のみを行い、再設定された縮約パラメータを用いてモデル縮約処理を継続する。これらに対し、学習・評価制御部１０は、推論精度の低下が３回以上連続して発生していない、かつ、モデル縮約率が目標に達していると判断した場合（３）各縮約パラメータの再設定は必要ないと判断しモデル縮約処理を終了する（ＥＮＤ）。
【００５２】
これら以外にも、モデル縮約処理を継続するか否かの判定項目は、ユーザにより任意に設定可能である。
【００５３】
第１縮約パラメータ、第２縮約パラメータの再設定において、学習・評価制御部１０は、ユーザにより入力された値を各縮約パラメータに設定してもよいし、モデル縮約率の再設定に用いる方法（数式、リスト、テーブル等）を予め指定しておくことで、第１縮約パラメータ、第２縮約パラメータの再設定を自動的に行ってもよい。
【００５４】
なお、学習・評価制御部１０は、推論精度評価結果を用いずに、モデル縮約処理を継続するか終了するかの判定を行ってもよい。
【００５５】
＜＜モデル縮約方法の具体例（１）＞＞
次に、モデル縮約方法の具体例について説明する。図５は、モデル縮約方法の一例を示すフロー図である。図５は、図４と対応しているため、図５の各ステップに対応する符号は図４と合わせている。本例では、第１縮約処理として低ランク近似、第２縮約処理としてニューロン刈りがそれぞれ割り当てられている。
【００５６】
ステップＳ１０において、行列ランク閾値が第１縮約パラメータとして設定される。そして、重み算出処理部３０は、行列ランク閾値を用いた低ランク近似を行い、重み行列の低ランク化行列を導出する（ステップＳ２０）。
【００５７】
＜＜＜低ランク化行列の導出方法＞＞＞
ここで、低ランク化行列の導出方法の例を説明する。重み算出処理部３０は、次の式（１）を用いて、重み行列の特異値分解を行う。
【００５８】
【数１】
2020155010.tif 000003
【００５９】
式（１）において、Ｕは左特異ベクトル、ｔＶは右特異ベクトルの転置、Ｓは特異値対角行列である。特異値対角行列Ｓの対角成分は、重み行列のランク数Ｌに対応するＬ個の特異値で構成される。重み算出処理部３０は、情報量としての寄与度が低い成分に対応する特異値のうち、所定の閾値Ｄより小さい成分を「０」に置き換え、置き換えた値を用いて重み行列を再合成する。このように、重み算出処理部３０は、低ランク化した重み行列を生成する。なお、閾値Ｄは、ランク数Ｌに対する割合や、特異値の大きさに対する絶対値、フロベニウスノルムに対する閾値等に基づき、ユーザが適宜設定してもよい。
【００６０】
このように低ランク化された重み行列の各成分は、次に示す式（２）、（３）で表される。
【００６１】
【数２】
2020155010.tif 000004
【００６２】
以上、低ランク化行列の導出方法を説明したが、低ランク化行列は、特異値分解を行う
以外の方法でもよく、主成分分析、固有値分解、ＱＲ分解を行う方法等が利用可能である。ユーザは、これらの手法を適宜選択することが可能である。
【００６３】
ここで、図５の説明に戻る。次に、ステップＳ３０において、行列サイズの縮小割合が第２縮約パラメータとして設定される。そして、ネットワーク変型・再合成処理部５０は、ステップＳ３０で導出された低ランク化行列に対し、行列サイズの縮小割合に基づくニューロン刈りを行い、低ランク化行列のサイズを縮小する（ステップＳ４０）。行列サイズの縮小割合の単位としては、例えばニューロンの個数や、演算量削減率等が用いられる。ユーザは、行列サイズの縮小割合の単位をこれらから適宜選択することができる。
【００６４】
ニューロン削除の方法としては、例えば、以下に説明する「量子化プルーニング」と呼ばれる方法が用いられる。また、これ以外にも、重み行列の要素である重みのノルムを用いた方法が採用されてもよい。具体的に述べると、この方法では、各ニューロンに入る重みのＬ１ノルムまたはＬ２ノルムを評価値とし、縮小割合の分だけ評価値の低いニューロンが削除される。これらの評価値は、例えば重み算出処理部３０において算出される。
【００６５】
なお、このステップでは、重み行列はステップＳ２０において低ランク化されているため、評価値を用いたニューロン刈りにより、行列ランクに影響を及ぼす場合があり得る。なお、評価値は、Ｌ１ノルムやＬ２ノルムの他にも、低ランク化重み行列の行列要素を用いたものであればよい。また、ニューロン刈りと同時にシナプス刈りを実行することも可能である。また、行列サイズの削減が目的であるため、ニューロン刈りにより重み行列の行が削除されてもよいし、列が削除されてもよい。
【００６６】
ネットワーク変型・再合成処理部５０は、ニューロン刈り等により重み行列のサイズを縮小すると、縮小した重み行列に対応させて、ネットワーク形状を変形する。
【００６７】
図６は、ニューロン刈り、シナプス刈りによるモデル縮約の説明図である。図６（ａ）は、ニューロン刈り、シナプス刈りによる縮約の具体例を示す図であり、図６（ｂ）は、ニューロン刈り、シナプス刈りを行った後のサイズが縮小された重み行列を例示する図である。図６（ａ）において破線で示された箇所は、削除されたニューロン及びシナプスを示している。図６（ａ）に示すように、モデル縮約により、Ｎ１における中央のニューロン、及びＮ３における左から２番目のニューロンが削除されている。また、これにともない、削除されたニューロンと接続されるシナプスも削除されている。重み行列に対してモデル縮約が行われることで、図６（ｂ）に示すように、重み行列のサイズが縮小される。
【００６８】
＜＜＜量子化プルーニング＞＞＞
ここで、量子化プルーニングについて説明する。活性化されるニューロンが必ずしも大きい重みだけに反応しているわけではないことから、量子化プルーニングは、重みを離散的に残しながら行われる。なお、量子化プルーニングは、ニューロン刈りに限らず、シナプス刈りに対しても適用可能である。
【００６９】
図７は、量子化プルーニングの実行手順を例示する図である。図７の縦軸は、各ニューロンの評価値である。評価値としては、例えばニューロンに入る重みの総和等が用いられる。図７の横軸は、ニューロン番号である。なお、図７の例では、説明を容易にするため、評価値が大きくなるにつれてニューロン番号が大きくなるようにしている。なお、シナプス刈りの場合には、縦軸を重みとしても差し支えない。
【００７０】
ステップＳ３０において、残すニューロン個数が第２縮約パラメータとして設定されたとする。そして、重みに対してクラスタリング手法を適用し、残すニューロンの個数分だけクラスター化する。具体的に述べると、図７（ａ）では、各ニューロンが６つのクラスターに分類されている。図７では各クラスターにおける最大評価値を持つニューロンが残され、それ以外のニューロンは削除される。図７では、評価値が大きくなるにつれてニューロン番号が大きくなっているので、各クラスターの右端のニューロンが代表ニューロンとして残されることとなる。なお、図７（ａ）では、削除されるニューロンの評価値にはハッチングが付されている。ニューロン削除の後、残された代表ニューロンに対し、ニューロン番号の再付与が行われ、評価値の分布は図７（ｂ）のように更新される。
【００７１】
図８は、量子化プルーニングの実行手順のその他の例を示す説明図である。図８の例では、各ニューロンをクラスターに分類するまでは、図７と同様である。そして、クラスタリング後、各クラスターにおいて、評価値が、重みの平均値である重心値に近いニューロンを代表ニューロンとして残し、その他のニューロンが削除される。そして、代表ニューロンの評価値が重心値で上書きされる。そして、ニューロン削除の後、残された代表ニューロンに対し、ニューロン番号の再付与が行われ、評価値の分布は図７（ｂ）のように、更新される。
【００７２】
＜＜モデル縮約方法の具体例（２）＞＞
次に、モデル縮約方法の別の具体例について説明する。図９は、モデル縮約方法の一例を示すフロー図である。図９は、図４と対応しているため、図９の各ステップに対応する符号は図４と合わせている。前述の例では、第１縮約処理として低ランク近似、第２縮約処理としてニューロン刈りがそれぞれ割り当てられていたが、本例では、第１縮約処理としてシナプス刈り、第２縮約処理として低ランク近似がそれぞれ割り当てられる。このように、本実施の形態では、縮約処理の内容を第１縮約処理と第２縮約処理との間で入れ換えても、縮約処理を実行することが可能である。
【００７３】
ステップＳ１０では、コネクション刈り割合が第１縮約パラメータとして設定される。そして、重み算出処理部３０は、コネクション刈り割合を用いたシナプス刈りを行い重み行列の要素を変更する。これにより、重み算出処理部３０は、情報量を削減した重み行列に更新する（ステップＳ２０）。ステップＳ２０において、重み算出処理部３０は、例えば、図８で説明した重心値を用いた量子化プルーニング等の方法を用いてシナプス刈りを行う。
【００７４】
ステップＳ４０では、例えば、低ランク割合が第２縮約パラメータとして設定される。ステップＳ５０において、ネットワーク変形・再合成処理部５０は、例えば低ランク割合を用いた低ランク近似を行い、重み行列の行列サイズを縮小する。低ランク近似には、前述した低ランク化行列の導出で説明した処理が行われる。行列サイズの縮小には、非特異値分解であるＱＲ分解を用いた逐次実行可能な低ランク近似が効率的である。ネットワーク変形・再合成処理部５０は、サイズを縮小した重み行列に対応して、ネットワーク形状を変形する。
【００７５】
＜本実施の形態による主な効果＞
本実施の形態によれば、第１縮約処理により更新された重み行列に対し、第２縮約処理が行われ、サイズが縮小された重み行列が生成される。この構成によれば、第１縮約処理と第２縮約処理とが連続して行われるので、複数の縮約方法を組み合わせつつ、モデル縮約に係る設計期間の増大を抑えることが可能となる。
【００７６】
また、本実施の形態によれば、サイズが縮小された重み行列に対し、学習モデルを用いて学習処理が行われる。この構成によれば、縮約処理ごとに学習処理等を行う必要がなくなるので、モデル縮約に係る設計期間の増大が抑えられる。
【００７７】
また、本実施の形態によれば、サイズが縮小された重み行列に対し、推論精度評価用データを用いた推論精度評価が行われる。この構成によれば、縮約処理後のニューラルネットワークのモデルの精度を評価することが可能となる。
【００７８】
また、本実施の形態によれば、学習処理による解析結果を用いて、モデル縮約処理を継続して行うか否かが判断される。この構成によれば、モデル縮約を繰り返し行うことができ、ユーザの要求に適した縮約モデルを生成することが可能となる。
【００７９】
また、本実施の形態によれば、学習処理による解析結果、及び推論精度評価結果に基づき、モデル縮約処理を継続して行うか否かが判断される。この構成によれば、ユーザの要求に、より適した縮約モデルを生成することが可能となる。
【００８０】
（実施の形態２）
次に、実施の形態２について説明する。なお、以下では前述の実施の形態と重複する箇所については、原則として説明を省略する。以下で説明する実施の形態２、３では、重み行列の要素を変更する第１縮約処理が、第１縮約パラメータ及び第２縮約パラメータを用いて行われる。
【００８１】
図１０は、本発明の実施の形態２に係るニューラルネットワークのモデル縮約装置の構成の一例を示すブロック図である。図１０のモデル縮約装置２０１は、学習・評価制御部１０、第１縮約パラメータ受付部２０、重み算出処理部２３０、第２縮約パラメータ受付部４０、ネットワーク変形・再合成処理部５０、重み行列記憶部６０、学習処理部７０、推論精度評価部８０等を備えている。
【００８２】
第２縮約パラメータ受付部４０は、学習・評価制御部１０から入力された第２縮約パラメータを、重み算出処理部２３０、ネットワーク変形・再合成処理部５０へ出力する。重み算出処理部２３０は、第１縮約パラメータ及び第２縮約パラメータを用いて、重み行列に対する第１縮約処理を行う。
【００８３】
図１１は、本発明の実施の形態２に係るモデル縮約方法の概要を示すフロー図である。本実施の形態では、ステップＳ１０において第１縮約パラメータが設定されると、ステップＳ３０において第２縮約パラメータが設定される。ステップＳ２２０において、重み算出処理部２３０は、第１縮約パラメータ及び第２縮約パラメータを用いて、重み行列に対する第１縮約処理を行う。重み算出処理部２３０は、第１縮約処理により更新した重み行列を重み行列記憶部６０へ格納する。ここで更新された重み行列は、第１縮約パラメータ及び第２縮約パラメータの両方に依存している。
【００８４】
ステップＳ２４０おいて、ネットワーク変形・再合成処理部５０は、ステップＳ２２０で更新された重み行列に対し、行列サイズを縮小する第２縮約処理を行う。また、ネットワーク変形・再合成処理部５０は、第２縮約処理により更新された重み行列に対応して、ネットワーク形状を変形する。変形されたネットワーク形状は、第１縮約パラメータ及び第２縮約パラメータの影響を受ける。ネットワーク変形・再合成処理部５０は、更新した重み行列、及び変形したネットワーク形状をモデル記憶部１００の各記憶部に格納する。
【００８５】
＜＜モデル縮約方法の具体例（３）＞＞
次に、本実施の形態におけるモデル縮約方法の具体例について説明する。図１２は、実施の形態２におけるモデル縮約方法の一例を示すフロー図である。図１２は図１１と対応しているステップもあるため、図１１と対応するステップには同一の符号が付されている。本例では、第１縮約処理として低ランク近似、第２縮約処理としてニューロン刈りがそれぞれ割り当てられている。
【００８６】
ステップＳ１０では、行列ランクの閾値を規定する行列ランク閾値が第１縮約パラメータとして設定される。ステップＳ３０では、差分閾値が第２縮約パラメータとして設定される。ここでいう差分とは、低ランク化前の元の重み行列の行列ランクと、低ランク化後の重み行列の行列ランクとの差分である。この差分は次の式（４）で定義される。学習・評価制御部１０は、この差分（Ｒｉｊ）に対する差分閾値（δ）を第１縮約パラメータとして設定する。
【００８７】
【数３】
2020155010.tif 000005
【００８８】
ステップＳ２２０において、重み算出処理部２３０は、行列ランク閾値及び差分閾値を用いて、重み行列に対する低ランク近似を行う。重み算出処理部２３０は、例えば、以下の式（５）に従い、重み行列の各要素の重みを変更する。
【００８９】
【数４】
2020155010.tif 000006
【００９０】
具体的に述べると、差分（Ｒｉｊ）が差分閾値（δ）より小さい要素については（δ＞Ｒｉｊ）重みの変更を行わず、差分（Ｒｉｊ）が差分閾値（δ）より大きい要素については（δ＜Ｒｉｊ）重みを０に変更する。このようにして、重み算出処理部２３０は、重み行列を更新する。すなわち、重み算出処理部２３０は、差分閾値と差分とを比較し、差分が差分閾値以上となる低ランク化の影響が大きい成分を０とし、それ以外の成分については、低ランク化行列における重みを要素として、重み行列を更新する。そして、重み算出処理部２３０は、実施の形態１と同様の方法により低ランク化行列を導出する。
【００９１】
そして、ステップＳ２３０において、ネットワーク変形・再合成処理部５０は、ステップＳ２２０で導出された低ランク化行列に対するニューロン刈りの割合を算出する。例えば、ネットワーク変形・再合成処理部５０は、低ランク化行列において０埋めされた成分の数をニューロン刈り割合として算出してもよい。
【００９２】
ステップＳ２４０において、ネットワーク変形・再合成処理部５０は、ステップＳ２３０で算出したニューロン刈り割合に応じたニューロン刈りを行い、重み行列のサイズを縮小する。また、ネットワーク変形・再合成処理部５０は、サイズを縮小した重み行列に対して、ネットワーク形状を変形する。
【００９３】
なお、低ランク化行列において０埋めされた成分の数をニューロン刈り割合として算出した場合、１つの差分閾値に対して、各層における適切な縮約パラメータを自動的に設定することが可能となる。
【００９４】
本実施の形態によれば、第１縮約パラメータ及び第２縮約パラメータを用いた第１縮約処理が行われる。この構成によれば、第１縮約パラメータ及び第２縮約パラメータの影響を受けて重み行列を更新することが可能となる。
【００９５】
（実施の形態３）
次に、実施の形態３について説明する。図１３は、本発明の実施の形態３に係るニューラルネットワークのモデル縮約装置の構成の一例を示すブロック図である。図１３のモデル縮約装置３０１は、図１０と類似しているが、学習・評価制御部３１０と、第１縮約パラメータ受付部２０及び第２縮約パラメータ受付部４０との間に縮約パラメータ算出処理部３１５が設けられている点が異なる。
【００９６】
学習・評価制御部３１０は、直前に実行された第１縮約処理による縮約量と、第２縮約処理による縮約量との縮約比重を縮約パラメータとして算出する。縮約パラメータ算出処理部３１５は、学習・評価制御部３１０において算出された縮約比重を用いて、第１縮約パラメータ及び第２縮約パラメータを算出する。縮約パラメータ算出処理部３１５は、算出した第１縮約パラメータ及び第２縮約パラメータを第１縮約パラメータ受付部２０及び第２縮約パラメータ受付部４０にそれぞれ出力する。
【００９７】
このように、本実施の形態では、縮約比重を用いて第１縮約パラメータ及び第２縮約パラメータが自動的に算出されるので、初期値を除いてユーザが第１縮約パラメータ及び第２縮約パラメータを直接入力することはない。
【００９８】
図１４は、本発明の実施の形態３に係るモデル縮約方法の概要を示すフロー図である。図１４は、図１１と類似しており、対応するステップには同一の符号が付されている。ステップＳ３１０において、学習・評価制御部３１０は、縮約比重を算出し、縮約比重を縮約パラメータ算出処理部３１５へ出力する。
【００９９】
ステップＳ３２０において、縮約パラメータ算出処理部３１５は、入力された縮約比重を用いて第１縮約パラメータ及び第２縮約パラメータを算出する。算出された第１縮約パラメータは、第１縮約パラメータ受付部２０を介して重み算出処理部３０へ出力される。算出された第２縮約パラメータは、第２縮約パラメータ受付部４０を介して重み算出処理部３０及びネットワーク変形・再合成処理部５０へ出力される。
【０１００】
ステップＳ３６０において、学習・評価制御部３１０は、モデル縮約処理を継続すると判断すると（Ｙｅｓ）、ステップＳ１０に戻り、縮約パラメータ（縮約比重）を算出する。一方、学習・評価制御部３１０は、モデル縮約処理を継続しないと判断すると（Ｎｏ）、モデル縮約処理を終了する。
【０１０１】
本実施の形態によれば、モデル縮約処理を継続する場合、更新対象のパラメータが縮約比重のみとなるため、ループ回数を削減することができ、モデル縮約に係る設計期間の増大をより抑えることが可能となる。
【０１０２】
なお、本発明は上記した実施の形態に限定されるものではなく、様々な変形例が含まれる。また、ある実施の形態の構成の一部を他の実施の形態の構成に置き換えることが可能であり、また、ある実施の形態の構成に他の実施の形態の構成を加えることも可能である。また、各実施の形態の構成の一部について、他の構成の追加、削除、置換をすることが可能である。なお、図面に記載した各部材や相対的なサイズは、本発明を分かりやすく説明するため簡素化・理想化しており、実装上はより複雑な形状となる場合がある。
【符号の説明】
【０１０３】
１、２０１、３０１…モデル縮約装置、１０、３１０…学習・評価制御部、３０、２３０…重み算出処理部、５０…ネットワーク変形・再合成処理部、７０…学習処理部、８０…推論精度評価部、３１５…縮約パラメータ算出処理部
【図１】
2020155010.tif 000007
【図２】
2020155010.tif 000008
【図３】
2020155010.tif 000009
【図４】
2020155010.tif 000010
【図５】
2020155010.tif 000011
【図６】
2020155010.tif 000012
【図７】
2020155010.tif 000013
【図８】
2020155010.tif 000014
【図９】
2020155010.tif 000015
【図１０】
2020155010.tif 000016
【図１１】
2020155010.tif 000017
【図１２】
2020155010.tif 000018
【図１３】
2020155010.tif 000019
【図１４】
2020155010.tif 000020