破壊的な CNN 幅最適化のための近似 Oracle フィルター プルーニングに関するペーパー ノート

論文アドレス: https://arxiv.org/abs/1905.04748v1
github アドレス: https://github.com/ShawnDing1994/AOFP

モチベーション

本稿で提案する枝刈り手法は、フィルタの重要性は損失の変化の程度に依存し、損失が小さくなるほどフィルタの重要性が低くなるという最も単純かつ直接的な考え方に基づいています。これはオラクルです。ただし、oracle を使用して各フィルターの重要度インデックスを計算し、並べ替えと枝刈りを実行して微調整する場合、この反復方法は非常に時間がかかり、膨大な計算量が必要になります。このボトルネックを踏まえ、著者はオラクルの考え方に基づいた枝刈り手法を提案する。

方法

まず、元のオラクルの計算は、最終層の出力損失の変化を比較することによって得られますが、著者は、最終出力の代わりに次の層の出力特徴マップの変化度を使用するという改良を提案しています。フィルターを削除した場合の影響を評価します。この方法は、著者がネットワークがステート マシンと同等であり、損傷分離の状況が存在すると信じているという事実に基づいています。つまり、現在の層フィルタの削除は次の層の入力にのみ影響します。後続のレイヤーは現在のレイヤーの変更を見ることができません。この変更は、前のレイヤー フィルターの変更によって引き起こされたものとみなされます。この方法により、Oracle の評価時間が大幅に短縮されます。そうでない場合、各フィルターはネットワーク全体を実行する必要があります。重要度指標は次のように定義されます。
重要度指数

第二に、重要度インデックスの定義が解決された後、著者は、枝刈りプロセスと微調整プロセスを同時に進めるためのマルチパストレーニング枝刈りネットワークを提案します。以下に示すように。
マルチパスプルーニングトレーニングネットワーク
図には 3 つのパスがあります。左側はバックプロパゲーションの勾配更新パス、中央はベース パスと呼ばれる枝刈りされたネットワークです。ここで、uuuレイヤーはマスク レイヤーで、プルーニングされたフィルターをマークするために使用され、右側はスコアリング パスで、各フィルターの重要度インデックスを計算するために使用されます。vvvレイヤーはそのマスク レイヤーであり、プルーニングを続けるフィルターの重要度インデックスを計算するために使用されます。上の図を例にとります。conv1 レイヤーはすでに 2 つのフィルターをプルーニングしています。今度は 3 番目のフィルターをプルーニングしてみます。この時点ではvvvのフィルター マスクはuuuに保持されるため、conv2 によって出力された特徴マップ上で変化する 2 つのパスの損失は、フィルターの重要度インデックス、つまり図の「conv1 の t を計算する」を削除することになります。したがって、順伝播のプロセスでは、ファインチューン ネットワークにベース パスが使用され、同時に元の出力が生成され、スコア パスでフィルターの重要度が取得されます。この並列処理により、トレーニングのプロセスが高速化されます。そして剪定。

数回の順伝播後にすべてのフィルターの重要度指標を計算するために、著者は、重要度を計算するために層ごとに 1 つのフィルターをマスクするだけではなく、各層を使用してフィルターのバッチをランダムにマスクする (数は固定されています) ことを提案します。 。各順伝播後に計算された重要度指数 (t 値) がマスクされたフィルターに記録されます。n バッチを入力した後、各フィルターにいくつかの損失が記録されます。それ自体ではありませんが、期待値は平均損失に等しいはずです。他のフィルター + 独自の損失。したがって、損失の期待値によって各フィルターの重要性を区別できます。

毎回のマスク数の決定について、著者はバイナリ法を使用して、前回の順方向伝播から取得したフィルターセットの重要でない半分からフィルターの半分を毎回ランダムに選択する段階的な最適化のアイデアを提案しています。これを使用します。セットの半分で損失がしきい値よりも低いフィルタマスクは0です(つまり、uu)uのマスクは 0 であり、順伝播の次のラウンドで枝刈りされます)。具体的な手順は次のとおりです。
アルゴリズム
プロセスの終了条件は、マスク対象として選択したセット内の最大損失値が定義されたしきい値以上で、セット内の要素の数が 1 であることです。

実験

データセット: CIFAR-10、ImageNet
モデル: AlexNet、ResNet、VGGNet

結果

CIFAR-10
イメージネット
VGG
CNNの再設計

思い

この方法では、バッチ数の選択に疑問があります。以前に実験を行う過程で、トレーニング セット全体を入力として使用する場合のみフィルターの重要性を正確に反映できることがわかったためです。次の層の出力差の計算は、最終出力の損失差の近似にすぎない一方で、スコアの計算にはデータセットの一部のみが使用されます。非常に正確であり、継続的な微調整を通じてネットワークを改善するだけかもしれません。以下の実験手順を詳しく見てみるのもよいでしょう。

おすすめ

転載: blog.csdn.net/qq_43812519/article/details/105186972