狠狠撸
Submit Search
Network weight saving_20190123
?
0 likes
?
787 views
M
Masakazu Shinoda
Follow
ネットワーク軽量化についてのまとめ
Read less
Read more
1 of 47
Download now
Download to read offline
More Related Content
Network weight saving_20190123
1.
ネットワーク軽量化についてのまとめ 2019/01/23
2.
Agenda 1. ネットワークの軽量化とは 2. 通常の畳み込み処理 3.
pointwiseとdepthwise 畳み込み 4. Inception 5. MobileNets 6. SqueezeNet 7. ShuffleNet 8. Xception 9. BinaryNet
3.
1. ネットワークの軽量化とは
4.
ネットワークの軽量化 軽量なネットワーク =性能あたりのパラメータ数が少ないネットワーク 軽量なネットワークを構築すること 計算資源の限られているモバイルやエッジコンピューティングにおいて重要。 また軽量化することで、その分ネットワークの層を深くしたりすることもできるので、逆に 精度改善につながる可能性も。 軽量化のアプローチ ?畳み込み層の構造を工夫することでパラメータ数を削減する手法 ?パラメータ自体を圧縮する手法 に大別できる。
5.
軽量化手法 (1) 畳み込み層の構造を工夫することで パラメータ数および計算量を削減する手法 ● GoogLeNet
(Inception module) ● ResNet (bottleneck architecture), ● SqueezeNet (fire module) ● MobileNets & Xception (depthwise and pointwise convolution) (2) ネットワークのパラメータを圧縮する手法 ● バイナリ化 ● Pruning ● 量子化(直積量子化含む) ● ハフマン符号化
6.
XceptionとMobileNets この2つはともに前者、パラメータ数を削減するアプローチ どちらの論文もpointwise convolutionとdepthwise (separable)
convoutionを用いて精 度を保ちながらCNNのパラメータ数を削減している。 すなわち、精度とパラメータ数のトレードオフを改善していると言える。 Xceptionは、パラメータ削減により、同一のパラメータで大規模な画像認識の高精度化 を実現し、 MobileNetsは、精度を保ちながMobile上での高速な画像認識を実現している。 ちなみに作者「Fran?ois Chollet」は「フランソア?ショレ」
7.
2. 通常の畳み込み処理
8.
畳み込み層の計算量とパラメータ数 Pointwise convolutionとdepthwise convolutionのメリットを理解する前に 通常の畳み込み層の計算量とパラメータ数について 入力特徴マップのサイズをF×F、 入力チャネル数をN、 カーネルサイズをK×K、 出力チャネル数をMとすると、 この畳み込み層の計算量は、 F2 NK2 M となる。
9.
畳み込み層の計算量とパラメータ数 Pointwise convolutionとdepthwise convolutionのメリットを理解する前に 通常の畳み込み層の計算量とパラメータ数について 計算量 F2 NK2 M 入力特徴マップの1箇所につき畳み込みの コストがK2 N、 これを入力特徴マップのF2 箇所 に適用することで、1チャネルの出力 特徴マップが生成されることから、 出力特徴マップがM個のケースでは上記の 計算量になる。
10.
畳み込み層の計算量とパラメータ数 Pointwise convolutionとdepthwise convolutionのメリットを理解する前に 通常の畳み込み層の計算量とパラメータ数について 計算量 F2 NK2 M パラメータ数 パラメータ数がK2 Nの畳み込みが M種類あるので、K2 NMとなる。
11.
計算量削減のキモ この計算量とパラメータ数を畳み込み層の構成を工夫することで 削減することがMobileNetsおよびXceptionのキモ。 具体的には、 ?通常の畳込みが、特徴マップの「空間方向とチャネル方向に同時に」畳み込みを行う のに対し、 ?チャネル方向の畳み込み (pointwise convolution)
と 空間方向の畳み込み (depthwise convolution) を分ける (factorize) ことを行う。
12.
3. pointwiseとdepthwise 畳み込み
13.
Pointwise convolution Pointwise convolutionは、 ResNet等のskip
connectionでも 利用される1x1の畳み込み。 空間方向の畳み込みは行わず、 チャネル方向への畳込みを行う。 特徴マップの次元を増やしたり 減らしたりするのにも利用される。 Pointwise convolutionは、通常の畳 込みのK=1としたもの 計算量はF2 NM、 パラメータ数はNMとなる。
14.
pointwise convolutionのメリット 最大のメリットは層数を簡単に任意の値に変更できる点。 他にも副次的に色々とメリットがある。 ?1x1の畳み込みはCPUでも高速で動作する ?畳み込みのフィルタサイズを1x1にするだけで実装できるため 他の次元削減?拡張手法に比べて圧倒的に実装が楽 ?出力の層数を簡単に増減できる ?出力にrelu等を与えることによって、非線形性を増すことができる
15.
Depthwise convolution Depthwise convolutionは、 特徴マップのチャネル毎にそれぞれ 空間方向の畳込みを行う。 チャネル方向への畳込みを行わない 通常の畳込み1回のコストがK2 NからK2 に なるため、 計算量は
F2 NK2 、 パラメータ数は K2 N となる。
16.
削減される計算量 pointwise convolutionおよびdepthwise convolutionを合わせて適用すること で、空間方向とチャネル方向を同時に畳み込む通常の畳込み層を、 より少ないパラメータおよび計算量で近似することができる。 計算量に関しては、 F2 NK2 M
→ F2 NM+F2 NK2 に削減される。比率で言うと、1/K2 +1/Mになる。 通常 M >> K2 (e.g. K=3, M≥32) より、計算量はK=3では1/9程度に削減される。 また、pointwise convolutionのほうがボトルネックになっていること も分かる。
17.
4. Inception
18.
Inceptionモジュール V1/V2/V3/V4 (2015-2016) フィルターのサイズについて 正直どれがいいかわからないという問題 ↓ 「全部試してみて、その中で優劣を学習の過程で 決めればいい」という考え方 「Inception
Module」を多段に重ねることで、 各Module内のフィルターの学習と選択を やっていると考えることができる 複数のフィルターを用いることで、 「細部の表現だけでなく、より抽象的な表現 の獲得も、一つのモジュール内で行うこと が出来る」 と解釈することもできる
19.
Inceptionモジュール V1/V2/V3/V4 (2015-2016)
20.
Inceptionモジュールの効果 入力と出力はどちらも28×28なので、モジュール内の たたみ込みに対して同じパディングを使用している 次元削減をしなかった場合 5×5の畳み込みが計算上どのようになるか。 1×1のフィルターを大きなフィルター5×5や3×3の 前に入れている。→次元圧縮が狙い 例:28×28の画像があり、192 channelの出力を前層で出 力 28^2 *192
* 5^2 * 32 = 120,422,400 192 channel
21.
Inceptionモジュールの効果 1*1 フィルター使用時 16の出力を1×1のフィルターで出した後、 5×5のフィルターをかけて、同じく32の出力 (28^2 *
192 * 1^2 * 16) + (28^2 * 16 * 5^2 * 32) = (2,408,448) + (10,035,200) = 12,443,648 →約1/10に計算量軽減
22.
5. MobileNets
23.
MobileNets 完全に depthwise separable convolution でやったネットワーク。
24.
MobileNets
25.
MobileNets ● Googleが2017年(V1)と2018年(V2)に発表した論文。 モデルのサイズが小さく、計算量が少なく(アプリの処理待ちなどが短い)、 メモリも少なく済む。精度も他の有名なモデルと比較して、結構高い水準を維持しているモデ ル。 名前の通り、モバイル端末でも耐えうる性能を持つ。 ● 用途はスマホアプリ専用ではない。 計算リソースに制限のあるサーバーや、リソースのコスパを良くしたい場合、起動時間に制限 のある環境などでも便利。 ●
αとρというハイパーパラメーターを調整することで、ネットワークの深さ などを調整しなくても、精度と負荷のトレードオフを調整できる。 アプリの対応する端末に応じて、パフォーマンスを調整したりがとてもシンプル。
26.
MobileNets ● ハイパーパラメーターを調整したもので、 VGG16比でKerasの学習速度が約3倍速、 モデルサイズが約180分の1。 ● Kerasで簡単に使える。 ●
Depthwise comparable convolution を採用
27.
惭辞产颈濒别狈别迟蝉のハイパーパラメータ Width Multiplierと、Resolution Multiplierという二つのハイパーパラメーターが登場する。共に 精度を少しずつ下げつつ、パフォーマンスを上げる調整値。 MobileNet自体が前述の通り、9倍程度早いネットワークだが、アプリ側で さらなるパフォーマンスが要求されるケースで設定。 ?精度を少し下げて、快適に使える対象のモバイル端末を増やす ?サーバーで質より量で、大量の推論のリクエストを捌く 双方とも、1.0が基本の値で、0.0に近づけていくほど精度が下がる代わりに パフォーマンスが高まる。 Width
Multiplier:ネットワークの厚みのようなパラメーターで、小さくするほどネットワークが薄くなっ ていきます。論文では α Resolution Multiplier:扱うデータ(画像)の解像度的なところが調整される。論文ではρ
28.
惭辞产颈濒别狈别迟蝉のハイパーパラメータ
29.
惭辞产颈濒别狈别迟蝉のハイパーパラメータ
30.
惭辞产颈濒别狈别迟蝉のハイパーパラメータ αとρを使って計算コストを表すと、両方ともパフォーマンス調整用のパラメーターであるものの、値を 変えた際の挙動が異なる。 DK ?DK ?αM?ρDF +αM?αN?ρDF ?ρDF αは、減らすと計算量?パラメーター数(モデルサイズに直結)共に減少する。 ρは、値を小さくしてもパラメーター数は減らず、計算量が少なくなるだけ。 ただし、精度の低下が安定していて、急激に精度が落ちたりはしない。
31.
MobileNets:kerasにおける実装 from keras.applications import
MobileNet model = MobileNet( input_shape=(IMG_SIZE, IMG_SIZE, 3), alpha=1.0, depth_multiplier=1, weights=None, classes=NUM_CLASSES) Width MultiplierはKeras上ではalphaという引数名。 weightsによる重みの指定は、 Noneを指定しないと学習済みの重みがネットからダウンロードされる ランダムな値で初期化するため、 Noneを指定。
32.
6. SqueezeNet
33.
SqueezeNet SqueezeNet: AlexNet-level accuracy
with 50x fewer parameters and <0.5MB model size 2016/02 3*3Conv層の前に少ないフィルタ枚数の1*1Conv層を挿入することで, 3*3Conv層への 入力チャネルを削減し高速化する構造の提案.
34.
7. ShuffleNet
35.
ShuffleNet ShuffleNet: An Extremely
Efficient Convolutional Neural Network for Mobile Devices 2017/07 1*1 pointwise convolutionは頻出であるが, これはチャネル方向への参照範囲が 大きくコストが高い.これをgrouped convolutionに変更し, 更に出力チャネルが 全ての入力チャネルを参照できるよう「channel shuffle」(チャネルの入れ替え)を行う層 を提案.
36.
8. Xception
37.
ネットワークの違い 通常の畳み込みの代わりにpointwise convolutionおよびdepthwise convolution を利用するのがXceptionとMobileNets。
38.
ネットワークの違い Xceptionモジュール: ReLU-depthwise-pointwise-BN -ReLU-depthwise-pointwise-BN -ReLU-depthwise-pointwise-BN(+identity mapping) MobileNetsモジュール: depthwise-BN-ReLU-pointwise-BN-ReLU
39.
ネットワークの違い 2つのネットワークの大きな違い ● Xceptionはskip connection
(identity mapping) を持っている ● Xceptionはdepthwise convolutionとpointwise convolutionの間に 非線形関数が入っていない ※Xceptionの元となっているInceptionでは非線形関数は入っている。 Cholletさんの考察 Inceptionのケースでは、depthwiseに対応する畳み込みはチャネル1の畳込み を行っているわけではないので、そのようなケースでは非線形性が重要なのでは、との こと。 ちなみに、Inceptionモジュールではpointwise convolutionが先に来ている。
40.
9. BinaryNet
41.
BinaryNetの概要 二値化(binarization)によってNeural Networkの高速化と省メモリ化を図るというもの。 binarizationの対象は、weightのみ。 これにより乗算器の数が2/3になり、training time
が3倍高速化され、 memory量は1/16(weightに関してのみ)に。 https://github.com/MatthieuCourbariaux/BinaryConnect Deep Networkの演算のほとんどはweightとactivationの乗算が占めている。 この論文ではこのweightの乗算にFocusして、forward propagationと back propagation中のweightを2値化することで掛け算の量を減らす試みを実施
42.
計算精度 勾配の積算や平均では十分な計算精度が必要。 weightの微妙な変動は、gradientの積算によって平均化され影響が薄れる。 →それ故に積算の精度を維持することは重要とされる。 精度に関しては、 ● Randomized rounding ●
weightの精度を6bit?8bitにする方法 ● dynamic fixed pointで12bitにする方法 などが提案されている。 脳のシナプスは6?12bitの精度という推定もある。
43.
Noisy weight Weightの変動は、汎化性能を高めるための正則化の役目を果たす。 例 Dropout は
RandomにNeuronをOn/Offすることによって汎化性能を高めるという手法 DropConnect は Neuron間の結合をOn/Offするという手法。 →これらの手法はactivationやweightにnoiseを加えていると考えることができる。 特に DropConnect は weight に対して randomな処理を行う という点で BinaryConnectと近いと言える。
44.
BinaryConnect weightのbinarization手法として「Deterministic」と「Stochastic」という手法を提案。 Deterministic Stochastic randomの時の確率がσ(x) この確率によって+1か-1が決まる。 確率はx=0で50%, 1/2に近づくほど+1に なりやすい。 逆に-1/2に近づくと-1になりやすい。
45.
参考文献 ● GoogLeNet (Inception
module) Going Deeper with Convolutions https://arxiv.org/abs/1409.4842 ● ResNet (bottleneck architecture) Deep Residual Learning for Image Recognition https://arxiv.org/abs/1512.03385 ● SqueezeNet (fire module) SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5MB model size https://arxiv.org/abs/1602.07360
46.
参考文献 ● MobileNets MobileNets: Efficient
Convolutional Neural Networks for Mobile Vision Applications https://arxiv.org/abs/1704.04861 ● Xception Xception: Deep Learning with Depthwise Separable Convolutions https://arxiv.org/pdf/1610.02357.pdf
47.
参考文献 ● BinaryConnect: Training
Deep Neural Networks with binary weights during propagations http://arxiv.org/pdf/1511.00363v2.pdf ●
Download