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

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

▶ KDDI株式会社の特許一覧

<>
  • 特許-モデル圧縮装置及びプログラム 図1
  • 特許-モデル圧縮装置及びプログラム 図2
  • 特許-モデル圧縮装置及びプログラム 図3
  • 特許-モデル圧縮装置及びプログラム 図4
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-12-06
(45)【発行日】2022-12-14
(54)【発明の名称】モデル圧縮装置及びプログラム
(51)【国際特許分類】
   G06N 3/08 20060101AFI20221207BHJP
   G06N 3/04 20060101ALI20221207BHJP
【FI】
G06N3/08 120
G06N3/04
【請求項の数】 7
(21)【出願番号】P 2019239463
(22)【出願日】2019-12-27
(65)【公開番号】P2021108039
(43)【公開日】2021-07-29
【審査請求日】2021-12-07
(73)【特許権者】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】100092772
【弁理士】
【氏名又は名称】阪本 清孝
(74)【代理人】
【識別番号】100119688
【弁理士】
【氏名又は名称】田邉 壽二
(72)【発明者】
【氏名】徐 建鋒
(72)【発明者】
【氏名】田坂 和之
(72)【発明者】
【氏名】ス ジュン
【審査官】石川 亮
(56)【参考文献】
【文献】米国特許出願公開第2019/0251441(US,A1)
【文献】米国特許出願公開第2019/0294929(US,A1)
【文献】特開2019-212206(JP,A)
【文献】特開2019-185275(JP,A)
【文献】山本 康平 ほか,ディープラーニングのモデル軽量化技術,OKIテクニカルレビュー 233,Vol.86, No.1,日本,沖電気工業株式会社,2019年05月20日,pp.24~27
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/02-3/08
(57)【特許請求の範囲】
【請求項1】
畳込ニューラルネットワークモデルである圧縮対象モデル内の各チャネル及び対応するフィルタ(以下、チャネル/フィルタとする。)について、当該モデルにスケーリング層を追加したうえで、学習データを用いて、チャネル/フィルタ毎の削除した際の影響度が考慮されたコスト関数による学習を行うことにより、当該スケーリング層におけるチャネル毎の定数倍処理の係数をスケーリング係数(γ)として求める準備部と、
前記圧縮対象モデル内の各チャネル/フィルタについて、少なくとも前記スケーリング係数に基づいて、削除するか否かを判定し、削除すると判定されたものを前記圧縮対象モデルから削除することで枝刈後モデルを得る枝刈部と、
学習データを用いて前記枝刈後モデルを再訓練することにより、前記圧縮対象モデルを圧縮した圧縮後モデルを得る再訓練部と、を備え
前記準備部では、前記チャネル/フィルタを削除したとする場合の影響度として、前記学習データを用いて評価される認識精度悪化の度合い(Im)と、前記圧縮対象モデル内における当該チャネル/フィルタを削除することによる計算量削減の度合い(budgeti)と、を考慮したコスト関数と前記学習データとを用いて学習することにより、前記スケーリング係数を求めることを特徴とするモデル圧縮装置。
【請求項2】
前記コスト関数は、前記認識精度悪化の度合い(Im)と、前記計算量削減の度合い(budgeti)と、が反映された重み係数(λi)を有する、当該チャネル/フィルタに対応するスケーリング層のスケーリング係数の正則化項を含むことを特徴とする請求項に記載のモデル圧縮装置。
【請求項3】
前記準備部で学習に用いるコスト関数は、前記認識精度悪化の度合い(Im)と前記計算量削減の度合い(budgeti)と、をチャネル/フィルタごとの重み(λ)として評価するものであり、
前記枝刈部では、前記圧縮対象モデル内の各チャネル/フィルタについてさらに、前記チャネル/フィルタごとの重み(λ)に基づいて削除するか否かを判定することを特徴とする請求項1または2に記載のモデル圧縮装置。
【請求項4】
前記枝刈部では、前記圧縮対象モデル内の各チャネル/フィルタについてさらに、同一の層内における当該フィルタの、別のフィルタとの類似度に基づいて削除するか否かを判定することを特徴とする請求項1ないしのいずれかに記載のモデル圧縮装置。
【請求項5】
前記準備部で学習に用いるコスト関数は、前記認識精度悪化の度合い(Im)と前記計算量削減の度合い(budgeti)と、をチャネル/フィルタごとの重み(λ)付け和として評価するものであり、
前記枝刈部では、前記圧縮対象モデル内の各チャネル/フィルタについてさらに、前記チャネル/フィルタごとの重み(λ)に基づいて削除するか否かを判定し、
前記枝刈部では、前記圧縮対象モデル内の各チャネル/フィルタについてさらに、同一の層内における当該フィルタの、別のフィルタとの類似度に基づいて削除するか否かを判定し、
前記枝刈部では、前記圧縮対象モデル内の各チャネル/フィルタについて、前記スケーリング係数と、前記チャネル/フィルタごとの重み(λ)と、前記類似度と、の重みづけ和の最小値を求め、当該最小値に基づいて、前記削除するか否かを判定することを特徴とする請求項に記載のモデル圧縮装置。
【請求項6】
前記枝刈部では、遺伝アルゴリズムを用いて前記最小値を求めることを特徴とする請求項に記載のモデル圧縮装置。
【請求項7】
コンピュータを請求項1ないし6のいずれかに記載のモデル圧縮装置として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、効率的にモデル圧縮を行うことが可能なモデル圧縮装置及びプログラムに関する。
【背景技術】
【0002】
深層学習(ディープラーニング)は物体検出や姿勢推定などタスクにおいて有効な技術であるが、推論の計算量が多く計算負荷が重い。精度の更なる向上のため、モデルの巨大化と推論計算量の増加も見られる。この問題への対処としてモデル圧縮が行われており、当該ニューラルネットのモデルのパラメータ数を削減することで、推論計算量を減らすと同時にメモリ使用量も小さくすることができる。一般的に、モデル圧縮は枝刈りと再訓練のステップで構成される。
【0003】
枝刈り(pruning)に関して、例えば非特許文献1ではニューラルネットの結合重みの一部を0にするまたはニューラルネット中のノード(または畳込層(Convolutional Layer)のフィルタ/チャネル)を削減する(疎行列化する)ことで、パラメータ数を削減している。重要ではないノード(またはフィルタ/チャネル)を削除すると、推論計算量を減らすと同時にメモリ使用量を小さくすることができる。
【0004】
ここで、どのノード(またはフィルター/チャネル)を削除するかは一種の組み合わせ最適化問題である。例えば、非特許文献2では「重みの絶対値が小さいものを優先的に削除する」というシンプルな手法(magnitude-based pruningと呼ばれる)が用いられる。また、非特許文献6では敵対的生成ネットワークによる学習(generative adversarial learning)を用いて当該最適化問題を解いている。
【0005】
枝刈りしただけでは精度は落ちてしまうが、その後再訓練することで精度を取り戻すことができるため、通常、枝刈りは再訓練とセットで行われる。枝刈り及び再訓練を行ったモデルは、タスクによっては精度を落とすこと無くパラメータ数を減らすことができる。このことは例えば非特許文献1において実験結果として確認されている。
【0006】
さらに、効果的に枝刈りを行うため、非特許文献4では、一つのフィルタを削除すると、これに対応するネットワーク後段側の構成も削除することによって計算量を減少させている。非特許文献5では、チャネル毎の重みを精度悪化の程度により算出し、当該重みにより効果的に枝刈りを行っている。また、再訓練時に、非特許文献7では段階的に学習することにより、極小値(ローカルミニマム)に落ち込むことを防止している。
【先行技術文献】
【非特許文献】
【0007】
【文献】Han, Song, et al. "Learning both weights and connections for efficient neural network." Advances in neural information processing systems. 2015.
【文献】Han, Song, et al. "Deep Compression: Compressing Deep Neural Networks with Pruning, Trained Quantization and Huffman Coding." International Conference on Learning Representations. 2016.
【文献】Liu, Zhuang, et al. "Learning efficient convolutional networks through network slimming." Proceedings of the IEEE International Conference on Computer Vision. 2017.
【文献】Hao Li, Asim Kadav, Igor Durdanovic, Hanan Samet, and Hans Peter Graf. Pruning filters for efficient convnets. In ICLR, 2017.
【文献】Zehao Huang and Naiyan Wang. Data-driven sparse structure selection for deep neural networks. In ECCV, 2018.
【文献】Shaohui Lin, Rongrong Ji, Chenqian Yan, Baochang Zhang. Towards Optimal Structured CNN Pruning via Generative Adversarial Learning. In CVPR, 2019.
【文献】Bohan Zhuang, Chunhua Shen, Mingkui Tan, Lingqiao Liu, and Ian Reid. Towards effective low-bitwidth convolutional neural networks. In CVPR, pages 7920-7928, 2018.
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、以上のような従来技術においては、精度を維持しながら最大限にニューラルネットワークを枝刈りして効率的にモデル圧縮を行うことに関して、さらなる改善の余地が残っていた。例えば、精度悪化の程度のみを考慮して削除すべきチャネルを決定し、チャネル削除後の計算量の減少度合いを考慮していない、という手法が用いられていた。
【0009】
上記従来技術の課題に鑑み、本発明は、効率的にモデル圧縮を行うことが可能なモデル圧縮装置を提供することを目的とする。
【課題を解決するための手段】
【0010】
上記目的を達成するため、本発明はモデル圧縮装置であって、畳込ニューラルネットワークモデルである圧縮対象モデル内の各チャネル及び対応するフィルタ(以下、チャネル/フィルタとする。)について、当該モデルにスケーリング層を追加したうえで、学習データを用いて、チャネル/フィルタ毎の削除した際の影響度が考慮されたコスト関数による学習を行うことにより、当該スケーリング層における定数倍処理の係数をスケーリング係数として求める準備部と、前記圧縮対象モデル内の各チャネル/フィルタについて、少なくとも前記スケーリング係数に基づいて、削除するか否かを判定し、削除すると判定されたものを前記圧縮対象モデルから削除することで枝刈後モデルを得る枝刈部と、学習データを用いて前記枝刈後モデルを再訓練することにより、前記圧縮対象モデルを圧縮した圧縮後モデルを得る再訓練部と、を備えることを特徴とする。
【発明の効果】
【0011】
本発明によれば、チャネル/フィルタ毎の削除した際の影響度が考慮されたコスト関数による学習を行ってスケーリング係数を求め、少なくともスケーリング係数に基づいてチャネル/フィルタを削除した際の影響度を考慮して削除対象を決定することにより、効率的にモデル圧縮を行うことが可能となる。
【図面の簡単な説明】
【0012】
図1】一実施形態に係るモデル圧縮装置の機能ブロック図である。
図2】既存算出手法において行われる、圧縮前モデルに対してスケーリング層を追加する処理を示す図である。
図3】本実施形態によるモデル圧縮効果の実験例を、各テーブルとしてそれぞれ表形式で示すものである。
図4】一般的なコンピュータにおけるハードウェア構成例を示す図である。
【発明を実施するための形態】
【0013】
図1は、一実施形態に係るモデル圧縮装置の機能ブロック図である。モデル圧縮装置10は、準備部1、枝刈部2及び再訓練部3を備える。モデル圧縮装置10は、その全体的な動作として、矢印線L2及び矢印線L1にそれぞれ示されるように学習データ及び圧縮前のモデル(圧縮対象としての既に訓練済みのモデル)を入力として用いて、矢印線L3に示されるように当該モデルを圧縮したものとして圧縮後のモデルを出力するものである。
【0014】
この際、枝分かれした矢印線L1及びL2にそれぞれ示されるように、圧縮前のモデルは準備部1及び枝刈部2へと入力され、学習データは準備部1及び再訓練部3へと入力される。矢印線L3に示されるように、圧縮後のモデルは再訓練部3より出力される。
【0015】
モデル圧縮装置10では上記のようにして1回のみモデル圧縮を行ってもよいし、矢印線L3から枝分かれする矢印線L4に示されるように、2回以上の繰り返しで合計N回(N≧2)のモデル圧縮を行うようにしてもよい。すなわち、1回のみモデル圧縮を行う場合の入力としての圧縮前のモデルをM(0)とし、モデル圧縮装置10においてこの圧縮前モデルM(0)を1回だけ圧縮して出力されるモデルをM(1)とする。2回目のモデル圧縮を行う場合は、再訓練部3が出力した1回目の圧縮後モデルM(1)が矢印線L4及びL1に示される流れの通り、2回目の圧縮対象となる圧縮前モデルM(1)として入力されたうえで、矢印線L3に示されるように2回目の圧縮されたモデルM(2)として出力することができる。
【0016】
同様にして、k回目(1≦k≦N)の圧縮されたモデルM(k)をモデル圧縮装置10の出力として得る場合には、k-1回目の圧縮されたモデルM(k-1)を入力として利用すればよい。このようにN回に渡って繰り返してモデル圧縮を適用する場合の各回の圧縮処理の内容は共通であり、学習データに関しても共通のものを用いてよい。
【0017】
上記のように圧縮前モデルM(k-1)を入力として圧縮後モデルM(k)を出力する際に、図1にも矢印線の流れの順として示されるように、準備部1、枝刈部2及び再訓練部3はこの順番で処理を行う。以下、この各部1~3の処理の詳細を説明する。
【0018】
前提として、圧縮対象となるモデルを説明する。既に説明した通り、N回の繰り返しでモデル圧縮を行う場合、M(0)→M(1)→M(2)→…→M(N-1)→M(N)の順で、元のモデルM(0)を合計N回に渡って圧縮したものとしてモデルM(N)が得られる。圧縮対象となる元のモデルM(0)は、畳込ニューラルネットワークを用いた任意のモデルで既に訓練済みのものを用いることができ、例えば代表的な畳込ニューラルネットのモデルであるVGG-16、GoogLeNet、ResNetなどを圧縮対象となる元のモデルM(0)として用いてよい。学習データも任意のものを用いてよく、例えば代表的なデータセットであるCIFAR-10を用いてよい。
【0019】
畳込ニューラルネットのモデルは概ね、「入力層→複数の畳込層→出力層」というネットワーク構造を取り、畳込層と出力層との間には1つ以上の全結合層があってもよく、畳込層の途中や全結合層の途中には適宜の活性化層やプーリング層が配置されていてもよい。当該ネットワーク構造により、推論の際には前の層の出力を次の層の入力としてシーケンシャルな処理を行うことで、出力層において最終的な推論結果を得ることができる。さらに、各層がシーケンシャルに接続される構造に限らず、ResNetの場合のように、層間をスキップ接続する構造が追加されていてもよい。また、再訓練部3における訓練の際には、適宜のバッチ正規化層がネットワーク構造内に含まれていてもよい。
【0020】
<準備部1>
準備部1は、学習モデルを用いて、圧縮対象となるモデルを圧縮するために考慮する係数としてのスケーリング係数を各チャネル/フィルタについて算出して枝刈部2へと出力する。
【0021】
本実施形態の準備部1における学習によるスケーリング係数算出処理は、前掲の非特許文献3や5において枝刈りによるモデル圧縮を行うために行われているスケーリング係数の学習による算出手法(既存算出手法と呼ぶ)を改良したものである。以下、この既存算出手法を説明してから、これを改良したものとしての準備部1のスケーリング係数算出の詳細を説明する。
【0022】
既存算出手法では、入力される圧縮前のモデルに対して、含まれる畳込層の各々の後段側に各チャネル(当該畳込層の出力テンソルの各チャネル)を定数倍する処理を行うスケーリング層を追加したうえで、入力される学習データを用いて当該スケーリング層が追加された学習をすることにより、追加したスケーリング層におけるチャネル毎の定数倍の係数値(スケーリング係数)を得て、これに基づく枝刈りを実施している。
【0023】
図2は、既存算出手法において行われる、圧縮前モデルに対してスケーリング層を追加する処理を示す図である。図2にて、状態ST1には圧縮前モデルの一部分として、任意のi番目(i=1,2,…)の畳込層CONV(i)がその次の畳込層CONV(i+1)に接続されている状態「CONV(i)→CONV(i+1)」が示され、状態ST2には状態ST1に対して既存算出手法においてスケーリング層SCALE(i)が追加された状態「CONV(i)→SCALE(i)→CONV(i+1)」が示されている。
【0024】
なお、図2では示していないが、圧縮前モデルに活性化層などがある場合、例えば、状態ST1において正規化線形関数による活性化層ReLU(i)が「CONV(i)→ReLU(i)→CONV(i+1)」のように配置されている場合、当該活性化層の後にスケーリング層SCALE(i)を配置することで状態ST2を「CONV(i)→ReLU(i)→SCALE(i)→CONV(i+1)」とすればよい。また、全結合層がある場合、その前又は後ろのいずれかに1つのスケーリング層SCALE(i)を配置してよい。
【0025】
畳込層CONV(i)の出力(あるいは活性化層ReLU(i)等の出力、以下同様)が横幅wi、縦幅hi、チャネル数niによるサイズwi×hi×niのテンソルであるとすると、スケーリング層SCALE(i)は、このni個のチャネル(それぞれが横幅wi、縦幅hiのサイズwi×hiの行列として構成されている)をそれぞれ定数倍する処理を行う層であり、当該定数倍の値がスケーリング係数である。すなわち、スケーリング層SCALE(i)を特定するパラメータは、チャネル数ni個だけのスケーリング係数γ(i)を以下の式(1)のように列挙したものである。ここで、k番目の係数γi,k(1≦k≦ni)がk番目のチャネルに対応する行列(サイズwi×hi)に乗ぜられるスケーリング係数である。
【0026】
【数1】
【0027】
既存算出手法においては図2の状態ST2に示されるように、圧縮前モデルの各畳込層CONV(i)(i=1,2,…)の後段側に対してスケーリング層を追加したモデルに対して、学習データを用いて学習を行うことにより、畳込層CONV(i)の係数等の圧縮前モデルのパラメータに加えて、追加されたスケーリング層SCALE(i)のスケーリング係数γ(i)もパラメータとして同時に学習する。そして、既存算出手法においては、(前述のmagnitude based pruningの手法により)スケーリング係数γ(i)に列挙される値のうち、絶対値が閾値判定で小さいと判定されるものに対応するチャネルを削除の対象として決定することで、枝刈りを実施している。(この際、削除対象となったチャネルの後段にある、スケーリング層での対応要素(スケーリング係数)も削除される。)
【0028】
既存算出手法において、学習の際のコスト関数Lは以下の式(2)を用いる。式(2)において、xは入力画像、yは出力ラベルであり、Wは元のモデル(圧縮対象となっているモデル)のパラメータ(畳込層や全結合層の係数)であり、λは事前に設定した重みであり、コスト関数Lへの影響度を制御する役割を有する。(なお、スケーリング係数γはパラメータW(元の、スケーリング層のないモデルのパラメータ)とは区別されるものであり、学習によって、パラメータWとスケーリング係数γとの両方が定まる。)また、lは平均二乗誤差や交差エントロピーなどのコスト関数であり、gは絶対値関数などコスト関数であり、Γは図2のように追加したスケーリング層の集合であり、γは式(2)に示した各スケーリング層のパラメータである。f(x,W)はパラメータWのネットワークにおける入力xに対する出力である。これらにより以下の式(2)で、入力画像xに対するロス(誤差)としてコスト関数Lの値を計算している。
【0029】
【数2】
【0030】
以上の既存算出手法には、以下の2点の問題P1,P2がある。
(問題P1)…式(2)のコスト関数Lにおいて各チャネルに共通の重みλを用いている。
(問題P2)…式(2)のコスト関数Lにおいて認識精度は考慮されているものの、計算量の減少度合いの寄与は考慮されていない。
【0031】
準備部1では、以上の既存算出手法と同様の枠組みにより学習でスケーリング係数を求めるが、さらに上記の問題P1,P2への解決策を提供するという点において、既存算出手法を改良したスケーリング係数の算出が可能となっている。準備部1では具体的に以下のように問題P1,P2への対処を実現したうえでパラメータW及びスケーリング係数γ(スケーリング層SCALE(i)において乗算されることでチャネル毎の出力に強弱変化を設けるもの)を算出する。
【0032】
(問題P1への対処)…チャネル毎の重みλiを利用したコスト関数を利用する
準備部1では、既存算出手法にて全スケーリング層γ∈Γ(ここで、スケーリング層で乗算する係数ベクトルγ表記でスケーリング層を指定している)の全チャネルで共通の重みλを用いた式(2)の右辺の第2項(係数ベクトルγの絶対値が大きくなることを抑制する、ペナルティ項としての正則化項)を、以下の式(3)に示されるように、各スケーリング層γ∈Γの各チャネルi毎のコスト関数重みλi(ここで、表記の煩雑化を避けるために、チャネルi依存の重みλiとしているが、実際には当該チャネルiに対応するスケーリング層γ(当該チャネルiを含むテンソルのネットワーク内での位置)にも依存するコスト関数重みλi(γ)となる)を用いる項に置き換えてコスト関数Lを算出する。(なお、式(3)の層γ及びチャネルiを、後述する式(9)では層k及びチャネルjという変数で記載している。)
【0033】
【数3】
【0034】
準備部1では具体的に、コスト関数のチャネルi毎の重みλiに関して、以下の非特許文献8に開示される手法を利用して以下の式(4)のように当該チャネルiに対応するフィルタm=m(i)(スケーリング層によって乗算されるチャネルiを生成する、当該チャネルiに対応するフィルタm(i))を削除した場合のロスImとして算出することができる。
[非特許文献8]Molchanov, Pavlo, et al. "Importance Estimation for Neural Network Pruning." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2019.
【0035】
【数4】
【0036】
式(4)でxは入力画像、Wはモデルパラメータ、lossはロス関数であり、wmは第mフィルタのパラメータである。式(4)の1行目は、ロスImをその定義(非特許文献8で提案される定義)通りにパラメータwmをゼロとした際のロス変化として記述したものであり、1行目から2行目への近似変形は、当該定義通りのロスImをテイラー展開の1次項として近似計算することを表しており、2行目から3行目の変形は、テイラー展開の1次項として、学習の際の逆伝播計算において既に求まっている勾配gradientmを利用できることを表している。
【0037】
なお、非特許文献8に開示される枝刈り手法は、提案している式(4)で計算されるロスに基づき、閾値判定により直接の枝刈り(magnitude based pruning)を行うものであるが、本実施形態の準備部1ではさらに以下の問題P2への対処も実施されることで、計算量の減少度合いも考慮して枝刈りを行うことが可能である。
【0038】
(問題P2への対処)…チャネル毎の重みλiにおいて計算量減少度合いも考慮されているコスト関数Lを利用する
準備部1では、計算量減少度合いも考慮して、コスト関数のチャネル毎の重みλiを計算する。具体的に、以下の式(5-1),(5-2)で計算すればよい。
【0039】
【数5】
【0040】
式(5-1)により、budgetとして、チャネル/フィルタの削除による(認識精度の悪化以外の影響要素として)、計算量の減少の度合いを計算する。式(5-1)では、チャネル/フィルタが影響する計算量として以下の3つを積として考慮したものである。
(1) フィルタを掛ける特徴マップのピクセル数FMS
(2) 特徴マップの数NFM
(3) フィルタサイズFS
【0041】
なお、FMSは当該注目しているフィルタが作用する1つの特徴マップの縦×横のピクセル数である。NFMは当該注目しているフィルタを削除することで、(非特許文献4で提案されているのと同様に、)計算不要となる特徴マップ数であり、ネットワーク構造から計算することが可能である。(なお、仮にフィルタを逐次的に削除したとすると、削除の順番によってNFMが変わりうるが、このような削除順番は考慮せずに、枝刈り前のネットワーク構造において当該フィルタのみを削除したものとして、削除により計算不要となる層での特徴マップの数としてNFMを計算すればよい。)フィルタサイズFSは当該注目しているフィルタのサイズ(縦×横、例えば5×5や3×3など)である。
【0042】
式(5-2)では、式(5-1)で当該注目しているチャネルi/フィルタについての計算量減少度合いbudgetiを計算したうえで、式(4)により当該注目しているチャネルiに対応するフィルタm(i)についての認識精度悪化の度合いImを計算し、これらより当該注目しているチャネルiについてのコスト関数のチャネル毎の重みλiを計算することができる。
【0043】
すなわち、準備部1ではコスト関数のチャネルi毎の重みλiを、計算量減少度合いbudgetiがより大きいほどより小さく算出して、対応するチャネルのスケーリング係数γが大きくなってもコスト関数Lが大きくなる影響を抑制することにより、当該チャネルが後段側の枝刈部2での枝刈り対象(削除対象)から除外される傾向を弱めるようにし、且つ同様に、認識精度悪化の度合いImがより小さいほどより小さく算出して後段側の枝刈部2での枝刈り対象から除外される傾向を弱めるようにすることが可能である。(すなわち、コスト関数の重みλiの利用により、計算量減少度合いがより大きいほど、また、認識精度悪化度合いがより小さいほど、当該チャネルを枝刈りによって削除する対象から除外する傾向を強めるようにすることができる。)
【0044】
(準備部1による処理のまとめ)
以上のように、従来手法に改良を施すことにより準備部1では以下の手順(0),(1),(2),(3)のようにして、コスト関数のチャネル毎の重みλiを計算することで式(3)の改良を伴う式(2)のコスト関数Lを定めたうえで、このコスト関数Lを用いた学習を行った結果としてパラメータW及びチャネルスケーリング係数γを計算するものである。(なお、学習に関しては、以下の手順(1),(3)において2回行うこととなるが、手順(1)では必ずしも最終的なパラメータを求める完全な学習まで行わなくともよい。)
(0) 圧縮対象となっているモデルに図2で説明した通りのスケーリング層SCALE(i)を追加して、以下の学習計算の対象とする。
(1) 学習データと圧縮対象モデルを用いて順伝播計算及び逆伝播計算を行い、得られる勾配gradientmにより、式(4)の認識精度悪化に関するロスIm(問題P1への対処となるもの)を計算する。
(2) 枝刈り候補としての各チャネルi/フィルタmについて、式(5-1)の計算量減少度合いbudgeti(問題P2への対処となるもの)を計算する。
(3) 上記手順(1),(2)の計算結果より式(5-2)で定まるコスト関数のチャネルi毎の重みλiを用いて式(2)の左辺第2項を式(3)の通りに改良したコスト関数Lを定め、当該改良されたコスト関数Lを用いて学習を行った結果として、枝刈り候補としての各チャネルi/フィルタmについて、パラメータWと各スケーリング層におけるチャネルスケーリング係数γ(式(1))を得る。
【0045】
なお、(1)の順伝播計算及び逆伝播計算には、まだ1度も圧縮対象となっていないモデルM(0)においてチャネル毎iの重みλiがまだ計算できていない状態であるため、式(2)の第1項のみからなる以下の式(6)のコスト関数L'を用いるようにしてもよいし、チャネル共通重みλ(所定重みを設定しておく)による式(2)を用いてもよい。
【0046】
【数6】
【0047】
なお、手順(0)におけるスケーリング層の追加は、まだ1度も圧縮対象となっていないモデルM(0)についてのみ行えばよい。モデル圧縮装置10における2回目以降(k≧2)の圧縮時においてモデルM(k-1)を圧縮してモデルM(k)を得る際の入力モデルM(k-1)には、既にスケーリング層(一部のチャネルが枝刈りされていることもある)が存在するため、手順(0)は省略すればよい。
【0048】
<枝刈部2>
枝刈部2は、準備部1で得たチャネルスケーリング係数γ(特に、チャネルi毎の重みλi(従来では考慮されていなかった計算量削減効果も考慮した重みλi)が少なくとも反映されたコスト関数を用いた学習結果の係数γ)を基準として少なくとも利用して、且つ、以下に説明するように従来技術では考慮されていなかったその他の基準(既に準備部1で用いた、コスト関数のチャネルi毎の重みλiも含む)も考慮して、入力モデル内の各フィルタ/チャネルが枝刈り対象となるか否かを判定し、枝刈り対象と判定されたフィルタ/チャネルを枝刈り(削除)したモデル(枝刈後のモデル)を再訓練部へと出力する。(枝刈りの際、削除対象となったチャネルの後段にある、スケーリング層での対応要素(スケーリング係数)も削除される。)すなわち、枠組みとしては非特許文献2等と同様であるが、枝刈部2では以下のように改良された枝刈り対象決定を行うことができる。なお、枝刈部2での枝刈りの判断の対象となるネットワークは、準備部1での手順(3)における最終的な学習結果として得られるネットワークである。
【0049】
本実施形態に対する対比例として、非特許文献3ではチャネルスケーリング係数γ(本実施形態とは異なり、全チャネル共通の重みλのコスト関数のもとで算出されたチャネルスケーリング係数γ)のみに対して単純な閾値判定による枝刈り(magnitude based pruning)を行うものであった。本実施形態では準備部1でチャネルスケーリング係数γを計算量の減少度合いまでも考慮したチャネルi毎の重みλiを用いたコスト関数Lを用いて学習したものとして計算しており、枝刈部2では当該スケーリング係数γに加えてさらに当該チャネル毎の重みλiを枝刈り判定のための第1基準として利用し、さらに、以下の第2基準及び第3基準も枝刈り判定に用いる。
【0050】
(第2基準)…フィルタの類似度(平均距離で数値化)
この第2基準により、フィルタが似ている場合、冗長であるため、1つのフィルタのみが残るように枝刈りすることが可能となる。枝刈り部2では具体的に、類似度を逆数的に表現するものとしての平均距離を層毎に算出する。第k層でJ個のフィルタがあるとする。第jのフィルタの類似度Sk jを算出する際に、第jのフィルタと他のフィルタの距離dk j(i)を式(7)で算出する。
【0051】
【数7】
【0052】
式(7)で、vk jは第k層の第jのフィルタを一次元化したベクトルである。そして、式(8)で他のフィルタとの平均距離を第jのフィルタの平均距離Dk jとして算出する。(注:フィルタの平均距離Dk jが小さいと、平均(重心)と近いので、類似度が高いことを意味しており、削除して良い。つまり、平均距離が小さい方が類似度が高い。)
【0053】
【数8】
【0054】
(第3基準)…異なる層ごとの敏感度
畳込ネットワークにおいては、前の層で一つのチャネルを削除すると、後段側の全ての層のチャネル数が減る。よって、同じく1つのチャネルを削除しても所属する層により計算量の削減が異なる。このように、所属する層により計算量の削減度合いが異なることを、異なる層の敏感度として数値化する。
【0055】
枝刈部2では具体的に、以下に説明する式(9)の係数wnk j(n=1,2,3)を用いて、層ごとの敏感度を数値化することができる。
【0056】
(以上の3つの基準を用いた枝刈り)
枝刈部2では、以上の3つの基準を用いて以下の式(9)により、第k層の第jチャネルに対するコストck jを算出する。
【0057】
【数9】
【0058】
ここで、Dk jは第2基準である類似度を逆数として表現する平均距離(式(8))であり、γk jは第1基準である第k層の第jチャネルのチャネルスケーリング係数(準備部1の出力)であり、λk jは第1基準である第k層の第jチャネル重み(準備部1が手順(3)でコスト関数Lを定めるのに用いた式(5-2)の重みλj)である。
【0059】
また、式(9)においてw1k jとw2k jとw3k jはそれぞれの重みであり、第3基準を数値化したものに該当し、具体的に枝刈部2において既存手法である遺伝的アルゴリズム(genetic algorithm)を用いて算出すればよい。すなわち、「w1k jとw2k jとw3k j」という組をある世代の1つの個体とみなして、その組を複数生成し、その組に対して選択、交叉、突然変異を行って、最小のck jになった順に、フィルタを削除することで、枝刈部2による枝刈後のモデルを得ることができる。例えば、ck jの値が小さい側の上位所定数を削除対象としてもよいし、閾値判定でこの値が小さいとされるものを削除対象としてもよい。
【0060】
以上、まとめると、枝刈部2では以下のように削除対象を決定する。
(1) 各層kの各チャネル/フィルタjについて、式(9)で算出されるコストck jの最小値min(ck j)を、最小値を与えるような重みの組(w1k j,w2k j,w3k j)を遺伝アルゴリズムで算出することによって、当該最小値を与える重みにおける式(9)の値として算出する。この際、各重みは正数範囲とし、総和が1となるよう規格化したものとして求めればよい。
(2) 各層kの各チャネル/フィルタjの中から、上記算出された最小コストmin(ck j)が小さい側の上位所定数又は閾値判定でこの値が小さいとされるものを削除対象とする。
【0061】
<再訓練部3>
再訓練部3では、学習データを用いて、枝刈部2より得られる枝刈後のモデルを学習することにより、圧縮後モデルを得る。再訓練部3における学習手法は既存手法と同様でよい。また、再訓練部3において次のような学習を行ってもよい。式(3)で改良された式(2)のコスト関数Lを用いて、元のモデルのパラメータWに加えてスケーリング係数γも学習するようにしてもよい。
【0062】
以上、本実施形態の圧縮装置10によれば、効率的にモデル圧縮を行うことが可能となる。図3は、本実施形態によるモデル圧縮効果の実験例を、テーブルT1~T4としてそれぞれ表形式で示すものである。テーブルT1では、VGG-16を圧縮対象モデルとし、CIFAR-10のデータセットを用いた既存手法と本実施形態との対比結果として、本実施形態は既存手法と同等の精度を保ち、且つ、削除チャネル数が増加している結果が示されている。テーブルT2では、VGG-16を圧縮対象モデルとし、CIFAR-10のデータセットを用いた既存手法(非特許文献4~6)と本実施形態との対比結果として、パラメータ削減率、計算量削減率、精度悪化率(+が悪化)が示され、テーブルT1と同様の傾向となる結果が示されている。テーブルT3では、GoogLeNetを圧縮対象モデルとし、CIFAR-10のデータセットを用いた既存手法(非特許文献4~6)と本実施形態との対比結果として、パラメータ削減率、計算量削減率、精度悪化率(+が悪化)が示され、テーブルT1と同様の傾向となる結果が示されている。テーブルT4では、各種のResNetを圧縮対象モデルとし、CIFAR-10のデータセットを用いた本実施形態の成果としてパラメータ削減率及び精度悪化率が示され、精度を維持しつつパラメータ削減を達成していることが示されている。
【0063】
モデル圧縮装置10において1回のみ、あるいは繰り返しでモデル圧縮を行う場合、以下のような手法を用いてもよい。すなわち、式(3)で改良された式(2)のコスト関数Lを用いて、元のモデルのパラメータWに加えてスケーリング係数γも最適化されたものとして学習し、これに基づいて最適化された重みλやパラメータWやネットワーク構造を用いて枝刈り判定を実施してもよい。
【0064】
準備部1での手順(1)の勾配gradientmは、モデルの収束判定の際のもの、あるいは、収束判定に近いと判定される際のものを用いてもよい。
【0065】
図4は、一般的なコンピュータ装置70におけるハードウェア構成を示す図であり、モデル圧縮装置10は、このような構成を有する1つ以上のコンピュータ装置70として実現可能である。コンピュータ装置70は、所定命令を実行するCPU(中央演算装置)71、CPU71の実行命令の一部又は全部をCPU71に代わって又はCPU71と連携して実行する専用プロセッサ72(GPU(グラフィック演算装置)や深層学習専用プロセッサ等)、CPU71や専用プロセッサ72にワークエリアを提供する主記憶装置としてのRAM73、補助記憶装置としてのROM74、通信インタフェース75、ディスプレイ76、マウス、キーボード、タッチパネル等によりユーザ入力を受け付ける入力インタフェース77と、これらの間でデータを授受するためのバスBSと、を備える。
【0066】
モデル圧縮装置10等の各部は、各部の機能に対応する所定のプログラムをROM74から読み込んで実行するCPU71及び/又は専用プロセッサ72によって実現することができる。
【符号の説明】
【0067】
10…モデル圧縮装置、1…準備部、2…枝刈部、3…再訓練部
図1
図2
図3
図4