Open Beluuuuuuga opened 4 years ago
https://arxiv.org/pdf/1802.00939.pdf Jian Cheng, Peisong Wang, Gang Li, Qinghao Hu, Hanqing Lu
モデル軽量化のサーベイ論文で、ネットワーク枝刈り(network pruning), 低ランク近似(low-rank approximation), ネットワーク量子化(network quantization), 蒸留(teacher-student networks), コンパクトなネットワークデザイン(compact network design), ハードによる高速化(hardware accelerators)について調査し、紹介する。
近年、無人ドローン、スマートフォン、インテリジェントメガネなどの組み込み機器やモバイル機器の分野で大きな進歩が見られています。これらの機器へのDNNモデルの展開に対する需要はますます高まっている。しかし、これらの機器のリソース(例えば、ストレージや計算ユニット、バッテリ電力など)は非常に限られており、低コストの環境で最新のDNNを高速化することが大きな課題となっている。
学習時では、高性能なCPUやGPUクラウドにより、計算の複雑さは問題とはならない。また、最新のコンピュータは大容量のディスクとメモリを搭載しているので、学習時にも問題とならない。
しかし、CNNの推論時、組み込み機器やモバイル機器に搭載する際に、状況は大きく異なり、CNNの計算の際にバッテリーをかなり消費してしまうことや、パラメータ数により、ストレージとランタイムメモリを消費してしまう。
一般に、CNNの計算複雑度は、表1に示すように、畳み込み層に支配され、パラメータの数は主に完全に接続された層に関係している。したがって、ほとんどのネットワーク高速化手法は畳み込み層の計算複雑度を下げることに焦点を当てているのに対し、ネットワーク圧縮手法は主に完全接続層を圧縮しようとしている。
重要でないパラメータを除去するため、枝刈りが使用される。枝刈りにより利点は2つあり、1点目は剪定後の疎なパラメータは、圧縮された疎な行形式(CSR)または圧縮された疎な列形式(CSC)で保存できるためディスク容量が少なくて済むこと、2点目は枝刈り後のパラメータを含む計算が省略されるため、ディープネットワークの計算複雑度を低減することが挙げられる。 刈り込みの粒度によって、細粒度刈り込み、ベクトルレベル刈り込み、カーネルレベル刈り込み、グループレベル刈り込み、フィルタレベル刈り込みの5つのグループに分類 され、図1で示される。
畳み込み層の畳み込みカーネルW∈R^(w×h×c×n)は4次元テンソルである。これらの4次元は、それぞれ、カーネルの幅、カーネルの高さ、入力チャネルと出力チャネルの数に対応している。次元の一部をマージすることにより、4次元テンソルはt-D(t=1,-----4)テンソルに変換できる。低ランク分解の動機は、Wに近いがより効率的な計算を容易にする近似テンソルWˆを見つけること。4次元をどのように並べ替えるか、どの次元で低ランク制約を課すかという2つのポイントがある。フィルタが分解される成分の数に応じて、低ランクに基づく手法を大まかに3つのカテゴリに分ける:2成分分解、3成分分解、4成分分解。
提案:2 成分分解では,重みテンソルを 2 つに分割し,畳み込み層を 2 つの連続した層に置き換える。
SVDは一般的な低ランク行列分解法。次元の w,h,c を結合することで、カーネルは(w ∗ h ∗ c)×n の大きさの 2 次元行列となり、SVD 分解法を行うことができる。
2成分分解法の解析に基づいて、2つの連続した2成分分解によって1つの素直な3成分分解法を得ることができる。 SVD分解では、2つの重みテンソルが導入されていることに注意する。一つはw×h×c×dのテンソルであり、もう一つはd×nのテンソル(行列)である。第1の畳み込みは、第1のテンソルのサイズが大きいため、非常に時間がかかります。また、SVD分解後の第1の重みテンソルに対して2成分分解を行うことも可能であり、これは3成分分解法に変わる。
[97]: Accelerating very deep convolutional networks for classification and detection., Zhang et al., 2015
[41]: Compression of Deep Convolutional Neural Networks for Fast and Low Power Mobile Applications., Kim et al., 2015
[80]: Accelerating Convolutional Neural Networks for MobileApplications., Wang et al., 2016
[82]: Accelerating very deep convolutional networks for classification and detection., Wang et al., 2018
資料
提案:空間次元だけでなく、入出力チャネル次元に沿って低ランク特性を探索することで、4成分分解を得る
[45]: Speeding-up Convolutional Neural Networks Using Fine-tuned CP-Decomposition., Lebedev et al., 2014
量子化は、多くの圧縮・高速化アプリケーションのためのアプローチです。画像圧縮や情報検索などに幅広く応用されています。また、ネットワークの高速化や圧縮のために、多くの量子化手法が研究されている。これらの手法を大きく2つのグループに分類することができ、(1)スカラー量子化やベクトル量子化など、量子化のためのコードブックが必要となる場合がある手法と、(2)固定点量子化の2つに分類できる。
[15]: Compressing Deep Convolutional Networks using Vector Quantization., Lebedev et al., 2014
[86]: Quantized convolutional neural networks for mobile devices., Wu et al., 2016
[8]: Quantized cnn: A unified approach to accelerate and compress convolutional networks., Cheng et al., 2017
定点量子化は、ネットワークのリソース消費量を低減するために有効な手法である。どの部分を量子化するかによって、重み量子化と活性化量子化の2つに大別される。 他にも、グラデーションを量子化することで、ネットワーク学習の高速化を図る研究もあります。ここでは、主にテスト段階の計算を高速化する重み量子化と活性化量子化の手法を紹介する。
表2は、どの部分を量子化するか、また、訓練・テスト段階の高速化が可能かどうかによって、これらの方法をまとめたもの。
蒸留では、教師モデルを用いて生徒モデルを訓練する。一般的に教師モデルが大きなモデルであるのに対し、生徒モデルはコンパクトなネットワークである。単にクラスラベルを学習するよりも、教師ネットワークから伝達された暗黙知(the dark knowledge)を利用することで、高い精度を得ることができる。
低ランク近似を理解する必要あり。CP分解->Tucker分解みたいな感じ。 4.2のThree-component Decompositionはもう一度読む必要あり。
論文情報
https://arxiv.org/pdf/1802.00939.pdf Jian Cheng, Peisong Wang, Gang Li, Qinghao Hu, Hanqing Lu
一言で言うと
モデル軽量化のサーベイ論文で、ネットワーク枝刈り(network pruning), 低ランク近似(low-rank approximation), ネットワーク量子化(network quantization), 蒸留(teacher-student networks), コンパクトなネットワークデザイン(compact network design), ハードによる高速化(hardware accelerators)について調査し、紹介する。
背景
近年、無人ドローン、スマートフォン、インテリジェントメガネなどの組み込み機器やモバイル機器の分野で大きな進歩が見られています。これらの機器へのDNNモデルの展開に対する需要はますます高まっている。しかし、これらの機器のリソース(例えば、ストレージや計算ユニット、バッテリ電力など)は非常に限られており、低コストの環境で最新のDNNを高速化することが大きな課題となっている。
学習時では、高性能なCPUやGPUクラウドにより、計算の複雑さは問題とはならない。また、最新のコンピュータは大容量のディスクとメモリを搭載しているので、学習時にも問題とならない。
しかし、CNNの推論時、組み込み機器やモバイル機器に搭載する際に、状況は大きく異なり、CNNの計算の際にバッテリーをかなり消費してしまうことや、パラメータ数により、ストレージとランタイムメモリを消費してしまう。
一般に、CNNの計算複雑度は、表1に示すように、畳み込み層に支配され、パラメータの数は主に完全に接続された層に関係している。したがって、ほとんどのネットワーク高速化手法は畳み込み層の計算複雑度を下げることに焦点を当てているのに対し、ネットワーク圧縮手法は主に完全接続層を圧縮しようとしている。
貢献・提案
3.ネットワーク枝刈り
重要でないパラメータを除去するため、枝刈りが使用される。枝刈りにより利点は2つあり、1点目は剪定後の疎なパラメータは、圧縮された疎な行形式(CSR)または圧縮された疎な列形式(CSC)で保存できるためディスク容量が少なくて済むこと、2点目は枝刈り後のパラメータを含む計算が省略されるため、ディープネットワークの計算複雑度を低減することが挙げられる。 刈り込みの粒度によって、細粒度刈り込み、ベクトルレベル刈り込み、カーネルレベル刈り込み、グループレベル刈り込み、フィルタレベル刈り込みの5つのグループに分類 され、図1で示される。![image](https://user-images.githubusercontent.com/45144084/85638305-8637c780-b6c0-11ea-8e89-db06f026fab8.png)
3.1.細かい枝刈り(Fine-grained Pruning)
4.低ランク近似(Low-rank Approximation)
畳み込み層の畳み込みカーネルW∈R^(w×h×c×n)は4次元テンソルである。これらの4次元は、それぞれ、カーネルの幅、カーネルの高さ、入力チャネルと出力チャネルの数に対応している。次元の一部をマージすることにより、4次元テンソルはt-D(t=1,-----4)テンソルに変換できる。低ランク分解の動機は、Wに近いがより効率的な計算を容易にする近似テンソルWˆを見つけること。4次元をどのように並べ替えるか、どの次元で低ランク制約を課すかという2つのポイントがある。フィルタが分解される成分の数に応じて、低ランクに基づく手法を大まかに3つのカテゴリに分ける:2成分分解、3成分分解、4成分分解。
4.1.2成分分解(Two-component Decomposition)
提案:2 成分分解では,重みテンソルを 2 つに分割し,畳み込み層を 2 つの連続した層に置き換える。
SVDは一般的な低ランク行列分解法。次元の w,h,c を結合することで、カーネルは(w ∗ h ∗ c)×n の大きさの 2 次元行列となり、SVD 分解法を行うことができる。
4.1.3成分分解(Three-component Decomposition)
2成分分解法の解析に基づいて、2つの連続した2成分分解によって1つの素直な3成分分解法を得ることができる。 SVD分解では、2つの重みテンソルが導入されていることに注意する。一つはw×h×c×dのテンソルであり、もう一つはd×nのテンソル(行列)である。第1の畳み込みは、第1のテンソルのサイズが大きいため、非常に時間がかかります。また、SVD分解後の第1の重みテンソルに対して2成分分解を行うことも可能であり、これは3成分分解法に変わる。
[97]: Accelerating very deep convolutional networks for classification and detection., Zhang et al., 2015
[41]: Compression of Deep Convolutional Neural Networks for Fast and Low Power Mobile Applications., Kim et al., 2015
[80]: Accelerating Convolutional Neural Networks for MobileApplications., Wang et al., 2016
[82]: Accelerating very deep convolutional networks for classification and detection., Wang et al., 2018
資料
4.1.4成分分解(Four-component Decomposition)
提案:空間次元だけでなく、入出力チャネル次元に沿って低ランク特性を探索することで、4成分分解を得る
[45]: Speeding-up Convolutional Neural Networks Using Fine-tuned CP-Decomposition., Lebedev et al., 2014
5.ネットワーク量子化(Network Quantization)
量子化は、多くの圧縮・高速化アプリケーションのためのアプローチです。画像圧縮や情報検索などに幅広く応用されています。また、ネットワークの高速化や圧縮のために、多くの量子化手法が研究されている。これらの手法を大きく2つのグループに分類することができ、(1)スカラー量子化やベクトル量子化など、量子化のためのコードブックが必要となる場合がある手法と、(2)固定点量子化の2つに分類できる。
5.1. スカラー量子化・ベクトル量子化(Scalar and Vector Quantization)
[15]: Compressing Deep Convolutional Networks using Vector Quantization., Lebedev et al., 2014
[86]: Quantized convolutional neural networks for mobile devices., Wu et al., 2016
[8]: Quantized cnn: A unified approach to accelerate and compress convolutional networks., Cheng et al., 2017
5.2. 固定点量子化(Fixed-point Quantization)
定点量子化は、ネットワークのリソース消費量を低減するために有効な手法である。どの部分を量子化するかによって、重み量子化と活性化量子化の2つに大別される。 他にも、グラデーションを量子化することで、ネットワーク学習の高速化を図る研究もあります。ここでは、主にテスト段階の計算を高速化する重み量子化と活性化量子化の手法を紹介する。
表2は、どの部分を量子化するか、また、訓練・テスト段階の高速化が可能かどうかによって、これらの方法をまとめたもの。
資料
6.蒸留(Teacher-student Network)
蒸留では、教師モデルを用いて生徒モデルを訓練する。一般的に教師モデルが大きなモデルであるのに対し、生徒モデルはコンパクトなネットワークである。単にクラスラベルを学習するよりも、教師ネットワークから伝達された暗黙知(the dark knowledge)を利用することで、高い精度を得ることができる。
実験・考察
補足・疑問など
低ランク近似を理解する必要あり。CP分解->Tucker分解みたいな感じ。 4.2のThree-component Decompositionはもう一度読む必要あり。