Open Beluuuuuuga opened 4 years ago
https://arxiv.org/pdf/1710.09282.pdf Yu Cheng, Duo Wang, Pan Zhou, Member, IEEE, and Tao Zhang, Senior Member, IEEE
モデル軽量化のサーベイ論文で、4つの手法、枝刈り・量子化( PARAMETER PRUNING AND QUANTIZATION)、低ランク近似(LOW-RANK APPROXIMATION AND SPARSITY)、転送/コンパクトな畳み込みフィルタ(TRANSFERRED/COMPACT CONVOLUTIONAL FILTERS)、蒸留(KNOWLEDGE DISTILLATION)についてそれぞれ紹介し、分析・評価・課題について述べる。
2012年のImageNet Challengeや、Faces in the Wild (LFW) datasetなどで使用されたモデルで、モデルの学習を行い良い性能を出すためには、多くの時間を要し、そのような構造では、全結合層を必要とし、それによりパラメータ数が10億ほどになる。
大きなネットワークでは、多くのレイヤーとノードがあるため、 リアルタイムアプリケーションでは、オンライン学習や増分学習(Incremental learning)などで、ハードのストレージやコンピュータコストが致命的になる。効率的な深層学習メソッドはAIに大きな影響を持ち、画像処理を行う際に、95MBのストレージ、38億の浮動小数点乗算必要な50層のResNet-50などが例として挙げられる。このResNet-50の余分な重みを削除後、75%以上のパラメータと、50%のコンピュータ時間を削減したが、ネットワークは重み削除前と同様に機能した。
それぞれの軽量化手法の多くは独立しており、枝刈りと量子化を同時にデプロイできるなど、それぞれで補完している。もう一つ例を挙げると、モデル量子化・二値化は低ランク近似と同時に使用され、更なる圧縮と計算スピードアップを達成した。
ネットワークの複雑さを低減し、過学習問題に対処している。枝刈りは、ニューラルネットワークに正規化する効果があるので、汎化性能を向上する。
ネットワーク量子化は、各重みを表すのに必要なビット数を減らすことで、元のネットワークを圧縮
[19]~[21]の重み減衰(weight decay)のような手法は、値ベース(magnitude based pruning)の手法よりも精度が良かった
[22]~[25]では、事前に訓練されたDNNモデルの冗長で非情報的な重みを枝刈り
[26]~[29]では、 スパース性の制約(sparsity constraints)についての論文。スパース性は典型的には、l0もしくはl1ノルム正則化の最適化問題として導入される。
拡張モデル
実験 考察 GoogleNetのような大きなCNNの場合バイナリネットの精度は低くなる。バイナリネットのもう一つの欠点は、既存の二値化手法が簡単な行列近似に基づいており、精度低下における二値化の影響を無視している。このような問題に対処しているのは以下の論文である
実験 考察 l1もしくはl2正則化を使用する場合、一般的な手法よりも多くのイテレーションを必要とする。加えて、枝刈りの基準のためには、層に対して繊細な手作業でのセットアップが必要であり、これによりパラメータのファインチューニングが必要になり、煩わしくなる可能性がある。さらに、ネットワーク枝刈りは通常、モデルサイズは小さくするが、トレーニングやテストの速度は向上しない。
実験 考察 この種のアプローチの問題点の1つは,構造的制約がモデルにバイアスをもたらす可能性があるため,通常は性能に悪影響を与える.一方で,適切な構造行列をどうやって見つけるかは難しい.それを導き出す理論的な方法はない。
実験
考察 低ランク近似に基づくアプローチは、モデルの圧縮と高速化のために単純である。しかし、計算量の多い分解演算を伴うため、実装はそれほど簡単ではない。 もう一つの問題は、現在の手法は低ランク近似をレイヤーごとに実行しているため、異なる層が異なる情報を保持しているために重要な全体のパラメータ圧縮を実行できない。最後に、factorizationは、元のモデルと比較して収束を達成するために、大規模なモデル再訓練を必要とする。
考察 畳み込み層に変換制約を適用することはいくつか問題がある。これらの手法は、広い/平坦なアーキテクチャ(VGGNet、AlexNetなど)では良い性能を達成するが、薄い/深いアーキテクチャ(ResNetなど)では良い性能を発揮しない。第二に,伝達の仮定が強すぎて学習を導くことができず,結果が不安定になる場合がある。畳み込みのためにコンパクトなフィルタを使用することで,計算コストを直接削減することができる。重要なのは、ルーズでオーバーパラメトリックなフィルタをコンパクトなブロックに置き換えて速度を向上させることである。
実験 考察 蒸留のアプローチでは、深いモデルを浅いモデルに変更し、コンピュータのコストをかなり抑えることに大きく貢献する。しかし、いくつか歓迎できない点もあり、1つがソフトマックスなどのタスクにしか適用できないことと、もう一つが一般的に他の軽量化手法に劣ることが挙げられる。
実験 考察
考察 圧縮と速度向上のモデルとしてよく知られているモデルは、AlexNetでありパフォーマンス評価のために使用された。他のモデルでは、LeNetsやAll-CNN-netsなどがある。network in networks (NIN)やVGG nets、residual networks(ResNet)も新しいモデルではあるが、ベースラインのモデルとして使用される。
考察 アプリケーションや求められる状況により、適切な圧縮手法は変化する。
8-A.一般的なサジェスチョン
8-B.技術的課題
8-C.可能性のある未来の研究方針
computational timeとはCPU時間であるが、具体的にどの計算時間を指すのかわからない
蒸留の手法が本当に新しいのか疑問。ちょっと古いような気がする
codebook コードブックとは
バイナリネットとは、量子化いまいちわからない
構造行列のデザインとは?
圧縮率(compression rate) は
であり、aがオリジナルのパラメータ数であり、a*が圧縮されたときのパラメータ数である。
空間削減率(space saving rate)は
である。
実行時間(running time)は
であり、sがオリジナルの実行時間であり、s*が圧縮されたときの実行時間である。エポックごとの平均時間を使用している。学習と推論において、圧縮率と速度上昇率は高い相関関係にある。
より少ないパラメータ数と、より短い実行時間(computational time)でもともとのモデルと同じくらいのパフォーマンスを実現できるモデルが良い圧縮手法。
異なるCNNデザインでは、パラメータ数と実行時間が異なることがある。
例を挙げると、全結合層を持つ深層CNNsでは、ほとんどのパラメータが全結合層に存在している一方で、画像分類タスクなどで、浮動小数点演算(float point operations)初めの数枚の畳み込み層でほとんど行われる。
よって、ネットワークの圧縮と高速化は、求められる機能ごとに焦点を当てる を変える必要がある。
AlexNet 8層(中間層が6層)、VGG 16層、ResNet 152層
論文情報
https://arxiv.org/pdf/1710.09282.pdf Yu Cheng, Duo Wang, Pan Zhou, Member, IEEE, and Tao Zhang, Senior Member, IEEE
一言で言うと
モデル軽量化のサーベイ論文で、4つの手法、枝刈り・量子化( PARAMETER PRUNING AND QUANTIZATION)、低ランク近似(LOW-RANK APPROXIMATION AND SPARSITY)、転送/コンパクトな畳み込みフィルタ(TRANSFERRED/COMPACT CONVOLUTIONAL FILTERS)、蒸留(KNOWLEDGE DISTILLATION)についてそれぞれ紹介し、分析・評価・課題について述べる。
背景
2012年のImageNet Challengeや、Faces in the Wild (LFW) datasetなどで使用されたモデルで、モデルの学習を行い良い性能を出すためには、多くの時間を要し、そのような構造では、全結合層を必要とし、それによりパラメータ数が10億ほどになる。
大きなネットワークでは、多くのレイヤーとノードがあるため、 リアルタイムアプリケーションでは、オンライン学習や増分学習(Incremental learning)などで、ハードのストレージやコンピュータコストが致命的になる。効率的な深層学習メソッドはAIに大きな影響を持ち、画像処理を行う際に、95MBのストレージ、38億の浮動小数点乗算必要な50層のResNet-50などが例として挙げられる。このResNet-50の余分な重みを削除後、75%以上のパラメータと、50%のコンピュータ時間を削減したが、ネットワークは重み削除前と同様に機能した。
それぞれの軽量化手法の多くは独立しており、枝刈りと量子化を同時にデプロイできるなど、それぞれで補完している。もう一つ例を挙げると、モデル量子化・二値化は低ランク近似と同時に使用され、更なる圧縮と計算スピードアップを達成した。
貢献・提案
2.パラメータ枝刈り・量子化
ネットワークの複雑さを低減し、過学習問題に対処している。枝刈りは、ニューラルネットワークに正規化する効果があるので、汎化性能を向上する。
2-A.量子化と二値化
ネットワーク量子化は、各重みを表すのに必要なビット数を減らすことで、元のネットワークを圧縮
2-B.ネットワーク枝刈り
[19]~[21]の重み減衰(weight decay)のような手法は、値ベース(magnitude based pruning)の手法よりも精度が良かった
[22]~[25]では、事前に訓練されたDNNモデルの冗長で非情報的な重みを枝刈り
[26]~[29]では、 スパース性の制約(sparsity constraints)についての論文。スパース性は典型的には、l0もしくはl1ノルム正則化の最適化問題として導入される。
2-C.構造行列のデザイン
3.低ランク近似とスパース性
4.転送/コンパクトな畳み込みフィルタ
5.蒸留
拡張モデル
6.その他
7.ベンチマーク
8.課題と今後のタスク
実験・考察
論文内で言及された手法に適用したモデルとデータセット
(枝刈り・量子化)
(枝刈り・量子化)
(枝刈り・量子化)
CIFAR-100、SVHNやAFLW
論文内で言及された圧縮手法に対する結果
(枝刈り・量子化)
(枝刈り・量子化)
(枝刈り・量子化)
2-A.量子化と二値化
実験 考察 GoogleNetのような大きなCNNの場合バイナリネットの精度は低くなる。バイナリネットのもう一つの欠点は、既存の二値化手法が簡単な行列近似に基づいており、精度低下における二値化の影響を無視している。このような問題に対処しているのは以下の論文である
2-B.ネットワーク枝刈り
実験 考察 l1もしくはl2正則化を使用する場合、一般的な手法よりも多くのイテレーションを必要とする。加えて、枝刈りの基準のためには、層に対して繊細な手作業でのセットアップが必要であり、これによりパラメータのファインチューニングが必要になり、煩わしくなる可能性がある。さらに、ネットワーク枝刈りは通常、モデルサイズは小さくするが、トレーニングやテストの速度は向上しない。
2-C.構造行列のデザイン
実験 考察 この種のアプローチの問題点の1つは,構造的制約がモデルにバイアスをもたらす可能性があるため,通常は性能に悪影響を与える.一方で,適切な構造行列をどうやって見つけるかは難しい.それを導き出す理論的な方法はない。
3.低ランク近似とスパース性
実験
考察 低ランク近似に基づくアプローチは、モデルの圧縮と高速化のために単純である。しかし、計算量の多い分解演算を伴うため、実装はそれほど簡単ではない。 もう一つの問題は、現在の手法は低ランク近似をレイヤーごとに実行しているため、異なる層が異なる情報を保持しているために重要な全体のパラメータ圧縮を実行できない。最後に、factorizationは、元のモデルと比較して収束を達成するために、大規模なモデル再訓練を必要とする。
4.転送/コンパクトな畳み込みフィルタ
実験
考察 畳み込み層に変換制約を適用することはいくつか問題がある。これらの手法は、広い/平坦なアーキテクチャ(VGGNet、AlexNetなど)では良い性能を達成するが、薄い/深いアーキテクチャ(ResNetなど)では良い性能を発揮しない。第二に,伝達の仮定が強すぎて学習を導くことができず,結果が不安定になる場合がある。畳み込みのためにコンパクトなフィルタを使用することで,計算コストを直接削減することができる。重要なのは、ルーズでオーバーパラメトリックなフィルタをコンパクトなブロックに置き換えて速度を向上させることである。
5.蒸留
実験 考察 蒸留のアプローチでは、深いモデルを浅いモデルに変更し、コンピュータのコストをかなり抑えることに大きく貢献する。しかし、いくつか歓迎できない点もあり、1つがソフトマックスなどのタスクにしか適用できないことと、もう一つが一般的に他の軽量化手法に劣ることが挙げられる。
6.その他
実験 考察
7.ベンチマーク
実験
考察 圧縮と速度向上のモデルとしてよく知られているモデルは、AlexNetでありパフォーマンス評価のために使用された。他のモデルでは、LeNetsやAll-CNN-netsなどがある。network in networks (NIN)やVGG nets、residual networks(ResNet)も新しいモデルではあるが、ベースラインのモデルとして使用される。
8.課題と今後のタスク
考察 アプリケーションや求められる状況により、適切な圧縮手法は変化する。
8-A.一般的なサジェスチョン
8-B.技術的課題
8-C.可能性のある未来の研究方針
補足・疑問など
疑問
computational timeとはCPU時間であるが、具体的にどの計算時間を指すのかわからない
蒸留の手法が本当に新しいのか疑問。ちょっと古いような気がする
codebook コードブックとは
バイナリネットとは、量子化いまいちわからない
構造行列のデザインとは?
圧縮手法評価の計算式
圧縮率(compression rate) は
であり、aがオリジナルのパラメータ数であり、a*が圧縮されたときのパラメータ数である。
空間削減率(space saving rate)は
である。
実行時間(running time)は
であり、sがオリジナルの実行時間であり、s*が圧縮されたときの実行時間である。エポックごとの平均時間を使用している。学習と推論において、圧縮率と速度上昇率は高い相関関係にある。
良い圧縮手法
より少ないパラメータ数と、より短い実行時間(computational time)でもともとのモデルと同じくらいのパフォーマンスを実現できるモデルが良い圧縮手法。
異なるCNNデザインでは、パラメータ数と実行時間が異なることがある。
例を挙げると、全結合層を持つ深層CNNsでは、ほとんどのパラメータが全結合層に存在している一方で、画像分類タスクなどで、浮動小数点演算(float point operations)初めの数枚の畳み込み層でほとんど行われる。
よって、ネットワークの圧縮と高速化は、求められる機能ごとに焦点を当てる を変える必要がある。
モデル
AlexNet 8層(中間層が6層)、VGG 16層、ResNet 152層
略語