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

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

▶ 株式会社日立超エル・エス・アイ・システムズの特許一覧

特許7150651ニューラルネットワークのモデル縮約装置
<>
  • 特許-ニューラルネットワークのモデル縮約装置 図1
  • 特許-ニューラルネットワークのモデル縮約装置 図2
  • 特許-ニューラルネットワークのモデル縮約装置 図3
  • 特許-ニューラルネットワークのモデル縮約装置 図4
  • 特許-ニューラルネットワークのモデル縮約装置 図5
  • 特許-ニューラルネットワークのモデル縮約装置 図6
  • 特許-ニューラルネットワークのモデル縮約装置 図7
  • 特許-ニューラルネットワークのモデル縮約装置 図8
  • 特許-ニューラルネットワークのモデル縮約装置 図9
  • 特許-ニューラルネットワークのモデル縮約装置 図10
  • 特許-ニューラルネットワークのモデル縮約装置 図11
  • 特許-ニューラルネットワークのモデル縮約装置 図12
  • 特許-ニューラルネットワークのモデル縮約装置 図13
  • 特許-ニューラルネットワークのモデル縮約装置 図14
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-09-30
(45)【発行日】2022-10-11
(54)【発明の名称】ニューラルネットワークのモデル縮約装置
(51)【国際特許分類】
   G06N 3/08 20060101AFI20221003BHJP
【FI】
G06N3/08 120
【請求項の数】 1
(21)【出願番号】P 2019055025
(22)【出願日】2019-03-22
(65)【公開番号】P2020155010
(43)【公開日】2020-09-24
【審査請求日】2021-03-23
(73)【特許権者】
【識別番号】000233169
【氏名又は名称】株式会社日立ソリューションズ・テクノロジー
(74)【代理人】
【識別番号】110002066
【氏名又は名称】弁理士法人筒井国際特許事務所
(72)【発明者】
【氏名】正木 晶子
(72)【発明者】
【氏名】小野 豪一
(72)【発明者】
【氏名】猪貝 光祥
【審査官】金田 孝之
(56)【参考文献】
【文献】米国特許出願公開第2018/0232640(US,A1)
【文献】特開2018-129033(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/08
(57)【特許請求の範囲】
【請求項1】
ニューラルネットワークのモデル縮約装置であって、
前記ニューラルネットワークのモデルは、ネットワーク形状と前記ネットワーク形状に対応する重み行列とを含み、
第1縮約パラメータを用いて、前記重み行列の要素を変更する第1縮約処理を行い、前記重み行列を更新する第1縮約処理部と、
第2縮約パラメータを用いて、更新された前記重み行列のサイズを縮小する第2縮約処理を行い、縮小した前記重み行列に対応させて前記ネットワーク形状を変形する第2縮約処理部と、
直前に実行された前記第1縮約処理による縮約量と、前記第2縮約処理による縮約量との縮約比重を縮約パラメータとして算出する制御部と、
前記縮約比重を用いて前記第1縮約パラメータ及び前記第2縮約パラメータを算出する縮約パラメータ算出処理部と、
を備えている、
ニューラルネットワークのモデル縮約装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ニューラルネットワークのモデル縮約装置に関する。
【背景技術】
【0002】
近年、人工知能を搭載した機器の利用が進んでいる。ニューラルネットワークを用いた人工知能では、認識精度を高めることができるようモデル設計がなされており、高精度なニューラルネットワークほどモデルの規模が大きい。ただし、大規模なニューラルネットワークのモデルは、冗長な部分を多く含んでいる。組み込みデバイス上でニューラルネットワークによる推論計算を行う場合、取り扱うことができるデータ容量や消費電力に限界がある。このため、認識精度を保持しつつ、冗長な部分を削減する技術が開発されている。
【0003】
例えば、特許文献1には、ニューラルネットワークの性能が所定要求を満たすことを確保すると共に、行列の次元を削減することで行列乗算の計算量を低減でき、ニューラルネットワークの処理速度を向上できる、ニューラルネットワークの装置が開示されている。
【0004】
一方、ニューラルネットワークの推論結果への感度が低い重みに関する演算を省略することにより、演算量を削減する手法も開発されている。この手法には、例えば、ニューラルネットワークの構造のスパース性、行列濃度(cardinality)、あるいは行列特性(特異値、主成分、固有値等の行列特性)等、ニューラルネットワークのモデルの性質を表現する上で互いに独立した指標を縮約基準に用いる手法が含まれる。これらの手法は、例えば、ニューロン刈り、シナプス刈り、低ランク近似等と呼ばれる手法である。これらの手法は、前述した演算量を削減する手法と本質的には同じアプローチにより行われる手法である。
【0005】
また、一種類の縮約基準に基づく方法ではモデルの縮約規模に限界があるため、異なる手法を逐次的に組み合わせて適用することで、演算量を大きく削減する技術が非特許文献1に開示されている。
【先行技術文献】
【特許文献】
【0006】
【文献】特開2018-109947号公報
【非特許文献】
【0007】
【文献】“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)
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、単純に異なる縮約方法を逐次的に組み合わせても、必然的に縮約方法の数だけループ箇所が増加するため、モデル縮約に係る設計手続きが複雑化し、設計期間が増大してしまう。
【0009】
そこで、本発明は、複数の縮約方法を組み合わせつつ、モデル縮約に係る設計期間の増大を抑えることが可能なニューラルネットワークのモデル縮約装置等を提供することを目的とする。
【課題を解決するための手段】
【0010】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、以下のとおりである。
【0011】
本発明の代表的な実施の形態によるニューラルネットワークのモデル縮約装置は、第1縮約パラメータを用いて、重み行列の要素を変更する第1縮約処理を行い、重み行列を更新する第1縮約処理部と、第2縮約パラメータを用いて、更新された重み行列のサイズを縮小する第2縮約処理を行い、縮小した重み行列に対応させてネットワーク形状を変形する第2縮約処理部と、を備えている。
【発明の効果】
【0012】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【0013】
すなわち、本発明の代表的な実施の形態によれば、複数の縮約方法を組み合わせつつ、モデル縮約に係る設計期間の増大を抑えることが可能となる。
【図面の簡単な説明】
【0014】
図1】一般的なニューラルネットワークの全体像を説明する図である。
図2】ニューラルネットワークの重み行列を説明する図である。
図3】本発明の実施の形態1に係るニューラルネットワークのモデル縮約装置の構成の一例を示すブロック図である。
図4】本発明の実施の形態1に係るモデル縮約方法の概要を示すフロー図である。
図5】モデル縮約方法の一例を示すフロー図である。
図6】ニューロン刈り、シナプス刈りによるモデル縮約の説明図である。
図7】量子化プルーニングの実行手順を例示する図である。
図8】量子化プルーニングの実行手順のその他の例を示す説明図である。
図9】モデル縮約方法の一例を示すフロー図である。
図10】本発明の実施の形態2に係るニューラルネットワークのモデル縮約装置の構成の一例を示すブロック図である。
図11】本発明の実施の形態2に係るモデル縮約方法の概要を示すフロー図である。
図12】実施の形態2におけるモデル縮約方法の一例を示すフロー図である。
図13】本発明の実施の形態3に係るニューラルネットワークのモデル縮約装置の構成の一例を示すブロック図である。
図14】本発明の実施の形態3に係るモデル縮約方法の概要を示すフロー図である。
【発明を実施するための形態】
【0015】
以下、本発明の実施の形態を、図面を参照しつつ説明する。以下で説明する各実施の形態は、本発明を実現するための一例であり、本発明の技術範囲を限定するものではない。なお、実施例において、同一の機能を有する部材には同一の符号を付し、その繰り返しの説明は、特に必要な場合を除き省略する。
【0016】
(実施の形態1)
<ニューラルネットワークの全体像>
まず、ニューラルネットワークの全体像について説明する。図1は、一般的なニューラルネットワークの全体像を説明する図である。ここでは、ニューラルネットワークの具体例として、静止画に対する畳み込みニューラルネットワークを挙げる。また、図1では、入力データの静止画を、畳み込みニューラルネットワークにより、ユーザが定義した各クラスに分類することを目的とするものとする。
【0017】
図1のニューラルネットワークは、入力層L10、隠れ層L20~L90、及び出力層L100を有する。これらの層は、例えば、ソフトウェアを実行することによりプロセッサ等の演算装置上に実現される。
【0018】
入力層L10から最深層の隠れ層L90に到達するまでの間には、畳み込み演算層、全結合演算層、プーリング演算層等の各層がある。ニューラルネットワークには、ここで例示した各層が複数含まれてもよい。なお、各層の符号は便宜的に付したものであり、ニューラルネットワークの層数を示唆するものではない。
【0019】
入力層L10における演算処理の前段階では、演算装置は、入力画像をニューラルネットワークの演算に適した画像データに変形する。そして、演算装置は、変形した画像データを記憶部へ格納しておく。
【0020】
入力層L10等の各層は、それぞれに対応する重み行列をそれぞれ所持している。入力層L10は、変形した画像データに対し、重み行列を用いた畳み込み演算を実行する。詳細に述べる、入力層L10は、畳み込み演算以外にも、バッチ処理やバイアス項に関する処理等を実行する。これにより、画像データは、特徴マップの状態に遷移する。続いて、最浅層の隠れ層L20は、特徴マップに対する演算処理を実行する。そして、各層における処理が実行された後、出力層L100は、例えば出力関数を用いて、入力画像に対して分類されるべき各クラスの確率分布を演算する。そして、出力層L100は、入力画像に対するクラス分類結果を出力する。そして、演算装置は、入力画像が、何の画像であるかの判定を行う。
【0021】
ここで、1次元ニューラルネットワークを例にして、重み行列について説明する。図2は、ニューラルネットワークの重み行列を説明する図である。図2(a)は、重み行列を用いた演算を説明する図であり、図2(b)は、重み行列を例示する図である。図2(a)では、矢印の方向に演算が進むものとする。図2(a)のN1、N3に含まれる各ニューロンは、入力に対する所定の値を返す演算ユニットである。S2に含まれる各シナプスには、重みが割り当てられている。前層のN1の各ニューロンからの戻り値と、対応する各シナプスの重みとの積が、次層のN3の各ニューロンに入力され和算される。このような演算処理は、行列演算で表すことができ、各シナプスの重みを行列形式でまとめたものが、図2(b)の重み行列Wとして表される。なお、重み行列は、各層によって行列のサイズや重みを示す要素が異なる。
【0022】
なお、以下では、重み行列に対し記号「W」を用いているが、特に、解析的更新が行われた重み行列に対しては、「W」にチルダ「~」のアクセントをつけた記号を用いることとする。
【0023】
ここでは、静止画の畳み込みニューラルネットワークを一例として挙げたが、入力データは、静止画に限定されるものではない。ニューラルネットワークは、前述した画像認識、音声認識、自然言語処理、温度、湿度、及び流体の流量を認識することによる周辺環境の認識等を行うことができる。
【0024】
また、ニューラルネットワークの種類も、畳み込みニューラルネットワークに限定されるものではなく、行列形式で定義できる演算であれば適用可能である。また、出力層L100における出力値も、単にクラス分類に限定されるものではなく、物体検出結果や音声認識結果など、ユーザの目的に合わせて変更可能である。
【0025】
ニューラルネットワークのモデル(以下、単に「モデル」と呼ぶ場合がある)は、ネットワーク形状、及びニューラルネットワークの各層における重み行列を含む。詳しくは後述するが、重み行列は、ユーザが設定する所定の認識精度を満たすように、学習によって最適化される。
【0026】
<モデル縮約装置の構成>
次に、モデル縮約装置の構成について説明する。モデル縮約装置1は、ニューラルネットワークのモデル縮約を行う機能ブロックである。以下に説明するモデル縮約処理は、図1の入力層L10~最深の隠れ層L90に対して行われる。
【0027】
図3は、本発明の実施の形態1に係るニューラルネットワークのモデル縮約装置の構成の一例を示すブロック図である。図3に示すように、モデル縮約装置1は、学習・評価制御部(制御部)10、第1縮約パラメータ受付部20、重み算出処理部(第1縮約処理部)30、第2縮約パラメータ受付部40、ネットワーク変形・再合成処理部(第2縮約処理部)50、重み行列記憶部60、学習処理部70、推論精度評価部80等を備えている。
【0028】
重み行列記憶部60以外のモデル縮約装置1を構成する各機能ブロックは、例えばプロセッサがソフトウェアを実行することで実現される。また、各機能ブロックは、ハードウェアで実現されてもよいし、ハードウェアとソフトウェアとの連携により実現されてもよい。
【0029】
図3に示すように、モデル縮約装置1には、モデル記憶部100、学習用データ記憶部71、推論用データ記憶部81、入力処理部90等が接続されている。なお、モデル記憶部100、学習用データ記憶部71、及び推論用データ記憶部81は、それぞれ独立して設けられてもよいし、これらと一体で構成されてもよい。また、モデル縮約装置1内の重み行列記憶部60も、これらの記憶部と独立していてもよいし、これらと一体で構成されてもよい。重み行列記憶部60は、モデル縮約装置1の外に設けられてもよい。
【0030】
入力処理部90は、モデル縮約装置1において実行される縮約手法を指定する機能ブロックである。入力処理部90は、例えば、入力インタフェースと接続され、入力インタフェースを介してユーザが選択した複数(例えば2種類)の縮約手法を学習・評価制御部10へ通知する。また、入力処理部90は、ユーザが選択した縮約手法に対応する縮約パラメータが入力された場合には、入力された縮約パラメータを学習・評価制御部10へ出力する。縮約パラメータは、モデルの縮約率を決定するパラメータである。縮約パラメータは、例えば、縮約率の閾値、縮約率の刻み幅、演算量削減率等であり、ユーザが選択した縮約手法に合ったものが適宜設定される。
【0031】
モデル記憶部100は、ニューラルネットワークのモデルを格納する記憶媒体である。図3に示すように、モデル記憶部100は、重み行列を格納する重み行列記憶部101、ネットワーク形状を格納するネットワーク形状記憶部102を備えている。モデル縮約処理により、重み行列及びネットワーク形状は適宜更新されるが、モデル記憶部100は、更新された重み行列及びネットワーク形状のみを格納してもよいし、更新前後の重み行列及びネットワーク形状をそれぞれ格納してもよい。
【0032】
学習・評価制御部10は、重み行列の学習・評価に関する処理や、モデル縮約に関する処理の制御等を行う機能ブロックである。モデル縮約に関する処理として、学習・評価制御部10は、入力処理部90から通知された2種類の縮約手法の割り当てを行う。例えば、学習・評価制御部10は、重み算出処理部30で実行される縮約を第1縮約に割り当て、ネットワーク変形・再合成処理部50で実行される縮約を第2縮約に割り当てる。そして、学習・評価制御部10は、第1縮約、第2縮約に対応する縮約パラメータ(第1縮約パラメータ、第2縮約パラメータ)をそれぞれ設定する。学習・評価制御部10は、第1縮約として設定された縮約手法を通知する第1縮約通知、及び第1縮約に対応する第1縮約パラメータを第1縮約パラメータ受付部20へ出力する。一方、学習・評価制御部10は、第2縮約として設定された縮約手法を通知する第2縮約通知、及び第2縮約に対応する第2縮約パラメータを第2縮約パラメータ受付部40へ出力する。
【0033】
また、学習・評価制御部10は、重み行列の学習・評価に関する処理として、学習処理部70や推論精度評価部80によるモデル縮約後の重み行列の評価結果に基づき、モデル縮約処理を継続するか否かの判定を行う。モデル縮約処理を継続する場合、学習・評価制御部10は、縮約パラメータを再設定し、モデル縮約処理を継続させる。
【0034】
第1縮約パラメータ受付部20は、学習・評価制御部10から入力された第1縮約通知、及び第1縮約パラメータを重み算出処理部30へ出力する。
【0035】
重み算出処理部30は、第1縮約パラメータ受付部20から入力された第1縮約通知、第1縮約パラメータに基づき、重み行列記憶部101に格納された重み行列に対する第1縮約処理を行う機能ブロックである。第1縮約処理において、重み算出処理部30は、重み行列のサイズを変更することなく各要素を更新することにより、重み行列を更新する。重み算出処理部30における重み行列の更新は、学習等の最適化により行われるのではなく、解析的に行われる。また、行列のサイズが変わらないので、第1縮約においては、ネットワークの形状も変わらない。重み算出処理部30は、更新した重み行列を重み行列記憶部60に格納する。
【0036】
第2縮約パラメータ受付部40は、学習・評価制御部10から入力された第2縮約通知、及び第2縮約パラメータをネットワーク変形・再合成処理部50へ出力する。
【0037】
ネットワーク変形・再合成処理部50は、第2縮約パラメータ受付部40から入力された第2縮約通知、第2縮約パラメータに基づき、ネットワークの変形や再合成に関する処理を制御する機能ブロックである。ネットワーク変形・再合成処理部50は、重み算出処理部30で更新された重み行列に対する対する第2縮約を行い、重み行列のサイズを縮小し、重み行列を変形する。そして、ネットワーク変形・再合成処理部50は、変形した重み行列に基づきネットワークの再合成を行い、ネットワーク形状を更新する。ネットワーク変形・再合成処理部50は、更新したネットワーク形状をネットワーク形状記憶部102に格納する。
【0038】
学習用データ記憶部71は、重み行列に対する学習処理を行うための学習データ等を格納する。学習処理部70は、学習用データ記憶部71の学習データを用いて、重み行列記憶部101に格納された重み行列に対する学習処理を行う機能ブロックである。学習処理部70は、学習データを基に、重み行列を用いた解析処理を実行させる。そして、学習処理部70は、解析結果と、学習データとを比較して、重み行列における各要素の重みを最適化し、重み行列の更新を行う。
【0039】
重み行列記憶部101に格納された重み行列には、後述するように、推論精度評価部80による推論精度評価が行われる。推論精度評価結果は、学習・評価制御部10に入力され、学習処理の際、学習処理部70は、推論精度評価結果に基づく制御を学習・評価制御部10から受ける。
【0040】
推論用データ記憶部81は、重み行列に対する推論精度評価に用いられる推論精度評価用データを格納する。推論精度評価部80は、推論精度評価用データをテストデータとして、重み行列記憶部101に格納された重み行列に対する推論精度評価を行う。推論精度評価部80は、推論精度評価結果を学習・評価制御部10へ出力する。
【0041】
<モデル縮約方法>
次に、本実施の形態におけるモデル縮約方法について説明する。図4は、本発明の実施の形態1に係るモデル縮約方法の概要を示すフロー図である。図4のフローには、ステップS10~S60が含まれる。
【0042】
モデル縮約処理が開始されると(START)、第1縮約処理に用いられる第1縮約パラメータの設定が行われる(ステップS10)。学習・評価制御部10は、例えば、第1縮約に対する縮約パラメータの初期値を不揮発性メモリ(図示は省略)から読み出し、読み出した初期値を第1縮約パラメータに設定する。そして、学習・評価制御部10は、設定した第1縮約パラメータを第1縮約パラメータ受付部20へ出力する。また、学習・評価制御部10は、これ以外にも、ユーザにより設定された値を第1縮約パラメータに設定してもよい。
【0043】
そして、重み算出処理部30は、ステップS10において設定された第1縮約パラメータを用いた第1縮約処理を行い、重み行列の各要素の変更を行う(ステップS20)。重み算出処理部30は、変更した各要素からなる重み行列を生成し、重み行列を更新する。重み算出処理部30は、更新した重み行列を重み行列記憶部60へ格納する。
【0044】
次に、第2縮約処理に用いられる第2縮約パラメータの設定が行われる(ステップS30)。学習・評価制御部10は、例えば、第2縮約に対する縮約パラメータの初期値を不揮発性メモリ(図示は省略)から読み出し、読み出した初期値を第2縮約パラメータに設定する。そして、学習・評価制御部10は、設定した第2縮約パラメータを第2縮約パラメータ受付部40へ出力する。また、学習・評価制御部10は、これ以外にも、ユーザにより設定された値を第2縮約パラメータに設定してもよい。
【0045】
そして、ネットワーク変型・再合成処理部50は、ステップS30において設定された第2縮約パラメータを用いた第2縮約処理を行い、重み行列記憶部60へ格納された、更新された重み行列のサイズを縮小する(ステップS40)。さらに、ネットワーク変型・再合成処理部50は、ネットワーク形状記憶部102に格納されたネットワーク形状を読み出し、読み出したネットワーク形状を重み行列に対応させて変形し、再結合する。ネットワーク変型・再合成処理部50は、縮小した重み行列をモデル記憶部100の重み行列記憶部101に格納し、変形したネットワーク形状をネットワーク形状記憶部102に格納する。
【0046】
学習処理部70は、学習用データ記憶部71から学習用データを読み出し、縮小された重み行列に対する学習処理を行う(ステップS50)。具体的に述べると、学習処理部70は、学習用データを入力データとし、重み行列記憶部101に格納された縮小された重み行列を用いた演算処理を実行させる。学習処理部70は、出力層L100のデータ又は出力層L100から出力されるデータを演算結果とし、入力データと、演算結果とを比較して重み行列の最適化を行う。また、学習処理部70は、重み行列に対する学習結果を学習・評価制御部10へ出力する。
【0047】
また、並行して、推論精度評価部80は、推論用データ記憶部81から推論精度評価用データを読み出し、縮小された重み行列に対する推論精度評価処理を行う。具体的に述べると、推論精度評価部80は、推論精度評価用データを入力データとし、重み行列記憶部101に格納された縮小された重み行列を用いた演算処理を実行させる。推論精度評価部80は、出力層L100のデータ又は出力層L100から出力されるデータを演算結果とし、推論精度評価用データと、演算結果とを比較して推論精度評価を行い、推論精度評価結果を学習・評価制御部10へ出力する。推論精度評価部80による推論精度評価は、所定の間隔で複数回行われる。
【0048】
学習・評価制御部10は、入力された学習結果や推論精度評価結果を用いて、モデル縮約処理を継続するか終了するかの判定を行う(ステップS60)。例えば、学習・評価制御部10は、学習結果を参照し、重み行列における各要素の重みを変更すべきと判断した場合(1)、ステップS10に戻り、第1縮約パラメータ及び第2縮約パラメータの再設定を行い、再設定された縮約パラメータを用いてモデル縮約処理を継続する。
【0049】
また、例えば、学習・評価制御部10は、重み行列における各要素の重みを変更する必要はないが、推論精度評価結果を参照し、推論精度が所定の閾値より低い又は推論精度が急激に低下したと判断した場合には(2)、ステップS30に戻り第2縮約パラメータの再設定のみを行い、再設定された縮約パラメータを用いてモデル縮約処理を継続する。これらに対し、学習・評価制御部10は、各層における重み行列における各要素の重みを変更する必要はなく、推論精度が所定の閾値より高い場合(3)、各縮約パラメータの再設定は必要ないと判断しモデル縮約処理を終了する(END)。
【0050】
また、これ以外にも、学習・評価制御部10は、例えば、推論精度の低下が複数回(例えば3回以上)連続して発生しているか、縮約率が目標の値に達しているかを判定項目としてモデル縮約処理を継続するか終了するかの判定を行ってもよい。具体的に述べると、推論精度の低下が3回以上連続して発生している、かつ、モデル縮約率が目標に達していないと判断した場合(1)、学習・評価制御部10は、ステップS10に戻り、第1縮約パラメータ及び第2縮約パラメータの再設定を行い、再設定された縮約パラメータを用いてモデル縮約処理を継続する。
【0051】
また、学習・評価制御部10は、推論精度の低下が3回以上連続して発生している、又は、モデル縮約率が目標に達していないと判断した場合(2)、学習・評価制御部10は、ステップS30に戻り第2縮約パラメータの再設定のみを行い、再設定された縮約パラメータを用いてモデル縮約処理を継続する。これらに対し、学習・評価制御部10は、推論精度の低下が3回以上連続して発生していない、かつ、モデル縮約率が目標に達していると判断した場合(3)各縮約パラメータの再設定は必要ないと判断しモデル縮約処理を終了する(END)。
【0052】
これら以外にも、モデル縮約処理を継続するか否かの判定項目は、ユーザにより任意に設定可能である。
【0053】
第1縮約パラメータ、第2縮約パラメータの再設定において、学習・評価制御部10は、ユーザにより入力された値を各縮約パラメータに設定してもよいし、モデル縮約率の再設定に用いる方法(数式、リスト、テーブル等)を予め指定しておくことで、第1縮約パラメータ、第2縮約パラメータの再設定を自動的に行ってもよい。
【0054】
なお、学習・評価制御部10は、推論精度評価結果を用いずに、モデル縮約処理を継続するか終了するかの判定を行ってもよい。
【0055】
<<モデル縮約方法の具体例(1)>>
次に、モデル縮約方法の具体例について説明する。図5は、モデル縮約方法の一例を示すフロー図である。図5は、図4と対応しているため、図5の各ステップに対応する符号は図4と合わせている。本例では、第1縮約処理として低ランク近似、第2縮約処理としてニューロン刈りがそれぞれ割り当てられている。
【0056】
ステップS10において、行列ランク閾値が第1縮約パラメータとして設定される。そして、重み算出処理部30は、行列ランク閾値を用いた低ランク近似を行い、重み行列の低ランク化行列を導出する(ステップS20)。
【0057】
<<<低ランク化行列の導出方法>>>
ここで、低ランク化行列の導出方法の例を説明する。重み算出処理部30は、次の式(1)を用いて、重み行列の特異値分解を行う。
【0058】
【数1】
【0059】
式(1)において、Uは左特異ベクトル、Vは右特異ベクトルの転置、Sは特異値対角行列である。特異値対角行列Sの対角成分は、重み行列のランク数Lに対応するL個の特異値で構成される。重み算出処理部30は、情報量としての寄与度が低い成分に対応する特異値のうち、所定の閾値Dより小さい成分を「0」に置き換え、置き換えた値を用いて重み行列を再合成する。このように、重み算出処理部30は、低ランク化した重み行列を生成する。なお、閾値Dは、ランク数Lに対する割合や、特異値の大きさに対する絶対値、フロベニウスノルムに対する閾値等に基づき、ユーザが適宜設定してもよい。
【0060】
このように低ランク化された重み行列の各成分は、次に示す式(2)、(3)で表される。
【0061】
【数2】
【0062】
以上、低ランク化行列の導出方法を説明したが、低ランク化行列は、特異値分解を行う
以外の方法でもよく、主成分分析、固有値分解、QR分解を行う方法等が利用可能である。ユーザは、これらの手法を適宜選択することが可能である。
【0063】
ここで、図5の説明に戻る。次に、ステップS30において、行列サイズの縮小割合が第2縮約パラメータとして設定される。そして、ネットワーク変型・再合成処理部50は、ステップS30で導出された低ランク化行列に対し、行列サイズの縮小割合に基づくニューロン刈りを行い、低ランク化行列のサイズを縮小する(ステップS40)。行列サイズの縮小割合の単位としては、例えばニューロンの個数や、演算量削減率等が用いられる。ユーザは、行列サイズの縮小割合の単位をこれらから適宜選択することができる。
【0064】
ニューロン削除の方法としては、例えば、以下に説明する「量子化プルーニング」と呼ばれる方法が用いられる。また、これ以外にも、重み行列の要素である重みのノルムを用いた方法が採用されてもよい。具体的に述べると、この方法では、各ニューロンに入る重みのL1ノルムまたはL2ノルムを評価値とし、縮小割合の分だけ評価値の低いニューロンが削除される。これらの評価値は、例えば重み算出処理部30において算出される。
【0065】
なお、このステップでは、重み行列はステップS20において低ランク化されているため、評価値を用いたニューロン刈りにより、行列ランクに影響を及ぼす場合があり得る。なお、評価値は、L1ノルムやL2ノルムの他にも、低ランク化重み行列の行列要素を用いたものであればよい。また、ニューロン刈りと同時にシナプス刈りを実行することも可能である。また、行列サイズの削減が目的であるため、ニューロン刈りにより重み行列の行が削除されてもよいし、列が削除されてもよい。
【0066】
ネットワーク変型・再合成処理部50は、ニューロン刈り等により重み行列のサイズを縮小すると、縮小した重み行列に対応させて、ネットワーク形状を変形する。
【0067】
図6は、ニューロン刈り、シナプス刈りによるモデル縮約の説明図である。図6(a)は、ニューロン刈り、シナプス刈りによる縮約の具体例を示す図であり、図6(b)は、ニューロン刈り、シナプス刈りを行った後のサイズが縮小された重み行列を例示する図である。図6(a)において破線で示された箇所は、削除されたニューロン及びシナプスを示している。図6(a)に示すように、モデル縮約により、N1における中央のニューロン、及びN3における左から2番目のニューロンが削除されている。また、これにともない、削除されたニューロンと接続されるシナプスも削除されている。重み行列に対してモデル縮約が行われることで、図6(b)に示すように、重み行列のサイズが縮小される。
【0068】
<<<量子化プルーニング>>>
ここで、量子化プルーニングについて説明する。活性化されるニューロンが必ずしも大きい重みだけに反応しているわけではないことから、量子化プルーニングは、重みを離散的に残しながら行われる。なお、量子化プルーニングは、ニューロン刈りに限らず、シナプス刈りに対しても適用可能である。
【0069】
図7は、量子化プルーニングの実行手順を例示する図である。図7の縦軸は、各ニューロンの評価値である。評価値としては、例えばニューロンに入る重みの総和等が用いられる。図7の横軸は、ニューロン番号である。なお、図7の例では、説明を容易にするため、評価値が大きくなるにつれてニューロン番号が大きくなるようにしている。なお、シナプス刈りの場合には、縦軸を重みとしても差し支えない。
【0070】
ステップS30において、残すニューロン個数が第2縮約パラメータとして設定されたとする。そして、重みに対してクラスタリング手法を適用し、残すニューロンの個数分だけクラスター化する。具体的に述べると、図7(a)では、各ニューロンが6つのクラスターに分類されている。図7では各クラスターにおける最大評価値を持つニューロンが残され、それ以外のニューロンは削除される。図7では、評価値が大きくなるにつれてニューロン番号が大きくなっているので、各クラスターの右端のニューロンが代表ニューロンとして残されることとなる。なお、図7(a)では、削除されるニューロンの評価値にはハッチングが付されている。ニューロン削除の後、残された代表ニューロンに対し、ニューロン番号の再付与が行われ、評価値の分布は図7(b)のように更新される。
【0071】
図8は、量子化プルーニングの実行手順のその他の例を示す説明図である。図8の例では、各ニューロンをクラスターに分類するまでは、図7と同様である。そして、クラスタリング後、各クラスターにおいて、評価値が、重みの平均値である重心値に近いニューロンを代表ニューロンとして残し、その他のニューロンが削除される。そして、代表ニューロンの評価値が重心値で上書きされる。そして、ニューロン削除の後、残された代表ニューロンに対し、ニューロン番号の再付与が行われ、評価値の分布は図7(b)のように、更新される。
【0072】
<<モデル縮約方法の具体例(2)>>
次に、モデル縮約方法の別の具体例について説明する。図9は、モデル縮約方法の一例を示すフロー図である。図9は、図4と対応しているため、図9の各ステップに対応する符号は図4と合わせている。前述の例では、第1縮約処理として低ランク近似、第2縮約処理としてニューロン刈りがそれぞれ割り当てられていたが、本例では、第1縮約処理としてシナプス刈り、第2縮約処理として低ランク近似がそれぞれ割り当てられる。このように、本実施の形態では、縮約処理の内容を第1縮約処理と第2縮約処理との間で入れ換えても、縮約処理を実行することが可能である。
【0073】
ステップS10では、コネクション刈り割合が第1縮約パラメータとして設定される。そして、重み算出処理部30は、コネクション刈り割合を用いたシナプス刈りを行い重み行列の要素を変更する。これにより、重み算出処理部30は、情報量を削減した重み行列に更新する(ステップS20)。ステップS20において、重み算出処理部30は、例えば、図8で説明した重心値を用いた量子化プルーニング等の方法を用いてシナプス刈りを行う。
【0074】
ステップS40では、例えば、低ランク割合が第2縮約パラメータとして設定される。ステップS50において、ネットワーク変形・再合成処理部50は、例えば低ランク割合を用いた低ランク近似を行い、重み行列の行列サイズを縮小する。低ランク近似には、前述した低ランク化行列の導出で説明した処理が行われる。行列サイズの縮小には、非特異値分解であるQR分解を用いた逐次実行可能な低ランク近似が効率的である。ネットワーク変形・再合成処理部50は、サイズを縮小した重み行列に対応して、ネットワーク形状を変形する。
【0075】
<本実施の形態による主な効果>
本実施の形態によれば、第1縮約処理により更新された重み行列に対し、第2縮約処理が行われ、サイズが縮小された重み行列が生成される。この構成によれば、第1縮約処理と第2縮約処理とが連続して行われるので、複数の縮約方法を組み合わせつつ、モデル縮約に係る設計期間の増大を抑えることが可能となる。
【0076】
また、本実施の形態によれば、サイズが縮小された重み行列に対し、学習モデルを用いて学習処理が行われる。この構成によれば、縮約処理ごとに学習処理等を行う必要がなくなるので、モデル縮約に係る設計期間の増大が抑えられる。
【0077】
また、本実施の形態によれば、サイズが縮小された重み行列に対し、推論精度評価用データを用いた推論精度評価が行われる。この構成によれば、縮約処理後のニューラルネットワークのモデルの精度を評価することが可能となる。
【0078】
また、本実施の形態によれば、学習処理による解析結果を用いて、モデル縮約処理を継続して行うか否かが判断される。この構成によれば、モデル縮約を繰り返し行うことができ、ユーザの要求に適した縮約モデルを生成することが可能となる。
【0079】
また、本実施の形態によれば、学習処理による解析結果、及び推論精度評価結果に基づき、モデル縮約処理を継続して行うか否かが判断される。この構成によれば、ユーザの要求に、より適した縮約モデルを生成することが可能となる。
【0080】
(実施の形態2)
次に、実施の形態2について説明する。なお、以下では前述の実施の形態と重複する箇所については、原則として説明を省略する。以下で説明する実施の形態2、3では、重み行列の要素を変更する第1縮約処理が、第1縮約パラメータ及び第2縮約パラメータを用いて行われる。
【0081】
図10は、本発明の実施の形態2に係るニューラルネットワークのモデル縮約装置の構成の一例を示すブロック図である。図10のモデル縮約装置201は、学習・評価制御部10、第1縮約パラメータ受付部20、重み算出処理部230、第2縮約パラメータ受付部40、ネットワーク変形・再合成処理部50、重み行列記憶部60、学習処理部70、推論精度評価部80等を備えている。
【0082】
第2縮約パラメータ受付部40は、学習・評価制御部10から入力された第2縮約パラメータを、重み算出処理部230、ネットワーク変形・再合成処理部50へ出力する。重み算出処理部230は、第1縮約パラメータ及び第2縮約パラメータを用いて、重み行列に対する第1縮約処理を行う。
【0083】
図11は、本発明の実施の形態2に係るモデル縮約方法の概要を示すフロー図である。本実施の形態では、ステップS10において第1縮約パラメータが設定されると、ステップS30において第2縮約パラメータが設定される。ステップS220において、重み算出処理部230は、第1縮約パラメータ及び第2縮約パラメータを用いて、重み行列に対する第1縮約処理を行う。重み算出処理部230は、第1縮約処理により更新した重み行列を重み行列記憶部60へ格納する。ここで更新された重み行列は、第1縮約パラメータ及び第2縮約パラメータの両方に依存している。
【0084】
ステップS240おいて、ネットワーク変形・再合成処理部50は、ステップS220で更新された重み行列に対し、行列サイズを縮小する第2縮約処理を行う。また、ネットワーク変形・再合成処理部50は、第2縮約処理により更新された重み行列に対応して、ネットワーク形状を変形する。変形されたネットワーク形状は、第1縮約パラメータ及び第2縮約パラメータの影響を受ける。ネットワーク変形・再合成処理部50は、更新した重み行列、及び変形したネットワーク形状をモデル記憶部100の各記憶部に格納する。
【0085】
<<モデル縮約方法の具体例(3)>>
次に、本実施の形態におけるモデル縮約方法の具体例について説明する。図12は、実施の形態2におけるモデル縮約方法の一例を示すフロー図である。図12図11と対応しているステップもあるため、図11と対応するステップには同一の符号が付されている。本例では、第1縮約処理として低ランク近似、第2縮約処理としてニューロン刈りがそれぞれ割り当てられている。
【0086】
ステップS10では、行列ランクの閾値を規定する行列ランク閾値が第1縮約パラメータとして設定される。ステップS30では、差分閾値が第2縮約パラメータとして設定される。ここでいう差分とは、低ランク化前の元の重み行列の行列ランクと、低ランク化後の重み行列の行列ランクとの差分である。この差分は次の式(4)で定義される。学習・評価制御部10は、この差分(Rij)に対する差分閾値(δ)を第1縮約パラメータとして設定する。
【0087】
【数3】
【0088】
ステップS220において、重み算出処理部230は、行列ランク閾値及び差分閾値を用いて、重み行列に対する低ランク近似を行う。重み算出処理部230は、例えば、以下の式(5)に従い、重み行列の各要素の重みを変更する。
【0089】
【数4】
【0090】
具体的に述べると、差分(Rij)が差分閾値(δ)より小さい要素については(δ>Rij)重みの変更を行わず、差分(Rij)が差分閾値(δ)より大きい要素については(δ<Rij)重みを0に変更する。このようにして、重み算出処理部230は、重み行列を更新する。すなわち、重み算出処理部230は、差分閾値と差分とを比較し、差分が差分閾値以上となる低ランク化の影響が大きい成分を0とし、それ以外の成分については、低ランク化行列における重みを要素として、重み行列を更新する。そして、重み算出処理部230は、実施の形態1と同様の方法により低ランク化行列を導出する。
【0091】
そして、ステップS230において、ネットワーク変形・再合成処理部50は、ステップS220で導出された低ランク化行列に対するニューロン刈りの割合を算出する。例えば、ネットワーク変形・再合成処理部50は、低ランク化行列において0埋めされた成分の数をニューロン刈り割合として算出してもよい。
【0092】
ステップS240において、ネットワーク変形・再合成処理部50は、ステップS230で算出したニューロン刈り割合に応じたニューロン刈りを行い、重み行列のサイズを縮小する。また、ネットワーク変形・再合成処理部50は、サイズを縮小した重み行列に対して、ネットワーク形状を変形する。
【0093】
なお、低ランク化行列において0埋めされた成分の数をニューロン刈り割合として算出した場合、1つの差分閾値に対して、各層における適切な縮約パラメータを自動的に設定することが可能となる。
【0094】
本実施の形態によれば、第1縮約パラメータ及び第2縮約パラメータを用いた第1縮約処理が行われる。この構成によれば、第1縮約パラメータ及び第2縮約パラメータの影響を受けて重み行列を更新することが可能となる。
【0095】
(実施の形態3)
次に、実施の形態3について説明する。図13は、本発明の実施の形態3に係るニューラルネットワークのモデル縮約装置の構成の一例を示すブロック図である。図13のモデル縮約装置301は、図10と類似しているが、学習・評価制御部310と、第1縮約パラメータ受付部20及び第2縮約パラメータ受付部40との間に縮約パラメータ算出処理部315が設けられている点が異なる。
【0096】
学習・評価制御部310は、直前に実行された第1縮約処理による縮約量と、第2縮約処理による縮約量との縮約比重を縮約パラメータとして算出する。縮約パラメータ算出処理部315は、学習・評価制御部310において算出された縮約比重を用いて、第1縮約パラメータ及び第2縮約パラメータを算出する。縮約パラメータ算出処理部315は、算出した第1縮約パラメータ及び第2縮約パラメータを第1縮約パラメータ受付部20及び第2縮約パラメータ受付部40にそれぞれ出力する。
【0097】
このように、本実施の形態では、縮約比重を用いて第1縮約パラメータ及び第2縮約パラメータが自動的に算出されるので、初期値を除いてユーザが第1縮約パラメータ及び第2縮約パラメータを直接入力することはない。
【0098】
図14は、本発明の実施の形態3に係るモデル縮約方法の概要を示すフロー図である。図14は、図11と類似しており、対応するステップには同一の符号が付されている。ステップS310において、学習・評価制御部310は、縮約比重を算出し、縮約比重を縮約パラメータ算出処理部315へ出力する。
【0099】
ステップS320において、縮約パラメータ算出処理部315は、入力された縮約比重を用いて第1縮約パラメータ及び第2縮約パラメータを算出する。算出された第1縮約パラメータは、第1縮約パラメータ受付部20を介して重み算出処理部30へ出力される。算出された第2縮約パラメータは、第2縮約パラメータ受付部40を介して重み算出処理部30及びネットワーク変形・再合成処理部50へ出力される。
【0100】
ステップS360において、学習・評価制御部310は、モデル縮約処理を継続すると判断すると(Yes)、ステップS10に戻り、縮約パラメータ(縮約比重)を算出する。一方、学習・評価制御部310は、モデル縮約処理を継続しないと判断すると(No)、モデル縮約処理を終了する。
【0101】
本実施の形態によれば、モデル縮約処理を継続する場合、更新対象のパラメータが縮約比重のみとなるため、ループ回数を削減することができ、モデル縮約に係る設計期間の増大をより抑えることが可能となる。
【0102】
なお、本発明は上記した実施の形態に限定されるものではなく、様々な変形例が含まれる。また、ある実施の形態の構成の一部を他の実施の形態の構成に置き換えることが可能であり、また、ある実施の形態の構成に他の実施の形態の構成を加えることも可能である。また、各実施の形態の構成の一部について、他の構成の追加、削除、置換をすることが可能である。なお、図面に記載した各部材や相対的なサイズは、本発明を分かりやすく説明するため簡素化・理想化しており、実装上はより複雑な形状となる場合がある。
【符号の説明】
【0103】
1、201、301…モデル縮約装置、10、310…学習・評価制御部、30、230…重み算出処理部、50…ネットワーク変形・再合成処理部、70…学習処理部、80…推論精度評価部、315…縮約パラメータ算出処理部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14