0から理解するニューラルアーキテクチャサーチ
NAS for CNN
東北⼤学 / 理研AIP
菅沼 雅徳
2021.05.29
所属
• 2017.10 ‒ 現在 理化学研究所 AIP 特別研究員
• 2018.10 ‒ 現在 東北⼤学 助教
2
⾃⼰紹介(菅沼 雅徳)
興味のある研究分野
• コンピュータビジョン
• Neural Architecture Search (NAS)
• Vision and Language
NAS + 画像分類
[GECCOʼ17 (Best paper)]
NAS + 画像復元
[ICMLʼ18, CVPRʼ19]
Vision and Language
[ECCVʼ20, IJCAIʼ21]
CNNに限っていうと,下記を同時に最適化するケースを指すことが多い
• 各層の種類(Convolution,Pooling,およびそれらのハイパーパラメータなど)
• 各層の接続関係
3
ニューラルアーキテクチャサーチ(NAS)とは
!"#$3×3
Input
'()*""+
!"#$1×1
Output
Input
'()*""+
($-*""+
Output
!"#$3×3
!"#$3×3
!"#$5×5
!"#$1×1
!"#$3×3
!"#$3×3
Input
!"#$1×1
!"#$3×3
Output
0
5
10
15
20
25
30
• CNNの成功はアーキテクチャの改良がそれなりに牽引
• 画像分類,物体検出など多くのタスクでも同様の傾向
4
Why NAS?
error
rate
Traditional
CNN
2010 2011
AlexNet
2012 2013
ZFNet VGG
2014 2015
GoogleNet
2016
SENet
2017
ResNet
ImageNet Top 5 Error Rate
CNNのアーキテクチャの改善で
20%以上の性能向上 ResNet [He+, CVPRʼ16]
EfficientDet [Tan+, CVPRʼ20]
year
しかし,⼈⼿で設計するには探索空間が膨⼤すぎる
• 仮に下記のようなシンプルなCNNを仮定しても探索空間が膨⼤に
• 実際には各層の種類および接続関係はさらに複雑になることが多い
5
Why NAS?
Input
!"#$1×1
!"#$3×3
()* +"",-#.
)$/ +"",-#.
!"#$1×1
!"#$3×3
()* +"",-#.
)$/ +"",-#.
!"#$1×1
!"#$3×3
()* +"",-#.
)$/ +"",-#.
Output
…
20層の場合,4!" = 1099511627776通りの組み合わせ
NASを利⽤することで,⼈⼿でCNNを設計するよりも良好な精度と
パラメータ数(演算量)のパレート解を達成可能
6
NASの性能例
引⽤: EfficientNet [Tan+, ICMLʼ19] 引⽤: EfficientDet [Tan+, CVPRʼ20]
Image classification (ImageNet) Object detection (MS COCO)
8
ざっくりとNASの歴史(CIFAR-10)
0
1
2
3
4
5
6
7
8
0.1 1 10 100 1000 10000
NAS-RL [ICLRʼ17]
Large-scale Evolution [ICMLʼ17]
AmoebaNet [AAAIʼ19]
NASNet [CVPRʼ18]
PNAS [ECCVʼ18]
MetaQNN [ICLRʼ17]
CGPCNN [GECCOʼ17]
ENAS [ICMLʼ18]
P-DARTS [ICCVʼ19]
PC-DARTS [CVPRʼ20]
Search cost (GPU days)
Test
error
rate
DARTS [ICLRʼ19]
NAS-RL [Zoph+, ICLRʼ17]
1. RNNでCNNの各層のハイパーパラメータ(フィルタ数/サイズなど)を出⼒
2. CNNをtraining setで訓練し,validation setでのaccuracyを報酬!とする
3. 報酬!の期待値を最⼤化するようにPolicy gradientでRNNのパラメータを最適化
9
強化学習によるNAS
Controller (RNN)
Train a network with
architecture A and get
validation accuracy 2
Update the controller based on 2
Sample architecture A
NAS-RL [Zoph+, ICLRʼ17]
1. RNNでCNNの各層のハイパーパラメータ(フィルタ数/サイズなど)を出⼒
2. CNNをtraining setで訓練し,validation setでのaccuracyを報酬!とする
3. 報酬!の期待値を最⼤化するようにPolicy gradientでRNNのパラメータを最適化
10
強化学習によるNAS
各層のフィルタのハイパーパラメータ(候補は事前に定義)を
softmaxで推定
探索空間
• Filter height ∈ [1,3, 5,7]
• Filter width ∈ [1,3, 5,7]
• # of filters ∈ [24,36, 48,64]
• Stride ∈ [1,2,3]
• Skip connectionの有無
NAS-RL [Zoph+, ICLRʼ17]
1. RNNでCNNの各層のハイパーパラメータ(フィルタ数/サイズなど)を出⼒
2. CNNをtraining setで訓練し,validation setでのaccuracyを報酬!とする
3. 報酬!の期待値を最⼤化するようにPolicy gradientでRNNのパラメータを最適化
11
強化学習によるNAS
< =# = >$(&!:#;()[2]
∇($
< =#
= @
*+,
-
>$(&!:#;($)[∇ ($
logD )* )*.,:,; =# 2]
RNNの報酬および勾配
各層のフィルタのハイパーパラメータ(候補は事前に定義)を
softmaxで推定
直感的には,⾼い性能を⽰すCNN構造に
⾼い確率を割り当てるようにRNNを更新
• 右図はCIFAR-10上で獲得された構造
• 受容野が⼤きいフィルタが多く使われている
• skip connectionが多い
○ CNN全体を設計可能
× ⼿法の制約上,直列的な構造しか設計できない
× 計算コストの割に,精度がよろしくない
• 22400 GPU daysでerror rate=3.65
12
NAS-RLで獲得されたCNNの例
※ GPU800台使⽤
引⽤: NAS-RL [Zoph+, ICLRʼ17]
Large-scale Evolution [Real+, ICMLʼ17]
• シンプルな遺伝的アルゴリズム (GA)を⽤いた⼿法
• CIFAR-10上でError rate=5.40, 2600 GPU days(※GPU250台使⽤)
13
進化計算法によるNAS
進化の様⼦
引⽤: [Real+, ICMLʼ17]
Large-scale Evolution [Real+, ICMLʼ17]
• 個体(CNN構造)集団からランダムに2つ個体をサンプルし,性能⽐較を⾏い,
性能が良い⽅のCNN構造を変更し(mutation) ,もとの集団に戻す,を繰り返す
• Mutationの例
• Conv層の追加・除去,strideの変更,チャネル数の変更,フィルタサイズの変更
• skip connectionの追加・除去
• 学習率の変更
• 重みの初期化
14
進化計算法によるNAS
current generation next generation
a. 2個体を選択
b. 2個体を⽐較し,
良い⽅を残す
c. 新しい個体を⽣成(mutation)し,
元の個体と⽣成個体を戻す a〜cの繰返し
…
※ validation accuracy
CGPCNN [Suganuma & Shirakawa+, GECCOʼ17]
• CNNの構造をDirected acyclic graph(DAG)で表現し,DAGの情報を整数列で記述
• Validation setでの性能を最⼤化するように,整数列を進化計算法によって最適化
15
進化計算法によるNAS
Convolution
32 output channels
3 3 receptive filed
Max Pooling
2 2 receptive field
Stride 2
Convolution
64 output channels
5 5 receptive field
Convolution
64 output channels
3 3 receptive field
softmax
Summation
1
3 4
2
6
Max Pooling
conv
(32, 3)
1
pool
(max)
2
conv
(64, 3)
4
conv
(64, 5)
3
pool
(max)
5
sum
6
input
0 7
output
DAG
0
(Node no.) 1 2
Function ID 1st input node no. 2nd input node no.
4 5
3 6 7
0 2 1 0 0 3 1 2 2 2 1 1 2 2 4 3 4 O 6
整数列(Genotype) CNN
+
6
16
CGPCNNによって獲得された構造例
Input
Max pool CB (128, 3)
Max pool
CB (128, 3)
CB (64, 3)
CB (32, 5)
CB (128, 3)
Sum
CB (128, 3)
Sum
Max pool
CB (32, 5)
CB (64, 3)
Concat
Concat
CB (64, 3)
Sum
CB (64, 5)
CB (128, 3)
CB (128, 3)
Concat
CB (64, 3)
Concat
CB (128, 3)
CB (128, 3)
CB (128, 5)
Softmax
• 右図はCIFAR-10上で獲得された構造
• Residual構造を⾃動で獲得している
○ CNN全体を設計可能
○ 層数や接続関係など,より複雑な構造を設計可能
× 計算コストおよび精度が微妙
• 30 GPU daysでerror rate=5.01
※ CB = Conv+BatchNorm+ReLU
• これまではネットワーク全体の構造を最適化していたが,探索範囲が膨⼤と
なってしまい,計算コストが⾼かった
• Cellと呼ばれる⼩さなモジュールの構造を最適化し,それを積み重ねることで
全体のネットワークを構成する⽅法が登場(現在最もよく使われている探索空間)
17
CellベースのNASの登場
Normal
Cell
Normal
Cell
Reduction
Cell
Output
Input
Reduction
Cell
×G
×G
!!
!"
!#
!$
• 3×3 conv
• 5×5 conv
• 3×3 max pool
• 3×3 ave pool
• identity
• zero
:演算候補
…
Cell:有向⾮巡回グラフ(DAG)
/!
:特徴マップ
LSTMでCell内の演算種類および接続関係を決定
1. どの特徴マップを⼊⼒とするか
• 前2つのCellの出⼒(ℎ%, ℎ%&!)もしくはCell内の中間層出⼒
2. 上記で選択された2つの特徴マップに対して
どの演算⼦を適⽤するか
3. どうやって上記2つの出⼒を結合するか
• 要素和もしくはchannel次元で結合
• 上記をH回分出⼒=中間層がH層のCellの設計
• $ = 5のとき,探索空間のサイズ(候補アーキテクチャの総数)は10"'
18
強化学習+Cellベース NAS-Net [Zoph+, CVPRʼ18]
演算候補
• 1×1 conv
• 3×3 conv
• 3×3 separable conv
• 5×5 separable conv
• 7×7 separable conv
• 3×3 dilated separable conv
• 1×7 then 7×1 conv
• 1×3 then 3×1 conv
• 3×3 max pooling
• 5×5 max pooling
• 7×7 max pooling
• 3×3 ave pooling
• identity
LSTMでCell内の演算種類および接続関係を決定
1. どの特徴マップを⼊⼒とするか
• 前2つのCellの出⼒(ℎ%, ℎ%&!)もしくはCell内の中間層出⼒
2. 上記で選択された2つの特徴マップに対して
どの演算⼦を適⽤するか
3. どうやって上記2つの出⼒を結合するか
• 要素和もしくはchannel次元で結合
• 上記をH回分出⼒=中間層がH層のCellの設計
• $ = 5のとき,探索空間のサイズ(候補アーキテクチャの総数)は10"'
19
強化学習+Cellベース NAS-Net [Zoph+, CVPRʼ18]
Cellの例
• フィルタのchannel数はreduction cell時に2倍にする(解像度は1/2)
• LSTMはProximal policy optimizationで最適化
• CIFAR-10上で,error rate=3.41, 1800 GPU days
• CNN全体を設計するNAS-RL [Zoph+, ICLRʼ17]は, error rate=5.40, 2600 GPU days
20
強化学習+Cellベース NAS-Net [Zoph+, CVPRʼ18]
獲得されたReduction Cellの例
獲得されたNormal Cellの例
AmoebaNet [Real+, AAAIʼ19]
• 進化計算法ベースで⾼精度な⽅法の⼀つ(しかし計算コスト⼤)
• NAS-Net [Zoph+, CVPRʼ18]と同じ探索空間
• Mutationによって新しい構造を⽣成
• Hidden state mutation:セル内の⼀つの演算を選択し,それの⼊⼒元をランダムに変更
• Op mutation :セル内の⼀つの演算を選択し,その演算をランダムに変更
21
進化計算法+Cellベース
a. (個体をランダムに選択
b. (個体中最も優れた個体を選択
a〜eの繰返し
…
×
d. 最も古い個体を除外
e. 新しい個体を追加
c. 選択された個体に対して
mutationを適⽤
AmoebaNet [Real+, AAAIʼ19]
• CIFAR-10上でerror rate=3.34, 3150 GPU days
• RLベースの⼿法[Zoph+, CVPRʼ18]は, error rate=3.41, 1800 GPU days
• 収束は進化計算ベースの⽅がRLベースよりも早い
22
進化計算法+Cellベース
CNN全体の構造 Normal cell Reduction cell
進化の様⼦
Progressive NAS [Liu+, ECCVʼ18]
• ⼀気に全てのブロックに関して最適化をするのではなく,
徐々にCell内のブロック数$を増やしていきながら,Cellの設計を⾏う
• % = $時の全ての組み合わせを列挙 → LSTMで各組み合わせの性能を予測
→ 上位'個の組み合わせのみ学習 → LSTMの学習 → % ← $ + 1時での
全ての組み合わせ列挙 → …
23
Sequential model-based optimization+Cellベース
sep
3×3
sep
5×5
+
ブロック
Predictor
apply and predict scores
…
until B=5
H = Iで可能な全ての構造
…
H = Iの中でのTop-K
train/finetune
H = I + 1で可能な全ての構造
…
apply and predict scores
Progressive NAS [Liu+, ECCVʼ18]
• 探索空間は基本的にNAS-RLに準拠
• 1種類のCellのみを設計(strideを変えることで解像度を変更)
• CIFAR-10上でerror rate=3.63, 150 GPU days
24
Sequential model-based optimization+Cellベース
獲得されたCell
• Cellベースにすることで探索空間の削減はできたが,依然として計算コストが⾼い
(⾼い性能を⽰すためには数百〜数千GPU days必要)
• 理由:アーキテクチャのサンプル → スクラッチから学習 → アーキテクチャのサンプル → …
25
さらなる⾼速化:Weight sharing
ENAS [Pham+, ICMLʼ18]
• 探索空間全てを包含する1つのDAG(super net)を⽤意し,アーキテクチャ候補はsuper netの
サブグラフとして表現
• 探索過程でsuper netの重みは再利⽤ =各サブグラフをスクラッチから学習する必要がない
Super net
…
Candidate nets
sampling
26
さらなる⾼速化:Weight sharing
ENAS [Pham+, ICMLʼ18]
• Super netからのサンプリングはLSTMで実施(NASNetと同様)
• ⼊⼒ソースの選択
• 適⽤する演算⼦の選択
1. LSTMによるCNNのサンプリングおよびCNNの学習
2. サンプルされたCNNのValidation accuracyを最⼤化するように
REINFORCEでLSTMの学習
を繰り返す
Input 1
Input 2
sep
5×5
id
+
sep
3×3
avg
3×3
+
block 4
block 3
sep
3×3
sep
5×5
avg
3×3
id
+
LSTM
27
さらなる⾼速化:Weight sharing
ENAS [Pham+, ICMLʼ18]
• 例えば,次のステップで+,- 3×3, /0が選択されたときに,
過去に使⽤した+,- 3×3の重みを再利⽤する
= スクラッチから学習する必要がないため⾼速
• CIFAR-10でerror rate=3.54, 0.45 GPU days
• 論⽂内で使⽤しているセルベースの探索空間は1.3×10,,
• CNN全体の構造も効率的に探索可能(探索空間は1.6×10!0 )
• NAS-Net [Zoph+, CVPRʼ18]はerror rate=3.41, 1800 GPU days
Input 1
Input 2
sep
5×5
id
+
sep
3×3
id
+
block 4
block 3
sep
3×3
sep
5×5
avg
3×3
id
+
)*
LSTM
これまで探索空間が離散で微分不可能なため,対象となるCNNのほかに
SamplerとしてRNNが別途必要であった
28
勾配法によるNAS
Differentiable Architecture Search (DARTS) [Liu+, ICLRʼ19]
• 探索空間を微分可能にすることでSamplerを必要としない,より効率的かつ
優れたNASを実⾏可能に
• Cellベース+weight sharing+SGDによるNAS.代表的なNAS⼿法の1つ
• CIFAR-10でerror rate=2.76, 1 GPU days
※ 論⽂中の表では4 GPU days(4回探索をした中のベストを選択しているため)
https://github.com/quark0/darts
探索空間:各エッジでどの演算を実⾏するか
• ノード:特徴マップ
• エッジ:演算候補(conv, pooling, identity,…) ← 探索対象
29
DARTS
Normal
Cell
Reduction
Cell
Normal
Cell
Normal
Cell
… Output
Input
Input1
Input2
L1
L2
L3
123145
L,
L!
!"#$1×1
!"#$1×1
/!
探索空間:各エッジでどの演算を実⾏するか
• ノード:特徴マップ
• エッジ:演算候補(conv, pooling, identity,…) ← 探索対象
30
DARTS
Normal
Cell
Reduction
Cell
Normal
Cell
Normal
Cell
… Output
Input
Input1
Input2
L1
L2
L3
123145
L,
L!
!"#$1×1
!"#$1×1
/!
演算候補
• 3×3 separable conv
• 5×5 separable conv
• 3×3 dilated separable conv
• 5×5 dilated separable conv
• 3×3 max pooling
• 3×3 average pooling
• Identity
• zero
31
Continuous relaxation of the search space
Input1
Input2
L1
L2
L3
123145
L,
L!
!"#$1×1
!"#$1×1
3×3 #$% &'()
*+$(,*,-
0"
",$
0%
",$
+
3×3 ./0 %''1
0&
",$
探索空間を微分可能にするために,
各演算候補に構造パラメータ$M
N,O
を付与
• / = 1, … , 7 − 1. : = 3, … , 7. 7: ノード数
• < = 1, … , ' ': 演算候補数
Cell
例)演算候補が3つの場合
32
Continuous relaxation of the search space
Input1
Input2
L1
L2
L3
123145
L,
L!
!"#$1×1
!"#$1×1
3×3 #$% &'()
*+$(,*,-
0"
",$
0%
",$
+
3×3 ./0 %''1
0&
",$
Cell
構造パラメータ$M
N,O
+Softmax関数で各エッジの出⼒ ̅
&M
N,O
を計算
• ̅
2!,# > = ∑$∈&
'() *+
,,.
∑
+/∈1
'() *
+/
,,. 2(>)
• 構造パラメータB$
!,#
によって各演算2(>)を重み付け
• Chain ruleによってSGDで
直接構造パラメータの学習が可能に
̅
",,2
(*)
33
DARTSの学習⽅法
1. Validation lossを最⼩化するように構造パラメータ#を更新 (1 mini-batch使⽤)
• ∇*ℒ,-. E/, B − F∇*,0
1 ℒ23-!4 E, B ∇0/ℒ,-.(E/, B)
• 第⼆項の計算が若⼲重いため,F = 0にすることで⾼速化も可能(First-order Approximation)
2. Training lossを最⼩化するようにCNNの重みパラメータ$を更新 (1 mini-batch使⽤)
• ∇0ℒ23-!4(E, B)
3. 収束するまで上記を繰り返す
4. Top-%の構造パラメータ&をもつ演算のみ残す(論⽂ではS = 2)
3×3 #$% &'()
*+$(,*,-
0"
',(
0%
',(
+
3×3 ./0 %''1
0&
',(
3×3 #$% &'()
*+$(,*,-
0"
',(
0%
',(
+
3×3 ./0 %''1
0&
',(
Top-S
• Cell内のノード数4での結果例(CIFAR-10上で探索)
• Reduction cellにはNon-learnable operationしか含まれていない
34
DARTSで獲得された構造例
Normal cell Reduction cell
引⽤:DARTS [Liu+, ICLRʼ19]
Test error Params (M)
Search cost
(GPU days)
Method
DenseNet 3.46 25.6 - manual
NAS-Net + cutout [Zoph+, CVPRʼ18] 2.83 3.1 1800 RL
AmoebaNet + cutout [Real+, AAAIʼ19] 2.55 2.8 3150 evolution
PNAS [Liu+,ECCVʼ18] 3.41 3.2 150 SMBO
ENAS + cutout [Pham+, ICMLʼ18] 2.89 4.6 0.5 RL
DARTS (1st order) + cutout [Liu+, ICLRʼ19] 3.00 3.3 1.5 gradient
DARTS (2nd order) + cutout [Liu+, ICLRʼ19] 2.76 3.3 4 gradient
35
性能⽐較
※ DARTSは4試⾏分のSearch cost
• 勾配法で構造も直接最適化することで,効率的かつ優れたCNNの探索が可能
• NASを利⽤することで,⼿動での設計(DenseNet)と⽐べて軽量かつ⾼精度な
モデルの設計が可能
• 学習データへのoverfit
• Skip connectionが過剰に含まれる構造が獲得されやすい
• 探索空間:3×3, 5×5 sep conv, 3×3, 5×5 dilated conv, max/ave pooling, identity, zero
• 構造探索中の性能とテスト時の性能差が⽣じやすい
• メモリ消費が激しい
36
DARTSの使⽤はあまりオススメできない
引⽤: [Zela+, ICLRʼ20]
探索
8 Cell
テスト時
20 Cell
獲得されたCellの例
Robust DARTS [Zela+, ICLRʼ20]
• DARTSが学習データにoverfitしてしまう課題について調査
• DARTSでは探索が進むにつれて,へシアン⾏列∇*
1 ℒ,-.!5の最⼤固有値H6-7
* も増加
→ loss landscapeが急峻になり,汎化性能の低い解に収束(⼤量のskip connectionなど)
37
DARTSの改良:学習データへのoverfit
引⽤: [Zela+, ICLRʼ20]
Hypothetical illustration of loss landscape
異なる探索空間(S1-4)
での検証
2∗: 探索中の構造パラメータ
2"#$%: top-k抽出後の構造パラメータ
Overfitの解決策
• Early stopping
• 最⼤固有値T5&6
7
を監視し,
8
9&'(
) (:.;)
8
9&'(
) (:)
< 0.75 を満たす場合,- − S epochで探索を打ち切る
• ̅
T5&6
7 : 直近SエポックのT5&6
7 の平均値, - ∶ 現在のepoch, S = 5
• 正則化
• ScheduledDroppath (DP)
• L2 regularization (L2)
実践例
• Early stoppingの基準を満たした場合に,
正則化強度を上げて,学習再開(DARTS-ADA)
• 異なる正則化強度の実験を並列して実施し,
最良のものを選択(R-DARTS)
38
DARTSの改良:学習データへのoverfit
Test error (%) 異なる探索空間(S1-4)での検証
Progressive DARTS(P-DARTS) [Chen+, IJCVʼ20]
• DARTSは探索時→テスト時にCellの個数を増加させるが,この操作により,
探索時の最良構造≠テスト時の最良構造 となるケースが存在
• PC-DARTSでは,探索中に徐々にCell数を増加させていくことで,上述の問題を緩和
• Cell増加と同時に,下位の構造パラメータ値Yをもつ演算を除外(8 → 5 → 3)
• Cell内のSkip connection数が2となるように調整
39
DARTSの改良:探索時とテスト時の性能差の抑制
5 Cells 20 Cells
11 Cells 17 Cells
Search phase Test phase
Test error Search cost
(GPU days)
DARTS 3.00 0.5
P-DARTS on
CIFAR-10
2.50 0.3
P-DARTS on
CIFAR-100
2.62 0.3
Test error on CIFAR-10
※ DARTS on CIFAR-100は探索が失敗する
Partially-connected DARTS (PC-DARTS) [Xu+, ICLRʼ20]
• DARTSは全ての演算候補についてForward/Backward計算を必要とするため,
メモリ消費が激しい
• ⼊⼒特徴マップの⼀部チャネルのみに対して演算を実施することで省メモリ化([:,< ∈ {0,1})
• J!,#
89
K!; M!,# = ∑:∈;
'() *,,.
4
∑
4/∈5
'() *,,.
4/ N 2 M!,# ∗ K! + (1 − M!,#) ∗ K!
40
DARTSの改良:メモリ消費の抑制
Test error Search cost
(GPU days)
DARTS 3.00 0.5
P-DARTS 2.50 0.3
PC-DARTS 2.57 0.1
Test error on CIFAR-10
※ 上記の探索コストは1080Tiを使⽤した結果.
Tesla V100を使⽤すると,PC-DARTSの探索コストは0.06 days.
ProxylessNAS [Cai+, ICLRʼ20]
• これまでの⽅法では,メモリ効率などの観点から⼤規模なデータセット上で
直接構造探索ができず,CIFAR-10など⼩規模データセット(Proxy)上で構造探索し,
Cell数やチャネル数などを増加させて,⼤規模データセットに転⽤させていた
• ProxylessNASでは省メモリ化により,直接⼤規模データセット上での探索を可能に
41
更なるメモリ消費の抑制
Input
3×3
!"#$
5×5
!"#$
identity
Output
Input
3×3
!"#$
5×5
!"#$
identity
Output
DARTS ProxylessNAS
• パスを2値化することで,特定の演算のみを実⾏する
• DARTSは全ての演算結果をメモリに保持する必要があるため,メモリ消費⼤
• 2値化は,構造パラメータBをもとに多項分布からサンプリング
• P = binarize -<, … , -= = X
1,0, … , 0 with probability -<
…
0,0, … , 1 with probability -=
42
ProxylessNAS
Input
3×3
!"#$
5×5
!"#$
identity
Output
Input
3×3
!"#$
5×5
!"#$
identity
Output
+: =
exp Y:
∑; exp Y;
. = [1,0,0] . = [0,1,0]
• Training lossを最⼩化するようにCNNの重みパラメータ$を更新
• Mini-batchごとにbinary gate Pをサンプリング
• Validation lossを最⼩化するように構造パラメータ#を更新
• CNNの重みパラメータEを固定して,構造パラメータBのみを更新
上記を繰り返す
43
ProxylessNASの学習⽅法
Input
3×3
!"#$
5×5
!"#$
identity
Output
Input
3×3
!"#$
5×5
!"#$
identity
Output
.~+7(.) .~+7(.)
update
update
• ProxylessNASでは,モデルのlatencyも考慮して最適化可能
• '()) = '()))* + ,-[latency]
• ` latency = ∑! `[latency!] = ∑# -#
!
×d(2#
!
)
• 各演算のlatency d(2#
!
)を予測するモデルを別途⽤意
• Google Pixel 1 phoneおよびTensorFlow-Liteを⽤いて構築
• 勾配法ではなく,REINFORCEでも
構造パラメータBを最適化可能
44
ProxylessNASによるlatency考慮した構造設計
Test error Params (M)
DARTS 2.83 3.4
AmoebaNet-B 2.13 34.9
ProxylessNAS-G 2.08 5.7
ProxylessNAS-R 2.30 5.8
Test error rate on CIFAR-10
< Y = c=~7 2 d
= = @
:
+:2(d(/ = "))
1
)はbinary gate2に基づいた2値化されたネットワーク
∇7< Y ≈
1
f
@
:+,
?
2 d=* ∇7log(+(.:
))
• Cellベース+weight sharing+ランダムサーチ [Bender+, ICMLʼ18]
• 構造パラメータもしくはRNNを導⼊しなくとも,ランダムサーチでそれなりに探索可能
• Super netにDropoutを適⽤しながら学習を⾏い,学習終了後にランダムにアーキテクチャを
サンプリングし,validation set上で最良アーキテクチャを選択
• 学習の安定化のために,Dropout ratioのスケジューリング,ghost batch normalizationなど
の⼯夫は必要
45
Weight sharing + ランダムサーチ
引⽤: [Bender+, ICMLʼ18]
Test error
ENAS 3.5
DARTS 2.8
Bender+, ICMLʼ18 3.9
Test error rate on CIFAR-10
※ DARTSと探索空間が若⼲異なっていることに注意
DARTSの探索空間でランダムサーチを実施 [Li+, UAIʼ19]
• Cell内の各ノードにおいて,演算および2つの⼊⼒元をランダムにサンプルし,学習
を繰り返す = super netの学習
• Super netの学習終了後,ランダムにアーキテクチャをサンプルし,0から再学習し,
validation set上での最良モデルを抽出
• 下記表に⽰すように,ランダムサーチでもDARTSと遜⾊ないアーキテクチャを探索可能
46
DARTS + ランダムサーチ
Test error
(Best)
Test error
(ave)
Search cost
(GPU days)
DARTS (2nd order) 2.62 2.78±0.12 10
Random search
with weight sharing
2.71 2.85±0.08 9.7
Test error rate on CIFAR-10
※ Search costはテスト評価⽤の再訓練含む
• DARTS [Liu+, ICLRʼ19] vs ProxylessNAS [Cai+, ICLRʼ20] vs PC-DARTS [Xu+, ICLRʼ20]
• ImageNet50で検証
• ImageNetからランダムに50クラスをサンプリング
• 実験設定は基本的に原著論⽂もしくは著者公開コードに準拠
• ProxylessNASだけうまく探索が進まなかったため,初期学習率および
そのスケジューリングなど調整しました
• 探索の⾼速化のために,Mixed-Precision Trainingを利⽤(https://github.com/NVIDIA/apex)
• GPUはA6000を使⽤
47
実際に動かしてみた
Test error rate
DARTS 14.77
PC-DARTS 12.84
ProxylessNAS 10.76
MnasNet [Tan+, CVPRʼ19]
• Accuracyと処理速度の良好なトレードオフを達成するCNNをNASで設計
• Controller(RNN)の報酬に推論時のlatencyを追加
• ImageNet classificationでMovileNetV2よりも良好なパレート解を獲得可能
48
NAS + 多⽬的最適化
Channel数を増加させたときの性能⽐較 他⼿法との⽐較
MnasNetの探索空間:Factorized hierarchical search space
• 全体のネットワークを複数のブロックに分割
• 各ブロックでは同じレイヤがN層繰り返される
• 各ブロックでレイヤをRNN controllerによって探索する
49
NAS + 多⽬的最適化
MnasNet [Tan+, CVPRʼ19]
1. RNNからCNN modelをサンプルし,対象タスクで訓練,性能評価
2. モバイル器上(Pixel Phone)で実⾏し,推論時のlatencyを実際に取得
3. 報酬を計算
4. 報酬を最⼤化するようにRNNのパラメータをProximal Policy Optimizationで更新
50
NAS + 多⽬的最適化
e,E4f0(g) = hii(g) N
jhk g
k
0
g = h
Y, -L ijk(() ≤ k
m, "nℎ/pg-q/
k = 80(q, Y = m = −0.07 を論⽂では使⽤
wはlatencyに関する制約
• MnasNetの探索空間をもとにベースラインとなるアーキテクチャを探索
• EfficientNet-B0
• EfficientNet-B0のdepth, channel数,⼊⼒解像度を調整
• 0 = B>, E = l>, f = m>
• q. n. Y ⋅ m!
⋅ s ≈ 2, Y ≥ 1, m ≥ 1, s ≥ 1
• Y, m, sはグリッドサーチで探索,uはユーザが指定
51
EfficientNet [Tan+, ICMLʼ19]
+を増加
最近EfficientNetV2が提案されました
[Tan+, arXiv2104.00298]
NAS-FPN [Ghaisi+, CVPRʼ19]
• RetinaNetをベースにFeature Pyramid Networkの構造を最適化(NAS-FPN)
• NAS-FPNはN個のmerging cellで構成
• RNN controllerでmerging cell内の以下を決定
• どの⼆つの⼊⼒特徴マップを受け取るか
• Sum or Global pooling
• 出⼒スケール
52
Object detection + NAS
Binary Op
• NASを利⽤することで,精度・推論速度ともに良好な構造を設計可能
• ⼈⼿で構築したモデルよりも優れたパレート解を獲得できている
53
Object detection + NAS
獲得されたNAS-FPNの例
引⽤: NAS-FPN [Ghaisi+, CVPRʼ19]
Auto-DeepLab [Liu+, CVPRʼ19]
• CellレベルとNetworkレベルの⼆つの探索空間で構成
• Cell : DARTSと同じ
• Network : L層までのパスを探索(解像度を2倍,1/2倍,維持,のいずれかを選択).
各パスに重みm@
A
を割りふる
• 学習⽅法もDARTSと同様
• ネットワークの重みgを更新
• 構造パラメータY, mを更新,を繰り返す
54
Semantic segmentation + NAS
Auto-DeepLab [Liu+, CVPRʼ19]
• NASを利⽤することで,⼈⼿で設計した場合と
同等程度の性能を達成可能
• 探索コストは3 GPU days
• 序盤は⾼解像度,終盤は低解像度での処理を
⾏う過程が獲得されている
55
Semantic segmentation + NAS
56
Adversarial training + NAS [Guo+, CVPRʼ20]
One-shot NASを利⽤して,多数のCNNを⽣成し,
それらCNNのAdversarial attackに対する頑健性を調査
Supernet
…
sampling
Finetuning the network with adversarial
training and evaluate it on eval samples
Subnets
…
…
Finetuning the network with adversarial
training and evaluate it on eval samples
CNNのdensityとadversarial robustnessには正の相関があることが判明
• architecture density n =
|@64778698:|
|@|
=
∑,,.,+ *+
(,,.)
|@|
57
Adversarial attackに頑健なCNNの構造は?
top300とlast300を分類する線形分類器
を学習させた際の重みの分布
58
Adversarial training + NAS [Guo+, CVPRʼ20]
Q1. Adversarial attackに頑健なCNNの構造は何なのか?
A1. Densely connected pattern
Q2. パラメータ数に制限がある場合,どのように畳み込み層を配置すべきか?
A2. 少ないパラメータ制約下では,隣接するノード間に畳み込み層を配置
Q3. 統計的に頑健性を計る指標は何が良いか?
A3. Flow of solution procedure (FSP) matrix loss
より詳しい解説はこちら
• 探索空間の多様性
• ⼈間のバイアスがそれなりに含まれている
• ランダムサーチでも⼗分な性能
• 構造以外のハイパーパラメータの影響
• 学習率やデータ拡張,ランダムシードなどの影響も無視できない
• weight sharingの影響
• ネガティヴな影響を与えることがいくつかの論⽂で⽰唆されている
• 探索時と評価時の乖離
• 探索時と評価時でモデルの深さや幅などを変更することが多いが,
これらによりrankingが変わってしまう
59
現状のNASの課題
• DARTS [Liu+, ICLRʼ19], ENAS [Pham+, ICMLʼ18], NAO [Luo+, NeurIPSʼ18],
BayesNAS [Zhou+, ICMLʼ19] をランダムサーチと⽐較
• ランダムサーチ:探索空間はDARTSに準拠し,各ノードで演算と1つの⼊⼒元をランダムに選択.
10個のアーキテクチャをランダムにサンプルし,収束するまでそれぞれを学習.
• 下記表に⽰すように,単純なランダムサーチがNAS⼿法と同等程度の性能を達成可能
→ 探索空間がリッチすぎる or NAS⼿法の探索が失敗している?
60
ランダムサーチ vs NAS
Test error
(Average)
Test error
(Best)
DARTS 3.38±0.23 3.20
NAO 3.14±0.17 2.90
ENAS 3.24±0.10 3.05
BayesNAS 4.01±0.25 3.59
Random 3.52±0.18 3.26
Test error rate on CIFAR-10
• 各⼿法は異なるランダムシードで10回試⾏
• NAS⼿法はvalidation set上での最良モデルを
再訓練し,test set上で評価
• 学習エポック数は全て同じ
[Yu+, ICLRʼ20]
• NASBench-101*にNAS⼿法を適⽤し,探索が良好に実⾏されているのかを検証
• NASBench-101では探索空間の縮⼩を⾏い,探索空間からサンプル可能な全てのアーキテクチャの
性能を記録している(node数7の場合だと,合計で423624個のアーキテクチャが存在)
• NASによって発⾒されたアーキテクチャのrankingを確認することで,探索性能の検証が可能
• どのNAS⼿法も最良のアーキテクチャを発⾒できていないことがわかる
• NAOが良さそうにみえるが,毎回初期poolから最良アーキテクチャが選択されていたため,
探索が良好に⾏われているとは断⾔できない
61
NASの探索性能の検証
Test error
(Average)
Test error
(Best)
Best
ranking
DARTS 7.19±0.61 6.98 57079
NAO 7.41±0.59 6.67 19552
ENAS 8.17±0.42 7.46 96939
Random 9.07±5.84 4.94 -
Test error rate on NASBench (10試⾏)
* Ying+, NAS-Bench-101: Towards Reproducible Neural Architecture Search, ICMLʻ19
[Yu+, ICLRʼ20]
• NASBench-101を使⽤して,Weight sharing(WS)の影響について検証
• WSありで学習,WSなしで学習(ground truth)間の相関を確認
• WSありでは,mini-batchごとにアーキテクチャを⼀様分布からサンプリングして,
200エポック学習
• 上記の学習を10試⾏し,各試⾏で200アーキテクチャをサンプルし,Kendall Tau metricを
算出( [−1.0, 1.0]の値をとり,1.0に近いほどrankingが近いことを⽰す)
• 結果として,Kendall Tau metric=0.195かつ下記表から,WSはモデルサンプリングに悪影響を
与えることがわかる
62
Weight sharingの検証
Test error
(Average)
Test error
(Best)
Best
ranking
NAO 6.92±0.71 5.89 3543
ENAS 6.46±0.45 5.96 4610
Test error rate on NASBench (WSなし)
Test error
(Average)
Test error
(Best)
Best
ranking
7.41±0.59 6.67 19552
8.17±0.42 7.46 96939
WSあり
引⽤:Yu+, Evaluating the search space of neural architecture search, ICLRʻ20
[Yu+, ICLRʼ20]
• 複数のデータセット上でNAS⼿法をランダムサーチと⽐較
• ランダムサーチ:探索空間からランダムにアーキテクチャを8つサンプルし,学習
• NAS:構造探索を8試⾏
• PDARTS以外のNAS⼿法は安定してランダムサーチよりも優れているとは⾔い難い
• ランダムサーチに劣っているケースも⾒られる
63
ランダムサーチ vs NAS(別論⽂) [Yang+, ICLRʼ20]
NAS method CIFAR-10 CIFAR-100 Sport8 MIT67 Flowers102
DARTS 0.32 0.23 -0.13 0.10 0.25
PDARTS 0.52 1.20 0.51 1.19 0.20
ENAS 0.01 -3.44 0.67 0.13 0.47
NAO 0.44 -0.01 -2.05 -1.53 -0.13
Relative improvement over random search (higher is better) 2v = 100×
B##,'-.BCC.',
B##.',
TuNAS [Bender+, CVPRʼ20]
• 先の結果は⼩さいデータセットが影響している.探索空間が⼩さい.Tuningが難しいだけ.
• よりeasy-to-tune and scalableなNASとして,TuNASを提案
• ImageNet + ProxylessNASの探索空間では,random searchより優れている
• より⼤きな探索空間でも同様
• WSを調整すれば,ほかのドメインでも良好に動作可能(データセット,タスク)
64
上述の結果への反論
Search space
Complexity of
search space
TuNAS
Random search
w = xy
ProxylessNAS ~10!,
76.3±0.2 75.4±0.2
ProxylessNAS-Enlarged ~10!D 76.4±0.1 74.6±0.3
MobileNetV3-Like ~1031
76.6±0.1 74.6±0.3
Test accuracy on the three search spaces
1. ⽅策o(確率分布)からアーキテクチャBをサンプル(B~o)
2. サンプルされたアーキテクチャ+validation setで精度q(B)および推論速度k(B)をもとに
報酬e(B)を算出し,REINFORCEでoを更新(探索序盤25%は更新しない)
3. Training setでアーキテクチャBの重みEを更新,を繰り返す
• 最終的なアーキテクチャは,oから尤もらしいものを選択して構築
探索の⾼精度化のために以下の2つのテクニックを導⼊
• Filter Warmup
• 探索空間中で最⼤のchannel数をもつconvでほかのconvを表現
• 96チャネルのconvは128チャネルのconvの後⽅32チャネル分をマスクすることで表現
• 探索序盤の25%において,確率-Aで全てのチャネルを有効にする(**: 1.0 → 0.0 でスケジューリング)
• Op Warmup
• 探索序盤の25%では確率-:で全ての演算を使⽤して重みEを更新
• 探索序盤の25%が終了するまでに,-:: 1.0 → 0.0となるようにスケーリングする
65
TuNAS
• DARTS探索空間からランダムにアーキテクチャを8つサンプルし,それぞれ異なるtraining
protocolで学習
• auxiliary tower, droppath, cutout, AutoAugment, larger training epoch, increase the
number of channels,を適⽤
• 重要度:学習⽅法>アーキテクチャ (※ 今回の実験設定では)
66
学習⽅法およびハイパーパラメータの重要性 [Yang+, ICLRʼ20]
• 探索空間の拡⼤
• Transformerへの適⽤
• MLPの再来
• ハイパーパラメータ最適化との融合・協調
• 探索空間の⾃動設計
• Large-scale Evolution [Real+, ICMLʼ17]で取り組まれているが,
精度および計算コストが微妙
• NASに費やすコストを⼤規模データセットおよび学習に
費やしたほうが良い?
• Self-supervised learning, Contrastive learning
• Understanding robustness of ViT [Bhojanapalli+, arXiv2103.14586]
• Randomly wired NN [Xie+, ICCVʼ19]
67
今後の展望
68
本資料のまとめ
探索範囲は?
注意:列挙したすべてのNASを実際に動かしたわけではないため,正確でない可能性あり
計算リソース?
ProsylessNAS, TuNAS
計算リソース?
One-shot
CNN全体
Cell
潤沢
限られている
NAS-Net
Robust-DARTS, PC-DARTS
One-shot w/ WS
潤沢
限られている 探索空間?
探索空間?
Random search
NAO w/o WS, ENAS w/o WS
複雑ではない
複雑
複雑
複雑ではない

0から理解するニューラルネットアーキテクチャサーチ(NAS)

  • 1.
  • 2.
    所属 • 2017.10 ‒現在 理化学研究所 AIP 特別研究員 • 2018.10 ‒ 現在 東北⼤学 助教 2 ⾃⼰紹介(菅沼 雅徳) 興味のある研究分野 • コンピュータビジョン • Neural Architecture Search (NAS) • Vision and Language NAS + 画像分類 [GECCOʼ17 (Best paper)] NAS + 画像復元 [ICMLʼ18, CVPRʼ19] Vision and Language [ECCVʼ20, IJCAIʼ21]
  • 3.
  • 4.
    0 5 10 15 20 25 30 • CNNの成功はアーキテクチャの改良がそれなりに牽引 • 画像分類,物体検出など多くのタスクでも同様の傾向 4 WhyNAS? error rate Traditional CNN 2010 2011 AlexNet 2012 2013 ZFNet VGG 2014 2015 GoogleNet 2016 SENet 2017 ResNet ImageNet Top 5 Error Rate CNNのアーキテクチャの改善で 20%以上の性能向上 ResNet [He+, CVPRʼ16] EfficientDet [Tan+, CVPRʼ20] year
  • 5.
    しかし,⼈⼿で設計するには探索空間が膨⼤すぎる • 仮に下記のようなシンプルなCNNを仮定しても探索空間が膨⼤に • 実際には各層の種類および接続関係はさらに複雑になることが多い 5 WhyNAS? Input !"#$1×1 !"#$3×3 ()* +"",-#. )$/ +"",-#. !"#$1×1 !"#$3×3 ()* +"",-#. )$/ +"",-#. !"#$1×1 !"#$3×3 ()* +"",-#. )$/ +"",-#. Output … 20層の場合,4!" = 1099511627776通りの組み合わせ
  • 6.
  • 7.
    8 ざっくりとNASの歴史(CIFAR-10) 0 1 2 3 4 5 6 7 8 0.1 1 10100 1000 10000 NAS-RL [ICLRʼ17] Large-scale Evolution [ICMLʼ17] AmoebaNet [AAAIʼ19] NASNet [CVPRʼ18] PNAS [ECCVʼ18] MetaQNN [ICLRʼ17] CGPCNN [GECCOʼ17] ENAS [ICMLʼ18] P-DARTS [ICCVʼ19] PC-DARTS [CVPRʼ20] Search cost (GPU days) Test error rate DARTS [ICLRʼ19]
  • 8.
    NAS-RL [Zoph+, ICLRʼ17] 1.RNNでCNNの各層のハイパーパラメータ(フィルタ数/サイズなど)を出⼒ 2. CNNをtraining setで訓練し,validation setでのaccuracyを報酬!とする 3. 報酬!の期待値を最⼤化するようにPolicy gradientでRNNのパラメータを最適化 9 強化学習によるNAS Controller (RNN) Train a network with architecture A and get validation accuracy 2 Update the controller based on 2 Sample architecture A
  • 9.
    NAS-RL [Zoph+, ICLRʼ17] 1.RNNでCNNの各層のハイパーパラメータ(フィルタ数/サイズなど)を出⼒ 2. CNNをtraining setで訓練し,validation setでのaccuracyを報酬!とする 3. 報酬!の期待値を最⼤化するようにPolicy gradientでRNNのパラメータを最適化 10 強化学習によるNAS 各層のフィルタのハイパーパラメータ(候補は事前に定義)を softmaxで推定 探索空間 • Filter height ∈ [1,3, 5,7] • Filter width ∈ [1,3, 5,7] • # of filters ∈ [24,36, 48,64] • Stride ∈ [1,2,3] • Skip connectionの有無
  • 10.
    NAS-RL [Zoph+, ICLRʼ17] 1.RNNでCNNの各層のハイパーパラメータ(フィルタ数/サイズなど)を出⼒ 2. CNNをtraining setで訓練し,validation setでのaccuracyを報酬!とする 3. 報酬!の期待値を最⼤化するようにPolicy gradientでRNNのパラメータを最適化 11 強化学習によるNAS < =# = >$(&!:#;()[2] ∇($ < =# = @ *+, - >$(&!:#;($)[∇ ($ logD )* )*.,:,; =# 2] RNNの報酬および勾配 各層のフィルタのハイパーパラメータ(候補は事前に定義)を softmaxで推定 直感的には,⾼い性能を⽰すCNN構造に ⾼い確率を割り当てるようにRNNを更新
  • 11.
    • 右図はCIFAR-10上で獲得された構造 • 受容野が⼤きいフィルタが多く使われている •skip connectionが多い ○ CNN全体を設計可能 × ⼿法の制約上,直列的な構造しか設計できない × 計算コストの割に,精度がよろしくない • 22400 GPU daysでerror rate=3.65 12 NAS-RLで獲得されたCNNの例 ※ GPU800台使⽤ 引⽤: NAS-RL [Zoph+, ICLRʼ17]
  • 12.
    Large-scale Evolution [Real+,ICMLʼ17] • シンプルな遺伝的アルゴリズム (GA)を⽤いた⼿法 • CIFAR-10上でError rate=5.40, 2600 GPU days(※GPU250台使⽤) 13 進化計算法によるNAS 進化の様⼦ 引⽤: [Real+, ICMLʼ17]
  • 13.
    Large-scale Evolution [Real+,ICMLʼ17] • 個体(CNN構造)集団からランダムに2つ個体をサンプルし,性能⽐較を⾏い, 性能が良い⽅のCNN構造を変更し(mutation) ,もとの集団に戻す,を繰り返す • Mutationの例 • Conv層の追加・除去,strideの変更,チャネル数の変更,フィルタサイズの変更 • skip connectionの追加・除去 • 学習率の変更 • 重みの初期化 14 進化計算法によるNAS current generation next generation a. 2個体を選択 b. 2個体を⽐較し, 良い⽅を残す c. 新しい個体を⽣成(mutation)し, 元の個体と⽣成個体を戻す a〜cの繰返し … ※ validation accuracy
  • 14.
    CGPCNN [Suganuma &Shirakawa+, GECCOʼ17] • CNNの構造をDirected acyclic graph(DAG)で表現し,DAGの情報を整数列で記述 • Validation setでの性能を最⼤化するように,整数列を進化計算法によって最適化 15 進化計算法によるNAS Convolution 32 output channels 3 3 receptive filed Max Pooling 2 2 receptive field Stride 2 Convolution 64 output channels 5 5 receptive field Convolution 64 output channels 3 3 receptive field softmax Summation 1 3 4 2 6 Max Pooling conv (32, 3) 1 pool (max) 2 conv (64, 3) 4 conv (64, 5) 3 pool (max) 5 sum 6 input 0 7 output DAG 0 (Node no.) 1 2 Function ID 1st input node no. 2nd input node no. 4 5 3 6 7 0 2 1 0 0 3 1 2 2 2 1 1 2 2 4 3 4 O 6 整数列(Genotype) CNN + 6
  • 15.
    16 CGPCNNによって獲得された構造例 Input Max pool CB(128, 3) Max pool CB (128, 3) CB (64, 3) CB (32, 5) CB (128, 3) Sum CB (128, 3) Sum Max pool CB (32, 5) CB (64, 3) Concat Concat CB (64, 3) Sum CB (64, 5) CB (128, 3) CB (128, 3) Concat CB (64, 3) Concat CB (128, 3) CB (128, 3) CB (128, 5) Softmax • 右図はCIFAR-10上で獲得された構造 • Residual構造を⾃動で獲得している ○ CNN全体を設計可能 ○ 層数や接続関係など,より複雑な構造を設計可能 × 計算コストおよび精度が微妙 • 30 GPU daysでerror rate=5.01 ※ CB = Conv+BatchNorm+ReLU
  • 16.
  • 17.
    LSTMでCell内の演算種類および接続関係を決定 1. どの特徴マップを⼊⼒とするか • 前2つのCellの出⼒(ℎ%,ℎ%&!)もしくはCell内の中間層出⼒ 2. 上記で選択された2つの特徴マップに対して どの演算⼦を適⽤するか 3. どうやって上記2つの出⼒を結合するか • 要素和もしくはchannel次元で結合 • 上記をH回分出⼒=中間層がH層のCellの設計 • $ = 5のとき,探索空間のサイズ(候補アーキテクチャの総数)は10"' 18 強化学習+Cellベース NAS-Net [Zoph+, CVPRʼ18] 演算候補 • 1×1 conv • 3×3 conv • 3×3 separable conv • 5×5 separable conv • 7×7 separable conv • 3×3 dilated separable conv • 1×7 then 7×1 conv • 1×3 then 3×1 conv • 3×3 max pooling • 5×5 max pooling • 7×7 max pooling • 3×3 ave pooling • identity
  • 18.
    LSTMでCell内の演算種類および接続関係を決定 1. どの特徴マップを⼊⼒とするか • 前2つのCellの出⼒(ℎ%,ℎ%&!)もしくはCell内の中間層出⼒ 2. 上記で選択された2つの特徴マップに対して どの演算⼦を適⽤するか 3. どうやって上記2つの出⼒を結合するか • 要素和もしくはchannel次元で結合 • 上記をH回分出⼒=中間層がH層のCellの設計 • $ = 5のとき,探索空間のサイズ(候補アーキテクチャの総数)は10"' 19 強化学習+Cellベース NAS-Net [Zoph+, CVPRʼ18] Cellの例
  • 19.
    • フィルタのchannel数はreduction cell時に2倍にする(解像度は1/2) •LSTMはProximal policy optimizationで最適化 • CIFAR-10上で,error rate=3.41, 1800 GPU days • CNN全体を設計するNAS-RL [Zoph+, ICLRʼ17]は, error rate=5.40, 2600 GPU days 20 強化学習+Cellベース NAS-Net [Zoph+, CVPRʼ18] 獲得されたReduction Cellの例 獲得されたNormal Cellの例
  • 20.
    AmoebaNet [Real+, AAAIʼ19] •進化計算法ベースで⾼精度な⽅法の⼀つ(しかし計算コスト⼤) • NAS-Net [Zoph+, CVPRʼ18]と同じ探索空間 • Mutationによって新しい構造を⽣成 • Hidden state mutation:セル内の⼀つの演算を選択し,それの⼊⼒元をランダムに変更 • Op mutation :セル内の⼀つの演算を選択し,その演算をランダムに変更 21 進化計算法+Cellベース a. (個体をランダムに選択 b. (個体中最も優れた個体を選択 a〜eの繰返し … × d. 最も古い個体を除外 e. 新しい個体を追加 c. 選択された個体に対して mutationを適⽤
  • 21.
    AmoebaNet [Real+, AAAIʼ19] •CIFAR-10上でerror rate=3.34, 3150 GPU days • RLベースの⼿法[Zoph+, CVPRʼ18]は, error rate=3.41, 1800 GPU days • 収束は進化計算ベースの⽅がRLベースよりも早い 22 進化計算法+Cellベース CNN全体の構造 Normal cell Reduction cell 進化の様⼦
  • 22.
    Progressive NAS [Liu+,ECCVʼ18] • ⼀気に全てのブロックに関して最適化をするのではなく, 徐々にCell内のブロック数$を増やしていきながら,Cellの設計を⾏う • % = $時の全ての組み合わせを列挙 → LSTMで各組み合わせの性能を予測 → 上位'個の組み合わせのみ学習 → LSTMの学習 → % ← $ + 1時での 全ての組み合わせ列挙 → … 23 Sequential model-based optimization+Cellベース sep 3×3 sep 5×5 + ブロック Predictor apply and predict scores … until B=5 H = Iで可能な全ての構造 … H = Iの中でのTop-K train/finetune H = I + 1で可能な全ての構造 … apply and predict scores
  • 23.
    Progressive NAS [Liu+,ECCVʼ18] • 探索空間は基本的にNAS-RLに準拠 • 1種類のCellのみを設計(strideを変えることで解像度を変更) • CIFAR-10上でerror rate=3.63, 150 GPU days 24 Sequential model-based optimization+Cellベース 獲得されたCell
  • 24.
    • Cellベースにすることで探索空間の削減はできたが,依然として計算コストが⾼い (⾼い性能を⽰すためには数百〜数千GPU days必要) •理由:アーキテクチャのサンプル → スクラッチから学習 → アーキテクチャのサンプル → … 25 さらなる⾼速化:Weight sharing ENAS [Pham+, ICMLʼ18] • 探索空間全てを包含する1つのDAG(super net)を⽤意し,アーキテクチャ候補はsuper netの サブグラフとして表現 • 探索過程でsuper netの重みは再利⽤ =各サブグラフをスクラッチから学習する必要がない Super net … Candidate nets sampling
  • 25.
    26 さらなる⾼速化:Weight sharing ENAS [Pham+,ICMLʼ18] • Super netからのサンプリングはLSTMで実施(NASNetと同様) • ⼊⼒ソースの選択 • 適⽤する演算⼦の選択 1. LSTMによるCNNのサンプリングおよびCNNの学習 2. サンプルされたCNNのValidation accuracyを最⼤化するように REINFORCEでLSTMの学習 を繰り返す Input 1 Input 2 sep 5×5 id + sep 3×3 avg 3×3 + block 4 block 3 sep 3×3 sep 5×5 avg 3×3 id + LSTM
  • 26.
    27 さらなる⾼速化:Weight sharing ENAS [Pham+,ICMLʼ18] • 例えば,次のステップで+,- 3×3, /0が選択されたときに, 過去に使⽤した+,- 3×3の重みを再利⽤する = スクラッチから学習する必要がないため⾼速 • CIFAR-10でerror rate=3.54, 0.45 GPU days • 論⽂内で使⽤しているセルベースの探索空間は1.3×10,, • CNN全体の構造も効率的に探索可能(探索空間は1.6×10!0 ) • NAS-Net [Zoph+, CVPRʼ18]はerror rate=3.41, 1800 GPU days Input 1 Input 2 sep 5×5 id + sep 3×3 id + block 4 block 3 sep 3×3 sep 5×5 avg 3×3 id + )* LSTM
  • 27.
    これまで探索空間が離散で微分不可能なため,対象となるCNNのほかに SamplerとしてRNNが別途必要であった 28 勾配法によるNAS Differentiable Architecture Search(DARTS) [Liu+, ICLRʼ19] • 探索空間を微分可能にすることでSamplerを必要としない,より効率的かつ 優れたNASを実⾏可能に • Cellベース+weight sharing+SGDによるNAS.代表的なNAS⼿法の1つ • CIFAR-10でerror rate=2.76, 1 GPU days ※ 論⽂中の表では4 GPU days(4回探索をした中のベストを選択しているため) https://github.com/quark0/darts
  • 28.
    探索空間:各エッジでどの演算を実⾏するか • ノード:特徴マップ • エッジ:演算候補(conv,pooling, identity,…) ← 探索対象 29 DARTS Normal Cell Reduction Cell Normal Cell Normal Cell … Output Input Input1 Input2 L1 L2 L3 123145 L, L! !"#$1×1 !"#$1×1 /!
  • 29.
    探索空間:各エッジでどの演算を実⾏するか • ノード:特徴マップ • エッジ:演算候補(conv,pooling, identity,…) ← 探索対象 30 DARTS Normal Cell Reduction Cell Normal Cell Normal Cell … Output Input Input1 Input2 L1 L2 L3 123145 L, L! !"#$1×1 !"#$1×1 /! 演算候補 • 3×3 separable conv • 5×5 separable conv • 3×3 dilated separable conv • 5×5 dilated separable conv • 3×3 max pooling • 3×3 average pooling • Identity • zero
  • 30.
    31 Continuous relaxation ofthe search space Input1 Input2 L1 L2 L3 123145 L, L! !"#$1×1 !"#$1×1 3×3 #$% &'() *+$(,*,- 0" ",$ 0% ",$ + 3×3 ./0 %''1 0& ",$ 探索空間を微分可能にするために, 各演算候補に構造パラメータ$M N,O を付与 • / = 1, … , 7 − 1. : = 3, … , 7. 7: ノード数 • < = 1, … , ' ': 演算候補数 Cell 例)演算候補が3つの場合
  • 31.
    32 Continuous relaxation ofthe search space Input1 Input2 L1 L2 L3 123145 L, L! !"#$1×1 !"#$1×1 3×3 #$% &'() *+$(,*,- 0" ",$ 0% ",$ + 3×3 ./0 %''1 0& ",$ Cell 構造パラメータ$M N,O +Softmax関数で各エッジの出⼒ ̅ &M N,O を計算 • ̅ 2!,# > = ∑$∈& '() *+ ,,. ∑ +/∈1 '() * +/ ,,. 2(>) • 構造パラメータB$ !,# によって各演算2(>)を重み付け • Chain ruleによってSGDで 直接構造パラメータの学習が可能に ̅ ",,2 (*)
  • 32.
    33 DARTSの学習⽅法 1. Validation lossを最⼩化するように構造パラメータ#を更新(1 mini-batch使⽤) • ∇*ℒ,-. E/, B − F∇*,0 1 ℒ23-!4 E, B ∇0/ℒ,-.(E/, B) • 第⼆項の計算が若⼲重いため,F = 0にすることで⾼速化も可能(First-order Approximation) 2. Training lossを最⼩化するようにCNNの重みパラメータ$を更新 (1 mini-batch使⽤) • ∇0ℒ23-!4(E, B) 3. 収束するまで上記を繰り返す 4. Top-%の構造パラメータ&をもつ演算のみ残す(論⽂ではS = 2) 3×3 #$% &'() *+$(,*,- 0" ',( 0% ',( + 3×3 ./0 %''1 0& ',( 3×3 #$% &'() *+$(,*,- 0" ',( 0% ',( + 3×3 ./0 %''1 0& ',( Top-S
  • 33.
    • Cell内のノード数4での結果例(CIFAR-10上で探索) • ReductioncellにはNon-learnable operationしか含まれていない 34 DARTSで獲得された構造例 Normal cell Reduction cell 引⽤:DARTS [Liu+, ICLRʼ19]
  • 34.
    Test error Params(M) Search cost (GPU days) Method DenseNet 3.46 25.6 - manual NAS-Net + cutout [Zoph+, CVPRʼ18] 2.83 3.1 1800 RL AmoebaNet + cutout [Real+, AAAIʼ19] 2.55 2.8 3150 evolution PNAS [Liu+,ECCVʼ18] 3.41 3.2 150 SMBO ENAS + cutout [Pham+, ICMLʼ18] 2.89 4.6 0.5 RL DARTS (1st order) + cutout [Liu+, ICLRʼ19] 3.00 3.3 1.5 gradient DARTS (2nd order) + cutout [Liu+, ICLRʼ19] 2.76 3.3 4 gradient 35 性能⽐較 ※ DARTSは4試⾏分のSearch cost • 勾配法で構造も直接最適化することで,効率的かつ優れたCNNの探索が可能 • NASを利⽤することで,⼿動での設計(DenseNet)と⽐べて軽量かつ⾼精度な モデルの設計が可能
  • 35.
    • 学習データへのoverfit • Skipconnectionが過剰に含まれる構造が獲得されやすい • 探索空間:3×3, 5×5 sep conv, 3×3, 5×5 dilated conv, max/ave pooling, identity, zero • 構造探索中の性能とテスト時の性能差が⽣じやすい • メモリ消費が激しい 36 DARTSの使⽤はあまりオススメできない 引⽤: [Zela+, ICLRʼ20] 探索 8 Cell テスト時 20 Cell 獲得されたCellの例
  • 36.
    Robust DARTS [Zela+,ICLRʼ20] • DARTSが学習データにoverfitしてしまう課題について調査 • DARTSでは探索が進むにつれて,へシアン⾏列∇* 1 ℒ,-.!5の最⼤固有値H6-7 * も増加 → loss landscapeが急峻になり,汎化性能の低い解に収束(⼤量のskip connectionなど) 37 DARTSの改良:学習データへのoverfit 引⽤: [Zela+, ICLRʼ20] Hypothetical illustration of loss landscape 異なる探索空間(S1-4) での検証 2∗: 探索中の構造パラメータ 2"#$%: top-k抽出後の構造パラメータ
  • 37.
    Overfitの解決策 • Early stopping •最⼤固有値T5&6 7 を監視し, 8 9&'( ) (:.;) 8 9&'( ) (:) < 0.75 を満たす場合,- − S epochで探索を打ち切る • ̅ T5&6 7 : 直近SエポックのT5&6 7 の平均値, - ∶ 現在のepoch, S = 5 • 正則化 • ScheduledDroppath (DP) • L2 regularization (L2) 実践例 • Early stoppingの基準を満たした場合に, 正則化強度を上げて,学習再開(DARTS-ADA) • 異なる正則化強度の実験を並列して実施し, 最良のものを選択(R-DARTS) 38 DARTSの改良:学習データへのoverfit Test error (%) 異なる探索空間(S1-4)での検証
  • 38.
    Progressive DARTS(P-DARTS) [Chen+,IJCVʼ20] • DARTSは探索時→テスト時にCellの個数を増加させるが,この操作により, 探索時の最良構造≠テスト時の最良構造 となるケースが存在 • PC-DARTSでは,探索中に徐々にCell数を増加させていくことで,上述の問題を緩和 • Cell増加と同時に,下位の構造パラメータ値Yをもつ演算を除外(8 → 5 → 3) • Cell内のSkip connection数が2となるように調整 39 DARTSの改良:探索時とテスト時の性能差の抑制 5 Cells 20 Cells 11 Cells 17 Cells Search phase Test phase Test error Search cost (GPU days) DARTS 3.00 0.5 P-DARTS on CIFAR-10 2.50 0.3 P-DARTS on CIFAR-100 2.62 0.3 Test error on CIFAR-10 ※ DARTS on CIFAR-100は探索が失敗する
  • 39.
    Partially-connected DARTS (PC-DARTS)[Xu+, ICLRʼ20] • DARTSは全ての演算候補についてForward/Backward計算を必要とするため, メモリ消費が激しい • ⼊⼒特徴マップの⼀部チャネルのみに対して演算を実施することで省メモリ化([:,< ∈ {0,1}) • J!,# 89 K!; M!,# = ∑:∈; '() *,,. 4 ∑ 4/∈5 '() *,,. 4/ N 2 M!,# ∗ K! + (1 − M!,#) ∗ K! 40 DARTSの改良:メモリ消費の抑制 Test error Search cost (GPU days) DARTS 3.00 0.5 P-DARTS 2.50 0.3 PC-DARTS 2.57 0.1 Test error on CIFAR-10 ※ 上記の探索コストは1080Tiを使⽤した結果. Tesla V100を使⽤すると,PC-DARTSの探索コストは0.06 days.
  • 40.
    ProxylessNAS [Cai+, ICLRʼ20] •これまでの⽅法では,メモリ効率などの観点から⼤規模なデータセット上で 直接構造探索ができず,CIFAR-10など⼩規模データセット(Proxy)上で構造探索し, Cell数やチャネル数などを増加させて,⼤規模データセットに転⽤させていた • ProxylessNASでは省メモリ化により,直接⼤規模データセット上での探索を可能に 41 更なるメモリ消費の抑制 Input 3×3 !"#$ 5×5 !"#$ identity Output Input 3×3 !"#$ 5×5 !"#$ identity Output DARTS ProxylessNAS
  • 41.
    • パスを2値化することで,特定の演算のみを実⾏する • DARTSは全ての演算結果をメモリに保持する必要があるため,メモリ消費⼤ •2値化は,構造パラメータBをもとに多項分布からサンプリング • P = binarize -<, … , -= = X 1,0, … , 0 with probability -< … 0,0, … , 1 with probability -= 42 ProxylessNAS Input 3×3 !"#$ 5×5 !"#$ identity Output Input 3×3 !"#$ 5×5 !"#$ identity Output +: = exp Y: ∑; exp Y; . = [1,0,0] . = [0,1,0]
  • 42.
    • Training lossを最⼩化するようにCNNの重みパラメータ$を更新 •Mini-batchごとにbinary gate Pをサンプリング • Validation lossを最⼩化するように構造パラメータ#を更新 • CNNの重みパラメータEを固定して,構造パラメータBのみを更新 上記を繰り返す 43 ProxylessNASの学習⽅法 Input 3×3 !"#$ 5×5 !"#$ identity Output Input 3×3 !"#$ 5×5 !"#$ identity Output .~+7(.) .~+7(.) update update
  • 43.
    • ProxylessNASでは,モデルのlatencyも考慮して最適化可能 • '())= '()))* + ,-[latency] • ` latency = ∑! `[latency!] = ∑# -# ! ×d(2# ! ) • 各演算のlatency d(2# ! )を予測するモデルを別途⽤意 • Google Pixel 1 phoneおよびTensorFlow-Liteを⽤いて構築 • 勾配法ではなく,REINFORCEでも 構造パラメータBを最適化可能 44 ProxylessNASによるlatency考慮した構造設計 Test error Params (M) DARTS 2.83 3.4 AmoebaNet-B 2.13 34.9 ProxylessNAS-G 2.08 5.7 ProxylessNAS-R 2.30 5.8 Test error rate on CIFAR-10 < Y = c=~7 2 d = = @ : +:2(d(/ = ")) 1 )はbinary gate2に基づいた2値化されたネットワーク ∇7< Y ≈ 1 f @ :+, ? 2 d=* ∇7log(+(.: ))
  • 44.
    • Cellベース+weight sharing+ランダムサーチ[Bender+, ICMLʼ18] • 構造パラメータもしくはRNNを導⼊しなくとも,ランダムサーチでそれなりに探索可能 • Super netにDropoutを適⽤しながら学習を⾏い,学習終了後にランダムにアーキテクチャを サンプリングし,validation set上で最良アーキテクチャを選択 • 学習の安定化のために,Dropout ratioのスケジューリング,ghost batch normalizationなど の⼯夫は必要 45 Weight sharing + ランダムサーチ 引⽤: [Bender+, ICMLʼ18] Test error ENAS 3.5 DARTS 2.8 Bender+, ICMLʼ18 3.9 Test error rate on CIFAR-10 ※ DARTSと探索空間が若⼲異なっていることに注意
  • 45.
    DARTSの探索空間でランダムサーチを実施 [Li+, UAIʼ19] •Cell内の各ノードにおいて,演算および2つの⼊⼒元をランダムにサンプルし,学習 を繰り返す = super netの学習 • Super netの学習終了後,ランダムにアーキテクチャをサンプルし,0から再学習し, validation set上での最良モデルを抽出 • 下記表に⽰すように,ランダムサーチでもDARTSと遜⾊ないアーキテクチャを探索可能 46 DARTS + ランダムサーチ Test error (Best) Test error (ave) Search cost (GPU days) DARTS (2nd order) 2.62 2.78±0.12 10 Random search with weight sharing 2.71 2.85±0.08 9.7 Test error rate on CIFAR-10 ※ Search costはテスト評価⽤の再訓練含む
  • 46.
    • DARTS [Liu+,ICLRʼ19] vs ProxylessNAS [Cai+, ICLRʼ20] vs PC-DARTS [Xu+, ICLRʼ20] • ImageNet50で検証 • ImageNetからランダムに50クラスをサンプリング • 実験設定は基本的に原著論⽂もしくは著者公開コードに準拠 • ProxylessNASだけうまく探索が進まなかったため,初期学習率および そのスケジューリングなど調整しました • 探索の⾼速化のために,Mixed-Precision Trainingを利⽤(https://github.com/NVIDIA/apex) • GPUはA6000を使⽤ 47 実際に動かしてみた Test error rate DARTS 14.77 PC-DARTS 12.84 ProxylessNAS 10.76
  • 47.
    MnasNet [Tan+, CVPRʼ19] •Accuracyと処理速度の良好なトレードオフを達成するCNNをNASで設計 • Controller(RNN)の報酬に推論時のlatencyを追加 • ImageNet classificationでMovileNetV2よりも良好なパレート解を獲得可能 48 NAS + 多⽬的最適化 Channel数を増加させたときの性能⽐較 他⼿法との⽐較
  • 48.
    MnasNetの探索空間:Factorized hierarchical searchspace • 全体のネットワークを複数のブロックに分割 • 各ブロックでは同じレイヤがN層繰り返される • 各ブロックでレイヤをRNN controllerによって探索する 49 NAS + 多⽬的最適化
  • 49.
    MnasNet [Tan+, CVPRʼ19] 1.RNNからCNN modelをサンプルし,対象タスクで訓練,性能評価 2. モバイル器上(Pixel Phone)で実⾏し,推論時のlatencyを実際に取得 3. 報酬を計算 4. 報酬を最⼤化するようにRNNのパラメータをProximal Policy Optimizationで更新 50 NAS + 多⽬的最適化 e,E4f0(g) = hii(g) N jhk g k 0 g = h Y, -L ijk(() ≤ k m, "nℎ/pg-q/ k = 80(q, Y = m = −0.07 を論⽂では使⽤ wはlatencyに関する制約
  • 50.
    • MnasNetの探索空間をもとにベースラインとなるアーキテクチャを探索 • EfficientNet-B0 •EfficientNet-B0のdepth, channel数,⼊⼒解像度を調整 • 0 = B>, E = l>, f = m> • q. n. Y ⋅ m! ⋅ s ≈ 2, Y ≥ 1, m ≥ 1, s ≥ 1 • Y, m, sはグリッドサーチで探索,uはユーザが指定 51 EfficientNet [Tan+, ICMLʼ19] +を増加 最近EfficientNetV2が提案されました [Tan+, arXiv2104.00298]
  • 51.
    NAS-FPN [Ghaisi+, CVPRʼ19] •RetinaNetをベースにFeature Pyramid Networkの構造を最適化(NAS-FPN) • NAS-FPNはN個のmerging cellで構成 • RNN controllerでmerging cell内の以下を決定 • どの⼆つの⼊⼒特徴マップを受け取るか • Sum or Global pooling • 出⼒スケール 52 Object detection + NAS Binary Op
  • 52.
  • 53.
    Auto-DeepLab [Liu+, CVPRʼ19] •CellレベルとNetworkレベルの⼆つの探索空間で構成 • Cell : DARTSと同じ • Network : L層までのパスを探索(解像度を2倍,1/2倍,維持,のいずれかを選択). 各パスに重みm@ A を割りふる • 学習⽅法もDARTSと同様 • ネットワークの重みgを更新 • 構造パラメータY, mを更新,を繰り返す 54 Semantic segmentation + NAS
  • 54.
    Auto-DeepLab [Liu+, CVPRʼ19] •NASを利⽤することで,⼈⼿で設計した場合と 同等程度の性能を達成可能 • 探索コストは3 GPU days • 序盤は⾼解像度,終盤は低解像度での処理を ⾏う過程が獲得されている 55 Semantic segmentation + NAS
  • 55.
    56 Adversarial training +NAS [Guo+, CVPRʼ20] One-shot NASを利⽤して,多数のCNNを⽣成し, それらCNNのAdversarial attackに対する頑健性を調査 Supernet … sampling Finetuning the network with adversarial training and evaluate it on eval samples Subnets … … Finetuning the network with adversarial training and evaluate it on eval samples
  • 56.
    CNNのdensityとadversarial robustnessには正の相関があることが判明 • architecturedensity n = |@64778698:| |@| = ∑,,.,+ *+ (,,.) |@| 57 Adversarial attackに頑健なCNNの構造は? top300とlast300を分類する線形分類器 を学習させた際の重みの分布
  • 57.
    58 Adversarial training +NAS [Guo+, CVPRʼ20] Q1. Adversarial attackに頑健なCNNの構造は何なのか? A1. Densely connected pattern Q2. パラメータ数に制限がある場合,どのように畳み込み層を配置すべきか? A2. 少ないパラメータ制約下では,隣接するノード間に畳み込み層を配置 Q3. 統計的に頑健性を計る指標は何が良いか? A3. Flow of solution procedure (FSP) matrix loss より詳しい解説はこちら
  • 58.
    • 探索空間の多様性 • ⼈間のバイアスがそれなりに含まれている •ランダムサーチでも⼗分な性能 • 構造以外のハイパーパラメータの影響 • 学習率やデータ拡張,ランダムシードなどの影響も無視できない • weight sharingの影響 • ネガティヴな影響を与えることがいくつかの論⽂で⽰唆されている • 探索時と評価時の乖離 • 探索時と評価時でモデルの深さや幅などを変更することが多いが, これらによりrankingが変わってしまう 59 現状のNASの課題
  • 59.
    • DARTS [Liu+,ICLRʼ19], ENAS [Pham+, ICMLʼ18], NAO [Luo+, NeurIPSʼ18], BayesNAS [Zhou+, ICMLʼ19] をランダムサーチと⽐較 • ランダムサーチ:探索空間はDARTSに準拠し,各ノードで演算と1つの⼊⼒元をランダムに選択. 10個のアーキテクチャをランダムにサンプルし,収束するまでそれぞれを学習. • 下記表に⽰すように,単純なランダムサーチがNAS⼿法と同等程度の性能を達成可能 → 探索空間がリッチすぎる or NAS⼿法の探索が失敗している? 60 ランダムサーチ vs NAS Test error (Average) Test error (Best) DARTS 3.38±0.23 3.20 NAO 3.14±0.17 2.90 ENAS 3.24±0.10 3.05 BayesNAS 4.01±0.25 3.59 Random 3.52±0.18 3.26 Test error rate on CIFAR-10 • 各⼿法は異なるランダムシードで10回試⾏ • NAS⼿法はvalidation set上での最良モデルを 再訓練し,test set上で評価 • 学習エポック数は全て同じ [Yu+, ICLRʼ20]
  • 60.
    • NASBench-101*にNAS⼿法を適⽤し,探索が良好に実⾏されているのかを検証 • NASBench-101では探索空間の縮⼩を⾏い,探索空間からサンプル可能な全てのアーキテクチャの 性能を記録している(node数7の場合だと,合計で423624個のアーキテクチャが存在) •NASによって発⾒されたアーキテクチャのrankingを確認することで,探索性能の検証が可能 • どのNAS⼿法も最良のアーキテクチャを発⾒できていないことがわかる • NAOが良さそうにみえるが,毎回初期poolから最良アーキテクチャが選択されていたため, 探索が良好に⾏われているとは断⾔できない 61 NASの探索性能の検証 Test error (Average) Test error (Best) Best ranking DARTS 7.19±0.61 6.98 57079 NAO 7.41±0.59 6.67 19552 ENAS 8.17±0.42 7.46 96939 Random 9.07±5.84 4.94 - Test error rate on NASBench (10試⾏) * Ying+, NAS-Bench-101: Towards Reproducible Neural Architecture Search, ICMLʻ19 [Yu+, ICLRʼ20]
  • 61.
    • NASBench-101を使⽤して,Weight sharing(WS)の影響について検証 •WSありで学習,WSなしで学習(ground truth)間の相関を確認 • WSありでは,mini-batchごとにアーキテクチャを⼀様分布からサンプリングして, 200エポック学習 • 上記の学習を10試⾏し,各試⾏で200アーキテクチャをサンプルし,Kendall Tau metricを 算出( [−1.0, 1.0]の値をとり,1.0に近いほどrankingが近いことを⽰す) • 結果として,Kendall Tau metric=0.195かつ下記表から,WSはモデルサンプリングに悪影響を 与えることがわかる 62 Weight sharingの検証 Test error (Average) Test error (Best) Best ranking NAO 6.92±0.71 5.89 3543 ENAS 6.46±0.45 5.96 4610 Test error rate on NASBench (WSなし) Test error (Average) Test error (Best) Best ranking 7.41±0.59 6.67 19552 8.17±0.42 7.46 96939 WSあり 引⽤:Yu+, Evaluating the search space of neural architecture search, ICLRʻ20 [Yu+, ICLRʼ20]
  • 62.
    • 複数のデータセット上でNAS⼿法をランダムサーチと⽐較 • ランダムサーチ:探索空間からランダムにアーキテクチャを8つサンプルし,学習 •NAS:構造探索を8試⾏ • PDARTS以外のNAS⼿法は安定してランダムサーチよりも優れているとは⾔い難い • ランダムサーチに劣っているケースも⾒られる 63 ランダムサーチ vs NAS(別論⽂) [Yang+, ICLRʼ20] NAS method CIFAR-10 CIFAR-100 Sport8 MIT67 Flowers102 DARTS 0.32 0.23 -0.13 0.10 0.25 PDARTS 0.52 1.20 0.51 1.19 0.20 ENAS 0.01 -3.44 0.67 0.13 0.47 NAO 0.44 -0.01 -2.05 -1.53 -0.13 Relative improvement over random search (higher is better) 2v = 100× B##,'-.BCC.', B##.',
  • 63.
    TuNAS [Bender+, CVPRʼ20] •先の結果は⼩さいデータセットが影響している.探索空間が⼩さい.Tuningが難しいだけ. • よりeasy-to-tune and scalableなNASとして,TuNASを提案 • ImageNet + ProxylessNASの探索空間では,random searchより優れている • より⼤きな探索空間でも同様 • WSを調整すれば,ほかのドメインでも良好に動作可能(データセット,タスク) 64 上述の結果への反論 Search space Complexity of search space TuNAS Random search w = xy ProxylessNAS ~10!, 76.3±0.2 75.4±0.2 ProxylessNAS-Enlarged ~10!D 76.4±0.1 74.6±0.3 MobileNetV3-Like ~1031 76.6±0.1 74.6±0.3 Test accuracy on the three search spaces
  • 64.
    1. ⽅策o(確率分布)からアーキテクチャBをサンプル(B~o) 2. サンプルされたアーキテクチャ+validationsetで精度q(B)および推論速度k(B)をもとに 報酬e(B)を算出し,REINFORCEでoを更新(探索序盤25%は更新しない) 3. Training setでアーキテクチャBの重みEを更新,を繰り返す • 最終的なアーキテクチャは,oから尤もらしいものを選択して構築 探索の⾼精度化のために以下の2つのテクニックを導⼊ • Filter Warmup • 探索空間中で最⼤のchannel数をもつconvでほかのconvを表現 • 96チャネルのconvは128チャネルのconvの後⽅32チャネル分をマスクすることで表現 • 探索序盤の25%において,確率-Aで全てのチャネルを有効にする(**: 1.0 → 0.0 でスケジューリング) • Op Warmup • 探索序盤の25%では確率-:で全ての演算を使⽤して重みEを更新 • 探索序盤の25%が終了するまでに,-:: 1.0 → 0.0となるようにスケーリングする 65 TuNAS
  • 65.
    • DARTS探索空間からランダムにアーキテクチャを8つサンプルし,それぞれ異なるtraining protocolで学習 • auxiliarytower, droppath, cutout, AutoAugment, larger training epoch, increase the number of channels,を適⽤ • 重要度:学習⽅法>アーキテクチャ (※ 今回の実験設定では) 66 学習⽅法およびハイパーパラメータの重要性 [Yang+, ICLRʼ20]
  • 66.
    • 探索空間の拡⼤ • Transformerへの適⽤ •MLPの再来 • ハイパーパラメータ最適化との融合・協調 • 探索空間の⾃動設計 • Large-scale Evolution [Real+, ICMLʼ17]で取り組まれているが, 精度および計算コストが微妙 • NASに費やすコストを⼤規模データセットおよび学習に 費やしたほうが良い? • Self-supervised learning, Contrastive learning • Understanding robustness of ViT [Bhojanapalli+, arXiv2103.14586] • Randomly wired NN [Xie+, ICCVʼ19] 67 今後の展望
  • 67.