Slide 1

Slide 1 text

畳み込みニューラルネットワークの ⾼精度化と⾼速化 内⽥祐介 AIシステム部 株式会社ディー・エヌ・エー 1 第21回ステアラボ⼈⼯知能セミナー

Slide 2

Slide 2 text

⾃⼰紹介 • 内⽥祐介(株式会社ディー・エヌ・エー AIシステム部 副部⻑) • 〜2017年︓通信キャリアの研究所で画像認識・検索の研究に従事 • 2016年 ︓社会⼈学⽣として博⼠号を取得(情報理⼯学) • 2017年〜︓DeNA中途⼊社、深層学習を中⼼とした コンピュータビジョン技術の研究開発に従事 2 Twitter: https://twitter.com/yu4u GitHub: https://github.com/yu4u Qiita: https://qiita.com/yu4u SlideShare: https://www.slideshare.net/ren4yu medium: https://medium.com/@yu4u

Slide 3

Slide 3 text

本⽇の発表の内容 • 畳み込みニューラルネットワークの⾼精度化 • ILSVRC歴代の優勝モデルから 畳み込みニューラルネットワークの歴史を振り返る • 近年の畳み込みニューラルネットワーク⾼精度化⼿法を いくつかのタイプに分類、解説 • 畳み込みニューラルネットワークの⾼速化 • 特定のハードウェアに依存しない⾼速化⼿法を いくつかのタイプに分類、解説 3

Slide 4

Slide 4 text

畳み込みニューラルネットワークの ⾼精度化 4

Slide 5

Slide 5 text

ILSVRCで振り返るCNNの進化 • ImageNet Large Scale Visual Recognition Challenge (ILSVRC) • ImageNetデータセットを利⽤したコンペ • WordNetをもとにクラスを定義 • 各クラスのデータを⼤量に収集&アノテーション • 学習データ120万枚、テストデータ10万枚 • クラス分類、物体検出、位置特定等のタスクが存在 • 特にクラス分類の精度の推移が画像認識の進化の 指標として参考にされることが多い • 2012年に深層学習ベースの⼿法が優勝して以降、 (畳み込み)ニューラルネットワークの天下⼀武道会化 • ここでの優勝モデルがデファクトスタンダードとして利⽤される • セグメンテーション等、他のタスクでも利⽤される 5

Slide 6

Slide 6 text

ILSVRC • クラス分類タスクのエラー率(top5 error)の推移 6 AlexNet ZFNet SENet ResNet GooLeNet Ensemble http://image-net.org/challenges/talks_2017/ILSVRC2017_overview.pdf

Slide 7

Slide 7 text

ILSVRC • クラス分類タスクのエラー率(top5 error)の推移 7 http://image-net.org/challenges/talks_2017/ILSVRC2017_overview.pdf AlexNet ZFNet SENet ResNet GooLeNet Ensemble 0.051 Human ︖︖︖

Slide 8

Slide 8 text

⼈間のエラー率5.1%︖ • そもそも⼈間のエラー率は0%なのでは︖ • No, ImageNetがどうやって作成されたかに関係 • ImageNetデータセットの作成⼿順 • WordNetを元に1000クラスを定義 • 検索エンジンで各クラスの画像を収集 • クラウドワーカーが各画像とクラスが 対応しているか否かのバイナリ判定 • ImageNetのタスク • 画像が与えられ、1000クラスから1つのクラスを選択 8 http://karpathy.github.io/2014/09/02/what-i-learned-from-competing-against-a-convnet-on-imagenet/

Slide 9

Slide 9 text

⼈間のエラー率5.1%︖ • “1 smart, trained and highly education human being performed at that error rate” https://amundtveit.com/tag/imagenet/ • Andrej Karpathyさん (Stanford→OpenAI→Tesla) 9 h&ps://github.com/karpathy

Slide 10

Slide 10 text

Karpathyさんのエラー率5.1までの道のり • 2014年のGoogLeNetの達成精度 (top5 error 6.7%) から ⼈間との⽐較をすべきと考えた • 専⽤のアノテーションツールを作成 • ILSVRCに従事しているラボメンでも 1000クラスから5クラス選択することは⾮常に難しい • GoogLeNetの結果を利⽤して、候補を100クラスに限定 • それでも難しくラボの熟練ラベラーでも13〜15%のエラー率 • ⾃分が訓練データを⽤い、”苦痛を伴う⻑時間の学習”を経て、じっ くりアノテーションするのが効率的と気づいた • train on 500 validation images -> 1500 test images • テストエラー5.1%を達成︕⽝の品種に詳しくなった︕ • 上記のように、エラー率5.1%は天才がかなり頑張った結果 • とはいえCNNの学習時間に⽐べるとまだ⾜りないという考え⽅も 10

Slide 11

Slide 11 text

ILSVRC • クラス分類タスクのエラー率(top5 error)の推移 11 AlexNet ZFNet SENet ResNet GooLeNet Ensemble 0.051 Human http://image-net.org/challenges/talks_2017/ILSVRC2017_overview.pdf

Slide 12

Slide 12 text

Before AlexNet • Neocognitron • 脳の視覚野に関する知⾒を元に考案 • 単純型細胞︓特徴抽出を⾏う畳み込み層 • 複雑型細胞︓位置ずれを吸収するプーリング層 • ⾃⼰組織化による特徴抽出 12 K. Fukushima and S. Miyake, "Neocognitron: A new algorithm for pattern recognition tolerant of deformations and shifts in position," in Pattern Recognition, 1982.

Slide 13

Slide 13 text

Before AlexNet • Neocognitronの活性化関数は実はReLU 13 K. Fukushima and S. Miyake, "Neocognitron: A new algorithm for pattern recognition tolerant of deformations and shifts in position," in Pattern Recognition, 1982.

Slide 14

Slide 14 text

Before AlexNet • LeNet • 逆誤差伝搬法による学習 • ⽂字認識で成功をおさめる • 全体的なアーキテクチャは既に完成 14 Y. LeCun, L. Bottou, Y. Bengio, and P. Haffner, "Gradient-based learning applied to document recognition," in Proceedings of the IEEE, 1998.

Slide 15

Slide 15 text

Before AlexNet • 巷のLeNetはLeNetではない 15 出⼒チャネル ⼊⼒チャネル Sparseな 畳み込み︕ Y. LeCun, L. Bottou, Y. Bengio, and P. Haffner, "Gradient-based learning applied to document recognition," in Proceedings of the IEEE, 1998.

Slide 16

Slide 16 text

AlexNet • 2012年のILSVRC優勝モデル • Rectified Linear Units (ReLU) • Local Response Normalization (LRN) (最近は使われない) • Overlapping pooling (3x3 max pool, stride =2) • Dropout(全結合層) • SGD + momentum, weight decay, learning rate decay 16 A. Krizhevsky, I. Sutskever, and G. E. Hinton, "Imagenet classification with deep convolutional neural networks," in Proc. of NIPS, 2012.

Slide 17

Slide 17 text

AlexNet • 2012年のILSVRC優勝モデル • Rectified Linear Units (ReLU) • Local Response Normalization (LRN) (最近は使われない) • Overlapping pooling (3x3 max pool, stride =2) • Dropout(全結合層) • SGD + momentum, weight decay, learning rate decay 17 既にほぼ現在のアーキテクチャの姿 A. Krizhevsky, I. Sutskever, and G. E. Hinton, "Imagenet classification with deep convolutional neural networks," in Proc. of NIPS, 2012.

Slide 18

Slide 18 text

AlexNet • 巷のAlexNetは(ry • いくつかの畳み込み層は、チャネル⽅向に分割され 2つのGPUでそれぞれ独⽴に畳み込みが⾏われる 「grouped convolution」となっている 18 A. Krizhevsky, I. Sutskever, and G. E. Hinton, "Imagenet classification with deep convolutional neural networks," in Proc. of NIPS, 2012.

Slide 19

Slide 19 text

ZFNet • 2013年のILSVRC優勝モデル • CNNの可視化を⾏い、AlexNetの2つの問題を明らかにし、改良 • 1つ⽬の畳み込みフィルタのカーネルサイズが⼤きく ⾼周波と低周波の情報を取得するフィルタばかりになっている • Stride = 4により2層⽬の特徴マップにエイリアシングが発⽣ 19 M. Zeiler and R. Fergus, “Visualizing and understanding convolutional networks,” in Proc. of ECCV, 2014.

Slide 20

Slide 20 text

GoogLeNet • 2014年のILSVRC優勝モデル • Inceptionモジュール • Global Average Pooling (GAP) • Auxiliary loss • ネットワークを途中で分岐させ、そこで分類を⾏うロスを追加 →学習の効率化+正則化 20 C. Szegedy, et al., "Going deeper with convolutions", in Proc. of CVPR, 2015.

Slide 21

Slide 21 text

Inceptionモジュール • ⼩さなネットワークを1つのモジュールとして定義し モジュールの積み重ねでネットワークを構成 • 3x3と複数の1x1畳み込みを1つのモジュールとする Network In Network (NIN) に起源 • Sparseな畳み込みにより、 表現能⼒とパラメータ数のトレードオフを改善 • 1x1畳み込みによる次元削減 21 concat conv 1x1 conv 1x1 maxpool conv 1x1 conv 3x3 conv 5x5 conv 1x1 concat maxpool conv 1x1 conv 3x3 conv 5x5 Inceptionモジュール(次元削減あり) Inceptionモジュール(naive)

Slide 22

Slide 22 text

Sparseな畳み込み • 通常の畳み込みのパラメータ数=N×M×K2 • N: ⼊⼒チャネル数、M: 出⼒チャネル数、K2: カーネルサイズ • (例)グループ化畳み込みのパラメータ数=N×M×K2 / G • G: グループ数 22 ⼊⼒チャネル数 出⼒チャネル数 カーネルサイズ グループ数2の例 ※簡単のためbiasは無視 KxK畳み込みの パラメータ

Slide 23

Slide 23 text

Sparseな畳み込みとしてのInceptionモジュール 23 concat maxpool conv 1x1 conv 3x3 conv 5x5 Inceptionモジュール(naive) ⼊⼒チャネル数 出⼒チャネル数 カーネルサイズ 5x5 3x3 1x1 5x5の畳み込みを 少数パラメータで近似 ※簡単のためmax poolを無視

Slide 24

Slide 24 text

Sparseな畳み込みとしてのInceptionモジュール 24 concat conv 1x1 conv 1x1 maxpool conv 1x1 conv 3x3 conv 5x5 conv 1x1 Inceptionモジュール(次元削減あり) 1x1畳み込み Inceptionモジュール ※簡単のためmax poolを無視 1x1畳み込みの次元削減で 更にパラメータを削減 naïveバージョン

Slide 25

Slide 25 text

Global Average Pooling (GAP) • 特徴マップのサイズと同じaverage pooling • NIN*で提案された。チャネル数をクラス数に調整してからGAP • GoogLeNet以降では、GAPの後に全結合層を付ける • 全結合層を減らすことでパラメータ数を削減 25 W H C=クラス数 1 1 HxWxCの 特徴マップ クラス数 GAP so9max * M. Lin, Q. Chen, and S. Yan, "Network in network," in Proc. of ICLR, 2014.

Slide 26

Slide 26 text

Inception-v? • Inception-v2,3 • Batch normalization • 5x5 -> 3x3 (x2) • nxn -> nx1 + 1xn • Inception-v4 • 3種類のInceptionを使い分け • Inception-ResNet-v1,2 • 後述のショートカット機構の導⼊ 26 = Inception-v3 C. Szegedy, V. Vanhoucke, S. Ioffe, and J. Shlens, "Rethinking the inception architecture for computer vision," in Proc. of CVPR, 2016. C. Szegedy, S. Ioffe, V. Vanhoucke, and A. A. Alemi, "Inception-v4, inception-resnet and the impact of residual connections on learning," in Proc. of AAAI, 2017.

Slide 27

Slide 27 text

VGGNet • 2014年のILSVRCで2位となったモデル、シンプルなモデルの設計⽅針 • 3x3畳み込み層(+全結合層)のみを利⽤ • 5x5畳み込みと3x3畳み込み×2は同じreceptive fieldを持つ • 計算量は 25:18 • 同⼀出⼒チャネルの畳み込み層を重ねた後に プーリングにより特徴マップを半分にしつつチャネル数を倍増 • まずは浅いネットワークを学習し、畳み込み層を追加してfine-tuning することで深いネットワークを学習(Xavierの初期化で不要に) 27 conv 5x5 conv 3x3 - conv 3x3 K. Simonyan and A. Zisserman, "Very deep convolutional networks for large-scale image recognition," in Proc. of ICLR, 2015.

Slide 28

Slide 28 text

Residual Networks (ResNet)* • 2015年のILSVRC優勝モデル • Residualモジュール(ショートカット機構)の導⼊→後述 • Batch normalizationの導⼊ • ネットワーク内の共変量シフトを軽減 • Global Average Pooling (GAP) の利⽤ • Heの初期化の利⽤ • ReLUを考慮したパラメータの初期化 • ショートカットを展開していくと複数の深さの違う ネットワークのアンサンブルとなっている** 28 * K. He, X. Zhang, S. Ren, and J. Sun, "Deep residual learning for image recognition," in Proc. of CVPR, 2016. ** A. Veit, M. Wilber, and S. Belongie, "Residual networks behave like ensembles of relatively shallow networks," in Proc. of NIPS, 2016.

Slide 29

Slide 29 text

Residualモジュール • ある処理の出⼒ F(x) を次の層に渡すのではなく ⼊⼒xをショートカットし、 F(x) + x を次の層に渡す処理単位 • Backpropagation時にショートカットを通じて 直接勾配が下層に伝わることで深いネットワークでも 効率的な学習が可能 29 some network F(x) conv 3x3, 64 conv 3x3, 64 ショートカット + + 64-dim 64-dim 抽象的なresidualモジュール 具体例

Slide 30

Slide 30 text

ResNetの構造 • Residualモジュールの スタック • ダウンサンプルする際に チャネル数を2倍に (VGGと同じ) • チャネル数が違う ショートカットは zero-padingかconv 1x1で調整 30 Resモジュール 3x3, 64 Resモジュール 3x3, 128 Resモジュール 3x3, 256 Resモジュール 3x3, 512 GAP 全結合層 conv 3x3, 64 maxpool ×3 ×4 ×6 ×3 conv 3x3, 64 conv 3x3, 64 + 64-dim 64-dim 114x114x64 224x224x3 56x56x64 28x28x128 14x14x256 7x7x 512 1000

Slide 31

Slide 31 text

ResNet Bottleneckバージョン • 1x1畳み込みで次元削減、その後3x3畳み込みを⾏った 後、 更に1x1畳み込みで次元を復元 • 同等のパラメータ数で表現能⼒を改善 • 深くもなる • パラメータ数も削減 31 conv 3x3, 64 conv 3x3, 64 + 64-dim 64-dim conv 1x1, 256 conv 3x3, 64 + conv 1x1, 64 256-dim 256-dim ⼊⼒チャネル数 出⼒チャネル数 カーネルサイズ 通常 Bottleneck版

Slide 32

Slide 32 text

Squeeze-and-Excitation Networks (SENet) • 2017年のILSVRC優勝モデル • チャネル毎の特徴マップを適応的に重み付けする SE Blockを導⼊ • Globalなコンテキストを取得するsqueeze step • チャネル間の依存関係を抽出するexcitation step • どんなネットワークにも導⼊可能 • ResNet, ResNeXt, Inception, Inception-ResNet-v2等に導⼊し 有効性を確認 32 conv 1x1 global pooling ReLU conv 1x1 sigmoid scaling HxWxC 1x1xC 1x1xC/r 1x1xC HxWxC

Slide 33

Slide 33 text

まとめ 33 Residual AlexNet VGGNet GoogLeNet ResNet Batch Normalization LeNet Neocognitron Back propagation Heの初期化 Glorotの 初期化 conv 1x1 Dropout ReLU 1990s 2012 2013 2014 2015 NIN Global Average Pooling

Slide 34

Slide 34 text

まとめ 34 AlexNet VGGNet GoogLeNet ResNet Batch Normalization LeNet Neocognitron Back propagation Heの初期化 Glorotの 初期化 conv 1x1 Dropout ReLU 1990s 2012 2013 2014 2015 NIN Global Average Pooling Residual

Slide 35

Slide 35 text

最新のCNN改良⼿法 • Residualモジュールの改良 • 独⾃モジュールの利⽤ • 独⾃マクロアーキテクチャの利⽤ • 正則化/データ拡張 • アーキテクチャの⾃動設計 ※基本的に各論⽂の⼿法は⾃⾝がstate-of-the-artだと ⾔っているので精度の結果とかは載せません 35

Slide 36

Slide 36 text

最新のCNN改良⼿法 • Residualモジュールの改良 • 独⾃モジュールの利⽤ • 独⾃マクロアーキテクチャの利⽤ • 正則化/データ拡張 • アーキテクチャの⾃動設計 36

Slide 37

Slide 37 text

Residualモジュールの改良 • Residualモジュールをゴニョゴニョする • WideResNet* • 深くするより、幅(チャネル数)を⼤きくして(相対的に) 浅いネットワークのほうが精度・学習速度が優秀 • PyramidNet** • サウンサンプルするタイミングでチャネル数を 2倍にするのではなく、全てのresidualモジュールで 徐々にチャネル数を増加させる • チャネル数を2倍にするresidualモジュールに ネットワークが過度に依存してしまうのを防ぐ 37 * S. Zagoruyko and N. Komodakis, "Wide residual networks," in Proc. of BMVC, 2016. ** D. Han, J. Kim, and J. Kim, "Deep pyramidal residual networks," in Proc. of CVPR, 2017.

Slide 38

Slide 38 text

Residualモジュールのベストプラクティス • 初代ResNet* • conv - bn - relu - conv - bn - add - relu • pre-act ResNet**(addの後にReLUをしない) • bn - relu - conv - bn - relu - conv - add • PyramidNet***(ReLUを減らす、BN追加) • bn - conv - bn - relu - conv - bn - add • WideResNet****(dropoutがタスクによって効果がある) • bn - relu - conv - bn - relu - dropout - conv – add 38 * K. He, X. Zhang, S. Ren, and J. Sun, "Deep residual learning for image recognition," in Proc. of CVPR, 2016. ** K. He, X. Zhang, S. Ren, and J. Sun, "Identity mappings in deep residual networks," in Proc. of ECCV, 2016. *** D. Han, J. Kim, and J. Kim, "Deep pyramidal residual networks," in Proc. of CVPR, 2017. **** S. Zagoruyko and N. Komodakis, "Wide residual networks," in Proc. of BMVC, 2016.

Slide 39

Slide 39 text

最新のCNN改良⼿法 • Residualモジュールの改良 • 独⾃モジュールの利⽤ • 独⾃マクロアーキテクチャの利⽤ • 正則化/データ拡張 • アーキテクチャの⾃動設計 39

Slide 40

Slide 40 text

conv 1x1, 4 conv 3x3, 4 conv 1x1, 256 conv 1x1, 4 conv 3x3, 4 conv 1x1, 256 conv 1x1, 4 conv 3x3, 4 conv 1x1, 256 ... + 256-dim 256-dim conv 1x1, 128 conv 3x3, 128, g=32 conv 1x1, 256 256-dim 256-dim + (a) (b) Ti (x) grouped convolution ResNeXt • ILSVRCʼ16で2位のモデル • ResNetの処理ブロックを”Network-in-Neuron” に置き換えたもの • (a)と(b)は等価表現 40 S. Xie, R. Girshick, P. Dollar, Z. Tu, and K. He, "Aggregated residual transformations for deep neural networks," in Proc. of CVPR, 2017.

Slide 41

Slide 41 text

ResNeXt • ResNeXtとresidualモジュール(bottleneckバージョン)の関係 • ResNeXtのモジュールは、bottleneckバージョンの residualモジュールとみなすことができる • Grouped convによりパラメータ数と表現能⼒のトレードオフを改善 41 conv 1x1, 128 conv 3x3, 128, g=32 conv 1x1, 256 256-dim 256-dim + 次元削減 次元復元 3x3畳み込み(grouped)

Slide 42

Slide 42 text

PolyNet • ResNetの H(x) = x + F(x) というresidualモジュールを H(x) = x + F(x) + F(F(x)) といった形にする • FとしてInceptionを利⽤したPolyInceptionを提案 42 X. Zhang, Z. Li, Chen C. Loy, and D. Lin, "PolyNet: A Pursuit of Structural Diversity in Very Deep Networks," in Proc. of CVPR, 2017.

Slide 43

Slide 43 text

Xception(⾼速化パートで解説) • Separable convを多⽤したモデル 43 F. Chollet, "Xception: Deep learning with depthwise separable convolutions," in Proc. of CVPR, 2017.

Slide 44

Slide 44 text

Octave Convolution • 特徴マップを⾼解像度と低解像度に別々に保持 • それぞれの解像度の特徴マップを⾏き来させることで 効率的な特徴周出を実現 • 通常の畳み込みを置き換えるだけで精度向上 44 Y. Chen, H. Fan, B. Xu, Z. Yan, Y. Kalantidis, M. Rohrbach, S. Yan, and J. Feng, "Drop an Octave: Reducing Spatial Redundancy in Convolutional Neural Networks with Octave Convolution," in arXiv:1904.05049, 2019.

Slide 45

Slide 45 text

最新のCNN改良⼿法 • Residualモジュールの改良 • 独⾃モジュールの利⽤ • 独⾃マクロアーキテクチャの利⽤ • 正則化/データ拡張 • アーキテクチャの⾃動設計 45

Slide 46

Slide 46 text

Residual Networks of Residual Networks (RoR) • 複数のResidualモジュールを1つのモジュールとみなし その間にショートカットを作成する 46 K. Zhang, M. Sun, T. X. Han, X. Yuan, L. Guo, and T. Liu, "Residual networks of residual networks: Multilevel residual networks," in TCSVT, 2017.

Slide 47

Slide 47 text

FractalNet • 再帰的に定義されるネットワーク • パスをdropするdropout的な学習 • 浅い列のパスがResNetのショートカットのような効果 47 G. Larsson, M. Maire, and G. Shakhnarovich, "Fractalnet: Ultra-deep neural networks without residuals," in Proc. of ICLR, 2017.

Slide 48

Slide 48 text

DenseNet (CVPRʼ17 best paper) • Dense blockをtransition layerでつないだ構造 48 conv Dense block Dense block Dense block fc Input image Result G. Huang, Z. Liu, K. Q. Weinberger, and L. Maaten, “Densely connected convolutional networks", in Proc. of CVPR, 2017. Dense block Transitionレイヤ

Slide 49

Slide 49 text

Dense Block • 同⼀ブロック内の⾃分より前の層全ての出⼒を 各層への⼊⼒とする処理ブロック • ⼊⼒k0 、総数l、各層の出⼒k とすると出⼒はk0 +l×k 49 ⼊⼒: k0 , 出⼒: k ⼊⼒: k0 +k, 出⼒: k ⼊⼒: k0 +2k, 出⼒: k ⼊⼒: k0 +3k, 出⼒: k bn - relu – conv 3x3 ⼊⼒: k0 出⼒: k0 +4k G. Huang, Z. Liu, K. Q. Weinberger, and L. Maaten, “Densely connected convolutional networks", in Proc. of CVPR, 2017.

Slide 50

Slide 50 text

Dense Block(Bottleneckバージョン) • k0 >> k なので通常の畳み込みよりも計算量が少ないが conv 1x1で次元削減を⾏うことで更に計算量を削減 50 ⼊⼒: k0 , 中間出⼒: 4k, 出⼒: k ⼊⼒: k0 +k, 中間出⼒: 4k, 出⼒: k ⼊⼒: k0 +2k, 中間出⼒: 4k, 出⼒: k ⼊⼒: k0 +3k, 中間出⼒: 4k, 出⼒: k bn - relu - conv 1x1 bn - relu - conv 3x3 ⼊⼒: k0 出⼒: k0 +4k G. Huang, Z. Liu, K. Q. Weinberger, and L. Maaten, “Densely connected convolutional networks", in Proc. of CVPR, 2017.

Slide 51

Slide 51 text

Transition Layer • Transitionレイヤの基本的な役割はダウンダンプリング • conv 1x1の⼊出⼒チャネル数は k0+l×k • Compressionバージョンのtransitionレイヤ • conv 1x1の出⼒チャネル数を θ(k0+l×k) とす • θ≦1、論⽂では0.5 • 前述のbottleneck構造と圧縮するtransitionレイヤを 利⽤する場合が精度とパラメータ数のトレードオフで優秀 (DenseNet-BC) 51 conv Dense block Dense block Dense block fc Input image Result Transitionレイヤ bn – conv 1x1 – avepool 2x2

Slide 52

Slide 52 text

最新のCNN改良⼿法 • Residualモジュールの改良 • 独⾃モジュールの利⽤ • 独⾃マクロアーキテクチャの利⽤ • 正則化/データ拡張 • アーキテクチャの⾃動設計 52

Slide 53

Slide 53 text

Residual モジュール Drop率 Input Output Deep Networks with Stochastic Depth • ResNetは⾮常にdeepであることが学習を難しくしている • バッチ毎にresidual unitをランダムにdropすることで 「期待値で⾒たときの深さ」を浅くする • Drop確率は出⼒に近いほど⾼くなるように線形に増加 • テスト時はdropせずに、drop率で出⼒をスケーリング • 通常のResNetと⽐較して、学習が早く、⾼精度 53 G. Huang, Y. Sun, Z. Liu, D. Sedra, and K. Weinberger, "Deep networks with stochastic depth," in Proc. of ECCV, 2016.

Slide 54

Slide 54 text

Swapout • Residualモジュールの出⼒ H(x) = F(x) + xについて • F(x) および x をそれぞれ個別にdropするdropout • 0, x, F(x), F(x) + x の4パターンの出⼒ • Dropoutだと 0 か F(x) + x • モジュールの途中にいれると x か F(x) + x • 推論時もswapoutを有効にしたまま複数回forwardを⾏い、 それらの平均を推論結果とする形でないと精度がでない 54 S. Singh, D. Hoiem, and D. Forsyth, "Swapout: Learning an ensemble of deep architectures," in Proc. of NIPS, 2016.

Slide 55

Slide 55 text

Shake-Shake Regularization • 特徴マップレベルでのデータ拡張 • 画像レベルではcroppingをすることで画像内の物体の⽐率を変化させ、 その変化にロバストに。特徴マップレベルでも同じことができないか︖ • モジュール内でネットワークを分岐させ画像レベルで 各分岐の出⼒をランダムな⽐率(α∈[0, 1])で混合する • Backward時には違う⽐率βを利⽤する 55 conv 3x3 conv 3x3 conv 3x3 conv 3x3 + * * αl 1−αl conv 3x3 conv 3x3 conv 3x3 conv 3x3 + * * βl 1− βl conv 3x3 conv 3x3 conv 3x3 conv 3x3 + * * 0.5 0.5 Forward Backward Test X. Gastaldi, "Shake-shake regularization of 3-branch residual networks," in Proc. of ICLR Workshop, 2017.

Slide 56

Slide 56 text

ShakeDrop • 分岐させずに特徴マップに対する外乱を加えられないか • PyramidNetとShakeShakeの統合 • PyramidNetにおいてdropさせる代わりにShakeShakeのような 外乱を加える(forward α倍、backward β倍) • α∈[­1,1]、β∈[0,1]、チャネルレベルの外乱が最も良い 56 conv 3x3 conv 3x3 * * b l 1− b l Forward αl * + conv 3x3 conv 3x3 * * b l 1− b l Backward βl * + conv 3x3 conv 3x3 * + Test E[b l +(1− b l )αl ] Y. Yamada, M. Iwamura, and K. Kise, "ShakeDrop regularization," in Proc. of ICLR Workshop, 2018.

Slide 57

Slide 57 text

Random Erasing* / Cutout** • シンプルだが強⼒なデータ拡張 • ⼀定確率で、訓練画像のランダムな領域を ランダムなピクセルでマスク • 汎化能⼒を⾼めテストエラーを軽減 • 物体検出等でも効果あり 57 * Z. Zhong, L. Zheng, G. Kang, S. Li, and Y. Yang, "Random Erasing Data Augmentation," in arXiv:1708.04896, 2017. ** T. DeVries and G. W. Taylor, "Improved Regularization of Convolutional Neural Networks with Cutout," in arXiv:1708.04552, 2017.

Slide 58

Slide 58 text

Mixup* / Between-class Learning** • データとラベルのペア(X1 ,y1 ), (X2 ,y2 )から、新たな訓練サンプル(X,y)を 作成するデータ拡張⼿法 • X=λX1 +(1­λ)X2 y=λy1 +(1­λ)y2 • ここでラベルy1 ,y2 はone-hot表現、 X1 ,X2 は任意のベクトルやテンソル • λ∈[0, 1]はベータ分布Be(α,α)から サンプリングする 58 * H. Zhang, M. Cisse, Y. N. Dauphin, and D. LopezPaz. mixup, "Beyond empirical risk minimization," in Proc. of ICLR, 2018 ** Y. Tokozume, Y. Ushiku, and T. Harada, "Between-class Learning for Image Classification," in Proc. of CVPR, 2018

Slide 59

Slide 59 text

RICAP (Random Image Cropping and Patching) • 空間的に複数の画像をmix • ラベルは各画像の⾯積⽐で分配 59 R. Takahashi, T. Matsubara, and K. Uehara, "Data Augmentation using Random Image Cropping and Patching for Deep CNNs," in Proc. of ACML, 2018.

Slide 60

Slide 60 text

最新のCNN改良⼿法 • Residualモジュールの改良 • 独⾃モジュールの利⽤ • 独⾃マクロアーキテクチャの利⽤ • 正則化/データ拡張 • アーキテクチャの⾃動設計 60

Slide 61

Slide 61 text

Neural Architecture Search • NNのアーキテクチャを⾃動設計する⼿法 • 探索空間、探索⼿法、精度評価⼿法で⼤まかに分類される • 探索空間 • Global, cell-based • 探索⼿法 • 強化学習、進化的アルゴリズム、gradientベース、random • 精度測定⼿法 • 全学習、部分学習、weight-share、枝刈り探索 61 T. Elsken, J. Metzen, and F. Hutter, "Neural Architecture Search: A Survey," in JMLR, 2019. M. Wistuba, A. Rawat, and T. Pedapati, "A Survey on Neural Architecture Search," in arXiv:1905.01392, 2019. https://github.com/D-X-Y/awesome-NAS

Slide 62

Slide 62 text

NAS with Reinforcement Learning • 探索空間︓global、探索⼿法︓REINFORCE • RNNのcontrollerがネットワーク構造を⽣成 • 畳み込み層のパラメータと、skip connectionの有無を出⼒ • ⽣成されたネットワークを学習し、その精度を報酬にする 62 Zoph and Q. V. Le, "Neural architecture search with reinforcement learning," in Proc. of ICLR, 2017.

Slide 63

Slide 63 text

NAS with Reinforcement Learning • 800GPUs for 28 daysの成果 63 Zoph and Q. V. Le, "Neural architecture search with reinforcement learning," in Proc. of ICLR, 2017.

Slide 64

Slide 64 text

NASNet • 探索空間︓cell、 探索⼿法︓強化学習 (Proximal Policy Optimization) • Globalな設計にドメイン知識を活⽤、 構成するcellのみを⾃動設計 →探索空間を⼤幅に削減 • Normal cell x Nとreduction cellのスタック • Reduction cellは最初にstride付きのOPで 特徴マップをダウンサンプル • Reduction cell以降でチャネルを倍に 64 B. Zoph, V. Vasudevan, J. Shlens, and Q. V. Le, "Learning transferable architectures for scalable image recognition," in Proc. of CVPR, 2018.

Slide 65

Slide 65 text

NASNetのコントローラの動作 1. Hidden state※1 1, 2を選択 2. それらへのOPsを選択※2 3. それらを結合するOP (add or concat) を選択し新たなhidden stateとする ※1 Hidden state: 緑のブロックとhi , hi-I ※2 Hidden stateへのOP候補 65 B. Zoph, V. Vasudevan, J. Shlens, and Q. V. Le, "Learning transferable architectures for scalable image recognition," in Proc. of CVPR, 2018.

Slide 66

Slide 66 text

NASNetのコントローラの動作 1. Hidden state※1 1, 2を選択 2. それらへのOPsを選択※2 3. それらを結合するOP (add or concat) を選択し新たなhidden stateとする ※1 Hidden state: 緑のブロックとhi , hi-I ※2 Hidden stateへのOP候補 66 B. Zoph, V. Vasudevan, J. Shlens, and Q. V. Le, "Learning transferable architectures for scalable image recognition," in Proc. of CVPR, 2018.

Slide 67

Slide 67 text

NASNetのコントローラの動作 1. Hidden state※1 1, 2を選択 2. それらへのOPsを選択※2 3. それらを結合するOP (add or concat) を選択し新たなhidden stateとする ※1 Hidden state: 緑のブロックとhi , hi-I ※2 Hidden stateへのOP候補 67 B. Zoph, V. Vasudevan, J. Shlens, and Q. V. Le, "Learning transferable architectures for scalable image recognition," in Proc. of CVPR, 2018. sep 3x3 avg 3x3

Slide 68

Slide 68 text

NASNetのコントローラの動作 1. Hidden state※1 1, 2を選択 2. それらへのOPsを選択※2 3. それらを結合するOP (add or concat) を選択し新たなhidden stateとする ※1 Hidden state: 緑のブロックとhi , hi-I ※2 Hidden stateへのOP候補 68 B. Zoph, V. Vasudevan, J. Shlens, and Q. V. Le, "Learning transferable architectures for scalable image recognition," in Proc. of CVPR, 2018. concat sep 3x3 avg 3x3

Slide 69

Slide 69 text

NASNet-A • 500 GPUs for 4 daysの成果 69 B. Zoph, V. Vasudevan, J. Shlens, and Q. V. Le, "Learning transferable architectures for scalable image recognition," in Proc. of CVPR, 2018.

Slide 70

Slide 70 text

ENAS* • 探索空間︓cell、探索⼿法︓強化学習 (REINFORCE) • Cellの構造を出⼒するRNNコントローラと、 コントローラーが出⼒する全てのネットワークをサブグラフとして 保持できる巨⼤な計算グラフ(ネットワーク)を同時に学習 →⽣成したネットワークの学習が不要に(1GPU for 0.45 days!) • Single shot, weight share • 詳細は神資料**を参照 70 * H. Pham, M. Y. Guan, B. Zoph, Q. V. Le, and Jeff Dean, "Efficient Neural Architecture Search via Parameter Sharing," in Proc. of ICML, 2018. ** https://www.slideshare.net/tkatojp/efficient-neural-architecture-search-via-parameters- sharing-icml2018

Slide 71

Slide 71 text

ENASの学習 • コントローラーのパラメータθと 巨⼤なネットワークのパラメータwを交互に学習 • wの学習 • θを固定し、サブグラフをサンプリング • サブグラフをforward-backwardしwを更新 • θの学習 • wを固定し、サブグラフをサンプリング • validationデータで精度を測定し報酬を取得、REINFORCEでθを更新 71

Slide 72

Slide 72 text

DARTS • 探索空間︓cell、探索⼿法︓gradient • グラフの接続やOPの選択をsoftmaxで実現することで、 構造探索もforward-backwardで実現 • ENASと同じくshared param、wと構造を交互に最適化 72 H. Liu, K. Simonyan, and Y. Yang, "DARTS: Differentiable Architecture Search," in Proc. of ICLR, 2019.

Slide 73

Slide 73 text

Random Search系 • Weight share + random search (ASHA) が良い* • Asynchronous Successive Halving (ASHA)︓複数のモデルを平⾏ に学習を進めながら有望なものだけを残して枝刈り • Optunaで使えるよ︕** • 探索空間を、ランダムなDAG⽣成アルゴリズムが⽣成するグラフ にすると想像以上に良い*** 73 * L. Li and A. Talwalkar, "Random search and reproducibility for neural architecture search," in arXiv:1902.07638, 2019. ** https://www.slideshare.net/shotarosano5/automl-in-neurips-2018 *** S. Xie, A. Kirillov, R. Girshick, and K. He, "Exploring Randomly Wired Neural Networks for Image Recognition," in arXiv:1904.01569, 2019.

Slide 74

Slide 74 text

最新のCNN改良⼿法 • Residualモジュールの改良 • 独⾃モジュールの利⽤ • 独⾃マクロアーキテクチャの利⽤ • 正則化/データ拡張 • アーキテクチャの⾃動設計 74

Slide 75

Slide 75 text

精度とか 75 https://github.com/Cadene/pretrained-models.pytorch

Slide 76

Slide 76 text

精度とか 76 https://paperswithcode.com/sota/image-classification-on-imagenet

Slide 77

Slide 77 text

畳み込みニューラルネットワークの ⾼速化 77

Slide 78

Slide 78 text

前提 • 主に下記の条件を満たす⼿法を紹介 • 特定のハードウェアに依存せずに実現可能 • 畳み込みニューラルネットワーク (CNN) が対象 • 推論時の⾼速化が対象 78

Slide 79

Slide 79 text

⾼速化︖ • モデルパラメータ数の削減 • FLOPs (MACs) 数の削減 • モデルファイルサイズの削減 • 推論時間の削減 • 訓練時間の削減 微妙に違う 79

Slide 80

Slide 80 text

FLOPs ≠ 処理速度 • Convの部分がFLOPsで⾒える部分 80 N. Ma, X. Zhang, H. Zheng, and J. Sun, "ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design," in Proc. of ECCV, 2018.

Slide 81

Slide 81 text

畳み込みニューラルネットワーク • 畳み込みとプーリング演算により徐々に⾼度な特徴を抽 出、全結合層で画像全体の特徴から識別(クラス分類) • 必要な計算量のほとんどは畳み込み層の演算 →いかに畳み込み層の演算を削減するかが重要 81 畳み込み プーリング 畳み込み プーリング 畳み込み プーリング 全結合 1000 1000クラス の分類 ⼊⼒画像

Slide 82

Slide 82 text

モデル⾼速化 • 畳み込みの分解 (Factorization) • 枝刈り (Pruning) • 早期終了 (Early termination) • 蒸留 (Distillation) • 量⼦化 (Quantization) 82

Slide 83

Slide 83 text

モデル⾼速化 • 畳み込みの分解 (Factorization) • 枝刈り (Pruning) • 早期終了 (Early termination) • 蒸留 (Distillation) • 量⼦化 (Quantization) 83

Slide 84

Slide 84 text

畳み込み層の計算量 • ⼊⼒レイヤサイズ︓H x W x N • 畳み込みカーネル︓K x K x N x M convKxK, M と表記 (e.g. conv 3x3, 64) • 出⼒レイヤサイズ︓H x W x M • 畳み込みの計算量︓H・W・N・K2・M(バイアス項を無視) 84 W H N M K K W H ⼊⼒特徴マップ 畳み込み カーネル N 出⼒特徴マップ * 和 要素積 × M convK×K, M 畳み込み層の計算量は • 画像/特徴マップのサイズ(HW) • ⼊出⼒チャネル数(NM) • カーネルサイズ(K2) に⽐例

Slide 85

Slide 85 text

空間⽅向の分解 • ⼤きな畳み込みカーネルを⼩さな畳み込みカーネルに分解 • 例えば5x5の畳み込みを3x3の畳み込み2つに分解 • これらは同じサイズの受容野を持つが分解すると計算量は25:18 • Inception-v2*では最初の7x7畳み込みを3x3畳み込み3つに分解 • 以降のSENetやShuffleNetV2等の実装でも利⽤されている** 85 特徴マップ conv5x5 conv3x3 - conv3x3 * C. Szegedy, et al., "Rethinking the Inception Architecture for Computer Vision," in Proc. of CVPR, 2016. ** T. He, et al., "Bag of Tricks for Image Classification with Convolutional Neural Networks," in Proc. of CVPR, 2019.

Slide 86

Slide 86 text

空間⽅向の分解 • nxnを1xnとnx1に分解することも 86 C. Szegedy, et al., "Rethinking the Inception Architecture for Computer Vision," in Proc. of CVPR, 2016.

Slide 87

Slide 87 text

SqueezeNet • 戦略 • 3x3の代わりに1x1のフィルタを利⽤する • 3x3への⼊⼒となるチャネル数を少なくする(1x1で次元圧縮) 87 conv 1x1, s1x1 conv 1x1, e1x1 conv 3x3, e3x3 concat Fire module 32 128 128 256 256 Squeeze layer Expand layer F. N. Iandola, S. Han, M. W. Moskewicz, K. Ashraf, W. J. Dally, and K. Keutzer, "SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5MB model size," in arXiv:1602.07360, 2016.

Slide 88

Slide 88 text

空間⽅向とチャネル⽅向の分解 (separable conv) • 空間⽅向とチャネル⽅向の畳み込みを独⽴に⾏う • Depthwise畳み込み(空間⽅向) • 特徴マップに対しチャネル毎に畳み込み • 計算量︓H・W・N・K2・M (M=N) H・W・K2・N • Pointwise畳み込み(チャネル⽅向) • 1x1の畳み込み • 計算量︓H・W・N・K2・M (K=1) H・W・N・M • Depthwise + pointwise (separable) • 計算量︓H・W・N・(K2 + M) ≒ H・W・N・M (※M >> K2) • H・W・N・K2・M から⼤幅に計算量を削減 88 W H W H N 1 1 M W H W H N K K N W H W H N M K K 通常 depthwise pointwise

Slide 89

Slide 89 text

空間⽅向とチャネル⽅向の分離 • イメージ 89 conv 3x3 conv 1x1 depthwise conv spatial channel

Slide 90

Slide 90 text

Separable畳み込みのパラメータ数 • 通常の畳み込み • Separable畳み込み 90 ⼊⼒チャネル数 出⼒チャネル数 カーネルサイズ Depthwise畳み込み Pointwise畳み込み

Slide 91

Slide 91 text

Xception • Separable convを多⽤したモデル 91 F. Chollet, "Xception: Deep learning with depthwise separable convolutions," in Proc. of CVPR, 2017.

Slide 92

Slide 92 text

MobileNet* • depthwise/pointwise convを多⽤ • 改良版のMobileNetV2**/V3***もある 92 通常の畳み込み MobileNetの1要素 *A. Howard, et al., "MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications," in arXiv:1704.04861, 2017. ** M. Sandler, et al., "MobileNetV2: Inverted Residuals and Linear Bottlenecks," in Proc. of CVPR, 2018. *** A. Howard, et al., "Searching for MobileNetV3," in arXiv:1905.02244, 2019.

Slide 93

Slide 93 text

MobileNetV1 vs. V2 93 depthwise conv conv 1x1 depthwise conv conv 1x1 conv 1x1 spatial channel

Slide 94

Slide 94 text

ShuffleNet • MobileNetのボトルネックとなっているconv1x1を group conv1x1 + channel shuffleに置換 • group conv: ⼊⼒の特徴マップをG個にグループ化し 各グループ内で個別に畳み込みを⾏う (計算量 H・W・N・K2・M → H・W・N・K2・M / G) • channel shuffle: チャネルの順序を⼊れ替える reshape + transposeの操作で実現 94 c shuffle depthwise conv gconv 1x1 spatial channel gconv 1x1 X. Zhang, et al., "ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices," in arXiv:1707.01083, 2017.

Slide 95

Slide 95 text

ShuffleNet V2 • FLOPsではなく対象プラットフォームでの実速度を⾒るべき • 効率的なネットワーク設計のための4つのガイドラインを提⾔ 1. メモリアクセス最⼩化のためconv1x1は⼊⼒と出⼒を同じにす べし 2. ⾏き過ぎたgroup convはメモリアクセスコストを増加させる 3. モジュールを細分化しすぎると並列度を低下させる 4. 要素毎の演算(ReLUとかaddとか)コストは無視できない • これらの妥当性がtoyネットワークを通して実験的に⽰されている 95 N. Ma, X. Zhang, H. Zheng, and J. Sun, "ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design," in Proc. of ECCV, 2018.

Slide 96

Slide 96 text

ShuffleNet V2 • その上で新たなアーキテクチャを提案 96 N. Ma, X. Zhang, H. Zheng, and J. Sun, "ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design," in Proc. of ECCV, 2018.

Slide 97

Slide 97 text

ChannelNet • チャネル⽅向に1次元の畳み込みを⾏う 97 H. Gao, Z. Wang, and S. Ji, "ChannelNets: Compact and Efficient Convolutional Neural Networks via Channel-Wise Convolutions", in Proc. of NIPS, 2018.

Slide 98

Slide 98 text

ShiftNet • チャネルをグループ化し、各グループごとに空間的にシフトする shift演算 (0 FLOPs) とconv1x1でモジュールを構成 98 B. Wu, et al., "Shift: A Zero FLOP, Zero Parameter," in arXiv:1711.08141, 2017.

Slide 99

Slide 99 text

他にも… 99 G. Huang, S. Liu, L. Maaten, and K. Weinberger, "CondenseNet: An Efficient DenseNet using Learned Group Convolutions," in Proc. of CVPR, 2018. T. Zhang, G. Qi, B. Xiao, and J. Wang. Interleaved group convolutions for deep neural networks," in Proc. of ICCV, 2017. G. Xie, J. Wang, T. Zhang, J. Lai, R. Hong, and G. Qi, "IGCV2: Interleaved Structured Sparse Convolutional Neural Networks, in Proc. of CVPR, 2018. K. Sun, M. Li, D. Liu, and J. Wang, "IGCV3: Interleaved Low-Rank Group Convolutions for Efficient Deep Neural Networks," in BMVC, 2018. J. Zhang, "Seesaw-Net: Convolution Neural Network With Uneven Group Convolution," in arXiv:1905.03672, 2019.

Slide 100

Slide 100 text

チートシート的なもの 100 https://medium.com/@yu4u/why-mobilenet-and-its-variants-e-g-shufflenet-are-fast-1c7048b9618d

Slide 101

Slide 101 text

モデル⾼速化 • 畳み込みの分解 (Factorization) • 枝刈り (Pruning) • 早期終了 (Early termination) • 蒸留 (Distillation) • 量⼦化 (Quantization) 101

Slide 102

Slide 102 text

枝刈り (Pruning) • 畳み込み層や全結合層の重みの⼀部を0にすることで パラメータ数・計算量を削減 1. ネットワークを学習 2. 枝刈り(精度低下) 3. ネットワークを再学習(精度をある程度回復) というフローが⼀般的 102

Slide 103

Slide 103 text

Unstructured vs. Structured Pruning • Pruning前の畳み込みフィルタ • Unstructured pruning • Structured pruning(フィルタ(チャネル)pruningが⼀般的) 103 K K … … … M(出⼒チャネル)個 計算量vs.精度のtrade-offは優れているが 専⽤のハードウェアでないと⾼速化できない 単にチャネル数が減少したネットワークに 再構築が可能で⾼速化の恩恵を受けやすい

Slide 104

Slide 104 text

Optimal Brain Damage (OBD) • 損失関数のヘッシアン(対⾓近似)から重みの重要度を算出 • 重要度の低い重みをpruning • LeNetの60%のパラメータを削除しても精度を維持 104

Slide 105

Slide 105 text

Optimal Brain Damage (OBD) • 損失関数のヘッシアン(対⾓近似)から重みの重要度を算出 • 重要度の低い重みをpruning • LeNetの60%のパラメータを削除しても精度を維持 105 Y. LeCun, J. Denker, and S. Solla, "Optimal Brain Damage," in Proc. of NIPS, 1990.

Slide 106

Slide 106 text

Optimal Brain Damage (OBD) • 損失関数のヘッシアン(対⾓近似)から重みの重要度を算出 • 重要度の低い重みをpruning • LeNetの60%のパラメータを削除しても精度を維持 106 Y. LeCun, J. Denker, and S. Solla, "Optimal Brain Damage," in Proc. of NIPS, 1990. Retrainして精度を回復させている

Slide 107

Slide 107 text

Deep Compression • Unstructuredなpruning • L2 正則化を加えて学習し、絶対値が⼩さいweightを0に • 実際に⾼速に動かすには専⽤ハードが必要 107 S. Han, et al., "Learning both Weights and Connections for Efficient Neural Networks," in Proc. of NIPS, 2015. S. Han, et al., "Deep Compression: Compressing Deep Neural Networks with Pruning, Trained Quantization and Huffman Coding," in Proc. of ICLR, 2016. S. Han, et al., "EIE: Efficient Inference Engine on Compressed Deep Neural Network," in Proc. of ISCA, 2016.

Slide 108

Slide 108 text

Pruning Filters for Efficient ConvNets • Structured pruning(チャネルレベルのpruning) • 各レイヤについて、フィルタの重みの絶対値の総和が ⼩さいものからpruning • 各レイヤのpruning率はpruningへのsensitivityから ⼈⼿で調整 • Pruning後にfinetune 108 H. Li, et al., "Pruning Filters for Efficient ConvNets," in Proc. of ICLR, 2017.

Slide 109

Slide 109 text

Network Slimming • Batch normのパラメータγにL1 ロスをかけて学習 • 学習後、γが⼩さいチャネルを削除し、fine-tune 109 チャネル毎に⼊⼒を平均0分散1に正規化、γとβでscale & shi1 チャネルi … … Batch normaliza-on Z. Liu, et al., "Learning Efficient Convolutional Networks through Network Slimming," in Proc. of ICCV, 2017.

Slide 110

Slide 110 text

L0 ではなくLasso に緩和して解く Channel Pruning • あるfeature mapのチャネル削除した場合に 次のfeature mapの誤差が最⼩となるようチャネルを選択 110 Y. He, et al., "Channel Pruning for Accelerating Very Deep Neural Networks," in Proc. of ICCV, 2017.

Slide 111

Slide 111 text

ThiNet • 前述の⼿法と同じように、次のfeature mapの誤差が 最⼩となるレイヤをgreedy削除 • 削除後に、畳み込みの重みを誤差が最⼩になるように 調整→finetune 111 J. Luo, et al., "ThiNet: A Filter Level Pruning Method for Deep Neural Network Compression," in Proc. of ICCV, 2017.

Slide 112

Slide 112 text

AutoML for Model Compression and Acceleration (AMC) • 強化学習(off-policy actor-critic)により 各レイヤ毎の最適なpruning率を学習 • ⼊⼒は対象レイヤの情報とそれまでのpruning結果、 報酬は –エラー率×log(FLOPs) or log(#Params) 112 Y. He, et al., "AMC - AutoML for Model Compression and Acceleration on Mobile Devices," in Proc. of ECCV, 2018.

Slide 113

Slide 113 text

Lottery Ticket Hypothesis (ICLRʼ19 Best Paper) • NNには、「部分ネットワーク構造」と「初期値」の 組み合わせに「当たり」が存在し、それを引き当てると 効率的に学習が可能という仮説 • Unstructuredなpruningでその構造と初期値を⾒つけることができた 113 https://www.slideshare.net/YosukeShinya/the-lottery-ticket-hypothesis-finding-small-trainable-neural-networks Jonathan Frankle, Michael Carbin, "The Lottery Ticket Hypothesis: Finding Sparse, Trainable Neural Networks," in Proc. of ICLR, 2019.

Slide 114

Slide 114 text

Network Pruning as Architecture Search • Structuredなpruning後のネットワークをscratchから学習させても finetuneと同等かそれより良い結果が得られるという主張 • つまりpruningは、重要な重みを探索しているのではなく 各レイヤにどの程度のチャネル数を割り当てるかという Neural Architecture Search (NAS) をしているとみなせる • Lottery Ticket Hypothesisではunstructuredで、低LRのみ、 実験も⼩規模ネットワークのみ 114 Z. Liu, et al., "Rethinking the Value of Network Pruning," in Proc. of ICLR, 2019.

Slide 115

Slide 115 text

Slimmable Neural Networks* • 1モデルだが複数の計算量(精度)で動かせるモデルを学習 • Incremental trainingだと精度が出ない • 同時学習だとBNの統計量が違うため学習できない → 切替可能なモデルごとにBN層だけを個別に持つ︕ • もっと連続的に変化できるモデル**や、そこからgreedyにpruning する(精度低下が最も⼩さいレイヤを削っていく)拡張***も 115 * J. Yu, L. Yang, N. Xu, J. Yang, and T. Huang, "Slimmable Neural Networks," in Proc. of ICLR, 2019. ** J. Yu and T. Huang, "Universally Slimmable Networks and Improved Training Techniques," in arXiv:1903.05134, 2019. *** J. Yu and T. Huang, "Network Slimming by Slimmable Networks: Towards One-Shot Architecture Search for Channel Numbers," in arXiv:1903.11728, 2019.

Slide 116

Slide 116 text

MetaPruning • Pruning後のネットワークの重みを 出⼒するPruningNetを学習 • Blockへの⼊⼒はNetwork encoding vector 前および対象レイヤのランダムなpruning率 • 全部⼊れたほうが良さそうな気がするが 著者に聞いたところ効果なし • End-to-endで学習できる︕ • 学習が終わると精度vs.速度のトレードオフの 優れたモデルを探索(⼿法は何でも良い)ここではGA 116 Z. Liu, H. Mu, X. Zhang, Z. Guo, X. Yang, T. Cheng, and J. Sun, "MetaPruning: Meta Learning for Automatic Neural Network Channel Pruning," in arXiv:1903.10258, 2019.

Slide 117

Slide 117 text

モデル⾼速化 • 畳み込みの分解 (Factorization) • 枝刈り (Pruning) • 早期終了 (Early termination) • 蒸留 (Distillation) • 量⼦化 (Quantization) 117

Slide 118

Slide 118 text

早期終了 (Early termination) • ⼊⼒に応じてネットワークの途中で結果を出⼒し、 それ以降の処理を⾏わない(早期終了) • ⼊⼒に応じてネットワークの構造を動的に変える (動的計算グラフ; dynamic computation graph) • 「平均処理時間」を削減する 118

Slide 119

Slide 119 text

BranchyNet • ネットワークの途中に結果の出⼒層を追加 • 学習時にはすべての出⼒層に適当なweightをかけて学習 • そのsoftmaxのエントロピーが閾値以下の場合にExit 119 S. Teerapittayanon, et al., "BranchyNet: Fast Inference via Early Exiting from Deep Neural Networks," in Proc. of ICPR, 2016.

Slide 120

Slide 120 text

Spatially Adaptive Computation Time (SACT) • ACT: 各ResBlockがhalting scoreを出⼒、合計が1を超えると 以降の処理をスキップ(空間領域でも⾏うとSACT) 120 計算量に関する勾配を追加 M. Figurnov, et al., "Spatially Adaptive Computation Time for Residual Networks," in Proc. of CVPR, 2017.

Slide 121

Slide 121 text

Runtime Neural Pruning • 各レイヤ毎に、直前までの特徴マップを⼊⼒とするRNNが 利⽤する畳み込みフィルタ集合を決定 • Keepした畳み込みフィルタ数と元タスクの損失関数(最終層の場 合)を負の報酬としてQ学習でRNNを学習 121 J. Lin, et al., "Runtime Neural Pruning," in Proc. of NIPS, 2017.

Slide 122

Slide 122 text

BlockDrop • Policy networkに画像を⼊⼒、どのBlockをスキップするかを出⼒ • KeepとなったResBlockのみをforward • 認識が失敗した場合は負の報酬を、成功した場合にはスキップ率に 応じた正の報酬を与えることでpolicy networkを学習 122 Z. Wu, et al., "BlockDrop: Dynamic Inference Paths in Residual Networks," in Proc. of CVPR, 2018.

Slide 123

Slide 123 text

モデル⾼速化 • 畳み込みの分解 (Factorization) • 枝刈り (Pruning) • 早期終了 (Early termination) • 蒸留 (Distillation) • 量⼦化 (Quantization) 123

Slide 124

Slide 124 text

蒸留 (Distillation) • ⼤きなモデルや、複数のネットワークのアンサンブルを 「教師モデル」とし、⼩さな「⽣徒モデル」を学習 • 教師の出⼒や中間特徴を⽣徒が模擬するようなロスをかける 124 1. アンサンブルモデルや ⼤きなモデルを学習 2. 学習済みモデルを利⽤して ⼩さなモデルを学習

Slide 125

Slide 125 text

Distilling the Knowledge in a Neural Network 125 … … 学習画像 学習済みモデル 学習するモデル … 正解ラベル (ハード ターゲッ ト) 通常T = 1のso/maxのTを⼤きくした ソフトターゲットを利⽤ … ソフトターゲット ソフト ターゲット ハード ターゲット 正解ラベルと 学習モデル出⼒の 両⽅を利⽤ G. Hinton, et al., "Distilling the Knowledge in a Neural Network," in Proc. of NIPS Workshop, 2014.

Slide 126

Slide 126 text

FitNet • 教師よりもdeepかつthinな⽣徒を学習する • ⽣徒のguided layerが、教師のhit layerの出⼒を 正確に模擬する (regression) ロスを追加 126 A. Romero, et al., "FitNets: Hints for Thin Deep Nets," in Proc. of ICLR, 2015.

Slide 127

Slide 127 text

モデル⾼速化 • 畳み込みの分解 (Factorization) • 枝刈り (Pruning) • 早期終了 (Early termination) • 蒸留 (Distillation) • 量⼦化 (Quantization) 127

Slide 128

Slide 128 text

量⼦化 • ネットワークのパラメータ等を量⼦化することで モデルサイズを削減、学習や推論を⾼速化 • 量⼦化対象 • 重み、アクティベーション(特徴マップ)、勾配、エラー • 量⼦化⼿法 • 線形、log、⾮線形 / スカラ、ベクトル、直積量⼦化 • 量⼦化ビット • 1bit(バイナリ)、3値 (-1, 0, 1)、8bit、16bit、任意bit • 専⽤ハードがないと恩恵を受けられない事が多い • 半精度*は汎⽤ハード&フレームワークでもサポート 128 * https://github.com/NVIDIA/apex

Slide 129

Slide 129 text

WAGE • weights (W), activations (A), gradients (G), errors (E) の全てを量⼦化 129 S. Wu, et al., "Training and Inference with Integers in Deep Neural Networks," in Proc. of ICLR, 2018.

Slide 130

Slide 130 text

WAGE • weights (W), activations (A), gradients (G), errors (E) 130 S. Wu, et al., "Training and Inference with Integers in Deep Neural Networks," in Proc. of ICLR, 2018. バイナリ

Slide 131

Slide 131 text

Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference* • 推論時にuint8の演算がメインとなるように 学習時に量⼦化をシミュレーションしながら学習 • TensorFlow公式に実装が存在** 131 * B. Jacob, et al., "Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference," in Proc. of CVPR, 2018. ** https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/quantize/README.md

Slide 132

Slide 132 text

モデル⾼速化 • 畳み込みの分解 (Factorization) • 枝刈り (Pruning) • 早期終了 (Early termination) • 蒸留 (Distillation) • 量⼦化 (Quantization) • 現状のbest practice • MobileNet等の効率的なアーキテクチャをベースに channel pruningを⾏い、可能なら半精度やuint8化 132

Slide 133

Slide 133 text

まとめ • 畳み込みニューラルネットワークの⾼精度化 • ILSVRC歴代の優勝モデルから 畳み込みニューラルネットワークの歴史を振り返る • 近年の畳み込みニューラルネットワーク⾼精度化⼿法を いくつかのタイプに分類、解説 • 畳み込みニューラルネットワークの⾼速化 • 特定のハードウェアに依存しない⾼速化⼿法を いくつかのタイプに分類、解説 • Hardware-awareなNAS︕ 133