リーディングノート:ThiNet:ディープニューラルネットワーク圧縮のためのフィルターレベルプルーニング方法
Reading Note Thinet
題名 :ThiNet:ディープニューラルネットワーク圧縮のためのフィルターレベルプルーニング方法
著者 :Jian-Hao Luo、Jianxin Wu、Weiyao Lin
協会 :南京大学、上海交通大学
から : arXiv:1707.06342
貢献
- CNNモデルを同時に加速および圧縮するために、シンプルでありながら効果的なフレームワーク、つまりThiNetが提案されています。
- フィルタープルーニングは、最適化問題として正式に確立され、次のレイヤーから計算された統計情報を使用してフィルターがプルーニングされます。
方法
フレームワーク
次の図に、ThiNet圧縮手順のフレームワークを示します。黄色の点線のボックスは、剪定される弱いチャネルとそれに対応するフィルガーです。
- フィルタの選択。 レイヤーの出力 私+1 層の剪定をガイドするために使用されます 私 。重要なアイデアは次のとおりです。レイヤー内のチャネルのサブセットの場合 ((私+1)。 の入力は、レイヤーの出力を近似できます 私+1 、他のチャネルはレイヤーの入力から安全に削除できます 私+1 。レイヤー内の1つのチャネルに注意してください ((私+1)。 の入力は、レイヤー内の1つのフィルターによって生成されます 私 、したがって、レイヤー内の対応するフィルター 私 安全に剪定することができます。
- 剪定。 レイヤーの弱いチャネル ((私+1)。 の入力とそれに対応するレイヤーiのフィルターは削除され、モデルがはるかに小さくなります。プルーニングされたネットワークはまったく同じ構造ですが、フィルターとチャネルが少ないことに注意してください。
- 微調整。 微調整は、フィルターの剪定によって損傷した一般化能力を回復するために必要なステップです。時間節約の考慮事項として、1つのレイヤーのプルーニング後に1つまたは2つのエポックを微調整します。正確なモデルを取得するために、すべてのレイヤーがプルーニングされたときに、さらに多くのエポックが実行されます。
- 手順1を繰り返して、次のレイヤーを削除します。
データ駆動型チャネル選択
層内の畳み込みプロセスを示します 私 トリプレットとして ⟨私私、に私、∗⟩ 、 どこ 私私 は入力テンソルであり、 C チャネル、 H 行と に 列。そして に私 とのフィルターのセットです に××に カーネルサイズ。これにより、次の新しいテンソルが生成されます。 D チャネル。フィルターが に私 が削除され、対応するチャネルが 私私+1 そして に私+1 また、破棄されます。ただし、レイヤー内のフィルター番号から 私+1 変更されていない場合、その出力テンソルのサイズ、つまり、 私私+二 、まったく同じに保たれます。影響がほとんどないいくつかのフィルターを削除できれば 私私+二 (これはレイヤーの出力でもあります 私+1 )、全体的なパフォーマンスにもほとんど影響しません。
トレーニング例の収集
トレーニングセットはテンソルからランダムにサンプリングされます 私私+二 次の図に示すように。
畳み込み演算は簡単な方法で形式化できます
Y^=∑c=1Cバツ^c
チャネル選択のための欲張りアルゴリズム
与えられたセット m トレーニング例 {{((バツ^私、Y^私)。} 、チャネルの選択は最適化問題と見なすことができます、
そしてそれは、次の代替目的である可能性があります。
どこ S∪T={{1、二、。。。、C} そして S∩T=∅ 。この問題は、欲張りアルゴリズムによって解決できます。
再構成エラーを最小限に抑える
サブセットの後 T が取得されると、再構成エラーを最小限に抑えるために、各フィルターの重みのスケーリング係数が学習されます。
いくつかのアイデア
- たぶん、細目は再構築エラーを最小限に抑える最後のステップを回避するのに役立ちます。
- この作業を検出やセグメンテーションなどの非分類タスクで使用する場合、パフォーマンスはまだチェックされていません。