e4exp / paper_manager_abstract

0 stars 0 forks source link

PRUNING FILTERS FOR EFFICIENT CONVNETS #640

Open e4exp opened 2 years ago

e4exp commented 2 years ago

様々なアプリケーションにおけるCNNの成功は、計算コストとパラメータ保存コストの大幅な増加を伴っている。 これらのコストを削減するための最近の取り組みとして、元の精度を損なうことなくさまざまな層の重みを刈り込んだり圧縮したりすることが行われている。 しかし、重みの大きさに基づくプルーニングでは、完全連結層からかなりの数のパラメータが削減され、また、プルーニングされたネットワークの不規則なスパース性のために、畳み込み層の計算コストが十分に削減されない可能性があります。 我々は、CNNの加速手法を提示し、出力精度への影響が小さいと識別されたCNNからフィルターを刈り取る。 ネットワーク内のフィルター全体を、接続する特徴マップとともに削除することで、計算コストが大幅に削減される。 重みの刈り込みとは対照的に、このアプローチは疎な接続パターンにはなりません。 そのため、疎な畳み込みライブラリのサポートを必要とせず、既存の効率的なBLASライブラリを用いて密な行列の乗算を行うことができます。 我々は、単純なフィルタ・プルーニング技術であっても、CIFAR10において、VGG-16の推論コストを最大34%、ResNet-110の推論コストを最大38%削減することができることを示した。

e4exp commented 2 years ago

1 はじめに

ImageNetへの挑戦により、CNNにおけるさまざまなアーキテクチャの選択肢を探ることが大きく前進しました(Russakovskyら(2015)、Krizhevskyら(2012)、Simonyan & Zisserman(2015)、Szegedyら(2015a)、Heら(2016))。 ここ数年来の一般的な傾向として、ネットワークの深化が進んでおり、パラメータや畳み込み演算の数が全体的に増加しています。 これらの大容量ネットワークは、特に、計算機や電力のリソースが限られている可能性のある組み込みセンサーやモバイル機器で使用する場合、大きな推論コストがかかります。 これらのアプリケーションでは、精度に加えて、計算効率と小さなネットワークサイズが重要な要素となります(Szegedy et al. また、画像検索や画像分類のAPIを提供するウェブサービスでは、1秒間に数十万枚の画像を処理することが多く、推論時間の短縮が大きなメリットとなります。

モデルの圧縮によるストレージおよび計算コストの削減については、かなりの研究がなされてきた(Le Cunら(1989)、Hassibi & Stork(1993)、Srinivas & Babu(2015)、Hanら(2015)、Mariet & Sra(2016))。 最近ではHanら(2015; 2016b)が、AlexNet(Krizhevsky et al. (2012))とVGGNet(Simonyan & Zisserman (2015))において、小さな大きさの重みを剪定してから再学習することで、全体的な精度を損なうことなく、素晴らしい圧縮率を報告している。 しかし、パラメータの刈り込みを行っても、削除されるパラメータの大半は計算コストの低い完全連結層のものであり、例えば、VGG-16の完全連結層は全パラメータの90%を占めるが、全体の浮動小数点演算(FLOP)の1%未満しか寄与していないため、必ずしも計算時間が短縮されるわけではない。

また、畳み込み層を圧縮して高速化できることを実証していますが(Iandolaら(2016))、追加でスパースBLASライブラリ、あるいは特殊なハードウェアが必要になります(Hanら(2016a))。 CNN上でスパース演算を用いて高速化を実現する最新のライブラリは、しばしば制限されており(Szegedyら(2015a)、Liuら(2015))、スパースデータ構造を維持することで、低精度のウェイトの場合には重大なストレージのオーバーヘッドも追加されることになる。 最近のCNNの研究では、より効率的な設計のディープアーキテクチャが得られており(Szegedy et al. (2015a;b); He & Sun (2015); He et al. (2016))、その中では、完全連結層が平均プーリング層に置き換えられており(Lin et al. (2013); He et al. (2016))、パラメータの数が大幅に減少している。 また、早い段階で画像をダウンサンプリングして特徴量マップのサイズを小さくすることで、計算コストを削減しています(He & Sun (2015))。 とはいえ、ネットワークの深化が進むにつれ、畳み込み層の計算コストが優位になっていきます。 大容量のCNNは通常、異なるフィルタや特徴チャネルの間に大きな冗長性を持っています。

本研究では、フィルターをプルーニングすることで、十分に学習されたCNNの計算コストを削減することに注目する。 ネットワーク全体の重みをプルーニングするのに比べて、フィルター・プルーニングはスパース性を導入せずに自然に構造化された方法であるため、スパース・ライブラリや特殊なハードウェアを使う必要がない。 プルーニングされたフィルターの数は、行列の乗算数を減らすことで加速と直接相関しており、目標とするスピードアップのためのチューニングが容易です。 また、層ごとの反復的な微調整(再トレーニング)の代わりに、ワンショットのプルーニングと再トレーニング戦略を採用し、複数の層にまたがるフィルターのプルーニングのための再トレーニング時間を節約しています。 これは、非常に深いネットワークのプルーニングには不可欠です。 最後に、AlexNetやVGGNetに比べてパラメータや推論コストが大幅に少ないResNetsでも、精度をあまり犠牲にすることなく、約30%のFLOP削減が可能であることを確認しました。 また、ResNetsにおける畳み込み層の感度解析を行い、ResNetsの理解を深めています。

e4exp commented 2 years ago

3 PRUNING FILTERS AND FEATURE MAPS

ここで,ni は i 番目の畳み込み層の入力チャンネル数,hi/wi は入力特徴マップの高さ/幅である. 畳み込み層は、入力特徴マップxi∈R ni×hi×wiを、出力特徴マップxi+1∈R ni+1×hi+1×wi+1に変換し、次の畳み込み層の入力特徴マップとして使用する。 これは、ni+1個の3DフィルタFi,j∈R ni×k×kをni個の入力チャネルに適用することで実現され、1つのフィルタが1つの特徴マップを生成する。 各フィルタは、ni個の2DカーネルK∈R k×k(例えば、3×3)によって構成される。 すべてのフィルターを合わせて、カーネル行列Fi∈R ni×ni+1×k×kを構成します。 畳み込み層の演算数は、ni+1nik 2hi+1wi+1である。 図1に示すように、フィルタFi,jが刈り込まれると、それに対応する特徴マップxi+1,jが削除され、nik 2hi+1wi+1の演算が削減される。 また、次の畳み込み層のフィルタから削除された特徴マップに適用されるカーネルも削除されるため、さらにni+2k 2hi+2wi+2の演算が削減される。 層iのm個のフィルターをプルーニングすることで、層iとi + 1の両方の計算コストのm/ni+1を削減することができる。

image

3.1 層内のどのフィルタを刈り込むかの決定

本手法は,精度の低下を最小限に抑えつつ,計算効率を上げるために,十分に学習されたモデルから有用でないフィルタを刈り込む. 各層におけるフィルタの相対的な重要性は,絶対的な重みの合計sum|Fi,j|,すなわち,そのl1ノルムkFi,jk1を計算することで測定します. 入力チャネルの数niはフィルタ間で同じなので,sum|Fi,j|はカーネル重みの平均的な大きさも表しています. この値は、出力される特徴量マップの大きさの期待値となる。 カーネルの重みが小さいフィルターは、その層の他のフィルターに比べて、弱い活性化を持つ特徴マップを生成する傾向がある。 図2(a)は,CIFAR-10データセットで学習したVGG-16ネットワークの各畳み込み層におけるフィルタの絶対重み和の分布を示しており,層によって分布が大きく異なることがわかる. 同じ数のランダムまたは最大のフィルターをプルーニングする場合と比較して、最小のフィルターをプルーニングする方が効果的であることがわかります(セクション4.4)。

活性化ベースの特徴マップの刈り込みのための他の基準(セクション4.5)と比較して、l1-ノルムは、データなしのフィルタ選択のための良い基準であることがわかります。 i番目の畳み込み層からm個のフィルターをプルーニングする手順は以下の通りである。

  1. 各フィルターFi,jについて,その絶対的なカーネル重みの和 sj = sum^{ni}_{l=1} sum |Kl |を計算する.
  2. フィルタを sj でソートする.
  3. 合計値が最も小さいm個のフィルターと,それに対応する特徴量マップを刈り取る.刈り込まれた特徴量マップに対応する次の畳み込み層のカーネルも削除される。
  4. 第 i 層と第 i + 1 層の両方に新しいカーネル行列を作成し、残りのカーネル重みを新しいモデルにコピーする。

重みの刈り込みとの関係

絶対的な重みの和が小さいフィルターの刈り込みは、大きさの小さい重みの刈り込みに似ています(Han et al. (2015))。 マグニチュードベースの重みプルーニングは、フィルタのすべてのカーネル重みが与えられた閾値よりも低い場合、フィルタ全体をプルーニングすることができる。 しかし,閾値を慎重に調整する必要があり,最終的に枝刈りされるフィルタの正確な数を予測することは困難である. さらに、スパースな畳み込みカーネルを生成しますが、効率的なスパースライブラリが存在しないため、特に低スパースの場合には加速することが困難です。

フィルタの群疎正則化との関係

最近の研究(Zhou et al. (2016); Wen et al. (2016))では、群疎正則化(sum ni j=1 kFi,jk2 or l2,1-ノルム)を畳み込みフィルタに適用していますが、これは小さなl2ノルム、すなわちFi,j = 0のフィルタのゼロアウトにも有利です。 実際には,重要なフィルタは両方の尺度で大きな値を持つ傾向があるので,フィルタ選択のためのl2ノルムとl1ノルムの顕著な違いは観察されません(付録6.1). 学習中に複数のフィルターの重みをゼロにすることは、セクション3.4で紹介した反復的な刈り込みと再学習の戦略によるフィルターの刈り込みと同様の効果があります。

3.2 刈り込みに対する各層の感度の判定

各層の感度を把握するために、各層を独立して刈り込み、その結果得られた刈り込みネットワークの精度を検証セットで評価します。 図2(b)を見ると、フィルターを除去しても精度が維持される層は、図2(a)の傾きが大きい層に対応しています。

image

逆に、傾きが比較的平坦な層は、刈り込みに対して敏感に反応します。 各層の刈り込みに対する感度をもとに、刈り込みを行うフィルターの数を経験的に決定します。 VGG-16やResNetsのような深いネットワークでは、同じステージ(同じ特徴マップサイズ)にあるレイヤーは、プルーニングに対する感度が似ていることがわかります。 レイヤーごとのメタパラメータの導入を避けるために、同じステージのすべてのレイヤーに同じ刈り込み比率を使用します。 刈り込みに敏感なレイヤーに対しては、より小さな割合で刈り込みを行うか、完全に刈り込みをスキップします。

3.3 複数のレイヤーにまたがるフィルターの刈り込み

次に、ネットワーク全体のフィルターを刈り込む方法について説明します。 以前の研究では、層ごとに重みを刈り取り、その後、反復的に再トレーニングを行い、精度の低下を補っていました(Han et al. しかし、複数の層のフィルターを一度に剪定する方法を理解することは有用です。

1) 深層ネットワークでは,層ごとに刈り込みと再トレーニングを行うのは非常に時間がかかる 2) ネットワーク全体の層を刈り込むことで,ネットワークのロバスト性を全体的に見ることができ,結果的にネットワークを小さくすることができる 3) 複雑なネットワークでは,全体的なアプローチが必要な場合がある.例えば、ResNetでは、アイデンティティ・フィーチャーマップや各残差ブロックの第2層を刈り込むと、他の層も刈り込まれてしまいます。複数の層に渡ってフィルタを刈り込むために、我々は層ごとのフィルタ選択のための2つの戦略を考えます。

図3は、絶対重みの合計を計算する際の2つのアプローチの違いを示しています。 欲張りなアプローチは,全体最適ではないものの,全体的に優れており,特に多くのフィルタが刈り込まれた場合には,より高い精度の刈り込みネットワークが得られる.

image

image

VGGNetやAlexNetのような単純なCNNの場合は、どの畳み込み層のどのフィルターも簡単にプルーニングできます。 しかし、Residualネットワーク(He et al. (2016))のような複雑なネットワークアーキテクチャの場合、フィルターの剪定は簡単ではないかもしれません。 ResNetのアーキテクチャは制限を課しており、フィルタを慎重に剪定する必要があります。 プロジェクションマッピングを用いた残差ブロックのフィルタ・プルーニングを図4に示します。 ここでは、残差ブロックの第1層のフィルタは、ブロックの出力特徴マップの数を変えないので、任意に刈り込むことができる。 しかし、第2畳み込み層の出力特徴量マップと、アイデンティティ特徴量マップの対応関係から、剪定が困難になる。 したがって、残差ブロックの第2畳み込み層を刈り込むためには、対応する投影特徴量マップも刈り込む必要がある。 同一の特徴マップは追加された残差マップよりも重要であるため、枝刈りする特徴マップはショートカット層の枝刈り結果によって決定されるべきである。 どの同一特徴マップを枝刈りするかを決定するために、ショートカットの畳み込み層のフィルター(1×1カーネルを使用)に基づく同じ選択基準を使用する。 残差ブロックの第2層は、ショートカット層の刈り込みで選択されたものと同じフィルタ・インデックスで刈り込まれます。

3.4 正確さを取り戻すための刈り込み済みネットワークの再訓練

フィルターを刈り込んだ後、ネットワークを再訓練することで、性能低下を補う必要がある。 複数の層に渡ってフィルタを刈り込むには、2つの戦略があります。

1.一度刈り込んでから再学習する。複数の層のフィルターを一度に刈り込み,元の精度に戻るまで再学習を行う

  1. 反復的に刈り込みと再学習を行う。層ごと、あるいはフィルタごとにフィルタを刈り込み、繰り返し再学習を行います。刈り込みによる変化に重みが適応するように、次の層を刈り込む前にモデルを再学習します。

刈り込みに耐性のある層では,「刈り込みと再学習」戦略を用いてネットワークのかなりの部分を刈り込むことができ,精度の低下は短期間(元の学習時間よりも短い時間)の再学習で回復できることがわかりました。 しかし、敏感な層のフィルターが刈り取られたり、ネットワークの大部分が刈り取られたりすると、元の精度を回復できない場合があります。 刈り込みと再トレーニングを繰り返すことで、より良い結果が得られる可能性がありますが、特に非常に深いネットワークの場合、繰り返しのプロセスには多くのエポックが必要となります。